bootstrap-vue-next 0.44.1 → 0.44.2
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/{BDropdown-BQjX2G8g.js → BDropdown-C2L69dLN.js} +3 -3
- package/dist/BDropdown-C2L69dLN.js.map +1 -0
- package/dist/{BDropdown-t41Sj0X6.mjs → BDropdown-CKnx6hUH.mjs} +3 -3
- package/dist/BDropdown-CKnx6hUH.mjs.map +1 -0
- package/dist/{BDropdown-BOO7j78Q.js → BDropdown-CrgX7oCn.js} +2 -2
- package/dist/{BDropdown-BOO7j78Q.js.map → BDropdown-CrgX7oCn.js.map} +1 -1
- package/dist/{BDropdown-CmwJjOsO.mjs → BDropdown-k-nulez8.mjs} +2 -2
- package/dist/{BDropdown-CmwJjOsO.mjs.map → BDropdown-k-nulez8.mjs.map} +1 -1
- package/dist/{BModal-CJ2pBX28.mjs → BModal-TCXrZEZk.mjs} +2 -2
- package/dist/{BModal-CJ2pBX28.mjs.map → BModal-TCXrZEZk.mjs.map} +1 -1
- package/dist/{BModal-DLgzN4S6.js → BModal-d3FKaKhA.js} +2 -2
- package/dist/{BModal-DLgzN4S6.js.map → BModal-d3FKaKhA.js.map} +1 -1
- package/dist/{BNav-DvZQlXux.mjs → BNav-BBr8213N.mjs} +2 -2
- package/dist/{BNav-DvZQlXux.mjs.map → BNav-BBr8213N.mjs.map} +1 -1
- package/dist/{BNav-y9d8xWOd.js → BNav-BMAZcVDS.js} +2 -2
- package/dist/{BNav-y9d8xWOd.js.map → BNav-BMAZcVDS.js.map} +1 -1
- package/dist/{BOffcanvas-DI_fy_Yr.mjs → BOffcanvas-BklEA-4x.mjs} +2 -2
- package/dist/{BOffcanvas-DI_fy_Yr.mjs.map → BOffcanvas-BklEA-4x.mjs.map} +1 -1
- package/dist/{BOffcanvas-B9tBGhZF.js → BOffcanvas-YsVap-9w.js} +2 -2
- package/dist/{BOffcanvas-B9tBGhZF.js.map → BOffcanvas-YsVap-9w.js.map} +1 -1
- package/dist/bootstrap-vue-next.css +0 -5
- package/dist/bootstrap-vue-next.mjs +5 -5
- package/dist/bootstrap-vue-next.umd.js +5 -5
- package/dist/src/components/BDropdown/index.mjs +2 -2
- package/dist/src/components/BDropdown/index.umd.js +2 -2
- package/dist/src/components/BModal/index.mjs +1 -1
- package/dist/src/components/BModal/index.umd.js +1 -1
- package/dist/src/components/BNav/index.mjs +1 -1
- package/dist/src/components/BNav/index.umd.js +1 -1
- package/dist/src/components/BOffcanvas/index.mjs +1 -1
- package/dist/src/components/BOffcanvas/index.umd.js +1 -1
- package/dist/src/components/index.mjs +5 -5
- package/dist/src/components/index.umd.js +5 -5
- package/dist/src/composables/useModal/index.mjs +1 -1
- package/dist/src/composables/useModal/index.umd.js +1 -1
- package/dist/{useSafeScrollLock-PWxgzVSb.mjs → useSafeScrollLock-C9UxwgUo.mjs} +3 -2
- package/dist/{useSafeScrollLock-PWxgzVSb.mjs.map → useSafeScrollLock-C9UxwgUo.mjs.map} +1 -1
- package/dist/{useSafeScrollLock-HZn1tIAh.js → useSafeScrollLock-CP2B7aXF.js} +3 -2
- package/dist/{useSafeScrollLock-HZn1tIAh.js.map → useSafeScrollLock-CP2B7aXF.js.map} +1 -1
- package/package.json +1 -1
- package/src/styles/styles.scss +0 -5
- package/dist/BDropdown-BQjX2G8g.js.map +0 -1
- package/dist/BDropdown-t41Sj0X6.mjs.map +0 -1
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "bootstrap-vue-next",
|
|
3
3
|
"displayName": "BootstrapVueNext",
|
|
4
4
|
"description": "Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development",
|
|
5
|
-
"version": "0.44.
|
|
5
|
+
"version": "0.44.2",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "./dist/bootstrap-vue-next.umd.js",
|
|
8
8
|
"module": "./dist/bootstrap-vue-next.mjs",
|
package/src/styles/styles.scss
CHANGED
|
@@ -48,11 +48,6 @@
|
|
|
48
48
|
display: none !important;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
/* Override inline display styles during transitions to allow proper CSS transitions */
|
|
52
|
-
.dropdown-menu.fade.showing {
|
|
53
|
-
display: block !important;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
51
|
// No focus outline helper (use sparingly)
|
|
57
52
|
.bv-no-focus-ring:focus {
|
|
58
53
|
outline: none;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BDropdown-BQjX2G8g.js","names":[],"sources":["../src/components/BDropdown/BDropdown.vue","../src/components/BDropdown/BDropdown.vue"],"sourcesContent":["<template>\n <ConditionalWrapper\n :skip=\"inInputGroup || props.noWrapper\"\n :class=\"computedClasses\"\n :role=\"inButtonGroupAttributes?.role\"\n >\n <BButton\n :id=\"computedId\"\n ref=\"_splitButton\"\n :variant=\"props.splitVariant || props.variant\"\n :size=\"props.size\"\n :class=\"buttonClasses\"\n :disabled=\"props.splitDisabled || props.disabled\"\n :type=\"props.splitButtonType\"\n :aria-label=\"props.ariaLabel\"\n :aria-expanded=\"props.split ? undefined : showRef\"\n :aria-haspopup=\"props.split ? undefined : 'menu'\"\n :href=\"props.split ? props.splitHref : undefined\"\n :icon=\"props.icon\"\n :to=\"props.split && props.splitTo ? props.splitTo : undefined\"\n @click=\"onSplitClick\"\n >\n <slot name=\"button-content\"> {{ props.text }} </slot>\n </BButton>\n <BButton\n v-if=\"props.split\"\n :id=\"computedId + '-split'\"\n ref=\"_button\"\n :variant=\"props.variant\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :class=\"[props.toggleClass, {show: showRef}]\"\n class=\"dropdown-toggle-split dropdown-toggle\"\n :aria-expanded=\"showRef\"\n aria-haspopup=\"menu\"\n @click=\"onButtonClick\"\n >\n <span class=\"visually-hidden\">\n <slot name=\"toggle-text\">\n {{ props.toggleText }}\n </slot>\n </span>\n </BButton>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"!props.teleportTo || props.teleportDisabled\"\n >\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"modelValue || props.visible\"\n >\n <ul\n v-show=\"showRef\"\n :id=\"computedId + '-menu'\"\n ref=\"_floating\"\n :style=\"[floatingStyles, sizeStyles, {display: showRef ? 'block' : 'none'}]\"\n class=\"dropdown-menu overflow-auto b-floating-size\"\n :class=\"[props.menuClass, computedMenuClasses]\"\n :aria-labelledby=\"computedId\"\n :role=\"props.role\"\n @click=\"onClickInside\"\n >\n <slot\n v-if=\"contentShowing\"\n :id=\"computedId\"\n :hide=\"hide\"\n :show=\"show\"\n :visible=\"showRef\"\n :click=\"onClickInside\"\n :toggle=\"onButtonClick\"\n :active=\"showRef\"\n />\n </ul>\n </Transition>\n </ConditionalTeleport>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n type Boundary,\n flip,\n type Middleware,\n offset as offsetMiddleware,\n type ReferenceElement,\n type RootBoundary,\n shift,\n size as sizeMiddleware,\n useFloating,\n} from '@floating-ui/vue'\nimport {onClickOutside, onKeyStroke, useToNumber} from '@vueuse/core'\nimport {\n computed,\n type ComputedRef,\n type CSSProperties,\n type EmitFn,\n inject,\n nextTick,\n provide,\n readonly,\n ref,\n toRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport BButton from '../BButton/BButton.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {isBoundary, isRootBoundary, resolveBootstrapCaret} from '../../utils/floatingUi'\nimport {getElement} from '../../utils/getElement'\nimport {buttonGroupKey, dropdownInjectionKey, inputGroupKey} from '../../utils/keys'\nimport {useShowHide} from '../../composables/useShowHide'\nimport type {BDropdownSlots, BDropdownEmits, BDropdownProps} from '../../types'\nimport {getSafeDocument} from '../../utils/dom'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n icon: false,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFade: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n unmountLazy: false,\n role: 'menu',\n size: 'md',\n noWrapper: false,\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n placement: 'bottom-start',\n splitVariant: undefined,\n strategy: 'absolute',\n text: undefined,\n show: false,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n transProps: undefined,\n variant: 'secondary',\n visible: false,\n wrapperClass: undefined,\n})\nconst props = useDefaults(_props, 'BDropdown')\nconst emit = defineEmits<BDropdownEmits>()\ndefineSlots<BDropdownSlots>()\n\nconst computedId = useId(() => props.id, 'dropdown')\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\nconst inInputGroup = inject(inputGroupKey, false)\nconst inButtonGroup = inject(buttonGroupKey, false)\n\nconst computedOffset = computed(() =>\n typeof props.offset === 'string' || typeof props.offset === 'number' ? props.offset : Number.NaN\n)\nconst offsetToNumber = useToNumber(computedOffset)\n\nconst floatingElement = useTemplateRef<HTMLUListElement | null>('_floating')\nconst button = useTemplateRef<HTMLElement | null>('_button')\nconst splitButton = useTemplateRef<HTMLElement | null>('_splitButton')\n\nconst boundary = computed<Boundary | undefined>(() =>\n isBoundary(props.boundary) ? props.boundary : undefined\n)\nconst rootBoundary = computed<RootBoundary | undefined>(() =>\n isRootBoundary(props.boundary) ? props.boundary : undefined\n)\n\nconst referenceElement = computed(() => (!props.split ? splitButton.value : button.value))\nlet cleanup: ReturnType<typeof autoUpdate> | undefined\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n contentShowing,\n isVisible,\n} = useShowHide(modelValue, props, emit as EmitFn, referenceElement, computedId, {\n showFn: () => {\n update()\n nextTick(() => {\n cleanup = autoUpdate(\n referenceElement.value as ReferenceElement,\n floatingElement.value as HTMLElement,\n update,\n {\n animationFrame: false,\n }\n )\n })\n },\n hideFn: () => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\n },\n})\n\nconst computedMenuClasses = computed(() => [\n {\n show: isVisible.value,\n fade: !computedNoAnimation.value,\n },\n])\n\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: referenceElement}\n)\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: floatingElement}\n)\n\nconst keynav = (e: Readonly<Event>, v: number) => {\n if (floatingElement.value?.contains((e.target as HTMLElement)?.closest('form'))) return\n if (/input|select|option|textarea|form/i.test((e.target as HTMLElement)?.tagName)) return\n e.preventDefault()\n if (!showRef.value) {\n show()\n const loop = setInterval(() => {\n if (isVisible.value) {\n clearInterval(loop)\n nextTick(() => keynav(e, v))\n }\n }, 16)\n return\n }\n const list = floatingElement.value?.querySelectorAll(\n '.dropdown-item:not(.disabled):not(:disabled)'\n )\n const doc = getSafeDocument()\n if (!list || !doc) return\n if (floatingElement.value?.contains(doc.activeElement)) {\n const active = floatingElement.value.querySelector('.dropdown-item:focus')\n const index = Array.prototype.indexOf.call(list, active) + v\n if (index >= 0 && index < list?.length) (list[index] as HTMLElement)?.focus()\n } else {\n ;(list[v === -1 ? list.length - 1 : 0] as HTMLElement)?.focus()\n }\n}\n\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: referenceElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: referenceElement})\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: floatingElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: floatingElement})\n\nconst sizeStyles = ref<CSSProperties>({})\nconst floatingMiddleware = computed<readonly Middleware[]>(() => {\n if (props.floatingMiddleware !== undefined) {\n return props.floatingMiddleware\n }\n const localOffset =\n typeof props.offset === 'string' || typeof props.offset === 'number'\n ? offsetToNumber.value\n : props.offset\n const arr: Middleware[] = [offsetMiddleware(localOffset)]\n if (props.noFlip === false) {\n arr.push(\n flip({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noShift === false) {\n arr.push(\n shift({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noSize === false) {\n arr.push(\n sizeMiddleware({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n apply({availableWidth, availableHeight}) {\n sizeStyles.value = {\n '--bv-floating-max-height':\n availableHeight >= (floatingElement.value?.scrollHeight ?? 0)\n ? undefined\n : availableHeight\n ? `${Math.max(0, availableHeight)}px`\n : undefined,\n '--bv-floating-max-width':\n availableWidth >= (floatingElement.value?.scrollWidth ?? 0)\n ? undefined\n : availableWidth\n ? `${Math.max(0, availableWidth)}px`\n : undefined,\n }\n },\n })\n )\n }\n return arr\n})\nconst {update, floatingStyles} = useFloating(referenceElement, floatingElement, {\n placement: () => props.placement,\n middleware: floatingMiddleware as ComputedRef<Middleware[]>,\n strategy: toRef(() => props.strategy),\n})\n\nconst inButtonGroupAttributes = inButtonGroup\n ? {\n class: 'btn-group',\n role: 'group',\n }\n : undefined\n\nconst computedClasses = computed(() => [\n inButtonGroupAttributes?.class,\n props.wrapperClass,\n {\n 'btn-group': !props.wrapperClass && props.split,\n [`drop${resolveBootstrapCaret(props.placement)}`]: !props.wrapperClass,\n 'position-static': props.boundary !== 'clippingAncestors' && !props.isNav,\n },\n])\n\nconst buttonClasses = computed(() => [\n props.split ? props.splitClass : props.toggleClass,\n {\n 'nav-link': props.isNav,\n 'dropdown-toggle': !props.split,\n 'dropdown-toggle-no-caret': props.noCaret && !props.split,\n 'show': props.split ? undefined : showRef.value,\n },\n])\n\nconst onButtonClick = () => {\n toggle()\n}\n\nconst onSplitClick = (event: Readonly<MouseEvent>) => {\n if (props.split) {\n emit('split-click', event)\n return\n }\n onButtonClick()\n}\n\nonClickOutside(\n floatingElement,\n () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'outside')) {\n hide()\n }\n },\n {ignore: [button, splitButton]}\n)\nconst onClickInside = () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'inside')) {\n hide()\n }\n}\n\nwatch(isVisible, () => {\n update()\n})\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n\nprovide(dropdownInjectionKey, {\n id: computedId,\n show,\n hide,\n toggle,\n visible: readonly(showRef),\n isNav: toRef(() => props.isNav),\n})\n</script>\n","<template>\n <ConditionalWrapper\n :skip=\"inInputGroup || props.noWrapper\"\n :class=\"computedClasses\"\n :role=\"inButtonGroupAttributes?.role\"\n >\n <BButton\n :id=\"computedId\"\n ref=\"_splitButton\"\n :variant=\"props.splitVariant || props.variant\"\n :size=\"props.size\"\n :class=\"buttonClasses\"\n :disabled=\"props.splitDisabled || props.disabled\"\n :type=\"props.splitButtonType\"\n :aria-label=\"props.ariaLabel\"\n :aria-expanded=\"props.split ? undefined : showRef\"\n :aria-haspopup=\"props.split ? undefined : 'menu'\"\n :href=\"props.split ? props.splitHref : undefined\"\n :icon=\"props.icon\"\n :to=\"props.split && props.splitTo ? props.splitTo : undefined\"\n @click=\"onSplitClick\"\n >\n <slot name=\"button-content\"> {{ props.text }} </slot>\n </BButton>\n <BButton\n v-if=\"props.split\"\n :id=\"computedId + '-split'\"\n ref=\"_button\"\n :variant=\"props.variant\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :class=\"[props.toggleClass, {show: showRef}]\"\n class=\"dropdown-toggle-split dropdown-toggle\"\n :aria-expanded=\"showRef\"\n aria-haspopup=\"menu\"\n @click=\"onButtonClick\"\n >\n <span class=\"visually-hidden\">\n <slot name=\"toggle-text\">\n {{ props.toggleText }}\n </slot>\n </span>\n </BButton>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"!props.teleportTo || props.teleportDisabled\"\n >\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"modelValue || props.visible\"\n >\n <ul\n v-show=\"showRef\"\n :id=\"computedId + '-menu'\"\n ref=\"_floating\"\n :style=\"[floatingStyles, sizeStyles, {display: showRef ? 'block' : 'none'}]\"\n class=\"dropdown-menu overflow-auto b-floating-size\"\n :class=\"[props.menuClass, computedMenuClasses]\"\n :aria-labelledby=\"computedId\"\n :role=\"props.role\"\n @click=\"onClickInside\"\n >\n <slot\n v-if=\"contentShowing\"\n :id=\"computedId\"\n :hide=\"hide\"\n :show=\"show\"\n :visible=\"showRef\"\n :click=\"onClickInside\"\n :toggle=\"onButtonClick\"\n :active=\"showRef\"\n />\n </ul>\n </Transition>\n </ConditionalTeleport>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n type Boundary,\n flip,\n type Middleware,\n offset as offsetMiddleware,\n type ReferenceElement,\n type RootBoundary,\n shift,\n size as sizeMiddleware,\n useFloating,\n} from '@floating-ui/vue'\nimport {onClickOutside, onKeyStroke, useToNumber} from '@vueuse/core'\nimport {\n computed,\n type ComputedRef,\n type CSSProperties,\n type EmitFn,\n inject,\n nextTick,\n provide,\n readonly,\n ref,\n toRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport BButton from '../BButton/BButton.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {isBoundary, isRootBoundary, resolveBootstrapCaret} from '../../utils/floatingUi'\nimport {getElement} from '../../utils/getElement'\nimport {buttonGroupKey, dropdownInjectionKey, inputGroupKey} from '../../utils/keys'\nimport {useShowHide} from '../../composables/useShowHide'\nimport type {BDropdownSlots, BDropdownEmits, BDropdownProps} from '../../types'\nimport {getSafeDocument} from '../../utils/dom'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n icon: false,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFade: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n unmountLazy: false,\n role: 'menu',\n size: 'md',\n noWrapper: false,\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n placement: 'bottom-start',\n splitVariant: undefined,\n strategy: 'absolute',\n text: undefined,\n show: false,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n transProps: undefined,\n variant: 'secondary',\n visible: false,\n wrapperClass: undefined,\n})\nconst props = useDefaults(_props, 'BDropdown')\nconst emit = defineEmits<BDropdownEmits>()\ndefineSlots<BDropdownSlots>()\n\nconst computedId = useId(() => props.id, 'dropdown')\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\nconst inInputGroup = inject(inputGroupKey, false)\nconst inButtonGroup = inject(buttonGroupKey, false)\n\nconst computedOffset = computed(() =>\n typeof props.offset === 'string' || typeof props.offset === 'number' ? props.offset : Number.NaN\n)\nconst offsetToNumber = useToNumber(computedOffset)\n\nconst floatingElement = useTemplateRef<HTMLUListElement | null>('_floating')\nconst button = useTemplateRef<HTMLElement | null>('_button')\nconst splitButton = useTemplateRef<HTMLElement | null>('_splitButton')\n\nconst boundary = computed<Boundary | undefined>(() =>\n isBoundary(props.boundary) ? props.boundary : undefined\n)\nconst rootBoundary = computed<RootBoundary | undefined>(() =>\n isRootBoundary(props.boundary) ? props.boundary : undefined\n)\n\nconst referenceElement = computed(() => (!props.split ? splitButton.value : button.value))\nlet cleanup: ReturnType<typeof autoUpdate> | undefined\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n contentShowing,\n isVisible,\n} = useShowHide(modelValue, props, emit as EmitFn, referenceElement, computedId, {\n showFn: () => {\n update()\n nextTick(() => {\n cleanup = autoUpdate(\n referenceElement.value as ReferenceElement,\n floatingElement.value as HTMLElement,\n update,\n {\n animationFrame: false,\n }\n )\n })\n },\n hideFn: () => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\n },\n})\n\nconst computedMenuClasses = computed(() => [\n {\n show: isVisible.value,\n fade: !computedNoAnimation.value,\n },\n])\n\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: referenceElement}\n)\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: floatingElement}\n)\n\nconst keynav = (e: Readonly<Event>, v: number) => {\n if (floatingElement.value?.contains((e.target as HTMLElement)?.closest('form'))) return\n if (/input|select|option|textarea|form/i.test((e.target as HTMLElement)?.tagName)) return\n e.preventDefault()\n if (!showRef.value) {\n show()\n const loop = setInterval(() => {\n if (isVisible.value) {\n clearInterval(loop)\n nextTick(() => keynav(e, v))\n }\n }, 16)\n return\n }\n const list = floatingElement.value?.querySelectorAll(\n '.dropdown-item:not(.disabled):not(:disabled)'\n )\n const doc = getSafeDocument()\n if (!list || !doc) return\n if (floatingElement.value?.contains(doc.activeElement)) {\n const active = floatingElement.value.querySelector('.dropdown-item:focus')\n const index = Array.prototype.indexOf.call(list, active) + v\n if (index >= 0 && index < list?.length) (list[index] as HTMLElement)?.focus()\n } else {\n ;(list[v === -1 ? list.length - 1 : 0] as HTMLElement)?.focus()\n }\n}\n\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: referenceElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: referenceElement})\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: floatingElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: floatingElement})\n\nconst sizeStyles = ref<CSSProperties>({})\nconst floatingMiddleware = computed<readonly Middleware[]>(() => {\n if (props.floatingMiddleware !== undefined) {\n return props.floatingMiddleware\n }\n const localOffset =\n typeof props.offset === 'string' || typeof props.offset === 'number'\n ? offsetToNumber.value\n : props.offset\n const arr: Middleware[] = [offsetMiddleware(localOffset)]\n if (props.noFlip === false) {\n arr.push(\n flip({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noShift === false) {\n arr.push(\n shift({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noSize === false) {\n arr.push(\n sizeMiddleware({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n apply({availableWidth, availableHeight}) {\n sizeStyles.value = {\n '--bv-floating-max-height':\n availableHeight >= (floatingElement.value?.scrollHeight ?? 0)\n ? undefined\n : availableHeight\n ? `${Math.max(0, availableHeight)}px`\n : undefined,\n '--bv-floating-max-width':\n availableWidth >= (floatingElement.value?.scrollWidth ?? 0)\n ? undefined\n : availableWidth\n ? `${Math.max(0, availableWidth)}px`\n : undefined,\n }\n },\n })\n )\n }\n return arr\n})\nconst {update, floatingStyles} = useFloating(referenceElement, floatingElement, {\n placement: () => props.placement,\n middleware: floatingMiddleware as ComputedRef<Middleware[]>,\n strategy: toRef(() => props.strategy),\n})\n\nconst inButtonGroupAttributes = inButtonGroup\n ? {\n class: 'btn-group',\n role: 'group',\n }\n : undefined\n\nconst computedClasses = computed(() => [\n inButtonGroupAttributes?.class,\n props.wrapperClass,\n {\n 'btn-group': !props.wrapperClass && props.split,\n [`drop${resolveBootstrapCaret(props.placement)}`]: !props.wrapperClass,\n 'position-static': props.boundary !== 'clippingAncestors' && !props.isNav,\n },\n])\n\nconst buttonClasses = computed(() => [\n props.split ? props.splitClass : props.toggleClass,\n {\n 'nav-link': props.isNav,\n 'dropdown-toggle': !props.split,\n 'dropdown-toggle-no-caret': props.noCaret && !props.split,\n 'show': props.split ? undefined : showRef.value,\n },\n])\n\nconst onButtonClick = () => {\n toggle()\n}\n\nconst onSplitClick = (event: Readonly<MouseEvent>) => {\n if (props.split) {\n emit('split-click', event)\n return\n }\n onButtonClick()\n}\n\nonClickOutside(\n floatingElement,\n () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'outside')) {\n hide()\n }\n },\n {ignore: [button, splitButton]}\n)\nconst onClickInside = () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'inside')) {\n hide()\n }\n}\n\nwatch(isVisible, () => {\n update()\n})\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n\nprovide(dropdownInjectionKey, {\n id: computedId,\n show,\n hide,\n toggle,\n visible: readonly(showRef),\n isNav: toRef(() => props.isNav),\n})\n</script>\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BDropdown-t41Sj0X6.mjs","names":[],"sources":["../src/components/BDropdown/BDropdown.vue","../src/components/BDropdown/BDropdown.vue"],"sourcesContent":["<template>\n <ConditionalWrapper\n :skip=\"inInputGroup || props.noWrapper\"\n :class=\"computedClasses\"\n :role=\"inButtonGroupAttributes?.role\"\n >\n <BButton\n :id=\"computedId\"\n ref=\"_splitButton\"\n :variant=\"props.splitVariant || props.variant\"\n :size=\"props.size\"\n :class=\"buttonClasses\"\n :disabled=\"props.splitDisabled || props.disabled\"\n :type=\"props.splitButtonType\"\n :aria-label=\"props.ariaLabel\"\n :aria-expanded=\"props.split ? undefined : showRef\"\n :aria-haspopup=\"props.split ? undefined : 'menu'\"\n :href=\"props.split ? props.splitHref : undefined\"\n :icon=\"props.icon\"\n :to=\"props.split && props.splitTo ? props.splitTo : undefined\"\n @click=\"onSplitClick\"\n >\n <slot name=\"button-content\"> {{ props.text }} </slot>\n </BButton>\n <BButton\n v-if=\"props.split\"\n :id=\"computedId + '-split'\"\n ref=\"_button\"\n :variant=\"props.variant\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :class=\"[props.toggleClass, {show: showRef}]\"\n class=\"dropdown-toggle-split dropdown-toggle\"\n :aria-expanded=\"showRef\"\n aria-haspopup=\"menu\"\n @click=\"onButtonClick\"\n >\n <span class=\"visually-hidden\">\n <slot name=\"toggle-text\">\n {{ props.toggleText }}\n </slot>\n </span>\n </BButton>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"!props.teleportTo || props.teleportDisabled\"\n >\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"modelValue || props.visible\"\n >\n <ul\n v-show=\"showRef\"\n :id=\"computedId + '-menu'\"\n ref=\"_floating\"\n :style=\"[floatingStyles, sizeStyles, {display: showRef ? 'block' : 'none'}]\"\n class=\"dropdown-menu overflow-auto b-floating-size\"\n :class=\"[props.menuClass, computedMenuClasses]\"\n :aria-labelledby=\"computedId\"\n :role=\"props.role\"\n @click=\"onClickInside\"\n >\n <slot\n v-if=\"contentShowing\"\n :id=\"computedId\"\n :hide=\"hide\"\n :show=\"show\"\n :visible=\"showRef\"\n :click=\"onClickInside\"\n :toggle=\"onButtonClick\"\n :active=\"showRef\"\n />\n </ul>\n </Transition>\n </ConditionalTeleport>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n type Boundary,\n flip,\n type Middleware,\n offset as offsetMiddleware,\n type ReferenceElement,\n type RootBoundary,\n shift,\n size as sizeMiddleware,\n useFloating,\n} from '@floating-ui/vue'\nimport {onClickOutside, onKeyStroke, useToNumber} from '@vueuse/core'\nimport {\n computed,\n type ComputedRef,\n type CSSProperties,\n type EmitFn,\n inject,\n nextTick,\n provide,\n readonly,\n ref,\n toRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport BButton from '../BButton/BButton.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {isBoundary, isRootBoundary, resolveBootstrapCaret} from '../../utils/floatingUi'\nimport {getElement} from '../../utils/getElement'\nimport {buttonGroupKey, dropdownInjectionKey, inputGroupKey} from '../../utils/keys'\nimport {useShowHide} from '../../composables/useShowHide'\nimport type {BDropdownSlots, BDropdownEmits, BDropdownProps} from '../../types'\nimport {getSafeDocument} from '../../utils/dom'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n icon: false,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFade: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n unmountLazy: false,\n role: 'menu',\n size: 'md',\n noWrapper: false,\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n placement: 'bottom-start',\n splitVariant: undefined,\n strategy: 'absolute',\n text: undefined,\n show: false,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n transProps: undefined,\n variant: 'secondary',\n visible: false,\n wrapperClass: undefined,\n})\nconst props = useDefaults(_props, 'BDropdown')\nconst emit = defineEmits<BDropdownEmits>()\ndefineSlots<BDropdownSlots>()\n\nconst computedId = useId(() => props.id, 'dropdown')\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\nconst inInputGroup = inject(inputGroupKey, false)\nconst inButtonGroup = inject(buttonGroupKey, false)\n\nconst computedOffset = computed(() =>\n typeof props.offset === 'string' || typeof props.offset === 'number' ? props.offset : Number.NaN\n)\nconst offsetToNumber = useToNumber(computedOffset)\n\nconst floatingElement = useTemplateRef<HTMLUListElement | null>('_floating')\nconst button = useTemplateRef<HTMLElement | null>('_button')\nconst splitButton = useTemplateRef<HTMLElement | null>('_splitButton')\n\nconst boundary = computed<Boundary | undefined>(() =>\n isBoundary(props.boundary) ? props.boundary : undefined\n)\nconst rootBoundary = computed<RootBoundary | undefined>(() =>\n isRootBoundary(props.boundary) ? props.boundary : undefined\n)\n\nconst referenceElement = computed(() => (!props.split ? splitButton.value : button.value))\nlet cleanup: ReturnType<typeof autoUpdate> | undefined\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n contentShowing,\n isVisible,\n} = useShowHide(modelValue, props, emit as EmitFn, referenceElement, computedId, {\n showFn: () => {\n update()\n nextTick(() => {\n cleanup = autoUpdate(\n referenceElement.value as ReferenceElement,\n floatingElement.value as HTMLElement,\n update,\n {\n animationFrame: false,\n }\n )\n })\n },\n hideFn: () => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\n },\n})\n\nconst computedMenuClasses = computed(() => [\n {\n show: isVisible.value,\n fade: !computedNoAnimation.value,\n },\n])\n\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: referenceElement}\n)\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: floatingElement}\n)\n\nconst keynav = (e: Readonly<Event>, v: number) => {\n if (floatingElement.value?.contains((e.target as HTMLElement)?.closest('form'))) return\n if (/input|select|option|textarea|form/i.test((e.target as HTMLElement)?.tagName)) return\n e.preventDefault()\n if (!showRef.value) {\n show()\n const loop = setInterval(() => {\n if (isVisible.value) {\n clearInterval(loop)\n nextTick(() => keynav(e, v))\n }\n }, 16)\n return\n }\n const list = floatingElement.value?.querySelectorAll(\n '.dropdown-item:not(.disabled):not(:disabled)'\n )\n const doc = getSafeDocument()\n if (!list || !doc) return\n if (floatingElement.value?.contains(doc.activeElement)) {\n const active = floatingElement.value.querySelector('.dropdown-item:focus')\n const index = Array.prototype.indexOf.call(list, active) + v\n if (index >= 0 && index < list?.length) (list[index] as HTMLElement)?.focus()\n } else {\n ;(list[v === -1 ? list.length - 1 : 0] as HTMLElement)?.focus()\n }\n}\n\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: referenceElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: referenceElement})\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: floatingElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: floatingElement})\n\nconst sizeStyles = ref<CSSProperties>({})\nconst floatingMiddleware = computed<readonly Middleware[]>(() => {\n if (props.floatingMiddleware !== undefined) {\n return props.floatingMiddleware\n }\n const localOffset =\n typeof props.offset === 'string' || typeof props.offset === 'number'\n ? offsetToNumber.value\n : props.offset\n const arr: Middleware[] = [offsetMiddleware(localOffset)]\n if (props.noFlip === false) {\n arr.push(\n flip({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noShift === false) {\n arr.push(\n shift({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noSize === false) {\n arr.push(\n sizeMiddleware({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n apply({availableWidth, availableHeight}) {\n sizeStyles.value = {\n '--bv-floating-max-height':\n availableHeight >= (floatingElement.value?.scrollHeight ?? 0)\n ? undefined\n : availableHeight\n ? `${Math.max(0, availableHeight)}px`\n : undefined,\n '--bv-floating-max-width':\n availableWidth >= (floatingElement.value?.scrollWidth ?? 0)\n ? undefined\n : availableWidth\n ? `${Math.max(0, availableWidth)}px`\n : undefined,\n }\n },\n })\n )\n }\n return arr\n})\nconst {update, floatingStyles} = useFloating(referenceElement, floatingElement, {\n placement: () => props.placement,\n middleware: floatingMiddleware as ComputedRef<Middleware[]>,\n strategy: toRef(() => props.strategy),\n})\n\nconst inButtonGroupAttributes = inButtonGroup\n ? {\n class: 'btn-group',\n role: 'group',\n }\n : undefined\n\nconst computedClasses = computed(() => [\n inButtonGroupAttributes?.class,\n props.wrapperClass,\n {\n 'btn-group': !props.wrapperClass && props.split,\n [`drop${resolveBootstrapCaret(props.placement)}`]: !props.wrapperClass,\n 'position-static': props.boundary !== 'clippingAncestors' && !props.isNav,\n },\n])\n\nconst buttonClasses = computed(() => [\n props.split ? props.splitClass : props.toggleClass,\n {\n 'nav-link': props.isNav,\n 'dropdown-toggle': !props.split,\n 'dropdown-toggle-no-caret': props.noCaret && !props.split,\n 'show': props.split ? undefined : showRef.value,\n },\n])\n\nconst onButtonClick = () => {\n toggle()\n}\n\nconst onSplitClick = (event: Readonly<MouseEvent>) => {\n if (props.split) {\n emit('split-click', event)\n return\n }\n onButtonClick()\n}\n\nonClickOutside(\n floatingElement,\n () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'outside')) {\n hide()\n }\n },\n {ignore: [button, splitButton]}\n)\nconst onClickInside = () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'inside')) {\n hide()\n }\n}\n\nwatch(isVisible, () => {\n update()\n})\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n\nprovide(dropdownInjectionKey, {\n id: computedId,\n show,\n hide,\n toggle,\n visible: readonly(showRef),\n isNav: toRef(() => props.isNav),\n})\n</script>\n","<template>\n <ConditionalWrapper\n :skip=\"inInputGroup || props.noWrapper\"\n :class=\"computedClasses\"\n :role=\"inButtonGroupAttributes?.role\"\n >\n <BButton\n :id=\"computedId\"\n ref=\"_splitButton\"\n :variant=\"props.splitVariant || props.variant\"\n :size=\"props.size\"\n :class=\"buttonClasses\"\n :disabled=\"props.splitDisabled || props.disabled\"\n :type=\"props.splitButtonType\"\n :aria-label=\"props.ariaLabel\"\n :aria-expanded=\"props.split ? undefined : showRef\"\n :aria-haspopup=\"props.split ? undefined : 'menu'\"\n :href=\"props.split ? props.splitHref : undefined\"\n :icon=\"props.icon\"\n :to=\"props.split && props.splitTo ? props.splitTo : undefined\"\n @click=\"onSplitClick\"\n >\n <slot name=\"button-content\"> {{ props.text }} </slot>\n </BButton>\n <BButton\n v-if=\"props.split\"\n :id=\"computedId + '-split'\"\n ref=\"_button\"\n :variant=\"props.variant\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :class=\"[props.toggleClass, {show: showRef}]\"\n class=\"dropdown-toggle-split dropdown-toggle\"\n :aria-expanded=\"showRef\"\n aria-haspopup=\"menu\"\n @click=\"onButtonClick\"\n >\n <span class=\"visually-hidden\">\n <slot name=\"toggle-text\">\n {{ props.toggleText }}\n </slot>\n </span>\n </BButton>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"!props.teleportTo || props.teleportDisabled\"\n >\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"modelValue || props.visible\"\n >\n <ul\n v-show=\"showRef\"\n :id=\"computedId + '-menu'\"\n ref=\"_floating\"\n :style=\"[floatingStyles, sizeStyles, {display: showRef ? 'block' : 'none'}]\"\n class=\"dropdown-menu overflow-auto b-floating-size\"\n :class=\"[props.menuClass, computedMenuClasses]\"\n :aria-labelledby=\"computedId\"\n :role=\"props.role\"\n @click=\"onClickInside\"\n >\n <slot\n v-if=\"contentShowing\"\n :id=\"computedId\"\n :hide=\"hide\"\n :show=\"show\"\n :visible=\"showRef\"\n :click=\"onClickInside\"\n :toggle=\"onButtonClick\"\n :active=\"showRef\"\n />\n </ul>\n </Transition>\n </ConditionalTeleport>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n type Boundary,\n flip,\n type Middleware,\n offset as offsetMiddleware,\n type ReferenceElement,\n type RootBoundary,\n shift,\n size as sizeMiddleware,\n useFloating,\n} from '@floating-ui/vue'\nimport {onClickOutside, onKeyStroke, useToNumber} from '@vueuse/core'\nimport {\n computed,\n type ComputedRef,\n type CSSProperties,\n type EmitFn,\n inject,\n nextTick,\n provide,\n readonly,\n ref,\n toRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport BButton from '../BButton/BButton.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {isBoundary, isRootBoundary, resolveBootstrapCaret} from '../../utils/floatingUi'\nimport {getElement} from '../../utils/getElement'\nimport {buttonGroupKey, dropdownInjectionKey, inputGroupKey} from '../../utils/keys'\nimport {useShowHide} from '../../composables/useShowHide'\nimport type {BDropdownSlots, BDropdownEmits, BDropdownProps} from '../../types'\nimport {getSafeDocument} from '../../utils/dom'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n icon: false,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFade: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n unmountLazy: false,\n role: 'menu',\n size: 'md',\n noWrapper: false,\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n placement: 'bottom-start',\n splitVariant: undefined,\n strategy: 'absolute',\n text: undefined,\n show: false,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n transProps: undefined,\n variant: 'secondary',\n visible: false,\n wrapperClass: undefined,\n})\nconst props = useDefaults(_props, 'BDropdown')\nconst emit = defineEmits<BDropdownEmits>()\ndefineSlots<BDropdownSlots>()\n\nconst computedId = useId(() => props.id, 'dropdown')\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\nconst inInputGroup = inject(inputGroupKey, false)\nconst inButtonGroup = inject(buttonGroupKey, false)\n\nconst computedOffset = computed(() =>\n typeof props.offset === 'string' || typeof props.offset === 'number' ? props.offset : Number.NaN\n)\nconst offsetToNumber = useToNumber(computedOffset)\n\nconst floatingElement = useTemplateRef<HTMLUListElement | null>('_floating')\nconst button = useTemplateRef<HTMLElement | null>('_button')\nconst splitButton = useTemplateRef<HTMLElement | null>('_splitButton')\n\nconst boundary = computed<Boundary | undefined>(() =>\n isBoundary(props.boundary) ? props.boundary : undefined\n)\nconst rootBoundary = computed<RootBoundary | undefined>(() =>\n isRootBoundary(props.boundary) ? props.boundary : undefined\n)\n\nconst referenceElement = computed(() => (!props.split ? splitButton.value : button.value))\nlet cleanup: ReturnType<typeof autoUpdate> | undefined\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n contentShowing,\n isVisible,\n} = useShowHide(modelValue, props, emit as EmitFn, referenceElement, computedId, {\n showFn: () => {\n update()\n nextTick(() => {\n cleanup = autoUpdate(\n referenceElement.value as ReferenceElement,\n floatingElement.value as HTMLElement,\n update,\n {\n animationFrame: false,\n }\n )\n })\n },\n hideFn: () => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\n },\n})\n\nconst computedMenuClasses = computed(() => [\n {\n show: isVisible.value,\n fade: !computedNoAnimation.value,\n },\n])\n\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: referenceElement}\n)\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: floatingElement}\n)\n\nconst keynav = (e: Readonly<Event>, v: number) => {\n if (floatingElement.value?.contains((e.target as HTMLElement)?.closest('form'))) return\n if (/input|select|option|textarea|form/i.test((e.target as HTMLElement)?.tagName)) return\n e.preventDefault()\n if (!showRef.value) {\n show()\n const loop = setInterval(() => {\n if (isVisible.value) {\n clearInterval(loop)\n nextTick(() => keynav(e, v))\n }\n }, 16)\n return\n }\n const list = floatingElement.value?.querySelectorAll(\n '.dropdown-item:not(.disabled):not(:disabled)'\n )\n const doc = getSafeDocument()\n if (!list || !doc) return\n if (floatingElement.value?.contains(doc.activeElement)) {\n const active = floatingElement.value.querySelector('.dropdown-item:focus')\n const index = Array.prototype.indexOf.call(list, active) + v\n if (index >= 0 && index < list?.length) (list[index] as HTMLElement)?.focus()\n } else {\n ;(list[v === -1 ? list.length - 1 : 0] as HTMLElement)?.focus()\n }\n}\n\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: referenceElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: referenceElement})\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: floatingElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: floatingElement})\n\nconst sizeStyles = ref<CSSProperties>({})\nconst floatingMiddleware = computed<readonly Middleware[]>(() => {\n if (props.floatingMiddleware !== undefined) {\n return props.floatingMiddleware\n }\n const localOffset =\n typeof props.offset === 'string' || typeof props.offset === 'number'\n ? offsetToNumber.value\n : props.offset\n const arr: Middleware[] = [offsetMiddleware(localOffset)]\n if (props.noFlip === false) {\n arr.push(\n flip({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noShift === false) {\n arr.push(\n shift({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noSize === false) {\n arr.push(\n sizeMiddleware({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n apply({availableWidth, availableHeight}) {\n sizeStyles.value = {\n '--bv-floating-max-height':\n availableHeight >= (floatingElement.value?.scrollHeight ?? 0)\n ? undefined\n : availableHeight\n ? `${Math.max(0, availableHeight)}px`\n : undefined,\n '--bv-floating-max-width':\n availableWidth >= (floatingElement.value?.scrollWidth ?? 0)\n ? undefined\n : availableWidth\n ? `${Math.max(0, availableWidth)}px`\n : undefined,\n }\n },\n })\n )\n }\n return arr\n})\nconst {update, floatingStyles} = useFloating(referenceElement, floatingElement, {\n placement: () => props.placement,\n middleware: floatingMiddleware as ComputedRef<Middleware[]>,\n strategy: toRef(() => props.strategy),\n})\n\nconst inButtonGroupAttributes = inButtonGroup\n ? {\n class: 'btn-group',\n role: 'group',\n }\n : undefined\n\nconst computedClasses = computed(() => [\n inButtonGroupAttributes?.class,\n props.wrapperClass,\n {\n 'btn-group': !props.wrapperClass && props.split,\n [`drop${resolveBootstrapCaret(props.placement)}`]: !props.wrapperClass,\n 'position-static': props.boundary !== 'clippingAncestors' && !props.isNav,\n },\n])\n\nconst buttonClasses = computed(() => [\n props.split ? props.splitClass : props.toggleClass,\n {\n 'nav-link': props.isNav,\n 'dropdown-toggle': !props.split,\n 'dropdown-toggle-no-caret': props.noCaret && !props.split,\n 'show': props.split ? undefined : showRef.value,\n },\n])\n\nconst onButtonClick = () => {\n toggle()\n}\n\nconst onSplitClick = (event: Readonly<MouseEvent>) => {\n if (props.split) {\n emit('split-click', event)\n return\n }\n onButtonClick()\n}\n\nonClickOutside(\n floatingElement,\n () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'outside')) {\n hide()\n }\n },\n {ignore: [button, splitButton]}\n)\nconst onClickInside = () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'inside')) {\n hide()\n }\n}\n\nwatch(isVisible, () => {\n update()\n})\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n\nprovide(dropdownInjectionKey, {\n id: computedId,\n show,\n hide,\n toggle,\n visible: readonly(showRef),\n isNav: toRef(() => props.isNav),\n})\n</script>\n"],"mappings":"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"}
|