bootstrap-vue-next 0.26.19 → 0.26.21

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.
Files changed (48) hide show
  1. package/dist/{BFormTags.vue_vue_type_script_setup_true_lang-BMSOTJDz.mjs → BFormTags.vue_vue_type_script_setup_true_lang-FWDxfiLi.mjs} +3 -2
  2. package/dist/{BFormTags.vue_vue_type_script_setup_true_lang-BMSOTJDz.mjs.map → BFormTags.vue_vue_type_script_setup_true_lang-FWDxfiLi.mjs.map} +1 -1
  3. package/dist/{BFormTags.vue_vue_type_script_setup_true_lang-DLnc_rCV.js → BFormTags.vue_vue_type_script_setup_true_lang-YcsaC7z0.js} +2 -2
  4. package/dist/{BFormTags.vue_vue_type_script_setup_true_lang-DLnc_rCV.js.map → BFormTags.vue_vue_type_script_setup_true_lang-YcsaC7z0.js.map} +1 -1
  5. package/dist/{BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-1f_TuBw6.js → BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-BIUGzj9a.js} +2 -2
  6. package/dist/{BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-1f_TuBw6.js.map → BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-BIUGzj9a.js.map} +1 -1
  7. package/dist/{BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-DpmTeaLy.mjs → BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-BjEhw9SS.mjs} +2 -2
  8. package/dist/{BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-DpmTeaLy.mjs.map → BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-BjEhw9SS.mjs.map} +1 -1
  9. package/dist/BTable.vue_vue_type_script_setup_true_lang-BO8_v2Zs.js +2 -0
  10. package/dist/BTable.vue_vue_type_script_setup_true_lang-BO8_v2Zs.js.map +1 -0
  11. package/dist/{BTable.vue_vue_type_script_setup_true_lang-CjyYEhkw.mjs → BTable.vue_vue_type_script_setup_true_lang-utb_UzeE.mjs} +13 -6
  12. package/dist/BTable.vue_vue_type_script_setup_true_lang-utb_UzeE.mjs.map +1 -0
  13. package/dist/BTableSimple.vue_vue_type_script_setup_true_lang-BGc-Vbfw.js +2 -0
  14. package/dist/BTableSimple.vue_vue_type_script_setup_true_lang-BGc-Vbfw.js.map +1 -0
  15. package/dist/{BTableSimple.vue_vue_type_script_setup_true_lang-B4MDRM8j.mjs → BTableSimple.vue_vue_type_script_setup_true_lang-Dbrg2rgZ.mjs} +5 -2
  16. package/dist/BTableSimple.vue_vue_type_script_setup_true_lang-Dbrg2rgZ.mjs.map +1 -0
  17. package/dist/bootstrap-vue-next.mjs +5 -5
  18. package/dist/bootstrap-vue-next.umd.js +1 -1
  19. package/dist/{index-Bbk_WOz8.js → index-CMYN53hw.js} +2 -2
  20. package/dist/index-CMYN53hw.js.map +1 -0
  21. package/dist/{index-1NJImnAX.mjs → index-o_fPDGZ9.mjs} +5 -5
  22. package/dist/{index-1NJImnAX.mjs.map → index-o_fPDGZ9.mjs.map} +1 -1
  23. package/dist/src/components/BAvatar/BAvatar.vue.d.mts +1 -1
  24. package/dist/src/components/BAvatar/BAvatar.vue.d.ts +1 -1
  25. package/dist/src/components/BAvatar/BAvatarGroup.vue.d.mts +1 -1
  26. package/dist/src/components/BAvatar/BAvatarGroup.vue.d.ts +1 -1
  27. package/dist/src/components/BFormTags/BFormTags.vue.d.mts +1 -0
  28. package/dist/src/components/BFormTags/BFormTags.vue.d.ts +1 -0
  29. package/dist/src/components/BFormTags/index.mjs +1 -1
  30. package/dist/src/components/BFormTags/index.umd.js +1 -1
  31. package/dist/src/components/BPlaceholder/index.mjs +1 -1
  32. package/dist/src/components/BPlaceholder/index.umd.js +1 -1
  33. package/dist/src/components/BTable/index.mjs +2 -2
  34. package/dist/src/components/BTable/index.umd.js +1 -1
  35. package/dist/src/components/index.mjs +4 -4
  36. package/dist/src/components/index.umd.js +1 -1
  37. package/dist/src/types/TableTypes.d.mts +0 -1
  38. package/dist/src/types/TableTypes.d.ts +0 -1
  39. package/dist/src/types/index.d.mts +2 -1
  40. package/dist/src/types/index.d.ts +2 -1
  41. package/package.json +1 -1
  42. package/dist/BTable.vue_vue_type_script_setup_true_lang-CjyYEhkw.mjs.map +0 -1
  43. package/dist/BTable.vue_vue_type_script_setup_true_lang-xQALai_U.js +0 -2
  44. package/dist/BTable.vue_vue_type_script_setup_true_lang-xQALai_U.js.map +0 -1
  45. package/dist/BTableSimple.vue_vue_type_script_setup_true_lang-B4MDRM8j.mjs.map +0 -1
  46. package/dist/BTableSimple.vue_vue_type_script_setup_true_lang-C6BcFYxA.js +0 -2
  47. package/dist/BTableSimple.vue_vue_type_script_setup_true_lang-C6BcFYxA.js.map +0 -1
  48. package/dist/index-Bbk_WOz8.js.map +0 -1
@@ -328,7 +328,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
328
328
  element: input,
329
329
  focus: () => {
330
330
  focused.value = true;
331
- }
331
+ },
332
+ inputValue
332
333
  });
