bootstrap-vue-next 0.26.3 → 0.26.4
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/{BAccordionItem.vue_vue_type_script_setup_true_lang-Mqtf0bUM.mjs → BAccordionItem.vue_vue_type_script_setup_true_lang-BxN4x_aF.mjs} +2 -2
- package/dist/{BAccordionItem.vue_vue_type_script_setup_true_lang-Mqtf0bUM.mjs.map → BAccordionItem.vue_vue_type_script_setup_true_lang-BxN4x_aF.mjs.map} +1 -1
- package/dist/{BAccordionItem.vue_vue_type_script_setup_true_lang-CR4QGNxG.js → BAccordionItem.vue_vue_type_script_setup_true_lang-zBvu0VQR.js} +2 -2
- package/dist/{BAccordionItem.vue_vue_type_script_setup_true_lang-CR4QGNxG.js.map → BAccordionItem.vue_vue_type_script_setup_true_lang-zBvu0VQR.js.map} +1 -1
- package/dist/{BCollapse.vue_vue_type_script_setup_true_lang-Cfo7uvq0.js → BCollapse.vue_vue_type_script_setup_true_lang-BBV5KIaM.js} +2 -2
- package/dist/BCollapse.vue_vue_type_script_setup_true_lang-BBV5KIaM.js.map +1 -0
- package/dist/{BCollapse.vue_vue_type_script_setup_true_lang-BBjRm6fq.mjs → BCollapse.vue_vue_type_script_setup_true_lang-CrVt2Sso.mjs} +4 -4
- package/dist/BCollapse.vue_vue_type_script_setup_true_lang-CrVt2Sso.mjs.map +1 -0
- package/dist/{BDropdown-BYH3ZAU-.mjs → BDropdown-B9F_yem5.mjs} +6 -6
- package/dist/BDropdown-B9F_yem5.mjs.map +1 -0
- package/dist/{BDropdown-CkEaFJIg.js → BDropdown-Dbc_0OXW.js} +2 -2
- package/dist/BDropdown-Dbc_0OXW.js.map +1 -0
- package/dist/{BModalOrchestrator.vue_vue_type_script_setup_true_lang-BXWj7EJY.js → BModalOrchestrator.vue_vue_type_script_setup_true_lang-B_uGznhV.js} +2 -2
- package/dist/BModalOrchestrator.vue_vue_type_script_setup_true_lang-B_uGznhV.js.map +1 -0
- package/dist/{BModalOrchestrator.vue_vue_type_script_setup_true_lang-CYXOtT68.mjs → BModalOrchestrator.vue_vue_type_script_setup_true_lang-CSvLk9xB.mjs} +5 -5
- package/dist/BModalOrchestrator.vue_vue_type_script_setup_true_lang-CSvLk9xB.mjs.map +1 -0
- package/dist/{BNavText.vue_vue_type_script_setup_true_lang-D9qRxSC0.js → BNavText.vue_vue_type_script_setup_true_lang-BdRgdDR5.js} +2 -2
- package/dist/{BNavText.vue_vue_type_script_setup_true_lang-D9qRxSC0.js.map → BNavText.vue_vue_type_script_setup_true_lang-BdRgdDR5.js.map} +1 -1
- package/dist/{BNavText.vue_vue_type_script_setup_true_lang-BwWo3o9v.mjs → BNavText.vue_vue_type_script_setup_true_lang-CSlZ6v3T.mjs} +2 -2
- package/dist/{BNavText.vue_vue_type_script_setup_true_lang-BwWo3o9v.mjs.map → BNavText.vue_vue_type_script_setup_true_lang-CSlZ6v3T.mjs.map} +1 -1
- package/dist/{BOffcanvas-jNrNrzFs.mjs → BOffcanvas-ByY6qP9r.mjs} +5 -7
- package/dist/BOffcanvas-ByY6qP9r.mjs.map +1 -0
- package/dist/{BOffcanvas-bQLAzGI5.js → BOffcanvas-D6bDjYQl.js} +2 -2
- package/dist/BOffcanvas-D6bDjYQl.js.map +1 -0
- package/dist/{BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-CGcJniB3.mjs → BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-BPs5sXww.mjs} +3 -3
- package/dist/{BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-CGcJniB3.mjs.map → BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-BPs5sXww.mjs.map} +1 -1
- package/dist/{BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-Da82UJ3a.js → BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-DcB1vHt1.js} +2 -2
- package/dist/{BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-Da82UJ3a.js.map → BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-DcB1vHt1.js.map} +1 -1
- package/dist/{BTabs.vue_vue_type_script_setup_true_lang-C1QBQZAw.mjs → BTabs.vue_vue_type_script_setup_true_lang-BaXWpQLA.mjs} +3 -2
- package/dist/BTabs.vue_vue_type_script_setup_true_lang-BaXWpQLA.mjs.map +1 -0
- package/dist/BTabs.vue_vue_type_script_setup_true_lang-Dw1VkYlS.js +2 -0
- package/dist/BTabs.vue_vue_type_script_setup_true_lang-Dw1VkYlS.js.map +1 -0
- package/dist/{BToastOrchestrator.vue_vue_type_style_index_0_lang-CD-aPss7.mjs → BToastOrchestrator.vue_vue_type_style_index_0_lang-CYr4Zlps.mjs} +5 -7
- package/dist/BToastOrchestrator.vue_vue_type_style_index_0_lang-CYr4Zlps.mjs.map +1 -0
- package/dist/BToastOrchestrator.vue_vue_type_style_index_0_lang-Dbnot9h_.js +2 -0
- package/dist/BToastOrchestrator.vue_vue_type_style_index_0_lang-Dbnot9h_.js.map +1 -0
- package/dist/{BTooltip.vue_vue_type_script_setup_true_lang-DjQ6vJ-I.mjs → BTooltip.vue_vue_type_script_setup_true_lang-BE7VV_2G.mjs} +2 -2
- package/dist/{BTooltip.vue_vue_type_script_setup_true_lang-DjQ6vJ-I.mjs.map → BTooltip.vue_vue_type_script_setup_true_lang-BE7VV_2G.mjs.map} +1 -1
- package/dist/{BTooltip.vue_vue_type_script_setup_true_lang-Bg1NpHis.js → BTooltip.vue_vue_type_script_setup_true_lang-BhDGU71G.js} +2 -2
- package/dist/{BTooltip.vue_vue_type_script_setup_true_lang-Bg1NpHis.js.map → BTooltip.vue_vue_type_script_setup_true_lang-BhDGU71G.js.map} +1 -1
- package/dist/bootstrap-vue-next.css +1 -1
- package/dist/bootstrap-vue-next.mjs +12 -12
- package/dist/bootstrap-vue-next.umd.js +1 -1
- package/dist/{floatingUi-DOXQNrB3.mjs → floatingUi-Cnc0tLwM.mjs} +5 -5
- package/dist/{floatingUi-DOXQNrB3.mjs.map → floatingUi-Cnc0tLwM.mjs.map} +1 -1
- package/dist/{floatingUi-DoSVLDYW.js → floatingUi-crYfHchY.js} +2 -2
- package/dist/{floatingUi-DoSVLDYW.js.map → floatingUi-crYfHchY.js.map} +1 -1
- package/dist/{index-DBc_IU8a.mjs → index-B2km7ncO.mjs} +12 -12
- package/dist/{index-DBc_IU8a.mjs.map → index-B2km7ncO.mjs.map} +1 -1
- package/dist/{index-DpWyKe94.js → index-BGkQSDHm.js} +2 -2
- package/dist/index-BGkQSDHm.js.map +1 -0
- package/dist/src/components/BAccordion/index.mjs +1 -1
- package/dist/src/components/BAccordion/index.umd.js +1 -1
- package/dist/src/components/BCollapse/index.mjs +1 -1
- package/dist/src/components/BCollapse/index.umd.js +1 -1
- package/dist/src/components/BDropdown/index.mjs +1 -1
- package/dist/src/components/BDropdown/index.umd.js +1 -1
- package/dist/src/components/BModal/index.mjs +1 -1
- package/dist/src/components/BModal/index.umd.js +1 -1
- package/dist/src/components/BNav/index.mjs +1 -1
- package/dist/src/components/BNav/index.umd.js +1 -1
- package/dist/src/components/BOffcanvas/index.mjs +1 -1
- package/dist/src/components/BOffcanvas/index.umd.js +1 -1
- package/dist/src/components/BPopover/index.mjs +2 -2
- package/dist/src/components/BPopover/index.umd.js +1 -1
- package/dist/src/components/BTabs/index.mjs +1 -1
- package/dist/src/components/BTabs/index.umd.js +1 -1
- package/dist/src/components/BToast/index.mjs +1 -1
- package/dist/src/components/BToast/index.umd.js +1 -1
- package/dist/src/components/BTooltip/index.mjs +1 -1
- package/dist/src/components/BTooltip/index.umd.js +1 -1
- package/dist/src/components/index.mjs +11 -11
- package/dist/src/components/index.umd.js +1 -1
- package/dist/src/directives/BPopover/index.mjs +1 -1
- package/dist/src/directives/BPopover/index.umd.js +1 -1
- package/dist/src/directives/BTooltip/index.mjs +1 -1
- package/dist/src/directives/BTooltip/index.umd.js +1 -1
- package/dist/useShowHide-B9og7o3_.js +2 -0
- package/dist/useShowHide-B9og7o3_.js.map +1 -0
- package/dist/{useShowHide-byhoPIsk.mjs → useShowHide-Bm1-pcPG.mjs} +34 -16
- package/dist/useShowHide-Bm1-pcPG.mjs.map +1 -0
- package/package.json +1 -1
- package/dist/BCollapse.vue_vue_type_script_setup_true_lang-BBjRm6fq.mjs.map +0 -1
- package/dist/BCollapse.vue_vue_type_script_setup_true_lang-Cfo7uvq0.js.map +0 -1
- package/dist/BDropdown-BYH3ZAU-.mjs.map +0 -1
- package/dist/BDropdown-CkEaFJIg.js.map +0 -1
- package/dist/BModalOrchestrator.vue_vue_type_script_setup_true_lang-BXWj7EJY.js.map +0 -1
- package/dist/BModalOrchestrator.vue_vue_type_script_setup_true_lang-CYXOtT68.mjs.map +0 -1
- package/dist/BOffcanvas-bQLAzGI5.js.map +0 -1
- package/dist/BOffcanvas-jNrNrzFs.mjs.map +0 -1
- package/dist/BTabs.vue_vue_type_script_setup_true_lang-C1QBQZAw.mjs.map +0 -1
- package/dist/BTabs.vue_vue_type_script_setup_true_lang-CYJUEEhg.js +0 -2
- package/dist/BTabs.vue_vue_type_script_setup_true_lang-CYJUEEhg.js.map +0 -1
- package/dist/BToastOrchestrator.vue_vue_type_style_index_0_lang-BfX-wDFF.js +0 -2
- package/dist/BToastOrchestrator.vue_vue_type_style_index_0_lang-BfX-wDFF.js.map +0 -1
- package/dist/BToastOrchestrator.vue_vue_type_style_index_0_lang-CD-aPss7.mjs.map +0 -1
- package/dist/index-DpWyKe94.js.map +0 -1
- package/dist/useShowHide-CK93wwAA.js +0 -2
- package/dist/useShowHide-CK93wwAA.js.map +0 -1
- package/dist/useShowHide-byhoPIsk.mjs.map +0 -1
|
@@ -2,7 +2,7 @@ import { defineComponent, mergeModels, useModel, computed, provide, readonly, to
|
|
|
2
2
|
import { e as accordionInjectionKey } from "./keys-CsqIkltC.mjs";
|
|
3
3
|
import { u as useId } from "./useId-BR0P33VS.mjs";
|
|
4
4
|
import { u as useDefaults } from "./useDefaults-dJMhLizZ.mjs";
|
|
5
|
-
import { _ as _sfc_main$2 } from "./BCollapse.vue_vue_type_script_setup_true_lang-
|
|
5
|
+
import { _ as _sfc_main$2 } from "./BCollapse.vue_vue_type_script_setup_true_lang-CrVt2Sso.mjs";
|
|
6
6
|
const _hoisted_1$1 = ["id"];
|
|
7
7
|
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
8
8
|
__name: "BAccordion",
|
|
@@ -168,4 +168,4 @@ export {
|
|
|
168
168
|
_sfc_main$1 as _,
|
|
169
169
|
_sfc_main as a
|
|
170
170
|
};
|
|
171
|
-
//# sourceMappingURL=BAccordionItem.vue_vue_type_script_setup_true_lang-
|
|
171
|
+
//# sourceMappingURL=BAccordionItem.vue_vue_type_script_setup_true_lang-BxN4x_aF.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BAccordionItem.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
{"version":3,"file":"BAccordionItem.vue_vue_type_script_setup_true_lang-BxN4x_aF.mjs","sources":["../src/components/BAccordion/BAccordion.vue","../src/components/BAccordion/BAccordionItem.vue"],"sourcesContent":["<template>\n <div :id=\"computedId\" class=\"accordion\" :class=\"computedClasses\">\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, readonly, toRef} from 'vue'\nimport {accordionInjectionKey} from '../../utils/keys'\nimport {useId} from '../../composables/useId'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BAccordionProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<Omit<BAccordionProps, 'modelValue'>>(), {\n flush: false,\n free: false,\n initialAnimation: false,\n id: undefined,\n lazy: false,\n unmountLazy: false,\n})\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst props = useDefaults(_props, 'BAccordion')\n\nconst modelValue = defineModel<BAccordionProps['modelValue']>({\n default: undefined,\n})\n\nconst computedId = useId(() => props.id, 'accordion')\n\nconst computedClasses = computed(() => ({\n 'accordion-flush': props.flush,\n}))\n\nprovide(accordionInjectionKey, {\n openItem: readonly(modelValue),\n free: toRef(() => props.free),\n initialAnimation: toRef(() => props.initialAnimation),\n lazy: toRef(() => props.lazy),\n unmountLazy: toRef(() => props.unmountLazy),\n setOpenItem: (id: string) => {\n modelValue.value = id\n },\n})\n</script>\n","<template>\n <div class=\"accordion-item\" v-bind=\"props.wrapperAttrs\" :class=\"wrapperClass\">\n <BCollapse\n :id=\"computedId\"\n v-model=\"modelValue\"\n class=\"accordion-collapse\"\n :class=\"props.collapseClass\"\n :aria-labelledby=\"`${computedId}-heading`\"\n v-bind=\"collapseAttrs\"\n :tag=\"props.tag\"\n :show=\"props.show\"\n :horizontal=\"props.horizontal\"\n :visible=\"props.visible\"\n :is-nav=\"props.isNav\"\n :lazy=\"props.lazy || parentData?.lazy.value\"\n :unmount-lazy=\"props.unmountLazy || parentData?.unmountLazy.value\"\n @show=\"emit('show', $event)\"\n @shown=\"emit('shown')\"\n @hide=\"emit('hide', $event)\"\n @hidden=\"emit('hidden')\"\n @hide-prevented=\"emit('hide-prevented')\"\n @show-prevented=\"emit('show-prevented')\"\n >\n <template #header=\"{visible: toggleVisible, toggle: slotToggle}\">\n <component\n :is=\"props.headerTag\"\n :id=\"`${computedId}-heading`\"\n class=\"accordion-header\"\n :class=\"props.headerClass\"\n v-bind=\"props.headerAttrs\"\n >\n <button\n class=\"accordion-button\"\n v-bind=\"props.buttonAttrs\"\n :class=\"[{collapsed: !toggleVisible}, props.buttonClass]\"\n type=\"button\"\n :aria-expanded=\"toggleVisible ? 'true' : 'false'\"\n :aria-controls=\"computedId\"\n @click=\"slotToggle\"\n >\n <slot name=\"title\"> {{ props.title }} </slot>\n </button>\n </component>\n </template>\n <div class=\"accordion-body\" v-bind=\"props.bodyAttrs\" :class=\"props.bodyClass\">\n <slot />\n </div>\n </BCollapse>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {inject, nextTick, onMounted, useAttrs, watch} from 'vue'\nimport BCollapse from '../BCollapse/BCollapse.vue'\nimport {accordionInjectionKey} from '../../utils/keys'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BAccordionItemProps} from '../../types/ComponentProps'\nimport type {BvTriggerableEvent} from '../../utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\nconst {class: wrapperClass, ...collapseAttrs} = useAttrs()\n\nconst _props = withDefaults(defineProps<Omit<BAccordionItemProps, 'modelValue'>>(), {\n bodyAttrs: undefined,\n bodyClass: undefined,\n buttonAttrs: undefined,\n buttonClass: undefined,\n collapseClass: undefined,\n headerAttrs: undefined,\n headerClass: undefined,\n headerTag: 'h2',\n horizontal: undefined,\n id: undefined,\n isNav: undefined,\n lazy: false,\n unmountLazy: false,\n tag: undefined,\n title: undefined,\n show: undefined,\n visible: false,\n wrapperAttrs: undefined,\n})\nconst props = useDefaults(_props, 'BAccordionItem')\n\nconst emit = defineEmits<{\n 'hidden': []\n 'hide': [value: BvTriggerableEvent]\n 'hide-prevented': []\n 'show': [value: BvTriggerableEvent]\n 'show-prevented': []\n 'shown': []\n}>()\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n title?: (props: Record<string, never>) => any\n}>()\n\nconst parentData = inject(accordionInjectionKey, null)\n\nconst computedId = useId(() => props.id, 'accordion_item')\n\nconst modelValue = defineModel<Exclude<BAccordionItemProps['modelValue'], undefined>>({\n default: false,\n})\n\nmodelValue.value =\n parentData?.openItem.value === computedId.value && !parentData?.initialAnimation.value\n\nif (modelValue.value && !parentData?.free.value) {\n parentData?.setOpenItem(computedId.value)\n}\n\nonMounted(() => {\n if (!modelValue.value && parentData?.openItem.value === computedId.value) {\n nextTick(() => {\n modelValue.value = true\n })\n }\n})\n\nwatch(\n () => parentData?.openItem.value,\n () =>\n (modelValue.value = parentData?.openItem.value === computedId.value && !parentData?.free.value)\n)\nwatch(modelValue, () => {\n if (modelValue.value && !parentData?.free.value) parentData?.setOpenItem(computedId.value)\n})\n</script>\n"],"names":["_useModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAaA,UAAM,SAAS;AAcT,UAAA,QAAQ,YAAY,QAAQ,YAAY;AAExC,UAAA,aAAaA,SAElB,SAAA,YAAA;AAED,UAAM,aAAa,MAAM,MAAM,MAAM,IAAI,WAAW;AAE9C,UAAA,kBAAkB,SAAS,OAAO;AAAA,MACtC,mBAAmB,MAAM;AAAA,IAAA,EACzB;AAEF,YAAQ,uBAAuB;AAAA,MAC7B,UAAU,SAAS,UAAU;AAAA,MAC7B,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,MAC5B,kBAAkB,MAAM,MAAM,MAAM,gBAAgB;AAAA,MACpD,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,MAC5B,aAAa,MAAM,MAAM,MAAM,WAAW;AAAA,MAC1C,aAAa,CAAC,OAAe;AAC3B,mBAAW,QAAQ;AAAA,MAAA;AAAA,IACrB,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACeD,UAAM,EAAC,OAAO,cAAc,GAAG,cAAA,IAAiB,SAAS;AAEzD,UAAM,SAAS;AAoBT,UAAA,QAAQ,YAAY,QAAQ,gBAAgB;AAElD,UAAM,OAAO;AAgBP,UAAA,aAAa,OAAO,uBAAuB,IAAI;AAErD,UAAM,aAAa,MAAM,MAAM,MAAM,IAAI,gBAAgB;AAEnD,UAAA,aAAaA,SAElB,SAAA,YAAA;AAEU,eAAA,SACT,yCAAY,SAAS,WAAU,WAAW,SAAS,EAAC,yCAAY,iBAAiB;AAEnF,QAAI,WAAW,SAAS,EAAC,yCAAY,KAAK,QAAO;AACnC,+CAAA,YAAY,WAAW;AAAA,IAAK;AAG1C,cAAU,MAAM;AACd,UAAI,CAAC,WAAW,UAAS,yCAAY,SAAS,WAAU,WAAW,OAAO;AACxE,iBAAS,MAAM;AACb,qBAAW,QAAQ;AAAA,QAAA,CACpB;AAAA,MAAA;AAAA,IACH,CACD;AAED;AAAA,MACE,MAAM,yCAAY,SAAS;AAAA,MAC3B,MACG,WAAW,SAAQ,yCAAY,SAAS,WAAU,WAAW,SAAS,EAAC,yCAAY,KAAK;AAAA,IAC7F;AACA,UAAM,YAAY,MAAM;AAClB,UAAA,WAAW,SAAS,EAAC,yCAAY,KAAK,OAAO,0CAAY,YAAY,WAAW;AAAA,IAAK,CAC1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("vue"),o=require("./keys-DNjuQYyL.js"),l=require("./useId-B5tsy2d5.js"),a=require("./useDefaults-DrxHjHw2.js"),t=require("./BCollapse.vue_vue_type_script_setup_true_lang-
|
|
2
|
-
//# sourceMappingURL=BAccordionItem.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
"use strict";const e=require("vue"),o=require("./keys-DNjuQYyL.js"),l=require("./useId-B5tsy2d5.js"),a=require("./useDefaults-DrxHjHw2.js"),t=require("./BCollapse.vue_vue_type_script_setup_true_lang-BBV5KIaM.js"),n=["id"],d=e.defineComponent({__name:"BAccordion",props:e.mergeModels({flush:{type:Boolean,default:!1},free:{type:Boolean,default:!1},id:{default:void 0},initialAnimation:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},unmountLazy:{type:Boolean,default:!1}},{modelValue:{default:void 0},modelModifiers:{}}),emits:["update:modelValue"],setup(t){const d=t,u=a.useDefaults(d,"BAccordion"),i=e.useModel(t,"modelValue"),r=l.useId((()=>u.id),"accordion"),s=e.computed((()=>({"accordion-flush":u.flush})));return e.provide(o.accordionInjectionKey,{openItem:e.readonly(i),free:e.toRef((()=>u.free)),initialAnimation:e.toRef((()=>u.initialAnimation)),lazy:e.toRef((()=>u.lazy)),unmountLazy:e.toRef((()=>u.unmountLazy)),setOpenItem:e=>{i.value=e}}),(o,l)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(r),class:e.normalizeClass(["accordion",s.value])},[e.renderSlot(o.$slots,"default")],10,n))}}),u=["aria-expanded","aria-controls","onClick"],i=e.defineComponent({inheritAttrs:!1,__name:"BAccordionItem",props:e.mergeModels({bodyAttrs:{default:void 0},bodyClass:{default:void 0},buttonAttrs:{default:void 0},buttonClass:{default:void 0},collapseClass:{default:void 0},headerAttrs:{default:void 0},headerClass:{default:void 0},headerTag:{default:"h2"},horizontal:{type:Boolean,default:void 0},id:{default:void 0},isNav:{type:Boolean,default:void 0},lazy:{type:Boolean,default:!1},unmountLazy:{type:Boolean,default:!1},tag:{default:void 0},title:{default:void 0},show:{type:Boolean,default:void 0},visible:{type:Boolean,default:!1},wrapperAttrs:{default:void 0}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:e.mergeModels(["hidden","hide","hide-prevented","show","show-prevented","shown"],["update:modelValue"]),setup(n,{emit:d}){const{class:i,...r}=e.useAttrs(),s=n,c=a.useDefaults(s,"BAccordionItem"),f=d,v=e.inject(o.accordionInjectionKey,null),p=l.useId((()=>c.id),"accordion_item"),m=e.useModel(n,"modelValue");return m.value=(null==v?void 0:v.openItem.value)===p.value&&!(null==v?void 0:v.initialAnimation.value),m.value&&!(null==v?void 0:v.free.value)&&(null==v||v.setOpenItem(p.value)),e.onMounted((()=>{m.value||(null==v?void 0:v.openItem.value)!==p.value||e.nextTick((()=>{m.value=!0}))})),e.watch((()=>null==v?void 0:v.openItem.value),(()=>m.value=(null==v?void 0:v.openItem.value)===p.value&&!(null==v?void 0:v.free.value))),e.watch(m,(()=>{m.value&&!(null==v?void 0:v.free.value)&&(null==v||v.setOpenItem(p.value))})),(o,l)=>{var a,n;return e.openBlock(),e.createElementBlock("div",e.mergeProps({class:"accordion-item"},e.unref(c).wrapperAttrs,{class:e.unref(i)}),[e.createVNode(t._sfc_main,e.mergeProps({id:e.unref(p),modelValue:m.value,"onUpdate:modelValue":l[0]||(l[0]=e=>m.value=e),class:["accordion-collapse",e.unref(c).collapseClass],"aria-labelledby":`${e.unref(p)}-heading`},r,{tag:e.unref(c).tag,show:e.unref(c).show,horizontal:e.unref(c).horizontal,visible:e.unref(c).visible,"is-nav":e.unref(c).isNav,lazy:e.unref(c).lazy||(null==(a=e.unref(v))?void 0:a.lazy.value),"unmount-lazy":e.unref(c).unmountLazy||(null==(n=e.unref(v))?void 0:n.unmountLazy.value),onShow:l[1]||(l[1]=e=>f("show",e)),onShown:l[2]||(l[2]=e=>f("shown")),onHide:l[3]||(l[3]=e=>f("hide",e)),onHidden:l[4]||(l[4]=e=>f("hidden")),onHidePrevented:l[5]||(l[5]=e=>f("hide-prevented")),onShowPrevented:l[6]||(l[6]=e=>f("show-prevented"))}),{header:e.withCtx((({visible:l,toggle:a})=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(c).headerTag),e.mergeProps({id:`${e.unref(p)}-heading`,class:["accordion-header",e.unref(c).headerClass]},e.unref(c).headerAttrs),{default:e.withCtx((()=>[e.createElementVNode("button",e.mergeProps({class:"accordion-button"},e.unref(c).buttonAttrs,{class:[{collapsed:!l},e.unref(c).buttonClass],type:"button","aria-expanded":l?"true":"false","aria-controls":e.unref(p),onClick:a}),[e.renderSlot(o.$slots,"title",{},(()=>[e.createTextVNode(e.toDisplayString(e.unref(c).title),1)]))],16,u)])),_:2},1040,["id","class"]))])),default:e.withCtx((()=>[e.createElementVNode("div",e.mergeProps({class:"accordion-body"},e.unref(c).bodyAttrs,{class:e.unref(c).bodyClass}),[e.renderSlot(o.$slots,"default")],16)])),_:3},16,["id","modelValue","class","aria-labelledby","tag","show","horizontal","visible","is-nav","lazy","unmount-lazy"])],16)}}});exports._sfc_main=d,exports._sfc_main$1=i;
|
|
2
|
+
//# sourceMappingURL=BAccordionItem.vue_vue_type_script_setup_true_lang-zBvu0VQR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BAccordionItem.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
{"version":3,"file":"BAccordionItem.vue_vue_type_script_setup_true_lang-zBvu0VQR.js","sources":["../src/components/BAccordion/BAccordion.vue","../src/components/BAccordion/BAccordionItem.vue"],"sourcesContent":["<template>\n <div :id=\"computedId\" class=\"accordion\" :class=\"computedClasses\">\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, readonly, toRef} from 'vue'\nimport {accordionInjectionKey} from '../../utils/keys'\nimport {useId} from '../../composables/useId'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BAccordionProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<Omit<BAccordionProps, 'modelValue'>>(), {\n flush: false,\n free: false,\n initialAnimation: false,\n id: undefined,\n lazy: false,\n unmountLazy: false,\n})\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst props = useDefaults(_props, 'BAccordion')\n\nconst modelValue = defineModel<BAccordionProps['modelValue']>({\n default: undefined,\n})\n\nconst computedId = useId(() => props.id, 'accordion')\n\nconst computedClasses = computed(() => ({\n 'accordion-flush': props.flush,\n}))\n\nprovide(accordionInjectionKey, {\n openItem: readonly(modelValue),\n free: toRef(() => props.free),\n initialAnimation: toRef(() => props.initialAnimation),\n lazy: toRef(() => props.lazy),\n unmountLazy: toRef(() => props.unmountLazy),\n setOpenItem: (id: string) => {\n modelValue.value = id\n },\n})\n</script>\n","<template>\n <div class=\"accordion-item\" v-bind=\"props.wrapperAttrs\" :class=\"wrapperClass\">\n <BCollapse\n :id=\"computedId\"\n v-model=\"modelValue\"\n class=\"accordion-collapse\"\n :class=\"props.collapseClass\"\n :aria-labelledby=\"`${computedId}-heading`\"\n v-bind=\"collapseAttrs\"\n :tag=\"props.tag\"\n :show=\"props.show\"\n :horizontal=\"props.horizontal\"\n :visible=\"props.visible\"\n :is-nav=\"props.isNav\"\n :lazy=\"props.lazy || parentData?.lazy.value\"\n :unmount-lazy=\"props.unmountLazy || parentData?.unmountLazy.value\"\n @show=\"emit('show', $event)\"\n @shown=\"emit('shown')\"\n @hide=\"emit('hide', $event)\"\n @hidden=\"emit('hidden')\"\n @hide-prevented=\"emit('hide-prevented')\"\n @show-prevented=\"emit('show-prevented')\"\n >\n <template #header=\"{visible: toggleVisible, toggle: slotToggle}\">\n <component\n :is=\"props.headerTag\"\n :id=\"`${computedId}-heading`\"\n class=\"accordion-header\"\n :class=\"props.headerClass\"\n v-bind=\"props.headerAttrs\"\n >\n <button\n class=\"accordion-button\"\n v-bind=\"props.buttonAttrs\"\n :class=\"[{collapsed: !toggleVisible}, props.buttonClass]\"\n type=\"button\"\n :aria-expanded=\"toggleVisible ? 'true' : 'false'\"\n :aria-controls=\"computedId\"\n @click=\"slotToggle\"\n >\n <slot name=\"title\"> {{ props.title }} </slot>\n </button>\n </component>\n </template>\n <div class=\"accordion-body\" v-bind=\"props.bodyAttrs\" :class=\"props.bodyClass\">\n <slot />\n </div>\n </BCollapse>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {inject, nextTick, onMounted, useAttrs, watch} from 'vue'\nimport BCollapse from '../BCollapse/BCollapse.vue'\nimport {accordionInjectionKey} from '../../utils/keys'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BAccordionItemProps} from '../../types/ComponentProps'\nimport type {BvTriggerableEvent} from '../../utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\nconst {class: wrapperClass, ...collapseAttrs} = useAttrs()\n\nconst _props = withDefaults(defineProps<Omit<BAccordionItemProps, 'modelValue'>>(), {\n bodyAttrs: undefined,\n bodyClass: undefined,\n buttonAttrs: undefined,\n buttonClass: undefined,\n collapseClass: undefined,\n headerAttrs: undefined,\n headerClass: undefined,\n headerTag: 'h2',\n horizontal: undefined,\n id: undefined,\n isNav: undefined,\n lazy: false,\n unmountLazy: false,\n tag: undefined,\n title: undefined,\n show: undefined,\n visible: false,\n wrapperAttrs: undefined,\n})\nconst props = useDefaults(_props, 'BAccordionItem')\n\nconst emit = defineEmits<{\n 'hidden': []\n 'hide': [value: BvTriggerableEvent]\n 'hide-prevented': []\n 'show': [value: BvTriggerableEvent]\n 'show-prevented': []\n 'shown': []\n}>()\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n title?: (props: Record<string, never>) => any\n}>()\n\nconst parentData = inject(accordionInjectionKey, null)\n\nconst computedId = useId(() => props.id, 'accordion_item')\n\nconst modelValue = defineModel<Exclude<BAccordionItemProps['modelValue'], undefined>>({\n default: false,\n})\n\nmodelValue.value =\n parentData?.openItem.value === computedId.value && !parentData?.initialAnimation.value\n\nif (modelValue.value && !parentData?.free.value) {\n parentData?.setOpenItem(computedId.value)\n}\n\nonMounted(() => {\n if (!modelValue.value && parentData?.openItem.value === computedId.value) {\n nextTick(() => {\n modelValue.value = true\n })\n }\n})\n\nwatch(\n () => parentData?.openItem.value,\n () =>\n (modelValue.value = parentData?.openItem.value === computedId.value && !parentData?.free.value)\n)\nwatch(modelValue, () => {\n if (modelValue.value && !parentData?.free.value) parentData?.setOpenItem(computedId.value)\n})\n</script>\n"],"names":["_props","__props","props","useDefaults","modelValue","_useModel","computedId","useId","id","computedClasses","computed","flush","provide","accordionInjectionKey","openItem","readonly","free","toRef","initialAnimation","lazy","unmountLazy","setOpenItem","value","class","wrapperClass","collapseAttrs","useAttrs","emit","__emit","parentData","inject","onMounted","nextTick","vue","watch"],"mappings":"sjBAaA,MAAMA,EAASC,EAcTC,EAAQC,EAAAA,YAAYH,EAAQ,cAE5BI,EAAaC,EAAAA,SAElBJ,EAAA,cAEKK,EAAaC,EAAAA,OAAM,IAAML,EAAMM,IAAI,aAEnCC,EAAkBC,EAAAA,UAAS,KAAO,CACtC,kBAAmBR,EAAMS,iBAG3BC,EAAAA,QAAQC,EAAAA,sBAAuB,CAC7BC,SAAUC,WAASX,GACnBY,KAAMC,EAAAA,OAAM,IAAMf,EAAMc,OACxBE,iBAAkBD,EAAAA,OAAM,IAAMf,EAAMgB,mBACpCC,KAAMF,EAAAA,OAAM,IAAMf,EAAMiB,OACxBC,YAAaH,EAAAA,OAAM,IAAMf,EAAMkB,cAC/BC,YAAcb,IACZJ,EAAWkB,MAAQd,CAAA,k/BCiBvB,MAAOe,MAAOC,KAAiBC,GAAiBC,EAAAA,WAE1C1B,EAASC,EAoBTC,EAAQC,EAAAA,YAAYH,EAAQ,kBAE5B2B,EAAOC,EAgBPC,EAAaC,EAAAA,OAAOjB,EAAAA,sBAAuB,MAE3CP,EAAaC,EAAAA,OAAM,IAAML,EAAMM,IAAI,kBAEnCJ,EAAaC,EAAAA,SAElBJ,EAAA,qBAEUG,EAAAkB,aACTO,WAAYf,SAASQ,SAAUhB,EAAWgB,eAAUO,WAAYX,iBAAiBI,OAE/ElB,EAAWkB,SAAU,MAAAO,OAAA,EAAAA,EAAYb,KAAKM,SAC5B,MAAAO,GAAAA,EAAAR,YAAYf,EAAWgB,QAGrCS,EAAAA,WAAU,KACH3B,EAAWkB,cAASO,WAAYf,SAASQ,SAAUhB,EAAWgB,OACjEU,EAAAA,UAAS,KACP5B,EAAWkB,OAAQ,CAAA,GACpB,IAILW,EAAAC,OACE,UAAML,WAAYf,SAASQ,QAC3B,IACGlB,EAAWkB,OAAoB,MAAZO,OAAY,EAAAA,EAAAf,SAASQ,SAAUhB,EAAWgB,SAAU,MAAAO,OAAA,EAAAA,EAAYb,KAAKM,SAE7FW,EAAAC,MAAM9B,GAAY,KACZA,EAAWkB,SAAU,MAAAO,OAAA,EAAAA,EAAYb,KAAKM,SAAO,MAAAO,GAAAA,EAAYR,YAAYf,EAAWgB,OAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("vue"),o=require("./useDefaults-DrxHjHw2.js"),t=require("./useId-B5tsy2d5.js"),l=require("./keys-DNjuQYyL.js"),a=require("./useShowHide-
|
|
2
|
-
//# sourceMappingURL=BCollapse.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
"use strict";const e=require("vue"),o=require("./useDefaults-DrxHjHw2.js"),t=require("./useId-B5tsy2d5.js"),l=require("./keys-DNjuQYyL.js"),a=require("./useShowHide-B9og7o3_.js"),s=e.defineComponent({inheritAttrs:!1,__name:"BCollapse",props:e.mergeModels({horizontal:{type:Boolean,default:!1},id:{default:void 0},isNav:{type:Boolean,default:!1},tag:{default:"div"},initialAnimation:{type:Boolean,default:!1},noAnimation:{type:Boolean,default:!1},noFade:{type:Boolean},lazy:{type:Boolean,default:!1},unmountLazy:{type:Boolean,default:!1},show:{type:Boolean,default:!1},transProps:{},visible:{type:Boolean,default:!1}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:e.mergeModels(["hidden","hide","hide-prevented","show","show-prevented","shown","toggle"],["update:modelValue"]),setup(s,{expose:i,emit:n}){var r;const d=s,u=o.useDefaults(d,"BCollapse"),p=n,c=e.useModel(s,"modelValue"),h=t.useId((()=>u.id),"collapse"),v=e.useTemplateRef("_element");let m=!1;const{showRef:f,renderRef:g,hide:y,show:w,toggle:B,isActive:C,computedNoAnimation:z,contentShowing:A,transitionProps:P}=a.useShowHide(c,u,p,v,h,{transitionProps:{onBeforeLeave:e=>{m||(u.horizontal?e.style.width=`${e.scrollWidth}px`:e.style.height=`${e.scrollHeight}px`,e.offsetHeight)},onEnter:e=>{m=!0,requestAnimationFrame((()=>{u.horizontal?e.style.width=`${e.scrollWidth}px`:e.style.height=`${e.scrollHeight}px`}))},onLeave:e=>{requestAnimationFrame((()=>{u.horizontal?e.style.width="":e.style.height=""}))},onAfterEnter:e=>{e.style.height="",e.style.width="",m=!1},onAfterLeave:e=>{e.style.height="",e.style.width="",m=!1},enterToClass:"",leaveToClass:"",enterFromClass:"",leaveFromClass:"",enterActiveClass:"",leaveActiveClass:""}}),N=e.computed((()=>({show:C.value,"navbar-collapse":u.isNav,"collapse-horizontal":u.horizontal}))),k=e.computed((()=>({toggle:B,show:w,hide:y,id:h.value,visible:f.value})));i({hide:y,isNav:u.isNav,show:w,toggle:B,visible:e.readonly(f)}),e.provide(l.collapseInjectionKey,{id:h,hide:y,show:w,toggle:B,visible:e.readonly(f),isNav:e.toRef((()=>u.isNav))});const x=null==(r=e.inject(l.globalCollapseStorageInjectionKey,void 0))?void 0:r({id:h.value,toggle:B,value:e.readonly(f)});return e.onBeforeUnmount((()=>{null==x||x.unregister()})),(o,t)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.renderSlot(o.$slots,"header",e.normalizeProps(e.guardReactiveProps(k.value))),e.unref(g)||e.unref(A)?(e.openBlock(),e.createBlock(e.Transition,e.mergeProps({key:0},e.unref(P),{"enter-active-class":e.unref(z)?"":"collapsing","leave-active-class":e.unref(z)?"":"collapsing",appear:!0}),{default:e.withCtx((()=>[e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(u).tag),e.mergeProps({id:e.unref(h),ref:"_element",class:["collapse",N.value],"is-nav":e.unref(u).isNav},o.$attrs),{default:e.withCtx((()=>[e.unref(A)?e.renderSlot(o.$slots,"default",e.normalizeProps(e.mergeProps({key:0},k.value))):e.createCommentVNode("",!0)])),_:3},16,["id","class","is-nav"])),[[e.vShow,e.unref(f)]])])),_:3},16,["enter-active-class","leave-active-class"])):e.createCommentVNode("",!0),e.renderSlot(o.$slots,"footer",e.normalizeProps(e.guardReactiveProps(k.value)))],64))}});exports._sfc_main=s;
|
|
2
|
+
//# sourceMappingURL=BCollapse.vue_vue_type_script_setup_true_lang-BBV5KIaM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BCollapse.vue_vue_type_script_setup_true_lang-BBV5KIaM.js","sources":["../src/components/BCollapse/BCollapse.vue"],"sourcesContent":["<template>\n <slot name=\"header\" v-bind=\"sharedSlots\" />\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :enter-active-class=\"computedNoAnimation ? '' : 'collapsing'\"\n :leave-active-class=\"computedNoAnimation ? '' : 'collapsing'\"\n :appear=\"true\"\n >\n <component\n :is=\"props.tag\"\n v-show=\"showRef\"\n :id=\"computedId\"\n ref=\"_element\"\n class=\"collapse\"\n :class=\"computedClasses\"\n :is-nav=\"props.isNav\"\n v-bind=\"$attrs\"\n >\n <slot v-if=\"contentShowing\" v-bind=\"sharedSlots\" />\n </component>\n </Transition>\n <slot name=\"footer\" v-bind=\"sharedSlots\" />\n</template>\n\n<script setup lang=\"ts\">\nimport {\n computed,\n type EmitFn,\n inject,\n onBeforeUnmount,\n provide,\n readonly,\n toRef,\n useTemplateRef,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {collapseInjectionKey, globalCollapseStorageInjectionKey} from '../../utils/keys'\nimport type {BCollapseProps} from '../../types/ComponentProps'\nimport {BvTriggerableEvent} from '../../utils'\nimport {useShowHide} from '../../composables/useShowHide'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<Omit<BCollapseProps, 'modelValue'>>(), {\n horizontal: false,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n noAnimation: false,\n unmountLazy: false,\n tag: 'div',\n show: false,\n visible: false,\n})\n\nconst props = useDefaults(_props, 'BCollapse')\n\nconst emit = defineEmits<{\n 'hidden': [value: BvTriggerableEvent]\n 'hide': [value: BvTriggerableEvent]\n 'hide-prevented': [value: BvTriggerableEvent]\n 'show': [value: BvTriggerableEvent]\n 'show-prevented': [value: BvTriggerableEvent]\n 'shown': [value: BvTriggerableEvent]\n 'toggle': [value: BvTriggerableEvent]\n}>()\n\ntype SharedSlotsData = {\n hide: () => void\n id: string\n show: () => void\n toggle: () => void\n visible: boolean\n}\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: SharedSlotsData) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n footer?: (props: SharedSlotsData) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header?: (props: SharedSlotsData) => any\n}>()\n\nconst modelValue = defineModel<Exclude<BCollapseProps['modelValue'], undefined>>({\n default: false,\n})\n\nconst computedId = useId(() => props.id, 'collapse')\n\nconst element = useTemplateRef<HTMLElement>('_element')\n\nlet inCollapse = false\nconst onEnter = (el: Element) => {\n inCollapse = true\n requestAnimationFrame(() => {\n if (props.horizontal) {\n ;(el as HTMLElement).style.width = `${(el as HTMLElement).scrollWidth}px`\n } else {\n ;(el as HTMLElement).style.height = `${(el as HTMLElement).scrollHeight}px`\n }\n })\n}\nconst onBeforeLeave = (el: Element) => {\n if (inCollapse) {\n return\n }\n if (props.horizontal) {\n ;(el as HTMLElement).style.width = `${el.scrollWidth}px`\n } else {\n ;(el as HTMLElement).style.height = `${el.scrollHeight}px`\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n ;(el as HTMLElement).offsetHeight // force reflow\n}\nconst onLeave = (el: Element) => {\n requestAnimationFrame(() => {\n if (props.horizontal) {\n ;(el as HTMLElement).style.width = ``\n } else {\n ;(el as HTMLElement).style.height = ``\n }\n })\n}\n\nconst onAfterEnter = (el: Element) => {\n ;(el as HTMLElement).style.height = ``\n ;(el as HTMLElement).style.width = ``\n inCollapse = false\n}\n\nconst onAfterLeave = (el: Element) => {\n ;(el as HTMLElement).style.height = ``\n ;(el as HTMLElement).style.width = ``\n inCollapse = false\n}\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n isActive,\n computedNoAnimation,\n contentShowing,\n transitionProps,\n} = useShowHide(modelValue, props, emit as EmitFn, element, computedId, {\n // addShowClass: false,\n transitionProps: {\n onBeforeLeave,\n onEnter,\n onLeave,\n onAfterEnter,\n onAfterLeave,\n enterToClass: '',\n leaveToClass: '',\n enterFromClass: '',\n leaveFromClass: '',\n enterActiveClass: '',\n leaveActiveClass: '',\n },\n})\n\nconst computedClasses = computed(() => ({\n 'show': isActive.value,\n 'navbar-collapse': props.isNav,\n 'collapse-horizontal': props.horizontal,\n}))\n\nconst sharedSlots = computed<SharedSlotsData>(() => ({\n toggle,\n show,\n hide,\n id: computedId.value,\n visible: showRef.value,\n}))\n\ndefineExpose({\n hide,\n isNav: props.isNav,\n show,\n toggle,\n visible: readonly(showRef),\n})\n\nprovide(collapseInjectionKey, {\n id: computedId,\n hide,\n show,\n toggle,\n visible: readonly(showRef),\n isNav: toRef(() => props.isNav),\n})\n\nconst appRegistry = inject(\n globalCollapseStorageInjectionKey,\n undefined\n)?.({\n id: computedId.value,\n toggle,\n value: readonly(showRef),\n})\n\nonBeforeUnmount(() => {\n appRegistry?.unregister()\n})\n</script>\n"],"names":["_props","__props","props","useDefaults","emit","__emit","modelValue","_useModel","computedId","useId","id","element","useTemplateRef","inCollapse","showRef","renderRef","hide","show","toggle","isActive","computedNoAnimation","contentShowing","transitionProps","useShowHide","onBeforeLeave","el","horizontal","style","width","scrollWidth","height","scrollHeight","offsetHeight","onEnter","requestAnimationFrame","onLeave","onAfterEnter","onAfterLeave","enterToClass","leaveToClass","enterFromClass","leaveFromClass","enterActiveClass","leaveActiveClass","computedClasses","computed","value","isNav","sharedSlots","visible","__expose","readonly","provide","collapseInjectionKey","toRef","appRegistry","inject","vue","globalCollapseStorageInjectionKey","_a","onBeforeUnmount","unregister"],"mappings":"2zBA+CA,MAAMA,EAASC,EAaTC,EAAQC,EAAAA,YAAYH,EAAQ,aAE5BI,EAAOC,EA2BPC,EAAaC,EAAAA,SAElBN,EAAA,cAEKO,EAAaC,EAAAA,OAAM,IAAMP,EAAMQ,IAAI,YAEnCC,EAAUC,iBAA4B,YAE5C,IAAIC,GAAa,EACX,MA4CAC,QACJA,EAAAC,UACAA,EAAAC,KACAA,EAAAC,KACAA,EAAAC,OACAA,EAAAC,SACAA,EAAAC,oBACAA,EAAAC,eACAA,EAAAC,gBACAA,GACEC,EAAAA,YAAYjB,EAAYJ,EAAOE,EAAgBO,EAASH,EAAY,CAEtEc,gBAAiB,CACfE,cA/CmBC,IACjBZ,IAGAX,EAAMwB,WACND,EAAmBE,MAAMC,MAAQ,GAAGH,EAAGI,gBAEvCJ,EAAmBE,MAAMG,OAAS,GAAGL,EAAGM,iBAGvBN,EAAAO,aAAA,EAsCnBC,QA1DaR,IACFZ,GAAA,EACbqB,uBAAsB,KAChBhC,EAAMwB,WACND,EAAmBE,MAAMC,MAAQ,GAAIH,EAAmBI,gBAExDJ,EAAmBE,MAAMG,OAAS,GAAIL,EAAmBM,gBAAY,GAE1E,EAmDCI,QArCaV,IACfS,uBAAsB,KAChBhC,EAAMwB,WACND,EAAmBE,MAAMC,MAAQ,GAEjCH,EAAmBE,MAAMG,OAAS,EAAA,GAEvC,EA+BCM,aA5BkBX,IAClBA,EAAmBE,MAAMG,OAAS,GAClCL,EAAmBE,MAAMC,MAAQ,GACtBf,GAAA,CAAA,EA0BXwB,aAvBkBZ,IAClBA,EAAmBE,MAAMG,OAAS,GAClCL,EAAmBE,MAAMC,MAAQ,GACtBf,GAAA,CAAA,EAqBXyB,aAAc,GACdC,aAAc,GACdC,eAAgB,GAChBC,eAAgB,GAChBC,iBAAkB,GAClBC,iBAAkB,MAIhBC,EAAkBC,EAAAA,UAAS,KAAO,CACtC5B,KAAQE,EAAS2B,MACjB,kBAAmB5C,EAAM6C,MACzB,sBAAuB7C,EAAMwB,eAGzBsB,EAAcH,EAAAA,UAA0B,KAAO,CACnD3B,SACAD,OACAD,OACAN,GAAIF,EAAWsC,MACfG,QAASnC,EAAQgC,UAGNI,EAAA,CACXlC,OACA+B,MAAO7C,EAAM6C,MACb9B,OACAC,SACA+B,QAASE,WAASrC,KAGpBsC,EAAAA,QAAQC,EAAAA,qBAAsB,CAC5B3C,GAAIF,EACJQ,OACAC,OACAC,SACA+B,QAASE,WAASrC,GAClBiC,MAAOO,EAAAA,OAAM,IAAMpD,EAAM6C,UAG3B,MAAMQ,EAAcC,OAAAA,EAAAC,EAAAD,OAClBE,EAAAA,uCACA,SACE,EAAAC,EAAA,CACFjD,GAAIF,EAAWsC,MACf5B,SACA4B,MAAOK,WAASrC,YAGlB8C,EAAAA,iBAAgB,KACD,MAAAL,GAAAA,EAAAM,YAAA"}
|
|
@@ -2,7 +2,7 @@ import { defineComponent, mergeModels, useModel, useTemplateRef, computed, reado
|
|
|
2
2
|
import { u as useDefaults } from "./useDefaults-dJMhLizZ.mjs";
|
|
3
3
|
import { u as useId } from "./useId-BR0P33VS.mjs";
|
|
4
4
|
import { c as collapseInjectionKey, g as globalCollapseStorageInjectionKey } from "./keys-CsqIkltC.mjs";
|
|
5
|
-
import { u as useShowHide } from "./useShowHide-
|
|
5
|
+
import { u as useShowHide } from "./useShowHide-Bm1-pcPG.mjs";
|
|
6
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
7
7
|
...{
|
|
8
8
|
inheritAttrs: false
|
|
@@ -147,7 +147,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
147
147
|
unref(renderRef) || unref(contentShowing) ? (openBlock(), createBlock(Transition, mergeProps({ key: 0 }, unref(transitionProps), {
|
|
148
148
|
"enter-active-class": unref(computedNoAnimation) ? "" : "collapsing",
|
|
149
149
|
"leave-active-class": unref(computedNoAnimation) ? "" : "collapsing",
|
|
150
|
-
appear:
|
|
150
|
+
appear: true
|
|
151
151
|
}), {
|
|
152
152
|
default: withCtx(() => [
|
|
153
153
|
withDirectives((openBlock(), createBlock(resolveDynamicComponent(unref(props).tag), mergeProps({
|
|
@@ -165,7 +165,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
165
165
|
])
|
|
166
166
|
]),
|
|
167
167
|
_: 3
|
|
168
|
-
}, 16, ["enter-active-class", "leave-active-class"
|
|
168
|
+
}, 16, ["enter-active-class", "leave-active-class"])) : createCommentVNode("", true),
|
|
169
169
|
renderSlot(_ctx.$slots, "footer", normalizeProps(guardReactiveProps(sharedSlots.value)))
|
|
170
170
|
], 64);
|
|
171
171
|
};
|
|
@@ -174,4 +174,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
174
174
|
export {
|
|
175
175
|
_sfc_main as _
|
|
176
176
|
};
|
|
177
|
-
//# sourceMappingURL=BCollapse.vue_vue_type_script_setup_true_lang-
|
|
177
|
+
//# sourceMappingURL=BCollapse.vue_vue_type_script_setup_true_lang-CrVt2Sso.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BCollapse.vue_vue_type_script_setup_true_lang-CrVt2Sso.mjs","sources":["../src/components/BCollapse/BCollapse.vue"],"sourcesContent":["<template>\n <slot name=\"header\" v-bind=\"sharedSlots\" />\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :enter-active-class=\"computedNoAnimation ? '' : 'collapsing'\"\n :leave-active-class=\"computedNoAnimation ? '' : 'collapsing'\"\n :appear=\"true\"\n >\n <component\n :is=\"props.tag\"\n v-show=\"showRef\"\n :id=\"computedId\"\n ref=\"_element\"\n class=\"collapse\"\n :class=\"computedClasses\"\n :is-nav=\"props.isNav\"\n v-bind=\"$attrs\"\n >\n <slot v-if=\"contentShowing\" v-bind=\"sharedSlots\" />\n </component>\n </Transition>\n <slot name=\"footer\" v-bind=\"sharedSlots\" />\n</template>\n\n<script setup lang=\"ts\">\nimport {\n computed,\n type EmitFn,\n inject,\n onBeforeUnmount,\n provide,\n readonly,\n toRef,\n useTemplateRef,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {collapseInjectionKey, globalCollapseStorageInjectionKey} from '../../utils/keys'\nimport type {BCollapseProps} from '../../types/ComponentProps'\nimport {BvTriggerableEvent} from '../../utils'\nimport {useShowHide} from '../../composables/useShowHide'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<Omit<BCollapseProps, 'modelValue'>>(), {\n horizontal: false,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n noAnimation: false,\n unmountLazy: false,\n tag: 'div',\n show: false,\n visible: false,\n})\n\nconst props = useDefaults(_props, 'BCollapse')\n\nconst emit = defineEmits<{\n 'hidden': [value: BvTriggerableEvent]\n 'hide': [value: BvTriggerableEvent]\n 'hide-prevented': [value: BvTriggerableEvent]\n 'show': [value: BvTriggerableEvent]\n 'show-prevented': [value: BvTriggerableEvent]\n 'shown': [value: BvTriggerableEvent]\n 'toggle': [value: BvTriggerableEvent]\n}>()\n\ntype SharedSlotsData = {\n hide: () => void\n id: string\n show: () => void\n toggle: () => void\n visible: boolean\n}\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: SharedSlotsData) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n footer?: (props: SharedSlotsData) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header?: (props: SharedSlotsData) => any\n}>()\n\nconst modelValue = defineModel<Exclude<BCollapseProps['modelValue'], undefined>>({\n default: false,\n})\n\nconst computedId = useId(() => props.id, 'collapse')\n\nconst element = useTemplateRef<HTMLElement>('_element')\n\nlet inCollapse = false\nconst onEnter = (el: Element) => {\n inCollapse = true\n requestAnimationFrame(() => {\n if (props.horizontal) {\n ;(el as HTMLElement).style.width = `${(el as HTMLElement).scrollWidth}px`\n } else {\n ;(el as HTMLElement).style.height = `${(el as HTMLElement).scrollHeight}px`\n }\n })\n}\nconst onBeforeLeave = (el: Element) => {\n if (inCollapse) {\n return\n }\n if (props.horizontal) {\n ;(el as HTMLElement).style.width = `${el.scrollWidth}px`\n } else {\n ;(el as HTMLElement).style.height = `${el.scrollHeight}px`\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n ;(el as HTMLElement).offsetHeight // force reflow\n}\nconst onLeave = (el: Element) => {\n requestAnimationFrame(() => {\n if (props.horizontal) {\n ;(el as HTMLElement).style.width = ``\n } else {\n ;(el as HTMLElement).style.height = ``\n }\n })\n}\n\nconst onAfterEnter = (el: Element) => {\n ;(el as HTMLElement).style.height = ``\n ;(el as HTMLElement).style.width = ``\n inCollapse = false\n}\n\nconst onAfterLeave = (el: Element) => {\n ;(el as HTMLElement).style.height = ``\n ;(el as HTMLElement).style.width = ``\n inCollapse = false\n}\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n isActive,\n computedNoAnimation,\n contentShowing,\n transitionProps,\n} = useShowHide(modelValue, props, emit as EmitFn, element, computedId, {\n // addShowClass: false,\n transitionProps: {\n onBeforeLeave,\n onEnter,\n onLeave,\n onAfterEnter,\n onAfterLeave,\n enterToClass: '',\n leaveToClass: '',\n enterFromClass: '',\n leaveFromClass: '',\n enterActiveClass: '',\n leaveActiveClass: '',\n },\n})\n\nconst computedClasses = computed(() => ({\n 'show': isActive.value,\n 'navbar-collapse': props.isNav,\n 'collapse-horizontal': props.horizontal,\n}))\n\nconst sharedSlots = computed<SharedSlotsData>(() => ({\n toggle,\n show,\n hide,\n id: computedId.value,\n visible: showRef.value,\n}))\n\ndefineExpose({\n hide,\n isNav: props.isNav,\n show,\n toggle,\n visible: readonly(showRef),\n})\n\nprovide(collapseInjectionKey, {\n id: computedId,\n hide,\n show,\n toggle,\n visible: readonly(showRef),\n isNav: toRef(() => props.isNav),\n})\n\nconst appRegistry = inject(\n globalCollapseStorageInjectionKey,\n undefined\n)?.({\n id: computedId.value,\n toggle,\n value: readonly(showRef),\n})\n\nonBeforeUnmount(() => {\n appRegistry?.unregister()\n})\n</script>\n"],"names":["_useModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,UAAM,SAAS;AAaT,UAAA,QAAQ,YAAY,QAAQ,WAAW;AAE7C,UAAM,OAAO;AA2BP,UAAA,aAAaA,SAElB,SAAA,YAAA;AAED,UAAM,aAAa,MAAM,MAAM,MAAM,IAAI,UAAU;AAE7C,UAAA,UAAU,eAA4B,UAAU;AAEtD,QAAI,aAAa;AACX,UAAA,UAAU,CAAC,OAAgB;AAClB,mBAAA;AACb,4BAAsB,MAAM;AAC1B,YAAI,MAAM,YAAY;AAClB,aAAmB,MAAM,QAAQ,GAAI,GAAmB,WAAW;AAAA,QAAA,OAChE;AACH,aAAmB,MAAM,SAAS,GAAI,GAAmB,YAAY;AAAA,QAAA;AAAA,MACzE,CACD;AAAA,IACH;AACM,UAAA,gBAAgB,CAAC,OAAgB;AACrC,UAAI,YAAY;AACd;AAAA,MAAA;AAEF,UAAI,MAAM,YAAY;AAClB,WAAmB,MAAM,QAAQ,GAAG,GAAG,WAAW;AAAA,MAAA,OAC/C;AACH,WAAmB,MAAM,SAAS,GAAG,GAAG,YAAY;AAAA,MAAA;AAGtD,SAAmB;AAAA,IACvB;AACM,UAAA,UAAU,CAAC,OAAgB;AAC/B,4BAAsB,MAAM;AAC1B,YAAI,MAAM,YAAY;AAClB,aAAmB,MAAM,QAAQ;AAAA,QAAA,OAC9B;AACH,aAAmB,MAAM,SAAS;AAAA,QAAA;AAAA,MACtC,CACD;AAAA,IACH;AAEM,UAAA,eAAe,CAAC,OAAgB;AAClC,SAAmB,MAAM,SAAS;AAClC,SAAmB,MAAM,QAAQ;AACtB,mBAAA;AAAA,IACf;AAEM,UAAA,eAAe,CAAC,OAAgB;AAClC,SAAmB,MAAM,SAAS;AAClC,SAAmB,MAAM,QAAQ;AACtB,mBAAA;AAAA,IACf;AAEM,UAAA;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,YAAY,YAAY,OAAO,MAAgB,SAAS,YAAY;AAAA;AAAA,MAEtE,iBAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,QAClB,kBAAkB;AAAA,MAAA;AAAA,IACpB,CACD;AAEK,UAAA,kBAAkB,SAAS,OAAO;AAAA,MACtC,QAAQ,SAAS;AAAA,MACjB,mBAAmB,MAAM;AAAA,MACzB,uBAAuB,MAAM;AAAA,IAAA,EAC7B;AAEI,UAAA,cAAc,SAA0B,OAAO;AAAA,MACnD;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI,WAAW;AAAA,MACf,SAAS,QAAQ;AAAA,IAAA,EACjB;AAEW,aAAA;AAAA,MACX;AAAA,MACA,OAAO,MAAM;AAAA,MACb;AAAA,MACA;AAAA,MACA,SAAS,SAAS,OAAO;AAAA,IAAA,CAC1B;AAED,YAAQ,sBAAsB;AAAA,MAC5B,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,SAAS,OAAO;AAAA,MACzB,OAAO,MAAM,MAAM,MAAM,KAAK;AAAA,IAAA,CAC/B;AAED,UAAM,eAAc;AAAA,MAClB;AAAA,MACA;AAAA,IAAA,MAFkB,mBAGhB;AAAA,MACF,IAAI,WAAW;AAAA,MACf;AAAA,MACA,OAAO,SAAS,OAAO;AAAA,IAAA;AAGzB,oBAAgB,MAAM;AACpB,iDAAa;AAAA,IAAW,CACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, mergeModels, useModel, inject, computed, useTemplateRef, ref, toRef, watch, provide, openBlock, createBlock, unref, normalizeClass, withCtx, createVNode, renderSlot, createTextVNode, toDisplayString, createElementVNode, createCommentVNode, Transition, mergeProps, withDirectives, normalizeStyle, vShow, nextTick } from "vue";
|
|
2
|
-
import { i as isBoundary, d as isRootBoundary, f as flip, s as shift, e as size, g as useFloating, h as autoUpdate, o as offset } from "./floatingUi-
|
|
2
|
+
import { i as isBoundary, d as isRootBoundary, f as flip, s as shift, e as size, g as useFloating, h as autoUpdate, o as offset } from "./floatingUi-Cnc0tLwM.mjs";
|
|
3
3
|
import { o as onKeyStroke, k as onClickOutside } from "./index-Cr5Qd2ql.mjs";
|
|
4
4
|
import { u as useDefaults } from "./useDefaults-dJMhLizZ.mjs";
|
|
5
5
|
import { u as useId } from "./useId-BR0P33VS.mjs";
|
|
@@ -8,7 +8,7 @@ import { _ as _sfc_main$1 } from "./ConditionalWrapper.vue_vue_type_script_lang-
|
|
|
8
8
|
import { _ as _sfc_main$3 } from "./ConditionalTeleport.vue_vue_type_script_lang-2PJ2jBTg.mjs";
|
|
9
9
|
import { g as getElement } from "./getElement-D_JPfLJS.mjs";
|
|
10
10
|
import { l as inputGroupKey, h as buttonGroupKey, v as dropdownInjectionKey } from "./keys-CsqIkltC.mjs";
|
|
11
|
-
import { u as useShowHide } from "./useShowHide-
|
|
11
|
+
import { u as useShowHide } from "./useShowHide-Bm1-pcPG.mjs";
|
|
12
12
|
import { u as useToNumber } from "./index-D3jGjWWk.mjs";
|
|
13
13
|
import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
|
|
14
14
|
const _hoisted_1 = { class: "visually-hidden" };
|
|
@@ -315,7 +315,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
315
315
|
disabled: !unref(props).teleportTo || unref(props).teleportDisabled
|
|
316
316
|
}, {
|
|
317
317
|
default: withCtx(() => [
|
|
318
|
-
unref(renderRef) || unref(contentShowing) ? (openBlock(), createBlock(Transition, mergeProps({ key: 0 }, unref(transitionProps), { appear:
|
|
318
|
+
unref(renderRef) || unref(contentShowing) ? (openBlock(), createBlock(Transition, mergeProps({ key: 0 }, unref(transitionProps), { appear: true }), {
|
|
319
319
|
default: withCtx(() => [
|
|
320
320
|
withDirectives(createElementVNode("ul", {
|
|
321
321
|
id: unref(computedId) + "-menu",
|
|
@@ -337,7 +337,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
337
337
|
])
|
|
338
338
|
]),
|
|
339
339
|
_: 3
|
|
340
|
-
}, 16
|
|
340
|
+
}, 16)) : createCommentVNode("", true)
|
|
341
341
|
]),
|
|
342
342
|
_: 3
|
|
343
343
|
}, 8, ["to", "disabled"])
|
|
@@ -347,8 +347,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
347
347
|
};
|
|
348
348
|
}
|
|
349
349
|
});
|
|
350
|
-
const BDropdown = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
350
|
+
const BDropdown = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-8e37d761"]]);
|
|
351
351
|
export {
|
|
352
352
|
BDropdown as B
|
|
353
353
|
};
|
|
354
|
-
//# sourceMappingURL=BDropdown-
|
|
354
|
+
//# sourceMappingURL=BDropdown-B9F_yem5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BDropdown-B9F_yem5.mjs","sources":["../src/components/BDropdown/BDropdown.vue"],"sourcesContent":["<template>\n <ConditionalWrapper\n :skip=\"inInputGroup || props.noWrapper\"\n :class=\"computedClasses\"\n :role=\"inButtonGroupAttributes?.role\"\n >\n <BButton\n :id=\"computedId\"\n ref=\"_splitButton\"\n :variant=\"props.splitVariant || props.variant\"\n :size=\"props.size\"\n :class=\"buttonClasses\"\n :disabled=\"props.splitDisabled || props.disabled\"\n :type=\"props.splitButtonType\"\n :aria-label=\"props.ariaLabel\"\n :aria-expanded=\"props.split ? undefined : showRef\"\n :aria-haspopup=\"props.split ? undefined : 'menu'\"\n :href=\"props.split ? props.splitHref : undefined\"\n :to=\"props.split && props.splitTo ? props.splitTo : undefined\"\n @click=\"onSplitClick\"\n >\n <slot name=\"button-content\"> {{ props.text }} </slot>\n </BButton>\n <BButton\n v-if=\"props.split\"\n :id=\"computedId + '-split'\"\n ref=\"_button\"\n :variant=\"props.variant\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :class=\"[props.toggleClass, {show: showRef}]\"\n class=\"dropdown-toggle-split dropdown-toggle\"\n :aria-expanded=\"showRef\"\n aria-haspopup=\"menu\"\n @click=\"onButtonClick\"\n >\n <span class=\"visually-hidden\">\n <slot name=\"toggle-text\">\n {{ props.toggleText }}\n </slot>\n </span>\n </BButton>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"!props.teleportTo || props.teleportDisabled\"\n >\n <Transition v-if=\"renderRef || contentShowing\" v-bind=\"transitionProps\" :appear=\"true\">\n <ul\n v-show=\"showRef\"\n :id=\"computedId + '-menu'\"\n ref=\"_floating\"\n :style=\"[floatingStyles, sizeStyles]\"\n class=\"dropdown-menu overflow-auto\"\n :class=\"[props.menuClass, computedMenuClasses]\"\n :aria-labelledby=\"computedId\"\n :role=\"props.role\"\n @click=\"onClickInside\"\n >\n <slot v-if=\"contentShowing\" :hide=\"hide\" :show=\"show\" :visible=\"showRef\" />\n </ul>\n </Transition>\n </ConditionalTeleport>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n type Boundary,\n flip,\n type Middleware,\n offset as offsetMiddleware,\n type RootBoundary,\n shift,\n size as sizeMiddleware,\n useFloating,\n} from '@floating-ui/vue'\nimport {onClickOutside, onKeyStroke, useToNumber} from '@vueuse/core'\nimport {\n computed,\n type CSSProperties,\n type EmitFn,\n inject,\n nextTick,\n provide,\n ref,\n toRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BDropdownProps} from '../../types/ComponentProps'\nimport {BvTriggerableEvent} from '../../utils'\nimport BButton from '../BButton/BButton.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {isBoundary, isRootBoundary} from '../../utils/floatingUi'\nimport {getElement} from '../../utils/getElement'\nimport {buttonGroupKey, dropdownInjectionKey, inputGroupKey} from '../../utils/keys'\nimport {useShowHide} from '../../composables/useShowHide'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFade: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n unmountLazy: false,\n role: 'menu',\n size: 'md',\n noWrapper: false,\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n placement: 'bottom-start',\n splitVariant: undefined,\n strategy: 'absolute',\n text: undefined,\n show: false,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n transProps: undefined,\n variant: 'secondary',\n visible: false,\n wrapperClass: undefined,\n})\nconst props = useDefaults(_props, 'BDropdown')\n\nconst emit = defineEmits<{\n 'click': [event: MouseEvent]\n 'hidden': [value: BvTriggerableEvent]\n 'hide': [value: BvTriggerableEvent]\n 'hide-prevented': [value: BvTriggerableEvent]\n 'show': [value: BvTriggerableEvent]\n 'show-prevented': [value: BvTriggerableEvent]\n 'shown': [value: BvTriggerableEvent]\n 'toggle': [value: BvTriggerableEvent]\n 'toggle-prevented': [value: BvTriggerableEvent]\n}>()\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'button-content'?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'default'?: (props: {hide: () => void; show: () => void; visible: boolean}) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'toggle-text'?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id, 'dropdown')\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\nconst inInputGroup = inject(inputGroupKey, false)\nconst inButtonGroup = inject(buttonGroupKey, false)\n\nconst computedOffset = computed(() =>\n typeof props.offset === 'string' || typeof props.offset === 'number' ? props.offset : NaN\n)\nconst offsetToNumber = useToNumber(computedOffset)\n\nconst floating = useTemplateRef<HTMLElement>('_floating')\nconst button = useTemplateRef<HTMLElement>('_button')\nconst splitButton = useTemplateRef<HTMLElement>('_splitButton')\n\nconst boundary = computed<Boundary | undefined>(() =>\n isBoundary(props.boundary) ? props.boundary : undefined\n)\nconst rootBoundary = computed<RootBoundary | undefined>(() =>\n isRootBoundary(props.boundary) ? props.boundary : undefined\n)\n\nconst referencePlacement = computed(() => (!props.split ? splitButton.value : button.value))\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n contentShowing,\n isVisible,\n} = useShowHide(modelValue, props, emit as EmitFn, referencePlacement, computedId)\n\nconst computedMenuClasses = computed(() => [\n {\n show: isVisible.value,\n fade: !computedNoAnimation.value,\n },\n])\n\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referencePlacement.value)?.focus()\n },\n {target: referencePlacement}\n)\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referencePlacement.value)?.focus()\n },\n {target: floating}\n)\n\nconst keynav = (e: Readonly<Event>, v: number) => {\n if (floating.value?.contains((e.target as HTMLElement)?.closest('form'))) return\n if (/input|select|option|textarea|form/i.test((e.target as HTMLElement)?.tagName)) return\n e.preventDefault()\n if (!showRef.value) {\n show()\n const loop = setInterval(() => {\n if (isVisible.value) {\n clearInterval(loop)\n nextTick(() => keynav(e, v))\n }\n }, 16)\n return\n }\n const list = floating.value?.querySelectorAll('.dropdown-item:not(.disabled):not(:disabled)')\n if (!list) return\n if (floating.value?.contains(document.activeElement)) {\n const active = floating.value.querySelector('.dropdown-item:focus')\n const index = Array.prototype.indexOf.call(list, active) + v\n if (index >= 0 && index < list?.length) (list[index] as HTMLElement)?.focus()\n } else {\n ;(list[v === -1 ? list.length - 1 : 0] as HTMLElement)?.focus()\n }\n}\n\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: referencePlacement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: referencePlacement})\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: floating})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: floating})\n\nconst sizeStyles = ref<CSSProperties>({})\nconst floatingMiddleware = computed<Middleware[]>(() => {\n if (props.floatingMiddleware !== undefined) {\n return props.floatingMiddleware\n }\n const localOffset =\n typeof props.offset === 'string' || typeof props.offset === 'number'\n ? offsetToNumber.value\n : props.offset\n const arr: Middleware[] = [offsetMiddleware(localOffset)]\n if (props.noFlip === false) {\n arr.push(\n flip({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noShift === false) {\n arr.push(\n shift({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noSize === false) {\n arr.push(\n sizeMiddleware({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n apply({availableWidth, availableHeight}) {\n sizeStyles.value = {\n maxHeight:\n availableHeight >= (floating.value?.scrollHeight ?? 0)\n ? undefined\n : availableHeight\n ? `${Math.max(0, availableHeight)}px`\n : undefined,\n maxWidth:\n availableWidth >= (floating.value?.scrollWidth ?? 0)\n ? undefined\n : availableWidth\n ? `${Math.max(0, availableWidth)}px`\n : undefined,\n }\n },\n })\n )\n }\n return arr\n})\nconst {update, floatingStyles} = useFloating(referencePlacement, floating, {\n placement: () => props.placement,\n middleware: floatingMiddleware,\n strategy: toRef(() => props.strategy),\n whileElementsMounted: autoUpdate,\n})\n\nconst inButtonGroupAttributes = inButtonGroup\n ? {\n class: 'btn-group',\n role: 'group',\n }\n : undefined\n\nconst computedClasses = computed(() => [\n inButtonGroupAttributes?.class,\n props.wrapperClass,\n {\n 'btn-group': !props.wrapperClass && props.split,\n 'dropdown': !props.wrapperClass && !props.split,\n 'position-static': props.boundary !== 'clippingAncestors' && !props.isNav,\n },\n])\n\nconst buttonClasses = computed(() => [\n props.split ? props.splitClass : props.toggleClass,\n {\n 'nav-link': props.isNav,\n 'dropdown-toggle': !props.split,\n 'dropdown-toggle-no-caret': props.noCaret && !props.split,\n 'show': props.split ? undefined : showRef.value,\n },\n])\n\nconst onButtonClick = () => {\n toggle()\n}\n\nconst onSplitClick = (event: Readonly<MouseEvent>) => {\n if (props.split) {\n emit('click', event)\n return\n }\n onButtonClick()\n}\n\nonClickOutside(\n floating,\n () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'outside')) {\n hide()\n }\n },\n {ignore: [button, splitButton]}\n)\nconst onClickInside = () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'inside')) {\n hide()\n }\n}\n\nwatch(isVisible, () => {\n update()\n})\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n\nprovide(dropdownInjectionKey, {\n id: computedId,\n show,\n hide,\n toggle,\n visible: toRef(() => showRef.value),\n isNav: toRef(() => props.isNav),\n})\n</script>\n<style lang=\"scss\" scoped>\n.dropdown-menu {\n &.fade {\n display: block;\n }\n}\n</style>\n"],"names":["_useModel","offsetMiddleware","sizeMiddleware"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("vue"),t=require("./floatingUi-
|
|
2
|
-
//# sourceMappingURL=BDropdown-
|
|
1
|
+
"use strict";const e=require("vue"),t=require("./floatingUi-crYfHchY.js"),o=require("./index-CSe17yC0.js"),a=require("./useDefaults-DrxHjHw2.js"),l=require("./useId-B5tsy2d5.js"),n=require("./BButton.vue_vue_type_script_setup_true_lang-B4cV85yE.js"),r=require("./ConditionalWrapper.vue_vue_type_script_lang-Du33jXia.js"),i=require("./ConditionalTeleport.vue_vue_type_script_lang-6a2bI705.js"),u=require("./getElement-Ca6iEV7Z.js"),d=require("./keys-DNjuQYyL.js"),s=require("./useShowHide-B9og7o3_.js"),p=require("./index-BqHkgtNq.js"),f=require("./_plugin-vue_export-helper-CC_fc8JW.js"),v={class:"visually-hidden"},c=["id","aria-labelledby","role"],g=e.defineComponent({__name:"BDropdown",props:e.mergeModels({ariaLabel:{default:void 0},autoClose:{type:[Boolean,String],default:!0},boundary:{default:"clippingAncestors"},boundaryPadding:{default:void 0},disabled:{type:Boolean,default:!1},floatingMiddleware:{default:void 0},id:{default:void 0},isNav:{type:Boolean,default:!1},menuClass:{default:void 0},noCaret:{type:Boolean,default:!1},noFlip:{type:Boolean,default:!1},noShift:{type:Boolean,default:!1},noSize:{type:Boolean,default:!1},offset:{default:0},role:{default:"menu"},size:{default:"md"},noWrapper:{type:Boolean,default:!1},split:{type:Boolean,default:!1},splitButtonType:{default:"button"},splitClass:{default:void 0},splitDisabled:{type:Boolean,default:void 0},splitHref:{default:void 0},splitTo:{default:void 0},splitVariant:{default:void 0},strategy:{default:"absolute"},text:{default:void 0},toggleClass:{default:void 0},toggleText:{default:"Toggle dropdown"},variant:{default:"secondary"},wrapperClass:{default:void 0},placement:{default:"bottom-start"},teleportDisabled:{type:Boolean,default:!1},teleportTo:{default:void 0},initialAnimation:{type:Boolean,default:!1},noAnimation:{type:Boolean},noFade:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},unmountLazy:{type:Boolean,default:!1},show:{type:Boolean,default:!1},transProps:{default:void 0},visible:{type:Boolean,default:!1}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:e.mergeModels(["click","hidden","hide","hide-prevented","show","show-prevented","shown","toggle","toggle-prevented"],["update:modelValue"]),setup(f,{expose:g,emit:y}){const m=f,b=a.useDefaults(m,"BDropdown"),h=y,w=l.useId((()=>b.id),"dropdown"),_=e.useModel(f,"modelValue"),B=e.inject(d.inputGroupKey,!1),C=e.inject(d.buttonGroupKey,!1),x=e.computed((()=>"string"==typeof b.offset||"number"==typeof b.offset?b.offset:NaN)),k=p.useToNumber(x),S=e.useTemplateRef("_floating"),T=e.useTemplateRef("_button"),N=e.useTemplateRef("_splitButton"),z=e.computed((()=>t.isBoundary(b.boundary)?b.boundary:void 0)),j=e.computed((()=>t.isRootBoundary(b.boundary)?b.boundary:void 0)),q=e.computed((()=>b.split?T.value:N.value)),{showRef:D,renderRef:V,hide:A,show:M,toggle:E,computedNoAnimation:K,transitionProps:R,contentShowing:H,isVisible:P}=s.useShowHide(_,b,h,q,w),W=e.computed((()=>[{show:P.value,fade:!K.value}]));o.onKeyStroke("Escape",(()=>{var e;A(),null==(e=u.getElement(q.value))||e.focus()}),{target:q}),o.onKeyStroke("Escape",(()=>{var e;A(),null==(e=u.getElement(q.value))||e.focus()}),{target:S});const I=(t,o)=>{var a,l,n,r,i,u,d;if(null==(l=S.value)?void 0:l.contains(null==(a=t.target)?void 0:a.closest("form")))return;if(/input|select|option|textarea|form/i.test(null==(n=t.target)?void 0:n.tagName))return;if(t.preventDefault(),!D.value){M();const a=setInterval((()=>{P.value&&(clearInterval(a),e.nextTick((()=>I(t,o))))}),16);return}const s=null==(r=S.value)?void 0:r.querySelectorAll(".dropdown-item:not(.disabled):not(:disabled)");if(s)if(null==(i=S.value)?void 0:i.contains(document.activeElement)){const e=S.value.querySelector(".dropdown-item:focus"),t=Array.prototype.indexOf.call(s,e)+o;t>=0&&t<(null==s?void 0:s.length)&&(null==(u=s[t])||u.focus())}else null==(d=s[-1===o?s.length-1:0])||d.focus()};o.onKeyStroke("ArrowUp",(e=>I(e,-1)),{target:q}),o.onKeyStroke("ArrowDown",(e=>I(e,1)),{target:q}),o.onKeyStroke("ArrowUp",(e=>I(e,-1)),{target:S}),o.onKeyStroke("ArrowDown",(e=>I(e,1)),{target:S});const $=e.ref({}),F=e.computed((()=>{if(void 0!==b.floatingMiddleware)return b.floatingMiddleware;const e="string"==typeof b.offset||"number"==typeof b.offset?k.value:b.offset,o=[t.offset(e)];return!1===b.noFlip&&o.push(t.flip({boundary:z.value,rootBoundary:j.value,padding:b.boundaryPadding})),!1===b.noShift&&o.push(t.shift({boundary:z.value,rootBoundary:j.value,padding:b.boundaryPadding})),!1===b.noSize&&o.push(t.size({boundary:z.value,rootBoundary:j.value,padding:b.boundaryPadding,apply({availableWidth:e,availableHeight:t}){var o,a;$.value={maxHeight:t>=((null==(o=S.value)?void 0:o.scrollHeight)??0)?void 0:t?`${Math.max(0,t)}px`:void 0,maxWidth:e>=((null==(a=S.value)?void 0:a.scrollWidth)??0)?void 0:e?`${Math.max(0,e)}px`:void 0}}})),o})),{update:U,floatingStyles:G}=t.useFloating(q,S,{placement:()=>b.placement,middleware:F,strategy:e.toRef((()=>b.strategy)),whileElementsMounted:t.autoUpdate}),L=C?{class:"btn-group",role:"group"}:void 0,O=e.computed((()=>[null==L?void 0:L.class,b.wrapperClass,{"btn-group":!b.wrapperClass&&b.split,dropdown:!b.wrapperClass&&!b.split,"position-static":"clippingAncestors"!==b.boundary&&!b.isNav}])),X=e.computed((()=>[b.split?b.splitClass:b.toggleClass,{"nav-link":b.isNav,"dropdown-toggle":!b.split,"dropdown-toggle-no-caret":b.noCaret&&!b.split,show:b.split?void 0:D.value}])),Z=()=>{E()},J=e=>{b.split?h("click",e):Z()};o.onClickOutside(S,(()=>{!D.value||!0!==b.autoClose&&"outside"!==b.autoClose||A()}),{ignore:[T,N]});const Q=()=>{!D.value||!0!==b.autoClose&&"inside"!==b.autoClose||A()};return e.watch(P,(()=>{U()})),g({hide:A,show:M,toggle:E}),e.provide(d.dropdownInjectionKey,{id:w,show:M,hide:A,toggle:E,visible:e.toRef((()=>D.value)),isNav:e.toRef((()=>b.isNav))}),(t,o)=>{var a;return e.openBlock(),e.createBlock(r._sfc_main,{skip:e.unref(B)||e.unref(b).noWrapper,class:e.normalizeClass(O.value),role:null==(a=e.unref(L))?void 0:a.role},{default:e.withCtx((()=>[e.createVNode(n._sfc_main,{id:e.unref(w),ref:"_splitButton",variant:e.unref(b).splitVariant||e.unref(b).variant,size:e.unref(b).size,class:e.normalizeClass(X.value),disabled:e.unref(b).splitDisabled||e.unref(b).disabled,type:e.unref(b).splitButtonType,"aria-label":e.unref(b).ariaLabel,"aria-expanded":e.unref(b).split?void 0:e.unref(D),"aria-haspopup":e.unref(b).split?void 0:"menu",href:e.unref(b).split?e.unref(b).splitHref:void 0,to:e.unref(b).split&&e.unref(b).splitTo?e.unref(b).splitTo:void 0,onClick:J},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"button-content",{},(()=>[e.createTextVNode(e.toDisplayString(e.unref(b).text),1)]),!0)])),_:3},8,["id","variant","size","class","disabled","type","aria-label","aria-expanded","aria-haspopup","href","to"]),e.unref(b).split?(e.openBlock(),e.createBlock(n._sfc_main,{key:0,id:e.unref(w)+"-split",ref:"_button",variant:e.unref(b).variant,size:e.unref(b).size,disabled:e.unref(b).disabled,class:e.normalizeClass([[e.unref(b).toggleClass,{show:e.unref(D)}],"dropdown-toggle-split dropdown-toggle"]),"aria-expanded":e.unref(D),"aria-haspopup":"menu",onClick:Z},{default:e.withCtx((()=>[e.createElementVNode("span",v,[e.renderSlot(t.$slots,"toggle-text",{},(()=>[e.createTextVNode(e.toDisplayString(e.unref(b).toggleText),1)]),!0)])])),_:3},8,["id","variant","size","disabled","class","aria-expanded"])):e.createCommentVNode("",!0),e.createVNode(i._sfc_main,{to:e.unref(b).teleportTo,disabled:!e.unref(b).teleportTo||e.unref(b).teleportDisabled},{default:e.withCtx((()=>[e.unref(V)||e.unref(H)?(e.openBlock(),e.createBlock(e.Transition,e.mergeProps({key:0},e.unref(R),{appear:!0}),{default:e.withCtx((()=>[e.withDirectives(e.createElementVNode("ul",{id:e.unref(w)+"-menu",ref:"_floating",style:e.normalizeStyle([e.unref(G),$.value]),class:e.normalizeClass(["dropdown-menu overflow-auto",[e.unref(b).menuClass,W.value]]),"aria-labelledby":e.unref(w),role:e.unref(b).role,onClick:Q},[e.unref(H)?e.renderSlot(t.$slots,"default",{key:0,hide:e.unref(A),show:e.unref(M),visible:e.unref(D)},void 0,!0):e.createCommentVNode("",!0)],14,c),[[e.vShow,e.unref(D)]])])),_:3},16)):e.createCommentVNode("",!0)])),_:3},8,["to","disabled"])])),_:3},8,["skip","class","role"])}}}),y=f._export_sfc(g,[["__scopeId","data-v-8e37d761"]]);exports.BDropdown=y;
|
|
2
|
+
//# sourceMappingURL=BDropdown-Dbc_0OXW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BDropdown-Dbc_0OXW.js","sources":["../src/components/BDropdown/BDropdown.vue"],"sourcesContent":["<template>\n <ConditionalWrapper\n :skip=\"inInputGroup || props.noWrapper\"\n :class=\"computedClasses\"\n :role=\"inButtonGroupAttributes?.role\"\n >\n <BButton\n :id=\"computedId\"\n ref=\"_splitButton\"\n :variant=\"props.splitVariant || props.variant\"\n :size=\"props.size\"\n :class=\"buttonClasses\"\n :disabled=\"props.splitDisabled || props.disabled\"\n :type=\"props.splitButtonType\"\n :aria-label=\"props.ariaLabel\"\n :aria-expanded=\"props.split ? undefined : showRef\"\n :aria-haspopup=\"props.split ? undefined : 'menu'\"\n :href=\"props.split ? props.splitHref : undefined\"\n :to=\"props.split && props.splitTo ? props.splitTo : undefined\"\n @click=\"onSplitClick\"\n >\n <slot name=\"button-content\"> {{ props.text }} </slot>\n </BButton>\n <BButton\n v-if=\"props.split\"\n :id=\"computedId + '-split'\"\n ref=\"_button\"\n :variant=\"props.variant\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :class=\"[props.toggleClass, {show: showRef}]\"\n class=\"dropdown-toggle-split dropdown-toggle\"\n :aria-expanded=\"showRef\"\n aria-haspopup=\"menu\"\n @click=\"onButtonClick\"\n >\n <span class=\"visually-hidden\">\n <slot name=\"toggle-text\">\n {{ props.toggleText }}\n </slot>\n </span>\n </BButton>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"!props.teleportTo || props.teleportDisabled\"\n >\n <Transition v-if=\"renderRef || contentShowing\" v-bind=\"transitionProps\" :appear=\"true\">\n <ul\n v-show=\"showRef\"\n :id=\"computedId + '-menu'\"\n ref=\"_floating\"\n :style=\"[floatingStyles, sizeStyles]\"\n class=\"dropdown-menu overflow-auto\"\n :class=\"[props.menuClass, computedMenuClasses]\"\n :aria-labelledby=\"computedId\"\n :role=\"props.role\"\n @click=\"onClickInside\"\n >\n <slot v-if=\"contentShowing\" :hide=\"hide\" :show=\"show\" :visible=\"showRef\" />\n </ul>\n </Transition>\n </ConditionalTeleport>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n type Boundary,\n flip,\n type Middleware,\n offset as offsetMiddleware,\n type RootBoundary,\n shift,\n size as sizeMiddleware,\n useFloating,\n} from '@floating-ui/vue'\nimport {onClickOutside, onKeyStroke, useToNumber} from '@vueuse/core'\nimport {\n computed,\n type CSSProperties,\n type EmitFn,\n inject,\n nextTick,\n provide,\n ref,\n toRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BDropdownProps} from '../../types/ComponentProps'\nimport {BvTriggerableEvent} from '../../utils'\nimport BButton from '../BButton/BButton.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {isBoundary, isRootBoundary} from '../../utils/floatingUi'\nimport {getElement} from '../../utils/getElement'\nimport {buttonGroupKey, dropdownInjectionKey, inputGroupKey} from '../../utils/keys'\nimport {useShowHide} from '../../composables/useShowHide'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFade: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n unmountLazy: false,\n role: 'menu',\n size: 'md',\n noWrapper: false,\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n placement: 'bottom-start',\n splitVariant: undefined,\n strategy: 'absolute',\n text: undefined,\n show: false,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n transProps: undefined,\n variant: 'secondary',\n visible: false,\n wrapperClass: undefined,\n})\nconst props = useDefaults(_props, 'BDropdown')\n\nconst emit = defineEmits<{\n 'click': [event: MouseEvent]\n 'hidden': [value: BvTriggerableEvent]\n 'hide': [value: BvTriggerableEvent]\n 'hide-prevented': [value: BvTriggerableEvent]\n 'show': [value: BvTriggerableEvent]\n 'show-prevented': [value: BvTriggerableEvent]\n 'shown': [value: BvTriggerableEvent]\n 'toggle': [value: BvTriggerableEvent]\n 'toggle-prevented': [value: BvTriggerableEvent]\n}>()\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'button-content'?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'default'?: (props: {hide: () => void; show: () => void; visible: boolean}) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'toggle-text'?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id, 'dropdown')\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\nconst inInputGroup = inject(inputGroupKey, false)\nconst inButtonGroup = inject(buttonGroupKey, false)\n\nconst computedOffset = computed(() =>\n typeof props.offset === 'string' || typeof props.offset === 'number' ? props.offset : NaN\n)\nconst offsetToNumber = useToNumber(computedOffset)\n\nconst floating = useTemplateRef<HTMLElement>('_floating')\nconst button = useTemplateRef<HTMLElement>('_button')\nconst splitButton = useTemplateRef<HTMLElement>('_splitButton')\n\nconst boundary = computed<Boundary | undefined>(() =>\n isBoundary(props.boundary) ? props.boundary : undefined\n)\nconst rootBoundary = computed<RootBoundary | undefined>(() =>\n isRootBoundary(props.boundary) ? props.boundary : undefined\n)\n\nconst referencePlacement = computed(() => (!props.split ? splitButton.value : button.value))\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n contentShowing,\n isVisible,\n} = useShowHide(modelValue, props, emit as EmitFn, referencePlacement, computedId)\n\nconst computedMenuClasses = computed(() => [\n {\n show: isVisible.value,\n fade: !computedNoAnimation.value,\n },\n])\n\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referencePlacement.value)?.focus()\n },\n {target: referencePlacement}\n)\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referencePlacement.value)?.focus()\n },\n {target: floating}\n)\n\nconst keynav = (e: Readonly<Event>, v: number) => {\n if (floating.value?.contains((e.target as HTMLElement)?.closest('form'))) return\n if (/input|select|option|textarea|form/i.test((e.target as HTMLElement)?.tagName)) return\n e.preventDefault()\n if (!showRef.value) {\n show()\n const loop = setInterval(() => {\n if (isVisible.value) {\n clearInterval(loop)\n nextTick(() => keynav(e, v))\n }\n }, 16)\n return\n }\n const list = floating.value?.querySelectorAll('.dropdown-item:not(.disabled):not(:disabled)')\n if (!list) return\n if (floating.value?.contains(document.activeElement)) {\n const active = floating.value.querySelector('.dropdown-item:focus')\n const index = Array.prototype.indexOf.call(list, active) + v\n if (index >= 0 && index < list?.length) (list[index] as HTMLElement)?.focus()\n } else {\n ;(list[v === -1 ? list.length - 1 : 0] as HTMLElement)?.focus()\n }\n}\n\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: referencePlacement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: referencePlacement})\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: floating})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: floating})\n\nconst sizeStyles = ref<CSSProperties>({})\nconst floatingMiddleware = computed<Middleware[]>(() => {\n if (props.floatingMiddleware !== undefined) {\n return props.floatingMiddleware\n }\n const localOffset =\n typeof props.offset === 'string' || typeof props.offset === 'number'\n ? offsetToNumber.value\n : props.offset\n const arr: Middleware[] = [offsetMiddleware(localOffset)]\n if (props.noFlip === false) {\n arr.push(\n flip({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noShift === false) {\n arr.push(\n shift({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noSize === false) {\n arr.push(\n sizeMiddleware({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n apply({availableWidth, availableHeight}) {\n sizeStyles.value = {\n maxHeight:\n availableHeight >= (floating.value?.scrollHeight ?? 0)\n ? undefined\n : availableHeight\n ? `${Math.max(0, availableHeight)}px`\n : undefined,\n maxWidth:\n availableWidth >= (floating.value?.scrollWidth ?? 0)\n ? undefined\n : availableWidth\n ? `${Math.max(0, availableWidth)}px`\n : undefined,\n }\n },\n })\n )\n }\n return arr\n})\nconst {update, floatingStyles} = useFloating(referencePlacement, floating, {\n placement: () => props.placement,\n middleware: floatingMiddleware,\n strategy: toRef(() => props.strategy),\n whileElementsMounted: autoUpdate,\n})\n\nconst inButtonGroupAttributes = inButtonGroup\n ? {\n class: 'btn-group',\n role: 'group',\n }\n : undefined\n\nconst computedClasses = computed(() => [\n inButtonGroupAttributes?.class,\n props.wrapperClass,\n {\n 'btn-group': !props.wrapperClass && props.split,\n 'dropdown': !props.wrapperClass && !props.split,\n 'position-static': props.boundary !== 'clippingAncestors' && !props.isNav,\n },\n])\n\nconst buttonClasses = computed(() => [\n props.split ? props.splitClass : props.toggleClass,\n {\n 'nav-link': props.isNav,\n 'dropdown-toggle': !props.split,\n 'dropdown-toggle-no-caret': props.noCaret && !props.split,\n 'show': props.split ? undefined : showRef.value,\n },\n])\n\nconst onButtonClick = () => {\n toggle()\n}\n\nconst onSplitClick = (event: Readonly<MouseEvent>) => {\n if (props.split) {\n emit('click', event)\n return\n }\n onButtonClick()\n}\n\nonClickOutside(\n floating,\n () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'outside')) {\n hide()\n }\n },\n {ignore: [button, splitButton]}\n)\nconst onClickInside = () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'inside')) {\n hide()\n }\n}\n\nwatch(isVisible, () => {\n update()\n})\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n\nprovide(dropdownInjectionKey, {\n id: computedId,\n show,\n hide,\n toggle,\n visible: toRef(() => showRef.value),\n isNav: toRef(() => props.isNav),\n})\n</script>\n<style lang=\"scss\" scoped>\n.dropdown-menu {\n &.fade {\n display: block;\n }\n}\n</style>\n"],"names":["_props","__props","props","useDefaults","emit","__emit","computedId","useId","id","modelValue","_useModel","inInputGroup","inject","inputGroupKey","inButtonGroup","buttonGroupKey","computedOffset","computed","offset","NaN","offsetToNumber","useToNumber","floating","useTemplateRef","button","splitButton","boundary","isBoundary","rootBoundary","isRootBoundary","referencePlacement","split","value","showRef","renderRef","hide","show","toggle","computedNoAnimation","transitionProps","contentShowing","isVisible","useShowHide","computedMenuClasses","fade","index$1","onKeyStroke","getElement","_a","focus","target","keynav","e","v","_b","contains","closest","test","_c","tagName","preventDefault","loop","setInterval","clearInterval","nextTick","list","_d","querySelectorAll","_e","document","activeElement","active","querySelector","index","Array","prototype","indexOf","call","length","_f","_g","sizeStyles","ref","floatingMiddleware","localOffset","arr","offsetMiddleware","noFlip","push","flip","padding","boundaryPadding","noShift","shift","noSize","sizeMiddleware","apply","availableWidth","availableHeight","maxHeight","scrollHeight","Math","max","maxWidth","scrollWidth","update","floatingStyles","useFloating","placement","middleware","strategy","toRef","whileElementsMounted","autoUpdate","inButtonGroupAttributes","class","role","computedClasses","wrapperClass","dropdown","isNav","buttonClasses","splitClass","toggleClass","noCaret","onButtonClick","onSplitClick","event","onClickOutside","autoClose","ignore","onClickInside","vue","watch","__expose","provide","dropdownInjectionKey","visible"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("vue"),o=require("./useDefaults-DrxHjHw2.js"),a=require("./index-CSe17yC0.js"),l=require("./useSafeScrollLock-KuIWyOZc.js"),t=require("./BButton.vue_vue_type_script_setup_true_lang-B4cV85yE.js"),r=require("./BCloseButton.vue_vue_type_script_setup_true_lang-CjS6g5F8.js"),n=require("./useId-B5tsy2d5.js"),d=require("./dom-D5l3V401.js"),s=require("./useColorVariantClasses-CE658Sm0.js"),u=require("./useModalManager-i5v49dH9.js"),i=require("./useShowHide-CK93wwAA.js"),c=require("./ConditionalTeleport.vue_vue_type_script_lang-6a2bI705.js"),f=require("./_plugin-vue_export-helper-CC_fc8JW.js"),p=require("./src/composables/useModalController/index.umd.js"),m=["id","aria-labelledby","aria-describedby"],v=["id"],B="modal-fallback-focus",k=e.defineComponent({inheritAttrs:!1,__name:"BModal",props:e.mergeModels({autofocus:{type:Boolean,default:!0},autofocusButton:{default:void 0},backdropFirst:{type:Boolean,default:!1},body:{default:void 0},bodyAttrs:{default:void 0},bodyBgVariant:{default:null},bodyClass:{default:null},bodyScrolling:{type:Boolean,default:!1},bodyTextVariant:{default:null},bodyVariant:{default:null},busy:{type:Boolean,default:!1},buttonSize:{default:"md"},cancelDisabled:{type:Boolean,default:!1},cancelTitle:{default:"Cancel"},cancelVariant:{default:"secondary"},centered:{type:Boolean,default:!1},contentClass:{default:void 0},dialogClass:{default:void 0},footerBgVariant:{default:null},footerBorderVariant:{default:null},footerClass:{default:void 0},footerTextVariant:{default:null},footerVariant:{default:null},fullscreen:{type:[Boolean,String],default:!1},headerBgVariant:{default:null},headerBorderVariant:{default:null},headerClass:{default:void 0},headerCloseClass:{default:void 0},headerCloseLabel:{default:"Close"},headerCloseVariant:{default:"secondary"},headerTextVariant:{default:null},headerVariant:{default:null},noBackdrop:{type:Boolean,default:!1},noFooter:{type:Boolean,default:!1},noHeader:{type:Boolean,default:!1},noHeaderClose:{type:Boolean,default:!1},id:{default:void 0},modalClass:{default:void 0},noCloseOnBackdrop:{type:Boolean,default:!1},noCloseOnEsc:{type:Boolean,default:!1},noTrap:{type:Boolean,default:!1},noStacking:{type:Boolean},okDisabled:{type:Boolean,default:!1},okOnly:{type:Boolean,default:!1},okTitle:{default:"OK"},okVariant:{default:"primary"},scrollable:{type:Boolean,default:!1},size:{default:"md"},title:{default:void 0},titleClass:{default:void 0},titleVisuallyHidden:{type:Boolean,default:!1},titleTag:{default:"h5"},teleportDisabled:{type:Boolean,default:!1},teleportTo:{default:"body"},initialAnimation:{type:Boolean,default:!1},noAnimation:{type:Boolean},noFade:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},unmountLazy:{type:Boolean,default:!1},show:{type:Boolean,default:!1},transProps:{default:void 0},visible:{type:Boolean,default:!1}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:e.mergeModels(["backdrop","cancel","close","esc","hidden","hide","hide-prevented","ok","show","show-prevented","shown"],["update:modelValue"]),setup(f,{expose:p,emit:k}){const y=f,b=o.useDefaults(y,"BModal"),V=k,C=e.useSlots(),_=n.useId((()=>b.id),"modal"),g=e.useModel(f,"modelValue"),h=e.useTemplateRef("_element"),S=e.useTemplateRef("_fallbackFocusElement"),x=e.useTemplateRef("_okButton"),T=e.useTemplateRef("_cancelButton"),z=e.useTemplateRef("_closeButton"),w=()=>{!1!==b.autofocus&&("ok"===b.autofocusButton?W.value=!0:"close"===b.autofocusButton?Y.value=!0:"cancel"===b.autofocusButton?X.value=!0:U.value=!0)},{showRef:P,renderRef:D,renderBackdropRef:N,hide:E,show:F,toggle:M,computedNoAnimation:$,transitionProps:R,backdropTransitionProps:q,isLeaving:j,isVisible:H,trapActive:A,contentShowing:L,backdropReady:O,backdropVisible:I}=i.useShowHide(g,b,V,h,_,{transitionProps:{onAfterEnter:w}}),{needsFallback:K}=l.useActivatedFocusTrap({element:h,isActive:A,noTrap:()=>b.noTrap,fallbackFocus:{ref:S,classSelector:B}});a.onKeyStroke("Escape",(()=>{E("esc")}),{target:h}),l.useSafeScrollLock(P,(()=>b.bodyScrolling));const{focused:U}=a.useFocus(h,{initialValue:g.value&&void 0===b.autofocusButton&&!0===b.autofocus}),{focused:W}=a.useFocus(x,{initialValue:g.value&&"ok"===b.autofocusButton&&!0===b.autofocus}),{focused:X}=a.useFocus(T,{initialValue:g.value&&"cancel"===b.autofocusButton&&!0===b.autofocus}),{focused:Y}=a.useFocus(z,{initialValue:g.value&&"close"===b.autofocusButton&&!0===b.autofocus}),G=e.computed((()=>!d.isEmptySlot(C["header-close"]))),J=e.computed((()=>[b.dialogClass,{"modal-fullscreen":!0===b.fullscreen,[`modal-fullscreen-${b.fullscreen}-down`]:"string"==typeof b.fullscreen,[`modal-${b.size}`]:"md"!==b.size,"modal-dialog-centered":b.centered,"modal-dialog-scrollable":b.scrollable}])),Q=s.useColorVariantClasses((()=>({bgVariant:b.bodyBgVariant,textVariant:b.bodyTextVariant,variant:b.bodyVariant}))),Z=e.computed((()=>[b.bodyClass,Q.value])),ee=s.useColorVariantClasses((()=>({bgVariant:b.headerBgVariant,textVariant:b.headerTextVariant,variant:b.headerVariant,borderVariant:b.headerBorderVariant}))),oe=e.computed((()=>[b.headerClass,ee.value])),ae=e.computed((()=>({variant:G.value?b.headerCloseVariant:void 0,class:b.headerCloseClass}))),le=s.useColorVariantClasses((()=>({bgVariant:b.footerBgVariant,textVariant:b.footerTextVariant,variant:b.footerVariant,borderVariant:b.footerBorderVariant}))),te=e.computed((()=>[b.footerClass,le.value])),re=e.computed((()=>[b.titleClass,{"visually-hidden":b.titleVisuallyHidden}])),ne=e.computed((()=>b.cancelDisabled||b.busy)),de=e.computed((()=>b.okDisabled||b.busy)),{activePosition:se,activeModalCount:ue,stackWithoutSelf:ie}=u.useModalManager(P,g.value);e.watch(ie,((e,o)=>{e.length>o.length&&!0===P.value&&!0===b.noStacking&&E()}));const ce=e.computed((()=>P.value||j.value?1056-(2*((null==ue?void 0:ue.value)??0)-2*((null==se?void 0:se.value)??0)):1056)),fe=e.computed((()=>({"z-index":ce.value}))),pe=e.computed((()=>({"z-index":ce.value-1}))),me=e.computed((()=>({cancel:()=>{E("cancel")},close:()=>{E("close")},hide:E,ok:()=>{E("ok")},active:P.value,visible:P.value})));return p({hide:E,id:_,show:F,toggle:M}),(o,a)=>(e.openBlock(),e.createBlock(c._sfc_main,{to:e.unref(b).teleportTo,disabled:e.unref(b).teleportDisabled},{default:e.withCtx((()=>[e.unref(D)||e.unref(L)?(e.openBlock(),e.createBlock(e.Transition,e.mergeProps({key:0},e.unref(R),{appear:g.value,onAfterEnter:w}),{default:e.withCtx((()=>[e.withDirectives(e.createElementVNode("div",e.mergeProps({id:e.unref(_),ref:"_element",class:["modal",[e.unref(b).modalClass,{fade:!e.unref($),show:e.unref(H)}]],role:"dialog","aria-labelledby":e.unref(b).noHeader?void 0:`${e.unref(_)}-label`,"aria-describedby":`${e.unref(_)}-body`,tabindex:"-1"},o.$attrs,{style:fe.value,onClick:a[4]||(a[4]=e.withModifiers((o=>e.unref(E)("backdrop")),["self"]))}),[e.createElementVNode("div",{class:e.normalizeClass(["modal-dialog",J.value])},[e.unref(L)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["modal-content",e.unref(b).contentClass])},[e.unref(b).noHeader?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["modal-header",oe.value])},[e.renderSlot(o.$slots,"header",e.normalizeProps(e.guardReactiveProps(me.value)),(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(b).titleTag),{id:`${e.unref(_)}-label`,class:e.normalizeClass(["modal-title",re.value])},{default:e.withCtx((()=>[e.renderSlot(o.$slots,"title",e.normalizeProps(e.guardReactiveProps(me.value)),(()=>[e.createTextVNode(e.toDisplayString(e.unref(b).title),1)]),!0)])),_:3},8,["id","class"])),e.unref(b).noHeaderClose?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[G.value?(e.openBlock(),e.createBlock(t._sfc_main,e.mergeProps({key:0},ae.value,{onClick:a[0]||(a[0]=o=>e.unref(E)("close"))}),{default:e.withCtx((()=>[e.renderSlot(o.$slots,"header-close",{},void 0,!0)])),_:3},16)):(e.openBlock(),e.createBlock(r._sfc_main,e.mergeProps({key:1,"aria-label":e.unref(b).headerCloseLabel},ae.value,{onClick:a[1]||(a[1]=o=>e.unref(E)("close"))}),null,16,["aria-label"]))],64))]),!0)],2)),e.createElementVNode("div",e.mergeProps({id:`${e.unref(_)}-body`,class:["modal-body",Z.value]},e.unref(b).bodyAttrs),[e.renderSlot(o.$slots,"default",e.normalizeProps(e.guardReactiveProps(me.value)),(()=>[e.createTextVNode(e.toDisplayString(e.unref(b).body),1)]),!0)],16,v),e.unref(b).noFooter?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["modal-footer",te.value])},[e.renderSlot(o.$slots,"footer",e.normalizeProps(e.guardReactiveProps(me.value)),(()=>[e.renderSlot(o.$slots,"cancel",e.normalizeProps(e.guardReactiveProps(me.value)),(()=>[e.unref(b).okOnly?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(t._sfc_main,{key:0,ref:"_cancelButton",disabled:ne.value,size:e.unref(b).buttonSize,variant:e.unref(b).cancelVariant,onClick:a[2]||(a[2]=o=>e.unref(E)("cancel"))},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(e.unref(b).cancelTitle),1)])),_:1},8,["disabled","size","variant"]))]),!0),e.renderSlot(o.$slots,"ok",e.normalizeProps(e.guardReactiveProps(me.value)),(()=>[e.createVNode(t._sfc_main,{ref:"_okButton",disabled:de.value,size:e.unref(b).buttonSize,variant:e.unref(b).okVariant,onClick:a[3]||(a[3]=o=>e.unref(E)("ok"))},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(e.unref(b).okTitle),1)])),_:1},8,["disabled","size","variant"])]),!0)]),!0)],2))],2)):e.createCommentVNode("",!0)],2),e.unref(K)?(e.openBlock(),e.createElementBlock("div",{key:0,ref:"_fallbackFocusElement",class:e.normalizeClass(B),tabindex:"0",style:{width:"0",height:"0",overflow:"hidden"}},null,512)):e.createCommentVNode("",!0)],16,m),[[e.vShow,e.unref(P)&&(e.unref(O)&&e.unref(b).backdropFirst||!e.unref(b).backdropFirst)]])])),_:3},16,["appear"])):e.createCommentVNode("",!0),e.unref(b).noBackdrop?e.createCommentVNode("",!0):e.renderSlot(o.$slots,"backdrop",e.normalizeProps(e.mergeProps({key:1},me.value)),(()=>[e.unref(N)?(e.openBlock(),e.createBlock(e.Transition,e.normalizeProps(e.mergeProps({key:0},e.unref(q))),{default:e.withCtx((()=>[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["modal-backdrop",{fade:!e.unref($),show:e.unref(I)||e.unref($)}]),style:e.normalizeStyle(pe.value),onClick:a[5]||(a[5]=o=>e.unref(E)("backdrop"))},null,6),[[e.vShow,e.unref(P)||e.unref(j)&&e.unref(b).backdropFirst&&!e.unref($)]])])),_:1},16)):e.createCommentVNode("",!0)]),!0)])),_:3},8,["to","disabled"]))}}),y=f._export_sfc(k,[["__scopeId","data-v-6fa3fb99"]]),b=e.defineComponent({inheritAttrs:!1,__name:"BModalOrchestrator",props:{teleportDisabled:{type:Boolean,default:!1},teleportTo:{default:"body"}},setup(a,{expose:l}){const t=a,r=o.useDefaults(t,"BModalOrchestrator"),n=p.useModalController();return l({...n}),(o,a)=>(e.openBlock(),e.createBlock(c._sfc_main,{to:e.unref(r).teleportTo,disabled:e.unref(r).teleportDisabled},{default:e.withCtx((()=>{var a;return[e.createElementVNode("div",e.mergeProps({id:"__BVID__modal-container"},o.$attrs),[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(null==(a=e.unref(n).modals)?void 0:a.value,(([o,a])=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.component??y),e.mergeProps({key:o,ref_for:!0},a.props,{modelValue:a.props._modelValue,"onUpdate:modelValue":[e=>a.props._modelValue=e,a=>{var l,t;return null==(t=(l=e.unref(n)).leave)?void 0:t.call(l,o)}],"initial-animation":"","teleport-disabled":!0,onHide:e=>{if(!0===a.props._isConfirm){if("ok"===e.trigger)return void a.props._promise.resolve(!0);if("cancel"===e.trigger)return void a.props._promise.resolve(!1);a.props._promise.resolve(null)}a.props._promise.resolve(!0)},onHidden:a=>{var l,t;return null==(t=(l=e.unref(n)).remove)?void 0:t.call(l,o)}}),null,16,["modelValue","onUpdate:modelValue","onHide","onHidden"])))),128))],16)]})),_:1},8,["to","disabled"]))}});exports.BModal=y,exports._sfc_main=b;
|
|
2
|
-
//# sourceMappingURL=BModalOrchestrator.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
"use strict";const e=require("vue"),o=require("./useDefaults-DrxHjHw2.js"),a=require("./index-CSe17yC0.js"),l=require("./useSafeScrollLock-KuIWyOZc.js"),t=require("./BButton.vue_vue_type_script_setup_true_lang-B4cV85yE.js"),r=require("./BCloseButton.vue_vue_type_script_setup_true_lang-CjS6g5F8.js"),n=require("./useId-B5tsy2d5.js"),d=require("./dom-D5l3V401.js"),s=require("./useColorVariantClasses-CE658Sm0.js"),u=require("./useModalManager-i5v49dH9.js"),i=require("./useShowHide-B9og7o3_.js"),c=require("./ConditionalTeleport.vue_vue_type_script_lang-6a2bI705.js"),f=require("./_plugin-vue_export-helper-CC_fc8JW.js"),p=require("./src/composables/useModalController/index.umd.js"),m=["id","aria-labelledby","aria-describedby"],v=["id"],B="modal-fallback-focus",k=e.defineComponent({inheritAttrs:!1,__name:"BModal",props:e.mergeModels({autofocus:{type:Boolean,default:!0},autofocusButton:{default:void 0},backdropFirst:{type:Boolean,default:!1},body:{default:void 0},bodyAttrs:{default:void 0},bodyBgVariant:{default:null},bodyClass:{default:null},bodyScrolling:{type:Boolean,default:!1},bodyTextVariant:{default:null},bodyVariant:{default:null},busy:{type:Boolean,default:!1},buttonSize:{default:"md"},cancelDisabled:{type:Boolean,default:!1},cancelTitle:{default:"Cancel"},cancelVariant:{default:"secondary"},centered:{type:Boolean,default:!1},contentClass:{default:void 0},dialogClass:{default:void 0},footerBgVariant:{default:null},footerBorderVariant:{default:null},footerClass:{default:void 0},footerTextVariant:{default:null},footerVariant:{default:null},fullscreen:{type:[Boolean,String],default:!1},headerBgVariant:{default:null},headerBorderVariant:{default:null},headerClass:{default:void 0},headerCloseClass:{default:void 0},headerCloseLabel:{default:"Close"},headerCloseVariant:{default:"secondary"},headerTextVariant:{default:null},headerVariant:{default:null},noBackdrop:{type:Boolean,default:!1},noFooter:{type:Boolean,default:!1},noHeader:{type:Boolean,default:!1},noHeaderClose:{type:Boolean,default:!1},id:{default:void 0},modalClass:{default:void 0},noCloseOnBackdrop:{type:Boolean,default:!1},noCloseOnEsc:{type:Boolean,default:!1},noTrap:{type:Boolean,default:!1},noStacking:{type:Boolean},okDisabled:{type:Boolean,default:!1},okOnly:{type:Boolean,default:!1},okTitle:{default:"OK"},okVariant:{default:"primary"},scrollable:{type:Boolean,default:!1},size:{default:"md"},title:{default:void 0},titleClass:{default:void 0},titleVisuallyHidden:{type:Boolean,default:!1},titleTag:{default:"h5"},teleportDisabled:{type:Boolean,default:!1},teleportTo:{default:"body"},initialAnimation:{type:Boolean,default:!1},noAnimation:{type:Boolean},noFade:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},unmountLazy:{type:Boolean,default:!1},show:{type:Boolean,default:!1},transProps:{default:void 0},visible:{type:Boolean,default:!1}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:e.mergeModels(["backdrop","cancel","close","esc","hidden","hide","hide-prevented","ok","show","show-prevented","shown"],["update:modelValue"]),setup(f,{expose:p,emit:k}){const y=f,b=o.useDefaults(y,"BModal"),V=k,C=e.useSlots(),_=n.useId((()=>b.id),"modal"),g=e.useModel(f,"modelValue"),h=e.useTemplateRef("_element"),S=e.useTemplateRef("_fallbackFocusElement"),x=e.useTemplateRef("_okButton"),T=e.useTemplateRef("_cancelButton"),z=e.useTemplateRef("_closeButton"),w=()=>{!1!==b.autofocus&&("ok"===b.autofocusButton?W.value=!0:"close"===b.autofocusButton?Y.value=!0:"cancel"===b.autofocusButton?X.value=!0:U.value=!0)},{showRef:P,renderRef:D,renderBackdropRef:N,hide:E,show:F,toggle:M,computedNoAnimation:$,transitionProps:R,backdropTransitionProps:q,isLeaving:j,isVisible:H,trapActive:A,contentShowing:L,backdropReady:O,backdropVisible:I}=i.useShowHide(g,b,V,h,_,{transitionProps:{onAfterEnter:w}}),{needsFallback:K}=l.useActivatedFocusTrap({element:h,isActive:A,noTrap:()=>b.noTrap,fallbackFocus:{ref:S,classSelector:B}});a.onKeyStroke("Escape",(()=>{E("esc")}),{target:h}),l.useSafeScrollLock(P,(()=>b.bodyScrolling));const{focused:U}=a.useFocus(h,{initialValue:g.value&&void 0===b.autofocusButton&&!0===b.autofocus}),{focused:W}=a.useFocus(x,{initialValue:g.value&&"ok"===b.autofocusButton&&!0===b.autofocus}),{focused:X}=a.useFocus(T,{initialValue:g.value&&"cancel"===b.autofocusButton&&!0===b.autofocus}),{focused:Y}=a.useFocus(z,{initialValue:g.value&&"close"===b.autofocusButton&&!0===b.autofocus}),G=e.computed((()=>!d.isEmptySlot(C["header-close"]))),J=e.computed((()=>[b.dialogClass,{"modal-fullscreen":!0===b.fullscreen,[`modal-fullscreen-${b.fullscreen}-down`]:"string"==typeof b.fullscreen,[`modal-${b.size}`]:"md"!==b.size,"modal-dialog-centered":b.centered,"modal-dialog-scrollable":b.scrollable}])),Q=s.useColorVariantClasses((()=>({bgVariant:b.bodyBgVariant,textVariant:b.bodyTextVariant,variant:b.bodyVariant}))),Z=e.computed((()=>[b.bodyClass,Q.value])),ee=s.useColorVariantClasses((()=>({bgVariant:b.headerBgVariant,textVariant:b.headerTextVariant,variant:b.headerVariant,borderVariant:b.headerBorderVariant}))),oe=e.computed((()=>[b.headerClass,ee.value])),ae=e.computed((()=>({variant:G.value?b.headerCloseVariant:void 0,class:b.headerCloseClass}))),le=s.useColorVariantClasses((()=>({bgVariant:b.footerBgVariant,textVariant:b.footerTextVariant,variant:b.footerVariant,borderVariant:b.footerBorderVariant}))),te=e.computed((()=>[b.footerClass,le.value])),re=e.computed((()=>[b.titleClass,{"visually-hidden":b.titleVisuallyHidden}])),ne=e.computed((()=>b.cancelDisabled||b.busy)),de=e.computed((()=>b.okDisabled||b.busy)),{activePosition:se,activeModalCount:ue,stackWithoutSelf:ie}=u.useModalManager(P,g.value);e.watch(ie,((e,o)=>{e.length>o.length&&!0===P.value&&!0===b.noStacking&&E()}));const ce=e.computed((()=>P.value||j.value?1056-(2*((null==ue?void 0:ue.value)??0)-2*((null==se?void 0:se.value)??0)):1056)),fe=e.computed((()=>({"z-index":ce.value}))),pe=e.computed((()=>({"z-index":ce.value-1}))),me=e.computed((()=>({cancel:()=>{E("cancel")},close:()=>{E("close")},hide:E,ok:()=>{E("ok")},active:P.value,visible:P.value})));return p({hide:E,id:_,show:F,toggle:M}),(o,a)=>(e.openBlock(),e.createBlock(c._sfc_main,{to:e.unref(b).teleportTo,disabled:e.unref(b).teleportDisabled},{default:e.withCtx((()=>[e.unref(D)||e.unref(L)?(e.openBlock(),e.createBlock(e.Transition,e.mergeProps({key:0},e.unref(R),{appear:!0,onAfterEnter:w}),{default:e.withCtx((()=>[e.withDirectives(e.createElementVNode("div",e.mergeProps({id:e.unref(_),ref:"_element",class:["modal",[e.unref(b).modalClass,{fade:!e.unref($),show:e.unref(H)}]],role:"dialog","aria-labelledby":e.unref(b).noHeader?void 0:`${e.unref(_)}-label`,"aria-describedby":`${e.unref(_)}-body`,tabindex:"-1"},o.$attrs,{style:fe.value,onClick:a[4]||(a[4]=e.withModifiers((o=>e.unref(E)("backdrop")),["self"]))}),[e.createElementVNode("div",{class:e.normalizeClass(["modal-dialog",J.value])},[e.unref(L)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["modal-content",e.unref(b).contentClass])},[e.unref(b).noHeader?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["modal-header",oe.value])},[e.renderSlot(o.$slots,"header",e.normalizeProps(e.guardReactiveProps(me.value)),(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(b).titleTag),{id:`${e.unref(_)}-label`,class:e.normalizeClass(["modal-title",re.value])},{default:e.withCtx((()=>[e.renderSlot(o.$slots,"title",e.normalizeProps(e.guardReactiveProps(me.value)),(()=>[e.createTextVNode(e.toDisplayString(e.unref(b).title),1)]),!0)])),_:3},8,["id","class"])),e.unref(b).noHeaderClose?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[G.value?(e.openBlock(),e.createBlock(t._sfc_main,e.mergeProps({key:0},ae.value,{onClick:a[0]||(a[0]=o=>e.unref(E)("close"))}),{default:e.withCtx((()=>[e.renderSlot(o.$slots,"header-close",{},void 0,!0)])),_:3},16)):(e.openBlock(),e.createBlock(r._sfc_main,e.mergeProps({key:1,"aria-label":e.unref(b).headerCloseLabel},ae.value,{onClick:a[1]||(a[1]=o=>e.unref(E)("close"))}),null,16,["aria-label"]))],64))]),!0)],2)),e.createElementVNode("div",e.mergeProps({id:`${e.unref(_)}-body`,class:["modal-body",Z.value]},e.unref(b).bodyAttrs),[e.renderSlot(o.$slots,"default",e.normalizeProps(e.guardReactiveProps(me.value)),(()=>[e.createTextVNode(e.toDisplayString(e.unref(b).body),1)]),!0)],16,v),e.unref(b).noFooter?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["modal-footer",te.value])},[e.renderSlot(o.$slots,"footer",e.normalizeProps(e.guardReactiveProps(me.value)),(()=>[e.renderSlot(o.$slots,"cancel",e.normalizeProps(e.guardReactiveProps(me.value)),(()=>[e.unref(b).okOnly?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(t._sfc_main,{key:0,ref:"_cancelButton",disabled:ne.value,size:e.unref(b).buttonSize,variant:e.unref(b).cancelVariant,onClick:a[2]||(a[2]=o=>e.unref(E)("cancel"))},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(e.unref(b).cancelTitle),1)])),_:1},8,["disabled","size","variant"]))]),!0),e.renderSlot(o.$slots,"ok",e.normalizeProps(e.guardReactiveProps(me.value)),(()=>[e.createVNode(t._sfc_main,{ref:"_okButton",disabled:de.value,size:e.unref(b).buttonSize,variant:e.unref(b).okVariant,onClick:a[3]||(a[3]=o=>e.unref(E)("ok"))},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(e.unref(b).okTitle),1)])),_:1},8,["disabled","size","variant"])]),!0)]),!0)],2))],2)):e.createCommentVNode("",!0)],2),e.unref(K)?(e.openBlock(),e.createElementBlock("div",{key:0,ref:"_fallbackFocusElement",class:e.normalizeClass(B),tabindex:"0",style:{width:"0",height:"0",overflow:"hidden"}},null,512)):e.createCommentVNode("",!0)],16,m),[[e.vShow,e.unref(P)&&(e.unref(O)&&e.unref(b).backdropFirst||!e.unref(b).backdropFirst)]])])),_:3},16)):e.createCommentVNode("",!0),e.unref(b).noBackdrop?e.createCommentVNode("",!0):e.renderSlot(o.$slots,"backdrop",e.normalizeProps(e.mergeProps({key:1},me.value)),(()=>[e.unref(N)?(e.openBlock(),e.createBlock(e.Transition,e.normalizeProps(e.mergeProps({key:0},e.unref(q))),{default:e.withCtx((()=>[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["modal-backdrop",{fade:!e.unref($),show:e.unref(I)||e.unref($)}]),style:e.normalizeStyle(pe.value),onClick:a[5]||(a[5]=o=>e.unref(E)("backdrop"))},null,6),[[e.vShow,e.unref(P)||e.unref(j)&&e.unref(b).backdropFirst&&!e.unref($)]])])),_:1},16)):e.createCommentVNode("",!0)]),!0)])),_:3},8,["to","disabled"]))}}),y=f._export_sfc(k,[["__scopeId","data-v-183664ba"]]),b=e.defineComponent({inheritAttrs:!1,__name:"BModalOrchestrator",props:{teleportDisabled:{type:Boolean,default:!1},teleportTo:{default:"body"}},setup(a,{expose:l}){const t=a,r=o.useDefaults(t,"BModalOrchestrator"),n=p.useModalController();return l({...n}),(o,a)=>(e.openBlock(),e.createBlock(c._sfc_main,{to:e.unref(r).teleportTo,disabled:e.unref(r).teleportDisabled},{default:e.withCtx((()=>{var a;return[e.createElementVNode("div",e.mergeProps({id:"__BVID__modal-container"},o.$attrs),[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(null==(a=e.unref(n).modals)?void 0:a.value,(([o,a])=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.component??y),e.mergeProps({key:o,ref_for:!0},a.props,{modelValue:a.props._modelValue,"onUpdate:modelValue":[e=>a.props._modelValue=e,a=>{var l,t;return null==(t=(l=e.unref(n)).leave)?void 0:t.call(l,o)}],"initial-animation":"","teleport-disabled":!0,onHide:e=>{if(!0===a.props._isConfirm){if("ok"===e.trigger)return void a.props._promise.resolve(!0);if("cancel"===e.trigger)return void a.props._promise.resolve(!1);a.props._promise.resolve(null)}a.props._promise.resolve(!0)},onHidden:a=>{var l,t;return null==(t=(l=e.unref(n)).remove)?void 0:t.call(l,o)}}),null,16,["modelValue","onUpdate:modelValue","onHide","onHidden"])))),128))],16)]})),_:1},8,["to","disabled"]))}});exports.BModal=y,exports._sfc_main=b;
|
|
2
|
+
//# sourceMappingURL=BModalOrchestrator.vue_vue_type_script_setup_true_lang-B_uGznhV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BModalOrchestrator.vue_vue_type_script_setup_true_lang-B_uGznhV.js","sources":["../src/components/BModal/BModal.vue","../src/components/BModal/BModalOrchestrator.vue"],"sourcesContent":["<template>\n <ConditionalTeleport :to=\"props.teleportTo\" :disabled=\"props.teleportDisabled\">\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"true\"\n @after-enter=\"onAfterEnter\"\n >\n <div\n v-show=\"showRef && ((backdropReady && props.backdropFirst) || !props.backdropFirst)\"\n :id=\"computedId\"\n ref=\"_element\"\n class=\"modal\"\n :class=\"[\n props.modalClass,\n {\n fade: !computedNoAnimation,\n show: isVisible,\n },\n ]\"\n role=\"dialog\"\n :aria-labelledby=\"!props.noHeader ? `${computedId}-label` : undefined\"\n :aria-describedby=\"`${computedId}-body`\"\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n :style=\"computedZIndex\"\n @click.self=\"hide('backdrop')\"\n >\n <div class=\"modal-dialog\" :class=\"modalDialogClasses\">\n <div v-if=\"contentShowing\" class=\"modal-content\" :class=\"props.contentClass\">\n <div v-if=\"!props.noHeader\" class=\"modal-header\" :class=\"headerClasses\">\n <slot name=\"header\" v-bind=\"sharedSlots\">\n <component\n :is=\"props.titleTag\"\n :id=\"`${computedId}-label`\"\n class=\"modal-title\"\n :class=\"titleClasses\"\n >\n <slot name=\"title\" v-bind=\"sharedSlots\">\n {{ props.title }}\n </slot>\n </component>\n <template v-if=\"!props.noHeaderClose\">\n <BButton\n v-if=\"hasHeaderCloseSlot\"\n v-bind=\"headerCloseAttrs\"\n @click=\"hide('close')\"\n >\n <slot name=\"header-close\" />\n </BButton>\n <BCloseButton\n v-else\n :aria-label=\"props.headerCloseLabel\"\n v-bind=\"headerCloseAttrs\"\n @click=\"hide('close')\"\n />\n </template>\n </slot>\n </div>\n <div\n :id=\"`${computedId}-body`\"\n class=\"modal-body\"\n :class=\"bodyClasses\"\n v-bind=\"props.bodyAttrs\"\n >\n <slot v-bind=\"sharedSlots\">\n {{ props.body }}\n </slot>\n </div>\n <div v-if=\"!props.noFooter\" class=\"modal-footer\" :class=\"footerClasses\">\n <slot name=\"footer\" v-bind=\"sharedSlots\">\n <slot name=\"cancel\" v-bind=\"sharedSlots\">\n <BButton\n v-if=\"!props.okOnly\"\n ref=\"_cancelButton\"\n :disabled=\"disableCancel\"\n :size=\"props.buttonSize\"\n :variant=\"props.cancelVariant\"\n @click=\"hide('cancel')\"\n >\n {{ props.cancelTitle }}\n </BButton>\n </slot>\n <slot name=\"ok\" v-bind=\"sharedSlots\">\n <BButton\n ref=\"_okButton\"\n :disabled=\"disableOk\"\n :size=\"props.buttonSize\"\n :variant=\"props.okVariant\"\n @click=\"hide('ok')\"\n >\n {{ props.okTitle }}\n </BButton>\n </slot>\n </slot>\n </div>\n </div>\n </div>\n <div\n v-if=\"needsFallback\"\n ref=\"_fallbackFocusElement\"\n :class=\"fallbackClassSelector\"\n tabindex=\"0\"\n style=\"width: 0; height: 0; overflow: hidden\"\n />\n </div>\n </Transition>\n <slot v-if=\"!props.noBackdrop\" name=\"backdrop\" v-bind=\"sharedSlots\">\n <Transition v-if=\"renderBackdropRef\" v-bind=\"backdropTransitionProps\">\n <div\n v-show=\"showRef || (isLeaving && props.backdropFirst && !computedNoAnimation)\"\n class=\"modal-backdrop\"\n :style=\"computedZIndexBackdrop\"\n :class=\"{\n fade: !computedNoAnimation,\n show: backdropVisible || computedNoAnimation,\n }\"\n @click=\"hide('backdrop')\"\n />\n </Transition>\n </slot>\n </ConditionalTeleport>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, useFocus} from '@vueuse/core'\nimport {useActivatedFocusTrap} from '../../composables/useActivatedFocusTrap'\nimport {computed, type CSSProperties, type EmitFn, useTemplateRef, watch} from 'vue'\nimport type {BModalProps} from '../../types/ComponentProps'\nimport {BvTriggerableEvent} from '../../utils'\nimport BButton from '../BButton/BButton.vue'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useSafeScrollLock} from '../../composables/useSafeScrollLock'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport {useModalManager} from '../../composables/useModalManager'\nimport {useShowHide} from '../../composables/useShowHide'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\n// aria\n// autofocus\n// close on escape when autofocus\n\n// Note, attempt to return focus to item that openned the modal after close\n// Implement auto focus props like autoFocusButton\n\nconst _props = withDefaults(defineProps<Omit<BModalProps, 'modelValue'>>(), {\n autofocus: true,\n autofocusButton: undefined,\n backdropFirst: false,\n body: undefined,\n bodyBgVariant: null,\n bodyAttrs: undefined,\n bodyClass: null,\n bodyScrolling: false,\n bodyTextVariant: null,\n bodyVariant: null,\n busy: false,\n buttonSize: 'md',\n cancelDisabled: false,\n cancelTitle: 'Cancel',\n cancelVariant: 'secondary',\n centered: false,\n contentClass: undefined,\n dialogClass: undefined,\n footerBgVariant: null,\n footerBorderVariant: null,\n footerClass: undefined,\n footerTextVariant: null,\n footerVariant: null,\n fullscreen: false,\n headerBgVariant: null,\n headerBorderVariant: null,\n headerClass: undefined,\n headerCloseClass: undefined,\n headerCloseLabel: 'Close',\n headerCloseVariant: 'secondary',\n headerTextVariant: null,\n headerVariant: null,\n noFooter: false,\n noHeader: false,\n noHeaderClose: false,\n id: undefined,\n initialAnimation: false,\n lazy: false,\n modalClass: undefined,\n noBackdrop: false,\n noCloseOnBackdrop: false,\n noCloseOnEsc: false,\n noFade: false,\n noTrap: false,\n okDisabled: false,\n okOnly: false,\n okTitle: 'OK',\n okVariant: 'primary',\n unmountLazy: false,\n scrollable: false,\n size: 'md',\n teleportDisabled: false,\n teleportTo: 'body',\n title: undefined,\n titleClass: undefined,\n titleVisuallyHidden: false,\n titleTag: 'h5',\n show: false,\n transProps: undefined,\n visible: false,\n})\nconst props = useDefaults(_props, 'BModal')\n\nconst emit = defineEmits<{\n 'backdrop': [value: BvTriggerableEvent]\n 'cancel': [value: BvTriggerableEvent]\n 'close': [value: BvTriggerableEvent]\n 'esc': [value: BvTriggerableEvent]\n 'hidden': [value: BvTriggerableEvent]\n 'hide': [value: BvTriggerableEvent]\n 'hide-prevented': [value: BvTriggerableEvent]\n 'ok': [value: BvTriggerableEvent]\n 'show': [value: BvTriggerableEvent]\n 'show-prevented': [value: BvTriggerableEvent]\n 'shown': [value: BvTriggerableEvent]\n}>()\n\ntype SharedSlotsData = {\n cancel: () => void\n close: () => void\n hide: (trigger?: string) => void\n ok: () => void\n active: boolean\n visible: boolean\n}\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'backdrop'?: (props: SharedSlotsData) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'cancel'?: (props: SharedSlotsData) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'default'?: (props: SharedSlotsData) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'footer'?: (props: SharedSlotsData) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'header'?: (props: SharedSlotsData) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'header-close'?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'ok'?: (props: SharedSlotsData) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'title'?: (props: SharedSlotsData) => any\n}>()\n\nconst computedId = useId(() => props.id, 'modal')\n// Note: passive: true will sync an internal ref... This is required for useModalManager to exit,\n// Since the modelValue that's passed from that composable is not reactive, this internal ref _is_ and thus it will trigger closing the modal\nconst modelValue = defineModel<Exclude<BModalProps['modelValue'], undefined>>({default: false})\n\nconst element = useTemplateRef<HTMLElement>('_element')\nconst fallbackFocusElement = useTemplateRef<HTMLElement>('_fallbackFocusElement')\nconst okButton = useTemplateRef<HTMLElement>('_okButton')\nconst cancelButton = useTemplateRef<HTMLElement>('_cancelButton')\nconst closeButton = useTemplateRef<HTMLElement>('_closeButton')\n\nconst pickFocusItem = () => {\n if (props.autofocus === false) return\n if (props.autofocusButton === 'ok') {\n okButtonFocus.value = true\n } else if (props.autofocusButton === 'close') {\n closeButtonFocus.value = true\n } else if (props.autofocusButton === 'cancel') {\n cancelButtonFocus.value = true\n } else {\n modalFocus.value = true\n }\n}\n\nconst onAfterEnter = () => {\n pickFocusItem()\n}\n\nconst {\n showRef,\n renderRef,\n renderBackdropRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n backdropTransitionProps,\n isLeaving,\n isVisible,\n trapActive,\n contentShowing,\n backdropReady,\n backdropVisible,\n} = useShowHide(modelValue, props, emit as EmitFn, element, computedId, {\n // addShowClass: false,\n transitionProps: {\n onAfterEnter,\n },\n})\n\nconst fallbackClassSelector = 'modal-fallback-focus'\nconst {needsFallback} = useActivatedFocusTrap({\n element,\n isActive: trapActive,\n noTrap: () => props.noTrap,\n fallbackFocus: {\n ref: fallbackFocusElement,\n classSelector: fallbackClassSelector,\n },\n})\n\nonKeyStroke(\n 'Escape',\n () => {\n hide('esc')\n },\n {target: element}\n)\nuseSafeScrollLock(showRef, () => props.bodyScrolling)\nconst {focused: modalFocus} = useFocus(element, {\n initialValue: modelValue.value && props.autofocusButton === undefined && props.autofocus === true,\n})\nconst {focused: okButtonFocus} = useFocus(okButton, {\n initialValue: modelValue.value && props.autofocusButton === 'ok' && props.autofocus === true,\n})\nconst {focused: cancelButtonFocus} = useFocus(cancelButton, {\n initialValue: modelValue.value && props.autofocusButton === 'cancel' && props.autofocus === true,\n})\nconst {focused: closeButtonFocus} = useFocus(closeButton, {\n initialValue: modelValue.value && props.autofocusButton === 'close' && props.autofocus === true,\n})\n\nconst hasHeaderCloseSlot = computed(() => !isEmptySlot(slots['header-close']))\n\nconst modalDialogClasses = computed(() => [\n props.dialogClass,\n {\n 'modal-fullscreen': props.fullscreen === true,\n [`modal-fullscreen-${props.fullscreen}-down`]: typeof props.fullscreen === 'string',\n [`modal-${props.size}`]: props.size !== 'md',\n 'modal-dialog-centered': props.centered,\n 'modal-dialog-scrollable': props.scrollable,\n },\n])\n\nconst bodyColorClasses = useColorVariantClasses(() => ({\n bgVariant: props.bodyBgVariant,\n textVariant: props.bodyTextVariant,\n variant: props.bodyVariant,\n}))\nconst bodyClasses = computed(() => [props.bodyClass, bodyColorClasses.value])\n\nconst headerColorClasses = useColorVariantClasses(() => ({\n bgVariant: props.headerBgVariant,\n textVariant: props.headerTextVariant,\n variant: props.headerVariant,\n borderVariant: props.headerBorderVariant,\n}))\nconst headerClasses = computed(() => [props.headerClass, headerColorClasses.value])\n\nconst headerCloseAttrs = computed(() => ({\n variant: hasHeaderCloseSlot.value ? props.headerCloseVariant : undefined,\n class: props.headerCloseClass,\n}))\n\nconst footerColorClasses = useColorVariantClasses(() => ({\n bgVariant: props.footerBgVariant,\n textVariant: props.footerTextVariant,\n variant: props.footerVariant,\n borderVariant: props.footerBorderVariant,\n}))\nconst footerClasses = computed(() => [props.footerClass, footerColorClasses.value])\n\nconst titleClasses = computed(() => [\n props.titleClass,\n {\n ['visually-hidden']: props.titleVisuallyHidden,\n },\n])\nconst disableCancel = computed(() => props.cancelDisabled || props.busy)\nconst disableOk = computed(() => props.okDisabled || props.busy)\n\nconst {activePosition, activeModalCount, stackWithoutSelf} = useModalManager(\n showRef,\n modelValue.value\n)\n\nwatch(stackWithoutSelf, (newValue, oldValue) => {\n if (newValue.length > oldValue.length && showRef.value === true && props.noStacking === true)\n hide()\n})\n\nconst defaultModalDialogZIndex = 1056\nconst computedZIndexNumber = computed<number>(() =>\n // Make sure that newly opened modals have a higher z-index than currently active ones.\n // All active modals have a z-index of ('defaultZIndex' - 'stackSize' - 'positionInStack').\n //\n // This means inactive modals will already be higher than active ones when opened.\n\n showRef.value || isLeaving.value\n ? // Just for reference there is a single frame in which the modal is not active but still has a higher z-index than the active ones due to _when_ it calculates its position. It's a small visual effect\n defaultModalDialogZIndex -\n ((activeModalCount?.value ?? 0) * 2 - (activePosition?.value ?? 0) * 2)\n : defaultModalDialogZIndex\n)\nconst computedZIndex = computed<CSSProperties>(() => ({\n 'z-index': computedZIndexNumber.value,\n}))\nconst computedZIndexBackdrop = computed<CSSProperties>(() => ({\n 'z-index': computedZIndexNumber.value - 1,\n}))\n\nconst sharedSlots = computed<SharedSlotsData>(() => ({\n cancel: () => {\n hide('cancel')\n },\n close: () => {\n hide('close')\n },\n hide,\n ok: () => {\n hide('ok')\n },\n active: showRef.value,\n visible: showRef.value,\n}))\n\ndefineExpose({\n hide,\n id: computedId,\n show,\n toggle,\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.modal {\n display: block;\n}\n\n.modal-dialog {\n z-index: 1051;\n}\n</style>\n","<template>\n <ConditionalTeleport :to=\"props.teleportTo\" :disabled=\"props.teleportDisabled\">\n <div id=\"__BVID__modal-container\" v-bind=\"$attrs\">\n <component\n :is=\"modal.component ?? BModal\"\n v-for=\"[self, modal] in tools.modals?.value\"\n :key=\"self\"\n v-bind=\"modal.props\"\n v-model=\"modal.props._modelValue\"\n initial-animation\n :teleport-disabled=\"true\"\n @update:model-value=\"tools.leave?.(self)\"\n @hide=\"\n (e: BvTriggerableEvent) => {\n // These following are confirm rules, otherwise we always resolve true\n if (modal.props._isConfirm === true) {\n if (e.trigger === 'ok') {\n modal.props._promise.resolve(true)\n return\n }\n if (e.trigger === 'cancel') {\n modal.props._promise.resolve(false)\n return\n }\n modal.props._promise.resolve(null)\n }\n modal.props._promise.resolve(true)\n }\n \"\n @hidden=\"tools.remove?.(self)\"\n />\n </div>\n </ConditionalTeleport>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BvTriggerableEvent} from '../../utils'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BModalOrchestratorProps} from '../../types/ComponentProps'\nimport BModal from './BModal.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {useModalController} from '../../composables/useModalController'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<BModalOrchestratorProps>(), {\n teleportDisabled: false,\n teleportTo: 'body',\n})\nconst props = useDefaults(_props, 'BModalOrchestrator')\n\nconst tools = useModalController()\n\ndefineExpose({\n ...tools,\n})\n</script>\n"],"names":["fallbackClassSelector","_props","__props","props","useDefaults","emit","__emit","slots","_useSlots","computedId","useId","id","modelValue","_useModel","element","useTemplateRef","fallbackFocusElement","okButton","cancelButton","closeButton","onAfterEnter","autofocus","autofocusButton","okButtonFocus","value","closeButtonFocus","cancelButtonFocus","modalFocus","showRef","renderRef","renderBackdropRef","hide","show","toggle","computedNoAnimation","transitionProps","backdropTransitionProps","isLeaving","isVisible","trapActive","contentShowing","backdropReady","backdropVisible","useShowHide","needsFallback","useActivatedFocusTrap","isActive","noTrap","fallbackFocus","ref","classSelector","index","onKeyStroke","target","useSafeScrollLock","bodyScrolling","focused","useFocus","initialValue","hasHeaderCloseSlot","computed","isEmptySlot","modalDialogClasses","dialogClass","fullscreen","size","centered","scrollable","bodyColorClasses","useColorVariantClasses","bgVariant","bodyBgVariant","textVariant","bodyTextVariant","variant","bodyVariant","bodyClasses","bodyClass","headerColorClasses","headerBgVariant","headerTextVariant","headerVariant","borderVariant","headerBorderVariant","headerClasses","headerClass","headerCloseAttrs","headerCloseVariant","class","headerCloseClass","footerColorClasses","footerBgVariant","footerTextVariant","footerVariant","footerBorderVariant","footerClasses","footerClass","titleClasses","titleClass","titleVisuallyHidden","disableCancel","cancelDisabled","busy","disableOk","okDisabled","activePosition","activeModalCount","stackWithoutSelf","useModalManager","watch","newValue","oldValue","length","noStacking","computedZIndexNumber","computedZIndex","computedZIndexBackdrop","sharedSlots","cancel","close","ok","active","visible","__expose","tools","useModalController"],"mappings":"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"}
|