bootstrap-vue-next 0.24.19 → 0.24.20
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/{BModalOrchestrator.vue_vue_type_script_setup_true_lang-Bm8qJrSV.mjs → BModalOrchestrator.vue_vue_type_script_setup_true_lang-B1RkD3dn.mjs} +2 -2
- package/dist/{BModalOrchestrator.vue_vue_type_script_setup_true_lang-Bm8qJrSV.mjs.map → BModalOrchestrator.vue_vue_type_script_setup_true_lang-B1RkD3dn.mjs.map} +1 -1
- package/dist/{BModalOrchestrator.vue_vue_type_script_setup_true_lang-Cbj_OlNR.js → BModalOrchestrator.vue_vue_type_script_setup_true_lang-BJT6eBMZ.js} +2 -2
- package/dist/{BModalOrchestrator.vue_vue_type_script_setup_true_lang-Cbj_OlNR.js.map → BModalOrchestrator.vue_vue_type_script_setup_true_lang-BJT6eBMZ.js.map} +1 -1
- package/dist/{BOffcanvas.vue_vue_type_script_setup_true_lang-CSVryvpT.mjs → BOffcanvas.vue_vue_type_script_setup_true_lang-Do2qnW3l.mjs} +2 -2
- package/dist/{BOffcanvas.vue_vue_type_script_setup_true_lang-CSVryvpT.mjs.map → BOffcanvas.vue_vue_type_script_setup_true_lang-Do2qnW3l.mjs.map} +1 -1
- package/dist/{BOffcanvas.vue_vue_type_script_setup_true_lang-D3OEJE7U.js → BOffcanvas.vue_vue_type_script_setup_true_lang-ky_Y5xZi.js} +2 -2
- package/dist/{BOffcanvas.vue_vue_type_script_setup_true_lang-D3OEJE7U.js.map → BOffcanvas.vue_vue_type_script_setup_true_lang-ky_Y5xZi.js.map} +1 -1
- package/dist/{BTable.vue_vue_type_script_setup_true_lang-C-_MwlTD.mjs → BTable.vue_vue_type_script_setup_true_lang-BE65g4Zt.mjs} +4 -17
- package/dist/BTable.vue_vue_type_script_setup_true_lang-BE65g4Zt.mjs.map +1 -0
- package/dist/BTable.vue_vue_type_script_setup_true_lang-BoQw3Q6G.js +2 -0
- package/dist/BTable.vue_vue_type_script_setup_true_lang-BoQw3Q6G.js.map +1 -0
- package/dist/bootstrap-vue-next.mjs +4 -4
- package/dist/bootstrap-vue-next.umd.js +1 -1
- package/dist/{index-DEatZeW7.js → index-BzsZ0ex7.js} +2 -2
- package/dist/index-BzsZ0ex7.js.map +1 -0
- package/dist/{index-MoaRuSHD.mjs → index-DVLkJgKb.mjs} +4 -4
- package/dist/{index-MoaRuSHD.mjs.map → index-DVLkJgKb.mjs.map} +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/BOffcanvas/index.mjs +1 -1
- package/dist/src/components/BOffcanvas/index.umd.js +1 -1
- package/dist/src/components/BTable/index.mjs +1 -1
- package/dist/src/components/BTable/index.umd.js +1 -1
- package/dist/src/components/index.mjs +3 -3
- package/dist/src/components/index.umd.js +1 -1
- package/dist/{useSafeScrollLock-BfVVwTzO.mjs → useSafeScrollLock-BAPMIjjV.mjs} +34 -6
- package/dist/{useSafeScrollLock-BfVVwTzO.mjs.map → useSafeScrollLock-BAPMIjjV.mjs.map} +1 -1
- package/dist/{useSafeScrollLock-Ib_fUIsz.js → useSafeScrollLock-DoX-OOqc.js} +2 -2
- package/dist/{useSafeScrollLock-Ib_fUIsz.js.map → useSafeScrollLock-DoX-OOqc.js.map} +1 -1
- package/package.json +1 -1
- package/dist/BTable.vue_vue_type_script_setup_true_lang-C-_MwlTD.mjs.map +0 -1
- package/dist/BTable.vue_vue_type_script_setup_true_lang-DymvC6V1.js +0 -2
- package/dist/BTable.vue_vue_type_script_setup_true_lang-DymvC6V1.js.map +0 -1
- package/dist/index-DEatZeW7.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { computed, toValue, defineComponent, mergeModels, useSlots, useModel, ref, watch, openBlock, createBlock, unref, withCtx, createVNode, Transition, mergeProps, withDirectives, createElementVNode, normalizeClass, createElementBlock, renderSlot, normalizeProps, guardReactiveProps, resolveDynamicComponent, createTextVNode, toDisplayString, Fragment, createCommentVNode, vShow, renderList } from "vue";
|
|
2
2
|
import { u as useDefaults } from "./useDefaults-BuoSLvNO.mjs";
|
|
3
3
|
import { o as onKeyStroke, e as useFocus, c as useEventListener } from "./index-DngH9Pjm.mjs";
|
|
4
|
-
import { a as useActivatedFocusTrap, u as useSafeScrollLock } from "./useSafeScrollLock-
|
|
4
|
+
import { a as useActivatedFocusTrap, u as useSafeScrollLock } from "./useSafeScrollLock-BAPMIjjV.mjs";
|
|
5
5
|
import { a as BvTriggerableEvent } from "./classes-IC0yVJlq.mjs";
|
|
6
6
|
import { _ as _sfc_main$3 } from "./BButton.vue_vue_type_script_setup_true_lang-DA2a9j0d.mjs";
|
|
7
7
|
import { _ as _sfc_main$4 } from "./BCloseButton.vue_vue_type_script_setup_true_lang-B_GsCJs6.mjs";
|
|
@@ -535,4 +535,4 @@ export {
|
|
|
535
535
|
BModal as B,
|
|
536
536
|
_sfc_main as _
|
|
537
537
|
};
|
|
538
|
-
//# sourceMappingURL=BModalOrchestrator.vue_vue_type_script_setup_true_lang-
|
|
538
|
+
//# sourceMappingURL=BModalOrchestrator.vue_vue_type_script_setup_true_lang-B1RkD3dn.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BModalOrchestrator.vue_vue_type_script_setup_true_lang-Bm8qJrSV.mjs","sources":["../src/composables/useTransitions.ts","../src/components/BModal/BModal.vue","../src/components/BModal/BModalOrchestrator.vue"],"sourcesContent":["import {computed, type MaybeRefOrGetter, toValue} from 'vue'\n\nexport const useFadeTransition = (noFade: MaybeRefOrGetter<boolean>) =>\n computed(() => {\n const NO_FADE_PROPS = {\n name: '',\n enterActiveClass: '',\n enterToClass: '',\n leaveActiveClass: '',\n leaveToClass: 'showing',\n enterFromClass: 'showing',\n leaveFromClass: '',\n css: true,\n }\n const FADE_PROPS = {\n ...NO_FADE_PROPS,\n name: 'fade',\n enterActiveClass: 'fade showing',\n leaveActiveClass: 'fade showing',\n }\n return toValue(noFade) ? NO_FADE_PROPS : FADE_PROPS\n })\n","<template>\n <ConditionalTeleport :to=\"props.teleportTo\" :disabled=\"props.teleportDisabled\">\n <Transition\n v-bind=\"{...fadeTransitionProps, ...props.transProps, enterToClass: 'show'}\"\n :appear=\"modelValue\"\n @before-enter=\"onBeforeEnter\"\n @after-enter=\"onAfterEnter\"\n @leave=\"onLeave\"\n @after-leave=\"onAfterLeave\"\n >\n <div\n v-show=\"modelValue\"\n :id=\"computedId\"\n ref=\"element\"\n class=\"modal\"\n :class=\"modalClasses\"\n role=\"dialog\"\n :aria-labelledby=\"!props.hideHeader ? `${computedId}-label` : undefined\"\n :aria-describedby=\"`${computedId}-body`\"\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n :style=\"computedZIndex\"\n >\n <div class=\"modal-dialog\" :class=\"modalDialogClasses\">\n <div v-if=\"lazyShowing\" class=\"modal-content\" :class=\"props.contentClass\">\n <div v-if=\"!props.hideHeader\" 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.hideHeaderClose\">\n <BButton\n v-if=\"hasHeaderCloseSlot\"\n v-bind=\"headerCloseAttrs\"\n @click=\"hideFn('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=\"hideFn('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.hideFooter\" 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=\"hideFn('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=\"hideFn('ok')\"\n >\n {{ props.okTitle }}\n </BButton>\n </slot>\n </slot>\n </div>\n </div>\n </div>\n <slot v-if=\"!props.hideBackdrop\" name=\"backdrop\" v-bind=\"sharedSlots\">\n <div class=\"modal-backdrop fade show\" @click=\"hideFn('backdrop')\" />\n </slot>\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 </ConditionalTeleport>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, useEventListener, useFocus} from '@vueuse/core'\nimport {useActivatedFocusTrap} from '../../composables/useActivatedFocusTrap'\nimport {computed, type CSSProperties, ref, 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 {useFadeTransition} from '../../composables/useTransitions'\nimport {useSafeScrollLock} from '../../composables/useSafeScrollLock'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport {useModalManager} from '../../composables/useModalManager'\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 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 hideBackdrop: false,\n hideFooter: false,\n hideHeader: false,\n hideHeaderClose: false,\n id: undefined,\n lazy: false,\n modalClass: undefined,\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 scrollable: false,\n size: 'md',\n teleportDisabled: false,\n teleportTo: 'body',\n title: undefined,\n titleClass: undefined,\n titleSrOnly: false,\n titleTag: 'h5',\n transProps: undefined,\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': []\n 'ok': [value: BvTriggerableEvent]\n 'show': [value: BvTriggerableEvent]\n 'show-prevented': []\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 = ref<HTMLElement | null>(null)\nconst fallbackFocusElement = ref<HTMLElement | null>(null)\nconst okButton = ref<HTMLElement | null>(null)\nconst cancelButton = ref<HTMLElement | null>(null)\nconst closeButton = ref<HTMLElement | null>(null)\nconst isActive = ref(false)\nconst lazyLoadCompleted = ref(false)\n\nconst fallbackClassSelector = 'modal-fallback-focus'\nconst {needsFallback} = useActivatedFocusTrap({\n element,\n isActive,\n noTrap: () => props.noTrap,\n fallbackFocus: {\n ref: fallbackFocusElement,\n classSelector: fallbackClassSelector,\n },\n})\n\nconst fadeTransitionProps = useFadeTransition(true)\n\nonKeyStroke(\n 'Escape',\n () => {\n hideFn('esc')\n },\n {target: element}\n)\nuseSafeScrollLock(modelValue, () => 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 modalClasses = computed(() => [\n props.modalClass,\n {\n fade: !props.noFade,\n show: isActive.value,\n },\n])\n\nconst lazyShowing = computed(\n () =>\n props.lazy === false ||\n (props.lazy === true && lazyLoadCompleted.value === true) ||\n (props.lazy === true && modelValue.value === 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 resolvedBodyBgClasses = useColorVariantClasses(() => ({\n bgVariant: props.bodyBgVariant,\n textVariant: props.bodyTextVariant,\n variant: props.bodyVariant,\n}))\n\nconst bodyClasses = computed(() => [props.bodyClass, resolvedBodyBgClasses.value])\n\nconst resolvedHeaderBgClasses = useColorVariantClasses(() => ({\n bgVariant: props.headerBgVariant,\n textVariant: props.headerTextVariant,\n variant: props.headerVariant,\n}))\n\nconst headerClasses = computed(() => [\n props.headerClass,\n resolvedHeaderBgClasses.value,\n {\n [`border-${props.headerBorderVariant}`]: props.headerBorderVariant !== null,\n },\n])\n\nconst headerCloseAttrs = computed(() => ({\n variant: hasHeaderCloseSlot.value ? props.headerCloseVariant : undefined,\n class: props.headerCloseClass,\n}))\n\nconst resolvedFooterBgClasses = useColorVariantClasses(() => ({\n bgVariant: props.footerBgVariant,\n textVariant: props.footerTextVariant,\n variant: props.footerVariant,\n}))\n\nconst footerClasses = computed(() => [\n props.footerClass,\n resolvedFooterBgClasses.value,\n {\n [`border-${props.footerBorderVariant}`]: props.footerBorderVariant !== null,\n },\n])\n\nconst titleClasses = computed(() => [\n props.titleClass,\n {\n ['visually-hidden']: props.titleSrOnly,\n },\n])\nconst disableCancel = computed(() => props.cancelDisabled || props.busy)\nconst disableOk = computed(() => props.okDisabled || props.busy)\n\nconst buildTriggerableEvent = (\n type: string,\n opts: Readonly<Partial<BvTriggerableEvent>> = {}\n): BvTriggerableEvent =>\n new BvTriggerableEvent(type, {\n cancelable: false,\n target: element.value || null,\n relatedTarget: null,\n trigger: null,\n ...opts,\n componentId: computedId.value,\n })\n\nwatch(modelValue, (newValue, oldValue) => {\n if (newValue === oldValue) return\n if (newValue === true) {\n showFn()\n } else {\n hideFn()\n }\n})\n\nconst hideFn = (trigger = '') => {\n if (\n (trigger === 'backdrop' && props.noCloseOnBackdrop) ||\n (trigger === 'esc' && props.noCloseOnEsc)\n ) {\n emit('hide-prevented')\n return\n }\n\n const event = buildTriggerableEvent('hide', {cancelable: trigger !== '', trigger})\n\n if (trigger === 'ok') {\n emit(trigger, event)\n }\n if (trigger === 'cancel') {\n emit(trigger, event)\n }\n if (trigger === 'close') {\n emit(trigger, event)\n }\n if (trigger === 'backdrop') {\n emit(trigger, event)\n }\n if (trigger === 'esc') {\n emit(trigger, event)\n }\n emit('hide', event)\n\n if (event.defaultPrevented) {\n emit('hide-prevented')\n if (!modelValue.value) modelValue.value = true\n return\n }\n if (modelValue.value) modelValue.value = false\n}\n\n// TODO: If a show is prevented, it will briefly show the animation. This is a bug\n// I'm not sure how to wait for the event to be determined. Before showing\nconst showFn = () => {\n if (isActive.value) return\n\n const event = buildTriggerableEvent('show', {cancelable: true})\n emit('show', event)\n if (event.defaultPrevented) {\n if (modelValue.value) modelValue.value = false\n emit('show-prevented')\n return\n }\n if (!modelValue.value) modelValue.value = true\n}\n\nconst pickFocusItem = () => {\n if (props.autofocus === false) return\n props.autofocusButton === 'ok'\n ? (okButtonFocus.value = true)\n : props.autofocusButton === 'close'\n ? (closeButtonFocus.value = true)\n : props.autofocusButton === 'cancel'\n ? (cancelButtonFocus.value = true)\n : (modalFocus.value = true)\n}\n\nconst onBeforeEnter = () => {\n showFn()\n}\nconst onAfterEnter = () => {\n isActive.value = true\n pickFocusItem()\n emit('shown', buildTriggerableEvent('shown'))\n if (props.lazy === true) lazyLoadCompleted.value = true\n}\nconst isLeaving = ref(false)\nconst onLeave = () => {\n isActive.value = false\n isLeaving.value = true\n}\nconst onAfterLeave = () => {\n emit('hidden', buildTriggerableEvent('hidden'))\n if (props.lazy === true) lazyLoadCompleted.value = false\n isLeaving.value = false\n}\n\nconst {activePosition, activeModalCount, stackWithoutSelf} = useModalManager(\n isActive,\n modelValue.value\n)\n\nwatch(stackWithoutSelf, (newValue, oldValue) => {\n if (newValue.length > oldValue.length && isActive.value === true && props.noStacking === true)\n hideFn()\n})\n\nconst defaultModalDialogZIndex = 1056\nconst computedZIndex = computed<CSSProperties>(() => ({\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 'z-index':\n isActive.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 - ((activeModalCount?.value ?? 0) - (activePosition?.value ?? 0))\n : defaultModalDialogZIndex,\n}))\n\nuseEventListener(element, 'bv-toggle', () => {\n modelValue.value ? hideFn() : showFn()\n})\n\nconst sharedSlots = computed<SharedSlotsData>(() => ({\n cancel: () => {\n hideFn('cancel')\n },\n close: () => {\n hideFn('close')\n },\n hide: hideFn,\n ok: () => {\n hideFn('ok')\n },\n active: isActive.value,\n visible: modelValue.value,\n}))\n\ndefineExpose({\n hide: hideFn,\n id: computedId,\n show: showFn,\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 :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":["_useSlots","_useModel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BModalOrchestrator.vue_vue_type_script_setup_true_lang-B1RkD3dn.mjs","sources":["../src/composables/useTransitions.ts","../src/components/BModal/BModal.vue","../src/components/BModal/BModalOrchestrator.vue"],"sourcesContent":["import {computed, type MaybeRefOrGetter, toValue} from 'vue'\n\nexport const useFadeTransition = (noFade: MaybeRefOrGetter<boolean>) =>\n computed(() => {\n const NO_FADE_PROPS = {\n name: '',\n enterActiveClass: '',\n enterToClass: '',\n leaveActiveClass: '',\n leaveToClass: 'showing',\n enterFromClass: 'showing',\n leaveFromClass: '',\n css: true,\n }\n const FADE_PROPS = {\n ...NO_FADE_PROPS,\n name: 'fade',\n enterActiveClass: 'fade showing',\n leaveActiveClass: 'fade showing',\n }\n return toValue(noFade) ? NO_FADE_PROPS : FADE_PROPS\n })\n","<template>\n <ConditionalTeleport :to=\"props.teleportTo\" :disabled=\"props.teleportDisabled\">\n <Transition\n v-bind=\"{...fadeTransitionProps, ...props.transProps, enterToClass: 'show'}\"\n :appear=\"modelValue\"\n @before-enter=\"onBeforeEnter\"\n @after-enter=\"onAfterEnter\"\n @leave=\"onLeave\"\n @after-leave=\"onAfterLeave\"\n >\n <div\n v-show=\"modelValue\"\n :id=\"computedId\"\n ref=\"element\"\n class=\"modal\"\n :class=\"modalClasses\"\n role=\"dialog\"\n :aria-labelledby=\"!props.hideHeader ? `${computedId}-label` : undefined\"\n :aria-describedby=\"`${computedId}-body`\"\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n :style=\"computedZIndex\"\n >\n <div class=\"modal-dialog\" :class=\"modalDialogClasses\">\n <div v-if=\"lazyShowing\" class=\"modal-content\" :class=\"props.contentClass\">\n <div v-if=\"!props.hideHeader\" 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.hideHeaderClose\">\n <BButton\n v-if=\"hasHeaderCloseSlot\"\n v-bind=\"headerCloseAttrs\"\n @click=\"hideFn('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=\"hideFn('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.hideFooter\" 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=\"hideFn('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=\"hideFn('ok')\"\n >\n {{ props.okTitle }}\n </BButton>\n </slot>\n </slot>\n </div>\n </div>\n </div>\n <slot v-if=\"!props.hideBackdrop\" name=\"backdrop\" v-bind=\"sharedSlots\">\n <div class=\"modal-backdrop fade show\" @click=\"hideFn('backdrop')\" />\n </slot>\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 </ConditionalTeleport>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, useEventListener, useFocus} from '@vueuse/core'\nimport {useActivatedFocusTrap} from '../../composables/useActivatedFocusTrap'\nimport {computed, type CSSProperties, ref, 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 {useFadeTransition} from '../../composables/useTransitions'\nimport {useSafeScrollLock} from '../../composables/useSafeScrollLock'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport {useModalManager} from '../../composables/useModalManager'\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 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 hideBackdrop: false,\n hideFooter: false,\n hideHeader: false,\n hideHeaderClose: false,\n id: undefined,\n lazy: false,\n modalClass: undefined,\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 scrollable: false,\n size: 'md',\n teleportDisabled: false,\n teleportTo: 'body',\n title: undefined,\n titleClass: undefined,\n titleSrOnly: false,\n titleTag: 'h5',\n transProps: undefined,\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': []\n 'ok': [value: BvTriggerableEvent]\n 'show': [value: BvTriggerableEvent]\n 'show-prevented': []\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 = ref<HTMLElement | null>(null)\nconst fallbackFocusElement = ref<HTMLElement | null>(null)\nconst okButton = ref<HTMLElement | null>(null)\nconst cancelButton = ref<HTMLElement | null>(null)\nconst closeButton = ref<HTMLElement | null>(null)\nconst isActive = ref(false)\nconst lazyLoadCompleted = ref(false)\n\nconst fallbackClassSelector = 'modal-fallback-focus'\nconst {needsFallback} = useActivatedFocusTrap({\n element,\n isActive,\n noTrap: () => props.noTrap,\n fallbackFocus: {\n ref: fallbackFocusElement,\n classSelector: fallbackClassSelector,\n },\n})\n\nconst fadeTransitionProps = useFadeTransition(true)\n\nonKeyStroke(\n 'Escape',\n () => {\n hideFn('esc')\n },\n {target: element}\n)\nuseSafeScrollLock(modelValue, () => 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 modalClasses = computed(() => [\n props.modalClass,\n {\n fade: !props.noFade,\n show: isActive.value,\n },\n])\n\nconst lazyShowing = computed(\n () =>\n props.lazy === false ||\n (props.lazy === true && lazyLoadCompleted.value === true) ||\n (props.lazy === true && modelValue.value === 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 resolvedBodyBgClasses = useColorVariantClasses(() => ({\n bgVariant: props.bodyBgVariant,\n textVariant: props.bodyTextVariant,\n variant: props.bodyVariant,\n}))\n\nconst bodyClasses = computed(() => [props.bodyClass, resolvedBodyBgClasses.value])\n\nconst resolvedHeaderBgClasses = useColorVariantClasses(() => ({\n bgVariant: props.headerBgVariant,\n textVariant: props.headerTextVariant,\n variant: props.headerVariant,\n}))\n\nconst headerClasses = computed(() => [\n props.headerClass,\n resolvedHeaderBgClasses.value,\n {\n [`border-${props.headerBorderVariant}`]: props.headerBorderVariant !== null,\n },\n])\n\nconst headerCloseAttrs = computed(() => ({\n variant: hasHeaderCloseSlot.value ? props.headerCloseVariant : undefined,\n class: props.headerCloseClass,\n}))\n\nconst resolvedFooterBgClasses = useColorVariantClasses(() => ({\n bgVariant: props.footerBgVariant,\n textVariant: props.footerTextVariant,\n variant: props.footerVariant,\n}))\n\nconst footerClasses = computed(() => [\n props.footerClass,\n resolvedFooterBgClasses.value,\n {\n [`border-${props.footerBorderVariant}`]: props.footerBorderVariant !== null,\n },\n])\n\nconst titleClasses = computed(() => [\n props.titleClass,\n {\n ['visually-hidden']: props.titleSrOnly,\n },\n])\nconst disableCancel = computed(() => props.cancelDisabled || props.busy)\nconst disableOk = computed(() => props.okDisabled || props.busy)\n\nconst buildTriggerableEvent = (\n type: string,\n opts: Readonly<Partial<BvTriggerableEvent>> = {}\n): BvTriggerableEvent =>\n new BvTriggerableEvent(type, {\n cancelable: false,\n target: element.value || null,\n relatedTarget: null,\n trigger: null,\n ...opts,\n componentId: computedId.value,\n })\n\nwatch(modelValue, (newValue, oldValue) => {\n if (newValue === oldValue) return\n if (newValue === true) {\n showFn()\n } else {\n hideFn()\n }\n})\n\nconst hideFn = (trigger = '') => {\n if (\n (trigger === 'backdrop' && props.noCloseOnBackdrop) ||\n (trigger === 'esc' && props.noCloseOnEsc)\n ) {\n emit('hide-prevented')\n return\n }\n\n const event = buildTriggerableEvent('hide', {cancelable: trigger !== '', trigger})\n\n if (trigger === 'ok') {\n emit(trigger, event)\n }\n if (trigger === 'cancel') {\n emit(trigger, event)\n }\n if (trigger === 'close') {\n emit(trigger, event)\n }\n if (trigger === 'backdrop') {\n emit(trigger, event)\n }\n if (trigger === 'esc') {\n emit(trigger, event)\n }\n emit('hide', event)\n\n if (event.defaultPrevented) {\n emit('hide-prevented')\n if (!modelValue.value) modelValue.value = true\n return\n }\n if (modelValue.value) modelValue.value = false\n}\n\n// TODO: If a show is prevented, it will briefly show the animation. This is a bug\n// I'm not sure how to wait for the event to be determined. Before showing\nconst showFn = () => {\n if (isActive.value) return\n\n const event = buildTriggerableEvent('show', {cancelable: true})\n emit('show', event)\n if (event.defaultPrevented) {\n if (modelValue.value) modelValue.value = false\n emit('show-prevented')\n return\n }\n if (!modelValue.value) modelValue.value = true\n}\n\nconst pickFocusItem = () => {\n if (props.autofocus === false) return\n props.autofocusButton === 'ok'\n ? (okButtonFocus.value = true)\n : props.autofocusButton === 'close'\n ? (closeButtonFocus.value = true)\n : props.autofocusButton === 'cancel'\n ? (cancelButtonFocus.value = true)\n : (modalFocus.value = true)\n}\n\nconst onBeforeEnter = () => {\n showFn()\n}\nconst onAfterEnter = () => {\n isActive.value = true\n pickFocusItem()\n emit('shown', buildTriggerableEvent('shown'))\n if (props.lazy === true) lazyLoadCompleted.value = true\n}\nconst isLeaving = ref(false)\nconst onLeave = () => {\n isActive.value = false\n isLeaving.value = true\n}\nconst onAfterLeave = () => {\n emit('hidden', buildTriggerableEvent('hidden'))\n if (props.lazy === true) lazyLoadCompleted.value = false\n isLeaving.value = false\n}\n\nconst {activePosition, activeModalCount, stackWithoutSelf} = useModalManager(\n isActive,\n modelValue.value\n)\n\nwatch(stackWithoutSelf, (newValue, oldValue) => {\n if (newValue.length > oldValue.length && isActive.value === true && props.noStacking === true)\n hideFn()\n})\n\nconst defaultModalDialogZIndex = 1056\nconst computedZIndex = computed<CSSProperties>(() => ({\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 'z-index':\n isActive.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 - ((activeModalCount?.value ?? 0) - (activePosition?.value ?? 0))\n : defaultModalDialogZIndex,\n}))\n\nuseEventListener(element, 'bv-toggle', () => {\n modelValue.value ? hideFn() : showFn()\n})\n\nconst sharedSlots = computed<SharedSlotsData>(() => ({\n cancel: () => {\n hideFn('cancel')\n },\n close: () => {\n hideFn('close')\n },\n hide: hideFn,\n ok: () => {\n hideFn('ok')\n },\n active: isActive.value,\n visible: modelValue.value,\n}))\n\ndefineExpose({\n hide: hideFn,\n id: computedId,\n show: showFn,\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 :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":["_useSlots","_useModel"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("vue"),a=require("./useDefaults-C2groUjC.js"),l=require("./index-CnY1um_J.js"),o=require("./useSafeScrollLock-Ib_fUIsz.js"),t=require("./classes-CXBJXuVd.js"),r=require("./BButton.vue_vue_type_script_setup_true_lang-DFcCJWaf.js"),n=require("./BCloseButton.vue_vue_type_script_setup_true_lang-CRwsufrO.js"),d=require("./useId-D-t4Y3Sk.js"),s=require("./dom-C-F8jHop.js"),u=require("./useColorVariantClasses-Cs_6d0uD.js"),i=require("./useModalManager-M-dZHVBe.js"),c=require("./ConditionalTeleport.vue_vue_type_script_lang-nP1ZUfLS.js"),f=require("./_plugin-vue_export-helper-CC_fc8JW.js"),p=require("./src/composables/useModalController/index.umd.js"),v=["id","aria-labelledby","aria-describedby"],m=["id"],y="modal-fallback-focus",B=e.defineComponent({inheritAttrs:!1,__name:"BModal",props:e.mergeModels({autofocus:{type:Boolean,default:!0},autofocusButton:{default:void 0},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},hideBackdrop:{type:Boolean,default:!1},hideFooter:{type:Boolean,default:!1},hideHeader:{type:Boolean,default:!1},hideHeaderClose:{type:Boolean,default:!1},id:{default:void 0},lazy:{type:Boolean,default:!1},modalClass:{default:void 0},noCloseOnBackdrop:{type:Boolean,default:!1},noCloseOnEsc:{type:Boolean,default:!1},noFade:{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},titleSrOnly:{type:Boolean,default:!1},titleTag:{default:"h5"},transProps:{default:void 0},teleportDisabled:{type:Boolean,default:!1},teleportTo:{default:"body"}},{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:B}){const b=f,k=a.useDefaults(b,"BModal"),h=B,C=e.useSlots(),g=d.useId((()=>k.id),"modal"),V=e.useModel(f,"modelValue"),_=e.ref(null),S=e.ref(null),w=e.ref(null),x=e.ref(null),T=e.ref(null),z=e.ref(!1),P=e.ref(!1),{needsFallback:E}=o.useActivatedFocusTrap({element:_,isActive:z,noTrap:()=>k.noTrap,fallbackFocus:{ref:S,classSelector:y}}),D=(N=!0,e.computed((()=>{const a={name:"",enterActiveClass:"",enterToClass:"",leaveActiveClass:"",leaveToClass:"showing",enterFromClass:"showing",leaveFromClass:"",css:!0},l={...a,name:"fade",enterActiveClass:"fade showing",leaveActiveClass:"fade showing"};return e.toValue(N)?a:l})));var N;l.onKeyStroke("Escape",(()=>{Z("esc")}),{target:_}),o.useSafeScrollLock(V,(()=>k.bodyScrolling));const{focused:$}=l.useFocus(_,{initialValue:V.value&&void 0===k.autofocusButton&&!0===k.autofocus}),{focused:F}=l.useFocus(w,{initialValue:V.value&&"ok"===k.autofocusButton&&!0===k.autofocus}),{focused:M}=l.useFocus(x,{initialValue:V.value&&"cancel"===k.autofocusButton&&!0===k.autofocus}),{focused:q}=l.useFocus(T,{initialValue:V.value&&"close"===k.autofocusButton&&!0===k.autofocus}),j=e.computed((()=>[k.modalClass,{fade:!k.noFade,show:z.value}])),A=e.computed((()=>!1===k.lazy||!0===k.lazy&&!0===P.value||!0===k.lazy&&!0===V.value)),O=e.computed((()=>!s.isEmptySlot(C["header-close"]))),H=e.computed((()=>[k.dialogClass,{"modal-fullscreen":!0===k.fullscreen,[`modal-fullscreen-${k.fullscreen}-down`]:"string"==typeof k.fullscreen,[`modal-${k.size}`]:"md"!==k.size,"modal-dialog-centered":k.centered,"modal-dialog-scrollable":k.scrollable}])),L=u.useColorVariantClasses((()=>({bgVariant:k.bodyBgVariant,textVariant:k.bodyTextVariant,variant:k.bodyVariant}))),R=e.computed((()=>[k.bodyClass,L.value])),I=u.useColorVariantClasses((()=>({bgVariant:k.headerBgVariant,textVariant:k.headerTextVariant,variant:k.headerVariant}))),K=e.computed((()=>[k.headerClass,I.value,{[`border-${k.headerBorderVariant}`]:null!==k.headerBorderVariant}])),U=e.computed((()=>({variant:O.value?k.headerCloseVariant:void 0,class:k.headerCloseClass}))),W=u.useColorVariantClasses((()=>({bgVariant:k.footerBgVariant,textVariant:k.footerTextVariant,variant:k.footerVariant}))),X=e.computed((()=>[k.footerClass,W.value,{[`border-${k.footerBorderVariant}`]:null!==k.footerBorderVariant}])),Y=e.computed((()=>[k.titleClass,{"visually-hidden":k.titleSrOnly}])),G=e.computed((()=>k.cancelDisabled||k.busy)),J=e.computed((()=>k.okDisabled||k.busy)),Q=(e,a={})=>new t.BvTriggerableEvent(e,{cancelable:!1,target:_.value||null,relatedTarget:null,trigger:null,...a,componentId:g.value});e.watch(V,((e,a)=>{e!==a&&(!0===e?ee():Z())}));const Z=(e="")=>{if("backdrop"===e&&k.noCloseOnBackdrop||"esc"===e&&k.noCloseOnEsc)return void h("hide-prevented");const a=Q("hide",{cancelable:""!==e,trigger:e});if("ok"===e&&h(e,a),"cancel"===e&&h(e,a),"close"===e&&h(e,a),"backdrop"===e&&h(e,a),"esc"===e&&h(e,a),h("hide",a),a.defaultPrevented)return h("hide-prevented"),void(V.value||(V.value=!0));V.value&&(V.value=!1)},ee=()=>{if(z.value)return;const e=Q("show",{cancelable:!0});if(h("show",e),e.defaultPrevented)return V.value&&(V.value=!1),void h("show-prevented");V.value||(V.value=!0)},ae=()=>{ee()},le=()=>{z.value=!0,!1!==k.autofocus&&("ok"===k.autofocusButton?F.value=!0:"close"===k.autofocusButton?q.value=!0:"cancel"===k.autofocusButton?M.value=!0:$.value=!0),h("shown",Q("shown")),!0===k.lazy&&(P.value=!0)},oe=e.ref(!1),te=()=>{z.value=!1,oe.value=!0},re=()=>{h("hidden",Q("hidden")),!0===k.lazy&&(P.value=!1),oe.value=!1},{activePosition:ne,activeModalCount:de,stackWithoutSelf:se}=i.useModalManager(z,V.value);e.watch(se,((e,a)=>{e.length>a.length&&!0===z.value&&!0===k.noStacking&&Z()}));const ue=e.computed((()=>({"z-index":z.value||oe.value?1056-(((null==de?void 0:de.value)??0)-((null==ne?void 0:ne.value)??0)):1056})));l.useEventListener(_,"bv-toggle",(()=>{V.value?Z():ee()}));const ie=e.computed((()=>({cancel:()=>{Z("cancel")},close:()=>{Z("close")},hide:Z,ok:()=>{Z("ok")},active:z.value,visible:V.value})));return p({hide:Z,id:g,show:ee}),(a,l)=>(e.openBlock(),e.createBlock(c._sfc_main,{to:e.unref(k).teleportTo,disabled:e.unref(k).teleportDisabled},{default:e.withCtx((()=>[e.createVNode(e.Transition,e.mergeProps({...e.unref(D),...e.unref(k).transProps,enterToClass:"show"},{appear:V.value,onBeforeEnter:ae,onAfterEnter:le,onLeave:te,onAfterLeave:re}),{default:e.withCtx((()=>[e.withDirectives(e.createElementVNode("div",e.mergeProps({id:e.unref(g),ref_key:"element",ref:_,class:["modal",j.value],role:"dialog","aria-labelledby":e.unref(k).hideHeader?void 0:`${e.unref(g)}-label`,"aria-describedby":`${e.unref(g)}-body`,tabindex:"-1"},a.$attrs,{style:ue.value}),[e.createElementVNode("div",{class:e.normalizeClass(["modal-dialog",H.value])},[A.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["modal-content",e.unref(k).contentClass])},[e.unref(k).hideHeader?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["modal-header",K.value])},[e.renderSlot(a.$slots,"header",e.normalizeProps(e.guardReactiveProps(ie.value)),(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(k).titleTag),{id:`${e.unref(g)}-label`,class:e.normalizeClass(["modal-title",Y.value])},{default:e.withCtx((()=>[e.renderSlot(a.$slots,"title",e.normalizeProps(e.guardReactiveProps(ie.value)),(()=>[e.createTextVNode(e.toDisplayString(e.unref(k).title),1)]),!0)])),_:3},8,["id","class"])),e.unref(k).hideHeaderClose?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[O.value?(e.openBlock(),e.createBlock(r._sfc_main,e.mergeProps({key:0},U.value,{onClick:l[0]||(l[0]=e=>Z("close"))}),{default:e.withCtx((()=>[e.renderSlot(a.$slots,"header-close",{},void 0,!0)])),_:3},16)):(e.openBlock(),e.createBlock(n._sfc_main,e.mergeProps({key:1,"aria-label":e.unref(k).headerCloseLabel},U.value,{onClick:l[1]||(l[1]=e=>Z("close"))}),null,16,["aria-label"]))],64))]),!0)],2)),e.createElementVNode("div",e.mergeProps({id:`${e.unref(g)}-body`,class:["modal-body",R.value]},e.unref(k).bodyAttrs),[e.renderSlot(a.$slots,"default",e.normalizeProps(e.guardReactiveProps(ie.value)),(()=>[e.createTextVNode(e.toDisplayString(e.unref(k).body),1)]),!0)],16,m),e.unref(k).hideFooter?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["modal-footer",X.value])},[e.renderSlot(a.$slots,"footer",e.normalizeProps(e.guardReactiveProps(ie.value)),(()=>[e.renderSlot(a.$slots,"cancel",e.normalizeProps(e.guardReactiveProps(ie.value)),(()=>[e.unref(k).okOnly?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(r._sfc_main,{key:0,ref_key:"cancelButton",ref:x,disabled:G.value,size:e.unref(k).buttonSize,variant:e.unref(k).cancelVariant,onClick:l[2]||(l[2]=e=>Z("cancel"))},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(e.unref(k).cancelTitle),1)])),_:1},8,["disabled","size","variant"]))]),!0),e.renderSlot(a.$slots,"ok",e.normalizeProps(e.guardReactiveProps(ie.value)),(()=>[e.createVNode(r._sfc_main,{ref_key:"okButton",ref:w,disabled:J.value,size:e.unref(k).buttonSize,variant:e.unref(k).okVariant,onClick:l[3]||(l[3]=e=>Z("ok"))},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(e.unref(k).okTitle),1)])),_:1},8,["disabled","size","variant"])]),!0)]),!0)],2))],2)):e.createCommentVNode("",!0)],2),e.unref(k).hideBackdrop?e.createCommentVNode("",!0):e.renderSlot(a.$slots,"backdrop",e.normalizeProps(e.mergeProps({key:0},ie.value)),(()=>[e.createElementVNode("div",{class:"modal-backdrop fade show",onClick:l[4]||(l[4]=e=>Z("backdrop"))})]),!0),e.unref(E)?(e.openBlock(),e.createElementBlock("div",{key:1,ref_key:"fallbackFocusElement",ref:S,class:e.normalizeClass(y),tabindex:"0",style:{width:"0",height:"0",overflow:"hidden"}},null,512)):e.createCommentVNode("",!0)],16,v),[[e.vShow,V.value]])])),_:3},16,["appear"])])),_:3},8,["to","disabled"]))}}),b=f._export_sfc(B,[["__scopeId","data-v-5095e228"]]),k=e.defineComponent({inheritAttrs:!1,__name:"BModalOrchestrator",props:{teleportDisabled:{type:Boolean,default:!1},teleportTo:{default:"body"}},setup(l,{expose:o}){const t=l,r=a.useDefaults(t,"BModalOrchestrator"),n=p.useModalController();return o({...n}),(a,l)=>(e.openBlock(),e.createBlock(c._sfc_main,{to:e.unref(r).teleportTo,disabled:e.unref(r).teleportDisabled},{default:e.withCtx((()=>{var l;return[e.createElementVNode("div",e.mergeProps({id:"__BVID__modal-container"},a.$attrs),[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(null==(l=e.unref(n).modals)?void 0:l.value,(([a,l])=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.component??b),e.mergeProps({key:a,ref_for:!0},l.props,{modelValue:l.props._modelValue,"onUpdate:modelValue":[e=>l.props._modelValue=e,l=>{var o,t;return null==(t=(o=e.unref(n)).leave)?void 0:t.call(o,a)}],"teleport-disabled":!0,onHide:e=>{if(!0===l.props._isConfirm){if("ok"===e.trigger)return void l.props._promise.resolve(!0);if("cancel"===e.trigger)return void l.props._promise.resolve(!1);l.props._promise.resolve(null)}l.props._promise.resolve(!0)},onHidden:l=>{var o,t;return null==(t=(o=e.unref(n)).remove)?void 0:t.call(o,a)}}),null,16,["modelValue","onUpdate:modelValue","onHide","onHidden"])))),128))],16)]})),_:1},8,["to","disabled"]))}});exports.BModal=b,exports._sfc_main=k;
|
|
2
|
-
//# sourceMappingURL=BModalOrchestrator.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
"use strict";const e=require("vue"),a=require("./useDefaults-C2groUjC.js"),l=require("./index-CnY1um_J.js"),o=require("./useSafeScrollLock-DoX-OOqc.js"),t=require("./classes-CXBJXuVd.js"),r=require("./BButton.vue_vue_type_script_setup_true_lang-DFcCJWaf.js"),n=require("./BCloseButton.vue_vue_type_script_setup_true_lang-CRwsufrO.js"),d=require("./useId-D-t4Y3Sk.js"),s=require("./dom-C-F8jHop.js"),u=require("./useColorVariantClasses-Cs_6d0uD.js"),i=require("./useModalManager-M-dZHVBe.js"),c=require("./ConditionalTeleport.vue_vue_type_script_lang-nP1ZUfLS.js"),f=require("./_plugin-vue_export-helper-CC_fc8JW.js"),p=require("./src/composables/useModalController/index.umd.js"),v=["id","aria-labelledby","aria-describedby"],m=["id"],y="modal-fallback-focus",B=e.defineComponent({inheritAttrs:!1,__name:"BModal",props:e.mergeModels({autofocus:{type:Boolean,default:!0},autofocusButton:{default:void 0},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},hideBackdrop:{type:Boolean,default:!1},hideFooter:{type:Boolean,default:!1},hideHeader:{type:Boolean,default:!1},hideHeaderClose:{type:Boolean,default:!1},id:{default:void 0},lazy:{type:Boolean,default:!1},modalClass:{default:void 0},noCloseOnBackdrop:{type:Boolean,default:!1},noCloseOnEsc:{type:Boolean,default:!1},noFade:{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},titleSrOnly:{type:Boolean,default:!1},titleTag:{default:"h5"},transProps:{default:void 0},teleportDisabled:{type:Boolean,default:!1},teleportTo:{default:"body"}},{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:B}){const b=f,k=a.useDefaults(b,"BModal"),h=B,C=e.useSlots(),g=d.useId((()=>k.id),"modal"),V=e.useModel(f,"modelValue"),_=e.ref(null),S=e.ref(null),w=e.ref(null),x=e.ref(null),T=e.ref(null),z=e.ref(!1),P=e.ref(!1),{needsFallback:E}=o.useActivatedFocusTrap({element:_,isActive:z,noTrap:()=>k.noTrap,fallbackFocus:{ref:S,classSelector:y}}),D=(N=!0,e.computed((()=>{const a={name:"",enterActiveClass:"",enterToClass:"",leaveActiveClass:"",leaveToClass:"showing",enterFromClass:"showing",leaveFromClass:"",css:!0},l={...a,name:"fade",enterActiveClass:"fade showing",leaveActiveClass:"fade showing"};return e.toValue(N)?a:l})));var N;l.onKeyStroke("Escape",(()=>{Z("esc")}),{target:_}),o.useSafeScrollLock(V,(()=>k.bodyScrolling));const{focused:$}=l.useFocus(_,{initialValue:V.value&&void 0===k.autofocusButton&&!0===k.autofocus}),{focused:F}=l.useFocus(w,{initialValue:V.value&&"ok"===k.autofocusButton&&!0===k.autofocus}),{focused:M}=l.useFocus(x,{initialValue:V.value&&"cancel"===k.autofocusButton&&!0===k.autofocus}),{focused:q}=l.useFocus(T,{initialValue:V.value&&"close"===k.autofocusButton&&!0===k.autofocus}),j=e.computed((()=>[k.modalClass,{fade:!k.noFade,show:z.value}])),A=e.computed((()=>!1===k.lazy||!0===k.lazy&&!0===P.value||!0===k.lazy&&!0===V.value)),O=e.computed((()=>!s.isEmptySlot(C["header-close"]))),H=e.computed((()=>[k.dialogClass,{"modal-fullscreen":!0===k.fullscreen,[`modal-fullscreen-${k.fullscreen}-down`]:"string"==typeof k.fullscreen,[`modal-${k.size}`]:"md"!==k.size,"modal-dialog-centered":k.centered,"modal-dialog-scrollable":k.scrollable}])),L=u.useColorVariantClasses((()=>({bgVariant:k.bodyBgVariant,textVariant:k.bodyTextVariant,variant:k.bodyVariant}))),R=e.computed((()=>[k.bodyClass,L.value])),I=u.useColorVariantClasses((()=>({bgVariant:k.headerBgVariant,textVariant:k.headerTextVariant,variant:k.headerVariant}))),K=e.computed((()=>[k.headerClass,I.value,{[`border-${k.headerBorderVariant}`]:null!==k.headerBorderVariant}])),U=e.computed((()=>({variant:O.value?k.headerCloseVariant:void 0,class:k.headerCloseClass}))),W=u.useColorVariantClasses((()=>({bgVariant:k.footerBgVariant,textVariant:k.footerTextVariant,variant:k.footerVariant}))),X=e.computed((()=>[k.footerClass,W.value,{[`border-${k.footerBorderVariant}`]:null!==k.footerBorderVariant}])),Y=e.computed((()=>[k.titleClass,{"visually-hidden":k.titleSrOnly}])),G=e.computed((()=>k.cancelDisabled||k.busy)),J=e.computed((()=>k.okDisabled||k.busy)),Q=(e,a={})=>new t.BvTriggerableEvent(e,{cancelable:!1,target:_.value||null,relatedTarget:null,trigger:null,...a,componentId:g.value});e.watch(V,((e,a)=>{e!==a&&(!0===e?ee():Z())}));const Z=(e="")=>{if("backdrop"===e&&k.noCloseOnBackdrop||"esc"===e&&k.noCloseOnEsc)return void h("hide-prevented");const a=Q("hide",{cancelable:""!==e,trigger:e});if("ok"===e&&h(e,a),"cancel"===e&&h(e,a),"close"===e&&h(e,a),"backdrop"===e&&h(e,a),"esc"===e&&h(e,a),h("hide",a),a.defaultPrevented)return h("hide-prevented"),void(V.value||(V.value=!0));V.value&&(V.value=!1)},ee=()=>{if(z.value)return;const e=Q("show",{cancelable:!0});if(h("show",e),e.defaultPrevented)return V.value&&(V.value=!1),void h("show-prevented");V.value||(V.value=!0)},ae=()=>{ee()},le=()=>{z.value=!0,!1!==k.autofocus&&("ok"===k.autofocusButton?F.value=!0:"close"===k.autofocusButton?q.value=!0:"cancel"===k.autofocusButton?M.value=!0:$.value=!0),h("shown",Q("shown")),!0===k.lazy&&(P.value=!0)},oe=e.ref(!1),te=()=>{z.value=!1,oe.value=!0},re=()=>{h("hidden",Q("hidden")),!0===k.lazy&&(P.value=!1),oe.value=!1},{activePosition:ne,activeModalCount:de,stackWithoutSelf:se}=i.useModalManager(z,V.value);e.watch(se,((e,a)=>{e.length>a.length&&!0===z.value&&!0===k.noStacking&&Z()}));const ue=e.computed((()=>({"z-index":z.value||oe.value?1056-(((null==de?void 0:de.value)??0)-((null==ne?void 0:ne.value)??0)):1056})));l.useEventListener(_,"bv-toggle",(()=>{V.value?Z():ee()}));const ie=e.computed((()=>({cancel:()=>{Z("cancel")},close:()=>{Z("close")},hide:Z,ok:()=>{Z("ok")},active:z.value,visible:V.value})));return p({hide:Z,id:g,show:ee}),(a,l)=>(e.openBlock(),e.createBlock(c._sfc_main,{to:e.unref(k).teleportTo,disabled:e.unref(k).teleportDisabled},{default:e.withCtx((()=>[e.createVNode(e.Transition,e.mergeProps({...e.unref(D),...e.unref(k).transProps,enterToClass:"show"},{appear:V.value,onBeforeEnter:ae,onAfterEnter:le,onLeave:te,onAfterLeave:re}),{default:e.withCtx((()=>[e.withDirectives(e.createElementVNode("div",e.mergeProps({id:e.unref(g),ref_key:"element",ref:_,class:["modal",j.value],role:"dialog","aria-labelledby":e.unref(k).hideHeader?void 0:`${e.unref(g)}-label`,"aria-describedby":`${e.unref(g)}-body`,tabindex:"-1"},a.$attrs,{style:ue.value}),[e.createElementVNode("div",{class:e.normalizeClass(["modal-dialog",H.value])},[A.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["modal-content",e.unref(k).contentClass])},[e.unref(k).hideHeader?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["modal-header",K.value])},[e.renderSlot(a.$slots,"header",e.normalizeProps(e.guardReactiveProps(ie.value)),(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(k).titleTag),{id:`${e.unref(g)}-label`,class:e.normalizeClass(["modal-title",Y.value])},{default:e.withCtx((()=>[e.renderSlot(a.$slots,"title",e.normalizeProps(e.guardReactiveProps(ie.value)),(()=>[e.createTextVNode(e.toDisplayString(e.unref(k).title),1)]),!0)])),_:3},8,["id","class"])),e.unref(k).hideHeaderClose?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[O.value?(e.openBlock(),e.createBlock(r._sfc_main,e.mergeProps({key:0},U.value,{onClick:l[0]||(l[0]=e=>Z("close"))}),{default:e.withCtx((()=>[e.renderSlot(a.$slots,"header-close",{},void 0,!0)])),_:3},16)):(e.openBlock(),e.createBlock(n._sfc_main,e.mergeProps({key:1,"aria-label":e.unref(k).headerCloseLabel},U.value,{onClick:l[1]||(l[1]=e=>Z("close"))}),null,16,["aria-label"]))],64))]),!0)],2)),e.createElementVNode("div",e.mergeProps({id:`${e.unref(g)}-body`,class:["modal-body",R.value]},e.unref(k).bodyAttrs),[e.renderSlot(a.$slots,"default",e.normalizeProps(e.guardReactiveProps(ie.value)),(()=>[e.createTextVNode(e.toDisplayString(e.unref(k).body),1)]),!0)],16,m),e.unref(k).hideFooter?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["modal-footer",X.value])},[e.renderSlot(a.$slots,"footer",e.normalizeProps(e.guardReactiveProps(ie.value)),(()=>[e.renderSlot(a.$slots,"cancel",e.normalizeProps(e.guardReactiveProps(ie.value)),(()=>[e.unref(k).okOnly?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(r._sfc_main,{key:0,ref_key:"cancelButton",ref:x,disabled:G.value,size:e.unref(k).buttonSize,variant:e.unref(k).cancelVariant,onClick:l[2]||(l[2]=e=>Z("cancel"))},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(e.unref(k).cancelTitle),1)])),_:1},8,["disabled","size","variant"]))]),!0),e.renderSlot(a.$slots,"ok",e.normalizeProps(e.guardReactiveProps(ie.value)),(()=>[e.createVNode(r._sfc_main,{ref_key:"okButton",ref:w,disabled:J.value,size:e.unref(k).buttonSize,variant:e.unref(k).okVariant,onClick:l[3]||(l[3]=e=>Z("ok"))},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(e.unref(k).okTitle),1)])),_:1},8,["disabled","size","variant"])]),!0)]),!0)],2))],2)):e.createCommentVNode("",!0)],2),e.unref(k).hideBackdrop?e.createCommentVNode("",!0):e.renderSlot(a.$slots,"backdrop",e.normalizeProps(e.mergeProps({key:0},ie.value)),(()=>[e.createElementVNode("div",{class:"modal-backdrop fade show",onClick:l[4]||(l[4]=e=>Z("backdrop"))})]),!0),e.unref(E)?(e.openBlock(),e.createElementBlock("div",{key:1,ref_key:"fallbackFocusElement",ref:S,class:e.normalizeClass(y),tabindex:"0",style:{width:"0",height:"0",overflow:"hidden"}},null,512)):e.createCommentVNode("",!0)],16,v),[[e.vShow,V.value]])])),_:3},16,["appear"])])),_:3},8,["to","disabled"]))}}),b=f._export_sfc(B,[["__scopeId","data-v-5095e228"]]),k=e.defineComponent({inheritAttrs:!1,__name:"BModalOrchestrator",props:{teleportDisabled:{type:Boolean,default:!1},teleportTo:{default:"body"}},setup(l,{expose:o}){const t=l,r=a.useDefaults(t,"BModalOrchestrator"),n=p.useModalController();return o({...n}),(a,l)=>(e.openBlock(),e.createBlock(c._sfc_main,{to:e.unref(r).teleportTo,disabled:e.unref(r).teleportDisabled},{default:e.withCtx((()=>{var l;return[e.createElementVNode("div",e.mergeProps({id:"__BVID__modal-container"},a.$attrs),[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(null==(l=e.unref(n).modals)?void 0:l.value,(([a,l])=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.component??b),e.mergeProps({key:a,ref_for:!0},l.props,{modelValue:l.props._modelValue,"onUpdate:modelValue":[e=>l.props._modelValue=e,l=>{var o,t;return null==(t=(o=e.unref(n)).leave)?void 0:t.call(o,a)}],"teleport-disabled":!0,onHide:e=>{if(!0===l.props._isConfirm){if("ok"===e.trigger)return void l.props._promise.resolve(!0);if("cancel"===e.trigger)return void l.props._promise.resolve(!1);l.props._promise.resolve(null)}l.props._promise.resolve(!0)},onHidden:l=>{var o,t;return null==(t=(o=e.unref(n)).remove)?void 0:t.call(o,a)}}),null,16,["modelValue","onUpdate:modelValue","onHide","onHidden"])))),128))],16)]})),_:1},8,["to","disabled"]))}});exports.BModal=b,exports._sfc_main=k;
|
|
2
|
+
//# sourceMappingURL=BModalOrchestrator.vue_vue_type_script_setup_true_lang-BJT6eBMZ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BModalOrchestrator.vue_vue_type_script_setup_true_lang-Cbj_OlNR.js","sources":["../src/components/BModal/BModal.vue","../src/composables/useTransitions.ts","../src/components/BModal/BModalOrchestrator.vue"],"sourcesContent":["<template>\n <ConditionalTeleport :to=\"props.teleportTo\" :disabled=\"props.teleportDisabled\">\n <Transition\n v-bind=\"{...fadeTransitionProps, ...props.transProps, enterToClass: 'show'}\"\n :appear=\"modelValue\"\n @before-enter=\"onBeforeEnter\"\n @after-enter=\"onAfterEnter\"\n @leave=\"onLeave\"\n @after-leave=\"onAfterLeave\"\n >\n <div\n v-show=\"modelValue\"\n :id=\"computedId\"\n ref=\"element\"\n class=\"modal\"\n :class=\"modalClasses\"\n role=\"dialog\"\n :aria-labelledby=\"!props.hideHeader ? `${computedId}-label` : undefined\"\n :aria-describedby=\"`${computedId}-body`\"\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n :style=\"computedZIndex\"\n >\n <div class=\"modal-dialog\" :class=\"modalDialogClasses\">\n <div v-if=\"lazyShowing\" class=\"modal-content\" :class=\"props.contentClass\">\n <div v-if=\"!props.hideHeader\" 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.hideHeaderClose\">\n <BButton\n v-if=\"hasHeaderCloseSlot\"\n v-bind=\"headerCloseAttrs\"\n @click=\"hideFn('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=\"hideFn('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.hideFooter\" 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=\"hideFn('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=\"hideFn('ok')\"\n >\n {{ props.okTitle }}\n </BButton>\n </slot>\n </slot>\n </div>\n </div>\n </div>\n <slot v-if=\"!props.hideBackdrop\" name=\"backdrop\" v-bind=\"sharedSlots\">\n <div class=\"modal-backdrop fade show\" @click=\"hideFn('backdrop')\" />\n </slot>\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 </ConditionalTeleport>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, useEventListener, useFocus} from '@vueuse/core'\nimport {useActivatedFocusTrap} from '../../composables/useActivatedFocusTrap'\nimport {computed, type CSSProperties, ref, 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 {useFadeTransition} from '../../composables/useTransitions'\nimport {useSafeScrollLock} from '../../composables/useSafeScrollLock'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport {useModalManager} from '../../composables/useModalManager'\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 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 hideBackdrop: false,\n hideFooter: false,\n hideHeader: false,\n hideHeaderClose: false,\n id: undefined,\n lazy: false,\n modalClass: undefined,\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 scrollable: false,\n size: 'md',\n teleportDisabled: false,\n teleportTo: 'body',\n title: undefined,\n titleClass: undefined,\n titleSrOnly: false,\n titleTag: 'h5',\n transProps: undefined,\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': []\n 'ok': [value: BvTriggerableEvent]\n 'show': [value: BvTriggerableEvent]\n 'show-prevented': []\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 = ref<HTMLElement | null>(null)\nconst fallbackFocusElement = ref<HTMLElement | null>(null)\nconst okButton = ref<HTMLElement | null>(null)\nconst cancelButton = ref<HTMLElement | null>(null)\nconst closeButton = ref<HTMLElement | null>(null)\nconst isActive = ref(false)\nconst lazyLoadCompleted = ref(false)\n\nconst fallbackClassSelector = 'modal-fallback-focus'\nconst {needsFallback} = useActivatedFocusTrap({\n element,\n isActive,\n noTrap: () => props.noTrap,\n fallbackFocus: {\n ref: fallbackFocusElement,\n classSelector: fallbackClassSelector,\n },\n})\n\nconst fadeTransitionProps = useFadeTransition(true)\n\nonKeyStroke(\n 'Escape',\n () => {\n hideFn('esc')\n },\n {target: element}\n)\nuseSafeScrollLock(modelValue, () => 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 modalClasses = computed(() => [\n props.modalClass,\n {\n fade: !props.noFade,\n show: isActive.value,\n },\n])\n\nconst lazyShowing = computed(\n () =>\n props.lazy === false ||\n (props.lazy === true && lazyLoadCompleted.value === true) ||\n (props.lazy === true && modelValue.value === 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 resolvedBodyBgClasses = useColorVariantClasses(() => ({\n bgVariant: props.bodyBgVariant,\n textVariant: props.bodyTextVariant,\n variant: props.bodyVariant,\n}))\n\nconst bodyClasses = computed(() => [props.bodyClass, resolvedBodyBgClasses.value])\n\nconst resolvedHeaderBgClasses = useColorVariantClasses(() => ({\n bgVariant: props.headerBgVariant,\n textVariant: props.headerTextVariant,\n variant: props.headerVariant,\n}))\n\nconst headerClasses = computed(() => [\n props.headerClass,\n resolvedHeaderBgClasses.value,\n {\n [`border-${props.headerBorderVariant}`]: props.headerBorderVariant !== null,\n },\n])\n\nconst headerCloseAttrs = computed(() => ({\n variant: hasHeaderCloseSlot.value ? props.headerCloseVariant : undefined,\n class: props.headerCloseClass,\n}))\n\nconst resolvedFooterBgClasses = useColorVariantClasses(() => ({\n bgVariant: props.footerBgVariant,\n textVariant: props.footerTextVariant,\n variant: props.footerVariant,\n}))\n\nconst footerClasses = computed(() => [\n props.footerClass,\n resolvedFooterBgClasses.value,\n {\n [`border-${props.footerBorderVariant}`]: props.footerBorderVariant !== null,\n },\n])\n\nconst titleClasses = computed(() => [\n props.titleClass,\n {\n ['visually-hidden']: props.titleSrOnly,\n },\n])\nconst disableCancel = computed(() => props.cancelDisabled || props.busy)\nconst disableOk = computed(() => props.okDisabled || props.busy)\n\nconst buildTriggerableEvent = (\n type: string,\n opts: Readonly<Partial<BvTriggerableEvent>> = {}\n): BvTriggerableEvent =>\n new BvTriggerableEvent(type, {\n cancelable: false,\n target: element.value || null,\n relatedTarget: null,\n trigger: null,\n ...opts,\n componentId: computedId.value,\n })\n\nwatch(modelValue, (newValue, oldValue) => {\n if (newValue === oldValue) return\n if (newValue === true) {\n showFn()\n } else {\n hideFn()\n }\n})\n\nconst hideFn = (trigger = '') => {\n if (\n (trigger === 'backdrop' && props.noCloseOnBackdrop) ||\n (trigger === 'esc' && props.noCloseOnEsc)\n ) {\n emit('hide-prevented')\n return\n }\n\n const event = buildTriggerableEvent('hide', {cancelable: trigger !== '', trigger})\n\n if (trigger === 'ok') {\n emit(trigger, event)\n }\n if (trigger === 'cancel') {\n emit(trigger, event)\n }\n if (trigger === 'close') {\n emit(trigger, event)\n }\n if (trigger === 'backdrop') {\n emit(trigger, event)\n }\n if (trigger === 'esc') {\n emit(trigger, event)\n }\n emit('hide', event)\n\n if (event.defaultPrevented) {\n emit('hide-prevented')\n if (!modelValue.value) modelValue.value = true\n return\n }\n if (modelValue.value) modelValue.value = false\n}\n\n// TODO: If a show is prevented, it will briefly show the animation. This is a bug\n// I'm not sure how to wait for the event to be determined. Before showing\nconst showFn = () => {\n if (isActive.value) return\n\n const event = buildTriggerableEvent('show', {cancelable: true})\n emit('show', event)\n if (event.defaultPrevented) {\n if (modelValue.value) modelValue.value = false\n emit('show-prevented')\n return\n }\n if (!modelValue.value) modelValue.value = true\n}\n\nconst pickFocusItem = () => {\n if (props.autofocus === false) return\n props.autofocusButton === 'ok'\n ? (okButtonFocus.value = true)\n : props.autofocusButton === 'close'\n ? (closeButtonFocus.value = true)\n : props.autofocusButton === 'cancel'\n ? (cancelButtonFocus.value = true)\n : (modalFocus.value = true)\n}\n\nconst onBeforeEnter = () => {\n showFn()\n}\nconst onAfterEnter = () => {\n isActive.value = true\n pickFocusItem()\n emit('shown', buildTriggerableEvent('shown'))\n if (props.lazy === true) lazyLoadCompleted.value = true\n}\nconst isLeaving = ref(false)\nconst onLeave = () => {\n isActive.value = false\n isLeaving.value = true\n}\nconst onAfterLeave = () => {\n emit('hidden', buildTriggerableEvent('hidden'))\n if (props.lazy === true) lazyLoadCompleted.value = false\n isLeaving.value = false\n}\n\nconst {activePosition, activeModalCount, stackWithoutSelf} = useModalManager(\n isActive,\n modelValue.value\n)\n\nwatch(stackWithoutSelf, (newValue, oldValue) => {\n if (newValue.length > oldValue.length && isActive.value === true && props.noStacking === true)\n hideFn()\n})\n\nconst defaultModalDialogZIndex = 1056\nconst computedZIndex = computed<CSSProperties>(() => ({\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 'z-index':\n isActive.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 - ((activeModalCount?.value ?? 0) - (activePosition?.value ?? 0))\n : defaultModalDialogZIndex,\n}))\n\nuseEventListener(element, 'bv-toggle', () => {\n modelValue.value ? hideFn() : showFn()\n})\n\nconst sharedSlots = computed<SharedSlotsData>(() => ({\n cancel: () => {\n hideFn('cancel')\n },\n close: () => {\n hideFn('close')\n },\n hide: hideFn,\n ok: () => {\n hideFn('ok')\n },\n active: isActive.value,\n visible: modelValue.value,\n}))\n\ndefineExpose({\n hide: hideFn,\n id: computedId,\n show: showFn,\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","import {computed, type MaybeRefOrGetter, toValue} from 'vue'\n\nexport const useFadeTransition = (noFade: MaybeRefOrGetter<boolean>) =>\n computed(() => {\n const NO_FADE_PROPS = {\n name: '',\n enterActiveClass: '',\n enterToClass: '',\n leaveActiveClass: '',\n leaveToClass: 'showing',\n enterFromClass: 'showing',\n leaveFromClass: '',\n css: true,\n }\n const FADE_PROPS = {\n ...NO_FADE_PROPS,\n name: 'fade',\n enterActiveClass: 'fade showing',\n leaveActiveClass: 'fade showing',\n }\n return toValue(noFade) ? NO_FADE_PROPS : FADE_PROPS\n })\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 :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","ref","fallbackFocusElement","okButton","cancelButton","closeButton","isActive","lazyLoadCompleted","needsFallback","useActivatedFocusTrap","noTrap","fallbackFocus","classSelector","fadeTransitionProps","noFade","computed","NO_FADE_PROPS","name","enterActiveClass","enterToClass","leaveActiveClass","leaveToClass","enterFromClass","leaveFromClass","css","FADE_PROPS","toValue","index","onKeyStroke","hideFn","target","useSafeScrollLock","bodyScrolling","focused","modalFocus","useFocus","initialValue","value","autofocusButton","autofocus","okButtonFocus","cancelButtonFocus","closeButtonFocus","modalClasses","modalClass","fade","show","lazyShowing","lazy","hasHeaderCloseSlot","isEmptySlot","modalDialogClasses","dialogClass","fullscreen","size","centered","scrollable","resolvedBodyBgClasses","useColorVariantClasses","bgVariant","bodyBgVariant","textVariant","bodyTextVariant","variant","bodyVariant","bodyClasses","bodyClass","resolvedHeaderBgClasses","headerBgVariant","headerTextVariant","headerVariant","headerClasses","headerClass","headerBorderVariant","headerCloseAttrs","headerCloseVariant","class","headerCloseClass","resolvedFooterBgClasses","footerBgVariant","footerTextVariant","footerVariant","footerClasses","footerClass","footerBorderVariant","titleClasses","titleClass","titleSrOnly","disableCancel","cancelDisabled","busy","disableOk","okDisabled","buildTriggerableEvent","type","opts","BvTriggerableEvent","cancelable","relatedTarget","trigger","componentId","watch","newValue","oldValue","noCloseOnBackdrop","noCloseOnEsc","event","defaultPrevented","showFn","onBeforeEnter","onAfterEnter","isLeaving","onLeave","onAfterLeave","activePosition","activeModalCount","stackWithoutSelf","useModalManager","length","noStacking","computedZIndex","sharedSlots","cancel","close","hide","ok","active","visible","__expose","tools","useModalController"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BModalOrchestrator.vue_vue_type_script_setup_true_lang-BJT6eBMZ.js","sources":["../src/components/BModal/BModal.vue","../src/composables/useTransitions.ts","../src/components/BModal/BModalOrchestrator.vue"],"sourcesContent":["<template>\n <ConditionalTeleport :to=\"props.teleportTo\" :disabled=\"props.teleportDisabled\">\n <Transition\n v-bind=\"{...fadeTransitionProps, ...props.transProps, enterToClass: 'show'}\"\n :appear=\"modelValue\"\n @before-enter=\"onBeforeEnter\"\n @after-enter=\"onAfterEnter\"\n @leave=\"onLeave\"\n @after-leave=\"onAfterLeave\"\n >\n <div\n v-show=\"modelValue\"\n :id=\"computedId\"\n ref=\"element\"\n class=\"modal\"\n :class=\"modalClasses\"\n role=\"dialog\"\n :aria-labelledby=\"!props.hideHeader ? `${computedId}-label` : undefined\"\n :aria-describedby=\"`${computedId}-body`\"\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n :style=\"computedZIndex\"\n >\n <div class=\"modal-dialog\" :class=\"modalDialogClasses\">\n <div v-if=\"lazyShowing\" class=\"modal-content\" :class=\"props.contentClass\">\n <div v-if=\"!props.hideHeader\" 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.hideHeaderClose\">\n <BButton\n v-if=\"hasHeaderCloseSlot\"\n v-bind=\"headerCloseAttrs\"\n @click=\"hideFn('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=\"hideFn('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.hideFooter\" 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=\"hideFn('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=\"hideFn('ok')\"\n >\n {{ props.okTitle }}\n </BButton>\n </slot>\n </slot>\n </div>\n </div>\n </div>\n <slot v-if=\"!props.hideBackdrop\" name=\"backdrop\" v-bind=\"sharedSlots\">\n <div class=\"modal-backdrop fade show\" @click=\"hideFn('backdrop')\" />\n </slot>\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 </ConditionalTeleport>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, useEventListener, useFocus} from '@vueuse/core'\nimport {useActivatedFocusTrap} from '../../composables/useActivatedFocusTrap'\nimport {computed, type CSSProperties, ref, 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 {useFadeTransition} from '../../composables/useTransitions'\nimport {useSafeScrollLock} from '../../composables/useSafeScrollLock'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport {useModalManager} from '../../composables/useModalManager'\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 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 hideBackdrop: false,\n hideFooter: false,\n hideHeader: false,\n hideHeaderClose: false,\n id: undefined,\n lazy: false,\n modalClass: undefined,\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 scrollable: false,\n size: 'md',\n teleportDisabled: false,\n teleportTo: 'body',\n title: undefined,\n titleClass: undefined,\n titleSrOnly: false,\n titleTag: 'h5',\n transProps: undefined,\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': []\n 'ok': [value: BvTriggerableEvent]\n 'show': [value: BvTriggerableEvent]\n 'show-prevented': []\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 = ref<HTMLElement | null>(null)\nconst fallbackFocusElement = ref<HTMLElement | null>(null)\nconst okButton = ref<HTMLElement | null>(null)\nconst cancelButton = ref<HTMLElement | null>(null)\nconst closeButton = ref<HTMLElement | null>(null)\nconst isActive = ref(false)\nconst lazyLoadCompleted = ref(false)\n\nconst fallbackClassSelector = 'modal-fallback-focus'\nconst {needsFallback} = useActivatedFocusTrap({\n element,\n isActive,\n noTrap: () => props.noTrap,\n fallbackFocus: {\n ref: fallbackFocusElement,\n classSelector: fallbackClassSelector,\n },\n})\n\nconst fadeTransitionProps = useFadeTransition(true)\n\nonKeyStroke(\n 'Escape',\n () => {\n hideFn('esc')\n },\n {target: element}\n)\nuseSafeScrollLock(modelValue, () => 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 modalClasses = computed(() => [\n props.modalClass,\n {\n fade: !props.noFade,\n show: isActive.value,\n },\n])\n\nconst lazyShowing = computed(\n () =>\n props.lazy === false ||\n (props.lazy === true && lazyLoadCompleted.value === true) ||\n (props.lazy === true && modelValue.value === 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 resolvedBodyBgClasses = useColorVariantClasses(() => ({\n bgVariant: props.bodyBgVariant,\n textVariant: props.bodyTextVariant,\n variant: props.bodyVariant,\n}))\n\nconst bodyClasses = computed(() => [props.bodyClass, resolvedBodyBgClasses.value])\n\nconst resolvedHeaderBgClasses = useColorVariantClasses(() => ({\n bgVariant: props.headerBgVariant,\n textVariant: props.headerTextVariant,\n variant: props.headerVariant,\n}))\n\nconst headerClasses = computed(() => [\n props.headerClass,\n resolvedHeaderBgClasses.value,\n {\n [`border-${props.headerBorderVariant}`]: props.headerBorderVariant !== null,\n },\n])\n\nconst headerCloseAttrs = computed(() => ({\n variant: hasHeaderCloseSlot.value ? props.headerCloseVariant : undefined,\n class: props.headerCloseClass,\n}))\n\nconst resolvedFooterBgClasses = useColorVariantClasses(() => ({\n bgVariant: props.footerBgVariant,\n textVariant: props.footerTextVariant,\n variant: props.footerVariant,\n}))\n\nconst footerClasses = computed(() => [\n props.footerClass,\n resolvedFooterBgClasses.value,\n {\n [`border-${props.footerBorderVariant}`]: props.footerBorderVariant !== null,\n },\n])\n\nconst titleClasses = computed(() => [\n props.titleClass,\n {\n ['visually-hidden']: props.titleSrOnly,\n },\n])\nconst disableCancel = computed(() => props.cancelDisabled || props.busy)\nconst disableOk = computed(() => props.okDisabled || props.busy)\n\nconst buildTriggerableEvent = (\n type: string,\n opts: Readonly<Partial<BvTriggerableEvent>> = {}\n): BvTriggerableEvent =>\n new BvTriggerableEvent(type, {\n cancelable: false,\n target: element.value || null,\n relatedTarget: null,\n trigger: null,\n ...opts,\n componentId: computedId.value,\n })\n\nwatch(modelValue, (newValue, oldValue) => {\n if (newValue === oldValue) return\n if (newValue === true) {\n showFn()\n } else {\n hideFn()\n }\n})\n\nconst hideFn = (trigger = '') => {\n if (\n (trigger === 'backdrop' && props.noCloseOnBackdrop) ||\n (trigger === 'esc' && props.noCloseOnEsc)\n ) {\n emit('hide-prevented')\n return\n }\n\n const event = buildTriggerableEvent('hide', {cancelable: trigger !== '', trigger})\n\n if (trigger === 'ok') {\n emit(trigger, event)\n }\n if (trigger === 'cancel') {\n emit(trigger, event)\n }\n if (trigger === 'close') {\n emit(trigger, event)\n }\n if (trigger === 'backdrop') {\n emit(trigger, event)\n }\n if (trigger === 'esc') {\n emit(trigger, event)\n }\n emit('hide', event)\n\n if (event.defaultPrevented) {\n emit('hide-prevented')\n if (!modelValue.value) modelValue.value = true\n return\n }\n if (modelValue.value) modelValue.value = false\n}\n\n// TODO: If a show is prevented, it will briefly show the animation. This is a bug\n// I'm not sure how to wait for the event to be determined. Before showing\nconst showFn = () => {\n if (isActive.value) return\n\n const event = buildTriggerableEvent('show', {cancelable: true})\n emit('show', event)\n if (event.defaultPrevented) {\n if (modelValue.value) modelValue.value = false\n emit('show-prevented')\n return\n }\n if (!modelValue.value) modelValue.value = true\n}\n\nconst pickFocusItem = () => {\n if (props.autofocus === false) return\n props.autofocusButton === 'ok'\n ? (okButtonFocus.value = true)\n : props.autofocusButton === 'close'\n ? (closeButtonFocus.value = true)\n : props.autofocusButton === 'cancel'\n ? (cancelButtonFocus.value = true)\n : (modalFocus.value = true)\n}\n\nconst onBeforeEnter = () => {\n showFn()\n}\nconst onAfterEnter = () => {\n isActive.value = true\n pickFocusItem()\n emit('shown', buildTriggerableEvent('shown'))\n if (props.lazy === true) lazyLoadCompleted.value = true\n}\nconst isLeaving = ref(false)\nconst onLeave = () => {\n isActive.value = false\n isLeaving.value = true\n}\nconst onAfterLeave = () => {\n emit('hidden', buildTriggerableEvent('hidden'))\n if (props.lazy === true) lazyLoadCompleted.value = false\n isLeaving.value = false\n}\n\nconst {activePosition, activeModalCount, stackWithoutSelf} = useModalManager(\n isActive,\n modelValue.value\n)\n\nwatch(stackWithoutSelf, (newValue, oldValue) => {\n if (newValue.length > oldValue.length && isActive.value === true && props.noStacking === true)\n hideFn()\n})\n\nconst defaultModalDialogZIndex = 1056\nconst computedZIndex = computed<CSSProperties>(() => ({\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 'z-index':\n isActive.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 - ((activeModalCount?.value ?? 0) - (activePosition?.value ?? 0))\n : defaultModalDialogZIndex,\n}))\n\nuseEventListener(element, 'bv-toggle', () => {\n modelValue.value ? hideFn() : showFn()\n})\n\nconst sharedSlots = computed<SharedSlotsData>(() => ({\n cancel: () => {\n hideFn('cancel')\n },\n close: () => {\n hideFn('close')\n },\n hide: hideFn,\n ok: () => {\n hideFn('ok')\n },\n active: isActive.value,\n visible: modelValue.value,\n}))\n\ndefineExpose({\n hide: hideFn,\n id: computedId,\n show: showFn,\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","import {computed, type MaybeRefOrGetter, toValue} from 'vue'\n\nexport const useFadeTransition = (noFade: MaybeRefOrGetter<boolean>) =>\n computed(() => {\n const NO_FADE_PROPS = {\n name: '',\n enterActiveClass: '',\n enterToClass: '',\n leaveActiveClass: '',\n leaveToClass: 'showing',\n enterFromClass: 'showing',\n leaveFromClass: '',\n css: true,\n }\n const FADE_PROPS = {\n ...NO_FADE_PROPS,\n name: 'fade',\n enterActiveClass: 'fade showing',\n leaveActiveClass: 'fade showing',\n }\n return toValue(noFade) ? NO_FADE_PROPS : FADE_PROPS\n })\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 :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","ref","fallbackFocusElement","okButton","cancelButton","closeButton","isActive","lazyLoadCompleted","needsFallback","useActivatedFocusTrap","noTrap","fallbackFocus","classSelector","fadeTransitionProps","noFade","computed","NO_FADE_PROPS","name","enterActiveClass","enterToClass","leaveActiveClass","leaveToClass","enterFromClass","leaveFromClass","css","FADE_PROPS","toValue","index","onKeyStroke","hideFn","target","useSafeScrollLock","bodyScrolling","focused","modalFocus","useFocus","initialValue","value","autofocusButton","autofocus","okButtonFocus","cancelButtonFocus","closeButtonFocus","modalClasses","modalClass","fade","show","lazyShowing","lazy","hasHeaderCloseSlot","isEmptySlot","modalDialogClasses","dialogClass","fullscreen","size","centered","scrollable","resolvedBodyBgClasses","useColorVariantClasses","bgVariant","bodyBgVariant","textVariant","bodyTextVariant","variant","bodyVariant","bodyClasses","bodyClass","resolvedHeaderBgClasses","headerBgVariant","headerTextVariant","headerVariant","headerClasses","headerClass","headerBorderVariant","headerCloseAttrs","headerCloseVariant","class","headerCloseClass","resolvedFooterBgClasses","footerBgVariant","footerTextVariant","footerVariant","footerClasses","footerClass","footerBorderVariant","titleClasses","titleClass","titleSrOnly","disableCancel","cancelDisabled","busy","disableOk","okDisabled","buildTriggerableEvent","type","opts","BvTriggerableEvent","cancelable","relatedTarget","trigger","componentId","watch","newValue","oldValue","noCloseOnBackdrop","noCloseOnEsc","event","defaultPrevented","showFn","onBeforeEnter","onAfterEnter","isLeaving","onLeave","onAfterLeave","activePosition","activeModalCount","stackWithoutSelf","useModalManager","length","noStacking","computedZIndex","sharedSlots","cancel","close","hide","ok","active","visible","__expose","tools","useModalController"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, mergeModels, useSlots, useModel, computed, ref, watch, openBlock, createBlock, unref, withCtx, createVNode, Transition, mergeProps, withDirectives, createElementVNode, createElementBlock, Fragment, normalizeClass, renderSlot, normalizeProps, guardReactiveProps, createTextVNode, toDisplayString, createCommentVNode, vShow, nextTick } from "vue";
|
|
2
2
|
import { f as useBreakpoints, o as onKeyStroke, e as useFocus, c as useEventListener, g as breakpointsBootstrapV5 } from "./index-DngH9Pjm.mjs";
|
|
3
|
-
import { u as useSafeScrollLock, a as useActivatedFocusTrap } from "./useSafeScrollLock-
|
|
3
|
+
import { u as useSafeScrollLock, a as useActivatedFocusTrap } from "./useSafeScrollLock-BAPMIjjV.mjs";
|
|
4
4
|
import { u as useDefaults } from "./useDefaults-BuoSLvNO.mjs";
|
|
5
5
|
import { u as useId } from "./useId-SLUTyEVA.mjs";
|
|
6
6
|
import { a as BvTriggerableEvent } from "./classes-IC0yVJlq.mjs";
|
|
@@ -297,4 +297,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
297
297
|
export {
|
|
298
298
|
_sfc_main as _
|
|
299
299
|
};
|
|
300
|
-
//# sourceMappingURL=BOffcanvas.vue_vue_type_script_setup_true_lang-
|
|
300
|
+
//# sourceMappingURL=BOffcanvas.vue_vue_type_script_setup_true_lang-Do2qnW3l.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BOffcanvas.vue_vue_type_script_setup_true_lang-CSVryvpT.mjs","sources":["../src/components/BOffcanvas/BOffcanvas.vue"],"sourcesContent":["<template>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"props.teleportDisabled || isOpenByBreakpoint\"\n >\n <Transition\n v-bind=\"transitionProps\"\n @before-enter=\"OnBeforeEnter\"\n @after-enter=\"OnAfterEnter\"\n @leave=\"onLeave\"\n @after-leave=\"OnAfterLeave\"\n >\n <div\n v-show=\"modelValue || isOpenByBreakpoint\"\n :id=\"computedId\"\n ref=\"element\"\n aria-modal=\"true\"\n role=\"dialog\"\n :class=\"computedClasses\"\n :style=\"computedStyles\"\n tabindex=\"-1\"\n :aria-labelledby=\"`${computedId}-offcanvas-label`\"\n data-bs-backdrop=\"false\"\n v-bind=\"$attrs\"\n >\n <template v-if=\"lazyShowing\">\n <div v-if=\"!props.noHeader\" class=\"offcanvas-header\" :class=\"props.headerClass\">\n <slot name=\"header\" v-bind=\"sharedSlots\">\n <h5 :id=\"`${computedId}-offcanvas-label`\" class=\"offcanvas-title\">\n <slot name=\"title\" v-bind=\"sharedSlots\">\n {{ props.title }}\n </slot>\n </h5>\n <template v-if=\"!props.noHeaderClose\">\n <BButton v-if=\"hasHeaderCloseSlot\" v-bind=\"headerCloseAttrs\" @click=\"hide('close')\">\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 class=\"offcanvas-body\" :class=\"props.bodyClass\" v-bind=\"props.bodyAttrs\">\n <slot v-bind=\"sharedSlots\" />\n </div>\n <div v-if=\"hasFooterSlot\" :class=\"props.footerClass\">\n <slot name=\"footer\" v-bind=\"sharedSlots\" />\n </div>\n </template>\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=\"showBackdrop\" name=\"backdrop\">\n <div class=\"offcanvas-backdrop fade show\" @click=\"hide('backdrop')\" />\n </slot>\n </ConditionalTeleport>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n breakpointsBootstrapV5,\n onKeyStroke,\n useBreakpoints,\n useEventListener,\n useFocus,\n} from '@vueuse/core'\nimport {useActivatedFocusTrap} from '../../composables/useActivatedFocusTrap'\nimport {computed, nextTick, ref, watch} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BOffcanvasProps} from '../../types/ComponentProps'\nimport {BvTriggerableEvent} from '../../utils'\nimport BButton from '../BButton/BButton.vue'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {useSafeScrollLock} from '../../composables/useSafeScrollLock'\nimport {isEmptySlot} from '../../utils/dom'\nimport type {Placement} from '../../types/Alignment'\n\n// TODO once the responsive stuff may be implemented correctly,\n// What needs to occur is a fixing of the \"body scrolling\".\n// If the offcanvas is on the screen on a large screen, body scrolling is not disabled\n// Even though the modelValue is true\n// When it's a small screen and close, it works, as normal,\n// But then when it opens up on a small screen, it must disable again\n// This is implemented on Layout.vue, but is not officially supported.\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<Omit<BOffcanvasProps, 'modelValue'>>(), {\n hideBackdrop: false,\n bodyAttrs: undefined,\n bodyClass: undefined,\n bodyScrolling: false,\n footerClass: undefined,\n headerClass: undefined,\n headerCloseClass: undefined,\n headerCloseLabel: 'Close',\n headerCloseVariant: 'secondary',\n id: undefined,\n lazy: false,\n noCloseOnBackdrop: false,\n noCloseOnEsc: false,\n noTrap: false,\n noFocus: false,\n noHeader: false,\n noHeaderClose: false,\n placement: 'start',\n shadow: false,\n teleportDisabled: false,\n teleportTo: 'body',\n title: undefined,\n width: undefined,\n})\nconst props = useDefaults(_props, 'BOffcanvas')\n\nconst emit = defineEmits<{\n 'close': [value: BvTriggerableEvent]\n 'esc': [value: BvTriggerableEvent]\n 'hidden': [value: BvTriggerableEvent]\n 'hide': [value: BvTriggerableEvent]\n 'hide-prevented': []\n 'show': [value: BvTriggerableEvent]\n 'show-prevented': []\n 'shown': [value: BvTriggerableEvent]\n}>()\n\ntype SharedSlotsData = {\n visible: boolean\n placement: Placement\n hide: (trigger?: string) => void\n}\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'backdrop'?: (props: Record<string, never>) => 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 'title'?: (props: SharedSlotsData) => any\n}>()\n\nconst modelValue = defineModel<Exclude<BOffcanvasProps['modelValue'], undefined>>({\n default: false,\n})\n\nconst computedId = useId(() => props.id, 'offcanvas')\n\nconst breakpoints = useBreakpoints(breakpointsBootstrapV5)\nconst greaterOrEqualToBreakpoint = breakpoints.greaterOrEqual(() => props.responsive ?? 'xs')\nconst smallerOrEqualToBreakpoint = breakpoints.smallerOrEqual(() => props.responsive ?? 'xs')\n\nconst isOpenByBreakpoint = computed(\n () => props.responsive !== undefined && greaterOrEqualToBreakpoint.value\n)\nuseSafeScrollLock(modelValue, () => props.bodyScrolling || isOpenByBreakpoint.value)\n\nconst element = ref<HTMLElement | null>(null)\nconst fallbackFocusElement = ref<HTMLElement | null>(null)\n\nonKeyStroke(\n 'Escape',\n () => {\n hide('esc')\n },\n {target: element}\n)\n\nconst {focused} = useFocus(element, {\n initialValue: modelValue.value && props.noFocus === false,\n})\n\nconst isActive = ref(modelValue.value)\n\nconst fallbackClassSelector = 'offcanvas-fallback-focus'\nconst {needsFallback} = useActivatedFocusTrap({\n element,\n isActive,\n noTrap: () => props.noTrap || isOpenByBreakpoint.value,\n fallbackFocus: {\n classSelector: fallbackClassSelector,\n ref: fallbackFocusElement,\n },\n})\n\nconst lazyLoadCompleted = ref(false)\nconst wasClosedByBreakpointChange = ref(false)\n\nconst showBackdrop = computed(\n () =>\n (props.responsive === undefined || !isOpenByBreakpoint.value) &&\n props.hideBackdrop === false &&\n modelValue.value === true\n)\n\nconst lazyShowing = computed(\n () =>\n props.lazy === false ||\n (props.lazy === true && lazyLoadCompleted.value === true) ||\n (props.lazy === true && modelValue.value === true)\n)\n\nconst hasHeaderCloseSlot = computed(() => !isEmptySlot(slots['header-close']))\nconst headerCloseClasses = computed(() => [\n {'text-reset': !hasHeaderCloseSlot.value},\n props.headerCloseClass,\n])\nconst headerCloseAttrs = computed(() => ({\n variant: hasHeaderCloseSlot.value ? props.headerCloseVariant : undefined,\n class: headerCloseClasses.value,\n}))\nconst transitionProps = computed(() =>\n wasClosedByBreakpointChange.value === true\n ? null\n : {\n enterToClass: 'showing',\n enterFromClass: '',\n leaveToClass: 'hiding show',\n leaveFromClass: 'show',\n }\n)\n\nconst hasFooterSlot = computed(() => !isEmptySlot(slots.footer))\nconst computedClasses = computed(() => [\n props.responsive === undefined ? 'offcanvas' : `offcanvas-${props.responsive}`,\n `offcanvas-${props.placement}`,\n {\n show: modelValue.value && isActive.value === true,\n [`shadow-${props.shadow}`]: !!props.shadow,\n },\n])\n\nconst computedStyles = computed(() => ({\n width: props.width,\n}))\n\nconst sharedSlots = computed<SharedSlotsData>(() => ({\n visible: modelValue.value,\n placement: props.placement,\n hide,\n}))\n\nconst buildTriggerableEvent = (\n type: string,\n opts: Partial<BvTriggerableEvent> = {}\n): BvTriggerableEvent =>\n new BvTriggerableEvent(type, {\n cancelable: false,\n target: element.value || null,\n relatedTarget: null,\n trigger: null,\n ...opts,\n componentId: computedId.value,\n })\n\nconst hide = (trigger = '') => {\n if (\n (trigger === 'backdrop' && props.noCloseOnBackdrop) ||\n (trigger === 'esc' && props.noCloseOnEsc)\n ) {\n emit('hide-prevented')\n return\n }\n\n const event = buildTriggerableEvent('hide', {cancelable: trigger !== '', trigger})\n\n if (trigger === 'close') {\n emit(trigger, event)\n }\n if (trigger === 'esc') {\n emit(trigger, event)\n }\n emit('hide', event)\n\n if (event.defaultPrevented) {\n emit('hide-prevented')\n return\n }\n\n modelValue.value = false\n}\n\nconst show = () => {\n const event = buildTriggerableEvent('show', {cancelable: true})\n emit('show', event)\n if (event.defaultPrevented) {\n modelValue.value = false\n emit('show-prevented')\n return\n }\n modelValue.value = true\n}\n\nconst focus = () => {\n nextTick(() => {\n if (props.noFocus === false) {\n focused.value = true\n }\n })\n}\n\nconst OnBeforeEnter = () => show()\nconst OnAfterEnter = () => {\n isActive.value = true\n focus()\n emit('shown', buildTriggerableEvent('shown'))\n if (props.lazy === true) lazyLoadCompleted.value = true\n}\nconst onLeave = () => {\n wasClosedByBreakpointChange.value = false\n isActive.value = false\n}\nconst OnAfterLeave = () => {\n emit('hidden', buildTriggerableEvent('hidden'))\n if (props.lazy === true) lazyLoadCompleted.value = false\n}\nuseEventListener(element, 'bv-toggle', () => {\n modelValue.value ? hide() : show()\n})\n\nwatch(greaterOrEqualToBreakpoint, (newValue) => {\n if (props.responsive === undefined) return\n modelValue.value = newValue\n})\nwatch(smallerOrEqualToBreakpoint, (newValue) => {\n if (props.responsive === undefined && newValue === true) return\n wasClosedByBreakpointChange.value = true\n})\n\ndefineExpose({\n hide,\n show,\n})\n</script>\n"],"names":["_useSlots","_useModel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BOffcanvas.vue_vue_type_script_setup_true_lang-Do2qnW3l.mjs","sources":["../src/components/BOffcanvas/BOffcanvas.vue"],"sourcesContent":["<template>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"props.teleportDisabled || isOpenByBreakpoint\"\n >\n <Transition\n v-bind=\"transitionProps\"\n @before-enter=\"OnBeforeEnter\"\n @after-enter=\"OnAfterEnter\"\n @leave=\"onLeave\"\n @after-leave=\"OnAfterLeave\"\n >\n <div\n v-show=\"modelValue || isOpenByBreakpoint\"\n :id=\"computedId\"\n ref=\"element\"\n aria-modal=\"true\"\n role=\"dialog\"\n :class=\"computedClasses\"\n :style=\"computedStyles\"\n tabindex=\"-1\"\n :aria-labelledby=\"`${computedId}-offcanvas-label`\"\n data-bs-backdrop=\"false\"\n v-bind=\"$attrs\"\n >\n <template v-if=\"lazyShowing\">\n <div v-if=\"!props.noHeader\" class=\"offcanvas-header\" :class=\"props.headerClass\">\n <slot name=\"header\" v-bind=\"sharedSlots\">\n <h5 :id=\"`${computedId}-offcanvas-label`\" class=\"offcanvas-title\">\n <slot name=\"title\" v-bind=\"sharedSlots\">\n {{ props.title }}\n </slot>\n </h5>\n <template v-if=\"!props.noHeaderClose\">\n <BButton v-if=\"hasHeaderCloseSlot\" v-bind=\"headerCloseAttrs\" @click=\"hide('close')\">\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 class=\"offcanvas-body\" :class=\"props.bodyClass\" v-bind=\"props.bodyAttrs\">\n <slot v-bind=\"sharedSlots\" />\n </div>\n <div v-if=\"hasFooterSlot\" :class=\"props.footerClass\">\n <slot name=\"footer\" v-bind=\"sharedSlots\" />\n </div>\n </template>\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=\"showBackdrop\" name=\"backdrop\">\n <div class=\"offcanvas-backdrop fade show\" @click=\"hide('backdrop')\" />\n </slot>\n </ConditionalTeleport>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n breakpointsBootstrapV5,\n onKeyStroke,\n useBreakpoints,\n useEventListener,\n useFocus,\n} from '@vueuse/core'\nimport {useActivatedFocusTrap} from '../../composables/useActivatedFocusTrap'\nimport {computed, nextTick, ref, watch} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BOffcanvasProps} from '../../types/ComponentProps'\nimport {BvTriggerableEvent} from '../../utils'\nimport BButton from '../BButton/BButton.vue'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {useSafeScrollLock} from '../../composables/useSafeScrollLock'\nimport {isEmptySlot} from '../../utils/dom'\nimport type {Placement} from '../../types/Alignment'\n\n// TODO once the responsive stuff may be implemented correctly,\n// What needs to occur is a fixing of the \"body scrolling\".\n// If the offcanvas is on the screen on a large screen, body scrolling is not disabled\n// Even though the modelValue is true\n// When it's a small screen and close, it works, as normal,\n// But then when it opens up on a small screen, it must disable again\n// This is implemented on Layout.vue, but is not officially supported.\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<Omit<BOffcanvasProps, 'modelValue'>>(), {\n hideBackdrop: false,\n bodyAttrs: undefined,\n bodyClass: undefined,\n bodyScrolling: false,\n footerClass: undefined,\n headerClass: undefined,\n headerCloseClass: undefined,\n headerCloseLabel: 'Close',\n headerCloseVariant: 'secondary',\n id: undefined,\n lazy: false,\n noCloseOnBackdrop: false,\n noCloseOnEsc: false,\n noTrap: false,\n noFocus: false,\n noHeader: false,\n noHeaderClose: false,\n placement: 'start',\n shadow: false,\n teleportDisabled: false,\n teleportTo: 'body',\n title: undefined,\n width: undefined,\n})\nconst props = useDefaults(_props, 'BOffcanvas')\n\nconst emit = defineEmits<{\n 'close': [value: BvTriggerableEvent]\n 'esc': [value: BvTriggerableEvent]\n 'hidden': [value: BvTriggerableEvent]\n 'hide': [value: BvTriggerableEvent]\n 'hide-prevented': []\n 'show': [value: BvTriggerableEvent]\n 'show-prevented': []\n 'shown': [value: BvTriggerableEvent]\n}>()\n\ntype SharedSlotsData = {\n visible: boolean\n placement: Placement\n hide: (trigger?: string) => void\n}\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'backdrop'?: (props: Record<string, never>) => 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 'title'?: (props: SharedSlotsData) => any\n}>()\n\nconst modelValue = defineModel<Exclude<BOffcanvasProps['modelValue'], undefined>>({\n default: false,\n})\n\nconst computedId = useId(() => props.id, 'offcanvas')\n\nconst breakpoints = useBreakpoints(breakpointsBootstrapV5)\nconst greaterOrEqualToBreakpoint = breakpoints.greaterOrEqual(() => props.responsive ?? 'xs')\nconst smallerOrEqualToBreakpoint = breakpoints.smallerOrEqual(() => props.responsive ?? 'xs')\n\nconst isOpenByBreakpoint = computed(\n () => props.responsive !== undefined && greaterOrEqualToBreakpoint.value\n)\nuseSafeScrollLock(modelValue, () => props.bodyScrolling || isOpenByBreakpoint.value)\n\nconst element = ref<HTMLElement | null>(null)\nconst fallbackFocusElement = ref<HTMLElement | null>(null)\n\nonKeyStroke(\n 'Escape',\n () => {\n hide('esc')\n },\n {target: element}\n)\n\nconst {focused} = useFocus(element, {\n initialValue: modelValue.value && props.noFocus === false,\n})\n\nconst isActive = ref(modelValue.value)\n\nconst fallbackClassSelector = 'offcanvas-fallback-focus'\nconst {needsFallback} = useActivatedFocusTrap({\n element,\n isActive,\n noTrap: () => props.noTrap || isOpenByBreakpoint.value,\n fallbackFocus: {\n classSelector: fallbackClassSelector,\n ref: fallbackFocusElement,\n },\n})\n\nconst lazyLoadCompleted = ref(false)\nconst wasClosedByBreakpointChange = ref(false)\n\nconst showBackdrop = computed(\n () =>\n (props.responsive === undefined || !isOpenByBreakpoint.value) &&\n props.hideBackdrop === false &&\n modelValue.value === true\n)\n\nconst lazyShowing = computed(\n () =>\n props.lazy === false ||\n (props.lazy === true && lazyLoadCompleted.value === true) ||\n (props.lazy === true && modelValue.value === true)\n)\n\nconst hasHeaderCloseSlot = computed(() => !isEmptySlot(slots['header-close']))\nconst headerCloseClasses = computed(() => [\n {'text-reset': !hasHeaderCloseSlot.value},\n props.headerCloseClass,\n])\nconst headerCloseAttrs = computed(() => ({\n variant: hasHeaderCloseSlot.value ? props.headerCloseVariant : undefined,\n class: headerCloseClasses.value,\n}))\nconst transitionProps = computed(() =>\n wasClosedByBreakpointChange.value === true\n ? null\n : {\n enterToClass: 'showing',\n enterFromClass: '',\n leaveToClass: 'hiding show',\n leaveFromClass: 'show',\n }\n)\n\nconst hasFooterSlot = computed(() => !isEmptySlot(slots.footer))\nconst computedClasses = computed(() => [\n props.responsive === undefined ? 'offcanvas' : `offcanvas-${props.responsive}`,\n `offcanvas-${props.placement}`,\n {\n show: modelValue.value && isActive.value === true,\n [`shadow-${props.shadow}`]: !!props.shadow,\n },\n])\n\nconst computedStyles = computed(() => ({\n width: props.width,\n}))\n\nconst sharedSlots = computed<SharedSlotsData>(() => ({\n visible: modelValue.value,\n placement: props.placement,\n hide,\n}))\n\nconst buildTriggerableEvent = (\n type: string,\n opts: Partial<BvTriggerableEvent> = {}\n): BvTriggerableEvent =>\n new BvTriggerableEvent(type, {\n cancelable: false,\n target: element.value || null,\n relatedTarget: null,\n trigger: null,\n ...opts,\n componentId: computedId.value,\n })\n\nconst hide = (trigger = '') => {\n if (\n (trigger === 'backdrop' && props.noCloseOnBackdrop) ||\n (trigger === 'esc' && props.noCloseOnEsc)\n ) {\n emit('hide-prevented')\n return\n }\n\n const event = buildTriggerableEvent('hide', {cancelable: trigger !== '', trigger})\n\n if (trigger === 'close') {\n emit(trigger, event)\n }\n if (trigger === 'esc') {\n emit(trigger, event)\n }\n emit('hide', event)\n\n if (event.defaultPrevented) {\n emit('hide-prevented')\n return\n }\n\n modelValue.value = false\n}\n\nconst show = () => {\n const event = buildTriggerableEvent('show', {cancelable: true})\n emit('show', event)\n if (event.defaultPrevented) {\n modelValue.value = false\n emit('show-prevented')\n return\n }\n modelValue.value = true\n}\n\nconst focus = () => {\n nextTick(() => {\n if (props.noFocus === false) {\n focused.value = true\n }\n })\n}\n\nconst OnBeforeEnter = () => show()\nconst OnAfterEnter = () => {\n isActive.value = true\n focus()\n emit('shown', buildTriggerableEvent('shown'))\n if (props.lazy === true) lazyLoadCompleted.value = true\n}\nconst onLeave = () => {\n wasClosedByBreakpointChange.value = false\n isActive.value = false\n}\nconst OnAfterLeave = () => {\n emit('hidden', buildTriggerableEvent('hidden'))\n if (props.lazy === true) lazyLoadCompleted.value = false\n}\nuseEventListener(element, 'bv-toggle', () => {\n modelValue.value ? hide() : show()\n})\n\nwatch(greaterOrEqualToBreakpoint, (newValue) => {\n if (props.responsive === undefined) return\n modelValue.value = newValue\n})\nwatch(smallerOrEqualToBreakpoint, (newValue) => {\n if (props.responsive === undefined && newValue === true) return\n wasClosedByBreakpointChange.value = true\n})\n\ndefineExpose({\n hide,\n show,\n})\n</script>\n"],"names":["_useSlots","_useModel"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("vue"),a=require("./index-CnY1um_J.js"),o=require("./useSafeScrollLock-
|
|
2
|
-
//# sourceMappingURL=BOffcanvas.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
"use strict";const e=require("vue"),a=require("./index-CnY1um_J.js"),o=require("./useSafeScrollLock-DoX-OOqc.js"),l=require("./useDefaults-C2groUjC.js"),t=require("./useId-D-t4Y3Sk.js"),s=require("./classes-CXBJXuVd.js"),r=require("./BButton.vue_vue_type_script_setup_true_lang-DFcCJWaf.js"),n=require("./BCloseButton.vue_vue_type_script_setup_true_lang-CRwsufrO.js"),d=require("./ConditionalTeleport.vue_vue_type_script_lang-nP1ZUfLS.js"),u=require("./dom-C-F8jHop.js"),c=["id","aria-labelledby"],i=["id"],v="offcanvas-fallback-focus",f=e.defineComponent({inheritAttrs:!1,__name:"BOffcanvas",props:e.mergeModels({hideBackdrop:{type:Boolean,default:!1},bodyAttrs:{default:void 0},bodyClass:{default:void 0},bodyScrolling:{type:Boolean,default:!1},footerClass:{default:void 0},headerClass:{default:void 0},headerCloseClass:{default:void 0},headerCloseLabel:{default:"Close"},headerCloseVariant:{default:"secondary"},id:{default:void 0},lazy:{type:Boolean,default:!1},noCloseOnBackdrop:{type:Boolean,default:!1},noCloseOnEsc:{type:Boolean,default:!1},noFocus:{type:Boolean,default:!1},noHeader:{type:Boolean,default:!1},noTrap:{type:Boolean,default:!1},noHeaderClose:{type:Boolean,default:!1},placement:{default:"start"},shadow:{type:[String,Boolean],default:!1},title:{default:void 0},responsive:{},width:{default:void 0},teleportDisabled:{type:Boolean,default:!1},teleportTo:{default:"body"}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:e.mergeModels(["close","esc","hidden","hide","hide-prevented","show","show-prevented","shown"],["update:modelValue"]),setup(f,{expose:p,emit:m}){const h=f,k=l.useDefaults(h,"BOffcanvas"),y=m,C=e.useSlots(),B=e.useModel(f,"modelValue"),b=t.useId((()=>k.id),"offcanvas"),g=a.useBreakpoints(a.breakpointsBootstrapV5),w=g.greaterOrEqual((()=>k.responsive??"xs")),_=g.smallerOrEqual((()=>k.responsive??"xs")),E=e.computed((()=>void 0!==k.responsive&&w.value));o.useSafeScrollLock(B,(()=>k.bodyScrolling||E.value));const S=e.ref(null),V=e.ref(null);a.onKeyStroke("Escape",(()=>{I("esc")}),{target:S});const{focused:P}=a.useFocus(S,{initialValue:B.value&&!1===k.noFocus}),T=e.ref(B.value),{needsFallback:x}=o.useActivatedFocusTrap({element:S,isActive:T,noTrap:()=>k.noTrap||E.value,fallbackFocus:{classSelector:v,ref:V}}),z=e.ref(!1),q=e.ref(!1),F=e.computed((()=>(void 0===k.responsive||!E.value)&&!1===k.hideBackdrop&&!0===B.value)),N=e.computed((()=>!1===k.lazy||!0===k.lazy&&!0===z.value||!0===k.lazy&&!0===B.value)),$=e.computed((()=>!u.isEmptySlot(C["header-close"]))),j=e.computed((()=>[{"text-reset":!$.value},k.headerCloseClass])),O=e.computed((()=>({variant:$.value?k.headerCloseVariant:void 0,class:j.value}))),A=e.computed((()=>!0===q.value?null:{enterToClass:"showing",enterFromClass:"",leaveToClass:"hiding show",leaveFromClass:"show"})),L=e.computed((()=>!u.isEmptySlot(C.footer))),D=e.computed((()=>[void 0===k.responsive?"offcanvas":`offcanvas-${k.responsive}`,`offcanvas-${k.placement}`,{show:B.value&&!0===T.value,[`shadow-${k.shadow}`]:!!k.shadow}])),H=e.computed((()=>({width:k.width}))),M=e.computed((()=>({visible:B.value,placement:k.placement,hide:I}))),R=(e,a={})=>new s.BvTriggerableEvent(e,{cancelable:!1,target:S.value||null,relatedTarget:null,trigger:null,...a,componentId:b.value}),I=(e="")=>{if("backdrop"===e&&k.noCloseOnBackdrop||"esc"===e&&k.noCloseOnEsc)return void y("hide-prevented");const a=R("hide",{cancelable:""!==e,trigger:e});"close"===e&&y(e,a),"esc"===e&&y(e,a),y("hide",a),a.defaultPrevented?y("hide-prevented"):B.value=!1},K=()=>{const e=R("show",{cancelable:!0});if(y("show",e),e.defaultPrevented)return B.value=!1,void y("show-prevented");B.value=!0},X=()=>K(),G=()=>{T.value=!0,e.nextTick((()=>{!1===k.noFocus&&(P.value=!0)})),y("shown",R("shown")),!0===k.lazy&&(z.value=!0)},J=()=>{q.value=!1,T.value=!1},Q=()=>{y("hidden",R("hidden")),!0===k.lazy&&(z.value=!1)};return a.useEventListener(S,"bv-toggle",(()=>{B.value?I():K()})),e.watch(w,(e=>{void 0!==k.responsive&&(B.value=e)})),e.watch(_,(e=>{void 0===k.responsive&&!0===e||(q.value=!0)})),p({hide:I,show:K}),(a,o)=>(e.openBlock(),e.createBlock(d._sfc_main,{to:e.unref(k).teleportTo,disabled:e.unref(k).teleportDisabled||E.value},{default:e.withCtx((()=>[e.createVNode(e.Transition,e.mergeProps(A.value,{onBeforeEnter:X,onAfterEnter:G,onLeave:J,onAfterLeave:Q}),{default:e.withCtx((()=>[e.withDirectives(e.createElementVNode("div",e.mergeProps({id:e.unref(b),ref_key:"element",ref:S,"aria-modal":"true",role:"dialog",class:D.value,style:H.value,tabindex:"-1","aria-labelledby":`${e.unref(b)}-offcanvas-label`,"data-bs-backdrop":"false"},a.$attrs),[N.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.unref(k).noHeader?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["offcanvas-header",e.unref(k).headerClass])},[e.renderSlot(a.$slots,"header",e.normalizeProps(e.guardReactiveProps(M.value)),(()=>[e.createElementVNode("h5",{id:`${e.unref(b)}-offcanvas-label`,class:"offcanvas-title"},[e.renderSlot(a.$slots,"title",e.normalizeProps(e.guardReactiveProps(M.value)),(()=>[e.createTextVNode(e.toDisplayString(e.unref(k).title),1)]))],8,i),e.unref(k).noHeaderClose?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[$.value?(e.openBlock(),e.createBlock(r._sfc_main,e.mergeProps({key:0},O.value,{onClick:o[0]||(o[0]=e=>I("close"))}),{default:e.withCtx((()=>[e.renderSlot(a.$slots,"header-close")])),_:3},16)):(e.openBlock(),e.createBlock(n._sfc_main,e.mergeProps({key:1,"aria-label":e.unref(k).headerCloseLabel},O.value,{onClick:o[1]||(o[1]=e=>I("close"))}),null,16,["aria-label"]))],64))]))],2)),e.createElementVNode("div",e.mergeProps({class:["offcanvas-body",e.unref(k).bodyClass]},e.unref(k).bodyAttrs),[e.renderSlot(a.$slots,"default",e.normalizeProps(e.guardReactiveProps(M.value)))],16),L.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(k).footerClass)},[e.renderSlot(a.$slots,"footer",e.normalizeProps(e.guardReactiveProps(M.value)))],2)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),e.unref(x)?(e.openBlock(),e.createElementBlock("div",{key:1,ref_key:"fallbackFocusElement",ref:V,class:e.normalizeClass(v),tabindex:"0",style:{width:"0",height:"0",overflow:"hidden"}},null,512)):e.createCommentVNode("",!0)],16,c),[[e.vShow,B.value||E.value]])])),_:3},16),F.value?e.renderSlot(a.$slots,"backdrop",{key:0},(()=>[e.createElementVNode("div",{class:"offcanvas-backdrop fade show",onClick:o[2]||(o[2]=e=>I("backdrop"))})])):e.createCommentVNode("",!0)])),_:3},8,["to","disabled"]))}});exports._sfc_main=f;
|
|
2
|
+
//# sourceMappingURL=BOffcanvas.vue_vue_type_script_setup_true_lang-ky_Y5xZi.js.map
|