333
334
  return (_ctx, _cache) => {
334
335
  return openBlock(), createElementBlock("div", {
@@ -451,4 +452,4 @@ export {
451
452
  _sfc_main as _,
452
453
  _sfc_main$1 as a
453
454
  };
454
- //# sourceMappingURL=BFormTags.vue_vue_type_script_setup_true_lang-BMSOTJDz.mjs.map
455
+ //# sourceMappingURL=BFormTags.vue_vue_type_script_setup_true_lang-FWDxfiLi.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"BFormTags.vue_vue_type_script_setup_true_lang-BMSOTJDz.mjs","sources":["../src/components/BFormTags/BFormTag.vue","../src/components/BFormTags/BFormTags.vue"],"sourcesContent":["<template>\n <component\n :is=\"props.tag\"\n :id=\"computedId\"\n :title=\"tagText\"\n class=\"badge b-form-tag d-inline-flex align-items-center mw-100\"\n :class=\"computedClasses\"\n :aria-labelledby=\"taglabelId\"\n >\n <span :id=\"taglabelId\" class=\"b-form-tag-content flex-grow-1 text-truncate\">\n <slot>{{ tagText }}</slot>\n </span>\n <BCloseButton\n v-if=\"!props.disabled && !props.noRemove\"\n aria-keyshortcuts=\"Delete\"\n :aria-label=\"props.removeLabel\"\n class=\"b-form-tag-remove\"\n :aria-describedby=\"taglabelId\"\n :aria-controls=\"props.id\"\n @click=\"emit('remove', tagText)\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormTagProps} from '../../types/ComponentProps'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\n\nconst _props = withDefaults(defineProps<BFormTagProps>(), {\n disabled: false,\n id: undefined,\n noRemove: false,\n pill: false,\n removeLabel: 'Remove tag',\n tag: 'span',\n title: undefined,\n variant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTag')\n\nconst emit = defineEmits<{\n remove: [value: string]\n}>()\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id)\n\nconst tagText = computed(\n () => ((slots.default?.({})[0].children ?? '').toString() || props.title) ?? ''\n)\nconst taglabelId = computed(() => `${computedId.value}taglabel__`)\n\nconst colorClasses = useColorVariantClasses(props)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n 'rounded-pill': props.pill,\n 'disabled': props.disabled,\n },\n])\n</script>\n","<template>\n <div\n :id=\"computedId\"\n class=\"b-form-tags form-control h-auto\"\n :class=\"computedClasses\"\n role=\"group\"\n tabindex=\"-1\"\n @focusin=\"onFocusin\"\n @focusout=\"emit('focusout', $event)\"\n >\n <output\n :id=\"`${computedId}selected_tags__`\"\n class=\"visually-hidden\"\n :for=\"_inputId\"\n :aria-live=\"focused ? 'polite' : 'off'\"\n aria-atomic=\"true\"\n aria-relevant=\"additions text\"\n >{{ tags.join(', ') }}</output\n >\n <div\n :id=\"`${computedId}removed_tags__`\"\n role=\"status\"\n :aria-live=\"focused ? 'assertive' : 'off'\"\n aria-atomic=\"true\"\n class=\"visually-hidden\"\n >\n ({{ props.tagRemovedLabel }}) {{ lastRemovedTag }}\n </div>\n\n <slot v-bind=\"slotAttrs\">\n <ul\n :id=\"`${computedId}tag_list__`\"\n class=\"b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center\"\n >\n <template v-for=\"(tag, index) in tags\" :key=\"index\">\n <slot\n name=\"tag\"\n :tag=\"tag\"\n :tag-class=\"props.tagClass\"\n :tag-variant=\"props.tagVariant\"\n :tag-pills=\"props.tagPills\"\n :remove-tag=\"removeTag\"\n >\n <BFormTag\n :key=\"tag\"\n :class=\"props.tagClass\"\n tag=\"li\"\n :variant=\"props.tagVariant\"\n :pill=\"props.tagPills\"\n @remove=\"removeTag\"\n >{{ tag }}</BFormTag\n >\n </slot>\n </template>\n <li\n role=\"none\"\n aria-live=\"off\"\n class=\"b-from-tags-field flex-grow-1\"\n :aria-controls=\"`${computedId}tag_list__`\"\n >\n <div role=\"group\" class=\"d-flex\">\n <input\n :id=\"_inputId\"\n ref=\"_input\"\n :disabled=\"props.disabled\"\n :value=\"inputValue\"\n :type=\"props.inputType\"\n :placeholder=\"props.placeholder\"\n class=\"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0\"\n style=\"outline: currentcolor none 0px; min-width: 5rem\"\n v-bind=\"props.inputAttrs\"\n :form=\"props.form\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n <button\n v-if=\"disableAddButton\"\n type=\"button\"\n class=\"btn b-form-tags-button py-0\"\n :class=\"[\n inputClass,\n {\n [`btn-${props.addButtonVariant}`]: props.addButtonVariant !== null,\n 'disabled invisible': inputValue.length === 0,\n },\n ]\"\n style=\"font-size: 90%\"\n :disabled=\"props.disabled || inputValue.length === 0 || isLimitReached\"\n @click=\"addTag(inputValue)\"\n >\n <slot name=\"add-button-text\">{{ props.addButtonText }}</slot>\n </button>\n </div>\n </li>\n </ul>\n <div aria-live=\"polite\" aria-atomic=\"true\">\n <div v-if=\"isInvalid\" class=\"d-block invalid-feedback\">\n {{ props.invalidTagText }}: {{ inputValue }}\n </div>\n <small v-if=\"isDuplicate\" class=\"form-text text-body-secondary\"\n >{{ props.duplicateTagText }}: {{ inputValue }}</small\n >\n <small v-if=\"tags.length === props.limit\" class=\"form-text text-body-secondary\">\n {{ props.limitTagsText }}</small\n >\n </div>\n </slot>\n <template v-if=\"props.name\">\n <input\n v-for=\"(tag, index) in tags\"\n :key=\"index\"\n type=\"hidden\"\n :name=\"props.name\"\n :value=\"tag\"\n />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, syncRef, useFocus, useToNumber} from '@vueuse/core'\nimport {computed, ref, useTemplateRef} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormTagsProps} from '../../types/ComponentProps'\nimport {escapeRegExpChars} from '../../utils/stringUtils'\nimport BFormTag from './BFormTag.vue'\nimport type {ClassValue} from '../../types/AnyValuedAttributes'\nimport type {ColorVariant} from '../../types/ColorTypes'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\n\nconst _props = withDefaults(defineProps<Omit<BFormTagsProps, 'modelValue'>>(), {\n addButtonText: 'Add',\n addButtonVariant: 'outline-secondary',\n addOnChange: false,\n autofocus: false,\n disabled: false,\n duplicateTagText: 'Duplicate tag(s)',\n form: undefined,\n inputAttrs: undefined,\n inputClass: undefined,\n inputId: undefined,\n inputType: 'text',\n invalidTagText: 'Invalid tag(s)',\n limit: undefined,\n limitTagsText: 'Tag limit reached',\n name: undefined,\n noAddOnEnter: false,\n noOuterFocus: false,\n noTagRemove: false,\n placeholder: 'Add tag...',\n removeOnDelete: false,\n required: false,\n separator: undefined,\n size: 'md',\n state: null,\n tagClass: undefined,\n tagPills: false,\n tagRemoveLabel: undefined,\n tagRemovedLabel: 'Tag removed',\n tagValidator: () => true,\n tagVariant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTags')\n\nconst emit = defineEmits<{\n 'blur': [value: FocusEvent]\n 'focus': [value: FocusEvent]\n 'focusin': [value: FocusEvent]\n 'focusout': [value: FocusEvent]\n 'tag-state': [...args: string[][]]\n}>()\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'add-button-text'?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'default'?: (props: typeof slotAttrs.value) => any\n 'tag'?: (props: {\n tag: string\n tagClass: ClassValue\n tagVariant: ColorVariant | null\n tagPills: boolean\n removeTag: (tag?: string) => void\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }) => any\n}>()\n\nconst modelValue = defineModel<Exclude<BFormTagsProps['modelValue'], undefined>>({\n default: () => [],\n})\n\nconst computedId = useId()\n\nconst limitNumber = useToNumber(() => props.limit ?? NaN)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef<HTMLInputElement>('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst _inputId = computed(() => props.inputId || `${computedId.value}input__`)\nconst tags = ref<string[]>([...modelValue.value])\nconst inputValue = ref<string>('')\nconst shouldRemoveOnDelete = ref<boolean>(modelValue.value.length > 0)\nconst lastRemovedTag = ref<string>('')\nconst validTags = ref<string[]>([])\nconst invalidTags = ref<string[]>([])\nconst duplicateTags = ref<string[]>([])\n\nsyncRef(modelValue, tags, {\n direction: 'ltr',\n transform: {\n ltr: (v) => [...v],\n },\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n [`form-control-${props.size}`]: props.size !== 'md',\n disabled: props.disabled,\n focus: focused.value,\n },\n])\n\nconst isDuplicate = computed(() => tags.value.includes(inputValue.value))\nconst isInvalid = computed(() =>\n inputValue.value === '' ? false : !props.tagValidator(inputValue.value)\n)\nconst isLimitReached = computed(() => tags.value.length === limitNumber.value)\nconst disableAddButton = computed(() => !isInvalid.value && !isDuplicate.value)\n\nconst slotAttrs = computed(() => ({\n addButtonText: props.addButtonText,\n addButtonVariant: props.addButtonVariant,\n addTag,\n disableAddButton: disableAddButton.value,\n disabled: props.disabled,\n duplicateTagText: props.duplicateTagText,\n duplicateTags: duplicateTags.value,\n form: props.form,\n inputAttrs: {\n ...props.inputAttrs,\n disabled: props.disabled,\n form: props.form,\n id: _inputId.value,\n value: inputValue.value,\n },\n inputClass: props.inputClass,\n inputHandlers: {\n input: onInput,\n keydown: onKeydown,\n change: onChange,\n },\n inputId: _inputId.value,\n inputType: props.inputType,\n invalidTagText: props.invalidTagText,\n invalidTags: invalidTags.value,\n isDuplicate: isDuplicate.value,\n isInvalid: isInvalid.value,\n isLimitReached: isLimitReached.value,\n limitTagsText: props.limitTagsText,\n limit: limitNumber.value,\n noTagRemove: props.noTagRemove,\n placeholder: props.placeholder,\n removeTag,\n required: props.required,\n separator: props.separator,\n size: props.size,\n state: props.state,\n tagClass: props.tagClass,\n tagPills: props.tagPills,\n tagRemoveLabel: props.tagRemoveLabel,\n tagVariant: props.tagVariant,\n tags: tags.value,\n}))\n\nconst onFocusin = (e: Readonly<FocusEvent>): void => {\n if (props.disabled) {\n const target = e.target as HTMLDivElement\n target.blur()\n return\n }\n\n emit('focusin', e)\n}\n\nconst onFocus = (e: Readonly<FocusEvent>): void => {\n if (props.disabled || props.noOuterFocus) {\n return\n }\n\n focused.value = true\n emit('focus', e)\n}\n\nconst onBlur = (e: Readonly<FocusEvent>): void => {\n focused.value = false\n emit('blur', e)\n}\n\nconst onInput = (e: Readonly<Event> | string): void => {\n const value = typeof e === 'string' ? e : (e.target as HTMLInputElement).value\n\n shouldRemoveOnDelete.value = false\n\n if (props.separator?.includes(value.charAt(0)) && value.length > 0) {\n if (input.value) {\n input.value.value = ''\n }\n return\n }\n\n inputValue.value = value\n\n if (props.separator?.includes(value.charAt(value.length - 1))) {\n addTag(value.slice(0, value.length - 1))\n return\n }\n\n validTags.value = props.tagValidator(value) && !isDuplicate.value ? [value] : []\n invalidTags.value = props.tagValidator(value) ? [] : [value]\n duplicateTags.value = isDuplicate.value ? [value] : []\n\n emit('tag-state', validTags.value, invalidTags.value, duplicateTags.value)\n}\n\nconst onChange = (e: Readonly<Event>): void => {\n if (props.addOnChange) {\n onInput(e)\n\n if (!isDuplicate.value) {\n addTag(inputValue.value)\n }\n }\n}\n\nconst onKeydown = (e: Readonly<KeyboardEvent>): void => {\n if (e.key === 'Enter' && !props.noAddOnEnter) {\n addTag(inputValue.value)\n return\n }\n\n if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n props.removeOnDelete &&\n inputValue.value === '' &&\n shouldRemoveOnDelete.value &&\n tags.value.length > 0\n ) {\n removeTag(tags.value[tags.value.length - 1])\n } else {\n shouldRemoveOnDelete.value = true\n }\n}\n\nonKeyStroke(onKeydown, {target: input})\n\nconst separator = computed(() => {\n if (!props.separator) {\n return\n }\n\n return typeof props.separator === 'string' ? props.separator : props.separator.join('')\n})\n\nconst separatorRegExp = computed(() => {\n if (!separator.value) {\n return\n }\n\n return new RegExp(`[${escapeRegExpChars(separator.value)}]+`)\n})\n\nconst addTag = (tag?: string): void => {\n tag = (tag ?? inputValue.value).trim()\n\n const newTags = separatorRegExp.value\n ? tag.split(separatorRegExp.value).map((t) => t.trim())\n : [tag]\n const validTags: string[] = []\n\n for (const newTag of newTags) {\n if (newTag === '' || isDuplicate.value || !props.tagValidator(newTag)) {\n continue\n }\n\n if (limitNumber.value && isLimitReached.value) {\n break\n }\n\n validTags.push(newTag)\n }\n\n const newValue = [...modelValue.value, ...validTags]\n inputValue.value = ''\n shouldRemoveOnDelete.value = true\n modelValue.value = newValue\n focused.value = true\n}\n\nconst removeTag = (tag?: string): void => {\n const tagIndex = tags.value.indexOf(tag?.toString() ?? '')\n if (tagIndex === -1) return\n lastRemovedTag.value = tags.value.splice(tagIndex, 1).toString()\n modelValue.value = tags.value\n}\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n})\n</script>\n"],"names":["_useSlots","_useModel","validTags"],"mappings":"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"}
1
+ {"version":3,"file":"BFormTags.vue_vue_type_script_setup_true_lang-FWDxfiLi.mjs","sources":["../src/components/BFormTags/BFormTag.vue","../src/components/BFormTags/BFormTags.vue"],"sourcesContent":["<template>\n <component\n :is=\"props.tag\"\n :id=\"computedId\"\n :title=\"tagText\"\n class=\"badge b-form-tag d-inline-flex align-items-center mw-100\"\n :class=\"computedClasses\"\n :aria-labelledby=\"taglabelId\"\n >\n <span :id=\"taglabelId\" class=\"b-form-tag-content flex-grow-1 text-truncate\">\n <slot>{{ tagText }}</slot>\n </span>\n <BCloseButton\n v-if=\"!props.disabled && !props.noRemove\"\n aria-keyshortcuts=\"Delete\"\n :aria-label=\"props.removeLabel\"\n class=\"b-form-tag-remove\"\n :aria-describedby=\"taglabelId\"\n :aria-controls=\"props.id\"\n @click=\"emit('remove', tagText)\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormTagProps} from '../../types/ComponentProps'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\n\nconst _props = withDefaults(defineProps<BFormTagProps>(), {\n disabled: false,\n id: undefined,\n noRemove: false,\n pill: false,\n removeLabel: 'Remove tag',\n tag: 'span',\n title: undefined,\n variant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTag')\n\nconst emit = defineEmits<{\n remove: [value: string]\n}>()\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id)\n\nconst tagText = computed(\n () => ((slots.default?.({})[0].children ?? '').toString() || props.title) ?? ''\n)\nconst taglabelId = computed(() => `${computedId.value}taglabel__`)\n\nconst colorClasses = useColorVariantClasses(props)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n 'rounded-pill': props.pill,\n 'disabled': props.disabled,\n },\n])\n</script>\n","<template>\n <div\n :id=\"computedId\"\n class=\"b-form-tags form-control h-auto\"\n :class=\"computedClasses\"\n role=\"group\"\n tabindex=\"-1\"\n @focusin=\"onFocusin\"\n @focusout=\"emit('focusout', $event)\"\n >\n <output\n :id=\"`${computedId}selected_tags__`\"\n class=\"visually-hidden\"\n :for=\"_inputId\"\n :aria-live=\"focused ? 'polite' : 'off'\"\n aria-atomic=\"true\"\n aria-relevant=\"additions text\"\n >{{ tags.join(', ') }}</output\n >\n <div\n :id=\"`${computedId}removed_tags__`\"\n role=\"status\"\n :aria-live=\"focused ? 'assertive' : 'off'\"\n aria-atomic=\"true\"\n class=\"visually-hidden\"\n >\n ({{ props.tagRemovedLabel }}) {{ lastRemovedTag }}\n </div>\n\n <slot v-bind=\"slotAttrs\">\n <ul\n :id=\"`${computedId}tag_list__`\"\n class=\"b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center\"\n >\n <template v-for=\"(tag, index) in tags\" :key=\"index\">\n <slot\n name=\"tag\"\n :tag=\"tag\"\n :tag-class=\"props.tagClass\"\n :tag-variant=\"props.tagVariant\"\n :tag-pills=\"props.tagPills\"\n :remove-tag=\"removeTag\"\n >\n <BFormTag\n :key=\"tag\"\n :class=\"props.tagClass\"\n tag=\"li\"\n :variant=\"props.tagVariant\"\n :pill=\"props.tagPills\"\n @remove=\"removeTag\"\n >{{ tag }}</BFormTag\n >\n </slot>\n </template>\n <li\n role=\"none\"\n aria-live=\"off\"\n class=\"b-from-tags-field flex-grow-1\"\n :aria-controls=\"`${computedId}tag_list__`\"\n >\n <div role=\"group\" class=\"d-flex\">\n <input\n :id=\"_inputId\"\n ref=\"_input\"\n :disabled=\"props.disabled\"\n :value=\"inputValue\"\n :type=\"props.inputType\"\n :placeholder=\"props.placeholder\"\n class=\"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0\"\n style=\"outline: currentcolor none 0px; min-width: 5rem\"\n v-bind=\"props.inputAttrs\"\n :form=\"props.form\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n <button\n v-if=\"disableAddButton\"\n type=\"button\"\n class=\"btn b-form-tags-button py-0\"\n :class=\"[\n inputClass,\n {\n [`btn-${props.addButtonVariant}`]: props.addButtonVariant !== null,\n 'disabled invisible': inputValue.length === 0,\n },\n ]\"\n style=\"font-size: 90%\"\n :disabled=\"props.disabled || inputValue.length === 0 || isLimitReached\"\n @click=\"addTag(inputValue)\"\n >\n <slot name=\"add-button-text\">{{ props.addButtonText }}</slot>\n </button>\n </div>\n </li>\n </ul>\n <div aria-live=\"polite\" aria-atomic=\"true\">\n <div v-if=\"isInvalid\" class=\"d-block invalid-feedback\">\n {{ props.invalidTagText }}: {{ inputValue }}\n </div>\n <small v-if=\"isDuplicate\" class=\"form-text text-body-secondary\"\n >{{ props.duplicateTagText }}: {{ inputValue }}</small\n >\n <small v-if=\"tags.length === props.limit\" class=\"form-text text-body-secondary\">\n {{ props.limitTagsText }}</small\n >\n </div>\n </slot>\n <template v-if=\"props.name\">\n <input\n v-for=\"(tag, index) in tags\"\n :key=\"index\"\n type=\"hidden\"\n :name=\"props.name\"\n :value=\"tag\"\n />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, syncRef, useFocus, useToNumber} from '@vueuse/core'\nimport {computed, ref, useTemplateRef} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormTagsProps} from '../../types/ComponentProps'\nimport {escapeRegExpChars} from '../../utils/stringUtils'\nimport BFormTag from './BFormTag.vue'\nimport type {ClassValue} from '../../types/AnyValuedAttributes'\nimport type {ColorVariant} from '../../types/ColorTypes'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\n\nconst _props = withDefaults(defineProps<Omit<BFormTagsProps, 'modelValue'>>(), {\n addButtonText: 'Add',\n addButtonVariant: 'outline-secondary',\n addOnChange: false,\n autofocus: false,\n disabled: false,\n duplicateTagText: 'Duplicate tag(s)',\n form: undefined,\n inputAttrs: undefined,\n inputClass: undefined,\n inputId: undefined,\n inputType: 'text',\n invalidTagText: 'Invalid tag(s)',\n limit: undefined,\n limitTagsText: 'Tag limit reached',\n name: undefined,\n noAddOnEnter: false,\n noOuterFocus: false,\n noTagRemove: false,\n placeholder: 'Add tag...',\n removeOnDelete: false,\n required: false,\n separator: undefined,\n size: 'md',\n state: null,\n tagClass: undefined,\n tagPills: false,\n tagRemoveLabel: undefined,\n tagRemovedLabel: 'Tag removed',\n tagValidator: () => true,\n tagVariant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTags')\n\nconst emit = defineEmits<{\n 'blur': [value: FocusEvent]\n 'focus': [value: FocusEvent]\n 'focusin': [value: FocusEvent]\n 'focusout': [value: FocusEvent]\n 'tag-state': [...args: string[][]]\n}>()\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'add-button-text'?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'default'?: (props: typeof slotAttrs.value) => any\n 'tag'?: (props: {\n tag: string\n tagClass: ClassValue\n tagVariant: ColorVariant | null\n tagPills: boolean\n removeTag: (tag?: string) => void\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }) => any\n}>()\n\nconst modelValue = defineModel<Exclude<BFormTagsProps['modelValue'], undefined>>({\n default: () => [],\n})\n\nconst computedId = useId()\n\nconst limitNumber = useToNumber(() => props.limit ?? NaN)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef<HTMLInputElement>('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst _inputId = computed(() => props.inputId || `${computedId.value}input__`)\nconst tags = ref<string[]>([...modelValue.value])\nconst inputValue = ref<string>('')\nconst shouldRemoveOnDelete = ref<boolean>(modelValue.value.length > 0)\nconst lastRemovedTag = ref<string>('')\nconst validTags = ref<string[]>([])\nconst invalidTags = ref<string[]>([])\nconst duplicateTags = ref<string[]>([])\n\nsyncRef(modelValue, tags, {\n direction: 'ltr',\n transform: {\n ltr: (v) => [...v],\n },\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n [`form-control-${props.size}`]: props.size !== 'md',\n disabled: props.disabled,\n focus: focused.value,\n },\n])\n\nconst isDuplicate = computed(() => tags.value.includes(inputValue.value))\nconst isInvalid = computed(() =>\n inputValue.value === '' ? false : !props.tagValidator(inputValue.value)\n)\nconst isLimitReached = computed(() => tags.value.length === limitNumber.value)\nconst disableAddButton = computed(() => !isInvalid.value && !isDuplicate.value)\n\nconst slotAttrs = computed(() => ({\n addButtonText: props.addButtonText,\n addButtonVariant: props.addButtonVariant,\n addTag,\n disableAddButton: disableAddButton.value,\n disabled: props.disabled,\n duplicateTagText: props.duplicateTagText,\n duplicateTags: duplicateTags.value,\n form: props.form,\n inputAttrs: {\n ...props.inputAttrs,\n disabled: props.disabled,\n form: props.form,\n id: _inputId.value,\n value: inputValue.value,\n },\n inputClass: props.inputClass,\n inputHandlers: {\n input: onInput,\n keydown: onKeydown,\n change: onChange,\n },\n inputId: _inputId.value,\n inputType: props.inputType,\n invalidTagText: props.invalidTagText,\n invalidTags: invalidTags.value,\n isDuplicate: isDuplicate.value,\n isInvalid: isInvalid.value,\n isLimitReached: isLimitReached.value,\n limitTagsText: props.limitTagsText,\n limit: limitNumber.value,\n noTagRemove: props.noTagRemove,\n placeholder: props.placeholder,\n removeTag,\n required: props.required,\n separator: props.separator,\n size: props.size,\n state: props.state,\n tagClass: props.tagClass,\n tagPills: props.tagPills,\n tagRemoveLabel: props.tagRemoveLabel,\n tagVariant: props.tagVariant,\n tags: tags.value,\n}))\n\nconst onFocusin = (e: Readonly<FocusEvent>): void => {\n if (props.disabled) {\n const target = e.target as HTMLDivElement\n target.blur()\n return\n }\n\n emit('focusin', e)\n}\n\nconst onFocus = (e: Readonly<FocusEvent>): void => {\n if (props.disabled || props.noOuterFocus) {\n return\n }\n\n focused.value = true\n emit('focus', e)\n}\n\nconst onBlur = (e: Readonly<FocusEvent>): void => {\n focused.value = false\n emit('blur', e)\n}\n\nconst onInput = (e: Readonly<Event> | string): void => {\n const value = typeof e === 'string' ? e : (e.target as HTMLInputElement).value\n\n shouldRemoveOnDelete.value = false\n\n if (props.separator?.includes(value.charAt(0)) && value.length > 0) {\n if (input.value) {\n input.value.value = ''\n }\n return\n }\n\n inputValue.value = value\n\n if (props.separator?.includes(value.charAt(value.length - 1))) {\n addTag(value.slice(0, value.length - 1))\n return\n }\n\n validTags.value = props.tagValidator(value) && !isDuplicate.value ? [value] : []\n invalidTags.value = props.tagValidator(value) ? [] : [value]\n duplicateTags.value = isDuplicate.value ? [value] : []\n\n emit('tag-state', validTags.value, invalidTags.value, duplicateTags.value)\n}\n\nconst onChange = (e: Readonly<Event>): void => {\n if (props.addOnChange) {\n onInput(e)\n\n if (!isDuplicate.value) {\n addTag(inputValue.value)\n }\n }\n}\n\nconst onKeydown = (e: Readonly<KeyboardEvent>): void => {\n if (e.key === 'Enter' && !props.noAddOnEnter) {\n addTag(inputValue.value)\n return\n }\n\n if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n props.removeOnDelete &&\n inputValue.value === '' &&\n shouldRemoveOnDelete.value &&\n tags.value.length > 0\n ) {\n removeTag(tags.value[tags.value.length - 1])\n } else {\n shouldRemoveOnDelete.value = true\n }\n}\n\nonKeyStroke(onKeydown, {target: input})\n\nconst separator = computed(() => {\n if (!props.separator) {\n return\n }\n\n return typeof props.separator === 'string' ? props.separator : props.separator.join('')\n})\n\nconst separatorRegExp = computed(() => {\n if (!separator.value) {\n return\n }\n\n return new RegExp(`[${escapeRegExpChars(separator.value)}]+`)\n})\n\nconst addTag = (tag?: string): void => {\n tag = (tag ?? inputValue.value).trim()\n\n const newTags = separatorRegExp.value\n ? tag.split(separatorRegExp.value).map((t) => t.trim())\n : [tag]\n const validTags: string[] = []\n\n for (const newTag of newTags) {\n if (newTag === '' || isDuplicate.value || !props.tagValidator(newTag)) {\n continue\n }\n\n if (limitNumber.value && isLimitReached.value) {\n break\n }\n\n validTags.push(newTag)\n }\n\n const newValue = [...modelValue.value, ...validTags]\n inputValue.value = ''\n shouldRemoveOnDelete.value = true\n modelValue.value = newValue\n focused.value = true\n}\n\nconst removeTag = (tag?: string): void => {\n const tagIndex = tags.value.indexOf(tag?.toString() ?? '')\n if (tagIndex === -1) return\n lastRemovedTag.value = tags.value.splice(tagIndex, 1).toString()\n modelValue.value = tags.value\n}\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n inputValue,\n})\n</script>\n"],"names":["_useSlots","_useModel","validTags"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("vue"),a=require("./index-CNL2tI0w.js"),t=require("./useDefaults-Bq2idhQU.js"),l=require("./stringUtils-BBcOJJJC.js"),o=require("./useId-BOa4n5pr.js"),u=require("./BCloseButton.vue_vue_type_script_setup_true_lang-BNiA4JXj.js"),r=require("./useColorVariantClasses-CE658Sm0.js"),i=require("./useStateClass-BePLKIel.js"),n=require("./index-BqHkgtNq.js"),d=["id"],s=e.defineComponent({__name:"BFormTag",props:{disabled:{type:Boolean,default:!1},id:{default:void 0},noRemove:{type:Boolean,default:!1},pill:{type:Boolean,default:!1},removeLabel:{default:"Remove tag"},tag:{default:"span"},title:{default:void 0},variant:{default:"secondary"}},emits:["remove"],setup(a,{emit:l}){const i=a,n=t.useDefaults(i,"BFormTag"),s=l,v=e.useSlots(),c=o.useId((()=>n.id)),f=e.computed((()=>{var e;return(((null==(e=v.default)?void 0:e.call(v,{})[0].children)??"").toString()||n.title)??""})),m=e.computed((()=>`${c.value}taglabel__`)),p=r.useColorVariantClasses(n),g=e.computed((()=>[p.value,{"rounded-pill":n.pill,disabled:n.disabled}]));return(a,t)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(n).tag),{id:e.unref(c),title:f.value,class:e.normalizeClass(["badge b-form-tag d-inline-flex align-items-center mw-100",g.value]),"aria-labelledby":m.value},{default:e.withCtx((()=>[e.createElementVNode("span",{id:m.value,class:"b-form-tag-content flex-grow-1 text-truncate"},[e.renderSlot(a.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(f.value),1)]))],8,d),e.unref(n).disabled||e.unref(n).noRemove?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(u._sfc_main,{key:0,"aria-keyshortcuts":"Delete","aria-label":e.unref(n).removeLabel,class:"b-form-tag-remove","aria-describedby":m.value,"aria-controls":e.unref(n).id,onClick:t[0]||(t[0]=e=>s("remove",f.value))},null,8,["aria-label","aria-describedby","aria-controls"]))])),_:3},8,["id","title","class","aria-labelledby"]))}}),v=["id"],c=["id","for","aria-live"],f=["id","aria-live"],m=["id"],p=["aria-controls"],g={role:"group",class:"d-flex"},y=["id","disabled","value","type","placeholder","form","required","aria-required"],b=["disabled"],B={"aria-live":"polite","aria-atomic":"true"},T={key:0,class:"d-block invalid-feedback"},x={key:1,class:"form-text text-body-secondary"},k={key:2,class:"form-text text-body-secondary"},V=["name","value"],C=e.defineComponent({__name:"BFormTags",props:e.mergeModels({addButtonText:{default:"Add"},addButtonVariant:{default:"outline-secondary"},addOnChange:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},duplicateTagText:{default:"Duplicate tag(s)"},form:{default:void 0},inputAttrs:{default:void 0},inputClass:{default:void 0},inputId:{default:void 0},inputType:{default:"text"},invalidTagText:{default:"Invalid tag(s)"},limit:{default:void 0},limitTagsText:{default:"Tag limit reached"},name:{default:void 0},noAddOnEnter:{type:Boolean,default:!1},noOuterFocus:{type:Boolean,default:!1},noTagRemove:{type:Boolean,default:!1},placeholder:{default:"Add tag..."},removeOnDelete:{type:Boolean,default:!1},required:{type:Boolean,default:!1},separator:{default:void 0},size:{default:"md"},state:{type:[Boolean,null],default:null},tagClass:{default:void 0},tagPills:{type:Boolean,default:!1},tagRemoveLabel:{default:void 0},tagRemovedLabel:{default:"Tag removed"},tagValidator:{type:Function,default:()=>!0},tagVariant:{default:"secondary"}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:e.mergeModels(["blur","focus","focusin","focusout","tag-state"],["update:modelValue"]),setup(u,{expose:r,emit:d}){const C=u,_=t.useDefaults(C,"BFormTags"),h=d,S=e.useModel(u,"modelValue"),D=o.useId(),E=n.useToNumber((()=>_.limit??NaN)),N=i.useStateClass((()=>_.state)),q=e.useTemplateRef("_input"),{focused:R}=a.useFocus(q,{initialValue:_.autofocus}),$=e.computed((()=>_.inputId||`${D.value}input__`)),F=e.ref([...S.value]),j=e.ref(""),w=e.ref(S.value.length>0),z=e.ref(""),A=e.ref([]),L=e.ref([]),I=e.ref([]);n.syncRef(S,F,{direction:"ltr",transform:{ltr:e=>[...e]}});const O=e.computed((()=>[N.value,{[`form-control-${_.size}`]:"md"!==_.size,disabled:_.disabled,focus:R.value}])),P=e.computed((()=>F.value.includes(j.value))),M=e.computed((()=>""!==j.value&&!_.tagValidator(j.value))),H=e.computed((()=>F.value.length===E.value)),K=e.computed((()=>!M.value&&!P.value)),U=e.computed((()=>({addButtonText:_.addButtonText,addButtonVariant:_.addButtonVariant,addTag:ae,disableAddButton:K.value,disabled:_.disabled,duplicateTagText:_.duplicateTagText,duplicateTags:I.value,form:_.form,inputAttrs:{..._.inputAttrs,disabled:_.disabled,form:_.form,id:$.value,value:j.value},inputClass:_.inputClass,inputHandlers:{input:Q,keydown:Y,change:W},inputId:$.value,inputType:_.inputType,invalidTagText:_.invalidTagText,invalidTags:L.value,isDuplicate:P.value,isInvalid:M.value,isLimitReached:H.value,limitTagsText:_.limitTagsText,limit:E.value,noTagRemove:_.noTagRemove,placeholder:_.placeholder,removeTag:te,required:_.required,separator:_.separator,size:_.size,state:_.state,tagClass:_.tagClass,tagPills:_.tagPills,tagRemoveLabel:_.tagRemoveLabel,tagVariant:_.tagVariant,tags:F.value}))),X=e=>{if(_.disabled){e.target.blur()}else h("focusin",e)},G=e=>{_.disabled||_.noOuterFocus||(R.value=!0,h("focus",e))},J=e=>{R.value=!1,h("blur",e)},Q=e=>{var a,t;const l="string"==typeof e?e:e.target.value;w.value=!1,(null==(a=_.separator)?void 0:a.includes(l.charAt(0)))&&l.length>0?q.value&&(q.value.value=""):(j.value=l,(null==(t=_.separator)?void 0:t.includes(l.charAt(l.length-1)))?ae(l.slice(0,l.length-1)):(A.value=_.tagValidator(l)&&!P.value?[l]:[],L.value=_.tagValidator(l)?[]:[l],I.value=P.value?[l]:[],h("tag-state",A.value,L.value,I.value)))},W=e=>{_.addOnChange&&(Q(e),P.value||ae(j.value))},Y=e=>{"Enter"!==e.key||_.noAddOnEnter?("Backspace"===e.key||"Delete"===e.key)&&_.removeOnDelete&&""===j.value&&w.value&&F.value.length>0?te(F.value[F.value.length-1]):w.value=!0:ae(j.value)};a.onKeyStroke(Y,{target:q});const Z=e.computed((()=>{if(_.separator)return"string"==typeof _.separator?_.separator:_.separator.join("")})),ee=e.computed((()=>{if(Z.value)return new RegExp(`[${l.escapeRegExpChars(Z.value)}]+`)})),ae=e=>{e=(e??j.value).trim();const a=ee.value?e.split(ee.value).map((e=>e.trim())):[e],t=[];for(const o of a)if(""!==o&&!P.value&&_.tagValidator(o)){if(E.value&&H.value)break;t.push(o)}const l=[...S.value,...t];j.value="",w.value=!0,S.value=l,R.value=!0},te=e=>{const a=F.value.indexOf((null==e?void 0:e.toString())??"");-1!==a&&(z.value=F.value.splice(a,1).toString(),S.value=F.value)};return r({blur:()=>{R.value=!1},element:q,focus:()=>{R.value=!0}}),(a,t)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(D),class:e.normalizeClass(["b-form-tags form-control h-auto",O.value]),role:"group",tabindex:"-1",onFocusin:X,onFocusout:t[1]||(t[1]=e=>h("focusout",e))},[e.createElementVNode("output",{id:`${e.unref(D)}selected_tags__`,class:"visually-hidden",for:$.value,"aria-live":e.unref(R)?"polite":"off","aria-atomic":"true","aria-relevant":"additions text"},e.toDisplayString(F.value.join(", ")),9,c),e.createElementVNode("div",{id:`${e.unref(D)}removed_tags__`,role:"status","aria-live":e.unref(R)?"assertive":"off","aria-atomic":"true",class:"visually-hidden"}," ("+e.toDisplayString(e.unref(_).tagRemovedLabel)+") "+e.toDisplayString(z.value),9,f),e.renderSlot(a.$slots,"default",e.normalizeProps(e.guardReactiveProps(U.value)),(()=>[e.createElementVNode("ul",{id:`${e.unref(D)}tag_list__`,class:"b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(F.value,((t,l)=>e.renderSlot(a.$slots,"tag",{key:l,tag:t,tagClass:e.unref(_).tagClass,tagVariant:e.unref(_).tagVariant,tagPills:e.unref(_).tagPills,removeTag:te},(()=>[(e.openBlock(),e.createBlock(s,{key:t,class:e.normalizeClass(e.unref(_).tagClass),tag:"li",variant:e.unref(_).tagVariant,pill:e.unref(_).tagPills,onRemove:te},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(t),1)])),_:2},1032,["class","variant","pill"]))])))),128)),e.createElementVNode("li",{role:"none","aria-live":"off",class:"b-from-tags-field flex-grow-1","aria-controls":`${e.unref(D)}tag_list__`},[e.createElementVNode("div",g,[e.createElementVNode("input",e.mergeProps({id:$.value,ref:"_input",disabled:e.unref(_).disabled,value:j.value,type:e.unref(_).inputType,placeholder:e.unref(_).placeholder,class:"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0",style:{outline:"currentcolor none 0px","min-width":"5rem"}},e.unref(_).inputAttrs,{form:e.unref(_).form,required:e.unref(_).required||void 0,"aria-required":e.unref(_).required||void 0,onInput:Q,onChange:W,onFocus:G,onBlur:J}),null,16,y),K.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:e.normalizeClass(["btn b-form-tags-button py-0",[a.inputClass,{[`btn-${e.unref(_).addButtonVariant}`]:null!==e.unref(_).addButtonVariant,"disabled invisible":0===j.value.length}]]),style:{"font-size":"90%"},disabled:e.unref(_).disabled||0===j.value.length||H.value,onClick:t[0]||(t[0]=e=>ae(j.value))},[e.renderSlot(a.$slots,"add-button-text",{},(()=>[e.createTextVNode(e.toDisplayString(e.unref(_).addButtonText),1)]))],10,b)):e.createCommentVNode("",!0)])],8,p)],8,m),e.createElementVNode("div",B,[M.value?(e.openBlock(),e.createElementBlock("div",T,e.toDisplayString(e.unref(_).invalidTagText)+": "+e.toDisplayString(j.value),1)):e.createCommentVNode("",!0),P.value?(e.openBlock(),e.createElementBlock("small",x,e.toDisplayString(e.unref(_).duplicateTagText)+": "+e.toDisplayString(j.value),1)):e.createCommentVNode("",!0),F.value.length===e.unref(_).limit?(e.openBlock(),e.createElementBlock("small",k,e.toDisplayString(e.unref(_).limitTagsText),1)):e.createCommentVNode("",!0)])])),e.unref(_).name?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(F.value,((a,t)=>(e.openBlock(),e.createElementBlock("input",{key:t,type:"hidden",name:e.unref(_).name,value:a},null,8,V)))),128)):e.createCommentVNode("",!0)],42,v))}});exports._sfc_main=C,exports._sfc_main$1=s;
2
- //# sourceMappingURL=BFormTags.vue_vue_type_script_setup_true_lang-DLnc_rCV.js.map
1
+ "use strict";const e=require("vue"),a=require("./index-CNL2tI0w.js"),t=require("./useDefaults-Bq2idhQU.js"),l=require("./stringUtils-BBcOJJJC.js"),o=require("./useId-BOa4n5pr.js"),u=require("./BCloseButton.vue_vue_type_script_setup_true_lang-BNiA4JXj.js"),r=require("./useColorVariantClasses-CE658Sm0.js"),i=require("./useStateClass-BePLKIel.js"),n=require("./index-BqHkgtNq.js"),d=["id"],s=e.defineComponent({__name:"BFormTag",props:{disabled:{type:Boolean,default:!1},id:{default:void 0},noRemove:{type:Boolean,default:!1},pill:{type:Boolean,default:!1},removeLabel:{default:"Remove tag"},tag:{default:"span"},title:{default:void 0},variant:{default:"secondary"}},emits:["remove"],setup(a,{emit:l}){const i=a,n=t.useDefaults(i,"BFormTag"),s=l,v=e.useSlots(),c=o.useId((()=>n.id)),f=e.computed((()=>{var e;return(((null==(e=v.default)?void 0:e.call(v,{})[0].children)??"").toString()||n.title)??""})),m=e.computed((()=>`${c.value}taglabel__`)),p=r.useColorVariantClasses(n),g=e.computed((()=>[p.value,{"rounded-pill":n.pill,disabled:n.disabled}]));return(a,t)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(n).tag),{id:e.unref(c),title:f.value,class:e.normalizeClass(["badge b-form-tag d-inline-flex align-items-center mw-100",g.value]),"aria-labelledby":m.value},{default:e.withCtx((()=>[e.createElementVNode("span",{id:m.value,class:"b-form-tag-content flex-grow-1 text-truncate"},[e.renderSlot(a.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(f.value),1)]))],8,d),e.unref(n).disabled||e.unref(n).noRemove?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(u._sfc_main,{key:0,"aria-keyshortcuts":"Delete","aria-label":e.unref(n).removeLabel,class:"b-form-tag-remove","aria-describedby":m.value,"aria-controls":e.unref(n).id,onClick:t[0]||(t[0]=e=>s("remove",f.value))},null,8,["aria-label","aria-describedby","aria-controls"]))])),_:3},8,["id","title","class","aria-labelledby"]))}}),v=["id"],c=["id","for","aria-live"],f=["id","aria-live"],m=["id"],p=["aria-controls"],g={role:"group",class:"d-flex"},y=["id","disabled","value","type","placeholder","form","required","aria-required"],b=["disabled"],B={"aria-live":"polite","aria-atomic":"true"},T={key:0,class:"d-block invalid-feedback"},x={key:1,class:"form-text text-body-secondary"},k={key:2,class:"form-text text-body-secondary"},V=["name","value"],C=e.defineComponent({__name:"BFormTags",props:e.mergeModels({addButtonText:{default:"Add"},addButtonVariant:{default:"outline-secondary"},addOnChange:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},duplicateTagText:{default:"Duplicate tag(s)"},form:{default:void 0},inputAttrs:{default:void 0},inputClass:{default:void 0},inputId:{default:void 0},inputType:{default:"text"},invalidTagText:{default:"Invalid tag(s)"},limit:{default:void 0},limitTagsText:{default:"Tag limit reached"},name:{default:void 0},noAddOnEnter:{type:Boolean,default:!1},noOuterFocus:{type:Boolean,default:!1},noTagRemove:{type:Boolean,default:!1},placeholder:{default:"Add tag..."},removeOnDelete:{type:Boolean,default:!1},required:{type:Boolean,default:!1},separator:{default:void 0},size:{default:"md"},state:{type:[Boolean,null],default:null},tagClass:{default:void 0},tagPills:{type:Boolean,default:!1},tagRemoveLabel:{default:void 0},tagRemovedLabel:{default:"Tag removed"},tagValidator:{type:Function,default:()=>!0},tagVariant:{default:"secondary"}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:e.mergeModels(["blur","focus","focusin","focusout","tag-state"],["update:modelValue"]),setup(u,{expose:r,emit:d}){const C=u,_=t.useDefaults(C,"BFormTags"),h=d,S=e.useModel(u,"modelValue"),D=o.useId(),E=n.useToNumber((()=>_.limit??NaN)),N=i.useStateClass((()=>_.state)),q=e.useTemplateRef("_input"),{focused:R}=a.useFocus(q,{initialValue:_.autofocus}),$=e.computed((()=>_.inputId||`${D.value}input__`)),F=e.ref([...S.value]),j=e.ref(""),w=e.ref(S.value.length>0),z=e.ref(""),A=e.ref([]),L=e.ref([]),I=e.ref([]);n.syncRef(S,F,{direction:"ltr",transform:{ltr:e=>[...e]}});const O=e.computed((()=>[N.value,{[`form-control-${_.size}`]:"md"!==_.size,disabled:_.disabled,focus:R.value}])),P=e.computed((()=>F.value.includes(j.value))),M=e.computed((()=>""!==j.value&&!_.tagValidator(j.value))),H=e.computed((()=>F.value.length===E.value)),K=e.computed((()=>!M.value&&!P.value)),U=e.computed((()=>({addButtonText:_.addButtonText,addButtonVariant:_.addButtonVariant,addTag:ae,disableAddButton:K.value,disabled:_.disabled,duplicateTagText:_.duplicateTagText,duplicateTags:I.value,form:_.form,inputAttrs:{..._.inputAttrs,disabled:_.disabled,form:_.form,id:$.value,value:j.value},inputClass:_.inputClass,inputHandlers:{input:Q,keydown:Y,change:W},inputId:$.value,inputType:_.inputType,invalidTagText:_.invalidTagText,invalidTags:L.value,isDuplicate:P.value,isInvalid:M.value,isLimitReached:H.value,limitTagsText:_.limitTagsText,limit:E.value,noTagRemove:_.noTagRemove,placeholder:_.placeholder,removeTag:te,required:_.required,separator:_.separator,size:_.size,state:_.state,tagClass:_.tagClass,tagPills:_.tagPills,tagRemoveLabel:_.tagRemoveLabel,tagVariant:_.tagVariant,tags:F.value}))),X=e=>{if(_.disabled){e.target.blur()}else h("focusin",e)},G=e=>{_.disabled||_.noOuterFocus||(R.value=!0,h("focus",e))},J=e=>{R.value=!1,h("blur",e)},Q=e=>{var a,t;const l="string"==typeof e?e:e.target.value;w.value=!1,(null==(a=_.separator)?void 0:a.includes(l.charAt(0)))&&l.length>0?q.value&&(q.value.value=""):(j.value=l,(null==(t=_.separator)?void 0:t.includes(l.charAt(l.length-1)))?ae(l.slice(0,l.length-1)):(A.value=_.tagValidator(l)&&!P.value?[l]:[],L.value=_.tagValidator(l)?[]:[l],I.value=P.value?[l]:[],h("tag-state",A.value,L.value,I.value)))},W=e=>{_.addOnChange&&(Q(e),P.value||ae(j.value))},Y=e=>{"Enter"!==e.key||_.noAddOnEnter?("Backspace"===e.key||"Delete"===e.key)&&_.removeOnDelete&&""===j.value&&w.value&&F.value.length>0?te(F.value[F.value.length-1]):w.value=!0:ae(j.value)};a.onKeyStroke(Y,{target:q});const Z=e.computed((()=>{if(_.separator)return"string"==typeof _.separator?_.separator:_.separator.join("")})),ee=e.computed((()=>{if(Z.value)return new RegExp(`[${l.escapeRegExpChars(Z.value)}]+`)})),ae=e=>{e=(e??j.value).trim();const a=ee.value?e.split(ee.value).map((e=>e.trim())):[e],t=[];for(const o of a)if(""!==o&&!P.value&&_.tagValidator(o)){if(E.value&&H.value)break;t.push(o)}const l=[...S.value,...t];j.value="",w.value=!0,S.value=l,R.value=!0},te=e=>{const a=F.value.indexOf((null==e?void 0:e.toString())??"");-1!==a&&(z.value=F.value.splice(a,1).toString(),S.value=F.value)};return r({blur:()=>{R.value=!1},element:q,focus:()=>{R.value=!0},inputValue:j}),(a,t)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(D),class:e.normalizeClass(["b-form-tags form-control h-auto",O.value]),role:"group",tabindex:"-1",onFocusin:X,onFocusout:t[1]||(t[1]=e=>h("focusout",e))},[e.createElementVNode("output",{id:`${e.unref(D)}selected_tags__`,class:"visually-hidden",for:$.value,"aria-live":e.unref(R)?"polite":"off","aria-atomic":"true","aria-relevant":"additions text"},e.toDisplayString(F.value.join(", ")),9,c),e.createElementVNode("div",{id:`${e.unref(D)}removed_tags__`,role:"status","aria-live":e.unref(R)?"assertive":"off","aria-atomic":"true",class:"visually-hidden"}," ("+e.toDisplayString(e.unref(_).tagRemovedLabel)+") "+e.toDisplayString(z.value),9,f),e.renderSlot(a.$slots,"default",e.normalizeProps(e.guardReactiveProps(U.value)),(()=>[e.createElementVNode("ul",{id:`${e.unref(D)}tag_list__`,class:"b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(F.value,((t,l)=>e.renderSlot(a.$slots,"tag",{key:l,tag:t,tagClass:e.unref(_).tagClass,tagVariant:e.unref(_).tagVariant,tagPills:e.unref(_).tagPills,removeTag:te},(()=>[(e.openBlock(),e.createBlock(s,{key:t,class:e.normalizeClass(e.unref(_).tagClass),tag:"li",variant:e.unref(_).tagVariant,pill:e.unref(_).tagPills,onRemove:te},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(t),1)])),_:2},1032,["class","variant","pill"]))])))),128)),e.createElementVNode("li",{role:"none","aria-live":"off",class:"b-from-tags-field flex-grow-1","aria-controls":`${e.unref(D)}tag_list__`},[e.createElementVNode("div",g,[e.createElementVNode("input",e.mergeProps({id:$.value,ref:"_input",disabled:e.unref(_).disabled,value:j.value,type:e.unref(_).inputType,placeholder:e.unref(_).placeholder,class:"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0",style:{outline:"currentcolor none 0px","min-width":"5rem"}},e.unref(_).inputAttrs,{form:e.unref(_).form,required:e.unref(_).required||void 0,"aria-required":e.unref(_).required||void 0,onInput:Q,onChange:W,onFocus:G,onBlur:J}),null,16,y),K.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:e.normalizeClass(["btn b-form-tags-button py-0",[a.inputClass,{[`btn-${e.unref(_).addButtonVariant}`]:null!==e.unref(_).addButtonVariant,"disabled invisible":0===j.value.length}]]),style:{"font-size":"90%"},disabled:e.unref(_).disabled||0===j.value.length||H.value,onClick:t[0]||(t[0]=e=>ae(j.value))},[e.renderSlot(a.$slots,"add-button-text",{},(()=>[e.createTextVNode(e.toDisplayString(e.unref(_).addButtonText),1)]))],10,b)):e.createCommentVNode("",!0)])],8,p)],8,m),e.createElementVNode("div",B,[M.value?(e.openBlock(),e.createElementBlock("div",T,e.toDisplayString(e.unref(_).invalidTagText)+": "+e.toDisplayString(j.value),1)):e.createCommentVNode("",!0),P.value?(e.openBlock(),e.createElementBlock("small",x,e.toDisplayString(e.unref(_).duplicateTagText)+": "+e.toDisplayString(j.value),1)):e.createCommentVNode("",!0),F.value.length===e.unref(_).limit?(e.openBlock(),e.createElementBlock("small",k,e.toDisplayString(e.unref(_).limitTagsText),1)):e.createCommentVNode("",!0)])])),e.unref(_).name?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(F.value,((a,t)=>(e.openBlock(),e.createElementBlock("input",{key:t,type:"hidden",name:e.unref(_).name,value:a},null,8,V)))),128)):e.createCommentVNode("",!0)],42,v))}});exports._sfc_main=C,exports._sfc_main$1=s;
2
+ //# sourceMappingURL=BFormTags.vue_vue_type_script_setup_true_lang-YcsaC7z0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BFormTags.vue_vue_type_script_setup_true_lang-DLnc_rCV.js","sources":["../src/components/BFormTags/BFormTag.vue","../src/components/BFormTags/BFormTags.vue"],"sourcesContent":["<template>\n <component\n :is=\"props.tag\"\n :id=\"computedId\"\n :title=\"tagText\"\n class=\"badge b-form-tag d-inline-flex align-items-center mw-100\"\n :class=\"computedClasses\"\n :aria-labelledby=\"taglabelId\"\n >\n <span :id=\"taglabelId\" class=\"b-form-tag-content flex-grow-1 text-truncate\">\n <slot>{{ tagText }}</slot>\n </span>\n <BCloseButton\n v-if=\"!props.disabled && !props.noRemove\"\n aria-keyshortcuts=\"Delete\"\n :aria-label=\"props.removeLabel\"\n class=\"b-form-tag-remove\"\n :aria-describedby=\"taglabelId\"\n :aria-controls=\"props.id\"\n @click=\"emit('remove', tagText)\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormTagProps} from '../../types/ComponentProps'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\n\nconst _props = withDefaults(defineProps<BFormTagProps>(), {\n disabled: false,\n id: undefined,\n noRemove: false,\n pill: false,\n removeLabel: 'Remove tag',\n tag: 'span',\n title: undefined,\n variant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTag')\n\nconst emit = defineEmits<{\n remove: [value: string]\n}>()\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id)\n\nconst tagText = computed(\n () => ((slots.default?.({})[0].children ?? '').toString() || props.title) ?? ''\n)\nconst taglabelId = computed(() => `${computedId.value}taglabel__`)\n\nconst colorClasses = useColorVariantClasses(props)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n 'rounded-pill': props.pill,\n 'disabled': props.disabled,\n },\n])\n</script>\n","<template>\n <div\n :id=\"computedId\"\n class=\"b-form-tags form-control h-auto\"\n :class=\"computedClasses\"\n role=\"group\"\n tabindex=\"-1\"\n @focusin=\"onFocusin\"\n @focusout=\"emit('focusout', $event)\"\n >\n <output\n :id=\"`${computedId}selected_tags__`\"\n class=\"visually-hidden\"\n :for=\"_inputId\"\n :aria-live=\"focused ? 'polite' : 'off'\"\n aria-atomic=\"true\"\n aria-relevant=\"additions text\"\n >{{ tags.join(', ') }}</output\n >\n <div\n :id=\"`${computedId}removed_tags__`\"\n role=\"status\"\n :aria-live=\"focused ? 'assertive' : 'off'\"\n aria-atomic=\"true\"\n class=\"visually-hidden\"\n >\n ({{ props.tagRemovedLabel }}) {{ lastRemovedTag }}\n </div>\n\n <slot v-bind=\"slotAttrs\">\n <ul\n :id=\"`${computedId}tag_list__`\"\n class=\"b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center\"\n >\n <template v-for=\"(tag, index) in tags\" :key=\"index\">\n <slot\n name=\"tag\"\n :tag=\"tag\"\n :tag-class=\"props.tagClass\"\n :tag-variant=\"props.tagVariant\"\n :tag-pills=\"props.tagPills\"\n :remove-tag=\"removeTag\"\n >\n <BFormTag\n :key=\"tag\"\n :class=\"props.tagClass\"\n tag=\"li\"\n :variant=\"props.tagVariant\"\n :pill=\"props.tagPills\"\n @remove=\"removeTag\"\n >{{ tag }}</BFormTag\n >\n </slot>\n </template>\n <li\n role=\"none\"\n aria-live=\"off\"\n class=\"b-from-tags-field flex-grow-1\"\n :aria-controls=\"`${computedId}tag_list__`\"\n >\n <div role=\"group\" class=\"d-flex\">\n <input\n :id=\"_inputId\"\n ref=\"_input\"\n :disabled=\"props.disabled\"\n :value=\"inputValue\"\n :type=\"props.inputType\"\n :placeholder=\"props.placeholder\"\n class=\"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0\"\n style=\"outline: currentcolor none 0px; min-width: 5rem\"\n v-bind=\"props.inputAttrs\"\n :form=\"props.form\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n <button\n v-if=\"disableAddButton\"\n type=\"button\"\n class=\"btn b-form-tags-button py-0\"\n :class=\"[\n inputClass,\n {\n [`btn-${props.addButtonVariant}`]: props.addButtonVariant !== null,\n 'disabled invisible': inputValue.length === 0,\n },\n ]\"\n style=\"font-size: 90%\"\n :disabled=\"props.disabled || inputValue.length === 0 || isLimitReached\"\n @click=\"addTag(inputValue)\"\n >\n <slot name=\"add-button-text\">{{ props.addButtonText }}</slot>\n </button>\n </div>\n </li>\n </ul>\n <div aria-live=\"polite\" aria-atomic=\"true\">\n <div v-if=\"isInvalid\" class=\"d-block invalid-feedback\">\n {{ props.invalidTagText }}: {{ inputValue }}\n </div>\n <small v-if=\"isDuplicate\" class=\"form-text text-body-secondary\"\n >{{ props.duplicateTagText }}: {{ inputValue }}</small\n >\n <small v-if=\"tags.length === props.limit\" class=\"form-text text-body-secondary\">\n {{ props.limitTagsText }}</small\n >\n </div>\n </slot>\n <template v-if=\"props.name\">\n <input\n v-for=\"(tag, index) in tags\"\n :key=\"index\"\n type=\"hidden\"\n :name=\"props.name\"\n :value=\"tag\"\n />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, syncRef, useFocus, useToNumber} from '@vueuse/core'\nimport {computed, ref, useTemplateRef} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormTagsProps} from '../../types/ComponentProps'\nimport {escapeRegExpChars} from '../../utils/stringUtils'\nimport BFormTag from './BFormTag.vue'\nimport type {ClassValue} from '../../types/AnyValuedAttributes'\nimport type {ColorVariant} from '../../types/ColorTypes'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\n\nconst _props = withDefaults(defineProps<Omit<BFormTagsProps, 'modelValue'>>(), {\n addButtonText: 'Add',\n addButtonVariant: 'outline-secondary',\n addOnChange: false,\n autofocus: false,\n disabled: false,\n duplicateTagText: 'Duplicate tag(s)',\n form: undefined,\n inputAttrs: undefined,\n inputClass: undefined,\n inputId: undefined,\n inputType: 'text',\n invalidTagText: 'Invalid tag(s)',\n limit: undefined,\n limitTagsText: 'Tag limit reached',\n name: undefined,\n noAddOnEnter: false,\n noOuterFocus: false,\n noTagRemove: false,\n placeholder: 'Add tag...',\n removeOnDelete: false,\n required: false,\n separator: undefined,\n size: 'md',\n state: null,\n tagClass: undefined,\n tagPills: false,\n tagRemoveLabel: undefined,\n tagRemovedLabel: 'Tag removed',\n tagValidator: () => true,\n tagVariant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTags')\n\nconst emit = defineEmits<{\n 'blur': [value: FocusEvent]\n 'focus': [value: FocusEvent]\n 'focusin': [value: FocusEvent]\n 'focusout': [value: FocusEvent]\n 'tag-state': [...args: string[][]]\n}>()\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'add-button-text'?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'default'?: (props: typeof slotAttrs.value) => any\n 'tag'?: (props: {\n tag: string\n tagClass: ClassValue\n tagVariant: ColorVariant | null\n tagPills: boolean\n removeTag: (tag?: string) => void\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }) => any\n}>()\n\nconst modelValue = defineModel<Exclude<BFormTagsProps['modelValue'], undefined>>({\n default: () => [],\n})\n\nconst computedId = useId()\n\nconst limitNumber = useToNumber(() => props.limit ?? NaN)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef<HTMLInputElement>('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst _inputId = computed(() => props.inputId || `${computedId.value}input__`)\nconst tags = ref<string[]>([...modelValue.value])\nconst inputValue = ref<string>('')\nconst shouldRemoveOnDelete = ref<boolean>(modelValue.value.length > 0)\nconst lastRemovedTag = ref<string>('')\nconst validTags = ref<string[]>([])\nconst invalidTags = ref<string[]>([])\nconst duplicateTags = ref<string[]>([])\n\nsyncRef(modelValue, tags, {\n direction: 'ltr',\n transform: {\n ltr: (v) => [...v],\n },\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n [`form-control-${props.size}`]: props.size !== 'md',\n disabled: props.disabled,\n focus: focused.value,\n },\n])\n\nconst isDuplicate = computed(() => tags.value.includes(inputValue.value))\nconst isInvalid = computed(() =>\n inputValue.value === '' ? false : !props.tagValidator(inputValue.value)\n)\nconst isLimitReached = computed(() => tags.value.length === limitNumber.value)\nconst disableAddButton = computed(() => !isInvalid.value && !isDuplicate.value)\n\nconst slotAttrs = computed(() => ({\n addButtonText: props.addButtonText,\n addButtonVariant: props.addButtonVariant,\n addTag,\n disableAddButton: disableAddButton.value,\n disabled: props.disabled,\n duplicateTagText: props.duplicateTagText,\n duplicateTags: duplicateTags.value,\n form: props.form,\n inputAttrs: {\n ...props.inputAttrs,\n disabled: props.disabled,\n form: props.form,\n id: _inputId.value,\n value: inputValue.value,\n },\n inputClass: props.inputClass,\n inputHandlers: {\n input: onInput,\n keydown: onKeydown,\n change: onChange,\n },\n inputId: _inputId.value,\n inputType: props.inputType,\n invalidTagText: props.invalidTagText,\n invalidTags: invalidTags.value,\n isDuplicate: isDuplicate.value,\n isInvalid: isInvalid.value,\n isLimitReached: isLimitReached.value,\n limitTagsText: props.limitTagsText,\n limit: limitNumber.value,\n noTagRemove: props.noTagRemove,\n placeholder: props.placeholder,\n removeTag,\n required: props.required,\n separator: props.separator,\n size: props.size,\n state: props.state,\n tagClass: props.tagClass,\n tagPills: props.tagPills,\n tagRemoveLabel: props.tagRemoveLabel,\n tagVariant: props.tagVariant,\n tags: tags.value,\n}))\n\nconst onFocusin = (e: Readonly<FocusEvent>): void => {\n if (props.disabled) {\n const target = e.target as HTMLDivElement\n target.blur()\n return\n }\n\n emit('focusin', e)\n}\n\nconst onFocus = (e: Readonly<FocusEvent>): void => {\n if (props.disabled || props.noOuterFocus) {\n return\n }\n\n focused.value = true\n emit('focus', e)\n}\n\nconst onBlur = (e: Readonly<FocusEvent>): void => {\n focused.value = false\n emit('blur', e)\n}\n\nconst onInput = (e: Readonly<Event> | string): void => {\n const value = typeof e === 'string' ? e : (e.target as HTMLInputElement).value\n\n shouldRemoveOnDelete.value = false\n\n if (props.separator?.includes(value.charAt(0)) && value.length > 0) {\n if (input.value) {\n input.value.value = ''\n }\n return\n }\n\n inputValue.value = value\n\n if (props.separator?.includes(value.charAt(value.length - 1))) {\n addTag(value.slice(0, value.length - 1))\n return\n }\n\n validTags.value = props.tagValidator(value) && !isDuplicate.value ? [value] : []\n invalidTags.value = props.tagValidator(value) ? [] : [value]\n duplicateTags.value = isDuplicate.value ? [value] : []\n\n emit('tag-state', validTags.value, invalidTags.value, duplicateTags.value)\n}\n\nconst onChange = (e: Readonly<Event>): void => {\n if (props.addOnChange) {\n onInput(e)\n\n if (!isDuplicate.value) {\n addTag(inputValue.value)\n }\n }\n}\n\nconst onKeydown = (e: Readonly<KeyboardEvent>): void => {\n if (e.key === 'Enter' && !props.noAddOnEnter) {\n addTag(inputValue.value)\n return\n }\n\n if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n props.removeOnDelete &&\n inputValue.value === '' &&\n shouldRemoveOnDelete.value &&\n tags.value.length > 0\n ) {\n removeTag(tags.value[tags.value.length - 1])\n } else {\n shouldRemoveOnDelete.value = true\n }\n}\n\nonKeyStroke(onKeydown, {target: input})\n\nconst separator = computed(() => {\n if (!props.separator) {\n return\n }\n\n return typeof props.separator === 'string' ? props.separator : props.separator.join('')\n})\n\nconst separatorRegExp = computed(() => {\n if (!separator.value) {\n return\n }\n\n return new RegExp(`[${escapeRegExpChars(separator.value)}]+`)\n})\n\nconst addTag = (tag?: string): void => {\n tag = (tag ?? inputValue.value).trim()\n\n const newTags = separatorRegExp.value\n ? tag.split(separatorRegExp.value).map((t) => t.trim())\n : [tag]\n const validTags: string[] = []\n\n for (const newTag of newTags) {\n if (newTag === '' || isDuplicate.value || !props.tagValidator(newTag)) {\n continue\n }\n\n if (limitNumber.value && isLimitReached.value) {\n break\n }\n\n validTags.push(newTag)\n }\n\n const newValue = [...modelValue.value, ...validTags]\n inputValue.value = ''\n shouldRemoveOnDelete.value = true\n modelValue.value = newValue\n focused.value = true\n}\n\nconst removeTag = (tag?: string): void => {\n const tagIndex = tags.value.indexOf(tag?.toString() ?? '')\n if (tagIndex === -1) return\n lastRemovedTag.value = tags.value.splice(tagIndex, 1).toString()\n modelValue.value = tags.value\n}\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n})\n</script>\n"],"names":["_props","__props","props","useDefaults","emit","__emit","slots","_useSlots","computedId","useId","id","tagText","computed","_a","default","call","children","toString","title","taglabelId","value","colorClasses","useColorVariantClasses","computedClasses","pill","disabled","modelValue","_useModel","limitNumber","useToNumber","limit","NaN","stateClass","useStateClass","state","input","useTemplateRef","focused","useFocus","initialValue","autofocus","_inputId","inputId","tags","ref","inputValue","shouldRemoveOnDelete","length","lastRemovedTag","validTags","invalidTags","duplicateTags","index","syncRef","direction","transform","ltr","v","size","focus","isDuplicate","includes","isInvalid","tagValidator","isLimitReached","disableAddButton","slotAttrs","addButtonText","addButtonVariant","addTag","duplicateTagText","form","inputAttrs","inputClass","inputHandlers","onInput","keydown","onKeydown","change","onChange","inputType","invalidTagText","limitTagsText","noTagRemove","placeholder","removeTag","required","separator","tagClass","tagPills","tagRemoveLabel","tagVariant","onFocusin","e","target","blur","onFocus","noOuterFocus","onBlur","charAt","_b","slice","addOnChange","key","noAddOnEnter","removeOnDelete","onKeyStroke","join","separatorRegExp","RegExp","escapeRegExpChars","tag","trim","newTags","split","map","t","newTag","push","newValue","tagIndex","indexOf","splice","__expose","element"],"mappings":"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"}
1
+ {"version":3,"file":"BFormTags.vue_vue_type_script_setup_true_lang-YcsaC7z0.js","sources":["../src/components/BFormTags/BFormTag.vue","../src/components/BFormTags/BFormTags.vue"],"sourcesContent":["<template>\n <component\n :is=\"props.tag\"\n :id=\"computedId\"\n :title=\"tagText\"\n class=\"badge b-form-tag d-inline-flex align-items-center mw-100\"\n :class=\"computedClasses\"\n :aria-labelledby=\"taglabelId\"\n >\n <span :id=\"taglabelId\" class=\"b-form-tag-content flex-grow-1 text-truncate\">\n <slot>{{ tagText }}</slot>\n </span>\n <BCloseButton\n v-if=\"!props.disabled && !props.noRemove\"\n aria-keyshortcuts=\"Delete\"\n :aria-label=\"props.removeLabel\"\n class=\"b-form-tag-remove\"\n :aria-describedby=\"taglabelId\"\n :aria-controls=\"props.id\"\n @click=\"emit('remove', tagText)\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormTagProps} from '../../types/ComponentProps'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\n\nconst _props = withDefaults(defineProps<BFormTagProps>(), {\n disabled: false,\n id: undefined,\n noRemove: false,\n pill: false,\n removeLabel: 'Remove tag',\n tag: 'span',\n title: undefined,\n variant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTag')\n\nconst emit = defineEmits<{\n remove: [value: string]\n}>()\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id)\n\nconst tagText = computed(\n () => ((slots.default?.({})[0].children ?? '').toString() || props.title) ?? ''\n)\nconst taglabelId = computed(() => `${computedId.value}taglabel__`)\n\nconst colorClasses = useColorVariantClasses(props)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n 'rounded-pill': props.pill,\n 'disabled': props.disabled,\n },\n])\n</script>\n","<template>\n <div\n :id=\"computedId\"\n class=\"b-form-tags form-control h-auto\"\n :class=\"computedClasses\"\n role=\"group\"\n tabindex=\"-1\"\n @focusin=\"onFocusin\"\n @focusout=\"emit('focusout', $event)\"\n >\n <output\n :id=\"`${computedId}selected_tags__`\"\n class=\"visually-hidden\"\n :for=\"_inputId\"\n :aria-live=\"focused ? 'polite' : 'off'\"\n aria-atomic=\"true\"\n aria-relevant=\"additions text\"\n >{{ tags.join(', ') }}</output\n >\n <div\n :id=\"`${computedId}removed_tags__`\"\n role=\"status\"\n :aria-live=\"focused ? 'assertive' : 'off'\"\n aria-atomic=\"true\"\n class=\"visually-hidden\"\n >\n ({{ props.tagRemovedLabel }}) {{ lastRemovedTag }}\n </div>\n\n <slot v-bind=\"slotAttrs\">\n <ul\n :id=\"`${computedId}tag_list__`\"\n class=\"b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center\"\n >\n <template v-for=\"(tag, index) in tags\" :key=\"index\">\n <slot\n name=\"tag\"\n :tag=\"tag\"\n :tag-class=\"props.tagClass\"\n :tag-variant=\"props.tagVariant\"\n :tag-pills=\"props.tagPills\"\n :remove-tag=\"removeTag\"\n >\n <BFormTag\n :key=\"tag\"\n :class=\"props.tagClass\"\n tag=\"li\"\n :variant=\"props.tagVariant\"\n :pill=\"props.tagPills\"\n @remove=\"removeTag\"\n >{{ tag }}</BFormTag\n >\n </slot>\n </template>\n <li\n role=\"none\"\n aria-live=\"off\"\n class=\"b-from-tags-field flex-grow-1\"\n :aria-controls=\"`${computedId}tag_list__`\"\n >\n <div role=\"group\" class=\"d-flex\">\n <input\n :id=\"_inputId\"\n ref=\"_input\"\n :disabled=\"props.disabled\"\n :value=\"inputValue\"\n :type=\"props.inputType\"\n :placeholder=\"props.placeholder\"\n class=\"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0\"\n style=\"outline: currentcolor none 0px; min-width: 5rem\"\n v-bind=\"props.inputAttrs\"\n :form=\"props.form\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n <button\n v-if=\"disableAddButton\"\n type=\"button\"\n class=\"btn b-form-tags-button py-0\"\n :class=\"[\n inputClass,\n {\n [`btn-${props.addButtonVariant}`]: props.addButtonVariant !== null,\n 'disabled invisible': inputValue.length === 0,\n },\n ]\"\n style=\"font-size: 90%\"\n :disabled=\"props.disabled || inputValue.length === 0 || isLimitReached\"\n @click=\"addTag(inputValue)\"\n >\n <slot name=\"add-button-text\">{{ props.addButtonText }}</slot>\n </button>\n </div>\n </li>\n </ul>\n <div aria-live=\"polite\" aria-atomic=\"true\">\n <div v-if=\"isInvalid\" class=\"d-block invalid-feedback\">\n {{ props.invalidTagText }}: {{ inputValue }}\n </div>\n <small v-if=\"isDuplicate\" class=\"form-text text-body-secondary\"\n >{{ props.duplicateTagText }}: {{ inputValue }}</small\n >\n <small v-if=\"tags.length === props.limit\" class=\"form-text text-body-secondary\">\n {{ props.limitTagsText }}</small\n >\n </div>\n </slot>\n <template v-if=\"props.name\">\n <input\n v-for=\"(tag, index) in tags\"\n :key=\"index\"\n type=\"hidden\"\n :name=\"props.name\"\n :value=\"tag\"\n />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, syncRef, useFocus, useToNumber} from '@vueuse/core'\nimport {computed, ref, useTemplateRef} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormTagsProps} from '../../types/ComponentProps'\nimport {escapeRegExpChars} from '../../utils/stringUtils'\nimport BFormTag from './BFormTag.vue'\nimport type {ClassValue} from '../../types/AnyValuedAttributes'\nimport type {ColorVariant} from '../../types/ColorTypes'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\n\nconst _props = withDefaults(defineProps<Omit<BFormTagsProps, 'modelValue'>>(), {\n addButtonText: 'Add',\n addButtonVariant: 'outline-secondary',\n addOnChange: false,\n autofocus: false,\n disabled: false,\n duplicateTagText: 'Duplicate tag(s)',\n form: undefined,\n inputAttrs: undefined,\n inputClass: undefined,\n inputId: undefined,\n inputType: 'text',\n invalidTagText: 'Invalid tag(s)',\n limit: undefined,\n limitTagsText: 'Tag limit reached',\n name: undefined,\n noAddOnEnter: false,\n noOuterFocus: false,\n noTagRemove: false,\n placeholder: 'Add tag...',\n removeOnDelete: false,\n required: false,\n separator: undefined,\n size: 'md',\n state: null,\n tagClass: undefined,\n tagPills: false,\n tagRemoveLabel: undefined,\n tagRemovedLabel: 'Tag removed',\n tagValidator: () => true,\n tagVariant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTags')\n\nconst emit = defineEmits<{\n 'blur': [value: FocusEvent]\n 'focus': [value: FocusEvent]\n 'focusin': [value: FocusEvent]\n 'focusout': [value: FocusEvent]\n 'tag-state': [...args: string[][]]\n}>()\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'add-button-text'?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'default'?: (props: typeof slotAttrs.value) => any\n 'tag'?: (props: {\n tag: string\n tagClass: ClassValue\n tagVariant: ColorVariant | null\n tagPills: boolean\n removeTag: (tag?: string) => void\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }) => any\n}>()\n\nconst modelValue = defineModel<Exclude<BFormTagsProps['modelValue'], undefined>>({\n default: () => [],\n})\n\nconst computedId = useId()\n\nconst limitNumber = useToNumber(() => props.limit ?? NaN)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef<HTMLInputElement>('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst _inputId = computed(() => props.inputId || `${computedId.value}input__`)\nconst tags = ref<string[]>([...modelValue.value])\nconst inputValue = ref<string>('')\nconst shouldRemoveOnDelete = ref<boolean>(modelValue.value.length > 0)\nconst lastRemovedTag = ref<string>('')\nconst validTags = ref<string[]>([])\nconst invalidTags = ref<string[]>([])\nconst duplicateTags = ref<string[]>([])\n\nsyncRef(modelValue, tags, {\n direction: 'ltr',\n transform: {\n ltr: (v) => [...v],\n },\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n [`form-control-${props.size}`]: props.size !== 'md',\n disabled: props.disabled,\n focus: focused.value,\n },\n])\n\nconst isDuplicate = computed(() => tags.value.includes(inputValue.value))\nconst isInvalid = computed(() =>\n inputValue.value === '' ? false : !props.tagValidator(inputValue.value)\n)\nconst isLimitReached = computed(() => tags.value.length === limitNumber.value)\nconst disableAddButton = computed(() => !isInvalid.value && !isDuplicate.value)\n\nconst slotAttrs = computed(() => ({\n addButtonText: props.addButtonText,\n addButtonVariant: props.addButtonVariant,\n addTag,\n disableAddButton: disableAddButton.value,\n disabled: props.disabled,\n duplicateTagText: props.duplicateTagText,\n duplicateTags: duplicateTags.value,\n form: props.form,\n inputAttrs: {\n ...props.inputAttrs,\n disabled: props.disabled,\n form: props.form,\n id: _inputId.value,\n value: inputValue.value,\n },\n inputClass: props.inputClass,\n inputHandlers: {\n input: onInput,\n keydown: onKeydown,\n change: onChange,\n },\n inputId: _inputId.value,\n inputType: props.inputType,\n invalidTagText: props.invalidTagText,\n invalidTags: invalidTags.value,\n isDuplicate: isDuplicate.value,\n isInvalid: isInvalid.value,\n isLimitReached: isLimitReached.value,\n limitTagsText: props.limitTagsText,\n limit: limitNumber.value,\n noTagRemove: props.noTagRemove,\n placeholder: props.placeholder,\n removeTag,\n required: props.required,\n separator: props.separator,\n size: props.size,\n state: props.state,\n tagClass: props.tagClass,\n tagPills: props.tagPills,\n tagRemoveLabel: props.tagRemoveLabel,\n tagVariant: props.tagVariant,\n tags: tags.value,\n}))\n\nconst onFocusin = (e: Readonly<FocusEvent>): void => {\n if (props.disabled) {\n const target = e.target as HTMLDivElement\n target.blur()\n return\n }\n\n emit('focusin', e)\n}\n\nconst onFocus = (e: Readonly<FocusEvent>): void => {\n if (props.disabled || props.noOuterFocus) {\n return\n }\n\n focused.value = true\n emit('focus', e)\n}\n\nconst onBlur = (e: Readonly<FocusEvent>): void => {\n focused.value = false\n emit('blur', e)\n}\n\nconst onInput = (e: Readonly<Event> | string): void => {\n const value = typeof e === 'string' ? e : (e.target as HTMLInputElement).value\n\n shouldRemoveOnDelete.value = false\n\n if (props.separator?.includes(value.charAt(0)) && value.length > 0) {\n if (input.value) {\n input.value.value = ''\n }\n return\n }\n\n inputValue.value = value\n\n if (props.separator?.includes(value.charAt(value.length - 1))) {\n addTag(value.slice(0, value.length - 1))\n return\n }\n\n validTags.value = props.tagValidator(value) && !isDuplicate.value ? [value] : []\n invalidTags.value = props.tagValidator(value) ? [] : [value]\n duplicateTags.value = isDuplicate.value ? [value] : []\n\n emit('tag-state', validTags.value, invalidTags.value, duplicateTags.value)\n}\n\nconst onChange = (e: Readonly<Event>): void => {\n if (props.addOnChange) {\n onInput(e)\n\n if (!isDuplicate.value) {\n addTag(inputValue.value)\n }\n }\n}\n\nconst onKeydown = (e: Readonly<KeyboardEvent>): void => {\n if (e.key === 'Enter' && !props.noAddOnEnter) {\n addTag(inputValue.value)\n return\n }\n\n if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n props.removeOnDelete &&\n inputValue.value === '' &&\n shouldRemoveOnDelete.value &&\n tags.value.length > 0\n ) {\n removeTag(tags.value[tags.value.length - 1])\n } else {\n shouldRemoveOnDelete.value = true\n }\n}\n\nonKeyStroke(onKeydown, {target: input})\n\nconst separator = computed(() => {\n if (!props.separator) {\n return\n }\n\n return typeof props.separator === 'string' ? props.separator : props.separator.join('')\n})\n\nconst separatorRegExp = computed(() => {\n if (!separator.value) {\n return\n }\n\n return new RegExp(`[${escapeRegExpChars(separator.value)}]+`)\n})\n\nconst addTag = (tag?: string): void => {\n tag = (tag ?? inputValue.value).trim()\n\n const newTags = separatorRegExp.value\n ? tag.split(separatorRegExp.value).map((t) => t.trim())\n : [tag]\n const validTags: string[] = []\n\n for (const newTag of newTags) {\n if (newTag === '' || isDuplicate.value || !props.tagValidator(newTag)) {\n continue\n }\n\n if (limitNumber.value && isLimitReached.value) {\n break\n }\n\n validTags.push(newTag)\n }\n\n const newValue = [...modelValue.value, ...validTags]\n inputValue.value = ''\n shouldRemoveOnDelete.value = true\n modelValue.value = newValue\n focused.value = true\n}\n\nconst removeTag = (tag?: string): void => {\n const tagIndex = tags.value.indexOf(tag?.toString() ?? '')\n if (tagIndex === -1) return\n lastRemovedTag.value = tags.value.splice(tagIndex, 1).toString()\n modelValue.value = tags.value\n}\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n inputValue,\n})\n</script>\n"],"names":["_props","__props","props","useDefaults","emit","__emit","slots","_useSlots","computedId","useId","id","tagText","computed","_a","default","call","children","toString","title","taglabelId","value","colorClasses","useColorVariantClasses","computedClasses","pill","disabled","modelValue","_useModel","limitNumber","useToNumber","limit","NaN","stateClass","useStateClass","state","input","useTemplateRef","focused","useFocus","initialValue","autofocus","_inputId","inputId","tags","ref","inputValue","shouldRemoveOnDelete","length","lastRemovedTag","validTags","invalidTags","duplicateTags","index","syncRef","direction","transform","ltr","v","size","focus","isDuplicate","includes","isInvalid","tagValidator","isLimitReached","disableAddButton","slotAttrs","addButtonText","addButtonVariant","addTag","duplicateTagText","form","inputAttrs","inputClass","inputHandlers","onInput","keydown","onKeydown","change","onChange","inputType","invalidTagText","limitTagsText","noTagRemove","placeholder","removeTag","required","separator","tagClass","tagPills","tagRemoveLabel","tagVariant","onFocusin","e","target","blur","onFocus","noOuterFocus","onBlur","charAt","_b","slice","addOnChange","key","noAddOnEnter","removeOnDelete","onKeyStroke","join","separatorRegExp","RegExp","escapeRegExpChars","tag","trim","newTags","split","map","t","newTag","push","newValue","tagIndex","indexOf","splice","__expose","element"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("vue"),t=require("./BCard.vue_vue_type_script_setup_true_lang-J1p9bfap.js"),a=require("./useDefaults-Bq2idhQU.js"),o=require("./BTableSimple.vue_vue_type_script_setup_true_lang-C6BcFYxA.js"),n=require("./useColorVariantClasses-CE658Sm0.js"),l=require("./index-BqHkgtNq.js"),r=e.defineComponent({inheritAttrs:!1,__name:"BPlaceholder",props:{animation:{default:void 0},cols:{default:12},size:{default:"md"},tag:{default:"span"},variant:{default:null},width:{default:void 0},wrapperTag:{default:"span"}},setup(t){const o=t,l=a.useDefaults(o,"BPlaceholder"),r=e.computed((()=>void 0===l.width?void 0:"number"==typeof l.width?l.width.toString():l.width.replace("%",""))),i=e.computed((()=>void 0===l.cols?void 0:"number"==typeof l.cols?l.cols.toString():l.cols)),d=n.useColorVariantClasses(e.computed((()=>({bgVariant:l.variant})))),u=e.computed((()=>[d.value,{[`col-${i.value}`]:void 0!==i.value&&void 0===r.value,[`placeholder-${l.size}`]:"md"!==l.size}])),s=e.computed((()=>({[`placeholder-${l.animation}`]:void 0!==l.animation}))),c=e.computed((()=>({width:void 0===r.value?void 0:`${r.value}%`})));return(t,a)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(l).wrapperTag),{class:e.normalizeClass(s.value)},{default:e.withCtx((()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),e.mergeProps(t.$attrs,{class:["placeholder",u.value],style:c.value}),null,16,["class","style"]))])),_:1},8,["class"]))}}),i=e.defineComponent({__name:"BPlaceholderButton",props:{animation:{default:void 0},cols:{default:void 0},tag:{default:"div"},variant:{default:"primary"},width:{default:void 0}},setup(t){const o=t,n=a.useDefaults(o,"BPlaceholderButton"),l=e.computed((()=>({[`btn-${n.variant}`]:null!==n.variant})));return(t,a)=>(e.openBlock(),e.createBlock(r,{class:e.normalizeClass(["btn disabled",l.value]),animation:e.unref(n).animation,width:e.unref(n).width,cols:e.unref(n).cols,tag:e.unref(n).tag,style:{cursor:"wait","pointer-events":"auto"}},null,8,["class","animation","width","cols","tag"]))}}),d=e.defineComponent({__name:"BPlaceholderCard",props:{animation:{default:void 0},footerAnimation:{default:void 0},footerSize:{default:"md"},footerVariant:{default:void 0},footerWidth:{default:100},headerAnimation:{default:void 0},headerSize:{default:"md"},headerVariant:{default:void 0},headerWidth:{default:100},imgBlankColor:{default:"#868e96"},imgPlacement:{default:"top"},imgHeight:{default:100},imgSrc:{default:void 0},noButton:{type:Boolean,default:!1},noFooter:{type:Boolean,default:!1},noHeader:{type:Boolean,default:!1},noImg:{type:Boolean,default:!1},size:{default:"md"},variant:{default:void 0}},setup(o){const n=o,l=a.useDefaults(n,"BPlaceholderCard"),d=e.computed((()=>({animation:l.animation,size:l.size,variant:l.variant}))),u=e.computed((()=>l.noButton?r:i));return(a,o)=>(e.openBlock(),e.createBlock(t._sfc_main,{"img-placement":e.unref(l).imgPlacement},e.createSlots({default:e.withCtx((()=>[e.renderSlot(a.$slots,"default",{},(()=>[e.createVNode(r,e.mergeProps({cols:"7"},d.value),null,16),e.createVNode(r,e.mergeProps({cols:"4"},d.value),null,16),e.createVNode(r,e.mergeProps({cols:"4"},d.value),null,16),e.createVNode(r,e.mergeProps({cols:"6"},d.value),null,16),e.createVNode(r,e.mergeProps({cols:"8"},d.value),null,16)]))])),_:2},[e.unref(l).noImg?void 0:{name:"img",fn:e.withCtx((()=>[e.renderSlot(a.$slots,"img",{},(()=>[e.createVNode(t._sfc_main$4,{blank:!e.unref(l).imgSrc,"blank-color":e.unref(l).imgBlankColor,height:e.unref(l).imgSrc?void 0:e.unref(l).imgHeight,src:e.unref(l).imgSrc,"img-placement":e.unref(l).imgPlacement,style:{cursor:"wait"}},null,8,["blank","blank-color","height","src","img-placement"])]))])),key:"0"},e.unref(l).noHeader?void 0:{name:"header",fn:e.withCtx((()=>[e.renderSlot(a.$slots,"header",{},(()=>[e.createVNode(r,{width:e.unref(l).headerWidth,variant:e.unref(l).headerVariant,animation:e.unref(l).headerAnimation,size:e.unref(l).headerSize},null,8,["width","variant","animation","size"])]))])),key:"1"},e.unref(l).noFooter?void 0:{name:"footer",fn:e.withCtx((()=>[e.renderSlot(a.$slots,"footer",{},(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(u.value),{width:e.unref(l).footerWidth,animation:e.unref(l).footerAnimation,size:e.unref(l).noButton?e.unref(l).footerSize:void 0,variant:e.unref(l).footerVariant},null,8,["width","animation","size","variant"]))]))])),key:"2"}]),1032,["img-placement"]))}}),u=e.defineComponent({__name:"BPlaceholderTable",props:{animation:{default:void 0},cellWidth:{default:100},columns:{default:5},footerAnimation:{default:void 0},footerCellWidth:{default:100},footerColumns:{default:void 0},footerSize:{default:"md"},footerVariant:{default:void 0},headerAnimation:{default:void 0},headerCellWidth:{default:100},headerColumns:{default:void 0},headerSize:{default:"md"},headerVariant:{default:void 0},noHeader:{type:Boolean,default:!1},rows:{default:3},showFooter:{type:Boolean,default:!1},size:{default:"md"},variant:{default:void 0}},setup(t){const n=t,i=a.useDefaults(n,"BPlaceholderTable"),d=l.useToNumber((()=>i.columns)),u=l.useToNumber((()=>i.rows)),s=e.computed((()=>i.headerColumns??NaN)),c=e.computed((()=>i.footerColumns??NaN)),m=l.useToNumber(s),f=l.useToNumber(c),p=e.computed((()=>d.value||5)),v=e.computed((()=>u.value||3)),h=e.computed((()=>void 0===i.headerColumns?p.value:m.value)),B=e.computed((()=>void 0===i.footerColumns?p.value:f.value));return(t,a)=>(e.openBlock(),e.createBlock(o._sfc_main,null,{default:e.withCtx((()=>[e.unref(i).noHeader?e.createCommentVNode("",!0):e.renderSlot(t.$slots,"thead",{key:0},(()=>[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,((t,a)=>(e.openBlock(),e.createElementBlock("th",{key:a},[e.createVNode(r,{size:e.unref(i).headerSize,variant:e.unref(i).headerVariant,animation:e.unref(i).headerAnimation,width:e.unref(i).headerCellWidth},null,8,["size","variant","animation","width"])])))),128))])])])),e.renderSlot(t.$slots,"default",{},(()=>[e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,((t,a)=>(e.openBlock(),e.createElementBlock("tr",{key:a},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,((t,a)=>(e.openBlock(),e.createElementBlock("td",{key:a},[e.createVNode(r,{size:e.unref(i).size,variant:e.unref(i).variant,animation:e.unref(i).animation,width:e.unref(i).cellWidth},null,8,["size","variant","animation","width"])])))),128))])))),128))])])),e.unref(i).showFooter?e.renderSlot(t.$slots,"tfoot",{key:1},(()=>[e.createElementVNode("tfoot",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,((t,a)=>(e.openBlock(),e.createElementBlock("th",{key:a},[e.createVNode(r,{size:e.unref(i).footerSize,variant:e.unref(i).footerVariant,animation:e.unref(i).footerAnimation,width:e.unref(i).footerCellWidth},null,8,["size","variant","animation","width"])])))),128))])])])):e.createCommentVNode("",!0)])),_:3}))}}),s=e.defineComponent({__name:"BPlaceholderWrapper",props:{loading:{type:Boolean,default:!1}},setup(t){const o=t,n=a.useDefaults(o,"BPlaceholderWrapper");return(t,a)=>e.unref(n).loading?e.renderSlot(t.$slots,"loading",{key:0}):e.renderSlot(t.$slots,"default",{key:1})}});exports._sfc_main=r,exports._sfc_main$1=i,exports._sfc_main$2=d,exports._sfc_main$3=u,exports._sfc_main$4=s;
2
- //# sourceMappingURL=BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-1f_TuBw6.js.map
1
+ "use strict";const e=require("vue"),t=require("./BCard.vue_vue_type_script_setup_true_lang-J1p9bfap.js"),a=require("./useDefaults-Bq2idhQU.js"),o=require("./BTableSimple.vue_vue_type_script_setup_true_lang-BGc-Vbfw.js"),n=require("./useColorVariantClasses-CE658Sm0.js"),l=require("./index-BqHkgtNq.js"),r=e.defineComponent({inheritAttrs:!1,__name:"BPlaceholder",props:{animation:{default:void 0},cols:{default:12},size:{default:"md"},tag:{default:"span"},variant:{default:null},width:{default:void 0},wrapperTag:{default:"span"}},setup(t){const o=t,l=a.useDefaults(o,"BPlaceholder"),r=e.computed((()=>void 0===l.width?void 0:"number"==typeof l.width?l.width.toString():l.width.replace("%",""))),i=e.computed((()=>void 0===l.cols?void 0:"number"==typeof l.cols?l.cols.toString():l.cols)),d=n.useColorVariantClasses(e.computed((()=>({bgVariant:l.variant})))),u=e.computed((()=>[d.value,{[`col-${i.value}`]:void 0!==i.value&&void 0===r.value,[`placeholder-${l.size}`]:"md"!==l.size}])),s=e.computed((()=>({[`placeholder-${l.animation}`]:void 0!==l.animation}))),c=e.computed((()=>({width:void 0===r.value?void 0:`${r.value}%`})));return(t,a)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(l).wrapperTag),{class:e.normalizeClass(s.value)},{default:e.withCtx((()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),e.mergeProps(t.$attrs,{class:["placeholder",u.value],style:c.value}),null,16,["class","style"]))])),_:1},8,["class"]))}}),i=e.defineComponent({__name:"BPlaceholderButton",props:{animation:{default:void 0},cols:{default:void 0},tag:{default:"div"},variant:{default:"primary"},width:{default:void 0}},setup(t){const o=t,n=a.useDefaults(o,"BPlaceholderButton"),l=e.computed((()=>({[`btn-${n.variant}`]:null!==n.variant})));return(t,a)=>(e.openBlock(),e.createBlock(r,{class:e.normalizeClass(["btn disabled",l.value]),animation:e.unref(n).animation,width:e.unref(n).width,cols:e.unref(n).cols,tag:e.unref(n).tag,style:{cursor:"wait","pointer-events":"auto"}},null,8,["class","animation","width","cols","tag"]))}}),d=e.defineComponent({__name:"BPlaceholderCard",props:{animation:{default:void 0},footerAnimation:{default:void 0},footerSize:{default:"md"},footerVariant:{default:void 0},footerWidth:{default:100},headerAnimation:{default:void 0},headerSize:{default:"md"},headerVariant:{default:void 0},headerWidth:{default:100},imgBlankColor:{default:"#868e96"},imgPlacement:{default:"top"},imgHeight:{default:100},imgSrc:{default:void 0},noButton:{type:Boolean,default:!1},noFooter:{type:Boolean,default:!1},noHeader:{type:Boolean,default:!1},noImg:{type:Boolean,default:!1},size:{default:"md"},variant:{default:void 0}},setup(o){const n=o,l=a.useDefaults(n,"BPlaceholderCard"),d=e.computed((()=>({animation:l.animation,size:l.size,variant:l.variant}))),u=e.computed((()=>l.noButton?r:i));return(a,o)=>(e.openBlock(),e.createBlock(t._sfc_main,{"img-placement":e.unref(l).imgPlacement},e.createSlots({default:e.withCtx((()=>[e.renderSlot(a.$slots,"default",{},(()=>[e.createVNode(r,e.mergeProps({cols:"7"},d.value),null,16),e.createVNode(r,e.mergeProps({cols:"4"},d.value),null,16),e.createVNode(r,e.mergeProps({cols:"4"},d.value),null,16),e.createVNode(r,e.mergeProps({cols:"6"},d.value),null,16),e.createVNode(r,e.mergeProps({cols:"8"},d.value),null,16)]))])),_:2},[e.unref(l).noImg?void 0:{name:"img",fn:e.withCtx((()=>[e.renderSlot(a.$slots,"img",{},(()=>[e.createVNode(t._sfc_main$4,{blank:!e.unref(l).imgSrc,"blank-color":e.unref(l).imgBlankColor,height:e.unref(l).imgSrc?void 0:e.unref(l).imgHeight,src:e.unref(l).imgSrc,"img-placement":e.unref(l).imgPlacement,style:{cursor:"wait"}},null,8,["blank","blank-color","height","src","img-placement"])]))])),key:"0"},e.unref(l).noHeader?void 0:{name:"header",fn:e.withCtx((()=>[e.renderSlot(a.$slots,"header",{},(()=>[e.createVNode(r,{width:e.unref(l).headerWidth,variant:e.unref(l).headerVariant,animation:e.unref(l).headerAnimation,size:e.unref(l).headerSize},null,8,["width","variant","animation","size"])]))])),key:"1"},e.unref(l).noFooter?void 0:{name:"footer",fn:e.withCtx((()=>[e.renderSlot(a.$slots,"footer",{},(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(u.value),{width:e.unref(l).footerWidth,animation:e.unref(l).footerAnimation,size:e.unref(l).noButton?e.unref(l).footerSize:void 0,variant:e.unref(l).footerVariant},null,8,["width","animation","size","variant"]))]))])),key:"2"}]),1032,["img-placement"]))}}),u=e.defineComponent({__name:"BPlaceholderTable",props:{animation:{default:void 0},cellWidth:{default:100},columns:{default:5},footerAnimation:{default:void 0},footerCellWidth:{default:100},footerColumns:{default:void 0},footerSize:{default:"md"},footerVariant:{default:void 0},headerAnimation:{default:void 0},headerCellWidth:{default:100},headerColumns:{default:void 0},headerSize:{default:"md"},headerVariant:{default:void 0},noHeader:{type:Boolean,default:!1},rows:{default:3},showFooter:{type:Boolean,default:!1},size:{default:"md"},variant:{default:void 0}},setup(t){const n=t,i=a.useDefaults(n,"BPlaceholderTable"),d=l.useToNumber((()=>i.columns)),u=l.useToNumber((()=>i.rows)),s=e.computed((()=>i.headerColumns??NaN)),c=e.computed((()=>i.footerColumns??NaN)),m=l.useToNumber(s),f=l.useToNumber(c),p=e.computed((()=>d.value||5)),v=e.computed((()=>u.value||3)),h=e.computed((()=>void 0===i.headerColumns?p.value:m.value)),B=e.computed((()=>void 0===i.footerColumns?p.value:f.value));return(t,a)=>(e.openBlock(),e.createBlock(o._sfc_main,null,{default:e.withCtx((()=>[e.unref(i).noHeader?e.createCommentVNode("",!0):e.renderSlot(t.$slots,"thead",{key:0},(()=>[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,((t,a)=>(e.openBlock(),e.createElementBlock("th",{key:a},[e.createVNode(r,{size:e.unref(i).headerSize,variant:e.unref(i).headerVariant,animation:e.unref(i).headerAnimation,width:e.unref(i).headerCellWidth},null,8,["size","variant","animation","width"])])))),128))])])])),e.renderSlot(t.$slots,"default",{},(()=>[e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,((t,a)=>(e.openBlock(),e.createElementBlock("tr",{key:a},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,((t,a)=>(e.openBlock(),e.createElementBlock("td",{key:a},[e.createVNode(r,{size:e.unref(i).size,variant:e.unref(i).variant,animation:e.unref(i).animation,width:e.unref(i).cellWidth},null,8,["size","variant","animation","width"])])))),128))])))),128))])])),e.unref(i).showFooter?e.renderSlot(t.$slots,"tfoot",{key:1},(()=>[e.createElementVNode("tfoot",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,((t,a)=>(e.openBlock(),e.createElementBlock("th",{key:a},[e.createVNode(r,{size:e.unref(i).footerSize,variant:e.unref(i).footerVariant,animation:e.unref(i).footerAnimation,width:e.unref(i).footerCellWidth},null,8,["size","variant","animation","width"])])))),128))])])])):e.createCommentVNode("",!0)])),_:3}))}}),s=e.defineComponent({__name:"BPlaceholderWrapper",props:{loading:{type:Boolean,default:!1}},setup(t){const o=t,n=a.useDefaults(o,"BPlaceholderWrapper");return(t,a)=>e.unref(n).loading?e.renderSlot(t.$slots,"loading",{key:0}):e.renderSlot(t.$slots,"default",{key:1})}});exports._sfc_main=r,exports._sfc_main$1=i,exports._sfc_main$2=d,exports._sfc_main$3=u,exports._sfc_main$4=s;
2
+ //# sourceMappingURL=BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-BIUGzj9a.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-1f_TuBw6.js","sources":["../src/components/BPlaceholder/BPlaceholder.vue","../src/components/BPlaceholder/BPlaceholderButton.vue","../src/components/BPlaceholder/BPlaceholderCard.vue","../src/components/BPlaceholder/BPlaceholderTable.vue","../src/components/BPlaceholder/BPlaceholderWrapper.vue"],"sourcesContent":["<template>\n <component :is=\"props.wrapperTag\" :class=\"wrapperClasses\">\n <component\n v-bind=\"$attrs\"\n :is=\"tag\"\n class=\"placeholder\"\n :class=\"computedClasses\"\n :style=\"computedStyle\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, type CSSProperties} from 'vue'\nimport type {BPlaceholderProps} from '../../types/ComponentProps'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<BPlaceholderProps>(), {\n animation: undefined,\n cols: 12,\n size: 'md',\n tag: 'span',\n variant: null,\n width: undefined,\n wrapperTag: 'span',\n})\nconst props = useDefaults(_props, 'BPlaceholder')\n\nconst widthString = computed(() =>\n props.width === undefined\n ? undefined\n : typeof props.width === 'number'\n ? props.width.toString()\n : props.width.replace('%', '')\n)\n\nconst colsString = computed(() =>\n props.cols === undefined\n ? undefined\n : typeof props.cols === 'number'\n ? props.cols.toString()\n : props.cols\n)\n\nconst colorClasses = useColorVariantClasses(\n computed(() => ({\n bgVariant: props.variant,\n }))\n)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n [`col-${colsString.value}`]: colsString.value !== undefined && widthString.value === undefined,\n [`placeholder-${props.size}`]: props.size !== 'md',\n },\n])\n\nconst wrapperClasses = computed(() => ({\n [`placeholder-${props.animation}`]: props.animation !== undefined,\n}))\n\nconst computedStyle = computed<CSSProperties>(() => ({\n width: widthString.value === undefined ? undefined : `${widthString.value}%`,\n}))\n</script>\n","<template>\n <BPlaceholder\n class=\"btn disabled\"\n :class=\"computedClasses\"\n :animation=\"props.animation\"\n :width=\"props.width\"\n :cols=\"props.cols\"\n :tag=\"props.tag\"\n :style=\"{'cursor': 'wait', 'pointer-events': 'auto'}\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport BPlaceholder from './BPlaceholder.vue'\nimport type {BPlaceholderButtonProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<BPlaceholderButtonProps>(), {\n animation: undefined,\n cols: undefined,\n tag: 'div',\n variant: 'primary',\n width: undefined,\n})\nconst props = useDefaults(_props, 'BPlaceholderButton')\n\nconst computedClasses = computed(() => ({\n [`btn-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <BCard :img-placement=\"props.imgPlacement\">\n <template v-if=\"!props.noImg\" #img>\n <slot name=\"img\">\n <BCardImg\n :blank=\"!props.imgSrc ? true : false\"\n :blank-color=\"props.imgBlankColor\"\n :height=\"!props.imgSrc ? props.imgHeight : undefined\"\n :src=\"props.imgSrc\"\n :img-placement=\"props.imgPlacement\"\n :style=\"{cursor: 'wait'}\"\n />\n </slot>\n </template>\n\n <template v-if=\"!props.noHeader\" #header>\n <slot name=\"header\">\n <BPlaceholder\n :width=\"props.headerWidth\"\n :variant=\"props.headerVariant\"\n :animation=\"props.headerAnimation\"\n :size=\"props.headerSize\"\n />\n </slot>\n </template>\n <slot>\n <BPlaceholder cols=\"7\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"4\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"4\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"6\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"8\" v-bind=\"defaultAttrs\" />\n </slot>\n <template v-if=\"!props.noFooter\" #footer>\n <slot name=\"footer\">\n <component\n :is=\"footerComponent\"\n :width=\"props.footerWidth\"\n :animation=\"props.footerAnimation\"\n :size=\"props.noButton ? props.footerSize : undefined\"\n :variant=\"props.footerVariant\"\n />\n </slot>\n </template>\n </BCard>\n</template>\n\n<script setup lang=\"ts\">\nimport BCard from '../BCard/BCard.vue'\nimport BCardImg from '../BCard/BCardImg.vue'\nimport BPlaceholder from './BPlaceholder.vue'\nimport BPlaceholderButton from './BPlaceholderButton.vue'\nimport type {BPlaceholderCardProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<BPlaceholderCardProps>(), {\n animation: undefined,\n footerAnimation: undefined,\n footerSize: 'md',\n footerVariant: undefined,\n footerWidth: 100,\n headerAnimation: undefined,\n headerSize: 'md',\n headerVariant: undefined,\n headerWidth: 100,\n imgBlankColor: '#868e96',\n imgPlacement: 'top',\n imgHeight: 100,\n imgSrc: undefined,\n noButton: false,\n noFooter: false,\n noHeader: false,\n noImg: false,\n size: 'md',\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BPlaceholderCard')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n footer?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n img?: (props: Record<string, never>) => any\n}>()\n\nconst defaultAttrs = computed(() => ({\n animation: props.animation,\n size: props.size,\n variant: props.variant,\n}))\n\nconst footerComponent = computed(() => (!props.noButton ? BPlaceholderButton : BPlaceholder))\n</script>\n","<template>\n <BTableSimple>\n <slot v-if=\"!props.noHeader\" name=\"thead\">\n <thead>\n <tr>\n <th v-for=\"(_, i) in computedHeaderColumnsLength\" :key=\"i\">\n <BPlaceholder\n :size=\"props.headerSize\"\n :variant=\"props.headerVariant\"\n :animation=\"props.headerAnimation\"\n :width=\"props.headerCellWidth\"\n />\n </th>\n </tr>\n </thead>\n </slot>\n <slot>\n <tbody>\n <tr v-for=\"(_, j) in rowsNumber\" :key=\"j\">\n <td v-for=\"(__, k) in columnsNumber\" :key=\"k\">\n <BPlaceholder\n :size=\"props.size\"\n :variant=\"props.variant\"\n :animation=\"props.animation\"\n :width=\"props.cellWidth\"\n />\n </td>\n </tr>\n </tbody>\n </slot>\n <slot v-if=\"props.showFooter\" name=\"tfoot\">\n <tfoot>\n <tr>\n <th v-for=\"(_, l) in computedFooterColumnsLength\" :key=\"l\">\n <BPlaceholder\n :size=\"props.footerSize\"\n :variant=\"props.footerVariant\"\n :animation=\"props.footerAnimation\"\n :width=\"props.footerCellWidth\"\n />\n </th>\n </tr>\n </tfoot>\n </slot>\n </BTableSimple>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BPlaceholderTableProps} from '../../types/ComponentProps'\nimport BTableSimple from '../BTable/BTableSimple.vue'\nimport BPlaceholder from './BPlaceholder.vue'\nimport {useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BPlaceholderTableProps>(), {\n animation: undefined,\n cellWidth: 100,\n columns: 5,\n footerAnimation: undefined,\n footerCellWidth: 100,\n footerColumns: undefined,\n footerSize: 'md',\n footerVariant: undefined,\n headerAnimation: undefined,\n headerCellWidth: 100,\n headerColumns: undefined,\n headerSize: 'md',\n headerVariant: undefined,\n noHeader: false,\n rows: 3,\n showFooter: false,\n size: 'md',\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BPlaceholderTable')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tfoot?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n thead?: (props: Record<string, never>) => any\n}>()\n\nconst columnsToNumber = useToNumber(() => props.columns)\nconst rowsToNumber = useToNumber(() => props.rows)\nconst computedHeaderColumns = computed(() => props.headerColumns ?? NaN)\nconst computedFooterColumns = computed(() => props.footerColumns ?? NaN)\nconst headerColumnsNumber = useToNumber(computedHeaderColumns)\nconst footerColumnsNumber = useToNumber(computedFooterColumns)\n\nconst columnsNumber = computed(() => columnsToNumber.value || 5)\nconst rowsNumber = computed(() => rowsToNumber.value || 3)\n\nconst computedHeaderColumnsLength = computed(() =>\n props.headerColumns === undefined ? columnsNumber.value : headerColumnsNumber.value\n)\nconst computedFooterColumnsLength = computed(() =>\n props.footerColumns === undefined ? columnsNumber.value : footerColumnsNumber.value\n)\n</script>\n","<template>\n <slot v-if=\"props.loading\" name=\"loading\" />\n <slot v-else />\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BPlaceholderWrapperProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<BPlaceholderWrapperProps>(), {\n loading: false,\n})\nconst props = useDefaults(_props, 'BPlaceholderWrapper')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loading?: (props: Record<string, never>) => any\n}>()\n</script>\n"],"names":["_props","__props","props","useDefaults","widthString","computed","width","toString","replace","colsString","cols","colorClasses","useColorVariantClasses","bgVariant","variant","computedClasses","value","size","wrapperClasses","animation","computedStyle","defaultAttrs","footerComponent","noButton","BPlaceholder","BPlaceholderButton","columnsToNumber","useToNumber","columns","rowsToNumber","rows","computedHeaderColumns","headerColumns","NaN","computedFooterColumns","footerColumns","headerColumnsNumber","footerColumnsNumber","columnsNumber","rowsNumber","computedHeaderColumnsLength","computedFooterColumnsLength"],"mappings":"2hBAsBA,MAAMA,EAASC,EASTC,EAAQC,EAAAA,YAAYH,EAAQ,gBAE5BI,EAAcC,EAAAA,UAAS,SACX,IAAhBH,EAAMI,WACF,EACuB,iBAAhBJ,EAAMI,MACXJ,EAAMI,MAAMC,WACZL,EAAMI,MAAME,QAAQ,IAAK,MAG3BC,EAAaJ,EAAAA,UAAS,SACX,IAAfH,EAAMQ,UACF,EACsB,iBAAfR,EAAMQ,KACXR,EAAMQ,KAAKH,WACXL,EAAMQ,OAGRC,EAAeC,EAAAA,uBACnBP,EAAAA,UAAS,KAAO,CACdQ,UAAWX,EAAMY,aAGfC,EAAkBV,EAAAA,UAAS,IAAM,CACrCM,EAAaK,MACb,CACE,CAAC,OAAOP,EAAWO,cAA+B,IAArBP,EAAWO,YAA6C,IAAtBZ,EAAYY,MAC3E,CAAC,eAAed,EAAMe,QAAwB,OAAff,EAAMe,SAInCC,EAAiBb,EAAAA,UAAS,KAAO,CACrC,CAAC,eAAeH,EAAMiB,kBAAkC,IAApBjB,EAAMiB,cAGtCC,EAAgBf,EAAAA,UAAwB,KAAO,CACnDC,WAA6B,IAAtBF,EAAYY,WAAsB,EAAY,GAAGZ,EAAYY,qhBCjDtE,MAAMhB,EAASC,EAOTC,EAAQC,EAAAA,YAAYH,EAAQ,sBAE5Be,EAAkBV,EAAAA,UAAS,KAAO,CACtC,CAAC,OAAOH,EAAMY,WAA8B,OAAlBZ,EAAMY,s5BC2BlC,MAAMd,EAASC,EAqBTC,EAAQC,EAAAA,YAAYH,EAAQ,oBAa5BqB,EAAehB,EAAAA,UAAS,KAAO,CACnCc,UAAWjB,EAAMiB,UACjBF,KAAMf,EAAMe,KACZH,QAASZ,EAAMY,YAGXQ,EAAkBjB,EAAAA,UAAS,IAAQH,EAAMqB,SAAgCC,EAArBC,+nECxC1D,MAAMzB,EAASC,EAoBTC,EAAQC,EAAAA,YAAYH,EAAQ,qBAW5B0B,EAAkBC,EAAAA,aAAY,IAAMzB,EAAM0B,UAC1CC,EAAeF,EAAAA,aAAY,IAAMzB,EAAM4B,OACvCC,EAAwB1B,EAAAA,UAAS,IAAMH,EAAM8B,eAAiBC,MAC9DC,EAAwB7B,EAAAA,UAAS,IAAMH,EAAMiC,eAAiBF,MAC9DG,EAAsBT,cAAYI,GAClCM,EAAsBV,cAAYO,GAElCI,EAAgBjC,EAAAA,UAAS,IAAMqB,EAAgBV,OAAS,IACxDuB,EAAalC,EAAAA,UAAS,IAAMwB,EAAab,OAAS,IAElDwB,EAA8BnC,EAAAA,UAAS,SACnB,IAAxBH,EAAM8B,cAA8BM,EAActB,MAAQoB,EAAoBpB,QAE1EyB,EAA8BpC,EAAAA,UAAS,SACnB,IAAxBH,EAAMiC,cAA8BG,EAActB,MAAQqB,EAAoBrB,8tDC3FhF,MAAMhB,EAASC,EAGTC,EAAQC,EAAAA,YAAYH,EAAQ"}
1
+ {"version":3,"file":"BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-BIUGzj9a.js","sources":["../src/components/BPlaceholder/BPlaceholder.vue","../src/components/BPlaceholder/BPlaceholderButton.vue","../src/components/BPlaceholder/BPlaceholderCard.vue","../src/components/BPlaceholder/BPlaceholderTable.vue","../src/components/BPlaceholder/BPlaceholderWrapper.vue"],"sourcesContent":["<template>\n <component :is=\"props.wrapperTag\" :class=\"wrapperClasses\">\n <component\n v-bind=\"$attrs\"\n :is=\"tag\"\n class=\"placeholder\"\n :class=\"computedClasses\"\n :style=\"computedStyle\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, type CSSProperties} from 'vue'\nimport type {BPlaceholderProps} from '../../types/ComponentProps'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<BPlaceholderProps>(), {\n animation: undefined,\n cols: 12,\n size: 'md',\n tag: 'span',\n variant: null,\n width: undefined,\n wrapperTag: 'span',\n})\nconst props = useDefaults(_props, 'BPlaceholder')\n\nconst widthString = computed(() =>\n props.width === undefined\n ? undefined\n : typeof props.width === 'number'\n ? props.width.toString()\n : props.width.replace('%', '')\n)\n\nconst colsString = computed(() =>\n props.cols === undefined\n ? undefined\n : typeof props.cols === 'number'\n ? props.cols.toString()\n : props.cols\n)\n\nconst colorClasses = useColorVariantClasses(\n computed(() => ({\n bgVariant: props.variant,\n }))\n)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n [`col-${colsString.value}`]: colsString.value !== undefined && widthString.value === undefined,\n [`placeholder-${props.size}`]: props.size !== 'md',\n },\n])\n\nconst wrapperClasses = computed(() => ({\n [`placeholder-${props.animation}`]: props.animation !== undefined,\n}))\n\nconst computedStyle = computed<CSSProperties>(() => ({\n width: widthString.value === undefined ? undefined : `${widthString.value}%`,\n}))\n</script>\n","<template>\n <BPlaceholder\n class=\"btn disabled\"\n :class=\"computedClasses\"\n :animation=\"props.animation\"\n :width=\"props.width\"\n :cols=\"props.cols\"\n :tag=\"props.tag\"\n :style=\"{'cursor': 'wait', 'pointer-events': 'auto'}\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport BPlaceholder from './BPlaceholder.vue'\nimport type {BPlaceholderButtonProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<BPlaceholderButtonProps>(), {\n animation: undefined,\n cols: undefined,\n tag: 'div',\n variant: 'primary',\n width: undefined,\n})\nconst props = useDefaults(_props, 'BPlaceholderButton')\n\nconst computedClasses = computed(() => ({\n [`btn-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <BCard :img-placement=\"props.imgPlacement\">\n <template v-if=\"!props.noImg\" #img>\n <slot name=\"img\">\n <BCardImg\n :blank=\"!props.imgSrc ? true : false\"\n :blank-color=\"props.imgBlankColor\"\n :height=\"!props.imgSrc ? props.imgHeight : undefined\"\n :src=\"props.imgSrc\"\n :img-placement=\"props.imgPlacement\"\n :style=\"{cursor: 'wait'}\"\n />\n </slot>\n </template>\n\n <template v-if=\"!props.noHeader\" #header>\n <slot name=\"header\">\n <BPlaceholder\n :width=\"props.headerWidth\"\n :variant=\"props.headerVariant\"\n :animation=\"props.headerAnimation\"\n :size=\"props.headerSize\"\n />\n </slot>\n </template>\n <slot>\n <BPlaceholder cols=\"7\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"4\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"4\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"6\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"8\" v-bind=\"defaultAttrs\" />\n </slot>\n <template v-if=\"!props.noFooter\" #footer>\n <slot name=\"footer\">\n <component\n :is=\"footerComponent\"\n :width=\"props.footerWidth\"\n :animation=\"props.footerAnimation\"\n :size=\"props.noButton ? props.footerSize : undefined\"\n :variant=\"props.footerVariant\"\n />\n </slot>\n </template>\n </BCard>\n</template>\n\n<script setup lang=\"ts\">\nimport BCard from '../BCard/BCard.vue'\nimport BCardImg from '../BCard/BCardImg.vue'\nimport BPlaceholder from './BPlaceholder.vue'\nimport BPlaceholderButton from './BPlaceholderButton.vue'\nimport type {BPlaceholderCardProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<BPlaceholderCardProps>(), {\n animation: undefined,\n footerAnimation: undefined,\n footerSize: 'md',\n footerVariant: undefined,\n footerWidth: 100,\n headerAnimation: undefined,\n headerSize: 'md',\n headerVariant: undefined,\n headerWidth: 100,\n imgBlankColor: '#868e96',\n imgPlacement: 'top',\n imgHeight: 100,\n imgSrc: undefined,\n noButton: false,\n noFooter: false,\n noHeader: false,\n noImg: false,\n size: 'md',\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BPlaceholderCard')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n footer?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n img?: (props: Record<string, never>) => any\n}>()\n\nconst defaultAttrs = computed(() => ({\n animation: props.animation,\n size: props.size,\n variant: props.variant,\n}))\n\nconst footerComponent = computed(() => (!props.noButton ? BPlaceholderButton : BPlaceholder))\n</script>\n","<template>\n <BTableSimple>\n <slot v-if=\"!props.noHeader\" name=\"thead\">\n <thead>\n <tr>\n <th v-for=\"(_, i) in computedHeaderColumnsLength\" :key=\"i\">\n <BPlaceholder\n :size=\"props.headerSize\"\n :variant=\"props.headerVariant\"\n :animation=\"props.headerAnimation\"\n :width=\"props.headerCellWidth\"\n />\n </th>\n </tr>\n </thead>\n </slot>\n <slot>\n <tbody>\n <tr v-for=\"(_, j) in rowsNumber\" :key=\"j\">\n <td v-for=\"(__, k) in columnsNumber\" :key=\"k\">\n <BPlaceholder\n :size=\"props.size\"\n :variant=\"props.variant\"\n :animation=\"props.animation\"\n :width=\"props.cellWidth\"\n />\n </td>\n </tr>\n </tbody>\n </slot>\n <slot v-if=\"props.showFooter\" name=\"tfoot\">\n <tfoot>\n <tr>\n <th v-for=\"(_, l) in computedFooterColumnsLength\" :key=\"l\">\n <BPlaceholder\n :size=\"props.footerSize\"\n :variant=\"props.footerVariant\"\n :animation=\"props.footerAnimation\"\n :width=\"props.footerCellWidth\"\n />\n </th>\n </tr>\n </tfoot>\n </slot>\n </BTableSimple>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BPlaceholderTableProps} from '../../types/ComponentProps'\nimport BTableSimple from '../BTable/BTableSimple.vue'\nimport BPlaceholder from './BPlaceholder.vue'\nimport {useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BPlaceholderTableProps>(), {\n animation: undefined,\n cellWidth: 100,\n columns: 5,\n footerAnimation: undefined,\n footerCellWidth: 100,\n footerColumns: undefined,\n footerSize: 'md',\n footerVariant: undefined,\n headerAnimation: undefined,\n headerCellWidth: 100,\n headerColumns: undefined,\n headerSize: 'md',\n headerVariant: undefined,\n noHeader: false,\n rows: 3,\n showFooter: false,\n size: 'md',\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BPlaceholderTable')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tfoot?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n thead?: (props: Record<string, never>) => any\n}>()\n\nconst columnsToNumber = useToNumber(() => props.columns)\nconst rowsToNumber = useToNumber(() => props.rows)\nconst computedHeaderColumns = computed(() => props.headerColumns ?? NaN)\nconst computedFooterColumns = computed(() => props.footerColumns ?? NaN)\nconst headerColumnsNumber = useToNumber(computedHeaderColumns)\nconst footerColumnsNumber = useToNumber(computedFooterColumns)\n\nconst columnsNumber = computed(() => columnsToNumber.value || 5)\nconst rowsNumber = computed(() => rowsToNumber.value || 3)\n\nconst computedHeaderColumnsLength = computed(() =>\n props.headerColumns === undefined ? columnsNumber.value : headerColumnsNumber.value\n)\nconst computedFooterColumnsLength = computed(() =>\n props.footerColumns === undefined ? columnsNumber.value : footerColumnsNumber.value\n)\n</script>\n","<template>\n <slot v-if=\"props.loading\" name=\"loading\" />\n <slot v-else />\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BPlaceholderWrapperProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<BPlaceholderWrapperProps>(), {\n loading: false,\n})\nconst props = useDefaults(_props, 'BPlaceholderWrapper')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loading?: (props: Record<string, never>) => any\n}>()\n</script>\n"],"names":["_props","__props","props","useDefaults","widthString","computed","width","toString","replace","colsString","cols","colorClasses","useColorVariantClasses","bgVariant","variant","computedClasses","value","size","wrapperClasses","animation","computedStyle","defaultAttrs","footerComponent","noButton","BPlaceholder","BPlaceholderButton","columnsToNumber","useToNumber","columns","rowsToNumber","rows","computedHeaderColumns","headerColumns","NaN","computedFooterColumns","footerColumns","headerColumnsNumber","footerColumnsNumber","columnsNumber","rowsNumber","computedHeaderColumnsLength","computedFooterColumnsLength"],"mappings":"2hBAsBA,MAAMA,EAASC,EASTC,EAAQC,EAAAA,YAAYH,EAAQ,gBAE5BI,EAAcC,EAAAA,UAAS,SACX,IAAhBH,EAAMI,WACF,EACuB,iBAAhBJ,EAAMI,MACXJ,EAAMI,MAAMC,WACZL,EAAMI,MAAME,QAAQ,IAAK,MAG3BC,EAAaJ,EAAAA,UAAS,SACX,IAAfH,EAAMQ,UACF,EACsB,iBAAfR,EAAMQ,KACXR,EAAMQ,KAAKH,WACXL,EAAMQ,OAGRC,EAAeC,EAAAA,uBACnBP,EAAAA,UAAS,KAAO,CACdQ,UAAWX,EAAMY,aAGfC,EAAkBV,EAAAA,UAAS,IAAM,CACrCM,EAAaK,MACb,CACE,CAAC,OAAOP,EAAWO,cAA+B,IAArBP,EAAWO,YAA6C,IAAtBZ,EAAYY,MAC3E,CAAC,eAAed,EAAMe,QAAwB,OAAff,EAAMe,SAInCC,EAAiBb,EAAAA,UAAS,KAAO,CACrC,CAAC,eAAeH,EAAMiB,kBAAkC,IAApBjB,EAAMiB,cAGtCC,EAAgBf,EAAAA,UAAwB,KAAO,CACnDC,WAA6B,IAAtBF,EAAYY,WAAsB,EAAY,GAAGZ,EAAYY,qhBCjDtE,MAAMhB,EAASC,EAOTC,EAAQC,EAAAA,YAAYH,EAAQ,sBAE5Be,EAAkBV,EAAAA,UAAS,KAAO,CACtC,CAAC,OAAOH,EAAMY,WAA8B,OAAlBZ,EAAMY,s5BC2BlC,MAAMd,EAASC,EAqBTC,EAAQC,EAAAA,YAAYH,EAAQ,oBAa5BqB,EAAehB,EAAAA,UAAS,KAAO,CACnCc,UAAWjB,EAAMiB,UACjBF,KAAMf,EAAMe,KACZH,QAASZ,EAAMY,YAGXQ,EAAkBjB,EAAAA,UAAS,IAAQH,EAAMqB,SAAgCC,EAArBC,+nECxC1D,MAAMzB,EAASC,EAoBTC,EAAQC,EAAAA,YAAYH,EAAQ,qBAW5B0B,EAAkBC,EAAAA,aAAY,IAAMzB,EAAM0B,UAC1CC,EAAeF,EAAAA,aAAY,IAAMzB,EAAM4B,OACvCC,EAAwB1B,EAAAA,UAAS,IAAMH,EAAM8B,eAAiBC,MAC9DC,EAAwB7B,EAAAA,UAAS,IAAMH,EAAMiC,eAAiBF,MAC9DG,EAAsBT,cAAYI,GAClCM,EAAsBV,cAAYO,GAElCI,EAAgBjC,EAAAA,UAAS,IAAMqB,EAAgBV,OAAS,IACxDuB,EAAalC,EAAAA,UAAS,IAAMwB,EAAab,OAAS,IAElDwB,EAA8BnC,EAAAA,UAAS,SACnB,IAAxBH,EAAM8B,cAA8BM,EAActB,MAAQoB,EAAoBpB,QAE1EyB,EAA8BpC,EAAAA,UAAS,SACnB,IAAxBH,EAAMiC,cAA8BG,EAActB,MAAQqB,EAAoBrB,8tDC3FhF,MAAMhB,EAASC,EAGTC,EAAQC,EAAAA,YAAYH,EAAQ"}
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, openBlock, createBlock, resolveDynamicComponent, unref, normalizeClass, withCtx, mergeProps, createSlots, renderSlot, createVNode, createElementVNode, createElementBlock, Fragment, renderList, createCommentVNode } from "vue";
2
2
  import { _ as _sfc_main$5, d as _sfc_main$6 } from "./BCard.vue_vue_type_script_setup_true_lang-DoeLCt4a.mjs";
