bootstrap-vue-next
Version:
Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development
1 lines • 11 kB
Source Map (JSON)
{"version":3,"file":"BOverlay-DOfvBAZb.mjs","names":[],"sources":["../src/composables/useTransitions.ts","../src/components/BOverlay/BOverlay.vue","../src/components/BOverlay/BOverlay.vue"],"sourcesContent":["import {computed, type MaybeRefOrGetter, toValue, type TransitionProps} from 'vue'\n\nconst NO_FADE_PROPS = {\n name: '',\n enterActiveClass: '',\n enterToClass: '',\n leaveActiveClass: '',\n leaveToClass: 'showing',\n enterFromClass: 'showing',\n leaveFromClass: '',\n} as const satisfies TransitionProps\nconst FADE_PROPS = {\n ...NO_FADE_PROPS,\n enterActiveClass: 'fade showing',\n leaveActiveClass: 'fade showing',\n} as const satisfies TransitionProps\n\nexport const useFadeTransition = (fade: MaybeRefOrGetter<boolean>) =>\n computed(() => (toValue(fade) ? FADE_PROPS : NO_FADE_PROPS))\n","<template>\n <ConditionalWrapper\n :tag=\"props.wrapTag\"\n class=\"b-overlay-wrap position-relative\"\n :aria-busy=\"computedAriaBusy\"\n :skip=\"props.noWrap\"\n >\n <slot />\n <Transition\n v-bind=\"fadeTransitions\"\n enter-to-class=\"show\"\n name=\"fade\"\n @after-enter=\"emit('shown')\"\n @after-leave=\"emit('hidden')\"\n >\n <component\n :is=\"props.overlayTag\"\n v-if=\"props.show\"\n class=\"b-overlay\"\n :class=\"overlayClasses\"\n :style=\"overlayStyles\"\n @click=\"emit('click', $event)\"\n >\n <div class=\"position-absolute\" :class=\"blurClasses\" :style=\"blurStyles\" />\n\n <div class=\"position-absolute\" :style=\"spinWrapperStyles\">\n <slot name=\"overlay\" v-bind=\"spinnerAttrs\">\n <BSpinner v-if=\"!props.noSpinner\" v-bind=\"spinnerAttrs\" />\n </slot>\n </div>\n </component>\n </Transition>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport type {BOverlayProps} from '../../types/ComponentProps'\nimport {useDefaults} from '../../composables/useDefaults'\nimport BSpinner from '../BSpinner/BSpinner.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport {useRadiusElementClasses} from '../../composables/useRadiusElementClasses'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BgColorVariant} from '../../types/ColorTypes'\nimport {useFadeTransition} from '../../composables/useTransitions'\nimport type {BOverlayEmits, BOverlaySlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BOverlayProps>(), {\n bgColor: undefined,\n blur: '2px',\n fixed: false,\n noCenter: false,\n noFade: false,\n noSpinner: false,\n noWrap: false,\n opacity: 0.85,\n overlayTag: 'div',\n show: false,\n spinnerSmall: false,\n spinnerType: 'border',\n spinnerVariant: undefined,\n variant: 'light',\n wrapTag: 'div',\n zIndex: 10,\n // RadiusElementExtendables props\n rounded: false,\n roundedBottom: undefined,\n roundedEnd: undefined,\n roundedStart: undefined,\n roundedTop: undefined,\n // End RadiusElementExtendables props\n})\nconst props = useDefaults(_props, 'BOverlay')\nconst emit = defineEmits<BOverlayEmits>()\ndefineSlots<BOverlaySlots>()\n\nconst positionStyles = {top: 0, left: 0, bottom: 0, right: 0} as const\n\nconst fadeTransitions = useFadeTransition(() => !props.noFade)\n\nconst radiusElementClasses = useRadiusElementClasses(() => ({\n rounded: props.rounded,\n roundedTop: props.roundedTop,\n roundedBottom: props.roundedBottom,\n roundedStart: props.roundedStart,\n roundedEnd: props.roundedEnd,\n}))\n\nconst computedAriaBusy = computed(() => (props.show ? true : null))\n\nconst spinnerAttrs = computed(() => ({\n type: props.spinnerType,\n variant: props.spinnerVariant,\n small: props.spinnerSmall,\n}))\n\nconst overlayStyles = computed(() => ({\n ...positionStyles,\n zIndex: props.zIndex || 10,\n}))\n\nconst overlayClasses = computed(() => ({\n 'position-absolute': !props.noWrap || !props.fixed,\n 'position-fixed': props.noWrap && props.fixed,\n}))\n\nconst colorClasses = useColorVariantClasses(\n computed(() => ({\n bgVariant: props.variant !== null && !props.bgColor ? (props.variant as BgColorVariant) : null,\n }))\n)\nconst blurClasses = computed(() => [colorClasses.value, radiusElementClasses.value])\n\nconst blurStyles = computed(() => ({\n ...positionStyles,\n opacity: props.opacity,\n backgroundColor: props.bgColor || undefined,\n backdropFilter:\n props.blur && !props.bgColor && (props.variant === 'white' || props.variant === 'transparent')\n ? `blur(${props.blur})`\n : undefined,\n}))\n\nconst spinWrapperStyles = computed(() =>\n props.noCenter\n ? positionStyles\n : {\n top: '50%',\n left: '50%',\n transform: 'translateX(-50%) translateY(-50%)',\n }\n)\n</script>\n","<template>\n <ConditionalWrapper\n :tag=\"props.wrapTag\"\n class=\"b-overlay-wrap position-relative\"\n :aria-busy=\"computedAriaBusy\"\n :skip=\"props.noWrap\"\n >\n <slot />\n <Transition\n v-bind=\"fadeTransitions\"\n enter-to-class=\"show\"\n name=\"fade\"\n @after-enter=\"emit('shown')\"\n @after-leave=\"emit('hidden')\"\n >\n <component\n :is=\"props.overlayTag\"\n v-if=\"props.show\"\n class=\"b-overlay\"\n :class=\"overlayClasses\"\n :style=\"overlayStyles\"\n @click=\"emit('click', $event)\"\n >\n <div class=\"position-absolute\" :class=\"blurClasses\" :style=\"blurStyles\" />\n\n <div class=\"position-absolute\" :style=\"spinWrapperStyles\">\n <slot name=\"overlay\" v-bind=\"spinnerAttrs\">\n <BSpinner v-if=\"!props.noSpinner\" v-bind=\"spinnerAttrs\" />\n </slot>\n </div>\n </component>\n </Transition>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport type {BOverlayProps} from '../../types/ComponentProps'\nimport {useDefaults} from '../../composables/useDefaults'\nimport BSpinner from '../BSpinner/BSpinner.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport {useRadiusElementClasses} from '../../composables/useRadiusElementClasses'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BgColorVariant} from '../../types/ColorTypes'\nimport {useFadeTransition} from '../../composables/useTransitions'\nimport type {BOverlayEmits, BOverlaySlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BOverlayProps>(), {\n bgColor: undefined,\n blur: '2px',\n fixed: false,\n noCenter: false,\n noFade: false,\n noSpinner: false,\n noWrap: false,\n opacity: 0.85,\n overlayTag: 'div',\n show: false,\n spinnerSmall: false,\n spinnerType: 'border',\n spinnerVariant: undefined,\n variant: 'light',\n wrapTag: 'div',\n zIndex: 10,\n // RadiusElementExtendables props\n rounded: false,\n roundedBottom: undefined,\n roundedEnd: undefined,\n roundedStart: undefined,\n roundedTop: undefined,\n // End RadiusElementExtendables props\n})\nconst props = useDefaults(_props, 'BOverlay')\nconst emit = defineEmits<BOverlayEmits>()\ndefineSlots<BOverlaySlots>()\n\nconst positionStyles = {top: 0, left: 0, bottom: 0, right: 0} as const\n\nconst fadeTransitions = useFadeTransition(() => !props.noFade)\n\nconst radiusElementClasses = useRadiusElementClasses(() => ({\n rounded: props.rounded,\n roundedTop: props.roundedTop,\n roundedBottom: props.roundedBottom,\n roundedStart: props.roundedStart,\n roundedEnd: props.roundedEnd,\n}))\n\nconst computedAriaBusy = computed(() => (props.show ? true : null))\n\nconst spinnerAttrs = computed(() => ({\n type: props.spinnerType,\n variant: props.spinnerVariant,\n small: props.spinnerSmall,\n}))\n\nconst overlayStyles = computed(() => ({\n ...positionStyles,\n zIndex: props.zIndex || 10,\n}))\n\nconst overlayClasses = computed(() => ({\n 'position-absolute': !props.noWrap || !props.fixed,\n 'position-fixed': props.noWrap && props.fixed,\n}))\n\nconst colorClasses = useColorVariantClasses(\n computed(() => ({\n bgVariant: props.variant !== null && !props.bgColor ? (props.variant as BgColorVariant) : null,\n }))\n)\nconst blurClasses = computed(() => [colorClasses.value, radiusElementClasses.value])\n\nconst blurStyles = computed(() => ({\n ...positionStyles,\n opacity: props.opacity,\n backgroundColor: props.bgColor || undefined,\n backdropFilter:\n props.blur && !props.bgColor && (props.variant === 'white' || props.variant === 'transparent')\n ? `blur(${props.blur})`\n : undefined,\n}))\n\nconst spinWrapperStyles = computed(() =>\n props.noCenter\n ? positionStyles\n : {\n top: '50%',\n left: '50%',\n transform: 'translateX(-50%) translateY(-50%)',\n }\n)\n</script>\n"],"mappings":"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"}