From dcca55fc39390ba69c4d035935dae37dd9dae5ad Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 15 Sep 2024 16:01:34 +0000 Subject: [PATCH 1/2] Update to upstream @floating-ui/core@1.6.8 --- upstream.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upstream.toml b/upstream.toml index 13b763f..b7bb190 100644 --- a/upstream.toml +++ b/upstream.toml @@ -1,5 +1,5 @@ [releases] -core = "1.6.7" +core = "1.6.8" dom = "1.6.10" utils = "0.2.7" vue = "1.1.4" From 142f7010be1284ff50891df8ed90a8e1a016b4aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABlle=20Huisman?= Date: Tue, 17 Sep 2024 19:11:16 +0200 Subject: [PATCH 2/2] Fill viewport along an axis if shift is enabled on that axis --- packages/core/src/middleware/shift.rs | 25 +++++++++++++++++++++++++ packages/core/src/middleware/size.rs | 22 +++++++++------------- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/packages/core/src/middleware/shift.rs b/packages/core/src/middleware/shift.rs index a1f7a7e..9cf201e 100644 --- a/packages/core/src/middleware/shift.rs +++ b/packages/core/src/middleware/shift.rs @@ -83,11 +83,33 @@ impl Default for ShiftOptions { } } +/// Enabled sides stored in [`ShiftData`]. +#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)] +pub struct ShiftDataEnabled { + pub x: bool, + pub y: bool, +} + +impl ShiftDataEnabled { + pub fn set_axis(mut self, axis: Axis, enabled: bool) -> Self { + match axis { + Axis::X => { + self.x = enabled; + } + Axis::Y => { + self.y = enabled; + } + } + self + } +} + /// Data stored by [`Shift`] middleware. #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub struct ShiftData { pub x: f64, pub y: f64, + pub enabled: ShiftDataEnabled, } /// Shift middleware. @@ -215,6 +237,9 @@ impl serde_json::to_value(ShiftData { x: limited_coords.x - x, y: limited_coords.y - y, + enabled: ShiftDataEnabled::default() + .set_axis(main_axis, check_main_axis) + .set_axis(cross_axis, check_cross_axis), }) .expect("Data should be valid JSON."), ), diff --git a/packages/core/src/middleware/size.rs b/packages/core/src/middleware/size.rs index 64df92e..dd6ce3e 100644 --- a/packages/core/src/middleware/size.rs +++ b/packages/core/src/middleware/size.rs @@ -4,14 +4,13 @@ use floating_ui_utils::{get_side_axis, Alignment, Axis, Rect, Side}; use crate::{ detect_overflow::{detect_overflow, DetectOverflowOptions}, + middleware::shift::{ShiftData, SHIFT_NAME}, types::{ Derivable, DerivableFn, Middleware, MiddlewareReturn, MiddlewareState, MiddlewareWithOptions, ResetRects, ResetValue, }, }; -use super::SHIFT_NAME; - /// Name of the [`Size`] middleware. pub const SIZE_NAME: &str = "size"; @@ -138,6 +137,7 @@ impl Middleware Middleware overflow_available_width.min(maximum_clipping_width), - false => maximum_clipping_width, - }; - } else { - available_height = match alignment.is_some() || no_shift { - true => overflow_available_height.min(maximum_clipping_height), - false => maximum_clipping_height, - } + let data: Option = middleware_data.get_as(SHIFT_NAME); + if data.as_ref().is_some_and(|data| data.enabled.x) { + available_width = maximum_clipping_width; + } + if data.as_ref().is_some_and(|data| data.enabled.y) { + available_height = maximum_clipping_height; } if no_shift && alignment.is_none() {