3
3
  import { u as useDefaults } from "./useDefaults-BTLXvYhO.mjs";
4
- import { _ as _sfc_main$7 } from "./BTableSimple.vue_vue_type_script_setup_true_lang-B4MDRM8j.mjs";
4
+ import { _ as _sfc_main$7 } from "./BTableSimple.vue_vue_type_script_setup_true_lang-Dbrg2rgZ.mjs";
5
5
  import { u as useColorVariantClasses } from "./useColorVariantClasses-ZDE19TZw.mjs";
6
6
  import { u as useToNumber } from "./index-D3jGjWWk.mjs";
7
7
  const _sfc_main$4 = /* @__PURE__ */ defineComponent({
@@ -300,4 +300,4 @@ export {
300
300
  _sfc_main$1 as c,
301
301
  _sfc_main as d
302
302
  };
303
- //# sourceMappingURL=BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-DpmTeaLy.mjs.map
303
+ //# sourceMappingURL=BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-BjEhw9SS.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-DpmTeaLy.mjs","sources":["../src/components/BPlaceholder/BPlaceholder.vue","../src/components/BPlaceholder/BPlaceholderButton.vue","../src/components/BPlaceholder/BPlaceholderCard.vue","../src/components/BPlaceholder/BPlaceholderTable.vue","../src/components/BPlaceholder/BPlaceholderWrapper.vue"],"sourcesContent":["<template>\n <component :is=\"props.wrapperTag\" :class=\"wrapperClasses\">\n <component\n v-bind=\"$attrs\"\n :is=\"tag\"\n class=\"placeholder\"\n :class=\"computedClasses\"\n :style=\"computedStyle\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, type CSSProperties} from 'vue'\nimport type {BPlaceholderProps} from '../../types/ComponentProps'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<BPlaceholderProps>(), {\n animation: undefined,\n cols: 12,\n size: 'md',\n tag: 'span',\n variant: null,\n width: undefined,\n wrapperTag: 'span',\n})\nconst props = useDefaults(_props, 'BPlaceholder')\n\nconst widthString = computed(() =>\n props.width === undefined\n ? undefined\n : typeof props.width === 'number'\n ? props.width.toString()\n : props.width.replace('%', '')\n)\n\nconst colsString = computed(() =>\n props.cols === undefined\n ? undefined\n : typeof props.cols === 'number'\n ? props.cols.toString()\n : props.cols\n)\n\nconst colorClasses = useColorVariantClasses(\n computed(() => ({\n bgVariant: props.variant,\n }))\n)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n [`col-${colsString.value}`]: colsString.value !== undefined && widthString.value === undefined,\n [`placeholder-${props.size}`]: props.size !== 'md',\n },\n])\n\nconst wrapperClasses = computed(() => ({\n [`placeholder-${props.animation}`]: props.animation !== undefined,\n}))\n\nconst computedStyle = computed<CSSProperties>(() => ({\n width: widthString.value === undefined ? undefined : `${widthString.value}%`,\n}))\n</script>\n","<template>\n <BPlaceholder\n class=\"btn disabled\"\n :class=\"computedClasses\"\n :animation=\"props.animation\"\n :width=\"props.width\"\n :cols=\"props.cols\"\n :tag=\"props.tag\"\n :style=\"{'cursor': 'wait', 'pointer-events': 'auto'}\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport BPlaceholder from './BPlaceholder.vue'\nimport type {BPlaceholderButtonProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<BPlaceholderButtonProps>(), {\n animation: undefined,\n cols: undefined,\n tag: 'div',\n variant: 'primary',\n width: undefined,\n})\nconst props = useDefaults(_props, 'BPlaceholderButton')\n\nconst computedClasses = computed(() => ({\n [`btn-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <BCard :img-placement=\"props.imgPlacement\">\n <template v-if=\"!props.noImg\" #img>\n <slot name=\"img\">\n <BCardImg\n :blank=\"!props.imgSrc ? true : false\"\n :blank-color=\"props.imgBlankColor\"\n :height=\"!props.imgSrc ? props.imgHeight : undefined\"\n :src=\"props.imgSrc\"\n :img-placement=\"props.imgPlacement\"\n :style=\"{cursor: 'wait'}\"\n />\n </slot>\n </template>\n\n <template v-if=\"!props.noHeader\" #header>\n <slot name=\"header\">\n <BPlaceholder\n :width=\"props.headerWidth\"\n :variant=\"props.headerVariant\"\n :animation=\"props.headerAnimation\"\n :size=\"props.headerSize\"\n />\n </slot>\n </template>\n <slot>\n <BPlaceholder cols=\"7\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"4\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"4\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"6\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"8\" v-bind=\"defaultAttrs\" />\n </slot>\n <template v-if=\"!props.noFooter\" #footer>\n <slot name=\"footer\">\n <component\n :is=\"footerComponent\"\n :width=\"props.footerWidth\"\n :animation=\"props.footerAnimation\"\n :size=\"props.noButton ? props.footerSize : undefined\"\n :variant=\"props.footerVariant\"\n />\n </slot>\n </template>\n </BCard>\n</template>\n\n<script setup lang=\"ts\">\nimport BCard from '../BCard/BCard.vue'\nimport BCardImg from '../BCard/BCardImg.vue'\nimport BPlaceholder from './BPlaceholder.vue'\nimport BPlaceholderButton from './BPlaceholderButton.vue'\nimport type {BPlaceholderCardProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<BPlaceholderCardProps>(), {\n animation: undefined,\n footerAnimation: undefined,\n footerSize: 'md',\n footerVariant: undefined,\n footerWidth: 100,\n headerAnimation: undefined,\n headerSize: 'md',\n headerVariant: undefined,\n headerWidth: 100,\n imgBlankColor: '#868e96',\n imgPlacement: 'top',\n imgHeight: 100,\n imgSrc: undefined,\n noButton: false,\n noFooter: false,\n noHeader: false,\n noImg: false,\n size: 'md',\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BPlaceholderCard')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n footer?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n img?: (props: Record<string, never>) => any\n}>()\n\nconst defaultAttrs = computed(() => ({\n animation: props.animation,\n size: props.size,\n variant: props.variant,\n}))\n\nconst footerComponent = computed(() => (!props.noButton ? BPlaceholderButton : BPlaceholder))\n</script>\n","<template>\n <BTableSimple>\n <slot v-if=\"!props.noHeader\" name=\"thead\">\n <thead>\n <tr>\n <th v-for=\"(_, i) in computedHeaderColumnsLength\" :key=\"i\">\n <BPlaceholder\n :size=\"props.headerSize\"\n :variant=\"props.headerVariant\"\n :animation=\"props.headerAnimation\"\n :width=\"props.headerCellWidth\"\n />\n </th>\n </tr>\n </thead>\n </slot>\n <slot>\n <tbody>\n <tr v-for=\"(_, j) in rowsNumber\" :key=\"j\">\n <td v-for=\"(__, k) in columnsNumber\" :key=\"k\">\n <BPlaceholder\n :size=\"props.size\"\n :variant=\"props.variant\"\n :animation=\"props.animation\"\n :width=\"props.cellWidth\"\n />\n </td>\n </tr>\n </tbody>\n </slot>\n <slot v-if=\"props.showFooter\" name=\"tfoot\">\n <tfoot>\n <tr>\n <th v-for=\"(_, l) in computedFooterColumnsLength\" :key=\"l\">\n <BPlaceholder\n :size=\"props.footerSize\"\n :variant=\"props.footerVariant\"\n :animation=\"props.footerAnimation\"\n :width=\"props.footerCellWidth\"\n />\n </th>\n </tr>\n </tfoot>\n </slot>\n </BTableSimple>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BPlaceholderTableProps} from '../../types/ComponentProps'\nimport BTableSimple from '../BTable/BTableSimple.vue'\nimport BPlaceholder from './BPlaceholder.vue'\nimport {useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BPlaceholderTableProps>(), {\n animation: undefined,\n cellWidth: 100,\n columns: 5,\n footerAnimation: undefined,\n footerCellWidth: 100,\n footerColumns: undefined,\n footerSize: 'md',\n footerVariant: undefined,\n headerAnimation: undefined,\n headerCellWidth: 100,\n headerColumns: undefined,\n headerSize: 'md',\n headerVariant: undefined,\n noHeader: false,\n rows: 3,\n showFooter: false,\n size: 'md',\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BPlaceholderTable')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tfoot?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n thead?: (props: Record<string, never>) => any\n}>()\n\nconst columnsToNumber = useToNumber(() => props.columns)\nconst rowsToNumber = useToNumber(() => props.rows)\nconst computedHeaderColumns = computed(() => props.headerColumns ?? NaN)\nconst computedFooterColumns = computed(() => props.footerColumns ?? NaN)\nconst headerColumnsNumber = useToNumber(computedHeaderColumns)\nconst footerColumnsNumber = useToNumber(computedFooterColumns)\n\nconst columnsNumber = computed(() => columnsToNumber.value || 5)\nconst rowsNumber = computed(() => rowsToNumber.value || 3)\n\nconst computedHeaderColumnsLength = computed(() =>\n props.headerColumns === undefined ? columnsNumber.value : headerColumnsNumber.value\n)\nconst computedFooterColumnsLength = computed(() =>\n props.footerColumns === undefined ? columnsNumber.value : footerColumnsNumber.value\n)\n</script>\n","<template>\n <slot v-if=\"props.loading\" name=\"loading\" />\n <slot v-else />\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BPlaceholderWrapperProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<BPlaceholderWrapperProps>(), {\n loading: false,\n})\nconst props = useDefaults(_props, 'BPlaceholderWrapper')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loading?: (props: Record<string, never>) => any\n}>()\n</script>\n"],"names":["BPlaceholderButton","BPlaceholder"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsBA,UAAM,SAAS;AAST,UAAA,QAAQ,YAAY,QAAQ,cAAc;AAEhD,UAAM,cAAc;AAAA,MAAS,MAC3B,MAAM,UAAU,SACZ,SACA,OAAO,MAAM,UAAU,WACrB,MAAM,MAAM,SAAS,IACrB,MAAM,MAAM,QAAQ,KAAK,EAAE;AAAA,IACnC;AAEA,UAAM,aAAa;AAAA,MAAS,MAC1B,MAAM,SAAS,SACX,SACA,OAAO,MAAM,SAAS,WACpB,MAAM,KAAK,SAAA,IACX,MAAM;AAAA,IACd;AAEA,UAAM,eAAe;AAAA,MACnB,SAAS,OAAO;AAAA,QACd,WAAW,MAAM;AAAA,MAAA,EACjB;AAAA,IACJ;AACM,UAAA,kBAAkB,SAAS,MAAM;AAAA,MACrC,aAAa;AAAA,MACb;AAAA,QACE,CAAC,OAAO,WAAW,KAAK,EAAE,GAAG,WAAW,UAAU,UAAa,YAAY,UAAU;AAAA,QACrF,CAAC,eAAe,MAAM,IAAI,EAAE,GAAG,MAAM,SAAS;AAAA,MAAA;AAAA,IAChD,CACD;AAEK,UAAA,iBAAiB,SAAS,OAAO;AAAA,MACrC,CAAC,eAAe,MAAM,SAAS,EAAE,GAAG,MAAM,cAAc;AAAA,IAAA,EACxD;AAEI,UAAA,gBAAgB,SAAwB,OAAO;AAAA,MACnD,OAAO,YAAY,UAAU,SAAY,SAAY,GAAG,YAAY,KAAK;AAAA,IAAA,EACzE;;;;;;;;;;;;;;;;;;;;;;;;;;AClDF,UAAM,SAAS;AAOT,UAAA,QAAQ,YAAY,QAAQ,oBAAoB;AAEhD,UAAA,kBAAkB,SAAS,OAAO;AAAA,MACtC,CAAC,OAAO,MAAM,OAAO,EAAE,GAAG,MAAM,YAAY;AAAA,IAAA,EAC5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC0BF,UAAM,SAAS;AAqBT,UAAA,QAAQ,YAAY,QAAQ,kBAAkB;AAa9C,UAAA,eAAe,SAAS,OAAO;AAAA,MACnC,WAAW,MAAM;AAAA,MACjB,MAAM,MAAM;AAAA,MACZ,SAAS,MAAM;AAAA,IAAA,EACf;AAEF,UAAM,kBAAkB,SAAS,MAAO,CAAC,MAAM,WAAWA,cAAqBC,WAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxC5F,UAAM,SAAS;AAoBT,UAAA,QAAQ,YAAY,QAAQ,mBAAmB;AAWrD,UAAM,kBAAkB,YAAY,MAAM,MAAM,OAAO;AACvD,UAAM,eAAe,YAAY,MAAM,MAAM,IAAI;AACjD,UAAM,wBAAwB,SAAS,MAAM,MAAM,iBAAiB,GAAG;AACvE,UAAM,wBAAwB,SAAS,MAAM,MAAM,iBAAiB,GAAG;AACjE,UAAA,sBAAsB,YAAY,qBAAqB;AACvD,UAAA,sBAAsB,YAAY,qBAAqB;AAE7D,UAAM,gBAAgB,SAAS,MAAM,gBAAgB,SAAS,CAAC;AAC/D,UAAM,aAAa,SAAS,MAAM,aAAa,SAAS,CAAC;AAEzD,UAAM,8BAA8B;AAAA,MAAS,MAC3C,MAAM,kBAAkB,SAAY,cAAc,QAAQ,oBAAoB;AAAA,IAChF;AACA,UAAM,8BAA8B;AAAA,MAAS,MAC3C,MAAM,kBAAkB,SAAY,cAAc,QAAQ,oBAAoB;AAAA,IAChF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5FA,UAAM,SAAS;AAGT,UAAA,QAAQ,YAAY,QAAQ,qBAAqB;;;;;;"}
1
+ {"version":3,"file":"BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-BjEhw9SS.mjs","sources":["../src/components/BPlaceholder/BPlaceholder.vue","../src/components/BPlaceholder/BPlaceholderButton.vue","../src/components/BPlaceholder/BPlaceholderCard.vue","../src/components/BPlaceholder/BPlaceholderTable.vue","../src/components/BPlaceholder/BPlaceholderWrapper.vue"],"sourcesContent":["<template>\n <component :is=\"props.wrapperTag\" :class=\"wrapperClasses\">\n <component\n v-bind=\"$attrs\"\n :is=\"tag\"\n class=\"placeholder\"\n :class=\"computedClasses\"\n :style=\"computedStyle\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, type CSSProperties} from 'vue'\nimport type {BPlaceholderProps} from '../../types/ComponentProps'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<BPlaceholderProps>(), {\n animation: undefined,\n cols: 12,\n size: 'md',\n tag: 'span',\n variant: null,\n width: undefined,\n wrapperTag: 'span',\n})\nconst props = useDefaults(_props, 'BPlaceholder')\n\nconst widthString = computed(() =>\n props.width === undefined\n ? undefined\n : typeof props.width === 'number'\n ? props.width.toString()\n : props.width.replace('%', '')\n)\n\nconst colsString = computed(() =>\n props.cols === undefined\n ? undefined\n : typeof props.cols === 'number'\n ? props.cols.toString()\n : props.cols\n)\n\nconst colorClasses = useColorVariantClasses(\n computed(() => ({\n bgVariant: props.variant,\n }))\n)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n [`col-${colsString.value}`]: colsString.value !== undefined && widthString.value === undefined,\n [`placeholder-${props.size}`]: props.size !== 'md',\n },\n])\n\nconst wrapperClasses = computed(() => ({\n [`placeholder-${props.animation}`]: props.animation !== undefined,\n}))\n\nconst computedStyle = computed<CSSProperties>(() => ({\n width: widthString.value === undefined ? undefined : `${widthString.value}%`,\n}))\n</script>\n","<template>\n <BPlaceholder\n class=\"btn disabled\"\n :class=\"computedClasses\"\n :animation=\"props.animation\"\n :width=\"props.width\"\n :cols=\"props.cols\"\n :tag=\"props.tag\"\n :style=\"{'cursor': 'wait', 'pointer-events': 'auto'}\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport BPlaceholder from './BPlaceholder.vue'\nimport type {BPlaceholderButtonProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<BPlaceholderButtonProps>(), {\n animation: undefined,\n cols: undefined,\n tag: 'div',\n variant: 'primary',\n width: undefined,\n})\nconst props = useDefaults(_props, 'BPlaceholderButton')\n\nconst computedClasses = computed(() => ({\n [`btn-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <BCard :img-placement=\"props.imgPlacement\">\n <template v-if=\"!props.noImg\" #img>\n <slot name=\"img\">\n <BCardImg\n :blank=\"!props.imgSrc ? true : false\"\n :blank-color=\"props.imgBlankColor\"\n :height=\"!props.imgSrc ? props.imgHeight : undefined\"\n :src=\"props.imgSrc\"\n :img-placement=\"props.imgPlacement\"\n :style=\"{cursor: 'wait'}\"\n />\n </slot>\n </template>\n\n <template v-if=\"!props.noHeader\" #header>\n <slot name=\"header\">\n <BPlaceholder\n :width=\"props.headerWidth\"\n :variant=\"props.headerVariant\"\n :animation=\"props.headerAnimation\"\n :size=\"props.headerSize\"\n />\n </slot>\n </template>\n <slot>\n <BPlaceholder cols=\"7\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"4\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"4\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"6\" v-bind=\"defaultAttrs\" />\n <BPlaceholder cols=\"8\" v-bind=\"defaultAttrs\" />\n </slot>\n <template v-if=\"!props.noFooter\" #footer>\n <slot name=\"footer\">\n <component\n :is=\"footerComponent\"\n :width=\"props.footerWidth\"\n :animation=\"props.footerAnimation\"\n :size=\"props.noButton ? props.footerSize : undefined\"\n :variant=\"props.footerVariant\"\n />\n </slot>\n </template>\n </BCard>\n</template>\n\n<script setup lang=\"ts\">\nimport BCard from '../BCard/BCard.vue'\nimport BCardImg from '../BCard/BCardImg.vue'\nimport BPlaceholder from './BPlaceholder.vue'\nimport BPlaceholderButton from './BPlaceholderButton.vue'\nimport type {BPlaceholderCardProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<BPlaceholderCardProps>(), {\n animation: undefined,\n footerAnimation: undefined,\n footerSize: 'md',\n footerVariant: undefined,\n footerWidth: 100,\n headerAnimation: undefined,\n headerSize: 'md',\n headerVariant: undefined,\n headerWidth: 100,\n imgBlankColor: '#868e96',\n imgPlacement: 'top',\n imgHeight: 100,\n imgSrc: undefined,\n noButton: false,\n noFooter: false,\n noHeader: false,\n noImg: false,\n size: 'md',\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BPlaceholderCard')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n footer?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n img?: (props: Record<string, never>) => any\n}>()\n\nconst defaultAttrs = computed(() => ({\n animation: props.animation,\n size: props.size,\n variant: props.variant,\n}))\n\nconst footerComponent = computed(() => (!props.noButton ? BPlaceholderButton : BPlaceholder))\n</script>\n","<template>\n <BTableSimple>\n <slot v-if=\"!props.noHeader\" name=\"thead\">\n <thead>\n <tr>\n <th v-for=\"(_, i) in computedHeaderColumnsLength\" :key=\"i\">\n <BPlaceholder\n :size=\"props.headerSize\"\n :variant=\"props.headerVariant\"\n :animation=\"props.headerAnimation\"\n :width=\"props.headerCellWidth\"\n />\n </th>\n </tr>\n </thead>\n </slot>\n <slot>\n <tbody>\n <tr v-for=\"(_, j) in rowsNumber\" :key=\"j\">\n <td v-for=\"(__, k) in columnsNumber\" :key=\"k\">\n <BPlaceholder\n :size=\"props.size\"\n :variant=\"props.variant\"\n :animation=\"props.animation\"\n :width=\"props.cellWidth\"\n />\n </td>\n </tr>\n </tbody>\n </slot>\n <slot v-if=\"props.showFooter\" name=\"tfoot\">\n <tfoot>\n <tr>\n <th v-for=\"(_, l) in computedFooterColumnsLength\" :key=\"l\">\n <BPlaceholder\n :size=\"props.footerSize\"\n :variant=\"props.footerVariant\"\n :animation=\"props.footerAnimation\"\n :width=\"props.footerCellWidth\"\n />\n </th>\n </tr>\n </tfoot>\n </slot>\n </BTableSimple>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BPlaceholderTableProps} from '../../types/ComponentProps'\nimport BTableSimple from '../BTable/BTableSimple.vue'\nimport BPlaceholder from './BPlaceholder.vue'\nimport {useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BPlaceholderTableProps>(), {\n animation: undefined,\n cellWidth: 100,\n columns: 5,\n footerAnimation: undefined,\n footerCellWidth: 100,\n footerColumns: undefined,\n footerSize: 'md',\n footerVariant: undefined,\n headerAnimation: undefined,\n headerCellWidth: 100,\n headerColumns: undefined,\n headerSize: 'md',\n headerVariant: undefined,\n noHeader: false,\n rows: 3,\n showFooter: false,\n size: 'md',\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BPlaceholderTable')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tfoot?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n thead?: (props: Record<string, never>) => any\n}>()\n\nconst columnsToNumber = useToNumber(() => props.columns)\nconst rowsToNumber = useToNumber(() => props.rows)\nconst computedHeaderColumns = computed(() => props.headerColumns ?? NaN)\nconst computedFooterColumns = computed(() => props.footerColumns ?? NaN)\nconst headerColumnsNumber = useToNumber(computedHeaderColumns)\nconst footerColumnsNumber = useToNumber(computedFooterColumns)\n\nconst columnsNumber = computed(() => columnsToNumber.value || 5)\nconst rowsNumber = computed(() => rowsToNumber.value || 3)\n\nconst computedHeaderColumnsLength = computed(() =>\n props.headerColumns === undefined ? columnsNumber.value : headerColumnsNumber.value\n)\nconst computedFooterColumnsLength = computed(() =>\n props.footerColumns === undefined ? columnsNumber.value : footerColumnsNumber.value\n)\n</script>\n","<template>\n <slot v-if=\"props.loading\" name=\"loading\" />\n <slot v-else />\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BPlaceholderWrapperProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<BPlaceholderWrapperProps>(), {\n loading: false,\n})\nconst props = useDefaults(_props, 'BPlaceholderWrapper')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loading?: (props: Record<string, never>) => any\n}>()\n</script>\n"],"names":["BPlaceholderButton","BPlaceholder"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsBA,UAAM,SAAS;AAST,UAAA,QAAQ,YAAY,QAAQ,cAAc;AAEhD,UAAM,cAAc;AAAA,MAAS,MAC3B,MAAM,UAAU,SACZ,SACA,OAAO,MAAM,UAAU,WACrB,MAAM,MAAM,SAAS,IACrB,MAAM,MAAM,QAAQ,KAAK,EAAE;AAAA,IACnC;AAEA,UAAM,aAAa;AAAA,MAAS,MAC1B,MAAM,SAAS,SACX,SACA,OAAO,MAAM,SAAS,WACpB,MAAM,KAAK,SAAA,IACX,MAAM;AAAA,IACd;AAEA,UAAM,eAAe;AAAA,MACnB,SAAS,OAAO;AAAA,QACd,WAAW,MAAM;AAAA,MAAA,EACjB;AAAA,IACJ;AACM,UAAA,kBAAkB,SAAS,MAAM;AAAA,MACrC,aAAa;AAAA,MACb;AAAA,QACE,CAAC,OAAO,WAAW,KAAK,EAAE,GAAG,WAAW,UAAU,UAAa,YAAY,UAAU;AAAA,QACrF,CAAC,eAAe,MAAM,IAAI,EAAE,GAAG,MAAM,SAAS;AAAA,MAAA;AAAA,IAChD,CACD;AAEK,UAAA,iBAAiB,SAAS,OAAO;AAAA,MACrC,CAAC,eAAe,MAAM,SAAS,EAAE,GAAG,MAAM,cAAc;AAAA,IAAA,EACxD;AAEI,UAAA,gBAAgB,SAAwB,OAAO;AAAA,MACnD,OAAO,YAAY,UAAU,SAAY,SAAY,GAAG,YAAY,KAAK;AAAA,IAAA,EACzE;;;;;;;;;;;;;;;;;;;;;;;;;;AClDF,UAAM,SAAS;AAOT,UAAA,QAAQ,YAAY,QAAQ,oBAAoB;AAEhD,UAAA,kBAAkB,SAAS,OAAO;AAAA,MACtC,CAAC,OAAO,MAAM,OAAO,EAAE,GAAG,MAAM,YAAY;AAAA,IAAA,EAC5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC0BF,UAAM,SAAS;AAqBT,UAAA,QAAQ,YAAY,QAAQ,kBAAkB;AAa9C,UAAA,eAAe,SAAS,OAAO;AAAA,MACnC,WAAW,MAAM;AAAA,MACjB,MAAM,MAAM;AAAA,MACZ,SAAS,MAAM;AAAA,IAAA,EACf;AAEF,UAAM,kBAAkB,SAAS,MAAO,CAAC,MAAM,WAAWA,cAAqBC,WAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxC5F,UAAM,SAAS;AAoBT,UAAA,QAAQ,YAAY,QAAQ,mBAAmB;AAWrD,UAAM,kBAAkB,YAAY,MAAM,MAAM,OAAO;AACvD,UAAM,eAAe,YAAY,MAAM,MAAM,IAAI;AACjD,UAAM,wBAAwB,SAAS,MAAM,MAAM,iBAAiB,GAAG;AACvE,UAAM,wBAAwB,SAAS,MAAM,MAAM,iBAAiB,GAAG;AACjE,UAAA,sBAAsB,YAAY,qBAAqB;AACvD,UAAA,sBAAsB,YAAY,qBAAqB;AAE7D,UAAM,gBAAgB,SAAS,MAAM,gBAAgB,SAAS,CAAC;AAC/D,UAAM,aAAa,SAAS,MAAM,aAAa,SAAS,CAAC;AAEzD,UAAM,8BAA8B;AAAA,MAAS,MAC3C,MAAM,kBAAkB,SAAY,cAAc,QAAQ,oBAAoB;AAAA,IAChF;AACA,UAAM,8BAA8B;AAAA,MAAS,MAC3C,MAAM,kBAAkB,SAAY,cAAc,QAAQ,oBAAoB;AAAA,IAChF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5FA,UAAM,SAAS;AAGT,UAAA,QAAQ,YAAY,QAAQ,qBAAqB;;;;;;"}