bootstrap-vue-next
Version:
BootstrapVueNext is an early and lovely component library for Vue 3 & Nuxt 3 based on Bootstrap 5 and Typescript.
1 lines • 21.9 kB
Source Map (JSON)
{"version":3,"file":"index-C-NV_5Mj.mjs","sources":["../src/components/BToast/BToast.vue","../src/composables/useToast/index.ts"],"sourcesContent":["<template>\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"!!modelValue || props.visible\"\n >\n <div\n v-show=\"isToastVisible\"\n :id=\"props.id\"\n ref=\"_element\"\n class=\"toast\"\n :class=\"[props.toastClass, computedClasses]\"\n tabindex=\"0\"\n style=\"display: block\"\n :role=\"!isToastVisible ? undefined : props.isStatus ? 'status' : 'alert'\"\n :aria-live=\"!isToastVisible ? undefined : props.isStatus ? 'polite' : 'assertive'\"\n :aria-atomic=\"!isToastVisible ? undefined : true\"\n >\n <component\n :is=\"props.headerTag\"\n v-if=\"contentShowing && (slots.title || props.title)\"\n class=\"toast-header\"\n :class=\"props.headerClass\"\n >\n <slot name=\"title\" v-bind=\"sharedSlots\">\n <strong>\n {{ props.title }}\n </strong>\n </slot>\n <template v-if=\"!props.noCloseButton\">\n <BButton\n v-if=\"slots.close || props.closeContent\"\n :class=\"[props.closeClass]\"\n class=\"ms-auto\"\n :variant=\"props.closeVariant\"\n @click.stop.prevent=\"hide('close')\"\n >\n <slot name=\"close\" v-bind=\"sharedSlots\">\n {{ props.closeContent }}\n </slot>\n </BButton>\n <BCloseButton\n v-else\n :aria-label=\"props.closeLabel\"\n class=\"ms-auto\"\n :class=\"[props.closeClass]\"\n @click.stop.prevent=\"hide('close')\"\n />\n </template>\n <!-- <BCloseButton class=\"ms-auto\" @click=\"hide('close')\" /> -->\n </component>\n <template v-if=\"contentShowing && (slots.default || props.body)\">\n <div class=\"d-flex\">\n <component\n :is=\"computedTag\"\n class=\"toast-body\"\n :class=\"props.bodyClass\"\n v-bind=\"computedLinkProps\"\n @click=\"computedLink ? hide() : () => {}\"\n >\n <slot v-bind=\"sharedSlots\">\n {{ props.body }}\n </slot>\n </component>\n\n <template v-if=\"!props.noCloseButton && !(slots.title || props.title)\">\n <BButton\n v-if=\"slots.close || props.closeContent\"\n :class=\"[props.closeClass]\"\n class=\"ms-auto btn-close-custom\"\n :variant=\"props.closeVariant\"\n @click.stop.prevent=\"hide('close')\"\n >\n <slot name=\"close\" v-bind=\"sharedSlots\">\n {{ props.closeContent }}\n </slot>\n </BButton>\n <BCloseButton\n v-else\n :aria-label=\"props.closeLabel\"\n class=\"ms-auto btn-close-custom\"\n :class=\"[props.closeClass]\"\n @click.stop.prevent=\"hide('close')\"\n />\n </template>\n </div>\n </template>\n <BProgress\n v-if=\"typeof modelValue === 'number' && !props.noProgress\"\n :animated=\"props.progressProps?.animated\"\n :precision=\"props.progressProps?.precision\"\n :show-progress=\"props.progressProps?.showProgress\"\n :show-value=\"props.progressProps?.showValue\"\n :striped=\"props.progressProps?.striped\"\n :variant=\"props.progressProps?.variant\"\n :max=\"modelValue\"\n :value=\"remainingMs\"\n height=\"4px\"\n />\n </div>\n </Transition>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, type EmitFn, useTemplateRef, watch, watchEffect} from 'vue'\nimport {useBLinkHelper} from '../../composables/useBLinkHelper'\nimport type {BToastProps} from '../../types/ComponentProps'\nimport type {BToastEmits} from '../../types/ComponentEmits'\nimport type {BToastSlots, ShowHideSlotsData} from '../../types/ComponentSlots'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport BLink from '../BLink/BLink.vue'\nimport BProgress from '../BProgress/BProgress.vue'\nimport {useCountdown} from '../../composables/useCountdown'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useCountdownHover} from '../../composables/useCountdownHover'\nimport {useId} from '../../composables/useId'\nimport {useShowHide} from '../../composables/useShowHide'\n\nconst _props = withDefaults(defineProps<Omit<BToastProps, 'modelValue'>>(), {\n bgVariant: null,\n body: undefined,\n bodyClass: undefined,\n closeClass: undefined,\n closeContent: undefined,\n closeLabel: 'Close',\n closeVariant: 'secondary',\n headerClass: undefined,\n headerTag: 'div',\n id: undefined,\n initialAnimation: false,\n interval: 'requestAnimationFrame',\n isStatus: false,\n lazy: false,\n noCloseButton: false,\n noFade: false,\n noHoverPause: false,\n noProgress: false,\n noResumeOnHoverLeave: false,\n progressProps: undefined,\n unmountLazy: false,\n showOnPause: true,\n show: false,\n solid: false,\n textVariant: null,\n title: undefined,\n toastClass: undefined,\n transProps: undefined,\n visible: false,\n // Link props\n // All others use defaults\n noRel: undefined,\n active: undefined,\n activeClass: undefined,\n disabled: undefined,\n exactActiveClass: undefined,\n href: undefined,\n icon: undefined,\n opacity: undefined,\n opacityHover: undefined,\n stretched: false,\n rel: undefined,\n replace: undefined,\n routerComponentName: undefined,\n target: undefined,\n to: undefined,\n underlineOffset: undefined,\n underlineOffsetHover: undefined,\n underlineOpacity: undefined,\n underlineOpacityHover: undefined,\n underlineVariant: undefined,\n variant: undefined,\n // End link props\n})\nconst props = useDefaults(_props, 'BToast')\nconst emit = defineEmits<BToastEmits>()\nconst slots = defineSlots<BToastSlots>()\n\nconst element = useTemplateRef('_element')\n\nconst modelValue = defineModel<Exclude<BToastProps['modelValue'], undefined>>({default: false})\nconst {computedLink, computedLinkProps} = useBLinkHelper(props)\n\nconst computedId = useId(() => props.id, 'toast')\n\nconst {\n showRef,\n renderRef,\n hide,\n toggle,\n show,\n buildTriggerableEvent,\n computedNoAnimation,\n isVisible,\n transitionProps,\n contentShowing,\n} = useShowHide(modelValue, props, emit as EmitFn, element, computedId)\n\n// TODO solid is never used\nconst countdownLength = computed(() =>\n typeof modelValue.value === 'boolean' ? 0 : modelValue.value\n)\n\nconst {\n isActive,\n pause,\n restart,\n resume,\n stop,\n isPaused,\n value: remainingMs,\n} = useCountdown(countdownLength, props.interval, {\n immediate: typeof modelValue.value === 'number' && !!modelValue.value,\n})\nuseCountdownHover(\n element,\n {\n noHoverPause: () => props.noHoverPause || typeof modelValue.value !== 'number',\n noResumeOnHoverLeave: () => props.noResumeOnHoverLeave || typeof modelValue.value !== 'number',\n modelValueIgnoresHover: () => typeof modelValue.value === 'boolean',\n },\n {pause, resume}\n)\n\nwatchEffect(() => {\n emit('close-countdown', remainingMs.value)\n})\n\nconst computedTag = computed(() => (computedLink.value ? BLink : 'div'))\n\nconst isToastVisible = computed(\n () => showRef.value || isActive.value || (props.showOnPause && isPaused.value)\n)\n\nconst colorClasses = useColorVariantClasses(props)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n show: isVisible.value,\n fade: !computedNoAnimation.value,\n },\n])\n\nwatch(modelValue, (newValue, oldValue) => {\n if (typeof newValue === 'number' && newValue > 0) {\n const event = buildTriggerableEvent('show', {cancelable: true, trigger: 'model'})\n emit('show', event)\n if (event.defaultPrevented) {\n emit('show-prevented', buildTriggerableEvent('show-prevented'))\n } else {\n restart()\n }\n }\n if (typeof newValue === 'number' && newValue === 0) {\n stop()\n }\n if (newValue === false && typeof oldValue === 'number' && oldValue > 0) {\n stop()\n }\n})\n\n// isActive in the composable will cause the toast to hide when the countdown is done\nwatch(isActive, (newValue) => {\n if (newValue === false && isPaused.value === false) {\n hide()\n modelValue.value = 0\n stop()\n }\n})\nconst sharedSlots = computed<ShowHideSlotsData>(() => ({\n toggle,\n show,\n hide,\n id: computedId.value,\n visible: showRef.value,\n active: isActive.value,\n}))\n\ndefineExpose({\n show,\n hide,\n toggle,\n pause,\n restart,\n resume,\n stop,\n})\n</script>\n","import {\n inject,\n isReadonly,\n isRef,\n markRaw,\n onScopeDispose,\n type Ref,\n toRef,\n toValue,\n watch,\n} from 'vue'\nimport {orchestratorRegistryKey} from '../../utils/keys'\nimport type {ContainerPosition} from '../../types/Alignment'\nimport type {\n OrchestratorCreateOptions,\n PromiseWithComponent,\n ToastOrchestratorArrayValue,\n ToastOrchestratorCreateParam,\n ToastOrchestratorParam,\n} from '../../types/ComponentOrchestratorTypes'\nimport {buildPromise} from '../orchestratorShared'\nimport {BToast} from '../../components'\n\nconst posDefault: ContainerPosition = 'top-end'\n\nexport const useToast = () => {\n const orchestratorRegistry = inject(orchestratorRegistryKey)\n if (!orchestratorRegistry) {\n throw new Error(\n 'useToast() must be called within setup(), and BApp, useRegistry or plugin must be installed/provided.'\n )\n }\n\n const {store, _isToastAppend, _isOrchestratorInstalled} = orchestratorRegistry\n\n /**\n * @returns {PromiseWithComponent<typeof BToast, ToastOrchestratorParam>} Returns a promise object with methods to control the toast (show, hide, toggle, get, set, destroy)\n */\n const create = (\n obj: ToastOrchestratorCreateParam = {},\n options: OrchestratorCreateOptions = {}\n ): PromiseWithComponent<typeof BToast, ToastOrchestratorParam> => {\n if (!_isOrchestratorInstalled.value) {\n throw new Error(\n 'The BApp or BOrchestrator component must be mounted to use the toast composable'\n )\n }\n\n const resolvedProps = toRef(obj)\n\n const _self = resolvedProps.value?.id || Symbol('Toast controller')\n const promise = buildPromise<\n typeof BToast,\n ToastOrchestratorParam,\n ToastOrchestratorArrayValue\n >(_self, store as Ref<ToastOrchestratorArrayValue[]>)\n\n promise.stop = watch(\n resolvedProps,\n (_newValue) => {\n const newValue = {...toValue(_newValue)}\n const previousIndex = store.value.findIndex((el) => el._self === _self)\n const previous =\n previousIndex === -1\n ? {_component: markRaw(BToast)}\n : (store.value[previousIndex] as ToastOrchestratorArrayValue)\n const v: ToastOrchestratorArrayValue = {\n ...previous,\n type: 'toast',\n _self,\n promise,\n options,\n }\n if (newValue.props) {\n Object.assign(v, newValue.props)\n newValue.props = undefined\n }\n if (newValue.pos) {\n v.position = newValue.pos\n newValue.pos = undefined\n }\n for (const key in newValue) {\n if (key.startsWith('on')) {\n v[key as keyof ToastOrchestratorCreateParam] =\n newValue[key as keyof ToastOrchestratorCreateParam]\n } else if (key === 'component' && newValue.component) {\n v._component = markRaw(newValue.component)\n } else if (key === 'slots' && newValue.slots) {\n v.slots = markRaw(newValue.slots)\n } else {\n v[key as keyof ToastOrchestratorCreateParam] = toValue(\n newValue[key as keyof ToastOrchestratorCreateParam]\n )\n }\n }\n v.position = v.position || posDefault\n v.modelValue = v.modelValue ?? 5000\n v['onUpdate:modelValue'] = (val: boolean) => {\n newValue['onUpdate:modelValue']?.(val)\n const {modelValue} = toValue(obj)\n if (isRef(obj) && !isRef(modelValue)) obj.value.modelValue = val\n if (isRef(modelValue) && !isReadonly(modelValue)) {\n ;(modelValue as Ref<ToastOrchestratorArrayValue['modelValue']>).value = val\n }\n if (v.modelValue !== val) {\n const toast = store.value.find((el) => el._self === _self)\n if (toast) {\n toast.modelValue = val\n }\n }\n }\n if (previousIndex === -1) {\n if (\n resolvedProps.value?.appendToast !== undefined\n ? resolvedProps.value.appendToast\n : _isToastAppend.value\n ) {\n store.value.push(v)\n } else {\n store.value.unshift(v)\n }\n } else {\n store.value.splice(previousIndex, 1, v)\n }\n },\n {\n deep: true,\n immediate: true,\n }\n )\n onScopeDispose(() => {\n const toast = store.value.find((el) => el._self === _self)\n if (toast) {\n toast.promise.value.destroy?.()\n }\n }, true)\n return promise.value\n }\n\n /*\n * @deprecated The `show` method is deprecated. Use the `create` method instead.\n */\n const show = (\n obj: ToastOrchestratorCreateParam = {}\n ): PromiseWithComponent<typeof BToast, ToastOrchestratorParam> => {\n // eslint-disable-next-line no-console\n console.warn(\n '[BootstrapVueNext] useToast: The `show` method is deprecated. Use the `create` method instead.'\n )\n return create(obj)\n }\n\n return {\n _isToastAppend,\n _isOrchestratorInstalled,\n store,\n create,\n show,\n }\n}\n\n/**\n * @deprecated use useToast() instead.\n * @returns {ReturnType<typeof useToast>} The toast controller\n */\nexport const useToastController = useToast\n"],"names":["_useSlots","_useModel","BLink","_unref","_createBlock","_Transition","_mergeProps","_createElementVNode","_resolveDynamicComponent","_normalizeClass","_renderSlot","_normalizeProps","_guardReactiveProps","_toDisplayString","_createElementBlock","_Fragment","_createTextVNode","BCloseButton","_openBlock","BProgress","BToast"],"mappings":"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"}