@poppy-ui/vue 0.5.7-beta.2 → 0.6.0-rc.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/dist/Toast-DuytECg8.cjs +2 -0
- package/dist/Toast-DuytECg8.cjs.map +1 -0
- package/dist/Toast-fSQWLl0R.js +63 -0
- package/dist/Toast-fSQWLl0R.js.map +1 -0
- package/dist/components/actions/public.es.js +2 -2
- package/dist/components/actions/public.es.js.map +1 -1
- package/dist/components/actions/public.umd.js +1 -1
- package/dist/components/actions/public.umd.js.map +1 -1
- package/dist/components/app/public.es.js +4 -3
- package/dist/components/app/public.es.js.map +1 -1
- package/dist/components/app/public.umd.js +1 -1
- package/dist/components/app/public.umd.js.map +1 -1
- package/dist/components/data/public.es.js +720 -516
- package/dist/components/data/public.es.js.map +1 -1
- package/dist/components/data/public.umd.js +1 -1
- package/dist/components/data/public.umd.js.map +1 -1
- package/dist/components/data/select/Select.d.ts +27 -0
- package/dist/components/data/select/Select.d.ts.map +1 -1
- package/dist/components/data/select/select.props.d.ts +42 -3
- package/dist/components/data/select/select.props.d.ts.map +1 -1
- package/dist/components/data/select/select.types.d.ts +9 -0
- package/dist/components/data/select/select.types.d.ts.map +1 -1
- package/dist/components/display/public.d.ts +2 -0
- package/dist/components/display/public.d.ts.map +1 -1
- package/dist/components/display/public.es.js +2 -2
- package/dist/components/display/public.types.d.ts +4 -0
- package/dist/components/display/public.types.d.ts.map +1 -1
- package/dist/components/display/public.umd.js +1 -1
- package/dist/components/display/stat/Stat.d.ts +22 -0
- package/dist/components/display/stat/Stat.d.ts.map +1 -0
- package/dist/components/display/stat/Stats.d.ts +12 -0
- package/dist/components/display/stat/Stats.d.ts.map +1 -0
- package/dist/components/display/stat/stat.context.d.ts +2 -0
- package/dist/components/display/stat/stat.context.d.ts.map +1 -0
- package/dist/components/display/stat/stat.props.d.ts +42 -0
- package/dist/components/display/stat/stat.props.d.ts.map +1 -0
- package/dist/components/display/stat/stat.types.d.ts +2 -0
- package/dist/components/display/stat/stat.types.d.ts.map +1 -0
- package/dist/components/display/stat/stats.context.d.ts +2 -0
- package/dist/components/display/stat/stats.context.d.ts.map +1 -0
- package/dist/components/display/stat/stats.props.d.ts +11 -0
- package/dist/components/display/stat/stats.props.d.ts.map +1 -0
- package/dist/components/display/stat/stats.types.d.ts +2 -0
- package/dist/components/display/stat/stats.types.d.ts.map +1 -0
- package/dist/components/feedback/public.es.js +3 -3
- package/dist/components/feedback/public.es.js.map +1 -1
- package/dist/components/feedback/public.umd.js +1 -1
- package/dist/components/feedback/public.umd.js.map +1 -1
- package/dist/components/layout/public.es.js +2 -2
- package/dist/components/layout/public.es.js.map +1 -1
- package/dist/components/layout/public.umd.js +1 -1
- package/dist/components/layout/public.umd.js.map +1 -1
- package/dist/components/navigation/menu/MenuItem.d.ts +36 -0
- package/dist/components/navigation/menu/MenuItem.d.ts.map +1 -0
- package/dist/components/navigation/navbar/Navbar.d.ts +4 -0
- package/dist/components/navigation/navbar/Navbar.d.ts.map +1 -0
- package/dist/components/navigation/public.d.ts +4 -0
- package/dist/components/navigation/public.d.ts.map +1 -1
- package/dist/components/navigation/public.es.js +2 -128
- package/dist/components/navigation/public.types.d.ts +2 -0
- package/dist/components/navigation/public.types.d.ts.map +1 -1
- package/dist/components/navigation/public.umd.js +1 -2
- package/dist/components/navigation/tab/Tab.d.ts +16 -0
- package/dist/components/navigation/tab/Tab.d.ts.map +1 -0
- package/dist/components/navigation/tab/Tabs.d.ts +20 -0
- package/dist/components/navigation/tab/Tabs.d.ts.map +1 -0
- package/dist/components/navigation/tab/tab.context.d.ts +10 -0
- package/dist/components/navigation/tab/tab.context.d.ts.map +1 -0
- package/dist/components/navigation/tab/tab.props.d.ts +60 -0
- package/dist/components/navigation/tab/tab.props.d.ts.map +1 -0
- package/dist/components/navigation/tab/tab.types.d.ts +5 -0
- package/dist/components/navigation/tab/tab.types.d.ts.map +1 -0
- package/dist/composables/public.d.ts +2 -0
- package/dist/composables/public.d.ts.map +1 -1
- package/dist/composables/public.es.js +34 -7
- package/dist/composables/public.es.js.map +1 -1
- package/dist/composables/public.umd.js +1 -1
- package/dist/composables/public.umd.js.map +1 -1
- package/dist/composables/use-select-counter.d.ts +2 -2
- package/dist/composables/use-select-counter.d.ts.map +1 -1
- package/dist/{types → config}/config.type.d.ts +7 -0
- package/dist/config/config.type.d.ts.map +1 -0
- package/dist/config/public.d.ts +3 -0
- package/dist/config/public.d.ts.map +1 -0
- package/dist/config/public.es.js +2 -0
- package/dist/config/public.types.d.ts +2 -0
- package/dist/config/public.types.d.ts.map +1 -0
- package/dist/config/public.umd.js +1 -0
- package/dist/config/size.context.d.ts +4 -0
- package/dist/config/size.context.d.ts.map +1 -0
- package/dist/config/symbol.d.ts +4 -0
- package/dist/config/symbol.d.ts.map +1 -0
- package/dist/plugin-vue.d.ts +1 -1
- package/dist/plugin-vue.d.ts.map +1 -1
- package/dist/{public-CsUi4LK8.cjs → public-BMG6LJJ8.cjs} +2 -2
- package/dist/public-BMG6LJJ8.cjs.map +1 -0
- package/dist/public-D5oNKqE5.js +293 -0
- package/dist/public-D5oNKqE5.js.map +1 -0
- package/dist/{public-D8Z0iHnm.js → public-DBWGO13i.js} +62 -9
- package/dist/public-DBWGO13i.js.map +1 -0
- package/dist/public-xug_FQFy.cjs +2 -0
- package/dist/public-xug_FQFy.cjs.map +1 -0
- package/dist/public.d.ts +1 -0
- package/dist/public.d.ts.map +1 -1
- package/dist/public.es.js +4 -4
- package/dist/public.es.js.map +1 -1
- package/dist/public.umd.js +1 -1
- package/dist/public.umd.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/symbol-Cleu4XHu.cjs +2 -0
- package/dist/symbol-Cleu4XHu.cjs.map +1 -0
- package/dist/symbol-CziS7Pho.js +13 -0
- package/dist/symbol-CziS7Pho.js.map +1 -0
- package/dist/toast.context-BNg0Zn09.cjs +2 -0
- package/dist/toast.context-BNg0Zn09.cjs.map +1 -0
- package/dist/toast.context-CTPY2imu.js +7 -0
- package/dist/toast.context-CTPY2imu.js.map +1 -0
- package/dist/types/public.d.ts +1 -2
- package/dist/types/public.d.ts.map +1 -1
- package/dist/{use-component-config-DX0jSicI.cjs → use-component-config-C-IlXF0W.cjs} +2 -2
- package/dist/use-component-config-C-IlXF0W.cjs.map +1 -0
- package/dist/{use-component-config-DfXvZ0-o.js → use-component-config-CaJQbJOW.js} +2 -2
- package/dist/use-component-config-CaJQbJOW.js.map +1 -0
- package/dist/{use-form-field-Zw9_0CVq.cjs → use-select-counter-BynHkRks.cjs} +2 -2
- package/dist/use-select-counter-BynHkRks.cjs.map +1 -0
- package/dist/{use-form-field-CHsU-LtQ.js → use-select-counter-D8ecaYEi.js} +12 -3
- package/dist/use-select-counter-D8ecaYEi.js.map +1 -0
- package/package.json +22 -16
- package/src/components/actions/button/Button.story.vue +4 -4
- package/src/components/actions/button/button.context.ts +1 -1
- package/src/components/actions/dropdown/Dropdown.story.vue +8 -8
- package/src/components/actions/dropdown/dropdown.context.ts +1 -1
- package/src/components/actions/fab/fab.context.ts +1 -1
- package/src/components/actions/modal/Modal.story.vue +5 -5
- package/src/components/actions/modal/modal.context.ts +1 -1
- package/src/components/actions/swap/Swap.story.vue +5 -5
- package/src/components/actions/swap/swap.context.ts +1 -1
- package/src/components/data/checkbox/Checkbox.story.vue +4 -4
- package/src/components/data/checkbox/checkbox.context.ts +1 -1
- package/src/components/data/form/Form.story.vue +8 -8
- package/src/components/data/form-field/form-field.context.ts +1 -1
- package/src/components/data/input/Input.story.vue +3 -3
- package/src/components/data/input/input.context.ts +1 -1
- package/src/components/data/radio/Radio.story.vue +4 -4
- package/src/components/data/radio/radio.context.ts +1 -1
- package/src/components/data/rating/Rating.story.vue +1 -1
- package/src/components/data/rating/rating.context.ts +1 -1
- package/src/components/data/select/Select.story.vue +108 -19
- package/src/components/data/select/Select.vue +439 -34
- package/src/components/data/select/select.context.ts +1 -1
- package/src/components/data/select/select.props.ts +48 -3
- package/src/components/data/select/select.types.ts +11 -0
- package/src/components/data/slider/slider.context.ts +1 -1
- package/src/components/data/textarea/Textarea.story.vue +3 -3
- package/src/components/data/textarea/textarea.context.ts +1 -1
- package/src/components/data/toggle/Toggle.story.vue +4 -4
- package/src/components/data/toggle/toggle.context.ts +1 -1
- package/src/components/display/accordion/Accordion.story.vue +5 -5
- package/src/components/display/accordion/accordion-item.context.ts +1 -1
- package/src/components/display/avatar/Avatar.story.vue +3 -3
- package/src/components/display/avatar/avatar.context.ts +1 -1
- package/src/components/display/badge/Badge.story.vue +3 -3
- package/src/components/display/badge/badge.context.ts +1 -1
- package/src/components/display/card/Card.story.vue +5 -1
- package/src/components/display/card/card-actions.context.ts +1 -1
- package/src/components/display/card/card.context.ts +1 -1
- package/src/components/display/carousel/carousel.context.ts +1 -1
- package/src/components/display/chat/chat.context.ts +1 -1
- package/src/components/display/countdown/Countdown.story.vue +1 -1
- package/src/components/display/kbd/kbd.context.ts +1 -1
- package/src/components/display/list/List.story.vue +12 -12
- package/src/components/display/public.ts +2 -0
- package/src/components/display/public.types.ts +6 -0
- package/src/components/display/stat/Stat.story.vue +181 -0
- package/src/components/display/stat/Stat.vue +43 -0
- package/src/components/display/stat/Stats.vue +29 -0
- package/src/components/display/stat/stat.context.ts +3 -0
- package/src/components/display/stat/stat.props.ts +50 -0
- package/src/components/display/stat/stat.types.ts +1 -0
- package/src/components/display/stat/stats.context.ts +3 -0
- package/src/components/display/stat/stats.props.ts +11 -0
- package/src/components/display/stat/stats.types.ts +1 -0
- package/src/components/display/status/status.context.ts +1 -1
- package/src/components/feedback/alert/Alert.story.vue +4 -4
- package/src/components/feedback/alert/alert.context.ts +1 -1
- package/src/components/feedback/loading/loading.context.ts +1 -1
- package/src/components/feedback/progress/progress.context.ts +1 -1
- package/src/components/feedback/radial-progress/radial-progress.context.ts +1 -1
- package/src/components/feedback/toast/toast.context.ts +1 -1
- package/src/components/feedback/tooltip/tooltip.context.ts +1 -1
- package/src/components/layout/divider/divider.context.ts +1 -1
- package/src/components/layout/drawer/Drawer.story.vue +2 -2
- package/src/components/layout/drawer/drawer.context.ts +1 -1
- package/src/components/layout/indicator/indicator.context.ts +1 -1
- package/src/components/layout/join/join.context.ts +1 -1
- package/src/components/layout/mask/mask.context.ts +1 -1
- package/src/components/layout/stack/stack.context.ts +1 -1
- package/src/components/navigation/breadcrumbs/breadcrumbs.context.ts +1 -1
- package/src/components/navigation/dock/dock.context.ts +1 -1
- package/src/components/navigation/link/link.context.ts +1 -1
- package/src/components/navigation/menu/Menu.story.vue +5 -5
- package/src/components/navigation/menu/MenuItem.vue +3 -0
- package/src/components/navigation/menu/menu.context.ts +1 -1
- package/src/components/navigation/navbar/Navbar.story.vue +154 -0
- package/src/components/navigation/navbar/Navbar.vue +8 -0
- package/src/components/navigation/public.ts +4 -0
- package/src/components/navigation/public.types.ts +3 -0
- package/src/components/navigation/tab/Tab.story.vue +186 -0
- package/src/components/navigation/tab/Tab.vue +99 -0
- package/src/components/navigation/tab/Tabs.vue +76 -0
- package/src/components/navigation/tab/tab.context.ts +13 -0
- package/src/components/navigation/tab/tab.props.ts +69 -0
- package/src/components/navigation/tab/tab.types.ts +5 -0
- package/src/composables/public.ts +2 -0
- package/src/composables/use-component-config.ts +1 -1
- package/src/composables/use-config.ts +1 -1
- package/src/composables/use-select-counter.ts +2 -3
- package/src/{types → config}/config.type.ts +7 -0
- package/src/config/public.ts +2 -0
- package/src/config/public.types.ts +1 -0
- package/src/config/size.context.ts +4 -0
- package/src/{symbol.ts → config/symbol.ts} +1 -4
- package/src/plugin-vue.ts +3 -2
- package/src/public.ts +1 -0
- package/src/types/public.ts +1 -2
- package/dist/Toast-BEnfZApB.cjs +0 -2
- package/dist/Toast-BEnfZApB.cjs.map +0 -1
- package/dist/Toast-BWTVE5_U.js +0 -62
- package/dist/Toast-BWTVE5_U.js.map +0 -1
- package/dist/components/navigation/public.es.js.map +0 -1
- package/dist/components/navigation/public.umd.js.map +0 -1
- package/dist/favicon.svg +0 -1
- package/dist/icons.svg +0 -24
- package/dist/public-CsUi4LK8.cjs.map +0 -1
- package/dist/public-D8Z0iHnm.js.map +0 -1
- package/dist/symbol-6E8gXxBa.cjs +0 -2
- package/dist/symbol-6E8gXxBa.cjs.map +0 -1
- package/dist/symbol-Dy7mXgB5.js +0 -14
- package/dist/symbol-Dy7mXgB5.js.map +0 -1
- package/dist/symbol.d.ts +0 -6
- package/dist/symbol.d.ts.map +0 -1
- package/dist/types/config.type.d.ts.map +0 -1
- package/dist/use-component-config-DX0jSicI.cjs.map +0 -1
- package/dist/use-component-config-DfXvZ0-o.js.map +0 -1
- package/dist/use-form-field-CHsU-LtQ.js.map +0 -1
- package/dist/use-form-field-Zw9_0CVq.cjs.map +0 -1
- package/src/assets/hero.png +0 -0
- package/src/assets/vite.svg +0 -1
- package/src/assets/vue.svg +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./symbol-Cleu4XHu.cjs"),t=require("./use-component-config-C-IlXF0W.cjs"),n=require("./build-class.util-Lo1-M_t1.cjs"),r=require("./toast.context-BNg0Zn09.cjs");let i=require("vue");var a=e.t(`alert`),o={info:`alert-info`,success:`alert-success`,warning:`alert-warning`,error:`alert-error`},s={outline:`alert-outline`,dash:`alert-dash`,soft:`alert-soft`},c={horizontal:`alert-horizontal`,vertical:`alert-vertical`},l=(0,i.defineComponent)({__name:`Alert`,props:{color:{},variant:{},direction:{}},setup(e){let r=t.n(a,e,{});return(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{role:`alert`,class:(0,i.normalizeClass)([`alert`,[(0,i.unref)(n.n)(o,(0,i.unref)(r).color),(0,i.unref)(n.n)(s,(0,i.unref)(r).variant),(0,i.unref)(n.n)(c,(0,i.unref)(r).direction)]])},[(0,i.renderSlot)(e.$slots,`icon`),(0,i.renderSlot)(e.$slots,`default`)],2))}}),u={start:`toast-start`,center:`toast-center`,end:`toast-end`},d={top:`toast-top`,middle:`toast-middle`,bottom:`toast-bottom`},f=(0,i.defineComponent)({__name:`Toast`,props:{align:{},side:{},duration:{}},setup(e){let a=t.n(r.t,e,{align:`end`,side:`bottom`});return(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{class:(0,i.normalizeClass)([`toast`,[(0,i.unref)(n.n)(u,(0,i.unref)(a).align),(0,i.unref)(n.n)(d,(0,i.unref)(a).side)]])},[(0,i.renderSlot)(e.$slots,`default`)],2))}});Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return f}});
|
|
2
|
+
//# sourceMappingURL=Toast-DuytECg8.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast-DuytECg8.cjs","names":[],"sources":["../src/components/feedback/alert/alert.context.ts","../src/components/feedback/alert/Alert.vue","../src/components/feedback/alert/Alert.vue","../src/components/feedback/toast/Toast.vue","../src/components/feedback/toast/Toast.vue"],"sourcesContent":["import { createComponentConfigKey } from '@/config/symbol'\n\nexport const ALERT_CONFIG = createComponentConfigKey('alert')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { ALERT_CONFIG } from './alert.context'\nimport type { AlertProps } from './alert.props'\nimport type { AlertColor, AlertDirection, AlertVariant } from './alert.types'\n\nconst alertColors: ComponentClass<'alert', AlertColor> = {\n info: 'alert-info',\n success: 'alert-success',\n warning: 'alert-warning',\n error: 'alert-error',\n}\n\nconst alertVariants: ComponentClass<'alert', AlertVariant> = {\n outline: 'alert-outline',\n dash: 'alert-dash',\n soft: 'alert-soft',\n}\n\nconst alertDirections: ComponentClass<'alert', AlertDirection> = {\n horizontal: 'alert-horizontal',\n vertical: 'alert-vertical',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<AlertProps>()\nconst config = useComponentConfig(ALERT_CONFIG, props, {})\n</script>\n\n<template>\n <div\n role=\"alert\"\n class=\"alert\"\n :class=\"[\n getClass(alertColors, config.color),\n getClass(alertVariants, config.variant),\n getClass(alertDirections, config.direction),\n ]\"\n >\n <slot name=\"icon\" />\n <slot />\n </div>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { ALERT_CONFIG } from './alert.context'\nimport type { AlertProps } from './alert.props'\nimport type { AlertColor, AlertDirection, AlertVariant } from './alert.types'\n\nconst alertColors: ComponentClass<'alert', AlertColor> = {\n info: 'alert-info',\n success: 'alert-success',\n warning: 'alert-warning',\n error: 'alert-error',\n}\n\nconst alertVariants: ComponentClass<'alert', AlertVariant> = {\n outline: 'alert-outline',\n dash: 'alert-dash',\n soft: 'alert-soft',\n}\n\nconst alertDirections: ComponentClass<'alert', AlertDirection> = {\n horizontal: 'alert-horizontal',\n vertical: 'alert-vertical',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<AlertProps>()\nconst config = useComponentConfig(ALERT_CONFIG, props, {})\n</script>\n\n<template>\n <div\n role=\"alert\"\n class=\"alert\"\n :class=\"[\n getClass(alertColors, config.color),\n getClass(alertVariants, config.variant),\n getClass(alertDirections, config.direction),\n ]\"\n >\n <slot name=\"icon\" />\n <slot />\n </div>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { TOAST_CONFIG } from './toast.context'\nimport type { ToastProps } from './toast.props'\nimport type { ToastAlign, ToastSide } from './toast.types'\n\nconst toastAligns: ComponentClass<'toast', ToastAlign> = {\n start: 'toast-start',\n center: 'toast-center',\n end: 'toast-end',\n}\n\nconst toastSides: ComponentClass<'toast', ToastSide> = {\n top: 'toast-top',\n middle: 'toast-middle',\n bottom: 'toast-bottom',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<ToastProps>()\nconst config = useComponentConfig(TOAST_CONFIG, props, {\n align: 'end',\n side: 'bottom',\n})\n</script>\n\n<template>\n <div\n class=\"toast\"\n :class=\"[\n getClass(toastAligns, config.align),\n getClass(toastSides, config.side),\n ]\"\n >\n <slot />\n </div>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { TOAST_CONFIG } from './toast.context'\nimport type { ToastProps } from './toast.props'\nimport type { ToastAlign, ToastSide } from './toast.types'\n\nconst toastAligns: ComponentClass<'toast', ToastAlign> = {\n start: 'toast-start',\n center: 'toast-center',\n end: 'toast-end',\n}\n\nconst toastSides: ComponentClass<'toast', ToastSide> = {\n top: 'toast-top',\n middle: 'toast-middle',\n bottom: 'toast-bottom',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<ToastProps>()\nconst config = useComponentConfig(TOAST_CONFIG, props, {\n align: 'end',\n side: 'bottom',\n})\n</script>\n\n<template>\n <div\n class=\"toast\"\n :class=\"[\n getClass(toastAligns, config.align),\n getClass(toastSides, config.side),\n ]\"\n >\n <slot />\n </div>\n</template>"],"mappings":"sMAEA,IAAa,EAAe,EAAA,EAAyB,OAAO,ECMtD,EAAmD,CACvD,KAAM,aACN,QAAS,gBACT,QAAS,gBACT,MAAO,aACT,EAEM,EAAuD,CAC3D,QAAS,gBACT,KAAM,aACN,KAAM,YACR,EAEM,EAA2D,CAC/D,WAAY,mBACZ,SAAU,gBACZ,4FAKA,IAAM,EAAS,EAAA,EAAmB,EAAc,EAAO,CAAC,CAAC,2DAejD,MAAA,CAVJ,KAAK,QACL,OAAA,EAAA,EAAA,gBAAK,CAAC,QAAO,aACG,EAAA,CAAA,EAAS,GAAA,EAAA,EAAA,OAAa,CAAA,EAAO,KAAK,cAAS,EAAA,CAAA,EAAS,GAAA,EAAA,EAAA,OAAe,CAAA,EAAO,OAAO,cAAS,EAAA,CAAA,EAAS,GAAA,EAAA,EAAA,OAAiB,CAAA,EAAO,SAAS,wBAMhI,EAAA,OAAA,MAAA,GAAA,EAAA,EAAA,YACZ,EAAA,OAAA,SAAA,CAAA,EAAA,CAAA,MEnCN,EAAmD,CACvD,MAAO,cACP,OAAQ,eACR,IAAK,WACP,EAEM,EAAiD,CACrD,IAAK,YACL,OAAQ,eACR,OAAQ,cACV,wFAKA,IAAM,EAAS,EAAA,EAAmB,EAAA,EAAc,EAAO,CACrD,MAAO,MACP,KAAM,QACR,CAAC,2DAYO,MAAA,CAPJ,OAAA,EAAA,EAAA,gBAAK,CAAC,QAAO,EAAA,EAAA,EAAA,OACG,EAAA,CAAA,EAAS,GAAA,EAAA,EAAA,OAAa,CAAA,EAAO,KAAK,GAAA,EAAA,EAAA,OAAS,EAAA,CAAA,EAAS,GAAA,EAAA,EAAA,OAAY,CAAA,EAAO,IAAI,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,YAKnF,EAAA,OAAA,SAAA,CAAA,EAAA,CAAA"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { t as e } from "./symbol-CziS7Pho.js";
|
|
2
|
+
import { n as t } from "./use-component-config-CaJQbJOW.js";
|
|
3
|
+
import { n } from "./build-class.util-Cp-ZBFgO.js";
|
|
4
|
+
import { t as r } from "./toast.context-CTPY2imu.js";
|
|
5
|
+
import { createElementBlock as i, defineComponent as a, normalizeClass as o, openBlock as s, renderSlot as c, unref as l } from "vue";
|
|
6
|
+
//#region src/components/feedback/alert/alert.context.ts
|
|
7
|
+
var u = e("alert"), d = {
|
|
8
|
+
info: "alert-info",
|
|
9
|
+
success: "alert-success",
|
|
10
|
+
warning: "alert-warning",
|
|
11
|
+
error: "alert-error"
|
|
12
|
+
}, f = {
|
|
13
|
+
outline: "alert-outline",
|
|
14
|
+
dash: "alert-dash",
|
|
15
|
+
soft: "alert-soft"
|
|
16
|
+
}, p = {
|
|
17
|
+
horizontal: "alert-horizontal",
|
|
18
|
+
vertical: "alert-vertical"
|
|
19
|
+
}, m = /* @__PURE__ */ a({
|
|
20
|
+
__name: "Alert",
|
|
21
|
+
props: {
|
|
22
|
+
color: {},
|
|
23
|
+
variant: {},
|
|
24
|
+
direction: {}
|
|
25
|
+
},
|
|
26
|
+
setup(e) {
|
|
27
|
+
let r = t(u, e, {});
|
|
28
|
+
return (e, t) => (s(), i("div", {
|
|
29
|
+
role: "alert",
|
|
30
|
+
class: o(["alert", [
|
|
31
|
+
l(n)(d, l(r).color),
|
|
32
|
+
l(n)(f, l(r).variant),
|
|
33
|
+
l(n)(p, l(r).direction)
|
|
34
|
+
]])
|
|
35
|
+
}, [c(e.$slots, "icon"), c(e.$slots, "default")], 2));
|
|
36
|
+
}
|
|
37
|
+
}), h = {
|
|
38
|
+
start: "toast-start",
|
|
39
|
+
center: "toast-center",
|
|
40
|
+
end: "toast-end"
|
|
41
|
+
}, g = {
|
|
42
|
+
top: "toast-top",
|
|
43
|
+
middle: "toast-middle",
|
|
44
|
+
bottom: "toast-bottom"
|
|
45
|
+
}, _ = /* @__PURE__ */ a({
|
|
46
|
+
__name: "Toast",
|
|
47
|
+
props: {
|
|
48
|
+
align: {},
|
|
49
|
+
side: {},
|
|
50
|
+
duration: {}
|
|
51
|
+
},
|
|
52
|
+
setup(e) {
|
|
53
|
+
let a = t(r, e, {
|
|
54
|
+
align: "end",
|
|
55
|
+
side: "bottom"
|
|
56
|
+
});
|
|
57
|
+
return (e, t) => (s(), i("div", { class: o(["toast", [l(n)(h, l(a).align), l(n)(g, l(a).side)]]) }, [c(e.$slots, "default")], 2));
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
//#endregion
|
|
61
|
+
export { m as n, _ as t };
|
|
62
|
+
|
|
63
|
+
//# sourceMappingURL=Toast-fSQWLl0R.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast-fSQWLl0R.js","names":[],"sources":["../src/components/feedback/alert/alert.context.ts","../src/components/feedback/alert/Alert.vue","../src/components/feedback/alert/Alert.vue","../src/components/feedback/toast/Toast.vue","../src/components/feedback/toast/Toast.vue"],"sourcesContent":["import { createComponentConfigKey } from '@/config/symbol'\n\nexport const ALERT_CONFIG = createComponentConfigKey('alert')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { ALERT_CONFIG } from './alert.context'\nimport type { AlertProps } from './alert.props'\nimport type { AlertColor, AlertDirection, AlertVariant } from './alert.types'\n\nconst alertColors: ComponentClass<'alert', AlertColor> = {\n info: 'alert-info',\n success: 'alert-success',\n warning: 'alert-warning',\n error: 'alert-error',\n}\n\nconst alertVariants: ComponentClass<'alert', AlertVariant> = {\n outline: 'alert-outline',\n dash: 'alert-dash',\n soft: 'alert-soft',\n}\n\nconst alertDirections: ComponentClass<'alert', AlertDirection> = {\n horizontal: 'alert-horizontal',\n vertical: 'alert-vertical',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<AlertProps>()\nconst config = useComponentConfig(ALERT_CONFIG, props, {})\n</script>\n\n<template>\n <div\n role=\"alert\"\n class=\"alert\"\n :class=\"[\n getClass(alertColors, config.color),\n getClass(alertVariants, config.variant),\n getClass(alertDirections, config.direction),\n ]\"\n >\n <slot name=\"icon\" />\n <slot />\n </div>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { ALERT_CONFIG } from './alert.context'\nimport type { AlertProps } from './alert.props'\nimport type { AlertColor, AlertDirection, AlertVariant } from './alert.types'\n\nconst alertColors: ComponentClass<'alert', AlertColor> = {\n info: 'alert-info',\n success: 'alert-success',\n warning: 'alert-warning',\n error: 'alert-error',\n}\n\nconst alertVariants: ComponentClass<'alert', AlertVariant> = {\n outline: 'alert-outline',\n dash: 'alert-dash',\n soft: 'alert-soft',\n}\n\nconst alertDirections: ComponentClass<'alert', AlertDirection> = {\n horizontal: 'alert-horizontal',\n vertical: 'alert-vertical',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<AlertProps>()\nconst config = useComponentConfig(ALERT_CONFIG, props, {})\n</script>\n\n<template>\n <div\n role=\"alert\"\n class=\"alert\"\n :class=\"[\n getClass(alertColors, config.color),\n getClass(alertVariants, config.variant),\n getClass(alertDirections, config.direction),\n ]\"\n >\n <slot name=\"icon\" />\n <slot />\n </div>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { TOAST_CONFIG } from './toast.context'\nimport type { ToastProps } from './toast.props'\nimport type { ToastAlign, ToastSide } from './toast.types'\n\nconst toastAligns: ComponentClass<'toast', ToastAlign> = {\n start: 'toast-start',\n center: 'toast-center',\n end: 'toast-end',\n}\n\nconst toastSides: ComponentClass<'toast', ToastSide> = {\n top: 'toast-top',\n middle: 'toast-middle',\n bottom: 'toast-bottom',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<ToastProps>()\nconst config = useComponentConfig(TOAST_CONFIG, props, {\n align: 'end',\n side: 'bottom',\n})\n</script>\n\n<template>\n <div\n class=\"toast\"\n :class=\"[\n getClass(toastAligns, config.align),\n getClass(toastSides, config.side),\n ]\"\n >\n <slot />\n </div>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { TOAST_CONFIG } from './toast.context'\nimport type { ToastProps } from './toast.props'\nimport type { ToastAlign, ToastSide } from './toast.types'\n\nconst toastAligns: ComponentClass<'toast', ToastAlign> = {\n start: 'toast-start',\n center: 'toast-center',\n end: 'toast-end',\n}\n\nconst toastSides: ComponentClass<'toast', ToastSide> = {\n top: 'toast-top',\n middle: 'toast-middle',\n bottom: 'toast-bottom',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<ToastProps>()\nconst config = useComponentConfig(TOAST_CONFIG, props, {\n align: 'end',\n side: 'bottom',\n})\n</script>\n\n<template>\n <div\n class=\"toast\"\n :class=\"[\n getClass(toastAligns, config.align),\n getClass(toastSides, config.side),\n ]\"\n >\n <slot />\n </div>\n</template>"],"mappings":";;;;;;AAEA,IAAa,IAAe,EAAyB,OAAO,GCMtD,IAAmD;CACvD,MAAM;CACN,SAAS;CACT,SAAS;CACT,OAAO;AACT,GAEM,IAAuD;CAC3D,SAAS;CACT,MAAM;CACN,MAAM;AACR,GAEM,IAA2D;CAC/D,YAAY;CACZ,UAAU;AACZ;;;;;;;;EAKA,IAAM,IAAS,EAAmB,GAAc,GAAO,CAAC,CAAC;yBAIvD,EAWM,OAAA;GAVJ,MAAK;GACL,OAAK,EAAA,CAAC,SAAO;IACG,EAAA,CAAA,EAAS,GAAa,EAAA,CAAA,EAAO,KAAK;IAAS,EAAA,CAAA,EAAS,GAAe,EAAA,CAAA,EAAO,OAAO;IAAS,EAAA,CAAA,EAAS,GAAiB,EAAA,CAAA,EAAO,SAAS;;MAMpJ,EAAoB,EAAA,QAAA,MAAA,GACpB,EAAQ,EAAA,QAAA,SAAA,CAAA,GAAA,CAAA;;IEnCN,IAAmD;CACvD,OAAO;CACP,QAAQ;CACR,KAAK;AACP,GAEM,IAAiD;CACrD,KAAK;CACL,QAAQ;CACR,QAAQ;AACV;;;;;;;;EAKA,IAAM,IAAS,EAAmB,GAAc,GAAO;GACrD,OAAO;GACP,MAAM;EACR,CAAC;yBAIC,EAQM,OAAA,EAPJ,OAAK,EAAA,CAAC,SAAO,CACG,EAAA,CAAA,EAAS,GAAa,EAAA,CAAA,EAAO,KAAK,GAAS,EAAA,CAAA,EAAS,GAAY,EAAA,CAAA,EAAO,IAAI,CAAA,CAAA,CAAA,EAAA,GAAA,CAK3F,EAAQ,EAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as t } from "../../use-component-config-
|
|
1
|
+
import { t as e } from "../../symbol-CziS7Pho.js";
|
|
2
|
+
import { n as t } from "../../use-component-config-CaJQbJOW.js";
|
|
3
3
|
import { n, t as r } from "../../build-class.util-Cp-ZBFgO.js";
|
|
4
4
|
import { t as i } from "../../is-true-B9ixxcRp.js";
|
|
5
5
|
import { t as a } from "../../_plugin-vue_export-helper-B3ysoDQm.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.es.js","names":["$emit","$slots","$slots","$slots"],"sources":["../../../src/components/actions/button/button.context.ts","../../../src/components/actions/button/Button.vue","../../../src/components/actions/button/Button.vue","../../../src/components/actions/dropdown/dropdown.context.ts","../../../src/components/actions/dropdown/Dropdown.vue","../../../src/components/actions/dropdown/Dropdown.vue","../../../src/components/actions/fab/fab.context.ts","../../../src/components/actions/fab/Fab.vue","../../../src/components/actions/fab/Fab.vue","../../../src/components/actions/modal/modal.context.ts","../../../src/components/actions/modal/Modal.vue","../../../src/components/actions/modal/Modal.vue","../../../src/components/actions/swap/swap.context.ts","../../../src/components/actions/swap/Swap.vue","../../../src/components/actions/swap/Swap.vue"],"sourcesContent":["import { createComponentConfigKey } from '@/symbol'\n\nexport const BUTTON_CONFIG = createComponentConfigKey('button')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, useAttrs } from 'vue'\nimport { RouterLink } from 'vue-router'\nimport { BUTTON_CONFIG } from './button.context'\nimport type { ButtonProps } from './button.props'\nimport type { ButtonBehavior, ButtonColor, ButtonShape, ButtonSize, ButtonVariant } from './button.types'\n\nconst colors: ComponentClass<'btn', ButtonColor> = {\n neutral: 'btn-neutral',\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n accent: 'btn-accent',\n info: 'btn-info',\n success: 'btn-success',\n warning: 'btn-warning',\n error: 'btn-error',\n}\nconst variants: ComponentClass<'btn', ButtonVariant> = {\n solid: 'btn-solid',\n outline: 'btn-outline',\n dash: 'btn-dash',\n soft: 'btn-soft',\n ghost: 'btn-ghost',\n link: 'btn-link',\n}\nconst sizes: ComponentClass<'btn', ButtonSize> = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: 'btn-md',\n lg: 'btn-lg',\n xl: 'btn-xl',\n}\nconst shapes: ComponentClass<'btn', ButtonShape> = {\n wide: 'btn-wide',\n block: 'btn-block',\n square: 'btn-square',\n circle: 'btn-circle',\n}\nconst behaviors: ComponentClass<'btn', ButtonBehavior> = {\n active: 'btn-active',\n disabled: 'btn-disabled',\n}\n</script>\n\n<script setup lang=\"ts\">\ndefineEmits<{\n click: [event: MouseEvent]\n}>()\n\nconst props = defineProps<ButtonProps>()\nconst config = useComponentConfig(BUTTON_CONFIG, props, {\n type: 'button'\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\nconst tag = computed(() => {\n return props.to ? RouterLink : 'button'\n})\n\nconst extraClasses = computed(() => {\n return props.disabled ? behaviors.disabled : ''\n})\n\nconst disabledAttrs = computed(() =>\n props.behavior === 'disabled' || isTrue(props.disabled)\n ? {\n disabled: true,\n 'aria-disabled': true,\n tabIndex: -1,\n }\n : {},\n)\n</script>\n\n<template>\n <component\n :is=\"tag\"\n :type=\"config.type\"\n class=\"btn\"\n :class=\"clsx([\n getClass(colors, config.color),\n getClass(variants, config.variant),\n getClass(sizes, config.size),\n getClass(shapes, config.shape),\n getClass(behaviors, config.behavior),\n extraClasses,\n classAttr,\n ])\"\n v-bind=\"{...attrs, ...disabledAttrs}\"\n :to=\"config.to\"\n @click=\"$emit('click', $event)\"\n >\n <slot v-if=\"isTrue(config.loading)\" name=\"loading\">\n <span class=\"loading loading-spinner\"></span>\n </slot>\n <slot></slot>\n </component>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, useAttrs } from 'vue'\nimport { RouterLink } from 'vue-router'\nimport { BUTTON_CONFIG } from './button.context'\nimport type { ButtonProps } from './button.props'\nimport type { ButtonBehavior, ButtonColor, ButtonShape, ButtonSize, ButtonVariant } from './button.types'\n\nconst colors: ComponentClass<'btn', ButtonColor> = {\n neutral: 'btn-neutral',\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n accent: 'btn-accent',\n info: 'btn-info',\n success: 'btn-success',\n warning: 'btn-warning',\n error: 'btn-error',\n}\nconst variants: ComponentClass<'btn', ButtonVariant> = {\n solid: 'btn-solid',\n outline: 'btn-outline',\n dash: 'btn-dash',\n soft: 'btn-soft',\n ghost: 'btn-ghost',\n link: 'btn-link',\n}\nconst sizes: ComponentClass<'btn', ButtonSize> = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: 'btn-md',\n lg: 'btn-lg',\n xl: 'btn-xl',\n}\nconst shapes: ComponentClass<'btn', ButtonShape> = {\n wide: 'btn-wide',\n block: 'btn-block',\n square: 'btn-square',\n circle: 'btn-circle',\n}\nconst behaviors: ComponentClass<'btn', ButtonBehavior> = {\n active: 'btn-active',\n disabled: 'btn-disabled',\n}\n</script>\n\n<script setup lang=\"ts\">\ndefineEmits<{\n click: [event: MouseEvent]\n}>()\n\nconst props = defineProps<ButtonProps>()\nconst config = useComponentConfig(BUTTON_CONFIG, props, {\n type: 'button'\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\nconst tag = computed(() => {\n return props.to ? RouterLink : 'button'\n})\n\nconst extraClasses = computed(() => {\n return props.disabled ? behaviors.disabled : ''\n})\n\nconst disabledAttrs = computed(() =>\n props.behavior === 'disabled' || isTrue(props.disabled)\n ? {\n disabled: true,\n 'aria-disabled': true,\n tabIndex: -1,\n }\n : {},\n)\n</script>\n\n<template>\n <component\n :is=\"tag\"\n :type=\"config.type\"\n class=\"btn\"\n :class=\"clsx([\n getClass(colors, config.color),\n getClass(variants, config.variant),\n getClass(sizes, config.size),\n getClass(shapes, config.shape),\n getClass(behaviors, config.behavior),\n extraClasses,\n classAttr,\n ])\"\n v-bind=\"{...attrs, ...disabledAttrs}\"\n :to=\"config.to\"\n @click=\"$emit('click', $event)\"\n >\n <slot v-if=\"isTrue(config.loading)\" name=\"loading\">\n <span class=\"loading loading-spinner\"></span>\n </slot>\n <slot></slot>\n </component>\n</template>","import { createComponentConfigKey } from '@/symbol'\n\nexport const DROPDOWN_CONFIG = createComponentConfigKey('dropdown')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { useAttrs, useId, useTemplateRef } from 'vue'\nimport { DROPDOWN_CONFIG } from './dropdown.context'\nimport type { DropdownProps } from './dropdown.props'\nimport type { DropdownAlign, DropdownSide, DropdownTriggerAction } from './dropdown.types'\n\nconst dropdownAlign: ComponentClass<'dropdown', DropdownAlign> = {\n center: 'dropdown-center',\n end: 'dropdown-end',\n start: 'dropdown-start',\n}\nconst dropdownSide: ComponentClass<'dropdown', DropdownSide> = {\n bottom: 'dropdown-bottom',\n top: 'dropdown-top',\n left: 'dropdown-left',\n right: 'dropdown-right',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst popoverRef = useTemplateRef('popover-el')\n\nconst id = useId()\nconst dropdownId = `dropdown-${id}`\nconst anchorName = `--anchor-${id}`\n\nconst emit = defineEmits<{\n show: []\n hide: []\n}>()\n\nconst props = defineProps<DropdownProps>()\nconst config = useComponentConfig(DROPDOWN_CONFIG, props, {\n align: 'start',\n side: 'bottom',\n triggerAction: 'click',\n open: false,\n debounce: 500,\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\n// ── Popover helpers ──────────────────────────────────────────────────────────\n\nfunction show() {\n popoverRef.value?.showPopover()\n}\n\nfunction hide() {\n popoverRef.value?.hidePopover()\n}\n\nfunction toggle() {\n const el = popoverRef.value\n if (!el) {\n return\n }\n\n const isOpen = el.matches(':popover-open')\n isOpen ? hide() : show()\n}\n\n// ── Trigger with ─────────────────────────────────────────────────────────────\n\nlet triggeredWith: DropdownTriggerAction | undefined;\n\n// ── Click ────────────────────────────────────────────────────────────────────\n\nfunction onTriggerClick() {\n // Early return if the \"triggerAction\" is not click or hover\n if (config.value.triggerAction !== 'click' && config.value.triggerAction !== 'hover') {\n return;\n }\n\n // Special case:\n // The dropdown has been triggered by a click to stay open in \"hover\" mode\n // Since the dropdown is open we need to close it if the user click on the dropdown \"trigger\"\n if (triggeredWith === 'click' && config.value.triggerAction === 'hover') {\n hide();\n return;\n }\n\n // Special case:\n // If the dropdown trigger action is hover\n // We want to indicate that the dropdown has been triggered with \"click\" too\n // it prevent to close the dropdown from the \"debounce\" timer\n if (config.value.triggerAction === 'hover') {\n triggeredWith = 'click';\n show()\n return;\n }\n\n // Handle the default case\n triggeredWith = 'click';\n toggle();\n}\n\n// ── Hover debounce ───────────────────────────────────────────────────────────\n\nlet debounceTimer: ReturnType<typeof setTimeout> | undefined;\n\nfunction onHover() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n triggeredWith = 'hover';\n clearTimeout(debounceTimer);\n show();\n}\n\nfunction onBlur() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(() => {\n if (triggeredWith === 'hover') {\n hide();\n }\n }, config.value.debounce);\n}\n\n// ── Context menu ─────────────────────────────────────────────────────────────\n\nfunction onContextMenu(ev: MouseEvent) {\n if (config.value.triggerAction !== 'context-menu') {\n return;\n }\n\n ev.preventDefault();\n triggeredWith = 'context-menu';\n toggle();\n}\n\n// ── Keyboard ─────────────────────────────────────────────────────────────────\n\nfunction onKeyUp(ev: KeyboardEvent) {\n if (!['Enter', ' ', 'Escape'].includes(ev.key)) {\n return;\n }\n\n ev.preventDefault();\n\n if (ev.key === 'Escape') {\n hide();\n } else {\n toggle();\n }\n}\n\n// ── beforetoggle ─────────────────────────────────────────────────────────────\n\nfunction onBeforeToggle(ev: ToggleEvent) {\n if (ev.newState === 'open') {\n emit('show');\n } else {\n emit('hide');\n\n }\n}\n\ndefineExpose({\n show,\n hide,\n toggle,\n $ref: popoverRef,\n});\n</script>\n\n<template>\n <div v-bind=\"attrs\">\n <button\n class=\"dropdown-trigger\"\n :class=\"config.triggerClass\"\n @click=\"onTriggerClick\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @contextmenu=\"onContextMenu\"\n @keyup=\"onKeyUp\"\n >\n <slot name=\"trigger\" />\n </button>\n\n <Teleport to=\"body\">\n <div\n ref=\"popover-el\"\n popover\n :id=\"dropdownId\"\n class=\"dropdown\"\n :class=\"clsx([\n getClass(dropdownSide, config.side),\n getClass(dropdownAlign, config.align),\n classAttr,\n config.contentClass,\n ])\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @beforetoggle=\"onBeforeToggle\"\n >\n <slot></slot>\n </div>\n </Teleport>\n </div>\n</template>\n\n<style scoped>\n.dropdown-trigger {\n anchor-name: v-bind(anchorName);\n}\n\n.dropdown {\n position-anchor: v-bind(anchorName);\n}\n</style>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { useAttrs, useId, useTemplateRef } from 'vue'\nimport { DROPDOWN_CONFIG } from './dropdown.context'\nimport type { DropdownProps } from './dropdown.props'\nimport type { DropdownAlign, DropdownSide, DropdownTriggerAction } from './dropdown.types'\n\nconst dropdownAlign: ComponentClass<'dropdown', DropdownAlign> = {\n center: 'dropdown-center',\n end: 'dropdown-end',\n start: 'dropdown-start',\n}\nconst dropdownSide: ComponentClass<'dropdown', DropdownSide> = {\n bottom: 'dropdown-bottom',\n top: 'dropdown-top',\n left: 'dropdown-left',\n right: 'dropdown-right',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst popoverRef = useTemplateRef('popover-el')\n\nconst id = useId()\nconst dropdownId = `dropdown-${id}`\nconst anchorName = `--anchor-${id}`\n\nconst emit = defineEmits<{\n show: []\n hide: []\n}>()\n\nconst props = defineProps<DropdownProps>()\nconst config = useComponentConfig(DROPDOWN_CONFIG, props, {\n align: 'start',\n side: 'bottom',\n triggerAction: 'click',\n open: false,\n debounce: 500,\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\n// ── Popover helpers ──────────────────────────────────────────────────────────\n\nfunction show() {\n popoverRef.value?.showPopover()\n}\n\nfunction hide() {\n popoverRef.value?.hidePopover()\n}\n\nfunction toggle() {\n const el = popoverRef.value\n if (!el) {\n return\n }\n\n const isOpen = el.matches(':popover-open')\n isOpen ? hide() : show()\n}\n\n// ── Trigger with ─────────────────────────────────────────────────────────────\n\nlet triggeredWith: DropdownTriggerAction | undefined;\n\n// ── Click ────────────────────────────────────────────────────────────────────\n\nfunction onTriggerClick() {\n // Early return if the \"triggerAction\" is not click or hover\n if (config.value.triggerAction !== 'click' && config.value.triggerAction !== 'hover') {\n return;\n }\n\n // Special case:\n // The dropdown has been triggered by a click to stay open in \"hover\" mode\n // Since the dropdown is open we need to close it if the user click on the dropdown \"trigger\"\n if (triggeredWith === 'click' && config.value.triggerAction === 'hover') {\n hide();\n return;\n }\n\n // Special case:\n // If the dropdown trigger action is hover\n // We want to indicate that the dropdown has been triggered with \"click\" too\n // it prevent to close the dropdown from the \"debounce\" timer\n if (config.value.triggerAction === 'hover') {\n triggeredWith = 'click';\n show()\n return;\n }\n\n // Handle the default case\n triggeredWith = 'click';\n toggle();\n}\n\n// ── Hover debounce ───────────────────────────────────────────────────────────\n\nlet debounceTimer: ReturnType<typeof setTimeout> | undefined;\n\nfunction onHover() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n triggeredWith = 'hover';\n clearTimeout(debounceTimer);\n show();\n}\n\nfunction onBlur() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(() => {\n if (triggeredWith === 'hover') {\n hide();\n }\n }, config.value.debounce);\n}\n\n// ── Context menu ─────────────────────────────────────────────────────────────\n\nfunction onContextMenu(ev: MouseEvent) {\n if (config.value.triggerAction !== 'context-menu') {\n return;\n }\n\n ev.preventDefault();\n triggeredWith = 'context-menu';\n toggle();\n}\n\n// ── Keyboard ─────────────────────────────────────────────────────────────────\n\nfunction onKeyUp(ev: KeyboardEvent) {\n if (!['Enter', ' ', 'Escape'].includes(ev.key)) {\n return;\n }\n\n ev.preventDefault();\n\n if (ev.key === 'Escape') {\n hide();\n } else {\n toggle();\n }\n}\n\n// ── beforetoggle ─────────────────────────────────────────────────────────────\n\nfunction onBeforeToggle(ev: ToggleEvent) {\n if (ev.newState === 'open') {\n emit('show');\n } else {\n emit('hide');\n\n }\n}\n\ndefineExpose({\n show,\n hide,\n toggle,\n $ref: popoverRef,\n});\n</script>\n\n<template>\n <div v-bind=\"attrs\">\n <button\n class=\"dropdown-trigger\"\n :class=\"config.triggerClass\"\n @click=\"onTriggerClick\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @contextmenu=\"onContextMenu\"\n @keyup=\"onKeyUp\"\n >\n <slot name=\"trigger\" />\n </button>\n\n <Teleport to=\"body\">\n <div\n ref=\"popover-el\"\n popover\n :id=\"dropdownId\"\n class=\"dropdown\"\n :class=\"clsx([\n getClass(dropdownSide, config.side),\n getClass(dropdownAlign, config.align),\n classAttr,\n config.contentClass,\n ])\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @beforetoggle=\"onBeforeToggle\"\n >\n <slot></slot>\n </div>\n </Teleport>\n </div>\n</template>\n\n<style scoped>\n.dropdown-trigger {\n anchor-name: v-bind(anchorName);\n}\n\n.dropdown {\n position-anchor: v-bind(anchorName);\n}\n</style>","import { createComponentConfigKey } from '@/symbol'\n\nexport const FAB_CONFIG = createComponentConfigKey('fab')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { FAB_CONFIG } from './fab.context'\nimport type { FabProps } from './fab.props'\nimport type { FabMode } from './fab.types'\n\nconst fabModes: ComponentClass<'fab', FabMode> = {\n flower: 'fab-flower',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<FabProps>()\nconst config = useComponentConfig(FAB_CONFIG, props)\n</script>\n\n<template>\n <div\n class=\"fab\"\n :class=\"getClass(fabModes, config.mode)\"\n >\n <div v-if=\"$slots.close\" class=\"fab-close\">\n <slot name=\"close\"></slot>\n </div>\n <div v-if=\"$slots.mainAction\" class=\"fab-main-action\">\n <slot name=\"main-action\"></slot>\n </div>\n\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { FAB_CONFIG } from './fab.context'\nimport type { FabProps } from './fab.props'\nimport type { FabMode } from './fab.types'\n\nconst fabModes: ComponentClass<'fab', FabMode> = {\n flower: 'fab-flower',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<FabProps>()\nconst config = useComponentConfig(FAB_CONFIG, props)\n</script>\n\n<template>\n <div\n class=\"fab\"\n :class=\"getClass(fabModes, config.mode)\"\n >\n <div v-if=\"$slots.close\" class=\"fab-close\">\n <slot name=\"close\"></slot>\n </div>\n <div v-if=\"$slots.mainAction\" class=\"fab-main-action\">\n <slot name=\"main-action\"></slot>\n </div>\n\n <slot />\n </div>\n</template>\n","import { createComponentConfigKey } from '@/symbol'\n\nexport const MODAL_CONFIG = createComponentConfigKey('modal')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, shallowRef, useTemplateRef, watch } from 'vue'\nimport { MODAL_CONFIG } from './modal.context'\nimport type { ModalProps } from './modal.props'\nimport type { ModalPlacement } from './modal.types'\n\nconst modalPlacements: Record<ModalPlacement, `modal-${ModalPlacement}`> = {\n top: 'modal-top',\n middle: 'modal-middle',\n bottom: 'modal-bottom',\n start: 'modal-start',\n end: 'modal-end',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst dialogEl = useTemplateRef('dialog-el')\n\n/**\n * Controls the open state of the modal.\n * Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst open = defineModel<boolean>({ default: false })\n\nconst props = defineProps<ModalProps>()\nconst config = useComponentConfig(MODAL_CONFIG, props, {\n placement: undefined,\n closeOnBackdrop: false,\n loadContentWhenClose: false,\n})\n\nconst emit = defineEmits<{\n close: []\n}>()\n\nconst hasBeenOpened = shallowRef(false)\n\nwatch(open, isOpen => {\n if (isOpen) {\n hasBeenOpened.value = true\n }\n})\n\nconst shouldRenderContent = computed(() => {\n if (isTrue(config.value.loadContentWhenClose)) {\n return true\n }\n return open.value || hasBeenOpened.value\n})\n\nwatch(open, isOpen => {\n if (!dialogEl.value) {\n return\n }\n\n if (isOpen) {\n dialogEl.value.showModal()\n } else {\n dialogEl.value.close()\n }\n}, { immediate: true })\n\nfunction present() {\n open.value = true\n}\n\nfunction dismiss() {\n open.value = false\n}\n\nfunction onClose() {\n open.value = false\n emit('close')\n}\n\ndefineExpose({\n present, \n dismiss,\n})\n</script>\n\n<template>\n <dialog\n ref=\"dialog-el\"\n class=\"modal\"\n :class=\"[config.placement && modalPlacements[config.placement]]\"\n @close=\"onClose\"\n >\n <div v-if=\"shouldRenderContent\" class=\"modal-box\">\n <slot></slot>\n <div v-if=\"$slots.actions\" class=\"modal-action\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n\n <form v-if=\"!isTrue(config.closeOnBackdrop)\" method=\"dialog\" class=\"modal-backdrop\">\n <button>close</button>\n </form>\n </dialog>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, shallowRef, useTemplateRef, watch } from 'vue'\nimport { MODAL_CONFIG } from './modal.context'\nimport type { ModalProps } from './modal.props'\nimport type { ModalPlacement } from './modal.types'\n\nconst modalPlacements: Record<ModalPlacement, `modal-${ModalPlacement}`> = {\n top: 'modal-top',\n middle: 'modal-middle',\n bottom: 'modal-bottom',\n start: 'modal-start',\n end: 'modal-end',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst dialogEl = useTemplateRef('dialog-el')\n\n/**\n * Controls the open state of the modal.\n * Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst open = defineModel<boolean>({ default: false })\n\nconst props = defineProps<ModalProps>()\nconst config = useComponentConfig(MODAL_CONFIG, props, {\n placement: undefined,\n closeOnBackdrop: false,\n loadContentWhenClose: false,\n})\n\nconst emit = defineEmits<{\n close: []\n}>()\n\nconst hasBeenOpened = shallowRef(false)\n\nwatch(open, isOpen => {\n if (isOpen) {\n hasBeenOpened.value = true\n }\n})\n\nconst shouldRenderContent = computed(() => {\n if (isTrue(config.value.loadContentWhenClose)) {\n return true\n }\n return open.value || hasBeenOpened.value\n})\n\nwatch(open, isOpen => {\n if (!dialogEl.value) {\n return\n }\n\n if (isOpen) {\n dialogEl.value.showModal()\n } else {\n dialogEl.value.close()\n }\n}, { immediate: true })\n\nfunction present() {\n open.value = true\n}\n\nfunction dismiss() {\n open.value = false\n}\n\nfunction onClose() {\n open.value = false\n emit('close')\n}\n\ndefineExpose({\n present, \n dismiss,\n})\n</script>\n\n<template>\n <dialog\n ref=\"dialog-el\"\n class=\"modal\"\n :class=\"[config.placement && modalPlacements[config.placement]]\"\n @close=\"onClose\"\n >\n <div v-if=\"shouldRenderContent\" class=\"modal-box\">\n <slot></slot>\n <div v-if=\"$slots.actions\" class=\"modal-action\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n\n <form v-if=\"!isTrue(config.closeOnBackdrop)\" method=\"dialog\" class=\"modal-backdrop\">\n <button>close</button>\n </form>\n </dialog>\n</template>","import { createComponentConfigKey } from '@/symbol'\n\nexport const SWAP_CONFIG = createComponentConfigKey('swap')\n","<script lang=\"ts\">\nimport ClassWrapper from '@/components/ClassWrapper.vue'\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { SWAP_CONFIG } from './swap.context'\nimport type { SwapProps } from './swap.props'\nimport type { SwapVariant } from './swap.types'\n\nconst swapVariants: ComponentClass<'swap', SwapVariant> = {\n flip: 'swap-flip',\n rotate: 'swap-rotate',\n}\n</script>\n\n<script setup lang=\"ts\">\n/**\n * Controls which slot is visible.\n * When `true`, the `on` slot is shown. Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst model = defineModel<boolean>({ default: false })\n\nconst props = defineProps<SwapProps>()\nconst config = useComponentConfig(SWAP_CONFIG, props, {})\n\nfunction toggle() {\n if (!isTrue(props.indeterminate)) {\n model.value = !model.value\n }\n}\n</script>\n\n<template>\n <div\n class=\"swap\"\n :class=\"[\n getClass(swapVariants, config.variant),\n isTrue(indeterminate) ? 'swap-indeterminate' : model && 'swap-active',\n ]\"\n role=\"button\"\n tabindex=\"0\"\n @click=\"toggle\"\n @keydown.enter.space.prevent=\"toggle\"\n >\n <template v-if=\"isTrue(indeterminate) && $slots.indeterminate\">\n <slot name=\"indeterminate\"></slot>\n </template>\n <template v-else>\n <ClassWrapper class=\"swap-on\">\n <slot name=\"on\"></slot>\n </ClassWrapper>\n <ClassWrapper class=\"swap-off\">\n <slot name=\"off\"></slot>\n </ClassWrapper>\n </template>\n </div>\n</template>","<script lang=\"ts\">\nimport ClassWrapper from '@/components/ClassWrapper.vue'\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { SWAP_CONFIG } from './swap.context'\nimport type { SwapProps } from './swap.props'\nimport type { SwapVariant } from './swap.types'\n\nconst swapVariants: ComponentClass<'swap', SwapVariant> = {\n flip: 'swap-flip',\n rotate: 'swap-rotate',\n}\n</script>\n\n<script setup lang=\"ts\">\n/**\n * Controls which slot is visible.\n * When `true`, the `on` slot is shown. Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst model = defineModel<boolean>({ default: false })\n\nconst props = defineProps<SwapProps>()\nconst config = useComponentConfig(SWAP_CONFIG, props, {})\n\nfunction toggle() {\n if (!isTrue(props.indeterminate)) {\n model.value = !model.value\n }\n}\n</script>\n\n<template>\n <div\n class=\"swap\"\n :class=\"[\n getClass(swapVariants, config.variant),\n isTrue(indeterminate) ? 'swap-indeterminate' : model && 'swap-active',\n ]\"\n role=\"button\"\n tabindex=\"0\"\n @click=\"toggle\"\n @keydown.enter.space.prevent=\"toggle\"\n >\n <template v-if=\"isTrue(indeterminate) && $slots.indeterminate\">\n <slot name=\"indeterminate\"></slot>\n </template>\n <template v-else>\n <ClassWrapper class=\"swap-on\">\n <slot name=\"on\"></slot>\n </ClassWrapper>\n <ClassWrapper class=\"swap-off\">\n <slot name=\"off\"></slot>\n </ClassWrapper>\n </template>\n </div>\n</template>"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"public.es.js","names":["$emit","$slots","$slots","$slots"],"sources":["../../../src/components/actions/button/button.context.ts","../../../src/components/actions/button/Button.vue","../../../src/components/actions/button/Button.vue","../../../src/components/actions/dropdown/dropdown.context.ts","../../../src/components/actions/dropdown/Dropdown.vue","../../../src/components/actions/dropdown/Dropdown.vue","../../../src/components/actions/fab/fab.context.ts","../../../src/components/actions/fab/Fab.vue","../../../src/components/actions/fab/Fab.vue","../../../src/components/actions/modal/modal.context.ts","../../../src/components/actions/modal/Modal.vue","../../../src/components/actions/modal/Modal.vue","../../../src/components/actions/swap/swap.context.ts","../../../src/components/actions/swap/Swap.vue","../../../src/components/actions/swap/Swap.vue"],"sourcesContent":["import { createComponentConfigKey } from '@/config/symbol'\n\nexport const BUTTON_CONFIG = createComponentConfigKey('button')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, useAttrs } from 'vue'\nimport { RouterLink } from 'vue-router'\nimport { BUTTON_CONFIG } from './button.context'\nimport type { ButtonProps } from './button.props'\nimport type { ButtonBehavior, ButtonColor, ButtonShape, ButtonSize, ButtonVariant } from './button.types'\n\nconst colors: ComponentClass<'btn', ButtonColor> = {\n neutral: 'btn-neutral',\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n accent: 'btn-accent',\n info: 'btn-info',\n success: 'btn-success',\n warning: 'btn-warning',\n error: 'btn-error',\n}\nconst variants: ComponentClass<'btn', ButtonVariant> = {\n solid: 'btn-solid',\n outline: 'btn-outline',\n dash: 'btn-dash',\n soft: 'btn-soft',\n ghost: 'btn-ghost',\n link: 'btn-link',\n}\nconst sizes: ComponentClass<'btn', ButtonSize> = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: 'btn-md',\n lg: 'btn-lg',\n xl: 'btn-xl',\n}\nconst shapes: ComponentClass<'btn', ButtonShape> = {\n wide: 'btn-wide',\n block: 'btn-block',\n square: 'btn-square',\n circle: 'btn-circle',\n}\nconst behaviors: ComponentClass<'btn', ButtonBehavior> = {\n active: 'btn-active',\n disabled: 'btn-disabled',\n}\n</script>\n\n<script setup lang=\"ts\">\ndefineEmits<{\n click: [event: MouseEvent]\n}>()\n\nconst props = defineProps<ButtonProps>()\nconst config = useComponentConfig(BUTTON_CONFIG, props, {\n type: 'button'\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\nconst tag = computed(() => {\n return props.to ? RouterLink : 'button'\n})\n\nconst extraClasses = computed(() => {\n return props.disabled ? behaviors.disabled : ''\n})\n\nconst disabledAttrs = computed(() =>\n props.behavior === 'disabled' || isTrue(props.disabled)\n ? {\n disabled: true,\n 'aria-disabled': true,\n tabIndex: -1,\n }\n : {},\n)\n</script>\n\n<template>\n <component\n :is=\"tag\"\n :type=\"config.type\"\n class=\"btn\"\n :class=\"clsx([\n getClass(colors, config.color),\n getClass(variants, config.variant),\n getClass(sizes, config.size),\n getClass(shapes, config.shape),\n getClass(behaviors, config.behavior),\n extraClasses,\n classAttr,\n ])\"\n v-bind=\"{...attrs, ...disabledAttrs}\"\n :to=\"config.to\"\n @click=\"$emit('click', $event)\"\n >\n <slot v-if=\"isTrue(config.loading)\" name=\"loading\">\n <span class=\"loading loading-spinner\"></span>\n </slot>\n <slot></slot>\n </component>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, useAttrs } from 'vue'\nimport { RouterLink } from 'vue-router'\nimport { BUTTON_CONFIG } from './button.context'\nimport type { ButtonProps } from './button.props'\nimport type { ButtonBehavior, ButtonColor, ButtonShape, ButtonSize, ButtonVariant } from './button.types'\n\nconst colors: ComponentClass<'btn', ButtonColor> = {\n neutral: 'btn-neutral',\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n accent: 'btn-accent',\n info: 'btn-info',\n success: 'btn-success',\n warning: 'btn-warning',\n error: 'btn-error',\n}\nconst variants: ComponentClass<'btn', ButtonVariant> = {\n solid: 'btn-solid',\n outline: 'btn-outline',\n dash: 'btn-dash',\n soft: 'btn-soft',\n ghost: 'btn-ghost',\n link: 'btn-link',\n}\nconst sizes: ComponentClass<'btn', ButtonSize> = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: 'btn-md',\n lg: 'btn-lg',\n xl: 'btn-xl',\n}\nconst shapes: ComponentClass<'btn', ButtonShape> = {\n wide: 'btn-wide',\n block: 'btn-block',\n square: 'btn-square',\n circle: 'btn-circle',\n}\nconst behaviors: ComponentClass<'btn', ButtonBehavior> = {\n active: 'btn-active',\n disabled: 'btn-disabled',\n}\n</script>\n\n<script setup lang=\"ts\">\ndefineEmits<{\n click: [event: MouseEvent]\n}>()\n\nconst props = defineProps<ButtonProps>()\nconst config = useComponentConfig(BUTTON_CONFIG, props, {\n type: 'button'\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\nconst tag = computed(() => {\n return props.to ? RouterLink : 'button'\n})\n\nconst extraClasses = computed(() => {\n return props.disabled ? behaviors.disabled : ''\n})\n\nconst disabledAttrs = computed(() =>\n props.behavior === 'disabled' || isTrue(props.disabled)\n ? {\n disabled: true,\n 'aria-disabled': true,\n tabIndex: -1,\n }\n : {},\n)\n</script>\n\n<template>\n <component\n :is=\"tag\"\n :type=\"config.type\"\n class=\"btn\"\n :class=\"clsx([\n getClass(colors, config.color),\n getClass(variants, config.variant),\n getClass(sizes, config.size),\n getClass(shapes, config.shape),\n getClass(behaviors, config.behavior),\n extraClasses,\n classAttr,\n ])\"\n v-bind=\"{...attrs, ...disabledAttrs}\"\n :to=\"config.to\"\n @click=\"$emit('click', $event)\"\n >\n <slot v-if=\"isTrue(config.loading)\" name=\"loading\">\n <span class=\"loading loading-spinner\"></span>\n </slot>\n <slot></slot>\n </component>\n</template>","import { createComponentConfigKey } from '@/config/symbol'\n\nexport const DROPDOWN_CONFIG = createComponentConfigKey('dropdown')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { useAttrs, useId, useTemplateRef } from 'vue'\nimport { DROPDOWN_CONFIG } from './dropdown.context'\nimport type { DropdownProps } from './dropdown.props'\nimport type { DropdownAlign, DropdownSide, DropdownTriggerAction } from './dropdown.types'\n\nconst dropdownAlign: ComponentClass<'dropdown', DropdownAlign> = {\n center: 'dropdown-center',\n end: 'dropdown-end',\n start: 'dropdown-start',\n}\nconst dropdownSide: ComponentClass<'dropdown', DropdownSide> = {\n bottom: 'dropdown-bottom',\n top: 'dropdown-top',\n left: 'dropdown-left',\n right: 'dropdown-right',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst popoverRef = useTemplateRef('popover-el')\n\nconst id = useId()\nconst dropdownId = `dropdown-${id}`\nconst anchorName = `--anchor-${id}`\n\nconst emit = defineEmits<{\n show: []\n hide: []\n}>()\n\nconst props = defineProps<DropdownProps>()\nconst config = useComponentConfig(DROPDOWN_CONFIG, props, {\n align: 'start',\n side: 'bottom',\n triggerAction: 'click',\n open: false,\n debounce: 500,\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\n// ── Popover helpers ──────────────────────────────────────────────────────────\n\nfunction show() {\n popoverRef.value?.showPopover()\n}\n\nfunction hide() {\n popoverRef.value?.hidePopover()\n}\n\nfunction toggle() {\n const el = popoverRef.value\n if (!el) {\n return\n }\n\n const isOpen = el.matches(':popover-open')\n isOpen ? hide() : show()\n}\n\n// ── Trigger with ─────────────────────────────────────────────────────────────\n\nlet triggeredWith: DropdownTriggerAction | undefined;\n\n// ── Click ────────────────────────────────────────────────────────────────────\n\nfunction onTriggerClick() {\n // Early return if the \"triggerAction\" is not click or hover\n if (config.value.triggerAction !== 'click' && config.value.triggerAction !== 'hover') {\n return;\n }\n\n // Special case:\n // The dropdown has been triggered by a click to stay open in \"hover\" mode\n // Since the dropdown is open we need to close it if the user click on the dropdown \"trigger\"\n if (triggeredWith === 'click' && config.value.triggerAction === 'hover') {\n hide();\n return;\n }\n\n // Special case:\n // If the dropdown trigger action is hover\n // We want to indicate that the dropdown has been triggered with \"click\" too\n // it prevent to close the dropdown from the \"debounce\" timer\n if (config.value.triggerAction === 'hover') {\n triggeredWith = 'click';\n show()\n return;\n }\n\n // Handle the default case\n triggeredWith = 'click';\n toggle();\n}\n\n// ── Hover debounce ───────────────────────────────────────────────────────────\n\nlet debounceTimer: ReturnType<typeof setTimeout> | undefined;\n\nfunction onHover() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n triggeredWith = 'hover';\n clearTimeout(debounceTimer);\n show();\n}\n\nfunction onBlur() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(() => {\n if (triggeredWith === 'hover') {\n hide();\n }\n }, config.value.debounce);\n}\n\n// ── Context menu ─────────────────────────────────────────────────────────────\n\nfunction onContextMenu(ev: MouseEvent) {\n if (config.value.triggerAction !== 'context-menu') {\n return;\n }\n\n ev.preventDefault();\n triggeredWith = 'context-menu';\n toggle();\n}\n\n// ── Keyboard ─────────────────────────────────────────────────────────────────\n\nfunction onKeyUp(ev: KeyboardEvent) {\n if (!['Enter', ' ', 'Escape'].includes(ev.key)) {\n return;\n }\n\n ev.preventDefault();\n\n if (ev.key === 'Escape') {\n hide();\n } else {\n toggle();\n }\n}\n\n// ── beforetoggle ─────────────────────────────────────────────────────────────\n\nfunction onBeforeToggle(ev: ToggleEvent) {\n if (ev.newState === 'open') {\n emit('show');\n } else {\n emit('hide');\n\n }\n}\n\ndefineExpose({\n show,\n hide,\n toggle,\n $ref: popoverRef,\n});\n</script>\n\n<template>\n <div v-bind=\"attrs\">\n <button\n class=\"dropdown-trigger\"\n :class=\"config.triggerClass\"\n @click=\"onTriggerClick\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @contextmenu=\"onContextMenu\"\n @keyup=\"onKeyUp\"\n >\n <slot name=\"trigger\" />\n </button>\n\n <Teleport to=\"body\">\n <div\n ref=\"popover-el\"\n popover\n :id=\"dropdownId\"\n class=\"dropdown\"\n :class=\"clsx([\n getClass(dropdownSide, config.side),\n getClass(dropdownAlign, config.align),\n classAttr,\n config.contentClass,\n ])\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @beforetoggle=\"onBeforeToggle\"\n >\n <slot></slot>\n </div>\n </Teleport>\n </div>\n</template>\n\n<style scoped>\n.dropdown-trigger {\n anchor-name: v-bind(anchorName);\n}\n\n.dropdown {\n position-anchor: v-bind(anchorName);\n}\n</style>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { useAttrs, useId, useTemplateRef } from 'vue'\nimport { DROPDOWN_CONFIG } from './dropdown.context'\nimport type { DropdownProps } from './dropdown.props'\nimport type { DropdownAlign, DropdownSide, DropdownTriggerAction } from './dropdown.types'\n\nconst dropdownAlign: ComponentClass<'dropdown', DropdownAlign> = {\n center: 'dropdown-center',\n end: 'dropdown-end',\n start: 'dropdown-start',\n}\nconst dropdownSide: ComponentClass<'dropdown', DropdownSide> = {\n bottom: 'dropdown-bottom',\n top: 'dropdown-top',\n left: 'dropdown-left',\n right: 'dropdown-right',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst popoverRef = useTemplateRef('popover-el')\n\nconst id = useId()\nconst dropdownId = `dropdown-${id}`\nconst anchorName = `--anchor-${id}`\n\nconst emit = defineEmits<{\n show: []\n hide: []\n}>()\n\nconst props = defineProps<DropdownProps>()\nconst config = useComponentConfig(DROPDOWN_CONFIG, props, {\n align: 'start',\n side: 'bottom',\n triggerAction: 'click',\n open: false,\n debounce: 500,\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\n// ── Popover helpers ──────────────────────────────────────────────────────────\n\nfunction show() {\n popoverRef.value?.showPopover()\n}\n\nfunction hide() {\n popoverRef.value?.hidePopover()\n}\n\nfunction toggle() {\n const el = popoverRef.value\n if (!el) {\n return\n }\n\n const isOpen = el.matches(':popover-open')\n isOpen ? hide() : show()\n}\n\n// ── Trigger with ─────────────────────────────────────────────────────────────\n\nlet triggeredWith: DropdownTriggerAction | undefined;\n\n// ── Click ────────────────────────────────────────────────────────────────────\n\nfunction onTriggerClick() {\n // Early return if the \"triggerAction\" is not click or hover\n if (config.value.triggerAction !== 'click' && config.value.triggerAction !== 'hover') {\n return;\n }\n\n // Special case:\n // The dropdown has been triggered by a click to stay open in \"hover\" mode\n // Since the dropdown is open we need to close it if the user click on the dropdown \"trigger\"\n if (triggeredWith === 'click' && config.value.triggerAction === 'hover') {\n hide();\n return;\n }\n\n // Special case:\n // If the dropdown trigger action is hover\n // We want to indicate that the dropdown has been triggered with \"click\" too\n // it prevent to close the dropdown from the \"debounce\" timer\n if (config.value.triggerAction === 'hover') {\n triggeredWith = 'click';\n show()\n return;\n }\n\n // Handle the default case\n triggeredWith = 'click';\n toggle();\n}\n\n// ── Hover debounce ───────────────────────────────────────────────────────────\n\nlet debounceTimer: ReturnType<typeof setTimeout> | undefined;\n\nfunction onHover() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n triggeredWith = 'hover';\n clearTimeout(debounceTimer);\n show();\n}\n\nfunction onBlur() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(() => {\n if (triggeredWith === 'hover') {\n hide();\n }\n }, config.value.debounce);\n}\n\n// ── Context menu ─────────────────────────────────────────────────────────────\n\nfunction onContextMenu(ev: MouseEvent) {\n if (config.value.triggerAction !== 'context-menu') {\n return;\n }\n\n ev.preventDefault();\n triggeredWith = 'context-menu';\n toggle();\n}\n\n// ── Keyboard ─────────────────────────────────────────────────────────────────\n\nfunction onKeyUp(ev: KeyboardEvent) {\n if (!['Enter', ' ', 'Escape'].includes(ev.key)) {\n return;\n }\n\n ev.preventDefault();\n\n if (ev.key === 'Escape') {\n hide();\n } else {\n toggle();\n }\n}\n\n// ── beforetoggle ─────────────────────────────────────────────────────────────\n\nfunction onBeforeToggle(ev: ToggleEvent) {\n if (ev.newState === 'open') {\n emit('show');\n } else {\n emit('hide');\n\n }\n}\n\ndefineExpose({\n show,\n hide,\n toggle,\n $ref: popoverRef,\n});\n</script>\n\n<template>\n <div v-bind=\"attrs\">\n <button\n class=\"dropdown-trigger\"\n :class=\"config.triggerClass\"\n @click=\"onTriggerClick\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @contextmenu=\"onContextMenu\"\n @keyup=\"onKeyUp\"\n >\n <slot name=\"trigger\" />\n </button>\n\n <Teleport to=\"body\">\n <div\n ref=\"popover-el\"\n popover\n :id=\"dropdownId\"\n class=\"dropdown\"\n :class=\"clsx([\n getClass(dropdownSide, config.side),\n getClass(dropdownAlign, config.align),\n classAttr,\n config.contentClass,\n ])\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @beforetoggle=\"onBeforeToggle\"\n >\n <slot></slot>\n </div>\n </Teleport>\n </div>\n</template>\n\n<style scoped>\n.dropdown-trigger {\n anchor-name: v-bind(anchorName);\n}\n\n.dropdown {\n position-anchor: v-bind(anchorName);\n}\n</style>","import { createComponentConfigKey } from '@/config/symbol'\n\nexport const FAB_CONFIG = createComponentConfigKey('fab')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { FAB_CONFIG } from './fab.context'\nimport type { FabProps } from './fab.props'\nimport type { FabMode } from './fab.types'\n\nconst fabModes: ComponentClass<'fab', FabMode> = {\n flower: 'fab-flower',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<FabProps>()\nconst config = useComponentConfig(FAB_CONFIG, props)\n</script>\n\n<template>\n <div\n class=\"fab\"\n :class=\"getClass(fabModes, config.mode)\"\n >\n <div v-if=\"$slots.close\" class=\"fab-close\">\n <slot name=\"close\"></slot>\n </div>\n <div v-if=\"$slots.mainAction\" class=\"fab-main-action\">\n <slot name=\"main-action\"></slot>\n </div>\n\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { FAB_CONFIG } from './fab.context'\nimport type { FabProps } from './fab.props'\nimport type { FabMode } from './fab.types'\n\nconst fabModes: ComponentClass<'fab', FabMode> = {\n flower: 'fab-flower',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<FabProps>()\nconst config = useComponentConfig(FAB_CONFIG, props)\n</script>\n\n<template>\n <div\n class=\"fab\"\n :class=\"getClass(fabModes, config.mode)\"\n >\n <div v-if=\"$slots.close\" class=\"fab-close\">\n <slot name=\"close\"></slot>\n </div>\n <div v-if=\"$slots.mainAction\" class=\"fab-main-action\">\n <slot name=\"main-action\"></slot>\n </div>\n\n <slot />\n </div>\n</template>\n","import { createComponentConfigKey } from '@/config/symbol'\n\nexport const MODAL_CONFIG = createComponentConfigKey('modal')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, shallowRef, useTemplateRef, watch } from 'vue'\nimport { MODAL_CONFIG } from './modal.context'\nimport type { ModalProps } from './modal.props'\nimport type { ModalPlacement } from './modal.types'\n\nconst modalPlacements: Record<ModalPlacement, `modal-${ModalPlacement}`> = {\n top: 'modal-top',\n middle: 'modal-middle',\n bottom: 'modal-bottom',\n start: 'modal-start',\n end: 'modal-end',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst dialogEl = useTemplateRef('dialog-el')\n\n/**\n * Controls the open state of the modal.\n * Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst open = defineModel<boolean>({ default: false })\n\nconst props = defineProps<ModalProps>()\nconst config = useComponentConfig(MODAL_CONFIG, props, {\n placement: undefined,\n closeOnBackdrop: false,\n loadContentWhenClose: false,\n})\n\nconst emit = defineEmits<{\n close: []\n}>()\n\nconst hasBeenOpened = shallowRef(false)\n\nwatch(open, isOpen => {\n if (isOpen) {\n hasBeenOpened.value = true\n }\n})\n\nconst shouldRenderContent = computed(() => {\n if (isTrue(config.value.loadContentWhenClose)) {\n return true\n }\n return open.value || hasBeenOpened.value\n})\n\nwatch(open, isOpen => {\n if (!dialogEl.value) {\n return\n }\n\n if (isOpen) {\n dialogEl.value.showModal()\n } else {\n dialogEl.value.close()\n }\n}, { immediate: true })\n\nfunction present() {\n open.value = true\n}\n\nfunction dismiss() {\n open.value = false\n}\n\nfunction onClose() {\n open.value = false\n emit('close')\n}\n\ndefineExpose({\n present, \n dismiss,\n})\n</script>\n\n<template>\n <dialog\n ref=\"dialog-el\"\n class=\"modal\"\n :class=\"[config.placement && modalPlacements[config.placement]]\"\n @close=\"onClose\"\n >\n <div v-if=\"shouldRenderContent\" class=\"modal-box\">\n <slot></slot>\n <div v-if=\"$slots.actions\" class=\"modal-action\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n\n <form v-if=\"!isTrue(config.closeOnBackdrop)\" method=\"dialog\" class=\"modal-backdrop\">\n <button>close</button>\n </form>\n </dialog>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, shallowRef, useTemplateRef, watch } from 'vue'\nimport { MODAL_CONFIG } from './modal.context'\nimport type { ModalProps } from './modal.props'\nimport type { ModalPlacement } from './modal.types'\n\nconst modalPlacements: Record<ModalPlacement, `modal-${ModalPlacement}`> = {\n top: 'modal-top',\n middle: 'modal-middle',\n bottom: 'modal-bottom',\n start: 'modal-start',\n end: 'modal-end',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst dialogEl = useTemplateRef('dialog-el')\n\n/**\n * Controls the open state of the modal.\n * Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst open = defineModel<boolean>({ default: false })\n\nconst props = defineProps<ModalProps>()\nconst config = useComponentConfig(MODAL_CONFIG, props, {\n placement: undefined,\n closeOnBackdrop: false,\n loadContentWhenClose: false,\n})\n\nconst emit = defineEmits<{\n close: []\n}>()\n\nconst hasBeenOpened = shallowRef(false)\n\nwatch(open, isOpen => {\n if (isOpen) {\n hasBeenOpened.value = true\n }\n})\n\nconst shouldRenderContent = computed(() => {\n if (isTrue(config.value.loadContentWhenClose)) {\n return true\n }\n return open.value || hasBeenOpened.value\n})\n\nwatch(open, isOpen => {\n if (!dialogEl.value) {\n return\n }\n\n if (isOpen) {\n dialogEl.value.showModal()\n } else {\n dialogEl.value.close()\n }\n}, { immediate: true })\n\nfunction present() {\n open.value = true\n}\n\nfunction dismiss() {\n open.value = false\n}\n\nfunction onClose() {\n open.value = false\n emit('close')\n}\n\ndefineExpose({\n present, \n dismiss,\n})\n</script>\n\n<template>\n <dialog\n ref=\"dialog-el\"\n class=\"modal\"\n :class=\"[config.placement && modalPlacements[config.placement]]\"\n @close=\"onClose\"\n >\n <div v-if=\"shouldRenderContent\" class=\"modal-box\">\n <slot></slot>\n <div v-if=\"$slots.actions\" class=\"modal-action\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n\n <form v-if=\"!isTrue(config.closeOnBackdrop)\" method=\"dialog\" class=\"modal-backdrop\">\n <button>close</button>\n </form>\n </dialog>\n</template>","import { createComponentConfigKey } from '@/config/symbol'\n\nexport const SWAP_CONFIG = createComponentConfigKey('swap')\n","<script lang=\"ts\">\nimport ClassWrapper from '@/components/ClassWrapper.vue'\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { SWAP_CONFIG } from './swap.context'\nimport type { SwapProps } from './swap.props'\nimport type { SwapVariant } from './swap.types'\n\nconst swapVariants: ComponentClass<'swap', SwapVariant> = {\n flip: 'swap-flip',\n rotate: 'swap-rotate',\n}\n</script>\n\n<script setup lang=\"ts\">\n/**\n * Controls which slot is visible.\n * When `true`, the `on` slot is shown. Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst model = defineModel<boolean>({ default: false })\n\nconst props = defineProps<SwapProps>()\nconst config = useComponentConfig(SWAP_CONFIG, props, {})\n\nfunction toggle() {\n if (!isTrue(props.indeterminate)) {\n model.value = !model.value\n }\n}\n</script>\n\n<template>\n <div\n class=\"swap\"\n :class=\"[\n getClass(swapVariants, config.variant),\n isTrue(indeterminate) ? 'swap-indeterminate' : model && 'swap-active',\n ]\"\n role=\"button\"\n tabindex=\"0\"\n @click=\"toggle\"\n @keydown.enter.space.prevent=\"toggle\"\n >\n <template v-if=\"isTrue(indeterminate) && $slots.indeterminate\">\n <slot name=\"indeterminate\"></slot>\n </template>\n <template v-else>\n <ClassWrapper class=\"swap-on\">\n <slot name=\"on\"></slot>\n </ClassWrapper>\n <ClassWrapper class=\"swap-off\">\n <slot name=\"off\"></slot>\n </ClassWrapper>\n </template>\n </div>\n</template>","<script lang=\"ts\">\nimport ClassWrapper from '@/components/ClassWrapper.vue'\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { SWAP_CONFIG } from './swap.context'\nimport type { SwapProps } from './swap.props'\nimport type { SwapVariant } from './swap.types'\n\nconst swapVariants: ComponentClass<'swap', SwapVariant> = {\n flip: 'swap-flip',\n rotate: 'swap-rotate',\n}\n</script>\n\n<script setup lang=\"ts\">\n/**\n * Controls which slot is visible.\n * When `true`, the `on` slot is shown. Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst model = defineModel<boolean>({ default: false })\n\nconst props = defineProps<SwapProps>()\nconst config = useComponentConfig(SWAP_CONFIG, props, {})\n\nfunction toggle() {\n if (!isTrue(props.indeterminate)) {\n model.value = !model.value\n }\n}\n</script>\n\n<template>\n <div\n class=\"swap\"\n :class=\"[\n getClass(swapVariants, config.variant),\n isTrue(indeterminate) ? 'swap-indeterminate' : model && 'swap-active',\n ]\"\n role=\"button\"\n tabindex=\"0\"\n @click=\"toggle\"\n @keydown.enter.space.prevent=\"toggle\"\n >\n <template v-if=\"isTrue(indeterminate) && $slots.indeterminate\">\n <slot name=\"indeterminate\"></slot>\n </template>\n <template v-else>\n <ClassWrapper class=\"swap-on\">\n <slot name=\"on\"></slot>\n </ClassWrapper>\n <ClassWrapper class=\"swap-off\">\n <slot name=\"off\"></slot>\n </ClassWrapper>\n </template>\n </div>\n</template>"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../symbol-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../symbol-Cleu4XHu.cjs"),t=require("../../use-component-config-C-IlXF0W.cjs"),n=require("../../build-class.util-Lo1-M_t1.cjs"),r=require("../../is-true-D7MXJ1b7.cjs"),i=require("../../_plugin-vue_export-helper-BTmtiIyf.cjs"),a=require("../../ClassWrapper-BNZO3mhP.cjs");let o=require("vue"),s=require("vue-router");var c=e.t(`button`),l={neutral:`btn-neutral`,primary:`btn-primary`,secondary:`btn-secondary`,accent:`btn-accent`,info:`btn-info`,success:`btn-success`,warning:`btn-warning`,error:`btn-error`},u={solid:`btn-solid`,outline:`btn-outline`,dash:`btn-dash`,soft:`btn-soft`,ghost:`btn-ghost`,link:`btn-link`},d={xs:`btn-xs`,sm:`btn-sm`,md:`btn-md`,lg:`btn-lg`,xl:`btn-xl`},f={wide:`btn-wide`,block:`btn-block`,square:`btn-square`,circle:`btn-circle`},p={active:`btn-active`,disabled:`btn-disabled`},m=(0,o.defineComponent)({__name:`Button`,props:{loading:{type:[Boolean,String]},to:{},color:{},variant:{},behavior:{},size:{},shape:{},type:{},disabled:{type:[Boolean,String]},form:{}},emits:[`click`],setup(e){let i=e,a=t.n(c,i,{type:`button`}),{class:m,...h}=(0,o.useAttrs)(),g=(0,o.computed)(()=>i.to?s.RouterLink:`button`),_=(0,o.computed)(()=>i.disabled?p.disabled:``),v=(0,o.computed)(()=>i.behavior===`disabled`||r.t(i.disabled)?{disabled:!0,"aria-disabled":!0,tabIndex:-1}:{});return(e,t)=>((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(g.value),(0,o.mergeProps)({type:(0,o.unref)(a).type,class:[`btn`,(0,o.unref)(n.t)([(0,o.unref)(n.n)(l,(0,o.unref)(a).color),(0,o.unref)(n.n)(u,(0,o.unref)(a).variant),(0,o.unref)(n.n)(d,(0,o.unref)(a).size),(0,o.unref)(n.n)(f,(0,o.unref)(a).shape),(0,o.unref)(n.n)(p,(0,o.unref)(a).behavior),_.value,(0,o.unref)(m)])]},{...h,...v.value},{to:(0,o.unref)(a).to,onClick:t[0]||=t=>e.$emit(`click`,t)}),{default:(0,o.withCtx)(()=>[(0,o.unref)(r.t)((0,o.unref)(a).loading)?(0,o.renderSlot)(e.$slots,`loading`,{key:0},()=>[t[1]||=(0,o.createElementVNode)(`span`,{class:`loading loading-spinner`},null,-1)]):(0,o.createCommentVNode)(``,!0),(0,o.renderSlot)(e.$slots,`default`)]),_:3},16,[`type`,`class`,`to`]))}}),h=e.t(`dropdown`),g={center:`dropdown-center`,end:`dropdown-end`,start:`dropdown-start`},_={bottom:`dropdown-bottom`,top:`dropdown-top`,left:`dropdown-left`,right:`dropdown-right`},v=(0,o.defineComponent)({__name:`Dropdown`,props:{open:{type:[Boolean,String]},triggerClass:{type:[Boolean,null,String,Object,Array]},contentClass:{type:[Boolean,null,String,Object,Array]},align:{},side:{},triggerAction:{},debounce:{}},emits:[`show`,`hide`],setup(e,{expose:r,emit:i}){(0,o.useCssVars)(e=>({v4930e95e:l}));let a=(0,o.useTemplateRef)(`popover-el`),s=(0,o.useId)(),c=`dropdown-${s}`,l=`--anchor-${s}`,u=i,d=t.n(h,e,{align:`start`,side:`bottom`,triggerAction:`click`,open:!1,debounce:500}),{class:f,...p}=(0,o.useAttrs)();function m(){a.value?.showPopover()}function v(){a.value?.hidePopover()}function y(){let e=a.value;e&&(e.matches(`:popover-open`)?v():m())}let b;function x(){if(!(d.value.triggerAction!==`click`&&d.value.triggerAction!==`hover`)){if(b===`click`&&d.value.triggerAction===`hover`){v();return}if(d.value.triggerAction===`hover`){b=`click`,m();return}b=`click`,y()}}let S;function C(){d.value.triggerAction===`hover`&&(b=`hover`,clearTimeout(S),m())}function w(){d.value.triggerAction===`hover`&&(clearTimeout(S),S=setTimeout(()=>{b===`hover`&&v()},d.value.debounce))}function T(e){d.value.triggerAction===`context-menu`&&(e.preventDefault(),b=`context-menu`,y())}function E(e){[`Enter`,` `,`Escape`].includes(e.key)&&(e.preventDefault(),e.key===`Escape`?v():y())}function D(e){e.newState===`open`?u(`show`):u(`hide`)}return r({show:m,hide:v,toggle:y,$ref:a}),(e,t)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,(0,o.normalizeProps)((0,o.guardReactiveProps)(p)),[(0,o.createElementVNode)(`button`,{class:(0,o.normalizeClass)([`dropdown-trigger`,(0,o.unref)(d).triggerClass]),onClick:x,onMouseenter:C,onMouseleave:w,onContextmenu:T,onKeyup:E},[(0,o.renderSlot)(e.$slots,`trigger`,{},void 0,!0)],34),((0,o.openBlock)(),(0,o.createBlock)(o.Teleport,{to:`body`},[(0,o.createElementVNode)(`div`,{ref:`popover-el`,popover:``,id:c,class:(0,o.normalizeClass)([`dropdown`,(0,o.unref)(n.t)([(0,o.unref)(n.n)(_,(0,o.unref)(d).side),(0,o.unref)(n.n)(g,(0,o.unref)(d).align),(0,o.unref)(f),(0,o.unref)(d).contentClass])]),onMouseenter:C,onMouseleave:w,onBeforetoggle:D},[(0,o.renderSlot)(e.$slots,`default`,{},void 0,!0)],34)]))],16))}}),y=i.t(v,[[`__scopeId`,`data-v-64ff22da`]]),b=e.t(`fab`),x={key:0,class:`fab-close`},S={key:1,class:`fab-main-action`},C={flower:`fab-flower`},w=(0,o.defineComponent)({__name:`Fab`,props:{mode:{}},setup(e){let r=t.n(b,e);return(e,t)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{class:(0,o.normalizeClass)([`fab`,(0,o.unref)(n.n)(C,(0,o.unref)(r).mode)])},[e.$slots.close?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,x,[(0,o.renderSlot)(e.$slots,`close`)])):(0,o.createCommentVNode)(``,!0),e.$slots.mainAction?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,S,[(0,o.renderSlot)(e.$slots,`main-action`)])):(0,o.createCommentVNode)(``,!0),(0,o.renderSlot)(e.$slots,`default`)],2))}}),T=e.t(`modal`),E={key:0,class:`modal-box`},D={key:0,class:`modal-action`},O={key:1,method:`dialog`,class:`modal-backdrop`},k={top:`modal-top`,middle:`modal-middle`,bottom:`modal-bottom`,start:`modal-start`,end:`modal-end`},A=(0,o.defineComponent)({__name:`Modal`,props:(0,o.mergeModels)({placement:{},closeOnBackdrop:{type:[Boolean,String]},loadContentWhenClose:{type:[Boolean,String]}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:(0,o.mergeModels)([`close`],[`update:modelValue`]),setup(e,{expose:n,emit:i}){let a=(0,o.useTemplateRef)(`dialog-el`),s=(0,o.useModel)(e,`modelValue`),c=t.n(T,e,{placement:void 0,closeOnBackdrop:!1,loadContentWhenClose:!1}),l=i,u=(0,o.shallowRef)(!1);(0,o.watch)(s,e=>{e&&(u.value=!0)});let d=(0,o.computed)(()=>r.t(c.value.loadContentWhenClose)?!0:s.value||u.value);(0,o.watch)(s,e=>{a.value&&(e?a.value.showModal():a.value.close())},{immediate:!0});function f(){s.value=!0}function p(){s.value=!1}function m(){s.value=!1,l(`close`)}return n({present:f,dismiss:p}),(e,t)=>((0,o.openBlock)(),(0,o.createElementBlock)(`dialog`,{ref:`dialog-el`,class:(0,o.normalizeClass)([`modal`,[(0,o.unref)(c).placement&&k[(0,o.unref)(c).placement]]]),onClose:m},[d.value?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,E,[(0,o.renderSlot)(e.$slots,`default`),e.$slots.actions?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,D,[(0,o.renderSlot)(e.$slots,`actions`)])):(0,o.createCommentVNode)(``,!0)])):(0,o.createCommentVNode)(``,!0),(0,o.unref)(r.t)((0,o.unref)(c).closeOnBackdrop)?(0,o.createCommentVNode)(``,!0):((0,o.openBlock)(),(0,o.createElementBlock)(`form`,O,[...t[0]||=[(0,o.createElementVNode)(`button`,null,`close`,-1)]]))],34))}}),j=e.t(`swap`),M=[`onKeydown`],N={flip:`swap-flip`,rotate:`swap-rotate`},P=(0,o.defineComponent)({__name:`Swap`,props:(0,o.mergeModels)({indeterminate:{type:[Boolean,String]},variant:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let i=(0,o.useModel)(e,`modelValue`),s=e,c=t.n(j,s,{});function l(){r.t(s.indeterminate)||(i.value=!i.value)}return(t,s)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{class:(0,o.normalizeClass)([`swap`,[(0,o.unref)(n.n)(N,(0,o.unref)(c).variant),(0,o.unref)(r.t)(e.indeterminate)?`swap-indeterminate`:i.value&&`swap-active`]]),role:`button`,tabindex:`0`,onClick:l,onKeydown:(0,o.withKeys)((0,o.withModifiers)(l,[`prevent`]),[`enter`,`space`])},[(0,o.unref)(r.t)(e.indeterminate)&&t.$slots.indeterminate?(0,o.renderSlot)(t.$slots,`indeterminate`,{key:0}):((0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,{key:1},[(0,o.createVNode)(a.t,{class:`swap-on`},{default:(0,o.withCtx)(()=>[(0,o.renderSlot)(t.$slots,`on`)]),_:3}),(0,o.createVNode)(a.t,{class:`swap-off`},{default:(0,o.withCtx)(()=>[(0,o.renderSlot)(t.$slots,`off`)]),_:3})],64))],42,M))}});exports.Button=m,exports.Dropdown=y,exports.Fab=w,exports.Modal=A,exports.Swap=P;
|
|
2
2
|
//# sourceMappingURL=public.umd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.umd.js","names":["$emit","$slots","$slots","$slots"],"sources":["../../../src/components/actions/button/button.context.ts","../../../src/components/actions/button/Button.vue","../../../src/components/actions/button/Button.vue","../../../src/components/actions/dropdown/dropdown.context.ts","../../../src/components/actions/dropdown/Dropdown.vue","../../../src/components/actions/dropdown/Dropdown.vue","../../../src/components/actions/fab/fab.context.ts","../../../src/components/actions/fab/Fab.vue","../../../src/components/actions/fab/Fab.vue","../../../src/components/actions/modal/modal.context.ts","../../../src/components/actions/modal/Modal.vue","../../../src/components/actions/modal/Modal.vue","../../../src/components/actions/swap/swap.context.ts","../../../src/components/actions/swap/Swap.vue","../../../src/components/actions/swap/Swap.vue"],"sourcesContent":["import { createComponentConfigKey } from '@/symbol'\n\nexport const BUTTON_CONFIG = createComponentConfigKey('button')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, useAttrs } from 'vue'\nimport { RouterLink } from 'vue-router'\nimport { BUTTON_CONFIG } from './button.context'\nimport type { ButtonProps } from './button.props'\nimport type { ButtonBehavior, ButtonColor, ButtonShape, ButtonSize, ButtonVariant } from './button.types'\n\nconst colors: ComponentClass<'btn', ButtonColor> = {\n neutral: 'btn-neutral',\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n accent: 'btn-accent',\n info: 'btn-info',\n success: 'btn-success',\n warning: 'btn-warning',\n error: 'btn-error',\n}\nconst variants: ComponentClass<'btn', ButtonVariant> = {\n solid: 'btn-solid',\n outline: 'btn-outline',\n dash: 'btn-dash',\n soft: 'btn-soft',\n ghost: 'btn-ghost',\n link: 'btn-link',\n}\nconst sizes: ComponentClass<'btn', ButtonSize> = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: 'btn-md',\n lg: 'btn-lg',\n xl: 'btn-xl',\n}\nconst shapes: ComponentClass<'btn', ButtonShape> = {\n wide: 'btn-wide',\n block: 'btn-block',\n square: 'btn-square',\n circle: 'btn-circle',\n}\nconst behaviors: ComponentClass<'btn', ButtonBehavior> = {\n active: 'btn-active',\n disabled: 'btn-disabled',\n}\n</script>\n\n<script setup lang=\"ts\">\ndefineEmits<{\n click: [event: MouseEvent]\n}>()\n\nconst props = defineProps<ButtonProps>()\nconst config = useComponentConfig(BUTTON_CONFIG, props, {\n type: 'button'\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\nconst tag = computed(() => {\n return props.to ? RouterLink : 'button'\n})\n\nconst extraClasses = computed(() => {\n return props.disabled ? behaviors.disabled : ''\n})\n\nconst disabledAttrs = computed(() =>\n props.behavior === 'disabled' || isTrue(props.disabled)\n ? {\n disabled: true,\n 'aria-disabled': true,\n tabIndex: -1,\n }\n : {},\n)\n</script>\n\n<template>\n <component\n :is=\"tag\"\n :type=\"config.type\"\n class=\"btn\"\n :class=\"clsx([\n getClass(colors, config.color),\n getClass(variants, config.variant),\n getClass(sizes, config.size),\n getClass(shapes, config.shape),\n getClass(behaviors, config.behavior),\n extraClasses,\n classAttr,\n ])\"\n v-bind=\"{...attrs, ...disabledAttrs}\"\n :to=\"config.to\"\n @click=\"$emit('click', $event)\"\n >\n <slot v-if=\"isTrue(config.loading)\" name=\"loading\">\n <span class=\"loading loading-spinner\"></span>\n </slot>\n <slot></slot>\n </component>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, useAttrs } from 'vue'\nimport { RouterLink } from 'vue-router'\nimport { BUTTON_CONFIG } from './button.context'\nimport type { ButtonProps } from './button.props'\nimport type { ButtonBehavior, ButtonColor, ButtonShape, ButtonSize, ButtonVariant } from './button.types'\n\nconst colors: ComponentClass<'btn', ButtonColor> = {\n neutral: 'btn-neutral',\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n accent: 'btn-accent',\n info: 'btn-info',\n success: 'btn-success',\n warning: 'btn-warning',\n error: 'btn-error',\n}\nconst variants: ComponentClass<'btn', ButtonVariant> = {\n solid: 'btn-solid',\n outline: 'btn-outline',\n dash: 'btn-dash',\n soft: 'btn-soft',\n ghost: 'btn-ghost',\n link: 'btn-link',\n}\nconst sizes: ComponentClass<'btn', ButtonSize> = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: 'btn-md',\n lg: 'btn-lg',\n xl: 'btn-xl',\n}\nconst shapes: ComponentClass<'btn', ButtonShape> = {\n wide: 'btn-wide',\n block: 'btn-block',\n square: 'btn-square',\n circle: 'btn-circle',\n}\nconst behaviors: ComponentClass<'btn', ButtonBehavior> = {\n active: 'btn-active',\n disabled: 'btn-disabled',\n}\n</script>\n\n<script setup lang=\"ts\">\ndefineEmits<{\n click: [event: MouseEvent]\n}>()\n\nconst props = defineProps<ButtonProps>()\nconst config = useComponentConfig(BUTTON_CONFIG, props, {\n type: 'button'\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\nconst tag = computed(() => {\n return props.to ? RouterLink : 'button'\n})\n\nconst extraClasses = computed(() => {\n return props.disabled ? behaviors.disabled : ''\n})\n\nconst disabledAttrs = computed(() =>\n props.behavior === 'disabled' || isTrue(props.disabled)\n ? {\n disabled: true,\n 'aria-disabled': true,\n tabIndex: -1,\n }\n : {},\n)\n</script>\n\n<template>\n <component\n :is=\"tag\"\n :type=\"config.type\"\n class=\"btn\"\n :class=\"clsx([\n getClass(colors, config.color),\n getClass(variants, config.variant),\n getClass(sizes, config.size),\n getClass(shapes, config.shape),\n getClass(behaviors, config.behavior),\n extraClasses,\n classAttr,\n ])\"\n v-bind=\"{...attrs, ...disabledAttrs}\"\n :to=\"config.to\"\n @click=\"$emit('click', $event)\"\n >\n <slot v-if=\"isTrue(config.loading)\" name=\"loading\">\n <span class=\"loading loading-spinner\"></span>\n </slot>\n <slot></slot>\n </component>\n</template>","import { createComponentConfigKey } from '@/symbol'\n\nexport const DROPDOWN_CONFIG = createComponentConfigKey('dropdown')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { useAttrs, useId, useTemplateRef } from 'vue'\nimport { DROPDOWN_CONFIG } from './dropdown.context'\nimport type { DropdownProps } from './dropdown.props'\nimport type { DropdownAlign, DropdownSide, DropdownTriggerAction } from './dropdown.types'\n\nconst dropdownAlign: ComponentClass<'dropdown', DropdownAlign> = {\n center: 'dropdown-center',\n end: 'dropdown-end',\n start: 'dropdown-start',\n}\nconst dropdownSide: ComponentClass<'dropdown', DropdownSide> = {\n bottom: 'dropdown-bottom',\n top: 'dropdown-top',\n left: 'dropdown-left',\n right: 'dropdown-right',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst popoverRef = useTemplateRef('popover-el')\n\nconst id = useId()\nconst dropdownId = `dropdown-${id}`\nconst anchorName = `--anchor-${id}`\n\nconst emit = defineEmits<{\n show: []\n hide: []\n}>()\n\nconst props = defineProps<DropdownProps>()\nconst config = useComponentConfig(DROPDOWN_CONFIG, props, {\n align: 'start',\n side: 'bottom',\n triggerAction: 'click',\n open: false,\n debounce: 500,\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\n// ── Popover helpers ──────────────────────────────────────────────────────────\n\nfunction show() {\n popoverRef.value?.showPopover()\n}\n\nfunction hide() {\n popoverRef.value?.hidePopover()\n}\n\nfunction toggle() {\n const el = popoverRef.value\n if (!el) {\n return\n }\n\n const isOpen = el.matches(':popover-open')\n isOpen ? hide() : show()\n}\n\n// ── Trigger with ─────────────────────────────────────────────────────────────\n\nlet triggeredWith: DropdownTriggerAction | undefined;\n\n// ── Click ────────────────────────────────────────────────────────────────────\n\nfunction onTriggerClick() {\n // Early return if the \"triggerAction\" is not click or hover\n if (config.value.triggerAction !== 'click' && config.value.triggerAction !== 'hover') {\n return;\n }\n\n // Special case:\n // The dropdown has been triggered by a click to stay open in \"hover\" mode\n // Since the dropdown is open we need to close it if the user click on the dropdown \"trigger\"\n if (triggeredWith === 'click' && config.value.triggerAction === 'hover') {\n hide();\n return;\n }\n\n // Special case:\n // If the dropdown trigger action is hover\n // We want to indicate that the dropdown has been triggered with \"click\" too\n // it prevent to close the dropdown from the \"debounce\" timer\n if (config.value.triggerAction === 'hover') {\n triggeredWith = 'click';\n show()\n return;\n }\n\n // Handle the default case\n triggeredWith = 'click';\n toggle();\n}\n\n// ── Hover debounce ───────────────────────────────────────────────────────────\n\nlet debounceTimer: ReturnType<typeof setTimeout> | undefined;\n\nfunction onHover() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n triggeredWith = 'hover';\n clearTimeout(debounceTimer);\n show();\n}\n\nfunction onBlur() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(() => {\n if (triggeredWith === 'hover') {\n hide();\n }\n }, config.value.debounce);\n}\n\n// ── Context menu ─────────────────────────────────────────────────────────────\n\nfunction onContextMenu(ev: MouseEvent) {\n if (config.value.triggerAction !== 'context-menu') {\n return;\n }\n\n ev.preventDefault();\n triggeredWith = 'context-menu';\n toggle();\n}\n\n// ── Keyboard ─────────────────────────────────────────────────────────────────\n\nfunction onKeyUp(ev: KeyboardEvent) {\n if (!['Enter', ' ', 'Escape'].includes(ev.key)) {\n return;\n }\n\n ev.preventDefault();\n\n if (ev.key === 'Escape') {\n hide();\n } else {\n toggle();\n }\n}\n\n// ── beforetoggle ─────────────────────────────────────────────────────────────\n\nfunction onBeforeToggle(ev: ToggleEvent) {\n if (ev.newState === 'open') {\n emit('show');\n } else {\n emit('hide');\n\n }\n}\n\ndefineExpose({\n show,\n hide,\n toggle,\n $ref: popoverRef,\n});\n</script>\n\n<template>\n <div v-bind=\"attrs\">\n <button\n class=\"dropdown-trigger\"\n :class=\"config.triggerClass\"\n @click=\"onTriggerClick\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @contextmenu=\"onContextMenu\"\n @keyup=\"onKeyUp\"\n >\n <slot name=\"trigger\" />\n </button>\n\n <Teleport to=\"body\">\n <div\n ref=\"popover-el\"\n popover\n :id=\"dropdownId\"\n class=\"dropdown\"\n :class=\"clsx([\n getClass(dropdownSide, config.side),\n getClass(dropdownAlign, config.align),\n classAttr,\n config.contentClass,\n ])\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @beforetoggle=\"onBeforeToggle\"\n >\n <slot></slot>\n </div>\n </Teleport>\n </div>\n</template>\n\n<style scoped>\n.dropdown-trigger {\n anchor-name: v-bind(anchorName);\n}\n\n.dropdown {\n position-anchor: v-bind(anchorName);\n}\n</style>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { useAttrs, useId, useTemplateRef } from 'vue'\nimport { DROPDOWN_CONFIG } from './dropdown.context'\nimport type { DropdownProps } from './dropdown.props'\nimport type { DropdownAlign, DropdownSide, DropdownTriggerAction } from './dropdown.types'\n\nconst dropdownAlign: ComponentClass<'dropdown', DropdownAlign> = {\n center: 'dropdown-center',\n end: 'dropdown-end',\n start: 'dropdown-start',\n}\nconst dropdownSide: ComponentClass<'dropdown', DropdownSide> = {\n bottom: 'dropdown-bottom',\n top: 'dropdown-top',\n left: 'dropdown-left',\n right: 'dropdown-right',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst popoverRef = useTemplateRef('popover-el')\n\nconst id = useId()\nconst dropdownId = `dropdown-${id}`\nconst anchorName = `--anchor-${id}`\n\nconst emit = defineEmits<{\n show: []\n hide: []\n}>()\n\nconst props = defineProps<DropdownProps>()\nconst config = useComponentConfig(DROPDOWN_CONFIG, props, {\n align: 'start',\n side: 'bottom',\n triggerAction: 'click',\n open: false,\n debounce: 500,\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\n// ── Popover helpers ──────────────────────────────────────────────────────────\n\nfunction show() {\n popoverRef.value?.showPopover()\n}\n\nfunction hide() {\n popoverRef.value?.hidePopover()\n}\n\nfunction toggle() {\n const el = popoverRef.value\n if (!el) {\n return\n }\n\n const isOpen = el.matches(':popover-open')\n isOpen ? hide() : show()\n}\n\n// ── Trigger with ─────────────────────────────────────────────────────────────\n\nlet triggeredWith: DropdownTriggerAction | undefined;\n\n// ── Click ────────────────────────────────────────────────────────────────────\n\nfunction onTriggerClick() {\n // Early return if the \"triggerAction\" is not click or hover\n if (config.value.triggerAction !== 'click' && config.value.triggerAction !== 'hover') {\n return;\n }\n\n // Special case:\n // The dropdown has been triggered by a click to stay open in \"hover\" mode\n // Since the dropdown is open we need to close it if the user click on the dropdown \"trigger\"\n if (triggeredWith === 'click' && config.value.triggerAction === 'hover') {\n hide();\n return;\n }\n\n // Special case:\n // If the dropdown trigger action is hover\n // We want to indicate that the dropdown has been triggered with \"click\" too\n // it prevent to close the dropdown from the \"debounce\" timer\n if (config.value.triggerAction === 'hover') {\n triggeredWith = 'click';\n show()\n return;\n }\n\n // Handle the default case\n triggeredWith = 'click';\n toggle();\n}\n\n// ── Hover debounce ───────────────────────────────────────────────────────────\n\nlet debounceTimer: ReturnType<typeof setTimeout> | undefined;\n\nfunction onHover() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n triggeredWith = 'hover';\n clearTimeout(debounceTimer);\n show();\n}\n\nfunction onBlur() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(() => {\n if (triggeredWith === 'hover') {\n hide();\n }\n }, config.value.debounce);\n}\n\n// ── Context menu ─────────────────────────────────────────────────────────────\n\nfunction onContextMenu(ev: MouseEvent) {\n if (config.value.triggerAction !== 'context-menu') {\n return;\n }\n\n ev.preventDefault();\n triggeredWith = 'context-menu';\n toggle();\n}\n\n// ── Keyboard ─────────────────────────────────────────────────────────────────\n\nfunction onKeyUp(ev: KeyboardEvent) {\n if (!['Enter', ' ', 'Escape'].includes(ev.key)) {\n return;\n }\n\n ev.preventDefault();\n\n if (ev.key === 'Escape') {\n hide();\n } else {\n toggle();\n }\n}\n\n// ── beforetoggle ─────────────────────────────────────────────────────────────\n\nfunction onBeforeToggle(ev: ToggleEvent) {\n if (ev.newState === 'open') {\n emit('show');\n } else {\n emit('hide');\n\n }\n}\n\ndefineExpose({\n show,\n hide,\n toggle,\n $ref: popoverRef,\n});\n</script>\n\n<template>\n <div v-bind=\"attrs\">\n <button\n class=\"dropdown-trigger\"\n :class=\"config.triggerClass\"\n @click=\"onTriggerClick\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @contextmenu=\"onContextMenu\"\n @keyup=\"onKeyUp\"\n >\n <slot name=\"trigger\" />\n </button>\n\n <Teleport to=\"body\">\n <div\n ref=\"popover-el\"\n popover\n :id=\"dropdownId\"\n class=\"dropdown\"\n :class=\"clsx([\n getClass(dropdownSide, config.side),\n getClass(dropdownAlign, config.align),\n classAttr,\n config.contentClass,\n ])\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @beforetoggle=\"onBeforeToggle\"\n >\n <slot></slot>\n </div>\n </Teleport>\n </div>\n</template>\n\n<style scoped>\n.dropdown-trigger {\n anchor-name: v-bind(anchorName);\n}\n\n.dropdown {\n position-anchor: v-bind(anchorName);\n}\n</style>","import { createComponentConfigKey } from '@/symbol'\n\nexport const FAB_CONFIG = createComponentConfigKey('fab')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { FAB_CONFIG } from './fab.context'\nimport type { FabProps } from './fab.props'\nimport type { FabMode } from './fab.types'\n\nconst fabModes: ComponentClass<'fab', FabMode> = {\n flower: 'fab-flower',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<FabProps>()\nconst config = useComponentConfig(FAB_CONFIG, props)\n</script>\n\n<template>\n <div\n class=\"fab\"\n :class=\"getClass(fabModes, config.mode)\"\n >\n <div v-if=\"$slots.close\" class=\"fab-close\">\n <slot name=\"close\"></slot>\n </div>\n <div v-if=\"$slots.mainAction\" class=\"fab-main-action\">\n <slot name=\"main-action\"></slot>\n </div>\n\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { FAB_CONFIG } from './fab.context'\nimport type { FabProps } from './fab.props'\nimport type { FabMode } from './fab.types'\n\nconst fabModes: ComponentClass<'fab', FabMode> = {\n flower: 'fab-flower',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<FabProps>()\nconst config = useComponentConfig(FAB_CONFIG, props)\n</script>\n\n<template>\n <div\n class=\"fab\"\n :class=\"getClass(fabModes, config.mode)\"\n >\n <div v-if=\"$slots.close\" class=\"fab-close\">\n <slot name=\"close\"></slot>\n </div>\n <div v-if=\"$slots.mainAction\" class=\"fab-main-action\">\n <slot name=\"main-action\"></slot>\n </div>\n\n <slot />\n </div>\n</template>\n","import { createComponentConfigKey } from '@/symbol'\n\nexport const MODAL_CONFIG = createComponentConfigKey('modal')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, shallowRef, useTemplateRef, watch } from 'vue'\nimport { MODAL_CONFIG } from './modal.context'\nimport type { ModalProps } from './modal.props'\nimport type { ModalPlacement } from './modal.types'\n\nconst modalPlacements: Record<ModalPlacement, `modal-${ModalPlacement}`> = {\n top: 'modal-top',\n middle: 'modal-middle',\n bottom: 'modal-bottom',\n start: 'modal-start',\n end: 'modal-end',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst dialogEl = useTemplateRef('dialog-el')\n\n/**\n * Controls the open state of the modal.\n * Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst open = defineModel<boolean>({ default: false })\n\nconst props = defineProps<ModalProps>()\nconst config = useComponentConfig(MODAL_CONFIG, props, {\n placement: undefined,\n closeOnBackdrop: false,\n loadContentWhenClose: false,\n})\n\nconst emit = defineEmits<{\n close: []\n}>()\n\nconst hasBeenOpened = shallowRef(false)\n\nwatch(open, isOpen => {\n if (isOpen) {\n hasBeenOpened.value = true\n }\n})\n\nconst shouldRenderContent = computed(() => {\n if (isTrue(config.value.loadContentWhenClose)) {\n return true\n }\n return open.value || hasBeenOpened.value\n})\n\nwatch(open, isOpen => {\n if (!dialogEl.value) {\n return\n }\n\n if (isOpen) {\n dialogEl.value.showModal()\n } else {\n dialogEl.value.close()\n }\n}, { immediate: true })\n\nfunction present() {\n open.value = true\n}\n\nfunction dismiss() {\n open.value = false\n}\n\nfunction onClose() {\n open.value = false\n emit('close')\n}\n\ndefineExpose({\n present, \n dismiss,\n})\n</script>\n\n<template>\n <dialog\n ref=\"dialog-el\"\n class=\"modal\"\n :class=\"[config.placement && modalPlacements[config.placement]]\"\n @close=\"onClose\"\n >\n <div v-if=\"shouldRenderContent\" class=\"modal-box\">\n <slot></slot>\n <div v-if=\"$slots.actions\" class=\"modal-action\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n\n <form v-if=\"!isTrue(config.closeOnBackdrop)\" method=\"dialog\" class=\"modal-backdrop\">\n <button>close</button>\n </form>\n </dialog>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, shallowRef, useTemplateRef, watch } from 'vue'\nimport { MODAL_CONFIG } from './modal.context'\nimport type { ModalProps } from './modal.props'\nimport type { ModalPlacement } from './modal.types'\n\nconst modalPlacements: Record<ModalPlacement, `modal-${ModalPlacement}`> = {\n top: 'modal-top',\n middle: 'modal-middle',\n bottom: 'modal-bottom',\n start: 'modal-start',\n end: 'modal-end',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst dialogEl = useTemplateRef('dialog-el')\n\n/**\n * Controls the open state of the modal.\n * Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst open = defineModel<boolean>({ default: false })\n\nconst props = defineProps<ModalProps>()\nconst config = useComponentConfig(MODAL_CONFIG, props, {\n placement: undefined,\n closeOnBackdrop: false,\n loadContentWhenClose: false,\n})\n\nconst emit = defineEmits<{\n close: []\n}>()\n\nconst hasBeenOpened = shallowRef(false)\n\nwatch(open, isOpen => {\n if (isOpen) {\n hasBeenOpened.value = true\n }\n})\n\nconst shouldRenderContent = computed(() => {\n if (isTrue(config.value.loadContentWhenClose)) {\n return true\n }\n return open.value || hasBeenOpened.value\n})\n\nwatch(open, isOpen => {\n if (!dialogEl.value) {\n return\n }\n\n if (isOpen) {\n dialogEl.value.showModal()\n } else {\n dialogEl.value.close()\n }\n}, { immediate: true })\n\nfunction present() {\n open.value = true\n}\n\nfunction dismiss() {\n open.value = false\n}\n\nfunction onClose() {\n open.value = false\n emit('close')\n}\n\ndefineExpose({\n present, \n dismiss,\n})\n</script>\n\n<template>\n <dialog\n ref=\"dialog-el\"\n class=\"modal\"\n :class=\"[config.placement && modalPlacements[config.placement]]\"\n @close=\"onClose\"\n >\n <div v-if=\"shouldRenderContent\" class=\"modal-box\">\n <slot></slot>\n <div v-if=\"$slots.actions\" class=\"modal-action\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n\n <form v-if=\"!isTrue(config.closeOnBackdrop)\" method=\"dialog\" class=\"modal-backdrop\">\n <button>close</button>\n </form>\n </dialog>\n</template>","import { createComponentConfigKey } from '@/symbol'\n\nexport const SWAP_CONFIG = createComponentConfigKey('swap')\n","<script lang=\"ts\">\nimport ClassWrapper from '@/components/ClassWrapper.vue'\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { SWAP_CONFIG } from './swap.context'\nimport type { SwapProps } from './swap.props'\nimport type { SwapVariant } from './swap.types'\n\nconst swapVariants: ComponentClass<'swap', SwapVariant> = {\n flip: 'swap-flip',\n rotate: 'swap-rotate',\n}\n</script>\n\n<script setup lang=\"ts\">\n/**\n * Controls which slot is visible.\n * When `true`, the `on` slot is shown. Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst model = defineModel<boolean>({ default: false })\n\nconst props = defineProps<SwapProps>()\nconst config = useComponentConfig(SWAP_CONFIG, props, {})\n\nfunction toggle() {\n if (!isTrue(props.indeterminate)) {\n model.value = !model.value\n }\n}\n</script>\n\n<template>\n <div\n class=\"swap\"\n :class=\"[\n getClass(swapVariants, config.variant),\n isTrue(indeterminate) ? 'swap-indeterminate' : model && 'swap-active',\n ]\"\n role=\"button\"\n tabindex=\"0\"\n @click=\"toggle\"\n @keydown.enter.space.prevent=\"toggle\"\n >\n <template v-if=\"isTrue(indeterminate) && $slots.indeterminate\">\n <slot name=\"indeterminate\"></slot>\n </template>\n <template v-else>\n <ClassWrapper class=\"swap-on\">\n <slot name=\"on\"></slot>\n </ClassWrapper>\n <ClassWrapper class=\"swap-off\">\n <slot name=\"off\"></slot>\n </ClassWrapper>\n </template>\n </div>\n</template>","<script lang=\"ts\">\nimport ClassWrapper from '@/components/ClassWrapper.vue'\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { SWAP_CONFIG } from './swap.context'\nimport type { SwapProps } from './swap.props'\nimport type { SwapVariant } from './swap.types'\n\nconst swapVariants: ComponentClass<'swap', SwapVariant> = {\n flip: 'swap-flip',\n rotate: 'swap-rotate',\n}\n</script>\n\n<script setup lang=\"ts\">\n/**\n * Controls which slot is visible.\n * When `true`, the `on` slot is shown. Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst model = defineModel<boolean>({ default: false })\n\nconst props = defineProps<SwapProps>()\nconst config = useComponentConfig(SWAP_CONFIG, props, {})\n\nfunction toggle() {\n if (!isTrue(props.indeterminate)) {\n model.value = !model.value\n }\n}\n</script>\n\n<template>\n <div\n class=\"swap\"\n :class=\"[\n getClass(swapVariants, config.variant),\n isTrue(indeterminate) ? 'swap-indeterminate' : model && 'swap-active',\n ]\"\n role=\"button\"\n tabindex=\"0\"\n @click=\"toggle\"\n @keydown.enter.space.prevent=\"toggle\"\n >\n <template v-if=\"isTrue(indeterminate) && $slots.indeterminate\">\n <slot name=\"indeterminate\"></slot>\n </template>\n <template v-else>\n <ClassWrapper class=\"swap-on\">\n <slot name=\"on\"></slot>\n </ClassWrapper>\n <ClassWrapper class=\"swap-off\">\n <slot name=\"off\"></slot>\n </ClassWrapper>\n </template>\n </div>\n</template>"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"public.umd.js","names":["$emit","$slots","$slots","$slots"],"sources":["../../../src/components/actions/button/button.context.ts","../../../src/components/actions/button/Button.vue","../../../src/components/actions/button/Button.vue","../../../src/components/actions/dropdown/dropdown.context.ts","../../../src/components/actions/dropdown/Dropdown.vue","../../../src/components/actions/dropdown/Dropdown.vue","../../../src/components/actions/fab/fab.context.ts","../../../src/components/actions/fab/Fab.vue","../../../src/components/actions/fab/Fab.vue","../../../src/components/actions/modal/modal.context.ts","../../../src/components/actions/modal/Modal.vue","../../../src/components/actions/modal/Modal.vue","../../../src/components/actions/swap/swap.context.ts","../../../src/components/actions/swap/Swap.vue","../../../src/components/actions/swap/Swap.vue"],"sourcesContent":["import { createComponentConfigKey } from '@/config/symbol'\n\nexport const BUTTON_CONFIG = createComponentConfigKey('button')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, useAttrs } from 'vue'\nimport { RouterLink } from 'vue-router'\nimport { BUTTON_CONFIG } from './button.context'\nimport type { ButtonProps } from './button.props'\nimport type { ButtonBehavior, ButtonColor, ButtonShape, ButtonSize, ButtonVariant } from './button.types'\n\nconst colors: ComponentClass<'btn', ButtonColor> = {\n neutral: 'btn-neutral',\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n accent: 'btn-accent',\n info: 'btn-info',\n success: 'btn-success',\n warning: 'btn-warning',\n error: 'btn-error',\n}\nconst variants: ComponentClass<'btn', ButtonVariant> = {\n solid: 'btn-solid',\n outline: 'btn-outline',\n dash: 'btn-dash',\n soft: 'btn-soft',\n ghost: 'btn-ghost',\n link: 'btn-link',\n}\nconst sizes: ComponentClass<'btn', ButtonSize> = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: 'btn-md',\n lg: 'btn-lg',\n xl: 'btn-xl',\n}\nconst shapes: ComponentClass<'btn', ButtonShape> = {\n wide: 'btn-wide',\n block: 'btn-block',\n square: 'btn-square',\n circle: 'btn-circle',\n}\nconst behaviors: ComponentClass<'btn', ButtonBehavior> = {\n active: 'btn-active',\n disabled: 'btn-disabled',\n}\n</script>\n\n<script setup lang=\"ts\">\ndefineEmits<{\n click: [event: MouseEvent]\n}>()\n\nconst props = defineProps<ButtonProps>()\nconst config = useComponentConfig(BUTTON_CONFIG, props, {\n type: 'button'\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\nconst tag = computed(() => {\n return props.to ? RouterLink : 'button'\n})\n\nconst extraClasses = computed(() => {\n return props.disabled ? behaviors.disabled : ''\n})\n\nconst disabledAttrs = computed(() =>\n props.behavior === 'disabled' || isTrue(props.disabled)\n ? {\n disabled: true,\n 'aria-disabled': true,\n tabIndex: -1,\n }\n : {},\n)\n</script>\n\n<template>\n <component\n :is=\"tag\"\n :type=\"config.type\"\n class=\"btn\"\n :class=\"clsx([\n getClass(colors, config.color),\n getClass(variants, config.variant),\n getClass(sizes, config.size),\n getClass(shapes, config.shape),\n getClass(behaviors, config.behavior),\n extraClasses,\n classAttr,\n ])\"\n v-bind=\"{...attrs, ...disabledAttrs}\"\n :to=\"config.to\"\n @click=\"$emit('click', $event)\"\n >\n <slot v-if=\"isTrue(config.loading)\" name=\"loading\">\n <span class=\"loading loading-spinner\"></span>\n </slot>\n <slot></slot>\n </component>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, useAttrs } from 'vue'\nimport { RouterLink } from 'vue-router'\nimport { BUTTON_CONFIG } from './button.context'\nimport type { ButtonProps } from './button.props'\nimport type { ButtonBehavior, ButtonColor, ButtonShape, ButtonSize, ButtonVariant } from './button.types'\n\nconst colors: ComponentClass<'btn', ButtonColor> = {\n neutral: 'btn-neutral',\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n accent: 'btn-accent',\n info: 'btn-info',\n success: 'btn-success',\n warning: 'btn-warning',\n error: 'btn-error',\n}\nconst variants: ComponentClass<'btn', ButtonVariant> = {\n solid: 'btn-solid',\n outline: 'btn-outline',\n dash: 'btn-dash',\n soft: 'btn-soft',\n ghost: 'btn-ghost',\n link: 'btn-link',\n}\nconst sizes: ComponentClass<'btn', ButtonSize> = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: 'btn-md',\n lg: 'btn-lg',\n xl: 'btn-xl',\n}\nconst shapes: ComponentClass<'btn', ButtonShape> = {\n wide: 'btn-wide',\n block: 'btn-block',\n square: 'btn-square',\n circle: 'btn-circle',\n}\nconst behaviors: ComponentClass<'btn', ButtonBehavior> = {\n active: 'btn-active',\n disabled: 'btn-disabled',\n}\n</script>\n\n<script setup lang=\"ts\">\ndefineEmits<{\n click: [event: MouseEvent]\n}>()\n\nconst props = defineProps<ButtonProps>()\nconst config = useComponentConfig(BUTTON_CONFIG, props, {\n type: 'button'\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\nconst tag = computed(() => {\n return props.to ? RouterLink : 'button'\n})\n\nconst extraClasses = computed(() => {\n return props.disabled ? behaviors.disabled : ''\n})\n\nconst disabledAttrs = computed(() =>\n props.behavior === 'disabled' || isTrue(props.disabled)\n ? {\n disabled: true,\n 'aria-disabled': true,\n tabIndex: -1,\n }\n : {},\n)\n</script>\n\n<template>\n <component\n :is=\"tag\"\n :type=\"config.type\"\n class=\"btn\"\n :class=\"clsx([\n getClass(colors, config.color),\n getClass(variants, config.variant),\n getClass(sizes, config.size),\n getClass(shapes, config.shape),\n getClass(behaviors, config.behavior),\n extraClasses,\n classAttr,\n ])\"\n v-bind=\"{...attrs, ...disabledAttrs}\"\n :to=\"config.to\"\n @click=\"$emit('click', $event)\"\n >\n <slot v-if=\"isTrue(config.loading)\" name=\"loading\">\n <span class=\"loading loading-spinner\"></span>\n </slot>\n <slot></slot>\n </component>\n</template>","import { createComponentConfigKey } from '@/config/symbol'\n\nexport const DROPDOWN_CONFIG = createComponentConfigKey('dropdown')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { useAttrs, useId, useTemplateRef } from 'vue'\nimport { DROPDOWN_CONFIG } from './dropdown.context'\nimport type { DropdownProps } from './dropdown.props'\nimport type { DropdownAlign, DropdownSide, DropdownTriggerAction } from './dropdown.types'\n\nconst dropdownAlign: ComponentClass<'dropdown', DropdownAlign> = {\n center: 'dropdown-center',\n end: 'dropdown-end',\n start: 'dropdown-start',\n}\nconst dropdownSide: ComponentClass<'dropdown', DropdownSide> = {\n bottom: 'dropdown-bottom',\n top: 'dropdown-top',\n left: 'dropdown-left',\n right: 'dropdown-right',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst popoverRef = useTemplateRef('popover-el')\n\nconst id = useId()\nconst dropdownId = `dropdown-${id}`\nconst anchorName = `--anchor-${id}`\n\nconst emit = defineEmits<{\n show: []\n hide: []\n}>()\n\nconst props = defineProps<DropdownProps>()\nconst config = useComponentConfig(DROPDOWN_CONFIG, props, {\n align: 'start',\n side: 'bottom',\n triggerAction: 'click',\n open: false,\n debounce: 500,\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\n// ── Popover helpers ──────────────────────────────────────────────────────────\n\nfunction show() {\n popoverRef.value?.showPopover()\n}\n\nfunction hide() {\n popoverRef.value?.hidePopover()\n}\n\nfunction toggle() {\n const el = popoverRef.value\n if (!el) {\n return\n }\n\n const isOpen = el.matches(':popover-open')\n isOpen ? hide() : show()\n}\n\n// ── Trigger with ─────────────────────────────────────────────────────────────\n\nlet triggeredWith: DropdownTriggerAction | undefined;\n\n// ── Click ────────────────────────────────────────────────────────────────────\n\nfunction onTriggerClick() {\n // Early return if the \"triggerAction\" is not click or hover\n if (config.value.triggerAction !== 'click' && config.value.triggerAction !== 'hover') {\n return;\n }\n\n // Special case:\n // The dropdown has been triggered by a click to stay open in \"hover\" mode\n // Since the dropdown is open we need to close it if the user click on the dropdown \"trigger\"\n if (triggeredWith === 'click' && config.value.triggerAction === 'hover') {\n hide();\n return;\n }\n\n // Special case:\n // If the dropdown trigger action is hover\n // We want to indicate that the dropdown has been triggered with \"click\" too\n // it prevent to close the dropdown from the \"debounce\" timer\n if (config.value.triggerAction === 'hover') {\n triggeredWith = 'click';\n show()\n return;\n }\n\n // Handle the default case\n triggeredWith = 'click';\n toggle();\n}\n\n// ── Hover debounce ───────────────────────────────────────────────────────────\n\nlet debounceTimer: ReturnType<typeof setTimeout> | undefined;\n\nfunction onHover() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n triggeredWith = 'hover';\n clearTimeout(debounceTimer);\n show();\n}\n\nfunction onBlur() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(() => {\n if (triggeredWith === 'hover') {\n hide();\n }\n }, config.value.debounce);\n}\n\n// ── Context menu ─────────────────────────────────────────────────────────────\n\nfunction onContextMenu(ev: MouseEvent) {\n if (config.value.triggerAction !== 'context-menu') {\n return;\n }\n\n ev.preventDefault();\n triggeredWith = 'context-menu';\n toggle();\n}\n\n// ── Keyboard ─────────────────────────────────────────────────────────────────\n\nfunction onKeyUp(ev: KeyboardEvent) {\n if (!['Enter', ' ', 'Escape'].includes(ev.key)) {\n return;\n }\n\n ev.preventDefault();\n\n if (ev.key === 'Escape') {\n hide();\n } else {\n toggle();\n }\n}\n\n// ── beforetoggle ─────────────────────────────────────────────────────────────\n\nfunction onBeforeToggle(ev: ToggleEvent) {\n if (ev.newState === 'open') {\n emit('show');\n } else {\n emit('hide');\n\n }\n}\n\ndefineExpose({\n show,\n hide,\n toggle,\n $ref: popoverRef,\n});\n</script>\n\n<template>\n <div v-bind=\"attrs\">\n <button\n class=\"dropdown-trigger\"\n :class=\"config.triggerClass\"\n @click=\"onTriggerClick\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @contextmenu=\"onContextMenu\"\n @keyup=\"onKeyUp\"\n >\n <slot name=\"trigger\" />\n </button>\n\n <Teleport to=\"body\">\n <div\n ref=\"popover-el\"\n popover\n :id=\"dropdownId\"\n class=\"dropdown\"\n :class=\"clsx([\n getClass(dropdownSide, config.side),\n getClass(dropdownAlign, config.align),\n classAttr,\n config.contentClass,\n ])\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @beforetoggle=\"onBeforeToggle\"\n >\n <slot></slot>\n </div>\n </Teleport>\n </div>\n</template>\n\n<style scoped>\n.dropdown-trigger {\n anchor-name: v-bind(anchorName);\n}\n\n.dropdown {\n position-anchor: v-bind(anchorName);\n}\n</style>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { clsx, getClass } from '@/utils/build-class.util'\nimport { useAttrs, useId, useTemplateRef } from 'vue'\nimport { DROPDOWN_CONFIG } from './dropdown.context'\nimport type { DropdownProps } from './dropdown.props'\nimport type { DropdownAlign, DropdownSide, DropdownTriggerAction } from './dropdown.types'\n\nconst dropdownAlign: ComponentClass<'dropdown', DropdownAlign> = {\n center: 'dropdown-center',\n end: 'dropdown-end',\n start: 'dropdown-start',\n}\nconst dropdownSide: ComponentClass<'dropdown', DropdownSide> = {\n bottom: 'dropdown-bottom',\n top: 'dropdown-top',\n left: 'dropdown-left',\n right: 'dropdown-right',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst popoverRef = useTemplateRef('popover-el')\n\nconst id = useId()\nconst dropdownId = `dropdown-${id}`\nconst anchorName = `--anchor-${id}`\n\nconst emit = defineEmits<{\n show: []\n hide: []\n}>()\n\nconst props = defineProps<DropdownProps>()\nconst config = useComponentConfig(DROPDOWN_CONFIG, props, {\n align: 'start',\n side: 'bottom',\n triggerAction: 'click',\n open: false,\n debounce: 500,\n})\n\nconst { class: classAttr, ...attrs } = useAttrs()\n\n// ── Popover helpers ──────────────────────────────────────────────────────────\n\nfunction show() {\n popoverRef.value?.showPopover()\n}\n\nfunction hide() {\n popoverRef.value?.hidePopover()\n}\n\nfunction toggle() {\n const el = popoverRef.value\n if (!el) {\n return\n }\n\n const isOpen = el.matches(':popover-open')\n isOpen ? hide() : show()\n}\n\n// ── Trigger with ─────────────────────────────────────────────────────────────\n\nlet triggeredWith: DropdownTriggerAction | undefined;\n\n// ── Click ────────────────────────────────────────────────────────────────────\n\nfunction onTriggerClick() {\n // Early return if the \"triggerAction\" is not click or hover\n if (config.value.triggerAction !== 'click' && config.value.triggerAction !== 'hover') {\n return;\n }\n\n // Special case:\n // The dropdown has been triggered by a click to stay open in \"hover\" mode\n // Since the dropdown is open we need to close it if the user click on the dropdown \"trigger\"\n if (triggeredWith === 'click' && config.value.triggerAction === 'hover') {\n hide();\n return;\n }\n\n // Special case:\n // If the dropdown trigger action is hover\n // We want to indicate that the dropdown has been triggered with \"click\" too\n // it prevent to close the dropdown from the \"debounce\" timer\n if (config.value.triggerAction === 'hover') {\n triggeredWith = 'click';\n show()\n return;\n }\n\n // Handle the default case\n triggeredWith = 'click';\n toggle();\n}\n\n// ── Hover debounce ───────────────────────────────────────────────────────────\n\nlet debounceTimer: ReturnType<typeof setTimeout> | undefined;\n\nfunction onHover() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n triggeredWith = 'hover';\n clearTimeout(debounceTimer);\n show();\n}\n\nfunction onBlur() {\n if (config.value.triggerAction !== 'hover') {\n return;\n }\n\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(() => {\n if (triggeredWith === 'hover') {\n hide();\n }\n }, config.value.debounce);\n}\n\n// ── Context menu ─────────────────────────────────────────────────────────────\n\nfunction onContextMenu(ev: MouseEvent) {\n if (config.value.triggerAction !== 'context-menu') {\n return;\n }\n\n ev.preventDefault();\n triggeredWith = 'context-menu';\n toggle();\n}\n\n// ── Keyboard ─────────────────────────────────────────────────────────────────\n\nfunction onKeyUp(ev: KeyboardEvent) {\n if (!['Enter', ' ', 'Escape'].includes(ev.key)) {\n return;\n }\n\n ev.preventDefault();\n\n if (ev.key === 'Escape') {\n hide();\n } else {\n toggle();\n }\n}\n\n// ── beforetoggle ─────────────────────────────────────────────────────────────\n\nfunction onBeforeToggle(ev: ToggleEvent) {\n if (ev.newState === 'open') {\n emit('show');\n } else {\n emit('hide');\n\n }\n}\n\ndefineExpose({\n show,\n hide,\n toggle,\n $ref: popoverRef,\n});\n</script>\n\n<template>\n <div v-bind=\"attrs\">\n <button\n class=\"dropdown-trigger\"\n :class=\"config.triggerClass\"\n @click=\"onTriggerClick\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @contextmenu=\"onContextMenu\"\n @keyup=\"onKeyUp\"\n >\n <slot name=\"trigger\" />\n </button>\n\n <Teleport to=\"body\">\n <div\n ref=\"popover-el\"\n popover\n :id=\"dropdownId\"\n class=\"dropdown\"\n :class=\"clsx([\n getClass(dropdownSide, config.side),\n getClass(dropdownAlign, config.align),\n classAttr,\n config.contentClass,\n ])\"\n @mouseenter=\"onHover\"\n @mouseleave=\"onBlur\"\n @beforetoggle=\"onBeforeToggle\"\n >\n <slot></slot>\n </div>\n </Teleport>\n </div>\n</template>\n\n<style scoped>\n.dropdown-trigger {\n anchor-name: v-bind(anchorName);\n}\n\n.dropdown {\n position-anchor: v-bind(anchorName);\n}\n</style>","import { createComponentConfigKey } from '@/config/symbol'\n\nexport const FAB_CONFIG = createComponentConfigKey('fab')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { FAB_CONFIG } from './fab.context'\nimport type { FabProps } from './fab.props'\nimport type { FabMode } from './fab.types'\n\nconst fabModes: ComponentClass<'fab', FabMode> = {\n flower: 'fab-flower',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<FabProps>()\nconst config = useComponentConfig(FAB_CONFIG, props)\n</script>\n\n<template>\n <div\n class=\"fab\"\n :class=\"getClass(fabModes, config.mode)\"\n >\n <div v-if=\"$slots.close\" class=\"fab-close\">\n <slot name=\"close\"></slot>\n </div>\n <div v-if=\"$slots.mainAction\" class=\"fab-main-action\">\n <slot name=\"main-action\"></slot>\n </div>\n\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { FAB_CONFIG } from './fab.context'\nimport type { FabProps } from './fab.props'\nimport type { FabMode } from './fab.types'\n\nconst fabModes: ComponentClass<'fab', FabMode> = {\n flower: 'fab-flower',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<FabProps>()\nconst config = useComponentConfig(FAB_CONFIG, props)\n</script>\n\n<template>\n <div\n class=\"fab\"\n :class=\"getClass(fabModes, config.mode)\"\n >\n <div v-if=\"$slots.close\" class=\"fab-close\">\n <slot name=\"close\"></slot>\n </div>\n <div v-if=\"$slots.mainAction\" class=\"fab-main-action\">\n <slot name=\"main-action\"></slot>\n </div>\n\n <slot />\n </div>\n</template>\n","import { createComponentConfigKey } from '@/config/symbol'\n\nexport const MODAL_CONFIG = createComponentConfigKey('modal')\n","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, shallowRef, useTemplateRef, watch } from 'vue'\nimport { MODAL_CONFIG } from './modal.context'\nimport type { ModalProps } from './modal.props'\nimport type { ModalPlacement } from './modal.types'\n\nconst modalPlacements: Record<ModalPlacement, `modal-${ModalPlacement}`> = {\n top: 'modal-top',\n middle: 'modal-middle',\n bottom: 'modal-bottom',\n start: 'modal-start',\n end: 'modal-end',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst dialogEl = useTemplateRef('dialog-el')\n\n/**\n * Controls the open state of the modal.\n * Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst open = defineModel<boolean>({ default: false })\n\nconst props = defineProps<ModalProps>()\nconst config = useComponentConfig(MODAL_CONFIG, props, {\n placement: undefined,\n closeOnBackdrop: false,\n loadContentWhenClose: false,\n})\n\nconst emit = defineEmits<{\n close: []\n}>()\n\nconst hasBeenOpened = shallowRef(false)\n\nwatch(open, isOpen => {\n if (isOpen) {\n hasBeenOpened.value = true\n }\n})\n\nconst shouldRenderContent = computed(() => {\n if (isTrue(config.value.loadContentWhenClose)) {\n return true\n }\n return open.value || hasBeenOpened.value\n})\n\nwatch(open, isOpen => {\n if (!dialogEl.value) {\n return\n }\n\n if (isOpen) {\n dialogEl.value.showModal()\n } else {\n dialogEl.value.close()\n }\n}, { immediate: true })\n\nfunction present() {\n open.value = true\n}\n\nfunction dismiss() {\n open.value = false\n}\n\nfunction onClose() {\n open.value = false\n emit('close')\n}\n\ndefineExpose({\n present, \n dismiss,\n})\n</script>\n\n<template>\n <dialog\n ref=\"dialog-el\"\n class=\"modal\"\n :class=\"[config.placement && modalPlacements[config.placement]]\"\n @close=\"onClose\"\n >\n <div v-if=\"shouldRenderContent\" class=\"modal-box\">\n <slot></slot>\n <div v-if=\"$slots.actions\" class=\"modal-action\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n\n <form v-if=\"!isTrue(config.closeOnBackdrop)\" method=\"dialog\" class=\"modal-backdrop\">\n <button>close</button>\n </form>\n </dialog>\n</template>","<script lang=\"ts\">\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport { isTrue } from '@/utils/is-true'\nimport { computed, shallowRef, useTemplateRef, watch } from 'vue'\nimport { MODAL_CONFIG } from './modal.context'\nimport type { ModalProps } from './modal.props'\nimport type { ModalPlacement } from './modal.types'\n\nconst modalPlacements: Record<ModalPlacement, `modal-${ModalPlacement}`> = {\n top: 'modal-top',\n middle: 'modal-middle',\n bottom: 'modal-bottom',\n start: 'modal-start',\n end: 'modal-end',\n}\n</script>\n\n<script setup lang=\"ts\">\nconst dialogEl = useTemplateRef('dialog-el')\n\n/**\n * Controls the open state of the modal.\n * Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst open = defineModel<boolean>({ default: false })\n\nconst props = defineProps<ModalProps>()\nconst config = useComponentConfig(MODAL_CONFIG, props, {\n placement: undefined,\n closeOnBackdrop: false,\n loadContentWhenClose: false,\n})\n\nconst emit = defineEmits<{\n close: []\n}>()\n\nconst hasBeenOpened = shallowRef(false)\n\nwatch(open, isOpen => {\n if (isOpen) {\n hasBeenOpened.value = true\n }\n})\n\nconst shouldRenderContent = computed(() => {\n if (isTrue(config.value.loadContentWhenClose)) {\n return true\n }\n return open.value || hasBeenOpened.value\n})\n\nwatch(open, isOpen => {\n if (!dialogEl.value) {\n return\n }\n\n if (isOpen) {\n dialogEl.value.showModal()\n } else {\n dialogEl.value.close()\n }\n}, { immediate: true })\n\nfunction present() {\n open.value = true\n}\n\nfunction dismiss() {\n open.value = false\n}\n\nfunction onClose() {\n open.value = false\n emit('close')\n}\n\ndefineExpose({\n present, \n dismiss,\n})\n</script>\n\n<template>\n <dialog\n ref=\"dialog-el\"\n class=\"modal\"\n :class=\"[config.placement && modalPlacements[config.placement]]\"\n @close=\"onClose\"\n >\n <div v-if=\"shouldRenderContent\" class=\"modal-box\">\n <slot></slot>\n <div v-if=\"$slots.actions\" class=\"modal-action\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n\n <form v-if=\"!isTrue(config.closeOnBackdrop)\" method=\"dialog\" class=\"modal-backdrop\">\n <button>close</button>\n </form>\n </dialog>\n</template>","import { createComponentConfigKey } from '@/config/symbol'\n\nexport const SWAP_CONFIG = createComponentConfigKey('swap')\n","<script lang=\"ts\">\nimport ClassWrapper from '@/components/ClassWrapper.vue'\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { SWAP_CONFIG } from './swap.context'\nimport type { SwapProps } from './swap.props'\nimport type { SwapVariant } from './swap.types'\n\nconst swapVariants: ComponentClass<'swap', SwapVariant> = {\n flip: 'swap-flip',\n rotate: 'swap-rotate',\n}\n</script>\n\n<script setup lang=\"ts\">\n/**\n * Controls which slot is visible.\n * When `true`, the `on` slot is shown. Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst model = defineModel<boolean>({ default: false })\n\nconst props = defineProps<SwapProps>()\nconst config = useComponentConfig(SWAP_CONFIG, props, {})\n\nfunction toggle() {\n if (!isTrue(props.indeterminate)) {\n model.value = !model.value\n }\n}\n</script>\n\n<template>\n <div\n class=\"swap\"\n :class=\"[\n getClass(swapVariants, config.variant),\n isTrue(indeterminate) ? 'swap-indeterminate' : model && 'swap-active',\n ]\"\n role=\"button\"\n tabindex=\"0\"\n @click=\"toggle\"\n @keydown.enter.space.prevent=\"toggle\"\n >\n <template v-if=\"isTrue(indeterminate) && $slots.indeterminate\">\n <slot name=\"indeterminate\"></slot>\n </template>\n <template v-else>\n <ClassWrapper class=\"swap-on\">\n <slot name=\"on\"></slot>\n </ClassWrapper>\n <ClassWrapper class=\"swap-off\">\n <slot name=\"off\"></slot>\n </ClassWrapper>\n </template>\n </div>\n</template>","<script lang=\"ts\">\nimport ClassWrapper from '@/components/ClassWrapper.vue'\nimport { useComponentConfig } from '@/composables/use-component-config'\nimport type { ComponentClass } from '@/types/utils.type'\nimport { getClass } from '@/utils/build-class.util'\nimport { isTrue } from '@/utils/is-true'\nimport { SWAP_CONFIG } from './swap.context'\nimport type { SwapProps } from './swap.props'\nimport type { SwapVariant } from './swap.types'\n\nconst swapVariants: ComponentClass<'swap', SwapVariant> = {\n flip: 'swap-flip',\n rotate: 'swap-rotate',\n}\n</script>\n\n<script setup lang=\"ts\">\n/**\n * Controls which slot is visible.\n * When `true`, the `on` slot is shown. Use `v-model` to bind reactively.\n *\n * @default false\n */\nconst model = defineModel<boolean>({ default: false })\n\nconst props = defineProps<SwapProps>()\nconst config = useComponentConfig(SWAP_CONFIG, props, {})\n\nfunction toggle() {\n if (!isTrue(props.indeterminate)) {\n model.value = !model.value\n }\n}\n</script>\n\n<template>\n <div\n class=\"swap\"\n :class=\"[\n getClass(swapVariants, config.variant),\n isTrue(indeterminate) ? 'swap-indeterminate' : model && 'swap-active',\n ]\"\n role=\"button\"\n tabindex=\"0\"\n @click=\"toggle\"\n @keydown.enter.space.prevent=\"toggle\"\n >\n <template v-if=\"isTrue(indeterminate) && $slots.indeterminate\">\n <slot name=\"indeterminate\"></slot>\n </template>\n <template v-else>\n <ClassWrapper class=\"swap-on\">\n <slot name=\"on\"></slot>\n </ClassWrapper>\n <ClassWrapper class=\"swap-off\">\n <slot name=\"off\"></slot>\n </ClassWrapper>\n </template>\n </div>\n</template>"],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as e, t } from "../../Toast-fSQWLl0R.js";
|
|
2
|
+
import { n, t as r } from "../../toast.context-CTPY2imu.js";
|
|
2
3
|
import { Fragment as i, Teleport as a, computed as o, createBlock as s, createElementBlock as c, createTextVNode as l, createVNode as u, defineComponent as d, inject as f, openBlock as p, provide as m, ref as h, renderList as g, renderSlot as _, toDisplayString as v, withCtx as y } from "vue";
|
|
3
4
|
//#endregion
|
|
4
5
|
//#region src/components/app/PoppyApp.vue
|
|
5
6
|
var b = /* @__PURE__ */ d({
|
|
6
7
|
__name: "PoppyApp",
|
|
7
8
|
setup(d) {
|
|
8
|
-
let b = f(
|
|
9
|
+
let b = f(r, {}), x = o(() => b?.duration ?? 3e3), S = h([]), C = 0;
|
|
9
10
|
function w(e, t) {
|
|
10
11
|
let n = t?.duration ?? x.value, r = {
|
|
11
12
|
id: C++,
|
|
@@ -21,7 +22,7 @@ var b = /* @__PURE__ */ d({
|
|
|
21
22
|
return m(n, {
|
|
22
23
|
push: w,
|
|
23
24
|
dismiss: T
|
|
24
|
-
}), (
|
|
25
|
+
}), (n, r) => (p(), c(i, null, [_(n.$slots, "default"), (p(), s(a, { to: "body" }, [u(t, { class: "z-50" }, {
|
|
25
26
|
default: y(() => [(p(!0), c(i, null, g(S.value, (t) => (p(), s(e, {
|
|
26
27
|
key: t.id,
|
|
27
28
|
color: t.color,
|