@alikhalilll/ui 1.1.1 → 1.2.1
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/README.md +1 -1
- package/dist/chunks/{ADrawerContent.vue_vue_type_script_setup_true_lang-BivIZvV1.mjs → ADrawerContent.vue_vue_type_script_setup_true_lang-W28CSzER.mjs} +15 -15
- package/dist/chunks/ADrawerContent.vue_vue_type_script_setup_true_lang-W28CSzER.mjs.map +1 -0
- package/dist/chunks/{APopoverContent.vue_vue_type_script_setup_true_lang-o1XhV9DM.mjs → APopoverContent.vue_vue_type_script_setup_true_lang-CjiJ12DR.mjs} +6 -6
- package/dist/chunks/APopoverContent.vue_vue_type_script_setup_true_lang-CjiJ12DR.mjs.map +1 -0
- package/dist/chunks/{AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-BYEb5UBL.mjs → AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-5YbO6FdM.mjs} +3 -3
- package/dist/chunks/{AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-BYEb5UBL.mjs.map → AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-5YbO6FdM.mjs.map} +1 -1
- package/dist/chunks/ATellInput.vue_vue_type_script_setup_true_lang-D7hPj1g1.mjs +1489 -0
- package/dist/chunks/ATellInput.vue_vue_type_script_setup_true_lang-D7hPj1g1.mjs.map +1 -0
- package/dist/drawer.mjs +1 -1
- package/dist/index.d.ts +105 -2
- package/dist/index.mjs +34 -29
- package/dist/popover.mjs +1 -1
- package/dist/responsive-popover.mjs +1 -1
- package/dist/tell-input.d.ts +105 -2
- package/dist/tell-input.mjs +11 -6
- package/entries/tell-input/README.md +18 -2
- package/package.json +1 -1
- package/dist/chunks/ADrawerContent.vue_vue_type_script_setup_true_lang-BivIZvV1.mjs.map +0 -1
- package/dist/chunks/APopoverContent.vue_vue_type_script_setup_true_lang-o1XhV9DM.mjs.map +0 -1
- package/dist/chunks/ATellInput.vue_vue_type_script_setup_true_lang-Clc-B8SW.mjs +0 -1353
- package/dist/chunks/ATellInput.vue_vue_type_script_setup_true_lang-Clc-B8SW.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -145,7 +145,7 @@ const country = ref<number | null>(null); // dial number, e.g. 20 for Egypt
|
|
|
145
145
|
</template>
|
|
146
146
|
```
|
|
147
147
|
|
|
148
|
-
The picker stays hidden until the user types or pastes something that matches a known dial code, then
|
|
148
|
+
The picker stays hidden until the user types or pastes something that matches a known dial code, then a flag-only trigger reveals at the end of the field with the dial code as an inline prefix, and `phone` is normalised to the national significant number (`01066105963` → `1066105963`, `+447911123456` → `7911123456`). RTL-aware, localisable via `locale` / `messages`, and accepts alternative numerals.
|
|
149
149
|
|
|
150
150
|
Full props, slots, theming recipes, and live demos → [tell-input docs](https://alikhalilll.github.io/ali-nuxt-toolkit/ui/tell-input) or [./entries/tell-input/README.md](./entries/tell-input/README.md).
|
|
151
151
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { defineComponent as d, openBlock as c, createBlock as p, unref as e, mergeProps as i, withCtx as l, renderSlot as m, createVNode as y, createElementVNode as
|
|
2
|
-
import { DrawerRoot as
|
|
3
|
-
import { useForwardPropsEmits as
|
|
1
|
+
import { defineComponent as d, openBlock as c, createBlock as p, unref as e, mergeProps as i, withCtx as l, renderSlot as m, createVNode as y, createElementVNode as h } from "vue";
|
|
2
|
+
import { DrawerRoot as x, DrawerTrigger as b, DrawerOverlay as O, DrawerPortal as D, DrawerContent as v } from "vaul-vue";
|
|
3
|
+
import { useForwardPropsEmits as w, useForwardProps as B } from "reka-ui";
|
|
4
4
|
import { reactiveOmit as _ } from "@vueuse/core";
|
|
5
5
|
import { c as g } from "./cn-B6yFEsav.mjs";
|
|
6
6
|
const F = /* @__PURE__ */ d({
|
|
@@ -26,8 +26,8 @@ const F = /* @__PURE__ */ d({
|
|
|
26
26
|
},
|
|
27
27
|
emits: ["drag", "release", "close", "update:open", "update:activeSnapPoint", "animationEnd"],
|
|
28
28
|
setup(t, { emit: o }) {
|
|
29
|
-
const
|
|
30
|
-
return (n, u) => (c(), p(e(
|
|
29
|
+
const r = w(t, o);
|
|
30
|
+
return (n, u) => (c(), p(e(x), i({ "data-slot": "drawer" }, e(r)), {
|
|
31
31
|
default: l(() => [
|
|
32
32
|
m(n.$slots, "default")
|
|
33
33
|
]),
|
|
@@ -41,10 +41,10 @@ const F = /* @__PURE__ */ d({
|
|
|
41
41
|
as: {}
|
|
42
42
|
},
|
|
43
43
|
setup(t) {
|
|
44
|
-
const a =
|
|
45
|
-
return (
|
|
44
|
+
const a = B(t);
|
|
45
|
+
return (s, r) => (c(), p(e(b), i({ "data-slot": "drawer-trigger" }, e(a)), {
|
|
46
46
|
default: l(() => [
|
|
47
|
-
m(
|
|
47
|
+
m(s.$slots, "default")
|
|
48
48
|
]),
|
|
49
49
|
_: 3
|
|
50
50
|
}, 16));
|
|
@@ -58,10 +58,10 @@ const F = /* @__PURE__ */ d({
|
|
|
58
58
|
class: { type: [Boolean, null, String, Object, Array] }
|
|
59
59
|
},
|
|
60
60
|
setup(t) {
|
|
61
|
-
const o = t, a = _(o, "class"),
|
|
62
|
-
return (
|
|
61
|
+
const o = t, a = _(o, "class"), s = B(a);
|
|
62
|
+
return (r, n) => (c(), p(e(O), i({ "data-slot": "drawer-overlay" }, e(s), {
|
|
63
63
|
class: e(g)(
|
|
64
|
-
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-40 bg-black/
|
|
64
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-40 bg-black/70",
|
|
65
65
|
o.class
|
|
66
66
|
)
|
|
67
67
|
}), null, 16, ["class"]));
|
|
@@ -78,18 +78,18 @@ const F = /* @__PURE__ */ d({
|
|
|
78
78
|
},
|
|
79
79
|
emits: ["escapeKeyDown", "pointerDownOutside", "focusOutside", "interactOutside", "openAutoFocus", "closeAutoFocus"],
|
|
80
80
|
setup(t, { emit: o }) {
|
|
81
|
-
const a = t,
|
|
81
|
+
const a = t, s = o, r = _(a, "class"), n = w(r, s);
|
|
82
82
|
return (u, f) => (c(), p(e(D), null, {
|
|
83
83
|
default: l(() => [
|
|
84
84
|
y(A),
|
|
85
85
|
y(e(v), i({ "data-slot": "drawer-content" }, { ...u.$attrs, ...e(n) }, {
|
|
86
86
|
class: e(g)(
|
|
87
|
-
"bg-background fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px]
|
|
87
|
+
"bg-background fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] shadow-2xl shadow-black/30 outline-none",
|
|
88
88
|
a.class
|
|
89
89
|
)
|
|
90
90
|
}), {
|
|
91
91
|
default: l(() => [
|
|
92
|
-
f[0] || (f[0] =
|
|
92
|
+
f[0] || (f[0] = h("div", { class: "bg-muted mx-auto mt-4 h-2 w-[100px] rounded-full" }, null, -1)),
|
|
93
93
|
m(u.$slots, "default")
|
|
94
94
|
]),
|
|
95
95
|
_: 3
|
|
@@ -105,4 +105,4 @@ export {
|
|
|
105
105
|
A as b,
|
|
106
106
|
E as c
|
|
107
107
|
};
|
|
108
|
-
//# sourceMappingURL=ADrawerContent.vue_vue_type_script_setup_true_lang-
|
|
108
|
+
//# sourceMappingURL=ADrawerContent.vue_vue_type_script_setup_true_lang-W28CSzER.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ADrawerContent.vue_vue_type_script_setup_true_lang-W28CSzER.mjs","sources":["../../entries/drawer/components/ADrawer.vue","../../entries/drawer/components/ADrawerTrigger.vue","../../entries/drawer/components/ADrawerOverlay.vue","../../entries/drawer/components/ADrawerContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { DrawerRoot, type DrawerRootEmits, type DrawerRootProps } from 'vaul-vue';\nimport { useForwardPropsEmits } from 'reka-ui';\n\nconst props = withDefaults(defineProps<DrawerRootProps>(), {\n shouldScaleBackground: true,\n});\nconst emits = defineEmits<DrawerRootEmits>();\nconst forwarded = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n <DrawerRoot data-slot=\"drawer\" v-bind=\"forwarded\">\n <slot />\n </DrawerRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { DrawerTrigger, type DrawerTriggerProps } from 'vaul-vue';\nimport { useForwardProps } from 'reka-ui';\n\nconst props = defineProps<DrawerTriggerProps>();\nconst forwarded = useForwardProps(props);\n</script>\n\n<template>\n <DrawerTrigger data-slot=\"drawer-trigger\" v-bind=\"forwarded\">\n <slot />\n </DrawerTrigger>\n</template>\n","<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\nimport { DrawerOverlay } from 'vaul-vue';\nimport type { DialogOverlayProps } from 'reka-ui';\nimport { reactiveOmit } from '@vueuse/core';\nimport { useForwardProps } from 'reka-ui';\nimport { cn } from '@/utils';\n\nconst props = defineProps<DialogOverlayProps & { class?: HTMLAttributes['class'] }>();\nconst delegated = reactiveOmit(props, 'class');\nconst forwarded = useForwardProps(delegated);\n</script>\n\n<template>\n <DrawerOverlay\n data-slot=\"drawer-overlay\"\n v-bind=\"forwarded\"\n :class=\"\n cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-40 bg-black/70',\n props.class\n )\n \"\n />\n</template>\n","<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\nimport { DrawerContent, DrawerPortal } from 'vaul-vue';\nimport type { DialogContentEmits, DialogContentProps } from 'reka-ui';\nimport { reactiveOmit } from '@vueuse/core';\nimport { useForwardPropsEmits } from 'reka-ui';\nimport { cn } from '@/utils';\nimport ADrawerOverlay from './ADrawerOverlay.vue';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = defineProps<DialogContentProps & { class?: HTMLAttributes['class'] }>();\nconst emits = defineEmits<DialogContentEmits>();\nconst delegated = reactiveOmit(props, 'class');\nconst forwarded = useForwardPropsEmits(delegated, emits);\n</script>\n\n<template>\n <DrawerPortal>\n <ADrawerOverlay />\n <DrawerContent\n data-slot=\"drawer-content\"\n v-bind=\"{ ...$attrs, ...forwarded }\"\n :class=\"\n cn(\n 'bg-background fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] shadow-2xl shadow-black/30 outline-none',\n props.class\n )\n \"\n >\n <div class=\"bg-muted mx-auto mt-4 h-2 w-[100px] rounded-full\" />\n <slot />\n </DrawerContent>\n </DrawerPortal>\n</template>\n"],"names":["forwarded","useForwardPropsEmits","__props","__emit","_openBlock","_createBlock","_unref","_mergeProps","_renderSlot","_ctx","useForwardProps","props","delegated","reactiveOmit","cn","emits","DrawerPortal","_createVNode","ADrawerOverlay","DrawerContent","$attrs","_createElementVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAMA,IAAYC,EAJJC,GAGAC,CACqC;sBAIjDC,EAAA,GAAAC,EAEaC,MAFbC,EAEa,EAFD,aAAU,SAAA,GAAiBD,EAAAN,CAAA,CAAS,GAAA;AAAA,iBAC9C,MAAQ;AAAA,QAARQ,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;ACRZ,UAAMT,IAAYU,EADJR,CACyB;sBAIrCE,EAAA,GAAAC,EAEgBC,MAFhBC,EAEgB,EAFD,aAAU,iBAAA,GAAyBD,EAAAN,CAAA,CAAS,GAAA;AAAA,iBACzD,MAAQ;AAAA,QAARQ,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;;;ACFZ,UAAME,IAAQT,GACRU,IAAYC,EAAaF,GAAO,OAAO,GACvCX,IAAYU,EAAgBE,CAAS;sBAIzCR,EAAA,GAAAC,EASEC,MATFC,EASE,EARA,aAAU,iBAAA,GACFD,EAAAN,CAAA,GAAS;AAAA,MAChB,OAAcM,EAAAQ,CAAA;AAAA;QAA8KH,EAAM;AAAA,MAAA;AAAA;;;;;;;;;;;;;;ACNvM,UAAMA,IAAQT,GACRa,IAAQZ,GACRS,IAAYC,EAAaF,GAAO,OAAO,GACvCX,IAAYC,EAAqBW,GAAWG,CAAK;2BAIrDV,EAeeC,EAAAU,CAAA,GAAA,MAAA;AAAA,iBAdb,MAAkB;AAAA,QAAlBC,EAAkBC,CAAA;AAAA,QAClBD,EAYgBX,EAAAa,CAAA,GAZhBZ,EAYgB,EAXd,aAAU,iBAAA,GAAgB,EAAA,GACba,EAAAA,QAAM,GAAKd,EAAAN,CAAA,KAAS;AAAA,UAChC,OAAgBM,EAAAQ,CAAA;AAAA;YAA2JH,EAAM;AAAA,UAAA;AAAA;qBAOlL,MAAgE;AAAA,4BAAhEU,EAAgE,OAAA,EAA3D,OAAM,mDAAA,GAAkD,MAAA,EAAA;AAAA,YAC7Db,EAAQC,EAAA,QAAA,SAAA;AAAA,UAAA;;;;;;;;"}
|
|
@@ -34,7 +34,7 @@ const j = /* @__PURE__ */ u({
|
|
|
34
34
|
_: 3
|
|
35
35
|
}, 16));
|
|
36
36
|
}
|
|
37
|
-
}),
|
|
37
|
+
}), x = /* @__PURE__ */ u({
|
|
38
38
|
inheritAttrs: !1,
|
|
39
39
|
__name: "APopoverOverlay",
|
|
40
40
|
props: {
|
|
@@ -62,7 +62,7 @@ const j = /* @__PURE__ */ u({
|
|
|
62
62
|
// `fixed inset-0` covers the entire viewport; `pointer-events-auto` captures every
|
|
63
63
|
// click so it can never reach the page underneath. `z-50` keeps us above any normal
|
|
64
64
|
// page chrome; the popover content sits at `z-[60]`.
|
|
65
|
-
"fixed inset-0 z-50 bg-black/
|
|
65
|
+
"fixed inset-0 z-50 bg-black/70 pointer-events-auto data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
66
66
|
r.class
|
|
67
67
|
)
|
|
68
68
|
)
|
|
@@ -103,13 +103,13 @@ const j = /* @__PURE__ */ u({
|
|
|
103
103
|
const t = a, n = r, s = z(t, "class", "overlay", "overlayClass"), d = v(s, n);
|
|
104
104
|
return (e, l) => (i(), p(o($), null, {
|
|
105
105
|
default: c(() => [
|
|
106
|
-
t.overlay ? (i(), p(
|
|
106
|
+
t.overlay ? (i(), p(x, {
|
|
107
107
|
key: 0,
|
|
108
108
|
class: y(t.overlayClass)
|
|
109
109
|
}, null, 8, ["class"])) : P("", !0),
|
|
110
110
|
A(o(k), f({ "data-slot": "popover-content" }, { ...e.$attrs, ...o(d) }, {
|
|
111
111
|
class: o(g)(
|
|
112
|
-
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[60] w-72 rounded-md border p-4 shadow-
|
|
112
|
+
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[60] w-72 rounded-md border border-border/70 p-4 shadow-xl shadow-black/15 outline-none",
|
|
113
113
|
t.class
|
|
114
114
|
)
|
|
115
115
|
}), {
|
|
@@ -126,7 +126,7 @@ const j = /* @__PURE__ */ u({
|
|
|
126
126
|
export {
|
|
127
127
|
j as _,
|
|
128
128
|
T as a,
|
|
129
|
-
|
|
129
|
+
x as b,
|
|
130
130
|
D as c
|
|
131
131
|
};
|
|
132
|
-
//# sourceMappingURL=APopoverContent.vue_vue_type_script_setup_true_lang-
|
|
132
|
+
//# sourceMappingURL=APopoverContent.vue_vue_type_script_setup_true_lang-CjiJ12DR.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"APopoverContent.vue_vue_type_script_setup_true_lang-CjiJ12DR.mjs","sources":["../../entries/popover/components/APopover.vue","../../entries/popover/components/APopoverTrigger.vue","../../entries/popover/components/APopoverOverlay.vue","../../entries/popover/components/APopoverContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PopoverRootEmits, PopoverRootProps } from 'reka-ui';\nimport { PopoverRoot, useForwardPropsEmits } from 'reka-ui';\n\n/**\n * Defaults `modal` to `true` so the popover locks page scroll, traps focus, and an overlay\n * (rendered by APopoverContent when `overlay` is set) actually dims the page.\n * Pass `:modal=\"false\"` for tooltip-style non-modal popovers.\n */\nconst props = withDefaults(defineProps<PopoverRootProps>(), { modal: true });\nconst emits = defineEmits<PopoverRootEmits>();\nconst forwarded = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n <PopoverRoot v-slot=\"slotProps\" data-slot=\"popover\" v-bind=\"forwarded\">\n <slot v-bind=\"slotProps\" />\n </PopoverRoot>\n</template>\n","<script setup lang=\"ts\">\nimport type { PopoverTriggerProps } from 'reka-ui';\nimport { PopoverTrigger, useForwardProps } from 'reka-ui';\n\nconst props = defineProps<PopoverTriggerProps>();\nconst forwarded = useForwardProps(props);\n</script>\n\n<template>\n <PopoverTrigger data-slot=\"popover-trigger\" v-bind=\"forwarded\">\n <slot />\n </PopoverTrigger>\n</template>\n","<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\nimport { onBeforeUnmount, onMounted } from 'vue';\nimport { cn } from '@/utils';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = defineProps<{ class?: HTMLAttributes['class'] }>();\n\n// Body-scroll-lock for the lifetime of the overlay. Mounted = lock; unmounted = restore.\n// Because this component is only rendered when `<APopoverContent :overlay=\"true\">` is\n// inside the open popover portal, mount/unmount tracks visibility 1:1.\nlet prevBodyOverflow = '';\nlet prevBodyTouchAction = '';\nlet prevPaddingRight = '';\n\nfunction getScrollbarWidth() {\n if (typeof window === 'undefined') return 0;\n return window.innerWidth - document.documentElement.clientWidth;\n}\n\nonMounted(() => {\n if (typeof document === 'undefined') return;\n const body = document.body;\n const sbw = getScrollbarWidth();\n prevBodyOverflow = body.style.overflow;\n prevBodyTouchAction = body.style.touchAction;\n prevPaddingRight = body.style.paddingRight;\n body.style.overflow = 'hidden';\n body.style.touchAction = 'none';\n // Compensate for the missing scrollbar so the layout doesn't jump.\n if (sbw > 0) body.style.paddingRight = `${sbw}px`;\n});\n\nonBeforeUnmount(() => {\n if (typeof document === 'undefined') return;\n const body = document.body;\n body.style.overflow = prevBodyOverflow;\n body.style.touchAction = prevBodyTouchAction;\n body.style.paddingRight = prevPaddingRight;\n});\n</script>\n\n<template>\n <div\n data-slot=\"popover-overlay\"\n aria-hidden=\"true\"\n :class=\"\n cn(\n // `fixed inset-0` covers the entire viewport; `pointer-events-auto` captures every\n // click so it can never reach the page underneath. `z-50` keeps us above any normal\n // page chrome; the popover content sits at `z-[60]`.\n 'fixed inset-0 z-50 bg-black/70 pointer-events-auto data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n props.class\n )\n \"\n />\n</template>\n","<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\nimport { reactiveOmit } from '@vueuse/core';\nimport {\n PopoverContent,\n type PopoverContentEmits,\n type PopoverContentProps,\n PopoverPortal,\n useForwardPropsEmits,\n} from 'reka-ui';\nimport { cn } from '@/utils';\nimport APopoverOverlay from './APopoverOverlay.vue';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = withDefaults(\n defineProps<\n PopoverContentProps & {\n class?: HTMLAttributes['class'];\n /** Dim the entire viewport behind the popover and block all interaction with the\n * page (clicks are captured by the overlay; body scroll is locked while open).\n * Pair with `<APopover :modal=\"true\">` (the default) for the full modal behaviour. */\n overlay?: boolean;\n overlayClass?: HTMLAttributes['class'];\n }\n >(),\n { align: 'center', sideOffset: 4, overlay: false }\n);\nconst emits = defineEmits<PopoverContentEmits>();\nconst delegated = reactiveOmit(props, 'class', 'overlay', 'overlayClass');\nconst forwarded = useForwardPropsEmits(delegated, emits);\n</script>\n\n<template>\n <PopoverPortal>\n <!--\n Overlay is a sibling of PopoverContent inside the same portal. Reka-ui's\n DismissableLayer treats any pointer-down outside the content as a dismiss,\n so clicking the overlay closes the popover for free. The overlay component\n locks body scroll on mount and restores it on unmount.\n -->\n <APopoverOverlay v-if=\"props.overlay\" :class=\"props.overlayClass\" />\n <PopoverContent\n data-slot=\"popover-content\"\n v-bind=\"{ ...$attrs, ...forwarded }\"\n :class=\"\n cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[60] w-72 rounded-md border border-border/70 p-4 shadow-xl shadow-black/15 outline-none',\n props.class\n )\n \"\n >\n <slot />\n </PopoverContent>\n </PopoverPortal>\n</template>\n"],"names":["forwarded","useForwardPropsEmits","__props","__emit","_openBlock","_createBlock","_unref","_mergeProps","_withCtx","slotProps","_renderSlot","_ctx","useForwardProps","props","prevBodyOverflow","prevBodyTouchAction","prevPaddingRight","getScrollbarWidth","onMounted","body","sbw","onBeforeUnmount","_createElementBlock","_normalizeClass","cn","emits","delegated","reactiveOmit","PopoverPortal","APopoverOverlay","_createVNode","PopoverContent","$attrs"],"mappings":";;;;;;;;;;;;;AAWA,UAAMA,IAAYC,EAFJC,GACAC,CACqC;sBAIjDC,EAAA,GAAAC,EAEcC,MAFdC,EAEc,EAFkB,aAAU,UAAA,GAAkBD,EAAAN,CAAA,CAAS,GAAA;AAAA,MACnE,SAAAQ,EAAA,CADmBC,MAAS;AAAA,QAC5BC,EAA2BC,yBAAbF,CAAS,CAAA,CAAA;AAAA,MAAA;;;;;;;;;;;ACX3B,UAAMT,IAAYY,EADJV,CACyB;sBAIrCE,EAAA,GAAAC,EAEiBC,MAFjBC,EAEiB,EAFD,aAAU,kBAAA,GAA0BD,EAAAN,CAAA,CAAS,GAAA;AAAA,iBAC3D,MAAQ;AAAA,QAARU,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;ACHZ,UAAME,IAAQX;AAKd,QAAIY,IAAmB,IACnBC,IAAsB,IACtBC,IAAmB;AAEvB,aAASC,IAAoB;AAC3B,aAAI,OAAO,SAAW,MAAoB,IACnC,OAAO,aAAa,SAAS,gBAAgB;AAAA,IACtD;AAEA,WAAAC,EAAU,MAAM;AACd,UAAI,OAAO,WAAa,IAAa;AACrC,YAAMC,IAAO,SAAS,MAChBC,IAAMH,EAAA;AACZ,MAAAH,IAAmBK,EAAK,MAAM,UAC9BJ,IAAsBI,EAAK,MAAM,aACjCH,IAAmBG,EAAK,MAAM,cAC9BA,EAAK,MAAM,WAAW,UACtBA,EAAK,MAAM,cAAc,QAErBC,IAAM,MAAGD,EAAK,MAAM,eAAe,GAAGC,CAAG;AAAA,IAC/C,CAAC,GAEDC,EAAgB,MAAM;AACpB,UAAI,OAAO,WAAa,IAAa;AACrC,YAAMF,IAAO,SAAS;AACtB,MAAAA,EAAK,MAAM,WAAWL,GACtBK,EAAK,MAAM,cAAcJ,GACzBI,EAAK,MAAM,eAAeH;AAAA,IAC5B,CAAC,mBAICM,EAYE,OAAA;AAAA,MAXA,aAAU;AAAA,MACV,eAAY;AAAA,MACX,OAAKC;AAAAA,QAASjB,EAAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;UAAybX,EAAM;AAAA,QAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChCld,UAAMA,IAAQX,GAaRuB,IAAQtB,GACRuB,IAAYC,EAAad,GAAO,SAAS,WAAW,cAAc,GAClEb,IAAYC,EAAqByB,GAAWD,CAAK;2BAIrDpB,EAoBgBC,EAAAsB,CAAA,GAAA,MAAA;AAAA,iBAbd,MAAoE;AAAA,QAA7Cf,EAAM,gBAA7BR,EAAoEwB,GAAA;AAAA;UAA7B,OAAKN,EAAEV,EAAM,YAAY;AAAA,QAAA;QAChEiB,EAWiBxB,EAAAyB,CAAA,GAXjBxB,EAWiB,EAVf,aAAU,kBAAA,GAAiB,EAAA,GACdyB,EAAAA,QAAM,GAAK1B,EAAAN,CAAA,KAAS;AAAA,UAChC,OAAgBM,EAAAkB,CAAA;AAAA;YAAyeX,EAAM;AAAA,UAAA;AAAA;qBAOhgB,MAAQ;AAAA,YAARH,EAAQC,EAAA,QAAA,SAAA;AAAA,UAAA;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent as c, useModel as g, computed as u, openBlock as l, createBlock as r, resolveDynamicComponent as _, withCtx as p, renderSlot as i, unref as n, mergeModels as k, normalizeClass as v } from "vue";
|
|
2
2
|
import { useMediaQuery as f } from "@vueuse/core";
|
|
3
|
-
import { _ as C, c as $, a as b } from "./APopoverContent.vue_vue_type_script_setup_true_lang-
|
|
4
|
-
import { _ as h, c as B, a as w } from "./ADrawerContent.vue_vue_type_script_setup_true_lang-
|
|
3
|
+
import { _ as C, c as $, a as b } from "./APopoverContent.vue_vue_type_script_setup_true_lang-CjiJ12DR.mjs";
|
|
4
|
+
import { _ as h, c as B, a as w } from "./ADrawerContent.vue_vue_type_script_setup_true_lang-W28CSzER.mjs";
|
|
5
5
|
const M = /* @__PURE__ */ c({
|
|
6
6
|
__name: "AResponsivePopover",
|
|
7
7
|
props: /* @__PURE__ */ k({
|
|
@@ -89,4 +89,4 @@ export {
|
|
|
89
89
|
S as a,
|
|
90
90
|
R as b
|
|
91
91
|
};
|
|
92
|
-
//# sourceMappingURL=AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-
|
|
92
|
+
//# sourceMappingURL=AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-5YbO6FdM.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
{"version":3,"file":"AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-5YbO6FdM.mjs","sources":["../../entries/responsive-popover/components/AResponsivePopover.vue","../../entries/responsive-popover/components/AResponsivePopoverTrigger.vue","../../entries/responsive-popover/components/AResponsivePopoverContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { useMediaQuery } from '@vueuse/core';\nimport { APopover } from '@/entries/popover';\nimport { ADrawer } from '@/entries/drawer';\n\nconst props = withDefaults(\n defineProps<{\n /** CSS media query for the desktop break. Below this width we render a vaul drawer. */\n breakpoint?: string;\n /**\n * When true, the popover (desktop) locks page scroll, traps focus, and renders an overlay.\n * The drawer (mobile) is always modal-like (vaul-vue ships its own overlay + scroll-lock).\n */\n modal?: boolean;\n }>(),\n { breakpoint: '(min-width: 768px)', modal: true }\n);\n\nconst open = defineModel<boolean>('open');\n\nconst isDesktop = useMediaQuery(() => props.breakpoint);\n\n/**\n * Pre-imported on both branches — do NOT lazy-load. Switching the component identity at runtime\n * means we still hydrate the right tree client-side.\n */\nconst Root = computed(() => (isDesktop.value ? APopover : ADrawer));\n</script>\n\n<template>\n <component :is=\"Root\" v-model:open=\"open\" :modal=\"props.modal\" data-slot=\"responsive-popover\">\n <slot :is-desktop=\"isDesktop\" />\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { useMediaQuery } from '@vueuse/core';\nimport { APopoverTrigger } from '@/entries/popover';\nimport { ADrawerTrigger } from '@/entries/drawer';\n\nconst props = withDefaults(\n defineProps<{\n breakpoint?: string;\n asChild?: boolean;\n }>(),\n { breakpoint: '(min-width: 768px)' }\n);\n\nconst isDesktop = useMediaQuery(() => props.breakpoint);\nconst Trigger = computed(() => (isDesktop.value ? APopoverTrigger : ADrawerTrigger));\n</script>\n\n<template>\n <component :is=\"Trigger\" :as-child=\"props.asChild\" data-slot=\"responsive-popover-trigger\">\n <slot />\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\nimport { computed } from 'vue';\nimport { useMediaQuery } from '@vueuse/core';\nimport { APopoverContent } from '@/entries/popover';\nimport { ADrawerContent } from '@/entries/drawer';\n\nconst props = withDefaults(\n defineProps<{\n breakpoint?: string;\n /** Classes applied on both branches. Avoid width / inset classes here. */\n class?: HTMLAttributes['class'];\n /** Classes applied only when the popover (desktop) branch is rendered. */\n popoverClass?: HTMLAttributes['class'];\n /** Classes applied only when the drawer (mobile) branch is rendered. */\n drawerClass?: HTMLAttributes['class'];\n /**\n * Render the dimmed overlay on the desktop popover branch. Defaults to `false` — popovers\n * on desktop are non-modal-looking by convention. The mobile drawer always has its own\n * overlay (vaul-vue's `DrawerOverlay`) regardless of this prop.\n */\n overlay?: boolean;\n align?: 'start' | 'center' | 'end';\n sideOffset?: number;\n }>(),\n {\n breakpoint: '(min-width: 768px)',\n align: 'start',\n sideOffset: 4,\n overlay: false,\n }\n);\n\nconst isDesktop = useMediaQuery(() => props.breakpoint);\n\nconst mergedClass = computed(() => [\n props.class,\n isDesktop.value ? props.popoverClass : props.drawerClass,\n]);\n</script>\n\n<template>\n <APopoverContent\n v-if=\"isDesktop\"\n :overlay=\"props.overlay\"\n :align=\"props.align\"\n :side-offset=\"props.sideOffset\"\n :class=\"mergedClass\"\n data-slot=\"responsive-popover-content\"\n >\n <slot />\n </APopoverContent>\n <ADrawerContent v-else :class=\"mergedClass\" data-slot=\"responsive-popover-content\">\n <slot />\n </ADrawerContent>\n</template>\n"],"names":["props","__props","open","_useModel","isDesktop","useMediaQuery","Root","computed","APopover","ADrawer","_openBlock","_createBlock","_resolveDynamicComponent","$event","_renderSlot","_ctx","_unref","Trigger","APopoverTrigger","ADrawerTrigger","mergedClass","APopoverContent","ADrawerContent"],"mappings":";;;;;;;;;;;;;;;AAMA,UAAMA,IAAQC,GAaRC,IAAOC,EAAoBF,GAAC,MAAM,GAElCG,IAAYC,EAAc,MAAML,EAAM,UAAU,GAMhDM,IAAOC,EAAS,MAAOH,EAAU,QAAQI,IAAWC,CAAQ;sBAIhEC,KAAAC,EAEYC,EAFIN,EAAA,KAAI,GAAA;AAAA,MAAU,MAAMJ,EAAA;AAAA,8CAAAA,EAAI,QAAAW;AAAA,MAAG,OAAOb,EAAM;AAAA,MAAO,aAAU;AAAA,IAAA;iBACvE,MAAgC;AAAA,QAAhCc,EAAgCC,EAAA,QAAA,WAAA,EAAzB,WAAYC,EAAAZ,CAAA,EAAA,CAAS;AAAA,MAAA;;;;;;;;;;;AC1BhC,UAAMJ,IAAQC,GAQRG,IAAYC,EAAc,MAAML,EAAM,UAAU,GAChDiB,IAAUV,EAAS,MAAOH,EAAU,QAAQc,IAAkBC,CAAe;sBAIjFT,KAAAC,EAEYC,EAFIK,EAAA,KAAO,GAAA;AAAA,MAAG,YAAUjB,EAAM;AAAA,MAAS,aAAU;AAAA,IAAA;iBAC3D,MAAQ;AAAA,QAARc,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;;;;;;ACbZ,UAAMf,IAAQC,GA0BRG,IAAYC,EAAc,MAAML,EAAM,UAAU,GAEhDoB,IAAcb,EAAS,MAAM;AAAA,MACjCP,EAAM;AAAA,MACNI,EAAU,QAAQJ,EAAM,eAAeA,EAAM;AAAA,IAAA,CAC9C;qBAKSgB,EAAAZ,CAAA,UADRO,EASkBK,EAAAK,CAAA,GAAA;AAAA;MAPf,SAASrB,EAAM;AAAA,MACf,OAAOA,EAAM;AAAA,MACb,eAAaA,EAAM;AAAA,MACnB,SAAOoB,EAAA,KAAW;AAAA,MACnB,aAAU;AAAA,IAAA;iBAEV,MAAQ;AAAA,QAARN,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;iEAEVJ,EAEiBK,EAAAM,CAAA,GAAA;AAAA;MAFO,SAAOF,EAAA,KAAW;AAAA,MAAE,aAAU;AAAA,IAAA;iBACpD,MAAQ;AAAA,QAARN,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;"}
|