reka-ui 2.9.1 → 2.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Calendar/CalendarGrid.cjs +2 -2
- package/dist/Calendar/CalendarGrid.cjs.map +1 -1
- package/dist/Calendar/CalendarGrid.js +3 -3
- package/dist/Calendar/CalendarGrid.js.map +1 -1
- package/dist/Menu/MenuItemImpl.cjs +1 -3
- package/dist/Menu/MenuItemImpl.cjs.map +1 -1
- package/dist/Menu/MenuItemImpl.js +1 -3
- package/dist/Menu/MenuItemImpl.js.map +1 -1
- package/dist/MonthPicker/MonthPickerGrid.cjs +2 -2
- package/dist/MonthPicker/MonthPickerGrid.cjs.map +1 -1
- package/dist/MonthPicker/MonthPickerGrid.js +3 -3
- package/dist/MonthPicker/MonthPickerGrid.js.map +1 -1
- package/dist/MonthRangePicker/MonthRangePickerGrid.cjs +2 -2
- package/dist/MonthRangePicker/MonthRangePickerGrid.cjs.map +1 -1
- package/dist/MonthRangePicker/MonthRangePickerGrid.js +3 -3
- package/dist/MonthRangePicker/MonthRangePickerGrid.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.cjs +2 -2
- package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.js +3 -3
- package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
- package/dist/Splitter/SplitterGroup.cjs +7 -0
- package/dist/Splitter/SplitterGroup.cjs.map +1 -1
- package/dist/Splitter/SplitterGroup.js +7 -0
- package/dist/Splitter/SplitterGroup.js.map +1 -1
- package/dist/YearPicker/YearPickerGrid.cjs +2 -2
- package/dist/YearPicker/YearPickerGrid.cjs.map +1 -1
- package/dist/YearPicker/YearPickerGrid.js +3 -3
- package/dist/YearPicker/YearPickerGrid.js.map +1 -1
- package/dist/YearRangePicker/YearRangePickerGrid.cjs +2 -2
- package/dist/YearRangePicker/YearRangePickerGrid.cjs.map +1 -1
- package/dist/YearRangePicker/YearRangePickerGrid.js +3 -3
- package/dist/YearRangePicker/YearRangePickerGrid.js.map +1 -1
- package/dist/index3.d.cts +1014 -1014
- package/dist/index3.d.cts.map +1 -1
- package/dist/index3.d.ts +1041 -1041
- package/dist/index3.d.ts.map +1 -1
- package/dist/internal.d.cts +2 -2
- package/dist/internal.d.cts.map +1 -1
- package/dist/internal.d.ts +2 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/shared/useHideOthers.cjs +5 -1
- package/dist/shared/useHideOthers.cjs.map +1 -1
- package/dist/shared/useHideOthers.js +5 -1
- package/dist/shared/useHideOthers.js.map +1 -1
- package/dist/utils/units.cjs +5 -0
- package/dist/utils/units.cjs.map +1 -1
- package/dist/utils/units.js +5 -0
- package/dist/utils/units.js.map +1 -1
- package/package.json +1 -1
- package/src/Calendar/CalendarGrid.vue +0 -5
- package/src/Menu/MenuItemImpl.vue +1 -4
- package/src/MonthPicker/MonthPickerGrid.vue +0 -5
- package/src/MonthRangePicker/MonthRangePickerGrid.vue +0 -5
- package/src/RangeCalendar/RangeCalendarGrid.vue +0 -5
- package/src/Splitter/SplitterGroup.vue +20 -0
- package/src/Splitter/utils/units.ts +12 -0
- package/src/YearPicker/YearPickerGrid.vue +0 -5
- package/src/YearRangePicker/YearRangePickerGrid.vue +0 -5
- package/src/shared/useHideOthers.ts +7 -1
package/dist/internal.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./index2.cjs";
|
|
2
2
|
import { MenuArrowProps, MenuCheckboxItemEmits, MenuCheckboxItemProps, MenuContentEmits, MenuContentProps, MenuEmits, MenuGroupProps, MenuItemEmits, MenuItemIndicatorProps, MenuItemProps, MenuLabelProps, MenuPortalProps, MenuProps, MenuRadioGroupEmits, MenuRadioGroupProps, MenuRadioItemEmits, MenuRadioItemProps, MenuSeparatorProps, MenuSubContentEmits, MenuSubContentProps, MenuSubEmits, MenuSubProps, MenuSubTriggerProps, PopperAnchorProps, _default$277 as _default$13, _default$278 as _default$8, _default$279 as _default, _default$280 as _default$6, _default$281 as _default$10, _default$282 as _default$3, _default$283 as _default$14, _default$284 as _default$12, _default$285 as _default$2, _default$286 as _default$1, _default$287 as _default$11, _default$288 as _default$7, _default$290 as _default$9, _default$291 as _default$4, _default$292 as _default$5, injectMenuContext, injectMenuRootContext } from "./index3.cjs";
|
|
3
|
-
import * as
|
|
3
|
+
import * as vue5 from "vue";
|
|
4
4
|
|
|
5
5
|
//#region src/Menu/MenuAnchor.vue.d.ts
|
|
6
6
|
interface MenuAnchorProps extends PopperAnchorProps {}
|
|
@@ -8,7 +8,7 @@ declare var __VLS_6: {};
|
|
|
8
8
|
type __VLS_Slots = {} & {
|
|
9
9
|
default?: (props: typeof __VLS_6) => any;
|
|
10
10
|
};
|
|
11
|
-
declare const __VLS_component:
|
|
11
|
+
declare const __VLS_component: vue5.DefineComponent<MenuAnchorProps, {}, {}, {}, {}, vue5.ComponentOptionsMixin, vue5.ComponentOptionsMixin, {}, string, vue5.PublicProps, Readonly<MenuAnchorProps> & Readonly<{}>, {}, {}, {}, {}, string, vue5.ComponentProvideOptions, false, {}, any>;
|
|
12
12
|
declare const _default$15: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
13
13
|
type __VLS_WithSlots<T, S> = T & {
|
|
14
14
|
new (): {
|
package/dist/internal.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.cts","names":[],"sources":["../src/Menu/MenuAnchor.vue"],"sourcesContent":[],"mappings":";;;;;UAkBU,eAAA,SAAwB;YA4B9B;KACC,WAAA;EA7BK,OAAA,CAAA,EAAA,CAAA,KAAA,EAAgB,OA8BG,OA9BK,EAAA,GAAA,GAAA;AAAiB,CAAA;AA4B7B,cAsBhB,eApBuB,EAoBR,
|
|
1
|
+
{"version":3,"file":"internal.d.cts","names":[],"sources":["../src/Menu/MenuAnchor.vue"],"sourcesContent":[],"mappings":";;;;;UAkBU,eAAA,SAAwB;YA4B9B;KACC,WAAA;EA7BK,OAAA,CAAA,EAAA,CAAA,KAAA,EAAgB,OA8BG,OA9BK,EAAA,GAAA,GAAA;AAAiB,CAAA;AA4B7B,cAsBhB,eApBuB,EAoBR,IAAA,CAAA,eApBe,CAoBf,eApBe,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAoBf,IAAA,CAAA,qBAAA,EAAA,IAAA,CAAA,qBAAA,EApBe,CAAA,CAAA,EAAA,MAAA,EAoBf,IAAA,CAAA,WAAA,EAAA,QApBe,CAoBf,eApBe,CAAA,GAoBf,QApBe,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAoBf,IAAA,CAAA,uBAAA,EApBe,KAAA,EAAA,CAAA,CAAA,EAAA,GAAA,CAAA;AAAA,cAoBf,WAMnB,EACmB,eADnB,CAAA,OAC0C,eAD1C,EAC2D,WAD3D,CAAA;KASG,eAfgB,CAAA,CAAA,EAAA,CAAA,CAAA,GAeQ,CAfR,GAAA;EAAA,MAAA,EAAA;IAAA,MAAA,EAiBX,CAjBW;EAAA,CAAA;CAAA"}
|
package/dist/internal.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./index2.js";
|
|
2
2
|
import { MenuArrowProps, MenuCheckboxItemEmits, MenuCheckboxItemProps, MenuContentEmits, MenuContentProps, MenuEmits, MenuGroupProps, MenuItemEmits, MenuItemIndicatorProps, MenuItemProps, MenuLabelProps, MenuPortalProps, MenuProps, MenuRadioGroupEmits, MenuRadioGroupProps, MenuRadioItemEmits, MenuRadioItemProps, MenuSeparatorProps, MenuSubContentEmits, MenuSubContentProps, MenuSubEmits, MenuSubProps, MenuSubTriggerProps, PopperAnchorProps, _default$277 as _default$13, _default$278 as _default$8, _default$279 as _default, _default$280 as _default$6, _default$281 as _default$10, _default$282 as _default$3, _default$283 as _default$14, _default$284 as _default$12, _default$285 as _default$2, _default$286 as _default$1, _default$287 as _default$11, _default$288 as _default$7, _default$290 as _default$9, _default$291 as _default$4, _default$292 as _default$5, injectMenuContext, injectMenuRootContext } from "./index3.js";
|
|
3
|
-
import * as
|
|
3
|
+
import * as vue57 from "vue";
|
|
4
4
|
|
|
5
5
|
//#region src/Menu/MenuAnchor.vue.d.ts
|
|
6
6
|
interface MenuAnchorProps extends PopperAnchorProps {}
|
|
@@ -8,7 +8,7 @@ declare var __VLS_6: {};
|
|
|
8
8
|
type __VLS_Slots = {} & {
|
|
9
9
|
default?: (props: typeof __VLS_6) => any;
|
|
10
10
|
};
|
|
11
|
-
declare const __VLS_component:
|
|
11
|
+
declare const __VLS_component: vue57.DefineComponent<MenuAnchorProps, {}, {}, {}, {}, vue57.ComponentOptionsMixin, vue57.ComponentOptionsMixin, {}, string, vue57.PublicProps, Readonly<MenuAnchorProps> & Readonly<{}>, {}, {}, {}, {}, string, vue57.ComponentProvideOptions, false, {}, any>;
|
|
12
12
|
declare const _default$15: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
13
13
|
type __VLS_WithSlots<T, S> = T & {
|
|
14
14
|
new (): {
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","names":[],"sources":["../src/Menu/MenuAnchor.vue"],"sourcesContent":[],"mappings":";;;;;UAkBU,eAAA,SAAwB;YA4B9B;KACC,WAAA;EA7BK,OAAA,CAAA,EAAA,CAAA,KAAA,EAAgB,OA8BG,OA9BK,EAAA,GAAA,GAAA;AAAiB,CAAA;AA4B7B,cAsBhB,eArBU,EAqBK,
|
|
1
|
+
{"version":3,"file":"internal.d.ts","names":[],"sources":["../src/Menu/MenuAnchor.vue"],"sourcesContent":[],"mappings":";;;;;UAkBU,eAAA,SAAwB;YA4B9B;KACC,WAAA;EA7BK,OAAA,CAAA,EAAA,CAAA,KAAA,EAAgB,OA8BG,OA9BK,EAAA,GAAA,GAAA;AAAiB,CAAA;AA4B7B,cAsBhB,eArBU,EAqBK,KAAA,CAAA,eApBe,CAoBf,eApBe,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAoBf,KAAA,CAAA,qBAAA,EAAA,KAAA,CAAA,qBAAA,EApBe,CAAA,CAAA,EAAA,MAAA,EAoBf,KAAA,CAAA,WAAA,EAAA,QApBe,CAoBf,eApBe,CAAA,GAoBf,QApBe,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAoBf,KAAA,CAAA,uBAAA,EApBe,KAAA,EAAA,CAAA,CAAA,EAAA,GAAA,CAAA;AAAA,cAoBf,WAMnB,EACmB,eADnB,CAAA,OAC0C,eAD1C,EAC2D,WAD3D,CAAA;KASG,eAfgB,CAAA,CAAA,EAAA,CAAA,CAAA,GAeQ,CAfR,GAAA;EAAA,MAAA,EAAA;IAAA,MAAA,EAiBX,CAjBW;EAAA,CAAA;CAAA"}
|
|
@@ -14,7 +14,11 @@ const aria_hidden = require_rolldown_runtime.__toESM(require("aria-hidden"));
|
|
|
14
14
|
function useHideOthers(target) {
|
|
15
15
|
let undo;
|
|
16
16
|
(0, vue.watch)(() => (0, __vueuse_core.unrefElement)(target), (el) => {
|
|
17
|
-
|
|
17
|
+
let isInsideClosedPopover = false;
|
|
18
|
+
try {
|
|
19
|
+
isInsideClosedPopover = !!el?.closest("[popover]:not(:popover-open)");
|
|
20
|
+
} catch {}
|
|
21
|
+
if (el && !isInsideClosedPopover) undo = (0, aria_hidden.hideOthers)(el);
|
|
18
22
|
else if (undo) undo();
|
|
19
23
|
});
|
|
20
24
|
(0, vue.onUnmounted)(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHideOthers.cjs","names":["target: MaybeElementRef","undo: ReturnType<typeof hideOthers>"],"sources":["../../src/shared/useHideOthers.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;AAYA,SAAgB,cAAcA,QAAyB;CACrD,IAAIC;AACJ,gBAAM,MAAM,gCAAa,OAAO,EAAE,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"useHideOthers.cjs","names":["target: MaybeElementRef","undo: ReturnType<typeof hideOthers>"],"sources":["../../src/shared/useHideOthers.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;AAYA,SAAgB,cAAcA,QAAyB;CACrD,IAAIC;AACJ,gBAAM,MAAM,gCAAa,OAAO,EAAE,CAAC,OAAO;EAMxC,IAAI,wBAAwB;AAC5B,MAAI;AACF,6BAA0B,IAAI,QAAQ,+BAA+B;EACtE,QACK,CAAE;AACR,MAAI,OAAO,sBACT,QAAO,4BAAW,GAAG;WACd,KACP,OAAM;CACT,EAAC;AAEF,sBAAY,MAAM;AAChB,MAAI,KACF,OAAM;CACT,EAAC;AACH"}
|
|
@@ -13,7 +13,11 @@ import { hideOthers } from "aria-hidden";
|
|
|
13
13
|
function useHideOthers(target) {
|
|
14
14
|
let undo;
|
|
15
15
|
watch(() => unrefElement(target), (el) => {
|
|
16
|
-
|
|
16
|
+
let isInsideClosedPopover = false;
|
|
17
|
+
try {
|
|
18
|
+
isInsideClosedPopover = !!el?.closest("[popover]:not(:popover-open)");
|
|
19
|
+
} catch {}
|
|
20
|
+
if (el && !isInsideClosedPopover) undo = hideOthers(el);
|
|
17
21
|
else if (undo) undo();
|
|
18
22
|
});
|
|
19
23
|
onUnmounted(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHideOthers.js","names":["target: MaybeElementRef","undo: ReturnType<typeof hideOthers>"],"sources":["../../src/shared/useHideOthers.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;AAYA,SAAgB,cAAcA,QAAyB;CACrD,IAAIC;AACJ,OAAM,MAAM,aAAa,OAAO,EAAE,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"useHideOthers.js","names":["target: MaybeElementRef","undo: ReturnType<typeof hideOthers>"],"sources":["../../src/shared/useHideOthers.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;AAYA,SAAgB,cAAcA,QAAyB;CACrD,IAAIC;AACJ,OAAM,MAAM,aAAa,OAAO,EAAE,CAAC,OAAO;EAMxC,IAAI,wBAAwB;AAC5B,MAAI;AACF,6BAA0B,IAAI,QAAQ,+BAA+B;EACtE,QACK,CAAE;AACR,MAAI,OAAO,sBACT,QAAO,WAAW,GAAG;WACd,KACP,OAAM;CACT,EAAC;AAEF,aAAY,MAAM;AAChB,MAAI,KACF,OAAM;CACT,EAAC;AACH"}
|
package/dist/utils/units.cjs
CHANGED
|
@@ -76,6 +76,11 @@ function recalculateLayoutForPixelPanels({ layout, panelDataArray, prevGroupSize
|
|
|
76
76
|
const prevSize = layout[index] ?? 0;
|
|
77
77
|
nextLayout[index] = prevSize * scaleFactor;
|
|
78
78
|
}
|
|
79
|
+
const total = nextLayout.reduce((sum, size) => sum + size, 0);
|
|
80
|
+
if (total > 0 && Math.abs(total - 100) > 1e-9) {
|
|
81
|
+
const factor = 100 / total;
|
|
82
|
+
for (let index = 0; index < nextLayout.length; index++) nextLayout[index] = (nextLayout[index] ?? 0) * factor;
|
|
83
|
+
}
|
|
79
84
|
return nextLayout;
|
|
80
85
|
}
|
|
81
86
|
|
package/dist/utils/units.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"units.cjs","names":["panelDataArray: PanelData[]"],"sources":["../../src/Splitter/utils/units.ts"],"sourcesContent":[],"mappings":";;AAeA,SAAS,sBAAsB,EAAE,UAAU,mBAAmB,OAA4B,EAAsB;AAC9G,KAAI,SAAS,KACX,QAAO;AAET,KAAI,aAAa,IACf,QAAO;AAET,KAAI,qBAAqB,QAAQ,sBAAsB,EACrD;AAEF,QAAQ,QAAQ,oBAAqB;AACtC;AAED,SAAgB,iCAAiC,EAC/C,gBACA,mBACmC,EAA6B;CAChE,MAAM,sBAAsB,eAAe,KACzC,gBAAc,UAAU,YAAY,YAAY,SAAS,KAC1D;AAED,KAAI,yBAAyB,qBAAqB,OAAO,MAAM,kBAAkB,EAC/E,QAAO;AAET,QAAO,eAAe,IAAI,CAAC,cAAc;EACvC,MAAM,cAAc,UAAU;EAC9B,MAAM,WAAW,YAAY,YAAY;EAEzC,MAAM,gBAAgB,sBAAsB;GAC1C;GACA;GACA,OAAO,YAAY;EACpB,EAAC;EAEF,MAAM,cAAc,sBAAsB;GACxC;GACA;GACA,OAAO,YAAY;EACpB,EAAC;EAEF,MAAM,UAAU,sBAAsB;GACpC;GACA;GACA,OAAO,YAAY;EACpB,EAAC;EAEF,MAAM,UAAU,sBAAsB;GACpC;GACA;GACA,OAAO,YAAY;EACpB,EAAC;AAEF,SAAO;GACL,GAAG;GACH,eAAe,iBAAiB,YAAY,iBAAiB;GAC7D;GACA,SAAS,WAAW;GACpB,SAAS,WAAW;GACpB,UAAU;EACX;CACF,EAAC;AACH;AASD,SAAgB,mBAAmBA,gBAAsC;AACvE,QAAO,eAAe,KAAK,gBAAc,UAAU,YAAY,YAAY,SAAS,KAAK;AAC1F;AAED,SAAgB,gCAAgC,EAC9C,QACA,gBACA,eACA,eACyB,EAAmB;AAC5C,MAAK,mBAAmB,eAAe,CACrC,QAAO;AAGT,KACE,iBAAiB,QACd,iBAAiB,QACjB,kBAAkB,KAClB,kBAAkB,KAClB,OAAO,MAAM,cAAc,IAC3B,OAAO,MAAM,cAAc,CAE9B,QAAO;CAGT,MAAM,oBAAoB,eAAe,OAAiB,CAAC,SAAS,WAAW,UAAU;AACvF,OAAK,UAAU,YAAY,YAAY,SAAS,KAC9C,SAAQ,KAAK,MAAM;AAErB,SAAO;CACR,GAAE,CAAE,EAAC;AAEN,KAAI,kBAAkB,WAAW,EAC/B,QAAO;CAGT,MAAM,gBAAgB,IAAI,IAAI;CAE9B,MAAM,aAAa,OAAO,IAAI,UAAQ,QAAQ,EAAE;CAEhD,MAAM,4BAA4B,kBAAkB,OAAO,CAAC,KAAK,UAAU,OAAO,OAAO,UAAU,IAAI,EAAE;CAEzG,MAAM,oBAAoB,kBAAkB,IAAI,CAAC,UAAU;EACzD,MAAM,cAAc,OAAO,UAAU;EACrC,MAAM,gBAAiB,cAAc,MAAO;AAC5C,SAAQ,gBAAgB,gBAAiB;CAC1C,EAAC;CAEF,MAAM,wBAAwB,kBAAkB,OAAO,CAAC,KAAK,UAAU,MAAM,OAAO,EAAE;CAEtF,MAAM,8BAA8B,OAAO,OAAO,CAAC,KAAK,MAAM,UAAU;AACtE,MAAI,cAAc,IAAI,MAAM,CAC1B,QAAO;AAET,SAAO,OAAO,QAAQ;CACvB,GAAE,EAAE;CAEL,MAAM,uBAAuB,KAAK,IAAI,GAAG,MAAM,sBAAsB;CACrE,MAAM,cAAc,8BAA8B,IAC9C,uBAAuB,8BACvB;AAEJ,mBAAkB,QAAQ,CAAC,YAAY,eAAe;AACpD,aAAW,cAAc,kBAAkB;CAC5C,EAAC;AAEF,MAAK,IAAI,QAAQ,GAAG,QAAQ,WAAW,QAAQ,SAAS;AACtD,MAAI,cAAc,IAAI,MAAM,CAC1B;EAEF,MAAM,WAAW,OAAO,UAAU;AAClC,aAAW,SAAS,WAAW;CAChC;AAED,QAAO;AACR"}
|
|
1
|
+
{"version":3,"file":"units.cjs","names":["panelDataArray: PanelData[]"],"sources":["../../src/Splitter/utils/units.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/utils/units.js
CHANGED
|
@@ -75,6 +75,11 @@ function recalculateLayoutForPixelPanels({ layout, panelDataArray, prevGroupSize
|
|
|
75
75
|
const prevSize = layout[index] ?? 0;
|
|
76
76
|
nextLayout[index] = prevSize * scaleFactor;
|
|
77
77
|
}
|
|
78
|
+
const total = nextLayout.reduce((sum, size) => sum + size, 0);
|
|
79
|
+
if (total > 0 && Math.abs(total - 100) > 1e-9) {
|
|
80
|
+
const factor = 100 / total;
|
|
81
|
+
for (let index = 0; index < nextLayout.length; index++) nextLayout[index] = (nextLayout[index] ?? 0) * factor;
|
|
82
|
+
}
|
|
78
83
|
return nextLayout;
|
|
79
84
|
}
|
|
80
85
|
|
package/dist/utils/units.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"units.js","names":["panelDataArray: PanelData[]"],"sources":["../../src/Splitter/utils/units.ts"],"sourcesContent":[],"mappings":";AAeA,SAAS,sBAAsB,EAAE,UAAU,mBAAmB,OAA4B,EAAsB;AAC9G,KAAI,SAAS,KACX,QAAO;AAET,KAAI,aAAa,IACf,QAAO;AAET,KAAI,qBAAqB,QAAQ,sBAAsB,EACrD;AAEF,QAAQ,QAAQ,oBAAqB;AACtC;AAED,SAAgB,iCAAiC,EAC/C,gBACA,mBACmC,EAA6B;CAChE,MAAM,sBAAsB,eAAe,KACzC,gBAAc,UAAU,YAAY,YAAY,SAAS,KAC1D;AAED,KAAI,yBAAyB,qBAAqB,OAAO,MAAM,kBAAkB,EAC/E,QAAO;AAET,QAAO,eAAe,IAAI,CAAC,cAAc;EACvC,MAAM,cAAc,UAAU;EAC9B,MAAM,WAAW,YAAY,YAAY;EAEzC,MAAM,gBAAgB,sBAAsB;GAC1C;GACA;GACA,OAAO,YAAY;EACpB,EAAC;EAEF,MAAM,cAAc,sBAAsB;GACxC;GACA;GACA,OAAO,YAAY;EACpB,EAAC;EAEF,MAAM,UAAU,sBAAsB;GACpC;GACA;GACA,OAAO,YAAY;EACpB,EAAC;EAEF,MAAM,UAAU,sBAAsB;GACpC;GACA;GACA,OAAO,YAAY;EACpB,EAAC;AAEF,SAAO;GACL,GAAG;GACH,eAAe,iBAAiB,YAAY,iBAAiB;GAC7D;GACA,SAAS,WAAW;GACpB,SAAS,WAAW;GACpB,UAAU;EACX;CACF,EAAC;AACH;AASD,SAAgB,mBAAmBA,gBAAsC;AACvE,QAAO,eAAe,KAAK,gBAAc,UAAU,YAAY,YAAY,SAAS,KAAK;AAC1F;AAED,SAAgB,gCAAgC,EAC9C,QACA,gBACA,eACA,eACyB,EAAmB;AAC5C,MAAK,mBAAmB,eAAe,CACrC,QAAO;AAGT,KACE,iBAAiB,QACd,iBAAiB,QACjB,kBAAkB,KAClB,kBAAkB,KAClB,OAAO,MAAM,cAAc,IAC3B,OAAO,MAAM,cAAc,CAE9B,QAAO;CAGT,MAAM,oBAAoB,eAAe,OAAiB,CAAC,SAAS,WAAW,UAAU;AACvF,OAAK,UAAU,YAAY,YAAY,SAAS,KAC9C,SAAQ,KAAK,MAAM;AAErB,SAAO;CACR,GAAE,CAAE,EAAC;AAEN,KAAI,kBAAkB,WAAW,EAC/B,QAAO;CAGT,MAAM,gBAAgB,IAAI,IAAI;CAE9B,MAAM,aAAa,OAAO,IAAI,UAAQ,QAAQ,EAAE;CAEhD,MAAM,4BAA4B,kBAAkB,OAAO,CAAC,KAAK,UAAU,OAAO,OAAO,UAAU,IAAI,EAAE;CAEzG,MAAM,oBAAoB,kBAAkB,IAAI,CAAC,UAAU;EACzD,MAAM,cAAc,OAAO,UAAU;EACrC,MAAM,gBAAiB,cAAc,MAAO;AAC5C,SAAQ,gBAAgB,gBAAiB;CAC1C,EAAC;CAEF,MAAM,wBAAwB,kBAAkB,OAAO,CAAC,KAAK,UAAU,MAAM,OAAO,EAAE;CAEtF,MAAM,8BAA8B,OAAO,OAAO,CAAC,KAAK,MAAM,UAAU;AACtE,MAAI,cAAc,IAAI,MAAM,CAC1B,QAAO;AAET,SAAO,OAAO,QAAQ;CACvB,GAAE,EAAE;CAEL,MAAM,uBAAuB,KAAK,IAAI,GAAG,MAAM,sBAAsB;CACrE,MAAM,cAAc,8BAA8B,IAC9C,uBAAuB,8BACvB;AAEJ,mBAAkB,QAAQ,CAAC,YAAY,eAAe;AACpD,aAAW,cAAc,kBAAkB;CAC5C,EAAC;AAEF,MAAK,IAAI,QAAQ,GAAG,QAAQ,WAAW,QAAQ,SAAS;AACtD,MAAI,cAAc,IAAI,MAAM,CAC1B;EAEF,MAAM,WAAW,OAAO,UAAU;AAClC,aAAW,SAAS,WAAW;CAChC;AAED,QAAO;AACR"}
|
|
1
|
+
{"version":3,"file":"units.js","names":["panelDataArray: PanelData[]"],"sources":["../../src/Splitter/utils/units.ts"],"sourcesContent":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -17,11 +17,6 @@ const readonly = computed(() => rootContext.readonly.value ? true : undefined)
|
|
|
17
17
|
</script>
|
|
18
18
|
|
|
19
19
|
<template>
|
|
20
|
-
<!--
|
|
21
|
-
role="application" is intentional: it ensures screen readers like NVDA pass
|
|
22
|
-
keyboard events (arrow keys) to the web app instead of intercepting them
|
|
23
|
-
for virtual cursor navigation. This is the same pattern used by React Aria.
|
|
24
|
-
-->
|
|
25
20
|
<Primitive
|
|
26
21
|
v-bind="props"
|
|
27
22
|
tabindex="-1"
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { PrimitiveProps } from '@/Primitive'
|
|
3
|
-
import { injectMenuContext } from './MenuRoot.vue'
|
|
4
3
|
|
|
5
4
|
export interface MenuItemImplProps extends PrimitiveProps {
|
|
6
5
|
/** When `true`, prevents the user from interacting with the item. */
|
|
@@ -29,7 +28,6 @@ defineOptions({
|
|
|
29
28
|
|
|
30
29
|
const props = defineProps<MenuItemImplProps>()
|
|
31
30
|
|
|
32
|
-
const menuContext = injectMenuContext()
|
|
33
31
|
const contentContext = injectMenuContentContext()
|
|
34
32
|
const { forwardRef, currentElement } = useForwardExpose()
|
|
35
33
|
const { CollectionItem } = useCollection()
|
|
@@ -38,9 +36,8 @@ const isFocused = ref(false)
|
|
|
38
36
|
const isHighlighted = computed(() => isFocused.value || (contentContext.highlightedElement.value === currentElement.value))
|
|
39
37
|
|
|
40
38
|
async function handlePointerMove(event: PointerEvent) {
|
|
41
|
-
if (event.defaultPrevented || !isMouseEvent(event)
|
|
39
|
+
if (event.defaultPrevented || !isMouseEvent(event))
|
|
42
40
|
return
|
|
43
|
-
}
|
|
44
41
|
if (props.disabled) {
|
|
45
42
|
contentContext.onItemLeave(event)
|
|
46
43
|
}
|
|
@@ -17,11 +17,6 @@ const readonly = computed(() => rootContext.readonly.value ? true : undefined)
|
|
|
17
17
|
</script>
|
|
18
18
|
|
|
19
19
|
<template>
|
|
20
|
-
<!--
|
|
21
|
-
role="application" is intentional: it ensures screen readers like NVDA pass
|
|
22
|
-
keyboard events (arrow keys) to the web app instead of intercepting them
|
|
23
|
-
for virtual cursor navigation. This is the same pattern used by React Aria.
|
|
24
|
-
-->
|
|
25
20
|
<Primitive
|
|
26
21
|
v-bind="props"
|
|
27
22
|
tabindex="-1"
|
|
@@ -17,11 +17,6 @@ const readonly = computed(() => rootContext.readonly.value ? true : undefined)
|
|
|
17
17
|
</script>
|
|
18
18
|
|
|
19
19
|
<template>
|
|
20
|
-
<!--
|
|
21
|
-
role="application" is intentional: it ensures screen readers like NVDA pass
|
|
22
|
-
keyboard events (arrow keys) to the web app instead of intercepting them
|
|
23
|
-
for virtual cursor navigation. This is the same pattern used by React Aria.
|
|
24
|
-
-->
|
|
25
20
|
<Primitive
|
|
26
21
|
v-bind="props"
|
|
27
22
|
tabindex="-1"
|
|
@@ -18,11 +18,6 @@ const readonly = computed(() => rootContext.readonly.value ? true : undefined)
|
|
|
18
18
|
</script>
|
|
19
19
|
|
|
20
20
|
<template>
|
|
21
|
-
<!--
|
|
22
|
-
role="application" is intentional: it ensures screen readers like NVDA pass
|
|
23
|
-
keyboard events (arrow keys) to the web app instead of intercepting them
|
|
24
|
-
for virtual cursor navigation. This is the same pattern used by React Aria.
|
|
25
|
-
-->
|
|
26
21
|
<Primitive
|
|
27
22
|
v-bind="props"
|
|
28
23
|
tabindex="-1"
|
|
@@ -121,6 +121,7 @@ const { forwardRef, currentElement: panelGroupElementRef } = useForwardExpose()
|
|
|
121
121
|
|
|
122
122
|
const dragState = ref<DragState | null>(null)
|
|
123
123
|
const groupSizeInPixels = ref<number | null>(null)
|
|
124
|
+
const groupSizeAtLastLayoutInit = ref<number | null>(null)
|
|
124
125
|
const layout = ref<number[]>([])
|
|
125
126
|
const panelIdToLastNotifiedSizeMapRef = ref<Record<string, number>>({})
|
|
126
127
|
const panelSizeBeforeCollapseRef = ref<Map<string, number>>(new Map())
|
|
@@ -357,6 +358,11 @@ watch(() => eagerValuesRef.value.panelDataArrayChanged, () => {
|
|
|
357
358
|
panelConstraints,
|
|
358
359
|
})
|
|
359
360
|
|
|
361
|
+
// Track the group size used for this initialization.
|
|
362
|
+
// Used to detect when a nested px group was measured with an unreliable (too small)
|
|
363
|
+
// container size before the outer group finished layout.
|
|
364
|
+
groupSizeAtLastLayoutInit.value = getGroupSizeInPixels()
|
|
365
|
+
|
|
360
366
|
if (!areEqual(prevLayout, nextLayout)) {
|
|
361
367
|
setLayout(nextLayout)
|
|
362
368
|
|
|
@@ -383,6 +389,20 @@ watch(groupSizeInPixels, (nextSize, prevSize) => {
|
|
|
383
389
|
if (!hasPixelSizedPanel(panelDataArray))
|
|
384
390
|
return
|
|
385
391
|
|
|
392
|
+
// Detect if the layout was initialized with an unreliably small container.
|
|
393
|
+
// This happens with nested SplitterGroups using sizeUnit="px": the inner group's
|
|
394
|
+
// ResizeObserver fires before the outer group's flex layout completes, giving a
|
|
395
|
+
// near-zero container size (e.g. 3.45px). When the outer group finishes and the
|
|
396
|
+
// container grows to its real size (e.g. 923px), we must re-initialize rather
|
|
397
|
+
// than recalculate (which would "preserve" the garbage pixel sizes from 3.45px).
|
|
398
|
+
// We guard with initSize < 50 so that legitimately small-but-real containers
|
|
399
|
+
// (e.g. a sidebar at 60px) are not accidentally re-initialized on normal resizes.
|
|
400
|
+
const initSize = groupSizeAtLastLayoutInit.value
|
|
401
|
+
if (initSize != null && initSize > 0 && initSize < 50 && nextSize > initSize * 10) {
|
|
402
|
+
eagerValuesRef.value.panelDataArrayChanged = true
|
|
403
|
+
return
|
|
404
|
+
}
|
|
405
|
+
|
|
386
406
|
const recalculatedLayout = recalculateLayoutForPixelPanels({
|
|
387
407
|
layout: prevLayout,
|
|
388
408
|
panelDataArray,
|
|
@@ -157,5 +157,17 @@ export function recalculateLayoutForPixelPanels({
|
|
|
157
157
|
nextLayout[index] = prevSize * scaleFactor
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
+
// Normalize to ensure percentages always sum to exactly 100.
|
|
161
|
+
// Floating-point arithmetic in the px→% conversions above can cause drift
|
|
162
|
+
// (e.g. 99.89% instead of 100%) that gets persisted to localStorage and
|
|
163
|
+
// triggers validation warnings on every subsequent page load.
|
|
164
|
+
const total = nextLayout.reduce((sum, size) => sum + size, 0)
|
|
165
|
+
if (total > 0 && Math.abs(total - 100) > 1e-9) {
|
|
166
|
+
const factor = 100 / total
|
|
167
|
+
for (let index = 0; index < nextLayout.length; index++) {
|
|
168
|
+
nextLayout[index] = (nextLayout[index] ?? 0) * factor
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
160
172
|
return nextLayout
|
|
161
173
|
}
|
|
@@ -17,11 +17,6 @@ const readonly = computed(() => rootContext.readonly.value ? true : undefined)
|
|
|
17
17
|
</script>
|
|
18
18
|
|
|
19
19
|
<template>
|
|
20
|
-
<!--
|
|
21
|
-
role="application" is intentional: it ensures screen readers like NVDA pass
|
|
22
|
-
keyboard events (arrow keys) to the web app instead of intercepting them
|
|
23
|
-
for virtual cursor navigation. This is the same pattern used by React Aria.
|
|
24
|
-
-->
|
|
25
20
|
<Primitive
|
|
26
21
|
v-bind="props"
|
|
27
22
|
tabindex="-1"
|
|
@@ -17,11 +17,6 @@ const readonly = computed(() => rootContext.readonly.value ? true : undefined)
|
|
|
17
17
|
</script>
|
|
18
18
|
|
|
19
19
|
<template>
|
|
20
|
-
<!--
|
|
21
|
-
role="application" is intentional: it ensures screen readers like NVDA pass
|
|
22
|
-
keyboard events (arrow keys) to the web app instead of intercepting them
|
|
23
|
-
for virtual cursor navigation. This is the same pattern used by React Aria.
|
|
24
|
-
-->
|
|
25
20
|
<Primitive
|
|
26
21
|
v-bind="props"
|
|
27
22
|
tabindex="-1"
|
|
@@ -17,7 +17,13 @@ export function useHideOthers(target: MaybeElementRef) {
|
|
|
17
17
|
if (import.meta.env.MODE === 'test')
|
|
18
18
|
return
|
|
19
19
|
// Skip if inside a closed native popover
|
|
20
|
-
|
|
20
|
+
// Use try/catch as `:popover-open` pseudo-class is not supported in all browsers (e.g. Safari 18)
|
|
21
|
+
let isInsideClosedPopover = false
|
|
22
|
+
try {
|
|
23
|
+
isInsideClosedPopover = !!el?.closest('[popover]:not(:popover-open)')
|
|
24
|
+
}
|
|
25
|
+
catch {}
|
|
26
|
+
if (el && !isInsideClosedPopover)
|
|
21
27
|
undo = hideOthers(el)
|
|
22
28
|
else if (undo)
|
|
23
29
|
undo()
|