bootstrap-vue-next 0.44.7 → 0.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{BAlert-BnT7fF6B.js → BAlert-CHbgLTZH.js} +2 -2
- package/dist/{BAlert-BnT7fF6B.js.map → BAlert-CHbgLTZH.js.map} +1 -1
- package/dist/{BAlert-Qiyqq4rE.mjs → BAlert-CRRUJXYi.mjs} +2 -2
- package/dist/{BAlert-Qiyqq4rE.mjs.map → BAlert-CRRUJXYi.mjs.map} +1 -1
- package/dist/{BAutocomplete-jAlZC6_t.js → BAutocomplete-4CFl6XQR.js} +3 -3
- package/dist/{BAutocomplete-jAlZC6_t.js.map → BAutocomplete-4CFl6XQR.js.map} +1 -1
- package/dist/{BAutocomplete-QBIaWPY1.mjs → BAutocomplete-B7yzKPIp.mjs} +3 -3
- package/dist/{BAutocomplete-QBIaWPY1.mjs.map → BAutocomplete-B7yzKPIp.mjs.map} +1 -1
- package/dist/{BAvatar-lefHkDuG.js → BAvatar-BHqTW5Ll.js} +1 -2
- package/dist/BAvatar-BHqTW5Ll.js.map +1 -0
- package/dist/{BAvatar-D7aFEXLH.mjs → BAvatar-BSLk69M0.mjs} +1 -2
- package/dist/BAvatar-BSLk69M0.mjs.map +1 -0
- package/dist/{BButton-kykTWnBy.js → BButton-BUYwco3v.js} +4 -4
- package/dist/BButton-BUYwco3v.js.map +1 -0
- package/dist/{BButton-DBRs8Pz_.js → BButton-Bw4HgpsF.js} +10 -13
- package/dist/BButton-Bw4HgpsF.js.map +1 -0
- package/dist/{BButton-BRvIFnRm.mjs → BButton-CDo9SRvU.mjs} +10 -13
- package/dist/BButton-CDo9SRvU.mjs.map +1 -0
- package/dist/{BButton-DNmtqoqR.mjs → BButton-DgequxLk.mjs} +4 -4
- package/dist/BButton-DgequxLk.mjs.map +1 -0
- package/dist/{BDropdown-C1AxRj81.js → BDropdown-BxciLgyt.js} +15 -16
- package/dist/BDropdown-BxciLgyt.js.map +1 -0
- package/dist/{BDropdown-BW_O8vPQ.mjs → BDropdown-CRIh9xqy.mjs} +2 -2
- package/dist/{BDropdown-BW_O8vPQ.mjs.map → BDropdown-CRIh9xqy.mjs.map} +1 -1
- package/dist/{BDropdown-DAHnN54Z.mjs → BDropdown-D2pBrZsG.mjs} +15 -16
- package/dist/BDropdown-D2pBrZsG.mjs.map +1 -0
- package/dist/{BDropdown-CuVOxCzu.js → BDropdown-DgbFCKfP.js} +2 -2
- package/dist/{BDropdown-CuVOxCzu.js.map → BDropdown-DgbFCKfP.js.map} +1 -1
- package/dist/{BFormCheckbox-Bdk2rgVe.js → BFormCheckbox-BPQxUDQG.js} +5 -5
- package/dist/BFormCheckbox-BPQxUDQG.js.map +1 -0
- package/dist/{BFormCheckbox-CcDK-lh1.mjs → BFormCheckbox-DPNPjRKN.mjs} +5 -5
- package/dist/BFormCheckbox-DPNPjRKN.mjs.map +1 -0
- package/dist/{BFormRadio-DuVYw-Vs.js → BFormRadio-BZ0etDxl.js} +5 -5
- package/dist/BFormRadio-BZ0etDxl.js.map +1 -0
- package/dist/{BFormRadio-CRDbgMiR.mjs → BFormRadio-CqYd0bLV.mjs} +5 -5
- package/dist/BFormRadio-CqYd0bLV.mjs.map +1 -0
- package/dist/{BFormSelect-DIKVsG--.js → BFormSelect-B_mbfTMC.js} +5 -5
- package/dist/BFormSelect-B_mbfTMC.js.map +1 -0
- package/dist/{BFormSelect-Bb8yE8vz.mjs → BFormSelect-CpkJ1haI.mjs} +5 -5
- package/dist/BFormSelect-CpkJ1haI.mjs.map +1 -0
- package/dist/{BFormTags-BFA6xbr3.js → BFormTags-DJzXJp7d.js} +3 -3
- package/dist/BFormTags-DJzXJp7d.js.map +1 -0
- package/dist/{BFormTags-CJb4H67g.mjs → BFormTags-DWAWX2av.mjs} +3 -3
- package/dist/BFormTags-DWAWX2av.mjs.map +1 -0
- package/dist/{BInputGroup-BScMw6Zr.js → BInputGroup-Bfcs5h_Q.js} +2 -2
- package/dist/{BInputGroup-BScMw6Zr.js.map → BInputGroup-Bfcs5h_Q.js.map} +1 -1
- package/dist/{BInputGroup-DpX10xwR.mjs → BInputGroup-C5sxenhE.mjs} +3 -3
- package/dist/BInputGroup-C5sxenhE.mjs.map +1 -0
- package/dist/{BInputGroup-Duk6Jk0v.js → BInputGroup-DTP5Vf1f.js} +3 -3
- package/dist/BInputGroup-DTP5Vf1f.js.map +1 -0
- package/dist/{BInputGroup-C7k0tS9j.mjs → BInputGroup-Dl9AgpAx.mjs} +2 -2
- package/dist/{BInputGroup-C7k0tS9j.mjs.map → BInputGroup-Dl9AgpAx.mjs.map} +1 -1
- package/dist/{BModal-D0LB339D.js → BModal-BnHYbFuj.js} +5 -5
- package/dist/BModal-BnHYbFuj.js.map +1 -0
- package/dist/{BModal-Br5xLT0-.mjs → BModal-CAjLrkBp.mjs} +5 -5
- package/dist/BModal-CAjLrkBp.mjs.map +1 -0
- package/dist/{BNav-BRjdHsjC.mjs → BNav-BdO2N7G0.mjs} +4 -3
- package/dist/{BNav-BRjdHsjC.mjs.map → BNav-BdO2N7G0.mjs.map} +1 -1
- package/dist/{BNav-tYBwz1wU.js → BNav-MjroX-Jl.js} +4 -3
- package/dist/{BNav-tYBwz1wU.js.map → BNav-MjroX-Jl.js.map} +1 -1
- package/dist/{BOffcanvas-D33pEfZe.js → BOffcanvas-ColOuYdV.js} +2 -2
- package/dist/{BOffcanvas-D33pEfZe.js.map → BOffcanvas-ColOuYdV.js.map} +1 -1
- package/dist/{BOffcanvas-jETHbtC3.mjs → BOffcanvas-DmkJSSFy.mjs} +2 -2
- package/dist/{BOffcanvas-jETHbtC3.mjs.map → BOffcanvas-DmkJSSFy.mjs.map} +1 -1
- package/dist/{BPlaceholder-C4AOg29f.mjs → BPlaceholder-DKDtjMjy.mjs} +9 -9
- package/dist/BPlaceholder-DKDtjMjy.mjs.map +1 -0
- package/dist/{BPlaceholder-DYYYuNgR.js → BPlaceholder-n447tOzJ.js} +9 -9
- package/dist/BPlaceholder-n447tOzJ.js.map +1 -0
- package/dist/{BToast-DCSZYXIi.js → BToast-BFcT76M1.js} +2 -2
- package/dist/{BToast-DCSZYXIi.js.map → BToast-BFcT76M1.js.map} +1 -1
- package/dist/{BToast-B2rFKhLD.mjs → BToast-D5XkJqF4.mjs} +2 -2
- package/dist/{BToast-B2rFKhLD.mjs.map → BToast-D5XkJqF4.mjs.map} +1 -1
- package/dist/{BTooltip-CryTO-SM.js → BTooltip-BwiqjqX-.js} +2 -2
- package/dist/{BTooltip-CryTO-SM.js.map → BTooltip-BwiqjqX-.js.map} +1 -1
- package/dist/{BTooltip-DtpjIEBu.mjs → BTooltip-DohT1Q3C.mjs} +2 -2
- package/dist/{BTooltip-DtpjIEBu.mjs.map → BTooltip-DohT1Q3C.mjs.map} +1 -1
- package/dist/bootstrap-vue-next.mjs +20 -20
- package/dist/bootstrap-vue-next.umd.js +20 -20
- package/dist/components/BContainer/BCol.vue.d.mts +1 -1
- package/dist/components/BContainer/BCol.vue.d.ts +1 -1
- package/dist/components/BDropdown/BDropdown.vue.d.mts +1 -0
- package/dist/components/BDropdown/BDropdown.vue.d.ts +1 -0
- package/dist/components/BNav/BNavItemDropdown.vue.d.mts +13 -2
- package/dist/components/BNav/BNavItemDropdown.vue.d.ts +13 -2
- package/dist/{floatingUi-DHMrP__c.mjs → floatingUi-BAUk171g.mjs} +10 -2
- package/dist/{floatingUi-DHMrP__c.mjs.map → floatingUi-BAUk171g.mjs.map} +1 -1
- package/dist/{floatingUi-Cs4rDXmO.js → floatingUi-DBLN9xLH.js} +15 -1
- package/dist/{floatingUi-Cs4rDXmO.js.map → floatingUi-DBLN9xLH.js.map} +1 -1
- package/dist/keys-CQKrwmvN.mjs.map +1 -1
- package/dist/keys-durSVUrO.js.map +1 -1
- package/dist/src/components/BAlert/index.mjs +1 -1
- package/dist/src/components/BAlert/index.umd.js +1 -1
- package/dist/src/components/BAutocomplete/index.mjs +1 -1
- package/dist/src/components/BAutocomplete/index.umd.js +1 -1
- package/dist/src/components/BAvatar/index.mjs +1 -1
- package/dist/src/components/BAvatar/index.umd.js +1 -1
- package/dist/src/components/BButton/index.mjs +2 -2
- package/dist/src/components/BButton/index.umd.js +2 -2
- package/dist/src/components/BDropdown/index.mjs +2 -2
- package/dist/src/components/BDropdown/index.umd.js +2 -2
- package/dist/src/components/BFormCheckbox/index.mjs +1 -1
- package/dist/src/components/BFormCheckbox/index.umd.js +1 -1
- package/dist/src/components/BFormRadio/index.mjs +1 -1
- package/dist/src/components/BFormRadio/index.umd.js +1 -1
- package/dist/src/components/BFormSelect/index.mjs +1 -1
- package/dist/src/components/BFormSelect/index.umd.js +1 -1
- package/dist/src/components/BFormTags/index.mjs +1 -1
- package/dist/src/components/BFormTags/index.umd.js +1 -1
- package/dist/src/components/BInputGroup/index.mjs +2 -2
- package/dist/src/components/BInputGroup/index.umd.js +2 -2
- package/dist/src/components/BModal/index.mjs +1 -1
- package/dist/src/components/BModal/index.umd.js +1 -1
- package/dist/src/components/BNav/index.mjs +1 -1
- package/dist/src/components/BNav/index.umd.js +1 -1
- package/dist/src/components/BOffcanvas/index.mjs +1 -1
- package/dist/src/components/BOffcanvas/index.umd.js +1 -1
- package/dist/src/components/BPlaceholder/index.mjs +1 -1
- package/dist/src/components/BPlaceholder/index.umd.js +1 -1
- package/dist/src/components/BPopover/index.mjs +1 -1
- package/dist/src/components/BPopover/index.umd.js +1 -1
- package/dist/src/components/BToast/index.mjs +1 -1
- package/dist/src/components/BToast/index.umd.js +1 -1
- package/dist/src/components/BTooltip/index.mjs +1 -1
- package/dist/src/components/BTooltip/index.umd.js +1 -1
- package/dist/src/components/index.mjs +20 -20
- package/dist/src/components/index.umd.js +20 -20
- package/dist/src/composables/useModal/index.mjs +1 -1
- package/dist/src/composables/useModal/index.umd.js +1 -1
- package/dist/src/composables/usePopover/index.mjs +2 -2
- package/dist/src/composables/usePopover/index.umd.js +2 -2
- package/dist/src/composables/useToast/index.mjs +1 -1
- package/dist/src/composables/useToast/index.umd.js +1 -1
- package/dist/src/directives/BPopover/index.mjs +2 -2
- package/dist/src/directives/BPopover/index.umd.js +2 -2
- package/dist/src/directives/BScrollspy/index.mjs +1 -1
- package/dist/src/directives/BScrollspy/index.umd.js +1 -1
- package/dist/src/directives/BToggle/index.mjs +1 -1
- package/dist/src/directives/BToggle/index.umd.js +1 -1
- package/dist/src/directives/BTooltip/index.mjs +2 -2
- package/dist/src/directives/BTooltip/index.umd.js +2 -2
- package/dist/types/ComponentProps.d.mts +1 -0
- package/dist/types/ComponentProps.d.ts +1 -0
- package/dist/types/ComponentSlots.d.mts +2 -1
- package/dist/types/ComponentSlots.d.ts +2 -1
- package/dist/types/Size.d.mts +0 -1
- package/dist/types/Size.d.ts +0 -1
- package/dist/{useFormCheck-CJvIDxcO.mjs → useFormCheck-CbRHduFK.mjs} +3 -3
- package/dist/useFormCheck-CbRHduFK.mjs.map +1 -0
- package/dist/{useFormCheck-UHNy_iZ0.js → useFormCheck-Cj5K6pk-.js} +3 -3
- package/dist/useFormCheck-Cj5K6pk-.js.map +1 -0
- package/dist/utils/floatingUi.d.mts +1 -0
- package/dist/utils/floatingUi.d.ts +1 -0
- package/dist/utils/keys.d.mts +2 -2
- package/dist/utils/keys.d.ts +2 -2
- package/dist/{utils-CgwCsk6U.mjs → utils-D30CwVm-.mjs} +3 -4
- package/dist/utils-D30CwVm-.mjs.map +1 -0
- package/dist/{utils-CaC78Zdk.js → utils-DtPi91ue.js} +3 -4
- package/dist/utils-DtPi91ue.js.map +1 -0
- package/package.json +1 -1
- package/dist/BAvatar-D7aFEXLH.mjs.map +0 -1
- package/dist/BAvatar-lefHkDuG.js.map +0 -1
- package/dist/BButton-BRvIFnRm.mjs.map +0 -1
- package/dist/BButton-DBRs8Pz_.js.map +0 -1
- package/dist/BButton-DNmtqoqR.mjs.map +0 -1
- package/dist/BButton-kykTWnBy.js.map +0 -1
- package/dist/BDropdown-C1AxRj81.js.map +0 -1
- package/dist/BDropdown-DAHnN54Z.mjs.map +0 -1
- package/dist/BFormCheckbox-Bdk2rgVe.js.map +0 -1
- package/dist/BFormCheckbox-CcDK-lh1.mjs.map +0 -1
- package/dist/BFormRadio-CRDbgMiR.mjs.map +0 -1
- package/dist/BFormRadio-DuVYw-Vs.js.map +0 -1
- package/dist/BFormSelect-Bb8yE8vz.mjs.map +0 -1
- package/dist/BFormSelect-DIKVsG--.js.map +0 -1
- package/dist/BFormTags-BFA6xbr3.js.map +0 -1
- package/dist/BFormTags-CJb4H67g.mjs.map +0 -1
- package/dist/BInputGroup-DpX10xwR.mjs.map +0 -1
- package/dist/BInputGroup-Duk6Jk0v.js.map +0 -1
- package/dist/BModal-Br5xLT0-.mjs.map +0 -1
- package/dist/BModal-D0LB339D.js.map +0 -1
- package/dist/BPlaceholder-C4AOg29f.mjs.map +0 -1
- package/dist/BPlaceholder-DYYYuNgR.js.map +0 -1
- package/dist/useFormCheck-CJvIDxcO.mjs.map +0 -1
- package/dist/useFormCheck-UHNy_iZ0.js.map +0 -1
- package/dist/utils-CaC78Zdk.js.map +0 -1
- package/dist/utils-CgwCsk6U.mjs.map +0 -1
|
@@ -150,7 +150,6 @@ var BAvatar_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
150
150
|
const parentData = (0, vue.inject)(require_keys.avatarGroupInjectionKey, null);
|
|
151
151
|
const SIZES = Object.freeze([null, ...Object.keys({
|
|
152
152
|
lg: null,
|
|
153
|
-
md: null,
|
|
154
153
|
sm: null
|
|
155
154
|
})]);
|
|
156
155
|
const BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * .7;
|
|
@@ -384,4 +383,4 @@ Object.defineProperty(exports, "BAvatar_default", {
|
|
|
384
383
|
}
|
|
385
384
|
});
|
|
386
385
|
|
|
387
|
-
//# sourceMappingURL=BAvatar-
|
|
386
|
+
//# sourceMappingURL=BAvatar-BHqTW5Ll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BAvatar-BHqTW5Ll.js","names":[],"sources":["../src/components/BAvatar/BAvatar.vue","../src/components/BAvatar/BAvatar.vue","../src/components/BAvatar/BAvatarGroup.vue","../src/components/BAvatar/BAvatarGroup.vue"],"sourcesContent":["<template>\n <component\n :is=\"computedTag\"\n class=\"b-avatar\"\n :class=\"computedClasses\"\n :style=\"computedStyle\"\n v-bind=\"computedLinkProps\"\n :type=\"props.button && !computedLink ? props.buttonType : undefined\"\n :disabled=\"props.disabled || null\"\n :variant=\"null\"\n @click=\"clicked\"\n >\n <span v-if=\"hasDefaultSlot\" class=\"b-avatar-custom\">\n <slot />\n </span>\n <span v-else-if=\"!!localSrc\" class=\"b-avatar-img\">\n <img :src=\"localSrc\" :alt=\"props.alt\" @error=\"onImgError\" />\n </span>\n <span v-else-if=\"!!props.text\" class=\"b-avatar-text\" :style=\"textFontStyle\">\n {{ props.text }}\n </span>\n <span v-else class=\"b-avatar-img\"\n ><svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"80%\"\n height=\"80%\"\n fill=\"currentColor\"\n class=\"bi bi-person-fill\"\n viewBox=\"0 0 16 16\"\n >\n <path d=\"M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6\" />\n </svg>\n </span>\n <BBadge\n v-if=\"showBadge\"\n :pill=\"props.badgePill\"\n :dot-indicator=\"props.badgeDotIndicator || badgeImplicitlyDot\"\n :variant=\"props.badgeVariant\"\n :bg-variant=\"props.badgeBgVariant\"\n :text-variant=\"props.badgeTextVariant\"\n :style=\"badgeStyle\"\n :placement=\"props.badgePlacement\"\n >\n <slot name=\"badge\">\n {{ badgeText }}\n </slot>\n </BBadge>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {avatarGroupInjectionKey} from '../../utils/keys'\nimport {computed, type CSSProperties, inject, ref, type StyleValue, watch} from 'vue'\nimport type {BAvatarProps} from '../../types/ComponentProps'\nimport BLink from '../BLink/BLink.vue'\nimport BBadge from '../BBadge/BBadge.vue'\nimport {useBLinkHelper} from '../../composables/useBLinkHelper'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useNumberishToStyle} from '../../composables/useNumberishToStyle'\nimport {useRadiusElementClasses} from '../../composables/useRadiusElementClasses'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BAvatarEmits, BAvatarSlots, Size} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<BAvatarProps>(), {\n alt: 'avatar',\n badge: false,\n badgeBgVariant: null,\n badgeTextVariant: null,\n badgeVariant: 'primary',\n badgePlacement: 'bottom-end',\n badgeDotIndicator: false,\n badgePill: false,\n button: false,\n buttonType: 'button',\n size: undefined,\n square: false,\n src: undefined,\n text: undefined,\n // Link props\n variant: 'secondary',\n // All others use defaults\n active: undefined,\n activeClass: undefined,\n disabled: undefined,\n exactActiveClass: undefined,\n href: undefined,\n opacity: undefined,\n opacityHover: undefined,\n rel: undefined,\n replace: undefined,\n stretched: false,\n routerComponentName: undefined,\n target: undefined,\n underlineOffset: undefined,\n underlineOffsetHover: undefined,\n underlineOpacity: undefined,\n underlineOpacityHover: undefined,\n underlineVariant: undefined,\n // End link props\n // ColorExtendables props\n // Variant is here as well\n bgVariant: null,\n textVariant: null,\n // End ColorExtendables props\n // RadiusElementExtendables props\n rounded: 'circle',\n roundedBottom: undefined,\n roundedEnd: undefined,\n roundedStart: undefined,\n roundedTop: undefined,\n // End RadiusElementExtendables props\n})\nconst props = useDefaults(_props, 'BAvatar')\nconst emit = defineEmits<BAvatarEmits>()\nconst slots = defineSlots<BAvatarSlots>()\n\nconst localSrc = ref(props.src)\nwatch(\n () => props.src,\n (value) => {\n localSrc.value = value\n }\n)\n\nconst {computedLink, computedLinkProps} = useBLinkHelper(props)\n\nconst parentData = inject(avatarGroupInjectionKey, null)\n\nconst SIZES = Object.freeze([\n null,\n ...Object.keys({\n lg: null,\n sm: null,\n } satisfies Record<Size, null>),\n] as (string | null)[])\nconst FONT_SIZE_SCALE = 0.4\nconst BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * 0.7\n\nconst hasDefaultSlot = computed(() => !isEmptySlot(slots.default))\nconst hasBadgeSlot = computed(() => !isEmptySlot(slots.badge))\n\nconst showBadge = computed(() => !!props.badge || props.badge === '' || hasBadgeSlot.value)\nconst computedSquare = computed(() => parentData?.square.value || props.square)\n\n// const computedPropSize = useNumberishToStyle(() => props.size)\n// const propSizeIsLiteralSize = (val: unknown): val is Size =>\n// !!val && typeof val === 'string' && SIZES.includes(val)\n// const computedParentSize = useNumberishToStyle(() => parentData?.size.value)\n// const computedSize = computed(() => computedParentSize.value ?? computedPropSize.value)\n// const computedPropSizeIsLiteralSize = computed(() => propSizeIsLiteralSize(computedSize.value))\n\nconst computedSize = useNumberishToStyle(() => parentData?.size.value ?? props.size)\nconst computedSizeIsLiteralSize = computed(\n () => !!computedSize.value && SIZES.includes(computedSize.value)\n)\n\nconst computedVariant = computed(() => parentData?.variant.value ?? props.variant)\nconst computedRounded = computed(() => parentData?.rounded.value ?? props.rounded)\nconst computedRoundedTop = computed(() => parentData?.roundedTop.value ?? props.roundedTop)\nconst computedRoundedBottom = computed(() => parentData?.roundedBottom.value ?? props.roundedBottom)\nconst computedRoundedStart = computed(() => parentData?.roundedStart.value ?? props.roundedStart)\nconst computedRoundedEnd = computed(() => parentData?.roundedEnd.value ?? props.roundedEnd)\n\nconst radiusElementClasses = useRadiusElementClasses(() => ({\n rounded: computedRounded.value,\n roundedTop: computedRoundedTop.value,\n roundedBottom: computedRoundedBottom.value,\n roundedStart: computedRoundedStart.value,\n roundedEnd: computedRoundedEnd.value,\n}))\n\nconst badgeText = computed(() => (props.badge === true ? '' : props.badge))\nconst badgeImplicitlyDot = computed(() => !badgeText.value && !hasBadgeSlot.value)\n\nconst colorClasses = useColorVariantClasses(() => ({\n bgVariant: parentData?.bgVariant.value ?? props.bgVariant,\n textVariant: parentData?.textVariant.value ?? props.textVariant,\n variant: computedVariant.value,\n}))\nconst computedClasses = computed(() => [\n colorClasses.value,\n // Square overwrites all else\n computedSquare.value === true ? undefined : radiusElementClasses.value,\n {\n [`b-avatar-${computedSize.value}`]:\n computedSizeIsLiteralSize.value && computedSize.value !== 'md',\n [`btn-${computedVariant.value}`]: props.button ? computedVariant.value !== null : false,\n 'badge': !props.button && computedVariant.value !== null && hasDefaultSlot.value,\n 'btn': props.button,\n // Square is the same as rounded-0 class\n 'rounded-0': computedSquare.value === true,\n },\n])\n\nconst badgeStyle = computed<StyleValue>(() => ({\n fontSize:\n (!computedSizeIsLiteralSize.value\n ? `calc(${computedSize.value} * ${BADGE_FONT_SIZE_SCALE})`\n : '') || '',\n}))\n\nconst textFontStyle = computed<StyleValue>(() => {\n const fontSize = !computedSizeIsLiteralSize.value\n ? `calc(${computedSize.value} * ${FONT_SIZE_SCALE})`\n : null\n return fontSize ? {fontSize} : {}\n})\n\nconst marginStyle = computed(() => {\n const overlapScale = parentData?.overlapScale?.value || 0\n\n const value =\n computedSize.value && overlapScale ? `calc(${computedSize.value} * -${overlapScale})` : null\n return value ? {marginLeft: value, marginRight: value} : {}\n})\n\nconst computedTag = computed(() => (computedLink.value ? BLink : props.button ? 'button' : 'span'))\n\nconst computedStyle = computed<CSSProperties>(() => ({\n ...marginStyle.value,\n ...(!computedSizeIsLiteralSize.value\n ? {\n width: computedSize.value,\n height: computedSize.value,\n }\n : undefined),\n}))\n\nconst clicked = (e: Readonly<MouseEvent>): void => {\n if (!props.disabled && (computedLink.value || props.button)) emit('click', e)\n}\n\nconst onImgError = (e: Readonly<Event>) => {\n localSrc.value = undefined\n emit('img-error', e)\n}\n</script>\n","<template>\n <component\n :is=\"computedTag\"\n class=\"b-avatar\"\n :class=\"computedClasses\"\n :style=\"computedStyle\"\n v-bind=\"computedLinkProps\"\n :type=\"props.button && !computedLink ? props.buttonType : undefined\"\n :disabled=\"props.disabled || null\"\n :variant=\"null\"\n @click=\"clicked\"\n >\n <span v-if=\"hasDefaultSlot\" class=\"b-avatar-custom\">\n <slot />\n </span>\n <span v-else-if=\"!!localSrc\" class=\"b-avatar-img\">\n <img :src=\"localSrc\" :alt=\"props.alt\" @error=\"onImgError\" />\n </span>\n <span v-else-if=\"!!props.text\" class=\"b-avatar-text\" :style=\"textFontStyle\">\n {{ props.text }}\n </span>\n <span v-else class=\"b-avatar-img\"\n ><svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"80%\"\n height=\"80%\"\n fill=\"currentColor\"\n class=\"bi bi-person-fill\"\n viewBox=\"0 0 16 16\"\n >\n <path d=\"M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6\" />\n </svg>\n </span>\n <BBadge\n v-if=\"showBadge\"\n :pill=\"props.badgePill\"\n :dot-indicator=\"props.badgeDotIndicator || badgeImplicitlyDot\"\n :variant=\"props.badgeVariant\"\n :bg-variant=\"props.badgeBgVariant\"\n :text-variant=\"props.badgeTextVariant\"\n :style=\"badgeStyle\"\n :placement=\"props.badgePlacement\"\n >\n <slot name=\"badge\">\n {{ badgeText }}\n </slot>\n </BBadge>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {avatarGroupInjectionKey} from '../../utils/keys'\nimport {computed, type CSSProperties, inject, ref, type StyleValue, watch} from 'vue'\nimport type {BAvatarProps} from '../../types/ComponentProps'\nimport BLink from '../BLink/BLink.vue'\nimport BBadge from '../BBadge/BBadge.vue'\nimport {useBLinkHelper} from '../../composables/useBLinkHelper'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useNumberishToStyle} from '../../composables/useNumberishToStyle'\nimport {useRadiusElementClasses} from '../../composables/useRadiusElementClasses'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BAvatarEmits, BAvatarSlots, Size} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<BAvatarProps>(), {\n alt: 'avatar',\n badge: false,\n badgeBgVariant: null,\n badgeTextVariant: null,\n badgeVariant: 'primary',\n badgePlacement: 'bottom-end',\n badgeDotIndicator: false,\n badgePill: false,\n button: false,\n buttonType: 'button',\n size: undefined,\n square: false,\n src: undefined,\n text: undefined,\n // Link props\n variant: 'secondary',\n // All others use defaults\n active: undefined,\n activeClass: undefined,\n disabled: undefined,\n exactActiveClass: undefined,\n href: undefined,\n opacity: undefined,\n opacityHover: undefined,\n rel: undefined,\n replace: undefined,\n stretched: false,\n routerComponentName: undefined,\n target: undefined,\n underlineOffset: undefined,\n underlineOffsetHover: undefined,\n underlineOpacity: undefined,\n underlineOpacityHover: undefined,\n underlineVariant: undefined,\n // End link props\n // ColorExtendables props\n // Variant is here as well\n bgVariant: null,\n textVariant: null,\n // End ColorExtendables props\n // RadiusElementExtendables props\n rounded: 'circle',\n roundedBottom: undefined,\n roundedEnd: undefined,\n roundedStart: undefined,\n roundedTop: undefined,\n // End RadiusElementExtendables props\n})\nconst props = useDefaults(_props, 'BAvatar')\nconst emit = defineEmits<BAvatarEmits>()\nconst slots = defineSlots<BAvatarSlots>()\n\nconst localSrc = ref(props.src)\nwatch(\n () => props.src,\n (value) => {\n localSrc.value = value\n }\n)\n\nconst {computedLink, computedLinkProps} = useBLinkHelper(props)\n\nconst parentData = inject(avatarGroupInjectionKey, null)\n\nconst SIZES = Object.freeze([\n null,\n ...Object.keys({\n lg: null,\n sm: null,\n } satisfies Record<Size, null>),\n] as (string | null)[])\nconst FONT_SIZE_SCALE = 0.4\nconst BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * 0.7\n\nconst hasDefaultSlot = computed(() => !isEmptySlot(slots.default))\nconst hasBadgeSlot = computed(() => !isEmptySlot(slots.badge))\n\nconst showBadge = computed(() => !!props.badge || props.badge === '' || hasBadgeSlot.value)\nconst computedSquare = computed(() => parentData?.square.value || props.square)\n\n// const computedPropSize = useNumberishToStyle(() => props.size)\n// const propSizeIsLiteralSize = (val: unknown): val is Size =>\n// !!val && typeof val === 'string' && SIZES.includes(val)\n// const computedParentSize = useNumberishToStyle(() => parentData?.size.value)\n// const computedSize = computed(() => computedParentSize.value ?? computedPropSize.value)\n// const computedPropSizeIsLiteralSize = computed(() => propSizeIsLiteralSize(computedSize.value))\n\nconst computedSize = useNumberishToStyle(() => parentData?.size.value ?? props.size)\nconst computedSizeIsLiteralSize = computed(\n () => !!computedSize.value && SIZES.includes(computedSize.value)\n)\n\nconst computedVariant = computed(() => parentData?.variant.value ?? props.variant)\nconst computedRounded = computed(() => parentData?.rounded.value ?? props.rounded)\nconst computedRoundedTop = computed(() => parentData?.roundedTop.value ?? props.roundedTop)\nconst computedRoundedBottom = computed(() => parentData?.roundedBottom.value ?? props.roundedBottom)\nconst computedRoundedStart = computed(() => parentData?.roundedStart.value ?? props.roundedStart)\nconst computedRoundedEnd = computed(() => parentData?.roundedEnd.value ?? props.roundedEnd)\n\nconst radiusElementClasses = useRadiusElementClasses(() => ({\n rounded: computedRounded.value,\n roundedTop: computedRoundedTop.value,\n roundedBottom: computedRoundedBottom.value,\n roundedStart: computedRoundedStart.value,\n roundedEnd: computedRoundedEnd.value,\n}))\n\nconst badgeText = computed(() => (props.badge === true ? '' : props.badge))\nconst badgeImplicitlyDot = computed(() => !badgeText.value && !hasBadgeSlot.value)\n\nconst colorClasses = useColorVariantClasses(() => ({\n bgVariant: parentData?.bgVariant.value ?? props.bgVariant,\n textVariant: parentData?.textVariant.value ?? props.textVariant,\n variant: computedVariant.value,\n}))\nconst computedClasses = computed(() => [\n colorClasses.value,\n // Square overwrites all else\n computedSquare.value === true ? undefined : radiusElementClasses.value,\n {\n [`b-avatar-${computedSize.value}`]:\n computedSizeIsLiteralSize.value && computedSize.value !== 'md',\n [`btn-${computedVariant.value}`]: props.button ? computedVariant.value !== null : false,\n 'badge': !props.button && computedVariant.value !== null && hasDefaultSlot.value,\n 'btn': props.button,\n // Square is the same as rounded-0 class\n 'rounded-0': computedSquare.value === true,\n },\n])\n\nconst badgeStyle = computed<StyleValue>(() => ({\n fontSize:\n (!computedSizeIsLiteralSize.value\n ? `calc(${computedSize.value} * ${BADGE_FONT_SIZE_SCALE})`\n : '') || '',\n}))\n\nconst textFontStyle = computed<StyleValue>(() => {\n const fontSize = !computedSizeIsLiteralSize.value\n ? `calc(${computedSize.value} * ${FONT_SIZE_SCALE})`\n : null\n return fontSize ? {fontSize} : {}\n})\n\nconst marginStyle = computed(() => {\n const overlapScale = parentData?.overlapScale?.value || 0\n\n const value =\n computedSize.value && overlapScale ? `calc(${computedSize.value} * -${overlapScale})` : null\n return value ? {marginLeft: value, marginRight: value} : {}\n})\n\nconst computedTag = computed(() => (computedLink.value ? BLink : props.button ? 'button' : 'span'))\n\nconst computedStyle = computed<CSSProperties>(() => ({\n ...marginStyle.value,\n ...(!computedSizeIsLiteralSize.value\n ? {\n width: computedSize.value,\n height: computedSize.value,\n }\n : undefined),\n}))\n\nconst clicked = (e: Readonly<MouseEvent>): void => {\n if (!props.disabled && (computedLink.value || props.button)) emit('click', e)\n}\n\nconst onImgError = (e: Readonly<Event>) => {\n localSrc.value = undefined\n emit('img-error', e)\n}\n</script>\n","<template>\n <component :is=\"props.tag\" class=\"b-avatar-group\" role=\"group\">\n <div class=\"b-avatar-group-inner\" :style=\"paddingStyle\">\n <slot />\n </div>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, type StyleValue, toRef} from 'vue'\nimport type {BAvatarGroupProps} from '../../types/ComponentProps'\nimport {avatarGroupInjectionKey} from '../../utils/keys'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useToNumber} from '@vueuse/core'\nimport {useNumberishToStyle} from '../../composables/useNumberishToStyle'\nimport type {BAvatarGroupSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BAvatarGroupProps>(), {\n overlap: 0.3,\n size: undefined,\n square: false,\n tag: 'div',\n // RadiusElementExtendables props\n rounded: 'circle',\n roundedBottom: undefined,\n roundedEnd: undefined,\n roundedStart: undefined,\n roundedTop: undefined,\n // End RadiusElementExtendables props\n // ColorExtendables props\n bgVariant: null,\n textVariant: null,\n variant: null,\n // End ColorExtendables props\n})\nconst props = useDefaults(_props, 'BAvatarGroup')\ndefineSlots<BAvatarGroupSlots>()\n\nconst overlapNumber = useToNumber(() => props.overlap)\n\nconst computedSize = useNumberishToStyle(() => props.size)\nconst overlapScale = computed(() => Math.min(Math.max(overlapNumber.value, 0), 1) / 2)\n\nconst paddingStyle = computed<StyleValue>(() => {\n const value = computedSize.value ? `calc(${computedSize.value} * ${overlapScale.value})` : null\n return value ? {paddingLeft: value, paddingRight: value} : {}\n})\n\nprovide(avatarGroupInjectionKey, {\n overlapScale,\n size: toRef(() => props.size),\n square: toRef(() => props.square),\n rounded: toRef(() => props.rounded),\n roundedTop: toRef(() => props.roundedTop),\n roundedBottom: toRef(() => props.roundedBottom),\n roundedStart: toRef(() => props.roundedStart),\n roundedEnd: toRef(() => props.roundedEnd),\n variant: toRef(() => props.variant),\n bgVariant: toRef(() => props.bgVariant),\n textVariant: toRef(() => props.textVariant),\n})\n</script>\n","<template>\n <component :is=\"props.tag\" class=\"b-avatar-group\" role=\"group\">\n <div class=\"b-avatar-group-inner\" :style=\"paddingStyle\">\n <slot />\n </div>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, type StyleValue, toRef} from 'vue'\nimport type {BAvatarGroupProps} from '../../types/ComponentProps'\nimport {avatarGroupInjectionKey} from '../../utils/keys'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useToNumber} from '@vueuse/core'\nimport {useNumberishToStyle} from '../../composables/useNumberishToStyle'\nimport type {BAvatarGroupSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BAvatarGroupProps>(), {\n overlap: 0.3,\n size: undefined,\n square: false,\n tag: 'div',\n // RadiusElementExtendables props\n rounded: 'circle',\n roundedBottom: undefined,\n roundedEnd: undefined,\n roundedStart: undefined,\n roundedTop: undefined,\n // End RadiusElementExtendables props\n // ColorExtendables props\n bgVariant: null,\n textVariant: null,\n variant: null,\n // End ColorExtendables props\n})\nconst props = useDefaults(_props, 'BAvatarGroup')\ndefineSlots<BAvatarGroupSlots>()\n\nconst overlapNumber = useToNumber(() => props.overlap)\n\nconst computedSize = useNumberishToStyle(() => props.size)\nconst overlapScale = computed(() => Math.min(Math.max(overlapNumber.value, 0), 1) / 2)\n\nconst paddingStyle = computed<StyleValue>(() => {\n const value = computedSize.value ? `calc(${computedSize.value} * ${overlapScale.value})` : null\n return value ? {paddingLeft: value, paddingRight: value} : {}\n})\n\nprovide(avatarGroupInjectionKey, {\n overlapScale,\n size: toRef(() => props.size),\n square: toRef(() => props.square),\n rounded: toRef(() => props.rounded),\n roundedTop: toRef(() => props.roundedTop),\n roundedBottom: toRef(() => props.roundedBottom),\n roundedStart: toRef(() => props.roundedStart),\n roundedEnd: toRef(() => props.roundedEnd),\n variant: toRef(() => props.variant),\n bgVariant: toRef(() => props.bgVariant),\n textVariant: toRef(() => props.textVariant),\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAwIA,IAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAvBxB,MAAM,QAAQ,oBAAA,YAjDC,SAiDmB,UAAS;EAC3C,MAAM,OAAO;EACb,MAAM,SAAA,GAAA,IAAA,WAAQ;EAEd,MAAM,YAAA,GAAA,IAAA,KAAe,MAAM,IAAG;AAC9B,GAAA,GAAA,IAAA,aACQ,MAAM,MACX,UAAU;AACT,YAAS,QAAQ;IAErB;EAEA,MAAM,EAAC,cAAc,sBAAqB,cAAA,eAAe,MAAK;EAE9D,MAAM,cAAA,GAAA,IAAA,QAAoB,aAAA,yBAAyB,KAAI;EAEvD,MAAM,QAAQ,OAAO,OAAO,CAC1B,MACA,GAAG,OAAO,KAAK;GACb,IAAI;GACJ,IAAI;GACL,CAA8B,CAChC,CAAqB;EAEtB,MAAM,wBAAwB,kBAAkB;EAEhD,MAAM,kBAAA,GAAA,IAAA,gBAAgC,CAAC,YAAA,YAAY,MAAM,QAAQ,CAAA;EACjE,MAAM,gBAAA,GAAA,IAAA,gBAA8B,CAAC,YAAA,YAAY,MAAM,MAAM,CAAA;EAE7D,MAAM,aAAA,GAAA,IAAA,gBAA2B,CAAC,CAAC,MAAM,SAAS,MAAM,UAAU,MAAM,aAAa,MAAK;EAC1F,MAAM,kBAAA,GAAA,IAAA,gBAAgC,YAAY,OAAO,SAAS,MAAM,OAAM;EAS9E,MAAM,eAAe,4BAAA,0BAA0B,YAAY,KAAK,SAAS,MAAM,KAAI;EACnF,MAAM,6BAAA,GAAA,IAAA,gBACE,CAAC,CAAC,aAAa,SAAS,MAAM,SAAS,aAAa,MAAK,CACjE;EAEA,MAAM,mBAAA,GAAA,IAAA,gBAAiC,YAAY,QAAQ,SAAS,MAAM,QAAO;EACjF,MAAM,mBAAA,GAAA,IAAA,gBAAiC,YAAY,QAAQ,SAAS,MAAM,QAAO;EACjF,MAAM,sBAAA,GAAA,IAAA,gBAAoC,YAAY,WAAW,SAAS,MAAM,WAAU;EAC1F,MAAM,yBAAA,GAAA,IAAA,gBAAuC,YAAY,cAAc,SAAS,MAAM,cAAa;EACnG,MAAM,wBAAA,GAAA,IAAA,gBAAsC,YAAY,aAAa,SAAS,MAAM,aAAY;EAChG,MAAM,sBAAA,GAAA,IAAA,gBAAoC,YAAY,WAAW,SAAS,MAAM,WAAU;EAE1F,MAAM,uBAAuB,gCAAA,+BAA+B;GAC1D,SAAS,gBAAgB;GACzB,YAAY,mBAAmB;GAC/B,eAAe,sBAAsB;GACrC,cAAc,qBAAqB;GACnC,YAAY,mBAAmB;GAChC,EAAC;EAEF,MAAM,aAAA,GAAA,IAAA,gBAA4B,MAAM,UAAU,OAAO,KAAK,MAAM,MAAM;EAC1E,MAAM,sBAAA,GAAA,IAAA,gBAAoC,CAAC,UAAU,SAAS,CAAC,aAAa,MAAK;EAEjF,MAAM,eAAe,+BAAA,8BAA8B;GACjD,WAAW,YAAY,UAAU,SAAS,MAAM;GAChD,aAAa,YAAY,YAAY,SAAS,MAAM;GACpD,SAAS,gBAAgB;GAC1B,EAAC;EACF,MAAM,mBAAA,GAAA,IAAA,gBAAiC;GACrC,aAAa;GAEb,eAAe,UAAU,OAAO,KAAA,IAAY,qBAAqB;GACjE;KACG,YAAY,aAAa,UACxB,0BAA0B,SAAS,aAAa,UAAU;KAC3D,OAAO,gBAAgB,UAAU,MAAM,SAAS,gBAAgB,UAAU,OAAO;IAClF,SAAS,CAAC,MAAM,UAAU,gBAAgB,UAAU,QAAQ,eAAe;IAC3E,OAAO,MAAM;IAEb,aAAa,eAAe,UAAU;;GAEzC,CAAA;EAED,MAAM,cAAA,GAAA,IAAA,iBAAyC,EAC7C,WACG,CAAC,0BAA0B,QACxB,QAAQ,aAAa,MAAM,KAAK,sBAAsB,KACtD,OAAO,IACd,EAAC;EAEF,MAAM,iBAAA,GAAA,IAAA,gBAA2C;GAC/C,MAAM,WAAW,CAAC,0BAA0B,QACxC,QAAQ,aAAa,MAAM,KAAK,gBAAgB,KAChD;AACJ,UAAO,WAAW,EAAC,UAAS,GAAG,EAAC;IACjC;EAED,MAAM,eAAA,GAAA,IAAA,gBAA6B;GACjC,MAAM,eAAe,YAAY,cAAc,SAAS;GAExD,MAAM,QACJ,aAAa,SAAS,eAAe,QAAQ,aAAa,MAAM,MAAM,aAAa,KAAK;AAC1F,UAAO,QAAQ;IAAC,YAAY;IAAO,aAAa;IAAM,GAAG,EAAC;IAC3D;EAED,MAAM,eAAA,GAAA,IAAA,gBAA8B,aAAa,QAAQ,cAAA,gBAAQ,MAAM,SAAS,WAAW,OAAO;EAElG,MAAM,iBAAA,GAAA,IAAA,iBAA+C;GACnD,GAAG,YAAY;GACf,GAAI,CAAC,0BAA0B,QAC3B;IACE,OAAO,aAAa;IACpB,QAAQ,aAAa;IACvB,GACA,KAAA;GACL,EAAC;EAEF,MAAM,WAAW,MAAkC;AACjD,OAAI,CAAC,MAAM,aAAa,aAAa,SAAS,MAAM,QAAS,MAAK,SAAS,EAAC;;EAG9E,MAAM,cAAc,MAAuB;AACzC,YAAS,QAAQ,KAAA;AACjB,QAAK,aAAa,EAAC;;;sFAzOZ,YAAA,MAAW,GAAA,GAAA,IAAA,YA6CN;IA5CV,OAAK,CAAC,YACE,gBAAA,MAAe;IACtB,OAAO,cAAA;qBACA,kBAAiB,EAAA;IACxB,OAAA,GAAA,IAAA,OAAM,MAAK,CAAC,UAAM,EAAA,GAAA,IAAA,OAAK,aAAY,IAAA,GAAA,IAAA,OAAG,MAAK,CAAC,aAAa,KAAA;IACzD,WAAA,GAAA,IAAA,OAAU,MAAK,CAAC,YAAQ;IACxB,SAAS;IACT,SAAO;;oCAID,CAFK,eAAA,UAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,oBAEL,QAFP,YAEO,EAAA,GAAA,IAAA,YADG,KAAA,QAAA,UAAA,CAAA,CAAA,IAAA,CAAA,CAES,SAAA,UAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,oBAEZ,QAFP,YAEO,EAAA,GAAA,IAAA,oBADuD,OAAA;KAAtD,KAAK,SAAA;KAAW,MAAA,GAAA,IAAA,OAAK,MAAK,CAAC;KAAM,SAAO;mDAE7B,MAAK,CAAC,SAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,oBAElB,QAAA;;KAFwB,OAAM;KAAiB,QAAA,GAAA,IAAA,gBAAO,cAAA,MAAA;+CACxD,MAAK,CAAC,KAAI,EAAA,EAAA,MAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,oBAaR,QAXP,YAWO,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,EAAA,GAAA,IAAA,oBADC,OAAA;KARJ,OAAM;KACN,OAAM;KACN,QAAO;KACP,MAAK;KACL,OAAM;KACN,SAAQ;oCAE4E,QAAA,EAA9E,GAAE,2EAAyE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,GAI7E,UAAA,UAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,aAYC,eAAA,gBAAA;;KAXN,OAAA,GAAA,IAAA,OAAM,MAAK,CAAC;KACZ,kBAAA,GAAA,IAAA,OAAe,MAAK,CAAC,qBAAqB,mBAAA;KAC1C,UAAA,GAAA,IAAA,OAAS,MAAK,CAAC;KACf,eAAA,GAAA,IAAA,OAAY,MAAK,CAAC;KAClB,iBAAA,GAAA,IAAA,OAAc,MAAK,CAAC;KACpB,QAAA,GAAA,IAAA,gBAAO,WAAA,MAAU;KACjB,YAAA,GAAA,IAAA,OAAW,MAAK,CAAC;;qCAIX,EAAA,GAAA,IAAA,YAAA,KAAA,QAAA,SAAA,EAAA,QAAA,EAAA,GAAA,IAAA,kBAAA,GAAA,IAAA,iBADF,UAAA,MAAS,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EETpB,MAAM,QAAQ,oBAAA,YAlBC,SAkBmB,eAAc;EAGhD,MAAM,gBAAgB,aAAA,kBAAkB,MAAM,QAAO;EAErD,MAAM,eAAe,4BAAA,0BAA0B,MAAM,KAAI;EACzD,MAAM,gBAAA,GAAA,IAAA,gBAA8B,KAAK,IAAI,KAAK,IAAI,cAAc,OAAO,EAAE,EAAE,EAAE,GAAG,EAAC;EAErF,MAAM,gBAAA,GAAA,IAAA,gBAA0C;GAC9C,MAAM,QAAQ,aAAa,QAAQ,QAAQ,aAAa,MAAM,KAAK,aAAa,MAAM,KAAK;AAC3F,UAAO,QAAQ;IAAC,aAAa;IAAO,cAAc;IAAM,GAAG,EAAC;IAC7D;AAED,GAAA,GAAA,IAAA,SAAQ,aAAA,yBAAyB;GAC/B;GACA,OAAA,GAAA,IAAA,aAAkB,MAAM,KAAK;GAC7B,SAAA,GAAA,IAAA,aAAoB,MAAM,OAAO;GACjC,UAAA,GAAA,IAAA,aAAqB,MAAM,QAAQ;GACnC,aAAA,GAAA,IAAA,aAAwB,MAAM,WAAW;GACzC,gBAAA,GAAA,IAAA,aAA2B,MAAM,cAAc;GAC/C,eAAA,GAAA,IAAA,aAA0B,MAAM,aAAa;GAC7C,aAAA,GAAA,IAAA,aAAwB,MAAM,WAAW;GACzC,UAAA,GAAA,IAAA,aAAqB,MAAM,QAAQ;GACnC,YAAA,GAAA,IAAA,aAAuB,MAAM,UAAU;GACvC,cAAA,GAAA,IAAA,aAAyB,MAAM,YAAA;GAChC,CAAA;;qGA3DiB,MAAK,CAAC,IAAG,EAAA;IAAE,OAAM;IAAiB,MAAK;;oCAG/C,EAAA,GAAA,IAAA,oBAAA,OAAA;KAFD,OAAM;KAAwB,QAAA,GAAA,IAAA,gBAAO,aAAA,MAAA;4BAChC,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,CAAA,CAAA"}
|
|
@@ -149,7 +149,6 @@ var BAvatar_default = /* @__PURE__ */ defineComponent({
|
|
|
149
149
|
const parentData = inject(avatarGroupInjectionKey, null);
|
|
150
150
|
const SIZES = Object.freeze([null, ...Object.keys({
|
|
151
151
|
lg: null,
|
|
152
|
-
md: null,
|
|
153
152
|
sm: null
|
|
154
153
|
})]);
|
|
155
154
|
const BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * .7;
|
|
@@ -372,4 +371,4 @@ var BAvatarGroup_default = /* @__PURE__ */ defineComponent({
|
|
|
372
371
|
//#endregion
|
|
373
372
|
export { BAvatar_default as n, BAvatarGroup_default as t };
|
|
374
373
|
|
|
375
|
-
//# sourceMappingURL=BAvatar-
|
|
374
|
+
//# sourceMappingURL=BAvatar-BSLk69M0.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BAvatar-BSLk69M0.mjs","names":[],"sources":["../src/components/BAvatar/BAvatar.vue","../src/components/BAvatar/BAvatar.vue","../src/components/BAvatar/BAvatarGroup.vue","../src/components/BAvatar/BAvatarGroup.vue"],"sourcesContent":["<template>\n <component\n :is=\"computedTag\"\n class=\"b-avatar\"\n :class=\"computedClasses\"\n :style=\"computedStyle\"\n v-bind=\"computedLinkProps\"\n :type=\"props.button && !computedLink ? props.buttonType : undefined\"\n :disabled=\"props.disabled || null\"\n :variant=\"null\"\n @click=\"clicked\"\n >\n <span v-if=\"hasDefaultSlot\" class=\"b-avatar-custom\">\n <slot />\n </span>\n <span v-else-if=\"!!localSrc\" class=\"b-avatar-img\">\n <img :src=\"localSrc\" :alt=\"props.alt\" @error=\"onImgError\" />\n </span>\n <span v-else-if=\"!!props.text\" class=\"b-avatar-text\" :style=\"textFontStyle\">\n {{ props.text }}\n </span>\n <span v-else class=\"b-avatar-img\"\n ><svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"80%\"\n height=\"80%\"\n fill=\"currentColor\"\n class=\"bi bi-person-fill\"\n viewBox=\"0 0 16 16\"\n >\n <path d=\"M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6\" />\n </svg>\n </span>\n <BBadge\n v-if=\"showBadge\"\n :pill=\"props.badgePill\"\n :dot-indicator=\"props.badgeDotIndicator || badgeImplicitlyDot\"\n :variant=\"props.badgeVariant\"\n :bg-variant=\"props.badgeBgVariant\"\n :text-variant=\"props.badgeTextVariant\"\n :style=\"badgeStyle\"\n :placement=\"props.badgePlacement\"\n >\n <slot name=\"badge\">\n {{ badgeText }}\n </slot>\n </BBadge>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {avatarGroupInjectionKey} from '../../utils/keys'\nimport {computed, type CSSProperties, inject, ref, type StyleValue, watch} from 'vue'\nimport type {BAvatarProps} from '../../types/ComponentProps'\nimport BLink from '../BLink/BLink.vue'\nimport BBadge from '../BBadge/BBadge.vue'\nimport {useBLinkHelper} from '../../composables/useBLinkHelper'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useNumberishToStyle} from '../../composables/useNumberishToStyle'\nimport {useRadiusElementClasses} from '../../composables/useRadiusElementClasses'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BAvatarEmits, BAvatarSlots, Size} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<BAvatarProps>(), {\n alt: 'avatar',\n badge: false,\n badgeBgVariant: null,\n badgeTextVariant: null,\n badgeVariant: 'primary',\n badgePlacement: 'bottom-end',\n badgeDotIndicator: false,\n badgePill: false,\n button: false,\n buttonType: 'button',\n size: undefined,\n square: false,\n src: undefined,\n text: undefined,\n // Link props\n variant: 'secondary',\n // All others use defaults\n active: undefined,\n activeClass: undefined,\n disabled: undefined,\n exactActiveClass: undefined,\n href: undefined,\n opacity: undefined,\n opacityHover: undefined,\n rel: undefined,\n replace: undefined,\n stretched: false,\n routerComponentName: undefined,\n target: undefined,\n underlineOffset: undefined,\n underlineOffsetHover: undefined,\n underlineOpacity: undefined,\n underlineOpacityHover: undefined,\n underlineVariant: undefined,\n // End link props\n // ColorExtendables props\n // Variant is here as well\n bgVariant: null,\n textVariant: null,\n // End ColorExtendables props\n // RadiusElementExtendables props\n rounded: 'circle',\n roundedBottom: undefined,\n roundedEnd: undefined,\n roundedStart: undefined,\n roundedTop: undefined,\n // End RadiusElementExtendables props\n})\nconst props = useDefaults(_props, 'BAvatar')\nconst emit = defineEmits<BAvatarEmits>()\nconst slots = defineSlots<BAvatarSlots>()\n\nconst localSrc = ref(props.src)\nwatch(\n () => props.src,\n (value) => {\n localSrc.value = value\n }\n)\n\nconst {computedLink, computedLinkProps} = useBLinkHelper(props)\n\nconst parentData = inject(avatarGroupInjectionKey, null)\n\nconst SIZES = Object.freeze([\n null,\n ...Object.keys({\n lg: null,\n sm: null,\n } satisfies Record<Size, null>),\n] as (string | null)[])\nconst FONT_SIZE_SCALE = 0.4\nconst BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * 0.7\n\nconst hasDefaultSlot = computed(() => !isEmptySlot(slots.default))\nconst hasBadgeSlot = computed(() => !isEmptySlot(slots.badge))\n\nconst showBadge = computed(() => !!props.badge || props.badge === '' || hasBadgeSlot.value)\nconst computedSquare = computed(() => parentData?.square.value || props.square)\n\n// const computedPropSize = useNumberishToStyle(() => props.size)\n// const propSizeIsLiteralSize = (val: unknown): val is Size =>\n// !!val && typeof val === 'string' && SIZES.includes(val)\n// const computedParentSize = useNumberishToStyle(() => parentData?.size.value)\n// const computedSize = computed(() => computedParentSize.value ?? computedPropSize.value)\n// const computedPropSizeIsLiteralSize = computed(() => propSizeIsLiteralSize(computedSize.value))\n\nconst computedSize = useNumberishToStyle(() => parentData?.size.value ?? props.size)\nconst computedSizeIsLiteralSize = computed(\n () => !!computedSize.value && SIZES.includes(computedSize.value)\n)\n\nconst computedVariant = computed(() => parentData?.variant.value ?? props.variant)\nconst computedRounded = computed(() => parentData?.rounded.value ?? props.rounded)\nconst computedRoundedTop = computed(() => parentData?.roundedTop.value ?? props.roundedTop)\nconst computedRoundedBottom = computed(() => parentData?.roundedBottom.value ?? props.roundedBottom)\nconst computedRoundedStart = computed(() => parentData?.roundedStart.value ?? props.roundedStart)\nconst computedRoundedEnd = computed(() => parentData?.roundedEnd.value ?? props.roundedEnd)\n\nconst radiusElementClasses = useRadiusElementClasses(() => ({\n rounded: computedRounded.value,\n roundedTop: computedRoundedTop.value,\n roundedBottom: computedRoundedBottom.value,\n roundedStart: computedRoundedStart.value,\n roundedEnd: computedRoundedEnd.value,\n}))\n\nconst badgeText = computed(() => (props.badge === true ? '' : props.badge))\nconst badgeImplicitlyDot = computed(() => !badgeText.value && !hasBadgeSlot.value)\n\nconst colorClasses = useColorVariantClasses(() => ({\n bgVariant: parentData?.bgVariant.value ?? props.bgVariant,\n textVariant: parentData?.textVariant.value ?? props.textVariant,\n variant: computedVariant.value,\n}))\nconst computedClasses = computed(() => [\n colorClasses.value,\n // Square overwrites all else\n computedSquare.value === true ? undefined : radiusElementClasses.value,\n {\n [`b-avatar-${computedSize.value}`]:\n computedSizeIsLiteralSize.value && computedSize.value !== 'md',\n [`btn-${computedVariant.value}`]: props.button ? computedVariant.value !== null : false,\n 'badge': !props.button && computedVariant.value !== null && hasDefaultSlot.value,\n 'btn': props.button,\n // Square is the same as rounded-0 class\n 'rounded-0': computedSquare.value === true,\n },\n])\n\nconst badgeStyle = computed<StyleValue>(() => ({\n fontSize:\n (!computedSizeIsLiteralSize.value\n ? `calc(${computedSize.value} * ${BADGE_FONT_SIZE_SCALE})`\n : '') || '',\n}))\n\nconst textFontStyle = computed<StyleValue>(() => {\n const fontSize = !computedSizeIsLiteralSize.value\n ? `calc(${computedSize.value} * ${FONT_SIZE_SCALE})`\n : null\n return fontSize ? {fontSize} : {}\n})\n\nconst marginStyle = computed(() => {\n const overlapScale = parentData?.overlapScale?.value || 0\n\n const value =\n computedSize.value && overlapScale ? `calc(${computedSize.value} * -${overlapScale})` : null\n return value ? {marginLeft: value, marginRight: value} : {}\n})\n\nconst computedTag = computed(() => (computedLink.value ? BLink : props.button ? 'button' : 'span'))\n\nconst computedStyle = computed<CSSProperties>(() => ({\n ...marginStyle.value,\n ...(!computedSizeIsLiteralSize.value\n ? {\n width: computedSize.value,\n height: computedSize.value,\n }\n : undefined),\n}))\n\nconst clicked = (e: Readonly<MouseEvent>): void => {\n if (!props.disabled && (computedLink.value || props.button)) emit('click', e)\n}\n\nconst onImgError = (e: Readonly<Event>) => {\n localSrc.value = undefined\n emit('img-error', e)\n}\n</script>\n","<template>\n <component\n :is=\"computedTag\"\n class=\"b-avatar\"\n :class=\"computedClasses\"\n :style=\"computedStyle\"\n v-bind=\"computedLinkProps\"\n :type=\"props.button && !computedLink ? props.buttonType : undefined\"\n :disabled=\"props.disabled || null\"\n :variant=\"null\"\n @click=\"clicked\"\n >\n <span v-if=\"hasDefaultSlot\" class=\"b-avatar-custom\">\n <slot />\n </span>\n <span v-else-if=\"!!localSrc\" class=\"b-avatar-img\">\n <img :src=\"localSrc\" :alt=\"props.alt\" @error=\"onImgError\" />\n </span>\n <span v-else-if=\"!!props.text\" class=\"b-avatar-text\" :style=\"textFontStyle\">\n {{ props.text }}\n </span>\n <span v-else class=\"b-avatar-img\"\n ><svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"80%\"\n height=\"80%\"\n fill=\"currentColor\"\n class=\"bi bi-person-fill\"\n viewBox=\"0 0 16 16\"\n >\n <path d=\"M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6\" />\n </svg>\n </span>\n <BBadge\n v-if=\"showBadge\"\n :pill=\"props.badgePill\"\n :dot-indicator=\"props.badgeDotIndicator || badgeImplicitlyDot\"\n :variant=\"props.badgeVariant\"\n :bg-variant=\"props.badgeBgVariant\"\n :text-variant=\"props.badgeTextVariant\"\n :style=\"badgeStyle\"\n :placement=\"props.badgePlacement\"\n >\n <slot name=\"badge\">\n {{ badgeText }}\n </slot>\n </BBadge>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {avatarGroupInjectionKey} from '../../utils/keys'\nimport {computed, type CSSProperties, inject, ref, type StyleValue, watch} from 'vue'\nimport type {BAvatarProps} from '../../types/ComponentProps'\nimport BLink from '../BLink/BLink.vue'\nimport BBadge from '../BBadge/BBadge.vue'\nimport {useBLinkHelper} from '../../composables/useBLinkHelper'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useNumberishToStyle} from '../../composables/useNumberishToStyle'\nimport {useRadiusElementClasses} from '../../composables/useRadiusElementClasses'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BAvatarEmits, BAvatarSlots, Size} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<BAvatarProps>(), {\n alt: 'avatar',\n badge: false,\n badgeBgVariant: null,\n badgeTextVariant: null,\n badgeVariant: 'primary',\n badgePlacement: 'bottom-end',\n badgeDotIndicator: false,\n badgePill: false,\n button: false,\n buttonType: 'button',\n size: undefined,\n square: false,\n src: undefined,\n text: undefined,\n // Link props\n variant: 'secondary',\n // All others use defaults\n active: undefined,\n activeClass: undefined,\n disabled: undefined,\n exactActiveClass: undefined,\n href: undefined,\n opacity: undefined,\n opacityHover: undefined,\n rel: undefined,\n replace: undefined,\n stretched: false,\n routerComponentName: undefined,\n target: undefined,\n underlineOffset: undefined,\n underlineOffsetHover: undefined,\n underlineOpacity: undefined,\n underlineOpacityHover: undefined,\n underlineVariant: undefined,\n // End link props\n // ColorExtendables props\n // Variant is here as well\n bgVariant: null,\n textVariant: null,\n // End ColorExtendables props\n // RadiusElementExtendables props\n rounded: 'circle',\n roundedBottom: undefined,\n roundedEnd: undefined,\n roundedStart: undefined,\n roundedTop: undefined,\n // End RadiusElementExtendables props\n})\nconst props = useDefaults(_props, 'BAvatar')\nconst emit = defineEmits<BAvatarEmits>()\nconst slots = defineSlots<BAvatarSlots>()\n\nconst localSrc = ref(props.src)\nwatch(\n () => props.src,\n (value) => {\n localSrc.value = value\n }\n)\n\nconst {computedLink, computedLinkProps} = useBLinkHelper(props)\n\nconst parentData = inject(avatarGroupInjectionKey, null)\n\nconst SIZES = Object.freeze([\n null,\n ...Object.keys({\n lg: null,\n sm: null,\n } satisfies Record<Size, null>),\n] as (string | null)[])\nconst FONT_SIZE_SCALE = 0.4\nconst BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * 0.7\n\nconst hasDefaultSlot = computed(() => !isEmptySlot(slots.default))\nconst hasBadgeSlot = computed(() => !isEmptySlot(slots.badge))\n\nconst showBadge = computed(() => !!props.badge || props.badge === '' || hasBadgeSlot.value)\nconst computedSquare = computed(() => parentData?.square.value || props.square)\n\n// const computedPropSize = useNumberishToStyle(() => props.size)\n// const propSizeIsLiteralSize = (val: unknown): val is Size =>\n// !!val && typeof val === 'string' && SIZES.includes(val)\n// const computedParentSize = useNumberishToStyle(() => parentData?.size.value)\n// const computedSize = computed(() => computedParentSize.value ?? computedPropSize.value)\n// const computedPropSizeIsLiteralSize = computed(() => propSizeIsLiteralSize(computedSize.value))\n\nconst computedSize = useNumberishToStyle(() => parentData?.size.value ?? props.size)\nconst computedSizeIsLiteralSize = computed(\n () => !!computedSize.value && SIZES.includes(computedSize.value)\n)\n\nconst computedVariant = computed(() => parentData?.variant.value ?? props.variant)\nconst computedRounded = computed(() => parentData?.rounded.value ?? props.rounded)\nconst computedRoundedTop = computed(() => parentData?.roundedTop.value ?? props.roundedTop)\nconst computedRoundedBottom = computed(() => parentData?.roundedBottom.value ?? props.roundedBottom)\nconst computedRoundedStart = computed(() => parentData?.roundedStart.value ?? props.roundedStart)\nconst computedRoundedEnd = computed(() => parentData?.roundedEnd.value ?? props.roundedEnd)\n\nconst radiusElementClasses = useRadiusElementClasses(() => ({\n rounded: computedRounded.value,\n roundedTop: computedRoundedTop.value,\n roundedBottom: computedRoundedBottom.value,\n roundedStart: computedRoundedStart.value,\n roundedEnd: computedRoundedEnd.value,\n}))\n\nconst badgeText = computed(() => (props.badge === true ? '' : props.badge))\nconst badgeImplicitlyDot = computed(() => !badgeText.value && !hasBadgeSlot.value)\n\nconst colorClasses = useColorVariantClasses(() => ({\n bgVariant: parentData?.bgVariant.value ?? props.bgVariant,\n textVariant: parentData?.textVariant.value ?? props.textVariant,\n variant: computedVariant.value,\n}))\nconst computedClasses = computed(() => [\n colorClasses.value,\n // Square overwrites all else\n computedSquare.value === true ? undefined : radiusElementClasses.value,\n {\n [`b-avatar-${computedSize.value}`]:\n computedSizeIsLiteralSize.value && computedSize.value !== 'md',\n [`btn-${computedVariant.value}`]: props.button ? computedVariant.value !== null : false,\n 'badge': !props.button && computedVariant.value !== null && hasDefaultSlot.value,\n 'btn': props.button,\n // Square is the same as rounded-0 class\n 'rounded-0': computedSquare.value === true,\n },\n])\n\nconst badgeStyle = computed<StyleValue>(() => ({\n fontSize:\n (!computedSizeIsLiteralSize.value\n ? `calc(${computedSize.value} * ${BADGE_FONT_SIZE_SCALE})`\n : '') || '',\n}))\n\nconst textFontStyle = computed<StyleValue>(() => {\n const fontSize = !computedSizeIsLiteralSize.value\n ? `calc(${computedSize.value} * ${FONT_SIZE_SCALE})`\n : null\n return fontSize ? {fontSize} : {}\n})\n\nconst marginStyle = computed(() => {\n const overlapScale = parentData?.overlapScale?.value || 0\n\n const value =\n computedSize.value && overlapScale ? `calc(${computedSize.value} * -${overlapScale})` : null\n return value ? {marginLeft: value, marginRight: value} : {}\n})\n\nconst computedTag = computed(() => (computedLink.value ? BLink : props.button ? 'button' : 'span'))\n\nconst computedStyle = computed<CSSProperties>(() => ({\n ...marginStyle.value,\n ...(!computedSizeIsLiteralSize.value\n ? {\n width: computedSize.value,\n height: computedSize.value,\n }\n : undefined),\n}))\n\nconst clicked = (e: Readonly<MouseEvent>): void => {\n if (!props.disabled && (computedLink.value || props.button)) emit('click', e)\n}\n\nconst onImgError = (e: Readonly<Event>) => {\n localSrc.value = undefined\n emit('img-error', e)\n}\n</script>\n","<template>\n <component :is=\"props.tag\" class=\"b-avatar-group\" role=\"group\">\n <div class=\"b-avatar-group-inner\" :style=\"paddingStyle\">\n <slot />\n </div>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, type StyleValue, toRef} from 'vue'\nimport type {BAvatarGroupProps} from '../../types/ComponentProps'\nimport {avatarGroupInjectionKey} from '../../utils/keys'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useToNumber} from '@vueuse/core'\nimport {useNumberishToStyle} from '../../composables/useNumberishToStyle'\nimport type {BAvatarGroupSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BAvatarGroupProps>(), {\n overlap: 0.3,\n size: undefined,\n square: false,\n tag: 'div',\n // RadiusElementExtendables props\n rounded: 'circle',\n roundedBottom: undefined,\n roundedEnd: undefined,\n roundedStart: undefined,\n roundedTop: undefined,\n // End RadiusElementExtendables props\n // ColorExtendables props\n bgVariant: null,\n textVariant: null,\n variant: null,\n // End ColorExtendables props\n})\nconst props = useDefaults(_props, 'BAvatarGroup')\ndefineSlots<BAvatarGroupSlots>()\n\nconst overlapNumber = useToNumber(() => props.overlap)\n\nconst computedSize = useNumberishToStyle(() => props.size)\nconst overlapScale = computed(() => Math.min(Math.max(overlapNumber.value, 0), 1) / 2)\n\nconst paddingStyle = computed<StyleValue>(() => {\n const value = computedSize.value ? `calc(${computedSize.value} * ${overlapScale.value})` : null\n return value ? {paddingLeft: value, paddingRight: value} : {}\n})\n\nprovide(avatarGroupInjectionKey, {\n overlapScale,\n size: toRef(() => props.size),\n square: toRef(() => props.square),\n rounded: toRef(() => props.rounded),\n roundedTop: toRef(() => props.roundedTop),\n roundedBottom: toRef(() => props.roundedBottom),\n roundedStart: toRef(() => props.roundedStart),\n roundedEnd: toRef(() => props.roundedEnd),\n variant: toRef(() => props.variant),\n bgVariant: toRef(() => props.bgVariant),\n textVariant: toRef(() => props.textVariant),\n})\n</script>\n","<template>\n <component :is=\"props.tag\" class=\"b-avatar-group\" role=\"group\">\n <div class=\"b-avatar-group-inner\" :style=\"paddingStyle\">\n <slot />\n </div>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, type StyleValue, toRef} from 'vue'\nimport type {BAvatarGroupProps} from '../../types/ComponentProps'\nimport {avatarGroupInjectionKey} from '../../utils/keys'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useToNumber} from '@vueuse/core'\nimport {useNumberishToStyle} from '../../composables/useNumberishToStyle'\nimport type {BAvatarGroupSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BAvatarGroupProps>(), {\n overlap: 0.3,\n size: undefined,\n square: false,\n tag: 'div',\n // RadiusElementExtendables props\n rounded: 'circle',\n roundedBottom: undefined,\n roundedEnd: undefined,\n roundedStart: undefined,\n roundedTop: undefined,\n // End RadiusElementExtendables props\n // ColorExtendables props\n bgVariant: null,\n textVariant: null,\n variant: null,\n // End ColorExtendables props\n})\nconst props = useDefaults(_props, 'BAvatarGroup')\ndefineSlots<BAvatarGroupSlots>()\n\nconst overlapNumber = useToNumber(() => props.overlap)\n\nconst computedSize = useNumberishToStyle(() => props.size)\nconst overlapScale = computed(() => Math.min(Math.max(overlapNumber.value, 0), 1) / 2)\n\nconst paddingStyle = computed<StyleValue>(() => {\n const value = computedSize.value ? `calc(${computedSize.value} * ${overlapScale.value})` : null\n return value ? {paddingLeft: value, paddingRight: value} : {}\n})\n\nprovide(avatarGroupInjectionKey, {\n overlapScale,\n size: toRef(() => props.size),\n square: toRef(() => props.square),\n rounded: toRef(() => props.rounded),\n roundedTop: toRef(() => props.roundedTop),\n roundedBottom: toRef(() => props.roundedBottom),\n roundedStart: toRef(() => props.roundedStart),\n roundedEnd: toRef(() => props.roundedEnd),\n variant: toRef(() => props.variant),\n bgVariant: toRef(() => props.bgVariant),\n textVariant: toRef(() => props.textVariant),\n})\n</script>\n"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ const require_keys = require("./keys-durSVUrO.js");
|
|
|
3
3
|
const require_dom = require("./dom-Bs6DzM72.js");
|
|
4
4
|
const require_useDefaults = require("./useDefaults-DsLf4iRY.js");
|
|
5
5
|
require("./constants-hccBP09R.js");
|
|
6
|
-
require("./BButton-
|
|
6
|
+
require("./BButton-Bw4HgpsF.js");
|
|
7
7
|
require("./BCloseButton-CN__Jjcj.js");
|
|
8
8
|
let vue = require("vue");
|
|
9
9
|
//#endregion
|
|
@@ -12,7 +12,7 @@ var BButtonGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
12
12
|
__name: "BButtonGroup",
|
|
13
13
|
props: {
|
|
14
14
|
ariaLabel: { default: "Group" },
|
|
15
|
-
size: { default:
|
|
15
|
+
size: { default: void 0 },
|
|
16
16
|
tag: { default: "div" },
|
|
17
17
|
vertical: {
|
|
18
18
|
type: Boolean,
|
|
@@ -24,7 +24,7 @@ var BButtonGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
24
24
|
const props = require_useDefaults.useDefaults(__props, "BButtonGroup");
|
|
25
25
|
const computedClasses = (0, vue.computed)(() => ({
|
|
26
26
|
"btn-group": !props.vertical,
|
|
27
|
-
[`btn-group-${props.size}`]: props.size !==
|
|
27
|
+
[`btn-group-${props.size}`]: props.size !== void 0,
|
|
28
28
|
"btn-group-vertical": props.vertical
|
|
29
29
|
}));
|
|
30
30
|
return (_ctx, _cache) => {
|
|
@@ -153,4 +153,4 @@ Object.defineProperty(exports, "BButtonToolbar_default", {
|
|
|
153
153
|
}
|
|
154
154
|
});
|
|
155
155
|
|
|
156
|
-
//# sourceMappingURL=BButton-
|
|
156
|
+
//# sourceMappingURL=BButton-BUYwco3v.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BButton-BUYwco3v.js","names":[],"sources":["../src/components/BButton/BButtonGroup.vue","../src/components/BButton/BButtonGroup.vue","../src/components/BButton/BButtonToolbar.vue","../src/components/BButton/BButtonToolbar.vue"],"sourcesContent":["<template>\n <component :is=\"props.tag\" :class=\"computedClasses\" role=\"group\" :aria-label=\"props.ariaLabel\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BButtonGroupProps} from '../../types/ComponentProps'\nimport {computed, provide} from 'vue'\nimport {buttonGroupKey} from '../../utils/keys'\nimport type {BButtonGroupSlots} from '../../types'\n\nprovide(buttonGroupKey, true)\n\nconst _props = withDefaults(defineProps<BButtonGroupProps>(), {\n ariaLabel: 'Group',\n size: undefined,\n tag: 'div',\n vertical: false,\n})\nconst props = useDefaults(_props, 'BButtonGroup')\ndefineSlots<BButtonGroupSlots>()\n\nconst computedClasses = computed(() => ({\n 'btn-group': !props.vertical,\n [`btn-group-${props.size}`]: props.size !== undefined,\n 'btn-group-vertical': props.vertical,\n}))\n</script>\n","<template>\n <component :is=\"props.tag\" :class=\"computedClasses\" role=\"group\" :aria-label=\"props.ariaLabel\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BButtonGroupProps} from '../../types/ComponentProps'\nimport {computed, provide} from 'vue'\nimport {buttonGroupKey} from '../../utils/keys'\nimport type {BButtonGroupSlots} from '../../types'\n\nprovide(buttonGroupKey, true)\n\nconst _props = withDefaults(defineProps<BButtonGroupProps>(), {\n ariaLabel: 'Group',\n size: undefined,\n tag: 'div',\n vertical: false,\n})\nconst props = useDefaults(_props, 'BButtonGroup')\ndefineSlots<BButtonGroupSlots>()\n\nconst computedClasses = computed(() => ({\n 'btn-group': !props.vertical,\n [`btn-group-${props.size}`]: props.size !== undefined,\n 'btn-group-vertical': props.vertical,\n}))\n</script>\n","<template>\n <div\n ref=\"toolbarRef\"\n :class=\"computedClasses\"\n class=\"btn-toolbar\"\n :role=\"props.role\"\n :aria-label=\"props.ariaLabel\"\n @keydown=\"handleKeyNav\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BButtonToolbarSlots, BButtonToolbarProps} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {computed, nextTick, useTemplateRef} from 'vue'\nimport {CODE_DOWN, CODE_END, CODE_HOME, CODE_LEFT, CODE_RIGHT, CODE_UP} from '../../utils/constants'\nimport {getActiveElement, getSafeWindow} from '../../utils/dom'\n\nconst _props = withDefaults(defineProps<BButtonToolbarProps>(), {\n ariaLabel: 'Group',\n justify: false,\n keyNav: false,\n role: 'toolbar',\n})\nconst props = useDefaults(_props, 'BButtonToolbar')\ndefineSlots<BButtonToolbarSlots>()\n\nconst toolbarRef = useTemplateRef<HTMLElement>('toolbarRef')\n\nconst computedClasses = computed(() => ({\n 'justify-content-between': props.justify,\n}))\n\n// Get all focusable elements within the toolbar\nconst getFocusableElements = (): HTMLElement[] => {\n if (!toolbarRef.value) return []\n\n const selector =\n 'button:not(:disabled), [href]:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex=\"-1\"]):not(:disabled)'\n const elements = Array.from(toolbarRef.value.querySelectorAll(selector)) as HTMLElement[]\n\n // Filter out elements that are not visible or have display:none\n return elements.filter((el) => {\n const style = getSafeWindow()?.getComputedStyle(el)\n return style && style.display !== 'none' && style.visibility !== 'hidden'\n })\n}\n\nconst isDisabled = (element: HTMLElement): boolean =>\n element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true'\n\nconst focusFirst = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const firstEnabled = elements.find((el) => !isDisabled(el))\n firstEnabled?.focus()\n })\n}\n\nconst focusLast = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const lastEnabled = elements.reverse().find((el) => !isDisabled(el))\n lastEnabled?.focus()\n })\n}\n\nconst focusPrev = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const activeElement = getActiveElement() as HTMLElement\n const currentIndex = elements.indexOf(activeElement)\n\n if (currentIndex > 0) {\n // Look backwards for the first non-disabled element\n for (let i = currentIndex - 1; i >= 0; i--) {\n const el = elements[i]\n if (el !== undefined && !isDisabled(el)) {\n elements[i]?.focus()\n break\n }\n }\n }\n })\n}\n\nconst focusNext = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const activeElement = getActiveElement() as HTMLElement\n const currentIndex = elements.indexOf(activeElement)\n\n if (currentIndex < elements.length - 1) {\n // Look forwards for the first non-disabled element\n for (let i = currentIndex + 1; i < elements.length; i++) {\n const el = elements[i]\n if (el !== undefined && !isDisabled(el)) {\n elements[i]?.focus()\n break\n }\n }\n }\n })\n}\n\nconst handleKeyNav = (event: KeyboardEvent) => {\n if (!props.keyNav) return\n\n const {code, shiftKey} = event\n\n if (code === CODE_LEFT || code === CODE_UP) {\n event.preventDefault()\n if (shiftKey) {\n focusFirst()\n } else {\n focusPrev()\n }\n } else if (code === CODE_RIGHT || code === CODE_DOWN) {\n event.preventDefault()\n if (shiftKey) {\n focusLast()\n } else {\n focusNext()\n }\n } else if (code === CODE_HOME) {\n event.preventDefault()\n focusFirst()\n } else if (code === CODE_END) {\n event.preventDefault()\n focusLast()\n }\n}\n</script>\n","<template>\n <div\n ref=\"toolbarRef\"\n :class=\"computedClasses\"\n class=\"btn-toolbar\"\n :role=\"props.role\"\n :aria-label=\"props.ariaLabel\"\n @keydown=\"handleKeyNav\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BButtonToolbarSlots, BButtonToolbarProps} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {computed, nextTick, useTemplateRef} from 'vue'\nimport {CODE_DOWN, CODE_END, CODE_HOME, CODE_LEFT, CODE_RIGHT, CODE_UP} from '../../utils/constants'\nimport {getActiveElement, getSafeWindow} from '../../utils/dom'\n\nconst _props = withDefaults(defineProps<BButtonToolbarProps>(), {\n ariaLabel: 'Group',\n justify: false,\n keyNav: false,\n role: 'toolbar',\n})\nconst props = useDefaults(_props, 'BButtonToolbar')\ndefineSlots<BButtonToolbarSlots>()\n\nconst toolbarRef = useTemplateRef<HTMLElement>('toolbarRef')\n\nconst computedClasses = computed(() => ({\n 'justify-content-between': props.justify,\n}))\n\n// Get all focusable elements within the toolbar\nconst getFocusableElements = (): HTMLElement[] => {\n if (!toolbarRef.value) return []\n\n const selector =\n 'button:not(:disabled), [href]:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex=\"-1\"]):not(:disabled)'\n const elements = Array.from(toolbarRef.value.querySelectorAll(selector)) as HTMLElement[]\n\n // Filter out elements that are not visible or have display:none\n return elements.filter((el) => {\n const style = getSafeWindow()?.getComputedStyle(el)\n return style && style.display !== 'none' && style.visibility !== 'hidden'\n })\n}\n\nconst isDisabled = (element: HTMLElement): boolean =>\n element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true'\n\nconst focusFirst = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const firstEnabled = elements.find((el) => !isDisabled(el))\n firstEnabled?.focus()\n })\n}\n\nconst focusLast = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const lastEnabled = elements.reverse().find((el) => !isDisabled(el))\n lastEnabled?.focus()\n })\n}\n\nconst focusPrev = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const activeElement = getActiveElement() as HTMLElement\n const currentIndex = elements.indexOf(activeElement)\n\n if (currentIndex > 0) {\n // Look backwards for the first non-disabled element\n for (let i = currentIndex - 1; i >= 0; i--) {\n const el = elements[i]\n if (el !== undefined && !isDisabled(el)) {\n elements[i]?.focus()\n break\n }\n }\n }\n })\n}\n\nconst focusNext = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const activeElement = getActiveElement() as HTMLElement\n const currentIndex = elements.indexOf(activeElement)\n\n if (currentIndex < elements.length - 1) {\n // Look forwards for the first non-disabled element\n for (let i = currentIndex + 1; i < elements.length; i++) {\n const el = elements[i]\n if (el !== undefined && !isDisabled(el)) {\n elements[i]?.focus()\n break\n }\n }\n }\n })\n}\n\nconst handleKeyNav = (event: KeyboardEvent) => {\n if (!props.keyNav) return\n\n const {code, shiftKey} = event\n\n if (code === CODE_LEFT || code === CODE_UP) {\n event.preventDefault()\n if (shiftKey) {\n focusFirst()\n } else {\n focusPrev()\n }\n } else if (code === CODE_RIGHT || code === CODE_DOWN) {\n event.preventDefault()\n if (shiftKey) {\n focusLast()\n } else {\n focusNext()\n }\n } else if (code === CODE_HOME) {\n event.preventDefault()\n focusFirst()\n } else if (code === CODE_END) {\n event.preventDefault()\n focusLast()\n }\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ var BButton_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
23
23
|
type: Boolean,
|
|
24
24
|
default: false
|
|
25
25
|
},
|
|
26
|
-
size: { default:
|
|
26
|
+
size: { default: void 0 },
|
|
27
27
|
squared: {
|
|
28
28
|
type: Boolean,
|
|
29
29
|
default: false
|
|
@@ -117,17 +117,14 @@ var BButton_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
117
117
|
underlineVariant: props.underlineVariant,
|
|
118
118
|
variant: variantIsLinkTypeSubset.value === true ? props.variant?.slice(5) : null
|
|
119
119
|
} : void 0 })));
|
|
120
|
-
const computedClasses = (0, vue.computed)(() => [
|
|
121
|
-
|
|
122
|
-
[`btn-${props.
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
"disabled": props.disabled
|
|
129
|
-
}
|
|
130
|
-
]);
|
|
120
|
+
const computedClasses = (0, vue.computed)(() => [variantIsLinkType.value === true && computedLink.value === false ? linkValueClasses.value : void 0, {
|
|
121
|
+
[`btn-${props.size}`]: props.size !== void 0,
|
|
122
|
+
[`btn-${props.variant}`]: props.variant !== null && variantIsLinkTypeSubset.value === false,
|
|
123
|
+
"active": props.active || pressedValue.value,
|
|
124
|
+
"rounded-pill": props.pill,
|
|
125
|
+
"rounded-0": props.squared,
|
|
126
|
+
"disabled": props.disabled
|
|
127
|
+
}]);
|
|
131
128
|
const computedTag = (0, vue.computed)(() => isBLink.value ? require_BLink.BLink_default : props.href ? "a" : props.tag);
|
|
132
129
|
const clicked = (e) => {
|
|
133
130
|
if (props.disabled) {
|
|
@@ -191,4 +188,4 @@ Object.defineProperty(exports, "BButton_default", {
|
|
|
191
188
|
}
|
|
192
189
|
});
|
|
193
190
|
|
|
194
|
-
//# sourceMappingURL=BButton-
|
|
191
|
+
//# sourceMappingURL=BButton-Bw4HgpsF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BButton-Bw4HgpsF.js","names":[],"sources":["../src/components/BButton/BButton.vue","../src/components/BButton/BButton.vue"],"sourcesContent":["<template>\n <component\n :is=\"computedTag\"\n ref=\"_element\"\n class=\"btn\"\n v-bind=\"linkProps\"\n :class=\"computedClasses\"\n :aria-disabled=\"computedAriaDisabled\"\n :aria-pressed=\"isToggle ? pressedValue : null\"\n :autocomplete=\"isToggle ? 'off' : null\"\n :disabled=\"isButton ? props.disabled : null\"\n :href=\"props.href\"\n :rel=\"computedLink ? props.rel : null\"\n :role=\"nonStandardTag || computedLink ? 'button' : null\"\n :target=\"computedLink ? props.target : null\"\n :type=\"isButton ? props.type : null\"\n :to=\"!isButton ? props.to : null\"\n @click=\"clicked\"\n >\n <slot v-if=\"props.loading\" name=\"loading\">\n <template v-if=\"!props.loadingFill\">\n {{ props.loadingText }}\n </template>\n <slot name=\"loading-spinner\">\n <BSpinner\n :small=\"props.size !== 'lg'\"\n :label=\"props.loadingFill ? props.loadingText : undefined\"\n />\n </slot>\n </slot>\n <slot v-else />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, useTemplateRef} from 'vue'\nimport BSpinner from '../BSpinner/BSpinner.vue'\nimport {useBLinkHelper} from '../../composables/useBLinkHelper'\nimport BLink from '../BLink/BLink.vue'\nimport {useLinkClasses} from '../../composables/useLinkClasses'\nimport {onKeyStroke} from '@vueuse/core'\nimport type {BButtonProps} from '../../types/ComponentProps'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {ColorVariant} from '../../types/ColorTypes'\nimport {type BButtonEmits, type BButtonSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BButtonProps, 'pressed'>>(), {\n loading: false,\n loadingFill: false,\n loadingText: 'Loading...',\n pill: false,\n size: undefined,\n squared: false,\n tag: 'button',\n type: 'button',\n // Link props\n active: false, // Why is this active: false?\n variant: 'secondary',\n // All others use defaults\n activeClass: undefined,\n disabled: undefined,\n exactActiveClass: undefined,\n stretched: false,\n href: undefined,\n icon: false,\n opacity: undefined,\n opacityHover: undefined,\n rel: undefined,\n replace: undefined,\n routerComponentName: undefined,\n routerTag: undefined,\n target: undefined,\n to: undefined,\n underlineOffset: undefined,\n underlineOffsetHover: undefined,\n underlineOpacity: undefined,\n underlineOpacityHover: undefined,\n underlineVariant: null,\n // End link props\n})\nconst props = useDefaults(_props, 'BButton')\nconst emit = defineEmits<BButtonEmits>()\ndefineSlots<BButtonSlots>()\n\nconst element = useTemplateRef<HTMLButtonElement | null>('_element')\n\nconst pressedValue = defineModel<BButtonProps['pressed']>('pressed', {default: undefined})\n\nconst {computedLink, computedLinkProps} = useBLinkHelper(props, [\n 'activeClass',\n 'exactActiveClass',\n 'replace',\n 'routerComponentName',\n 'routerTag',\n 'noPrefetch',\n 'prefetch',\n 'prefetchOn',\n 'prefetchedClass',\n])\n\nconst isToggle = computed(() => typeof pressedValue.value === 'boolean')\nconst isButton = computed(\n () => props.tag === 'button' && props.href === undefined && props.to === undefined\n)\nconst isBLink = computed(() => props.to !== undefined)\nconst nonStandardTag = computed(() => (props.href !== undefined ? false : !isButton.value))\n\nconst linkProps = computed(() => (isBLink.value ? computedLinkProps.value : []))\nconst computedAriaDisabled = computed(() => {\n if (props.href === '#' && props.disabled) return true\n\n return nonStandardTag.value ? props.disabled : null\n})\n\nconst variantIsLinkType = computed(() => props.variant?.startsWith('link') || false)\nconst variantIsLinkTypeSubset = computed(() => props.variant?.startsWith('link-') || false)\nconst linkValueClasses = useLinkClasses(\n computed(() => ({\n ...(variantIsLinkType.value\n ? {\n icon: props.icon,\n opacity: props.opacity,\n opacityHover: props.opacityHover,\n underlineOffset: props.underlineOffset,\n underlineOffsetHover: props.underlineOffsetHover,\n underlineOpacity: props.underlineOpacity,\n underlineOpacityHover: props.underlineOpacityHover,\n underlineVariant: props.underlineVariant,\n variant:\n variantIsLinkTypeSubset.value === true\n ? (props.variant?.slice(5) as ColorVariant)\n : null,\n }\n : undefined),\n }))\n)\nconst computedClasses = computed(() => [\n variantIsLinkType.value === true && computedLink.value === false\n ? linkValueClasses.value\n : undefined,\n {\n [`btn-${props.size}`]: props.size !== undefined,\n [`btn-${props.variant}`]: props.variant !== null && variantIsLinkTypeSubset.value === false,\n 'active': props.active || pressedValue.value,\n 'rounded-pill': props.pill,\n 'rounded-0': props.squared,\n 'disabled': props.disabled,\n },\n])\n\nconst computedTag = computed(() => (isBLink.value ? BLink : props.href ? 'a' : props.tag))\n\nconst clicked = (e: Readonly<MouseEvent>): void => {\n if (props.disabled) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n emit('click', e)\n if (isToggle.value) pressedValue.value = !pressedValue.value\n}\n\nonKeyStroke(\n [' ', 'enter'],\n (e) => {\n if (props.href === '#') {\n e.preventDefault()\n element.value?.click()\n }\n },\n {target: element}\n)\n</script>\n","<template>\n <component\n :is=\"computedTag\"\n ref=\"_element\"\n class=\"btn\"\n v-bind=\"linkProps\"\n :class=\"computedClasses\"\n :aria-disabled=\"computedAriaDisabled\"\n :aria-pressed=\"isToggle ? pressedValue : null\"\n :autocomplete=\"isToggle ? 'off' : null\"\n :disabled=\"isButton ? props.disabled : null\"\n :href=\"props.href\"\n :rel=\"computedLink ? props.rel : null\"\n :role=\"nonStandardTag || computedLink ? 'button' : null\"\n :target=\"computedLink ? props.target : null\"\n :type=\"isButton ? props.type : null\"\n :to=\"!isButton ? props.to : null\"\n @click=\"clicked\"\n >\n <slot v-if=\"props.loading\" name=\"loading\">\n <template v-if=\"!props.loadingFill\">\n {{ props.loadingText }}\n </template>\n <slot name=\"loading-spinner\">\n <BSpinner\n :small=\"props.size !== 'lg'\"\n :label=\"props.loadingFill ? props.loadingText : undefined\"\n />\n </slot>\n </slot>\n <slot v-else />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, useTemplateRef} from 'vue'\nimport BSpinner from '../BSpinner/BSpinner.vue'\nimport {useBLinkHelper} from '../../composables/useBLinkHelper'\nimport BLink from '../BLink/BLink.vue'\nimport {useLinkClasses} from '../../composables/useLinkClasses'\nimport {onKeyStroke} from '@vueuse/core'\nimport type {BButtonProps} from '../../types/ComponentProps'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {ColorVariant} from '../../types/ColorTypes'\nimport {type BButtonEmits, type BButtonSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BButtonProps, 'pressed'>>(), {\n loading: false,\n loadingFill: false,\n loadingText: 'Loading...',\n pill: false,\n size: undefined,\n squared: false,\n tag: 'button',\n type: 'button',\n // Link props\n active: false, // Why is this active: false?\n variant: 'secondary',\n // All others use defaults\n activeClass: undefined,\n disabled: undefined,\n exactActiveClass: undefined,\n stretched: false,\n href: undefined,\n icon: false,\n opacity: undefined,\n opacityHover: undefined,\n rel: undefined,\n replace: undefined,\n routerComponentName: undefined,\n routerTag: undefined,\n target: undefined,\n to: undefined,\n underlineOffset: undefined,\n underlineOffsetHover: undefined,\n underlineOpacity: undefined,\n underlineOpacityHover: undefined,\n underlineVariant: null,\n // End link props\n})\nconst props = useDefaults(_props, 'BButton')\nconst emit = defineEmits<BButtonEmits>()\ndefineSlots<BButtonSlots>()\n\nconst element = useTemplateRef<HTMLButtonElement | null>('_element')\n\nconst pressedValue = defineModel<BButtonProps['pressed']>('pressed', {default: undefined})\n\nconst {computedLink, computedLinkProps} = useBLinkHelper(props, [\n 'activeClass',\n 'exactActiveClass',\n 'replace',\n 'routerComponentName',\n 'routerTag',\n 'noPrefetch',\n 'prefetch',\n 'prefetchOn',\n 'prefetchedClass',\n])\n\nconst isToggle = computed(() => typeof pressedValue.value === 'boolean')\nconst isButton = computed(\n () => props.tag === 'button' && props.href === undefined && props.to === undefined\n)\nconst isBLink = computed(() => props.to !== undefined)\nconst nonStandardTag = computed(() => (props.href !== undefined ? false : !isButton.value))\n\nconst linkProps = computed(() => (isBLink.value ? computedLinkProps.value : []))\nconst computedAriaDisabled = computed(() => {\n if (props.href === '#' && props.disabled) return true\n\n return nonStandardTag.value ? props.disabled : null\n})\n\nconst variantIsLinkType = computed(() => props.variant?.startsWith('link') || false)\nconst variantIsLinkTypeSubset = computed(() => props.variant?.startsWith('link-') || false)\nconst linkValueClasses = useLinkClasses(\n computed(() => ({\n ...(variantIsLinkType.value\n ? {\n icon: props.icon,\n opacity: props.opacity,\n opacityHover: props.opacityHover,\n underlineOffset: props.underlineOffset,\n underlineOffsetHover: props.underlineOffsetHover,\n underlineOpacity: props.underlineOpacity,\n underlineOpacityHover: props.underlineOpacityHover,\n underlineVariant: props.underlineVariant,\n variant:\n variantIsLinkTypeSubset.value === true\n ? (props.variant?.slice(5) as ColorVariant)\n : null,\n }\n : undefined),\n }))\n)\nconst computedClasses = computed(() => [\n variantIsLinkType.value === true && computedLink.value === false\n ? linkValueClasses.value\n : undefined,\n {\n [`btn-${props.size}`]: props.size !== undefined,\n [`btn-${props.variant}`]: props.variant !== null && variantIsLinkTypeSubset.value === false,\n 'active': props.active || pressedValue.value,\n 'rounded-pill': props.pill,\n 'rounded-0': props.squared,\n 'disabled': props.disabled,\n },\n])\n\nconst computedTag = computed(() => (isBLink.value ? BLink : props.href ? 'a' : props.tag))\n\nconst clicked = (e: Readonly<MouseEvent>): void => {\n if (props.disabled) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n emit('click', e)\n if (isToggle.value) pressedValue.value = !pressedValue.value\n}\n\nonKeyStroke(\n [' ', 'enter'],\n (e) => {\n if (props.href === '#') {\n e.preventDefault()\n element.value?.click()\n }\n },\n {target: element}\n)\n</script>\n"],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ var BButton_default = /* @__PURE__ */ defineComponent({
|
|
|
22
22
|
type: Boolean,
|
|
23
23
|
default: false
|
|
24
24
|
},
|
|
25
|
-
size: { default:
|
|
25
|
+
size: { default: void 0 },
|
|
26
26
|
squared: {
|
|
27
27
|
type: Boolean,
|
|
28
28
|
default: false
|
|
@@ -116,17 +116,14 @@ var BButton_default = /* @__PURE__ */ defineComponent({
|
|
|
116
116
|
underlineVariant: props.underlineVariant,
|
|
117
117
|
variant: variantIsLinkTypeSubset.value === true ? props.variant?.slice(5) : null
|
|
118
118
|
} : void 0 })));
|
|
119
|
-
const computedClasses = computed(() => [
|
|
120
|
-
|
|
121
|
-
[`btn-${props.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
"disabled": props.disabled
|
|
128
|
-
}
|
|
129
|
-
]);
|
|
119
|
+
const computedClasses = computed(() => [variantIsLinkType.value === true && computedLink.value === false ? linkValueClasses.value : void 0, {
|
|
120
|
+
[`btn-${props.size}`]: props.size !== void 0,
|
|
121
|
+
[`btn-${props.variant}`]: props.variant !== null && variantIsLinkTypeSubset.value === false,
|
|
122
|
+
"active": props.active || pressedValue.value,
|
|
123
|
+
"rounded-pill": props.pill,
|
|
124
|
+
"rounded-0": props.squared,
|
|
125
|
+
"disabled": props.disabled
|
|
126
|
+
}]);
|
|
130
127
|
const computedTag = computed(() => isBLink.value ? BLink_default : props.href ? "a" : props.tag);
|
|
131
128
|
const clicked = (e) => {
|
|
132
129
|
if (props.disabled) {
|
|
@@ -185,4 +182,4 @@ var BButton_default = /* @__PURE__ */ defineComponent({
|
|
|
185
182
|
//#endregion
|
|
186
183
|
export { BButton_default as t };
|
|
187
184
|
|
|
188
|
-
//# sourceMappingURL=BButton-
|
|
185
|
+
//# sourceMappingURL=BButton-CDo9SRvU.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BButton-CDo9SRvU.mjs","names":[],"sources":["../src/components/BButton/BButton.vue","../src/components/BButton/BButton.vue"],"sourcesContent":["<template>\n <component\n :is=\"computedTag\"\n ref=\"_element\"\n class=\"btn\"\n v-bind=\"linkProps\"\n :class=\"computedClasses\"\n :aria-disabled=\"computedAriaDisabled\"\n :aria-pressed=\"isToggle ? pressedValue : null\"\n :autocomplete=\"isToggle ? 'off' : null\"\n :disabled=\"isButton ? props.disabled : null\"\n :href=\"props.href\"\n :rel=\"computedLink ? props.rel : null\"\n :role=\"nonStandardTag || computedLink ? 'button' : null\"\n :target=\"computedLink ? props.target : null\"\n :type=\"isButton ? props.type : null\"\n :to=\"!isButton ? props.to : null\"\n @click=\"clicked\"\n >\n <slot v-if=\"props.loading\" name=\"loading\">\n <template v-if=\"!props.loadingFill\">\n {{ props.loadingText }}\n </template>\n <slot name=\"loading-spinner\">\n <BSpinner\n :small=\"props.size !== 'lg'\"\n :label=\"props.loadingFill ? props.loadingText : undefined\"\n />\n </slot>\n </slot>\n <slot v-else />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, useTemplateRef} from 'vue'\nimport BSpinner from '../BSpinner/BSpinner.vue'\nimport {useBLinkHelper} from '../../composables/useBLinkHelper'\nimport BLink from '../BLink/BLink.vue'\nimport {useLinkClasses} from '../../composables/useLinkClasses'\nimport {onKeyStroke} from '@vueuse/core'\nimport type {BButtonProps} from '../../types/ComponentProps'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {ColorVariant} from '../../types/ColorTypes'\nimport {type BButtonEmits, type BButtonSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BButtonProps, 'pressed'>>(), {\n loading: false,\n loadingFill: false,\n loadingText: 'Loading...',\n pill: false,\n size: undefined,\n squared: false,\n tag: 'button',\n type: 'button',\n // Link props\n active: false, // Why is this active: false?\n variant: 'secondary',\n // All others use defaults\n activeClass: undefined,\n disabled: undefined,\n exactActiveClass: undefined,\n stretched: false,\n href: undefined,\n icon: false,\n opacity: undefined,\n opacityHover: undefined,\n rel: undefined,\n replace: undefined,\n routerComponentName: undefined,\n routerTag: undefined,\n target: undefined,\n to: undefined,\n underlineOffset: undefined,\n underlineOffsetHover: undefined,\n underlineOpacity: undefined,\n underlineOpacityHover: undefined,\n underlineVariant: null,\n // End link props\n})\nconst props = useDefaults(_props, 'BButton')\nconst emit = defineEmits<BButtonEmits>()\ndefineSlots<BButtonSlots>()\n\nconst element = useTemplateRef<HTMLButtonElement | null>('_element')\n\nconst pressedValue = defineModel<BButtonProps['pressed']>('pressed', {default: undefined})\n\nconst {computedLink, computedLinkProps} = useBLinkHelper(props, [\n 'activeClass',\n 'exactActiveClass',\n 'replace',\n 'routerComponentName',\n 'routerTag',\n 'noPrefetch',\n 'prefetch',\n 'prefetchOn',\n 'prefetchedClass',\n])\n\nconst isToggle = computed(() => typeof pressedValue.value === 'boolean')\nconst isButton = computed(\n () => props.tag === 'button' && props.href === undefined && props.to === undefined\n)\nconst isBLink = computed(() => props.to !== undefined)\nconst nonStandardTag = computed(() => (props.href !== undefined ? false : !isButton.value))\n\nconst linkProps = computed(() => (isBLink.value ? computedLinkProps.value : []))\nconst computedAriaDisabled = computed(() => {\n if (props.href === '#' && props.disabled) return true\n\n return nonStandardTag.value ? props.disabled : null\n})\n\nconst variantIsLinkType = computed(() => props.variant?.startsWith('link') || false)\nconst variantIsLinkTypeSubset = computed(() => props.variant?.startsWith('link-') || false)\nconst linkValueClasses = useLinkClasses(\n computed(() => ({\n ...(variantIsLinkType.value\n ? {\n icon: props.icon,\n opacity: props.opacity,\n opacityHover: props.opacityHover,\n underlineOffset: props.underlineOffset,\n underlineOffsetHover: props.underlineOffsetHover,\n underlineOpacity: props.underlineOpacity,\n underlineOpacityHover: props.underlineOpacityHover,\n underlineVariant: props.underlineVariant,\n variant:\n variantIsLinkTypeSubset.value === true\n ? (props.variant?.slice(5) as ColorVariant)\n : null,\n }\n : undefined),\n }))\n)\nconst computedClasses = computed(() => [\n variantIsLinkType.value === true && computedLink.value === false\n ? linkValueClasses.value\n : undefined,\n {\n [`btn-${props.size}`]: props.size !== undefined,\n [`btn-${props.variant}`]: props.variant !== null && variantIsLinkTypeSubset.value === false,\n 'active': props.active || pressedValue.value,\n 'rounded-pill': props.pill,\n 'rounded-0': props.squared,\n 'disabled': props.disabled,\n },\n])\n\nconst computedTag = computed(() => (isBLink.value ? BLink : props.href ? 'a' : props.tag))\n\nconst clicked = (e: Readonly<MouseEvent>): void => {\n if (props.disabled) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n emit('click', e)\n if (isToggle.value) pressedValue.value = !pressedValue.value\n}\n\nonKeyStroke(\n [' ', 'enter'],\n (e) => {\n if (props.href === '#') {\n e.preventDefault()\n element.value?.click()\n }\n },\n {target: element}\n)\n</script>\n","<template>\n <component\n :is=\"computedTag\"\n ref=\"_element\"\n class=\"btn\"\n v-bind=\"linkProps\"\n :class=\"computedClasses\"\n :aria-disabled=\"computedAriaDisabled\"\n :aria-pressed=\"isToggle ? pressedValue : null\"\n :autocomplete=\"isToggle ? 'off' : null\"\n :disabled=\"isButton ? props.disabled : null\"\n :href=\"props.href\"\n :rel=\"computedLink ? props.rel : null\"\n :role=\"nonStandardTag || computedLink ? 'button' : null\"\n :target=\"computedLink ? props.target : null\"\n :type=\"isButton ? props.type : null\"\n :to=\"!isButton ? props.to : null\"\n @click=\"clicked\"\n >\n <slot v-if=\"props.loading\" name=\"loading\">\n <template v-if=\"!props.loadingFill\">\n {{ props.loadingText }}\n </template>\n <slot name=\"loading-spinner\">\n <BSpinner\n :small=\"props.size !== 'lg'\"\n :label=\"props.loadingFill ? props.loadingText : undefined\"\n />\n </slot>\n </slot>\n <slot v-else />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, useTemplateRef} from 'vue'\nimport BSpinner from '../BSpinner/BSpinner.vue'\nimport {useBLinkHelper} from '../../composables/useBLinkHelper'\nimport BLink from '../BLink/BLink.vue'\nimport {useLinkClasses} from '../../composables/useLinkClasses'\nimport {onKeyStroke} from '@vueuse/core'\nimport type {BButtonProps} from '../../types/ComponentProps'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {ColorVariant} from '../../types/ColorTypes'\nimport {type BButtonEmits, type BButtonSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BButtonProps, 'pressed'>>(), {\n loading: false,\n loadingFill: false,\n loadingText: 'Loading...',\n pill: false,\n size: undefined,\n squared: false,\n tag: 'button',\n type: 'button',\n // Link props\n active: false, // Why is this active: false?\n variant: 'secondary',\n // All others use defaults\n activeClass: undefined,\n disabled: undefined,\n exactActiveClass: undefined,\n stretched: false,\n href: undefined,\n icon: false,\n opacity: undefined,\n opacityHover: undefined,\n rel: undefined,\n replace: undefined,\n routerComponentName: undefined,\n routerTag: undefined,\n target: undefined,\n to: undefined,\n underlineOffset: undefined,\n underlineOffsetHover: undefined,\n underlineOpacity: undefined,\n underlineOpacityHover: undefined,\n underlineVariant: null,\n // End link props\n})\nconst props = useDefaults(_props, 'BButton')\nconst emit = defineEmits<BButtonEmits>()\ndefineSlots<BButtonSlots>()\n\nconst element = useTemplateRef<HTMLButtonElement | null>('_element')\n\nconst pressedValue = defineModel<BButtonProps['pressed']>('pressed', {default: undefined})\n\nconst {computedLink, computedLinkProps} = useBLinkHelper(props, [\n 'activeClass',\n 'exactActiveClass',\n 'replace',\n 'routerComponentName',\n 'routerTag',\n 'noPrefetch',\n 'prefetch',\n 'prefetchOn',\n 'prefetchedClass',\n])\n\nconst isToggle = computed(() => typeof pressedValue.value === 'boolean')\nconst isButton = computed(\n () => props.tag === 'button' && props.href === undefined && props.to === undefined\n)\nconst isBLink = computed(() => props.to !== undefined)\nconst nonStandardTag = computed(() => (props.href !== undefined ? false : !isButton.value))\n\nconst linkProps = computed(() => (isBLink.value ? computedLinkProps.value : []))\nconst computedAriaDisabled = computed(() => {\n if (props.href === '#' && props.disabled) return true\n\n return nonStandardTag.value ? props.disabled : null\n})\n\nconst variantIsLinkType = computed(() => props.variant?.startsWith('link') || false)\nconst variantIsLinkTypeSubset = computed(() => props.variant?.startsWith('link-') || false)\nconst linkValueClasses = useLinkClasses(\n computed(() => ({\n ...(variantIsLinkType.value\n ? {\n icon: props.icon,\n opacity: props.opacity,\n opacityHover: props.opacityHover,\n underlineOffset: props.underlineOffset,\n underlineOffsetHover: props.underlineOffsetHover,\n underlineOpacity: props.underlineOpacity,\n underlineOpacityHover: props.underlineOpacityHover,\n underlineVariant: props.underlineVariant,\n variant:\n variantIsLinkTypeSubset.value === true\n ? (props.variant?.slice(5) as ColorVariant)\n : null,\n }\n : undefined),\n }))\n)\nconst computedClasses = computed(() => [\n variantIsLinkType.value === true && computedLink.value === false\n ? linkValueClasses.value\n : undefined,\n {\n [`btn-${props.size}`]: props.size !== undefined,\n [`btn-${props.variant}`]: props.variant !== null && variantIsLinkTypeSubset.value === false,\n 'active': props.active || pressedValue.value,\n 'rounded-pill': props.pill,\n 'rounded-0': props.squared,\n 'disabled': props.disabled,\n },\n])\n\nconst computedTag = computed(() => (isBLink.value ? BLink : props.href ? 'a' : props.tag))\n\nconst clicked = (e: Readonly<MouseEvent>): void => {\n if (props.disabled) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n emit('click', e)\n if (isToggle.value) pressedValue.value = !pressedValue.value\n}\n\nonKeyStroke(\n [' ', 'enter'],\n (e) => {\n if (props.href === '#') {\n e.preventDefault()\n element.value?.click()\n }\n },\n {target: element}\n)\n</script>\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { a as buttonGroupKey } from "./keys-CQKrwmvN.mjs";
|
|
|
2
2
|
import { a as getSafeWindow, n as getActiveElement } from "./dom-AhkaSoh8.mjs";
|
|
3
3
|
import { t as useDefaults } from "./useDefaults-BKgBaqOV.mjs";
|
|
4
4
|
import "./constants-BSIK14yA.mjs";
|
|
5
|
-
import "./BButton-
|
|
5
|
+
import "./BButton-CDo9SRvU.mjs";
|
|
6
6
|
import "./BCloseButton-CjgbR1Ec.mjs";
|
|
7
7
|
import { computed, createBlock, createElementBlock, defineComponent, nextTick, normalizeClass, openBlock, provide, renderSlot, resolveDynamicComponent, unref, useTemplateRef, withCtx } from "vue";
|
|
8
8
|
//#endregion
|
|
@@ -11,7 +11,7 @@ var BButtonGroup_default = /* @__PURE__ */ defineComponent({
|
|
|
11
11
|
__name: "BButtonGroup",
|
|
12
12
|
props: {
|
|
13
13
|
ariaLabel: { default: "Group" },
|
|
14
|
-
size: { default:
|
|
14
|
+
size: { default: void 0 },
|
|
15
15
|
tag: { default: "div" },
|
|
16
16
|
vertical: {
|
|
17
17
|
type: Boolean,
|
|
@@ -23,7 +23,7 @@ var BButtonGroup_default = /* @__PURE__ */ defineComponent({
|
|
|
23
23
|
const props = useDefaults(__props, "BButtonGroup");
|
|
24
24
|
const computedClasses = computed(() => ({
|
|
25
25
|
"btn-group": !props.vertical,
|
|
26
|
-
[`btn-group-${props.size}`]: props.size !==
|
|
26
|
+
[`btn-group-${props.size}`]: props.size !== void 0,
|
|
27
27
|
"btn-group-vertical": props.vertical
|
|
28
28
|
}));
|
|
29
29
|
return (_ctx, _cache) => {
|
|
@@ -141,4 +141,4 @@ var BButtonToolbar_default = /* @__PURE__ */ defineComponent({
|
|
|
141
141
|
//#endregion
|
|
142
142
|
export { BButtonGroup_default as n, BButtonToolbar_default as t };
|
|
143
143
|
|
|
144
|
-
//# sourceMappingURL=BButton-
|
|
144
|
+
//# sourceMappingURL=BButton-DgequxLk.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BButton-DgequxLk.mjs","names":[],"sources":["../src/components/BButton/BButtonGroup.vue","../src/components/BButton/BButtonGroup.vue","../src/components/BButton/BButtonToolbar.vue","../src/components/BButton/BButtonToolbar.vue"],"sourcesContent":["<template>\n <component :is=\"props.tag\" :class=\"computedClasses\" role=\"group\" :aria-label=\"props.ariaLabel\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BButtonGroupProps} from '../../types/ComponentProps'\nimport {computed, provide} from 'vue'\nimport {buttonGroupKey} from '../../utils/keys'\nimport type {BButtonGroupSlots} from '../../types'\n\nprovide(buttonGroupKey, true)\n\nconst _props = withDefaults(defineProps<BButtonGroupProps>(), {\n ariaLabel: 'Group',\n size: undefined,\n tag: 'div',\n vertical: false,\n})\nconst props = useDefaults(_props, 'BButtonGroup')\ndefineSlots<BButtonGroupSlots>()\n\nconst computedClasses = computed(() => ({\n 'btn-group': !props.vertical,\n [`btn-group-${props.size}`]: props.size !== undefined,\n 'btn-group-vertical': props.vertical,\n}))\n</script>\n","<template>\n <component :is=\"props.tag\" :class=\"computedClasses\" role=\"group\" :aria-label=\"props.ariaLabel\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BButtonGroupProps} from '../../types/ComponentProps'\nimport {computed, provide} from 'vue'\nimport {buttonGroupKey} from '../../utils/keys'\nimport type {BButtonGroupSlots} from '../../types'\n\nprovide(buttonGroupKey, true)\n\nconst _props = withDefaults(defineProps<BButtonGroupProps>(), {\n ariaLabel: 'Group',\n size: undefined,\n tag: 'div',\n vertical: false,\n})\nconst props = useDefaults(_props, 'BButtonGroup')\ndefineSlots<BButtonGroupSlots>()\n\nconst computedClasses = computed(() => ({\n 'btn-group': !props.vertical,\n [`btn-group-${props.size}`]: props.size !== undefined,\n 'btn-group-vertical': props.vertical,\n}))\n</script>\n","<template>\n <div\n ref=\"toolbarRef\"\n :class=\"computedClasses\"\n class=\"btn-toolbar\"\n :role=\"props.role\"\n :aria-label=\"props.ariaLabel\"\n @keydown=\"handleKeyNav\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BButtonToolbarSlots, BButtonToolbarProps} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {computed, nextTick, useTemplateRef} from 'vue'\nimport {CODE_DOWN, CODE_END, CODE_HOME, CODE_LEFT, CODE_RIGHT, CODE_UP} from '../../utils/constants'\nimport {getActiveElement, getSafeWindow} from '../../utils/dom'\n\nconst _props = withDefaults(defineProps<BButtonToolbarProps>(), {\n ariaLabel: 'Group',\n justify: false,\n keyNav: false,\n role: 'toolbar',\n})\nconst props = useDefaults(_props, 'BButtonToolbar')\ndefineSlots<BButtonToolbarSlots>()\n\nconst toolbarRef = useTemplateRef<HTMLElement>('toolbarRef')\n\nconst computedClasses = computed(() => ({\n 'justify-content-between': props.justify,\n}))\n\n// Get all focusable elements within the toolbar\nconst getFocusableElements = (): HTMLElement[] => {\n if (!toolbarRef.value) return []\n\n const selector =\n 'button:not(:disabled), [href]:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex=\"-1\"]):not(:disabled)'\n const elements = Array.from(toolbarRef.value.querySelectorAll(selector)) as HTMLElement[]\n\n // Filter out elements that are not visible or have display:none\n return elements.filter((el) => {\n const style = getSafeWindow()?.getComputedStyle(el)\n return style && style.display !== 'none' && style.visibility !== 'hidden'\n })\n}\n\nconst isDisabled = (element: HTMLElement): boolean =>\n element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true'\n\nconst focusFirst = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const firstEnabled = elements.find((el) => !isDisabled(el))\n firstEnabled?.focus()\n })\n}\n\nconst focusLast = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const lastEnabled = elements.reverse().find((el) => !isDisabled(el))\n lastEnabled?.focus()\n })\n}\n\nconst focusPrev = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const activeElement = getActiveElement() as HTMLElement\n const currentIndex = elements.indexOf(activeElement)\n\n if (currentIndex > 0) {\n // Look backwards for the first non-disabled element\n for (let i = currentIndex - 1; i >= 0; i--) {\n const el = elements[i]\n if (el !== undefined && !isDisabled(el)) {\n elements[i]?.focus()\n break\n }\n }\n }\n })\n}\n\nconst focusNext = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const activeElement = getActiveElement() as HTMLElement\n const currentIndex = elements.indexOf(activeElement)\n\n if (currentIndex < elements.length - 1) {\n // Look forwards for the first non-disabled element\n for (let i = currentIndex + 1; i < elements.length; i++) {\n const el = elements[i]\n if (el !== undefined && !isDisabled(el)) {\n elements[i]?.focus()\n break\n }\n }\n }\n })\n}\n\nconst handleKeyNav = (event: KeyboardEvent) => {\n if (!props.keyNav) return\n\n const {code, shiftKey} = event\n\n if (code === CODE_LEFT || code === CODE_UP) {\n event.preventDefault()\n if (shiftKey) {\n focusFirst()\n } else {\n focusPrev()\n }\n } else if (code === CODE_RIGHT || code === CODE_DOWN) {\n event.preventDefault()\n if (shiftKey) {\n focusLast()\n } else {\n focusNext()\n }\n } else if (code === CODE_HOME) {\n event.preventDefault()\n focusFirst()\n } else if (code === CODE_END) {\n event.preventDefault()\n focusLast()\n }\n}\n</script>\n","<template>\n <div\n ref=\"toolbarRef\"\n :class=\"computedClasses\"\n class=\"btn-toolbar\"\n :role=\"props.role\"\n :aria-label=\"props.ariaLabel\"\n @keydown=\"handleKeyNav\"\n >\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BButtonToolbarSlots, BButtonToolbarProps} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {computed, nextTick, useTemplateRef} from 'vue'\nimport {CODE_DOWN, CODE_END, CODE_HOME, CODE_LEFT, CODE_RIGHT, CODE_UP} from '../../utils/constants'\nimport {getActiveElement, getSafeWindow} from '../../utils/dom'\n\nconst _props = withDefaults(defineProps<BButtonToolbarProps>(), {\n ariaLabel: 'Group',\n justify: false,\n keyNav: false,\n role: 'toolbar',\n})\nconst props = useDefaults(_props, 'BButtonToolbar')\ndefineSlots<BButtonToolbarSlots>()\n\nconst toolbarRef = useTemplateRef<HTMLElement>('toolbarRef')\n\nconst computedClasses = computed(() => ({\n 'justify-content-between': props.justify,\n}))\n\n// Get all focusable elements within the toolbar\nconst getFocusableElements = (): HTMLElement[] => {\n if (!toolbarRef.value) return []\n\n const selector =\n 'button:not(:disabled), [href]:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex=\"-1\"]):not(:disabled)'\n const elements = Array.from(toolbarRef.value.querySelectorAll(selector)) as HTMLElement[]\n\n // Filter out elements that are not visible or have display:none\n return elements.filter((el) => {\n const style = getSafeWindow()?.getComputedStyle(el)\n return style && style.display !== 'none' && style.visibility !== 'hidden'\n })\n}\n\nconst isDisabled = (element: HTMLElement): boolean =>\n element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true'\n\nconst focusFirst = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const firstEnabled = elements.find((el) => !isDisabled(el))\n firstEnabled?.focus()\n })\n}\n\nconst focusLast = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const lastEnabled = elements.reverse().find((el) => !isDisabled(el))\n lastEnabled?.focus()\n })\n}\n\nconst focusPrev = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const activeElement = getActiveElement() as HTMLElement\n const currentIndex = elements.indexOf(activeElement)\n\n if (currentIndex > 0) {\n // Look backwards for the first non-disabled element\n for (let i = currentIndex - 1; i >= 0; i--) {\n const el = elements[i]\n if (el !== undefined && !isDisabled(el)) {\n elements[i]?.focus()\n break\n }\n }\n }\n })\n}\n\nconst focusNext = () => {\n nextTick(() => {\n const elements = getFocusableElements()\n const activeElement = getActiveElement() as HTMLElement\n const currentIndex = elements.indexOf(activeElement)\n\n if (currentIndex < elements.length - 1) {\n // Look forwards for the first non-disabled element\n for (let i = currentIndex + 1; i < elements.length; i++) {\n const el = elements[i]\n if (el !== undefined && !isDisabled(el)) {\n elements[i]?.focus()\n break\n }\n }\n }\n })\n}\n\nconst handleKeyNav = (event: KeyboardEvent) => {\n if (!props.keyNav) return\n\n const {code, shiftKey} = event\n\n if (code === CODE_LEFT || code === CODE_UP) {\n event.preventDefault()\n if (shiftKey) {\n focusFirst()\n } else {\n focusPrev()\n }\n } else if (code === CODE_RIGHT || code === CODE_DOWN) {\n event.preventDefault()\n if (shiftKey) {\n focusLast()\n } else {\n focusNext()\n }\n } else if (code === CODE_HOME) {\n event.preventDefault()\n focusFirst()\n } else if (code === CODE_END) {\n event.preventDefault()\n focusLast()\n }\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -5,11 +5,11 @@ const require_dom = require("./dom-Bs6DzM72.js");
|
|
|
5
5
|
const require_useDefaults = require("./useDefaults-DsLf4iRY.js");
|
|
6
6
|
const require_useId = require("./useId-DHrBgM7P.js");
|
|
7
7
|
const require_useShowHide = require("./useShowHide-BTCaeU5j.js");
|
|
8
|
-
const require_BButton = require("./BButton-
|
|
8
|
+
const require_BButton = require("./BButton-Bw4HgpsF.js");
|
|
9
9
|
const require_ConditionalTeleport = require("./ConditionalTeleport-BJZk6HAx.js");
|
|
10
10
|
const require_floating_ui_vue = require("./floating-ui.vue-GXIS2sFG.js");
|
|
11
11
|
const require_ConditionalWrapper = require("./ConditionalWrapper-Cc7EIszd.js");
|
|
12
|
-
const require_floatingUi = require("./floatingUi-
|
|
12
|
+
const require_floatingUi = require("./floatingUi-DBLN9xLH.js");
|
|
13
13
|
const require_getElement = require("./getElement-CxWWOx3K.js");
|
|
14
14
|
let vue = require("vue");
|
|
15
15
|
//#region src/components/BDropdown/BDropdown.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -64,7 +64,7 @@ var BDropdown_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
64
64
|
},
|
|
65
65
|
offset: { default: 0 },
|
|
66
66
|
role: { default: "menu" },
|
|
67
|
-
size: { default:
|
|
67
|
+
size: { default: void 0 },
|
|
68
68
|
noWrapper: {
|
|
69
69
|
type: Boolean,
|
|
70
70
|
default: false
|
|
@@ -84,6 +84,7 @@ var BDropdown_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
84
84
|
splitVariant: { default: void 0 },
|
|
85
85
|
strategy: { default: "absolute" },
|
|
86
86
|
text: { default: void 0 },
|
|
87
|
+
toggleAttrs: { default: void 0 },
|
|
87
88
|
toggleClass: { default: void 0 },
|
|
88
89
|
toggleText: { default: "Toggle dropdown" },
|
|
89
90
|
variant: { default: "secondary" },
|
|
@@ -298,12 +299,12 @@ var BDropdown_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
298
299
|
role: (0, vue.unref)(inButtonGroupAttributes)?.role
|
|
299
300
|
}, {
|
|
300
301
|
default: (0, vue.withCtx)(() => [
|
|
301
|
-
(0, vue.createVNode)(require_BButton.BButton_default, {
|
|
302
|
+
(0, vue.createVNode)(require_BButton.BButton_default, (0, vue.mergeProps)({
|
|
302
303
|
id: (0, vue.unref)(computedId),
|
|
303
304
|
ref: "_splitButton",
|
|
304
305
|
variant: (0, vue.unref)(props).splitVariant || (0, vue.unref)(props).variant,
|
|
305
306
|
size: (0, vue.unref)(props).size,
|
|
306
|
-
class:
|
|
307
|
+
class: buttonClasses.value,
|
|
307
308
|
disabled: (0, vue.unref)(props).splitDisabled || (0, vue.unref)(props).disabled,
|
|
308
309
|
type: (0, vue.unref)(props).splitButtonType,
|
|
309
310
|
"aria-label": (0, vue.unref)(props).ariaLabel,
|
|
@@ -311,12 +312,11 @@ var BDropdown_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
311
312
|
"aria-haspopup": (0, vue.unref)(props).split ? void 0 : "menu",
|
|
312
313
|
href: (0, vue.unref)(props).split ? (0, vue.unref)(props).splitHref : void 0,
|
|
313
314
|
icon: (0, vue.unref)(props).icon,
|
|
314
|
-
to: (0, vue.unref)(props).split && (0, vue.unref)(props).splitTo ? (0, vue.unref)(props).splitTo : void 0
|
|
315
|
-
|
|
316
|
-
}, {
|
|
315
|
+
to: (0, vue.unref)(props).split && (0, vue.unref)(props).splitTo ? (0, vue.unref)(props).splitTo : void 0
|
|
316
|
+
}, !(0, vue.unref)(props).split ? (0, vue.unref)(props).toggleAttrs : void 0, { onClick: onSplitClick }), {
|
|
317
317
|
default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "button-content", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(props).text), 1)])]),
|
|
318
318
|
_: 3
|
|
319
|
-
},
|
|
319
|
+
}, 16, [
|
|
320
320
|
"id",
|
|
321
321
|
"variant",
|
|
322
322
|
"size",
|
|
@@ -330,21 +330,20 @@ var BDropdown_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
330
330
|
"icon",
|
|
331
331
|
"to"
|
|
332
332
|
]),
|
|
333
|
-
(0, vue.unref)(props).split ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_BButton.BButton_default, {
|
|
333
|
+
(0, vue.unref)(props).split ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_BButton.BButton_default, (0, vue.mergeProps)({
|
|
334
334
|
key: 0,
|
|
335
335
|
id: (0, vue.unref)(computedId) + "-split",
|
|
336
336
|
ref: "_button",
|
|
337
337
|
variant: (0, vue.unref)(props).variant,
|
|
338
338
|
size: (0, vue.unref)(props).size,
|
|
339
339
|
disabled: (0, vue.unref)(props).disabled,
|
|
340
|
-
class:
|
|
340
|
+
class: [[(0, vue.unref)(props).toggleClass, { show: (0, vue.unref)(showRef) }], "dropdown-toggle-split dropdown-toggle"],
|
|
341
341
|
"aria-expanded": (0, vue.unref)(showRef),
|
|
342
|
-
"aria-haspopup": "menu"
|
|
343
|
-
|
|
344
|
-
}, {
|
|
342
|
+
"aria-haspopup": "menu"
|
|
343
|
+
}, (0, vue.unref)(props).toggleAttrs, { onClick: onButtonClick }), {
|
|
345
344
|
default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", _hoisted_1, [(0, vue.renderSlot)(_ctx.$slots, "toggle-text", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(props).toggleText), 1)])])]),
|
|
346
345
|
_: 3
|
|
347
|
-
},
|
|
346
|
+
}, 16, [
|
|
348
347
|
"id",
|
|
349
348
|
"variant",
|
|
350
349
|
"size",
|
|
@@ -401,4 +400,4 @@ Object.defineProperty(exports, "BDropdown_default", {
|
|
|
401
400
|
}
|
|
402
401
|
});
|
|
403
402
|
|
|
404
|
-
//# sourceMappingURL=BDropdown-
|
|
403
|
+
//# sourceMappingURL=BDropdown-BxciLgyt.js.map
|