@maizzle/framework 6.1.7 → 6.2.0
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/composables/definePreviewProps.d.ts +21 -0
- package/dist/composables/definePreviewProps.d.ts.map +1 -0
- package/dist/composables/definePreviewProps.js +23 -0
- package/dist/composables/definePreviewProps.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -2
- package/dist/plugins/postcss/resolveMaizzleImports.js +15 -8
- package/dist/plugins/postcss/resolveMaizzleImports.js.map +1 -1
- package/dist/render/createRenderer.d.ts.map +1 -1
- package/dist/render/createRenderer.js +25 -4
- package/dist/render/createRenderer.js.map +1 -1
- package/dist/render/index.d.ts +21 -0
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +76 -30
- package/dist/render/index.js.map +1 -1
- package/dist/render/plugins/previewProps.d.ts +13 -0
- package/dist/render/plugins/previewProps.d.ts.map +1 -0
- package/dist/render/plugins/previewProps.js +185 -0
- package/dist/render/plugins/previewProps.js.map +1 -0
- package/dist/render/withPreviewProps.d.ts +15 -0
- package/dist/render/withPreviewProps.d.ts.map +1 -0
- package/dist/render/withPreviewProps.js +40 -0
- package/dist/render/withPreviewProps.js.map +1 -0
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +4 -1
- package/dist/serve.js.map +1 -1
- package/dist/server/ui/.vite/deps/@lucide_vue.js +51812 -41607
- package/dist/server/ui/.vite/deps/@lucide_vue.js.map +1 -1
- package/dist/server/ui/.vite/deps/@vueuse_core.js.map +1 -1
- package/dist/server/ui/.vite/deps/@vueuse_shared.js.map +1 -1
- package/dist/server/ui/.vite/deps/_metadata.json +13 -13
- package/dist/server/ui/.vite/deps/class-variance-authority.js.map +1 -1
- package/dist/server/ui/.vite/deps/clsx.js.map +1 -1
- package/dist/server/ui/.vite/deps/culori.js.map +1 -1
- package/dist/server/ui/.vite/deps/reka-ui.js +240 -73
- package/dist/server/ui/.vite/deps/reka-ui.js.map +1 -1
- package/dist/server/ui/.vite/deps/tailwind-merge.js +102 -22
- package/dist/server/ui/.vite/deps/tailwind-merge.js.map +1 -1
- package/dist/server/ui/.vite/deps/vue-router.js +84 -53
- package/dist/server/ui/.vite/deps/vue-router.js.map +1 -1
- package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-Dq07uCLt.js.map +1 -1
- package/dist/transformers/format.d.ts.map +1 -1
- package/dist/transformers/minify.d.ts.map +1 -1
- package/dist/transformers/purgeCss.d.ts.map +1 -1
- package/dist/transformers/shorthandCss.js +11 -5
- package/dist/transformers/shorthandCss.js.map +1 -1
- package/dist/transformers/tailwindComponent.js +1 -1
- package/dist/transformers/tailwindComponent.js.map +1 -1
- package/dist/transformers/tailwindcss.js +8 -4
- package/dist/transformers/tailwindcss.js.map +1 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/utils/compileTailwindCss.js +1 -1
- package/dist/utils/compileTailwindCss.js.map +1 -1
- package/package.json +3 -3
|
@@ -2925,14 +2925,37 @@ function useDateFormatter(initialLocale, opts = {}) {
|
|
|
2925
2925
|
weekday: length
|
|
2926
2926
|
}).format(date);
|
|
2927
2927
|
}
|
|
2928
|
-
|
|
2929
|
-
|
|
2928
|
+
/**
|
|
2929
|
+
* Resolves the internal `'AM'` / `'PM'` token for a date.
|
|
2930
|
+
*
|
|
2931
|
+
* The token is derived from the 24-hour clock rather than from the formatted
|
|
2932
|
+
* `dayPeriod` part, because locales render that part in forms that cannot be
|
|
2933
|
+
* matched reliably: `p. m.` in `es-ES`, `午後` in `ja-JP`, `下午` in `zh-CN`,
|
|
2934
|
+
* `오후` in `ko-KR`, and so on. Matching on those strings made every such
|
|
2935
|
+
* locale silently fall back to `'AM'`, which then made editing the hour
|
|
2936
|
+
* segment convert a PM time into an AM one.
|
|
2937
|
+
*
|
|
2938
|
+
* `hourCycle`, `hour12` and `numberingSystem` are pinned so the hour always
|
|
2939
|
+
* comes back as a Latin-digit 0-23 value, whatever `opts` the caller passed
|
|
2940
|
+
* to `useDateFormatter`. `hour12` in particular takes precedence over
|
|
2941
|
+
* `hourCycle` in `Intl`, so it has to be cleared rather than just overridden.
|
|
2942
|
+
*
|
|
2943
|
+
* Pass a `ZonedDateTime`'s own `timeZone` so the hour is read on that value's
|
|
2944
|
+
* clock rather than the runtime's local one.
|
|
2945
|
+
*
|
|
2946
|
+
* @see https://github.com/unovue/reka-ui/issues/2956
|
|
2947
|
+
*/
|
|
2948
|
+
function dayPeriod(date, timeZone) {
|
|
2949
|
+
const parts = new $12a3c853105e5a70$export$ad991b66133851cf(locale.value, {
|
|
2930
2950
|
...opts,
|
|
2931
2951
|
hour: "numeric",
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2952
|
+
hourCycle: "h23",
|
|
2953
|
+
hour12: void 0,
|
|
2954
|
+
numberingSystem: "latn",
|
|
2955
|
+
...timeZone ? { timeZone } : {}
|
|
2956
|
+
}).formatToParts(date);
|
|
2957
|
+
const hour = Number(parts.find((p) => p.type === "hour")?.value);
|
|
2958
|
+
return !Number.isNaN(hour) && hour >= 12 ? "PM" : "AM";
|
|
2936
2959
|
}
|
|
2937
2960
|
const defaultPartOptions = {
|
|
2938
2961
|
year: "numeric",
|
|
@@ -3040,12 +3063,11 @@ function useFilter(options) {
|
|
|
3040
3063
|
if (substring.length === 0) return true;
|
|
3041
3064
|
string = string.normalize("NFC");
|
|
3042
3065
|
substring = substring.normalize("NFC");
|
|
3043
|
-
|
|
3066
|
+
if (substring.length > string.length) return false;
|
|
3067
|
+
const compare = collator.value.compare;
|
|
3068
|
+
if (string.includes(substring)) return true;
|
|
3044
3069
|
const sliceLen = substring.length;
|
|
3045
|
-
for (; scan + sliceLen <= string.length; scan++)
|
|
3046
|
-
const slice = string.slice(scan, scan + sliceLen);
|
|
3047
|
-
if (collator.value.compare(substring, slice) === 0) return true;
|
|
3048
|
-
}
|
|
3070
|
+
for (let scan = 0; scan + sliceLen <= string.length; scan++) if (compare(substring, string.slice(scan, scan + sliceLen)) === 0) return true;
|
|
3049
3071
|
return false;
|
|
3050
3072
|
};
|
|
3051
3073
|
return {
|
|
@@ -3238,13 +3260,15 @@ function useGraceArea(triggerElement, containerElement) {
|
|
|
3238
3260
|
}
|
|
3239
3261
|
watchEffect((cleanupFn) => {
|
|
3240
3262
|
if (triggerElement.value && containerElement.value) {
|
|
3241
|
-
const
|
|
3242
|
-
const
|
|
3243
|
-
|
|
3244
|
-
|
|
3263
|
+
const trigger = triggerElement.value;
|
|
3264
|
+
const container = containerElement.value;
|
|
3265
|
+
const handleTriggerLeave = (event) => handleCreateGraceArea(event, container);
|
|
3266
|
+
const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);
|
|
3267
|
+
trigger.addEventListener("pointerleave", handleTriggerLeave);
|
|
3268
|
+
container.addEventListener("pointerleave", handleContentLeave);
|
|
3245
3269
|
cleanupFn(() => {
|
|
3246
|
-
|
|
3247
|
-
|
|
3270
|
+
trigger.removeEventListener("pointerleave", handleTriggerLeave);
|
|
3271
|
+
container.removeEventListener("pointerleave", handleContentLeave);
|
|
3248
3272
|
});
|
|
3249
3273
|
}
|
|
3250
3274
|
});
|
|
@@ -3266,8 +3290,9 @@ function useGraceArea(triggerElement, containerElement) {
|
|
|
3266
3290
|
pointerExit.trigger();
|
|
3267
3291
|
}
|
|
3268
3292
|
};
|
|
3269
|
-
triggerElement.value?.ownerDocument
|
|
3270
|
-
|
|
3293
|
+
const ownerDocument = triggerElement.value?.ownerDocument;
|
|
3294
|
+
ownerDocument?.addEventListener("pointermove", handleTrackPointerGrace);
|
|
3295
|
+
cleanupFn(() => ownerDocument?.removeEventListener("pointermove", handleTrackPointerGrace));
|
|
3271
3296
|
}
|
|
3272
3297
|
});
|
|
3273
3298
|
return {
|
|
@@ -4708,6 +4733,7 @@ var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
|
|
|
4708
4733
|
var FOCUS_OUTSIDE = "dismissableLayer.focusOutside";
|
|
4709
4734
|
function isLayerExist(layerElement, targetElement) {
|
|
4710
4735
|
if (!(targetElement instanceof Element)) return false;
|
|
4736
|
+
if (layerElement.contains(targetElement)) return true;
|
|
4711
4737
|
const targetLayer = targetElement.closest("[data-dismissable-layer]");
|
|
4712
4738
|
const mainLayer = layerElement.dataset.dismissableLayer === "" ? layerElement : layerElement.querySelector("[data-dismissable-layer]");
|
|
4713
4739
|
const nodeList = Array.from(layerElement.ownerDocument.querySelectorAll("[data-dismissable-layer]"));
|
|
@@ -4729,6 +4755,7 @@ function usePointerDownOutside(onPointerDownOutside, element, enabled = true) {
|
|
|
4729
4755
|
const target = event.target;
|
|
4730
4756
|
if (!element?.value || !target) return;
|
|
4731
4757
|
if (isLayerExist(element.value, target)) {
|
|
4758
|
+
ownerDocument.removeEventListener("click", handleClickRef.value);
|
|
4732
4759
|
isPointerInsideDOMTree.value = false;
|
|
4733
4760
|
return;
|
|
4734
4761
|
}
|
|
@@ -5634,15 +5661,16 @@ var DialogContent_default = /* @__PURE__ */ defineComponent({
|
|
|
5634
5661
|
const rootContext = injectDialogRootContext();
|
|
5635
5662
|
const emitsAsProps = useEmitAsProps(emits);
|
|
5636
5663
|
const { forwardRef } = useForwardExpose();
|
|
5664
|
+
const staysMounted = computed(() => props.forceMount || !rootContext.unmountOnHide.value);
|
|
5637
5665
|
return (_ctx, _cache) => {
|
|
5638
5666
|
return openBlock(), createBlock(unref(Presence_default), {
|
|
5639
|
-
present:
|
|
5640
|
-
"force-mount":
|
|
5667
|
+
present: unref(rootContext).open.value,
|
|
5668
|
+
"force-mount": staysMounted.value
|
|
5641
5669
|
}, {
|
|
5642
5670
|
default: withCtx(({ present }) => [unref(rootContext).modal.value ? withDirectives((openBlock(), createBlock(DialogContentModal_default, mergeProps({
|
|
5643
5671
|
key: 0,
|
|
5644
5672
|
ref: unref(forwardRef),
|
|
5645
|
-
present:
|
|
5673
|
+
present: staysMounted.value ? present : true
|
|
5646
5674
|
}, {
|
|
5647
5675
|
...props,
|
|
5648
5676
|
...unref(emitsAsProps),
|
|
@@ -5650,10 +5678,10 @@ var DialogContent_default = /* @__PURE__ */ defineComponent({
|
|
|
5650
5678
|
}), {
|
|
5651
5679
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
|
|
5652
5680
|
_: 2
|
|
5653
|
-
}, 1040, ["present"])), [[vShow, unref(rootContext).unmountOnHide.value || present]]) : withDirectives((openBlock(), createBlock(DialogContentNonModal_default, mergeProps({
|
|
5681
|
+
}, 1040, ["present"])), [[vShow, _ctx.forceMount || unref(rootContext).unmountOnHide.value || present]]) : withDirectives((openBlock(), createBlock(DialogContentNonModal_default, mergeProps({
|
|
5654
5682
|
key: 1,
|
|
5655
5683
|
ref: unref(forwardRef),
|
|
5656
|
-
present:
|
|
5684
|
+
present: staysMounted.value ? present : true
|
|
5657
5685
|
}, {
|
|
5658
5686
|
...props,
|
|
5659
5687
|
...unref(emitsAsProps),
|
|
@@ -5661,7 +5689,7 @@ var DialogContent_default = /* @__PURE__ */ defineComponent({
|
|
|
5661
5689
|
}), {
|
|
5662
5690
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
|
|
5663
5691
|
_: 2
|
|
5664
|
-
}, 1040, ["present"])), [[vShow, unref(rootContext).unmountOnHide.value || present]])]),
|
|
5692
|
+
}, 1040, ["present"])), [[vShow, _ctx.forceMount || unref(rootContext).unmountOnHide.value || present]])]),
|
|
5665
5693
|
_: 3
|
|
5666
5694
|
}, 8, ["present", "force-mount"]);
|
|
5667
5695
|
};
|
|
@@ -5760,19 +5788,21 @@ var DialogOverlay_default = /* @__PURE__ */ defineComponent({
|
|
|
5760
5788
|
}
|
|
5761
5789
|
},
|
|
5762
5790
|
setup(__props) {
|
|
5791
|
+
const props = __props;
|
|
5763
5792
|
const rootContext = injectDialogRootContext();
|
|
5764
5793
|
const { forwardRef } = useForwardExpose();
|
|
5794
|
+
const staysMounted = computed(() => props.forceMount || !rootContext.unmountOnHide.value);
|
|
5765
5795
|
return (_ctx, _cache) => {
|
|
5766
5796
|
return unref(rootContext)?.modal.value ? (openBlock(), createBlock(unref(Presence_default), {
|
|
5767
5797
|
key: 0,
|
|
5768
|
-
present:
|
|
5769
|
-
"force-mount":
|
|
5798
|
+
present: unref(rootContext).open.value,
|
|
5799
|
+
"force-mount": staysMounted.value
|
|
5770
5800
|
}, {
|
|
5771
5801
|
default: withCtx(({ present }) => [withDirectives(createVNode(DialogOverlayImpl_default, mergeProps(_ctx.$attrs, {
|
|
5772
5802
|
ref: unref(forwardRef),
|
|
5773
5803
|
as: _ctx.as,
|
|
5774
5804
|
"as-child": _ctx.asChild,
|
|
5775
|
-
present:
|
|
5805
|
+
present: staysMounted.value ? present : true
|
|
5776
5806
|
}), {
|
|
5777
5807
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
|
|
5778
5808
|
_: 2
|
|
@@ -5780,7 +5810,7 @@ var DialogOverlay_default = /* @__PURE__ */ defineComponent({
|
|
|
5780
5810
|
"as",
|
|
5781
5811
|
"as-child",
|
|
5782
5812
|
"present"
|
|
5783
|
-
]), [[vShow, unref(rootContext).unmountOnHide.value || present]])]),
|
|
5813
|
+
]), [[vShow, _ctx.forceMount || unref(rootContext).unmountOnHide.value || present]])]),
|
|
5784
5814
|
_: 3
|
|
5785
5815
|
}, 8, ["present", "force-mount"])) : createCommentVNode("v-if", true);
|
|
5786
5816
|
};
|
|
@@ -6276,6 +6306,11 @@ function useCollection(options = {}) {
|
|
|
6276
6306
|
};
|
|
6277
6307
|
provide(injectionKey, context);
|
|
6278
6308
|
} else context = inject(injectionKey);
|
|
6309
|
+
const getItem = (element, includeDisabledItem = false) => {
|
|
6310
|
+
if (!context.collectionRef.value) return void 0;
|
|
6311
|
+
const item = context.itemMap.value.get(element);
|
|
6312
|
+
return item && (includeDisabledItem || item.ref.dataset.disabled !== "") ? item : void 0;
|
|
6313
|
+
};
|
|
6279
6314
|
const getItems = (includeDisabledItem = false) => {
|
|
6280
6315
|
const collectionNode = context.collectionRef.value;
|
|
6281
6316
|
if (!collectionNode) return [];
|
|
@@ -6324,6 +6359,7 @@ function useCollection(options = {}) {
|
|
|
6324
6359
|
});
|
|
6325
6360
|
return {
|
|
6326
6361
|
getItems,
|
|
6362
|
+
getItem,
|
|
6327
6363
|
reactiveItems: computed(() => Array.from(context.itemMap.value.values())),
|
|
6328
6364
|
itemMapSize: computed(() => context.itemMap.value.size),
|
|
6329
6365
|
CollectionSlot,
|
|
@@ -6654,7 +6690,7 @@ var ListboxRoot_default = /* @__PURE__ */ defineComponent({
|
|
|
6654
6690
|
const props = __props;
|
|
6655
6691
|
const emits = __emit;
|
|
6656
6692
|
const { multiple, highlightOnHover, orientation, disabled, selectionBehavior, dir: propDir } = toRefs(props);
|
|
6657
|
-
const { getItems } = useCollection({ isProvider: true });
|
|
6693
|
+
const { getItems, getItem } = useCollection({ isProvider: true });
|
|
6658
6694
|
const { handleTypeaheadSearch } = useTypeahead();
|
|
6659
6695
|
const { primitiveElement, currentElement } = usePrimitiveElement();
|
|
6660
6696
|
const kbd = useKbd();
|
|
@@ -6713,7 +6749,7 @@ var ListboxRoot_default = /* @__PURE__ */ defineComponent({
|
|
|
6713
6749
|
if (element?.isConnected) element.scrollIntoView({ block: "nearest" });
|
|
6714
6750
|
} : void 0);
|
|
6715
6751
|
else if (scrollIntoView) highlightedElement.value.scrollIntoView({ block: "nearest" });
|
|
6716
|
-
const highlightedItem =
|
|
6752
|
+
const highlightedItem = getItem(el);
|
|
6717
6753
|
emits("highlight", highlightedItem);
|
|
6718
6754
|
}
|
|
6719
6755
|
function highlightItem(value) {
|
|
@@ -7210,7 +7246,8 @@ var ListboxItem_default = /* @__PURE__ */ defineComponent({
|
|
|
7210
7246
|
isHighlighted.value,
|
|
7211
7247
|
isSelected.value,
|
|
7212
7248
|
disabled.value,
|
|
7213
|
-
unref(rootContext).focusable.value
|
|
7249
|
+
unref(rootContext).focusable.value,
|
|
7250
|
+
...Object.entries(_ctx.$attrs).flat()
|
|
7214
7251
|
], () => createVNode(unref(Primitive), mergeProps({ id: unref(id) }, _ctx.$attrs, {
|
|
7215
7252
|
ref: unref(forwardRef),
|
|
7216
7253
|
role: "option",
|
|
@@ -12977,7 +13014,10 @@ var calendarDateTimeGranularities = [
|
|
|
12977
13014
|
];
|
|
12978
13015
|
function syncTimeSegmentValues(props) {
|
|
12979
13016
|
return Object.fromEntries(TIME_SEGMENT_PARTS.map((part) => {
|
|
12980
|
-
if (part === "dayPeriod")
|
|
13017
|
+
if (part === "dayPeriod") {
|
|
13018
|
+
const timeZone = isZonedDateTime(props.value) ? props.value.timeZone : void 0;
|
|
13019
|
+
return [part, props.formatter.dayPeriod(toDate(props.value), timeZone)];
|
|
13020
|
+
}
|
|
12981
13021
|
return [part, props.value[part]];
|
|
12982
13022
|
}));
|
|
12983
13023
|
}
|
|
@@ -19111,10 +19151,11 @@ var MenuItemImpl_default = /* @__PURE__ */ defineComponent({
|
|
|
19111
19151
|
onPointermove: handlePointerMove,
|
|
19112
19152
|
onPointerleave: handlePointerLeave,
|
|
19113
19153
|
onFocus: _cache[0] || (_cache[0] = async (event) => {
|
|
19154
|
+
const item = event.currentTarget;
|
|
19114
19155
|
await nextTick();
|
|
19115
19156
|
if (event.defaultPrevented || _ctx.disabled) return;
|
|
19116
19157
|
isFocused.value = true;
|
|
19117
|
-
unref(contentContext).highlightedElement.value =
|
|
19158
|
+
unref(contentContext).highlightedElement.value = item;
|
|
19118
19159
|
}),
|
|
19119
19160
|
onBlur: _cache[1] || (_cache[1] = async (event) => {
|
|
19120
19161
|
await nextTick();
|
|
@@ -26516,12 +26557,14 @@ var DrawerContentImpl_default = /* @__PURE__ */ defineComponent({
|
|
|
26516
26557
|
initialFocus: {
|
|
26517
26558
|
type: [Boolean, null],
|
|
26518
26559
|
required: false,
|
|
26519
|
-
skipCheck: true
|
|
26560
|
+
skipCheck: true,
|
|
26561
|
+
default: true
|
|
26520
26562
|
},
|
|
26521
26563
|
finalFocus: {
|
|
26522
26564
|
type: [Boolean, null],
|
|
26523
26565
|
required: false,
|
|
26524
|
-
skipCheck: true
|
|
26566
|
+
skipCheck: true,
|
|
26567
|
+
default: true
|
|
26525
26568
|
},
|
|
26526
26569
|
disableOutsidePointerEvents: {
|
|
26527
26570
|
type: Boolean,
|
|
@@ -26681,6 +26724,15 @@ var DrawerContentImpl_default = /* @__PURE__ */ defineComponent({
|
|
|
26681
26724
|
}
|
|
26682
26725
|
emits("interactOutside", event);
|
|
26683
26726
|
}
|
|
26727
|
+
function onMountAutoFocus(event) {
|
|
26728
|
+
emits("openAutoFocus", event);
|
|
26729
|
+
if (event.defaultPrevented) return;
|
|
26730
|
+
if (props.initialFocus === false) event.preventDefault();
|
|
26731
|
+
else if (props.initialFocus instanceof HTMLElement) {
|
|
26732
|
+
event.preventDefault();
|
|
26733
|
+
focus(props.initialFocus, { select: true });
|
|
26734
|
+
}
|
|
26735
|
+
}
|
|
26684
26736
|
let openCompleteCleanup;
|
|
26685
26737
|
function clearOpenCompleteListener() {
|
|
26686
26738
|
openCompleteCleanup?.();
|
|
@@ -26741,8 +26793,8 @@ var DrawerContentImpl_default = /* @__PURE__ */ defineComponent({
|
|
|
26741
26793
|
"as-child": "",
|
|
26742
26794
|
loop: "",
|
|
26743
26795
|
trapped: props.trapFocus,
|
|
26744
|
-
onMountAutoFocus
|
|
26745
|
-
onUnmountAutoFocus: _cache[
|
|
26796
|
+
onMountAutoFocus,
|
|
26797
|
+
onUnmountAutoFocus: _cache[0] || (_cache[0] = ($event) => emits("closeAutoFocus", $event))
|
|
26746
26798
|
}, {
|
|
26747
26799
|
default: withCtx(() => [createVNode(unref(DismissableLayer_default), mergeProps({
|
|
26748
26800
|
id: unref(rootContext).contentId,
|
|
@@ -26790,12 +26842,14 @@ var DrawerContent_default = /* @__PURE__ */ defineComponent({
|
|
|
26790
26842
|
initialFocus: {
|
|
26791
26843
|
type: [Boolean, null],
|
|
26792
26844
|
required: false,
|
|
26793
|
-
skipCheck: true
|
|
26845
|
+
skipCheck: true,
|
|
26846
|
+
default: true
|
|
26794
26847
|
},
|
|
26795
26848
|
finalFocus: {
|
|
26796
26849
|
type: [Boolean, null],
|
|
26797
26850
|
required: false,
|
|
26798
|
-
skipCheck: true
|
|
26851
|
+
skipCheck: true,
|
|
26852
|
+
default: true
|
|
26799
26853
|
},
|
|
26800
26854
|
disableOutsidePointerEvents: {
|
|
26801
26855
|
type: Boolean,
|
|
@@ -26830,9 +26884,14 @@ var DrawerContent_default = /* @__PURE__ */ defineComponent({
|
|
|
26830
26884
|
const isTrapFocusOnly = computed(() => rootContext.modal.value === "trap-focus");
|
|
26831
26885
|
const shouldTrapFocus = computed(() => (isFullModal.value || isTrapFocusOnly.value) && rootContext.open.value);
|
|
26832
26886
|
useHideOthers(computed(() => isFullModal.value ? currentElement.value : void 0));
|
|
26887
|
+
function finalFocusElement() {
|
|
26888
|
+
if (props.finalFocus === false) return void 0;
|
|
26889
|
+
if (props.finalFocus instanceof HTMLElement) return props.finalFocus;
|
|
26890
|
+
return rootContext.triggerElement.value;
|
|
26891
|
+
}
|
|
26833
26892
|
function onCloseAutoFocusNonModal(e) {
|
|
26834
26893
|
if (!e.defaultPrevented) {
|
|
26835
|
-
if (!hasInteractedOutside.value)
|
|
26894
|
+
if (!hasInteractedOutside.value) finalFocusElement()?.focus();
|
|
26836
26895
|
e.preventDefault();
|
|
26837
26896
|
}
|
|
26838
26897
|
hasInteractedOutside.value = false;
|
|
@@ -26862,7 +26921,7 @@ var DrawerContent_default = /* @__PURE__ */ defineComponent({
|
|
|
26862
26921
|
onCloseAutoFocus: _cache[0] || (_cache[0] = (e) => {
|
|
26863
26922
|
if (!e.defaultPrevented) {
|
|
26864
26923
|
e.preventDefault();
|
|
26865
|
-
|
|
26924
|
+
finalFocusElement()?.focus();
|
|
26866
26925
|
}
|
|
26867
26926
|
}),
|
|
26868
26927
|
onPointerDownOutside: _cache[1] || (_cache[1] = (e) => {
|
|
@@ -33523,42 +33582,85 @@ function $eb76cf4feb040f77$var$escapeRegex(string) {
|
|
|
33523
33582
|
}
|
|
33524
33583
|
//#endregion
|
|
33525
33584
|
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/reka-ui/dist/NumberField/utils.js
|
|
33585
|
+
var HOLD_DELAY = 400;
|
|
33586
|
+
var REPEAT_INTERVAL = 60;
|
|
33587
|
+
var TOUCH_MOVE_TOLERANCE = 10;
|
|
33526
33588
|
function usePressedHold(options) {
|
|
33527
33589
|
const { disabled } = options;
|
|
33528
33590
|
const timeout = ref();
|
|
33529
33591
|
const triggerHook = createEventHook();
|
|
33530
|
-
const
|
|
33531
|
-
const
|
|
33592
|
+
const isPressed = ref(false);
|
|
33593
|
+
const target = computed(() => unrefElement(options.target));
|
|
33594
|
+
let activePointerId;
|
|
33595
|
+
let activePointerType = "";
|
|
33596
|
+
let startX = 0;
|
|
33597
|
+
let startY = 0;
|
|
33598
|
+
let holdTriggered = false;
|
|
33599
|
+
const resetTimeout = () => {
|
|
33600
|
+
if (timeout.value === void 0) return;
|
|
33601
|
+
window.clearTimeout(timeout.value);
|
|
33602
|
+
timeout.value = void 0;
|
|
33603
|
+
};
|
|
33604
|
+
const resetPress = () => {
|
|
33532
33605
|
resetTimeout();
|
|
33533
|
-
|
|
33534
|
-
|
|
33535
|
-
|
|
33536
|
-
|
|
33537
|
-
}, delay);
|
|
33606
|
+
activePointerId = void 0;
|
|
33607
|
+
activePointerType = "";
|
|
33608
|
+
holdTriggered = false;
|
|
33609
|
+
isPressed.value = false;
|
|
33538
33610
|
};
|
|
33539
|
-
const
|
|
33540
|
-
|
|
33611
|
+
const trigger = () => {
|
|
33612
|
+
if (disabled.value) {
|
|
33613
|
+
resetPress();
|
|
33614
|
+
return false;
|
|
33615
|
+
}
|
|
33616
|
+
triggerHook.trigger();
|
|
33617
|
+
return true;
|
|
33541
33618
|
};
|
|
33542
|
-
const
|
|
33619
|
+
const scheduleRepeat = (delay) => {
|
|
33543
33620
|
resetTimeout();
|
|
33621
|
+
timeout.value = window.setTimeout(() => {
|
|
33622
|
+
holdTriggered = true;
|
|
33623
|
+
if (trigger()) scheduleRepeat(REPEAT_INTERVAL);
|
|
33624
|
+
}, delay);
|
|
33544
33625
|
};
|
|
33545
|
-
const isPressed = ref(false);
|
|
33546
|
-
const target = computed(() => unrefElement(options.target));
|
|
33547
33626
|
const onPressStart = (event) => {
|
|
33548
|
-
if (event.button !== 0 || isPressed.value) return;
|
|
33627
|
+
if (event.button !== 0 || isPressed.value || disabled.value) return;
|
|
33549
33628
|
event.preventDefault();
|
|
33629
|
+
activePointerId = event.pointerId;
|
|
33630
|
+
activePointerType = event.pointerType;
|
|
33631
|
+
startX = event.clientX;
|
|
33632
|
+
startY = event.clientY;
|
|
33633
|
+
holdTriggered = false;
|
|
33550
33634
|
isPressed.value = true;
|
|
33551
|
-
|
|
33635
|
+
if (event.pointerType === "mouse") {
|
|
33636
|
+
holdTriggered = true;
|
|
33637
|
+
if (trigger()) scheduleRepeat(HOLD_DELAY);
|
|
33638
|
+
return;
|
|
33639
|
+
}
|
|
33640
|
+
scheduleRepeat(HOLD_DELAY);
|
|
33552
33641
|
};
|
|
33553
|
-
const
|
|
33554
|
-
|
|
33555
|
-
|
|
33642
|
+
const onPressMove = (event) => {
|
|
33643
|
+
if (event.pointerId !== activePointerId || activePointerType === "mouse") return;
|
|
33644
|
+
const distanceX = event.clientX - startX;
|
|
33645
|
+
const distanceY = event.clientY - startY;
|
|
33646
|
+
if (distanceX * distanceX + distanceY * distanceY > TOUCH_MOVE_TOLERANCE ** 2) resetPress();
|
|
33647
|
+
};
|
|
33648
|
+
const onPressRelease = (event) => {
|
|
33649
|
+
if (event.pointerId !== activePointerId) return;
|
|
33650
|
+
const shouldTriggerTap = activePointerType !== "mouse" && !holdTriggered;
|
|
33651
|
+
resetPress();
|
|
33652
|
+
if (shouldTriggerTap) trigger();
|
|
33653
|
+
};
|
|
33654
|
+
const onPressCancel = (event) => {
|
|
33655
|
+
if (event.pointerId === activePointerId) resetPress();
|
|
33556
33656
|
};
|
|
33557
33657
|
if (isClient) {
|
|
33558
33658
|
useEventListener(target || window, "pointerdown", onPressStart);
|
|
33659
|
+
useEventListener(window, "pointermove", onPressMove);
|
|
33559
33660
|
useEventListener(window, "pointerup", onPressRelease);
|
|
33560
|
-
useEventListener(window, "pointercancel",
|
|
33661
|
+
useEventListener(window, "pointercancel", onPressCancel);
|
|
33561
33662
|
}
|
|
33663
|
+
onScopeDispose(resetPress);
|
|
33562
33664
|
return {
|
|
33563
33665
|
isPressed,
|
|
33564
33666
|
onTrigger: triggerHook.on
|
|
@@ -34644,8 +34746,10 @@ var PinInputInput_default = /* @__PURE__ */ defineComponent({
|
|
|
34644
34746
|
}
|
|
34645
34747
|
function handleKeydown(event) {
|
|
34646
34748
|
if (isComposing.value || event.isComposing) return;
|
|
34749
|
+
const firstEmptyInputIdx = getFirstEmptyInputIndex();
|
|
34750
|
+
const itemsArray = firstEmptyInputIdx === -1 ? inputElements.value : inputElements.value.slice(0, firstEmptyInputIdx + 1);
|
|
34647
34751
|
useArrowNavigation(event, getActiveElement(), void 0, {
|
|
34648
|
-
itemsArray
|
|
34752
|
+
itemsArray,
|
|
34649
34753
|
focus: true,
|
|
34650
34754
|
loop: false,
|
|
34651
34755
|
arrowKeyOptions: "horizontal",
|
|
@@ -34669,11 +34773,29 @@ var PinInputInput_default = /* @__PURE__ */ defineComponent({
|
|
|
34669
34773
|
updateModelValueAt(props.index, "");
|
|
34670
34774
|
}
|
|
34671
34775
|
}
|
|
34776
|
+
/**
|
|
34777
|
+
* In OTP mode, inputs should be filled one by one without skipping middle inputs.
|
|
34778
|
+
* Returns the index of the first empty input, or `-1` when not in OTP mode / all filled.
|
|
34779
|
+
*/
|
|
34780
|
+
function getFirstEmptyInputIndex() {
|
|
34781
|
+
if (!context.otp.value) return -1;
|
|
34782
|
+
return inputElements.value.findIndex((_, idx) => context.currentModelValue.value[idx] === "" || context.currentModelValue.value[idx] === void 0);
|
|
34783
|
+
}
|
|
34784
|
+
function getEarlierEmptyInput() {
|
|
34785
|
+
const firstEmptyInputIdx = getFirstEmptyInputIndex();
|
|
34786
|
+
if (firstEmptyInputIdx !== -1 && firstEmptyInputIdx < props.index) return inputElements.value[firstEmptyInputIdx];
|
|
34787
|
+
}
|
|
34788
|
+
function handleMousedown(event) {
|
|
34789
|
+
const earlierEmptyInput = getEarlierEmptyInput();
|
|
34790
|
+
if (!earlierEmptyInput) return;
|
|
34791
|
+
event.preventDefault();
|
|
34792
|
+
earlierEmptyInput.focus();
|
|
34793
|
+
}
|
|
34672
34794
|
function handleFocus(event) {
|
|
34673
|
-
if (
|
|
34674
|
-
const
|
|
34675
|
-
if (
|
|
34676
|
-
|
|
34795
|
+
if (!inputElements.value.includes(event.relatedTarget)) {
|
|
34796
|
+
const earlierEmptyInput = getEarlierEmptyInput();
|
|
34797
|
+
if (earlierEmptyInput) {
|
|
34798
|
+
earlierEmptyInput.focus();
|
|
34677
34799
|
return;
|
|
34678
34800
|
}
|
|
34679
34801
|
}
|
|
@@ -34719,7 +34841,7 @@ var PinInputInput_default = /* @__PURE__ */ defineComponent({
|
|
|
34719
34841
|
const tempModelValue = [...context.currentModelValue.value];
|
|
34720
34842
|
if (context.isNumericMode.value) {
|
|
34721
34843
|
const num = +value;
|
|
34722
|
-
if (value === "" || isNaN(num))
|
|
34844
|
+
if (value === "" || isNaN(num)) tempModelValue[index] = void 0;
|
|
34723
34845
|
else tempModelValue[index] = num;
|
|
34724
34846
|
} else tempModelValue[index] = value;
|
|
34725
34847
|
context.modelValue.value = removeTrailingEmptyStrings(tempModelValue);
|
|
@@ -34761,6 +34883,7 @@ var PinInputInput_default = /* @__PURE__ */ defineComponent({
|
|
|
34761
34883
|
withKeys(handleBackspace, ["backspace"]),
|
|
34762
34884
|
withKeys(handleDelete, ["delete"])
|
|
34763
34885
|
],
|
|
34886
|
+
onMousedown: handleMousedown,
|
|
34764
34887
|
onFocus: handleFocus,
|
|
34765
34888
|
onBlur: handleBlur,
|
|
34766
34889
|
onPaste: handlePaste,
|
|
@@ -37144,6 +37267,10 @@ var SelectContentImpl_default = /* @__PURE__ */ defineComponent({
|
|
|
37144
37267
|
function handleKeyDown(event) {
|
|
37145
37268
|
const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;
|
|
37146
37269
|
if (event.key === "Tab") event.preventDefault();
|
|
37270
|
+
if (event.code === "Space") {
|
|
37271
|
+
if (search.value === "") return;
|
|
37272
|
+
event.preventDefault();
|
|
37273
|
+
}
|
|
37147
37274
|
if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key, getItems());
|
|
37148
37275
|
if ([
|
|
37149
37276
|
"ArrowUp",
|
|
@@ -38992,6 +39119,15 @@ function handlePointerMove(event) {
|
|
|
38992
39119
|
updateCursor();
|
|
38993
39120
|
if (intersectingHandles.length > 0) event.preventDefault();
|
|
38994
39121
|
}
|
|
39122
|
+
function handlePointerOut(event) {
|
|
39123
|
+
if (isPointerDown || !isIframeElement(event.relatedTarget)) return;
|
|
39124
|
+
intersectingHandles.splice(0);
|
|
39125
|
+
updateResizeHandlerStates("move", event);
|
|
39126
|
+
updateCursor();
|
|
39127
|
+
}
|
|
39128
|
+
function isIframeElement(target) {
|
|
39129
|
+
return target !== null && "tagName" in target && target.tagName === "IFRAME";
|
|
39130
|
+
}
|
|
38995
39131
|
function handlePointerUp(event) {
|
|
38996
39132
|
const { target } = event;
|
|
38997
39133
|
const { x, y } = getResizeEventCoordinates(event);
|
|
@@ -39063,6 +39199,7 @@ function updateListeners() {
|
|
|
39063
39199
|
body.removeEventListener("mousedown", handlePointerDown);
|
|
39064
39200
|
body.removeEventListener("mouseleave", handlePointerMove);
|
|
39065
39201
|
body.removeEventListener("mousemove", handlePointerMove);
|
|
39202
|
+
body.removeEventListener("mouseout", handlePointerOut);
|
|
39066
39203
|
body.removeEventListener("touchmove", handlePointerMove);
|
|
39067
39204
|
body.removeEventListener("touchstart", handlePointerDown);
|
|
39068
39205
|
});
|
|
@@ -39087,6 +39224,7 @@ function updateListeners() {
|
|
|
39087
39224
|
if (count > 0) {
|
|
39088
39225
|
body.addEventListener("mousedown", handlePointerDown);
|
|
39089
39226
|
body.addEventListener("mousemove", handlePointerMove);
|
|
39227
|
+
body.addEventListener("mouseout", handlePointerOut);
|
|
39090
39228
|
body.addEventListener("touchmove", handlePointerMove, { passive: false });
|
|
39091
39229
|
body.addEventListener("touchstart", handlePointerDown);
|
|
39092
39230
|
}
|
|
@@ -44441,6 +44579,15 @@ var TooltipContentHoverable_default = /* @__PURE__ */ defineComponent({
|
|
|
44441
44579
|
onPointerExit(() => {
|
|
44442
44580
|
onClose();
|
|
44443
44581
|
});
|
|
44582
|
+
useEventListener(currentElement, "pointermove", (event) => {
|
|
44583
|
+
const content = currentElement.value;
|
|
44584
|
+
if (!content || event.pointerType === "touch") return;
|
|
44585
|
+
if (content.ownerDocument.elementsFromPoint?.(event.clientX, event.clientY).some((el) => {
|
|
44586
|
+
if (content.contains(el)) return false;
|
|
44587
|
+
const coveredTrigger = el.closest("[data-grace-area-trigger]");
|
|
44588
|
+
return !!coveredTrigger && coveredTrigger !== trigger.value;
|
|
44589
|
+
})) onClose();
|
|
44590
|
+
});
|
|
44444
44591
|
return (_ctx, _cache) => {
|
|
44445
44592
|
return openBlock(), createBlock(TooltipContentImpl_default, mergeProps({ ref: unref(forwardRef) }, unref(forwardedProps)), {
|
|
44446
44593
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
|
|
@@ -44607,9 +44754,9 @@ var TooltipTrigger_default = /* @__PURE__ */ defineComponent({
|
|
|
44607
44754
|
blur: handleBlur
|
|
44608
44755
|
};
|
|
44609
44756
|
});
|
|
44610
|
-
|
|
44611
|
-
rootContext.onTriggerChange(
|
|
44612
|
-
});
|
|
44757
|
+
watch(triggerElement, (el) => {
|
|
44758
|
+
rootContext.onTriggerChange(el);
|
|
44759
|
+
}, { immediate: true });
|
|
44613
44760
|
function handlePointerUp() {
|
|
44614
44761
|
setTimeout(() => {
|
|
44615
44762
|
isPointerDown.value = false;
|
|
@@ -44645,7 +44792,7 @@ var TooltipTrigger_default = /* @__PURE__ */ defineComponent({
|
|
|
44645
44792
|
return (_ctx, _cache) => {
|
|
44646
44793
|
return openBlock(), createBlock(unref(PopperAnchor_default), {
|
|
44647
44794
|
"as-child": "",
|
|
44648
|
-
reference: _ctx.reference
|
|
44795
|
+
reference: _ctx.reference ?? unref(triggerElement)
|
|
44649
44796
|
}, {
|
|
44650
44797
|
default: withCtx(() => [createVNode(unref(Primitive), mergeProps({
|
|
44651
44798
|
ref: unref(forwardRef),
|
|
@@ -44802,7 +44949,27 @@ var TreeRoot_default = /* @__PURE__ */ defineComponent({
|
|
|
44802
44949
|
expanded.value.map((i) => i);
|
|
44803
44950
|
return flattenItems(items$1 ?? []);
|
|
44804
44951
|
});
|
|
44952
|
+
/**
|
|
44953
|
+
* A form control rendered inside a tree item — an inline rename, a per-row
|
|
44954
|
+
* filter or picker — owns its own keys. Without this, typing into it drives
|
|
44955
|
+
* tree typeahead and selection, moving focus to another row mid-edit. `select`
|
|
44956
|
+
* counts too: it consumes character keys for its own option typeahead and
|
|
44957
|
+
* Shift+Arrow to extend a multiple selection.
|
|
44958
|
+
*
|
|
44959
|
+
* Same idea as the guard in `MenuContentImpl`, widened past `input`/`textarea`.
|
|
44960
|
+
*/
|
|
44961
|
+
const KEY_OWNING_TAGS = [
|
|
44962
|
+
"input",
|
|
44963
|
+
"textarea",
|
|
44964
|
+
"select"
|
|
44965
|
+
];
|
|
44966
|
+
function isKeyDownInFormField(event) {
|
|
44967
|
+
const target = event.target;
|
|
44968
|
+
if (!target) return false;
|
|
44969
|
+
return KEY_OWNING_TAGS.includes(target.tagName.toLowerCase()) || target.isContentEditable;
|
|
44970
|
+
}
|
|
44805
44971
|
function handleKeydown(event) {
|
|
44972
|
+
if (isKeyDownInFormField(event)) return;
|
|
44806
44973
|
if (isVirtual.value) virtualKeydownHook.trigger(event);
|
|
44807
44974
|
else {
|
|
44808
44975
|
const collections = rovingFocusGroupRef.value?.getItems() ?? [];
|
|
@@ -44810,7 +44977,7 @@ var TreeRoot_default = /* @__PURE__ */ defineComponent({
|
|
|
44810
44977
|
}
|
|
44811
44978
|
}
|
|
44812
44979
|
function handleKeydownNavigation(event) {
|
|
44813
|
-
if (isVirtual.value) return;
|
|
44980
|
+
if (isVirtual.value || isKeyDownInFormField(event)) return;
|
|
44814
44981
|
const intent = MAP_KEY_TO_FOCUS_INTENT[event.key];
|
|
44815
44982
|
nextTick(() => {
|
|
44816
44983
|
handleMultipleReplace(intent, getActiveElement(), rovingFocusGroupRef.value?.getItems, expandedItems.value.map((i) => i.value));
|
|
@@ -45033,8 +45200,8 @@ var TreeItem_default = /* @__PURE__ */ defineComponent({
|
|
|
45033
45200
|
"data-disabled": isDisabled.value ? "" : void 0,
|
|
45034
45201
|
onKeydown: [
|
|
45035
45202
|
withKeys(withModifiers(handleSelectCustomEvent, ["self", "prevent"]), ["enter", "space"]),
|
|
45036
|
-
_cache[0] || (_cache[0] = withKeys(withModifiers((ev) => unref(rootContext).dir.value === "ltr" ? handleKeydownRight(ev) : handleKeydownLeft(ev), ["prevent"]), ["right"])),
|
|
45037
|
-
_cache[1] || (_cache[1] = withKeys(withModifiers((ev) => unref(rootContext).dir.value === "ltr" ? handleKeydownLeft(ev) : handleKeydownRight(ev), ["prevent"]), ["left"]))
|
|
45203
|
+
_cache[0] || (_cache[0] = withKeys(withModifiers((ev) => unref(rootContext).dir.value === "ltr" ? handleKeydownRight(ev) : handleKeydownLeft(ev), ["self", "prevent"]), ["right"])),
|
|
45204
|
+
_cache[1] || (_cache[1] = withKeys(withModifiers((ev) => unref(rootContext).dir.value === "ltr" ? handleKeydownLeft(ev) : handleKeydownRight(ev), ["self", "prevent"]), ["left"]))
|
|
45038
45205
|
],
|
|
45039
45206
|
onClick: _cache[2] || (_cache[2] = withModifiers((ev) => {
|
|
45040
45207
|
handleSelectCustomEvent(ev);
|