UNPKG

bootstrap-vue-next

Version:

Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development

387 lines (386 loc) 12.9 kB
require("./chunk-CoQrYLCe.js"); const require_keys = require("./keys-durSVUrO.js"); const require_dist = require("./dist-B_c893QG.js"); const require_dom = require("./dom-Bs6DzM72.js"); const require_useDefaults = require("./useDefaults-DsLf4iRY.js"); const require_useColorVariantClasses = require("./useColorVariantClasses-CEfOwjPv.js"); const require_BLink = require("./BLink-uemyYKst.js"); const require_BBadge = require("./BBadge-Cpuk1892.js"); const require_useNumberishToStyle = require("./useNumberishToStyle-DMGqQGfo.js"); const require_useRadiusElementClasses = require("./useRadiusElementClasses-Bi58dhJY.js"); let vue = require("vue"); //#region src/components/BAvatar/BAvatar.vue?vue&type=script&setup=true&lang.ts var _hoisted_1 = { key: 0, class: "b-avatar-custom" }; var _hoisted_2 = { key: 1, class: "b-avatar-img" }; var _hoisted_3 = ["src", "alt"]; var _hoisted_4 = { key: 3, class: "b-avatar-img" }; var FONT_SIZE_SCALE = .4; //#endregion //#region src/components/BAvatar/BAvatar.vue var BAvatar_default = /* @__PURE__ */ (0, vue.defineComponent)({ __name: "BAvatar", props: { alt: { default: "avatar" }, badge: { type: [Boolean, String], default: false }, badgeBgVariant: { default: null }, badgePlacement: { default: "bottom-end" }, badgeTextVariant: { default: null }, badgeVariant: { default: "primary" }, badgePill: { type: Boolean, default: false }, badgeDotIndicator: { type: Boolean, default: false }, button: { type: Boolean, default: false }, buttonType: { default: "button" }, size: { default: void 0 }, square: { type: Boolean, default: false }, src: { default: void 0 }, text: { default: void 0 }, active: { type: Boolean, default: void 0 }, activeClass: { default: void 0 }, disabled: { type: Boolean, default: void 0 }, exactActiveClass: { default: void 0 }, href: { default: void 0 }, noRel: { type: Boolean }, opacity: { default: void 0 }, opacityHover: { default: void 0 }, prefetch: { type: Boolean }, prefetchOn: {}, noPrefetch: { type: Boolean }, prefetchedClass: {}, rel: { default: void 0 }, replace: { type: Boolean, default: void 0 }, routerComponentName: { default: void 0 }, stretched: { type: Boolean, default: false }, target: { default: void 0 }, to: {}, underlineOffset: { default: void 0 }, underlineOffsetHover: { default: void 0 }, underlineOpacity: { default: void 0 }, underlineOpacityHover: { default: void 0 }, underlineVariant: { default: void 0 }, variant: { default: "secondary" }, bgVariant: { default: null }, textVariant: { default: null }, rounded: { type: [ Boolean, String, Number ], default: "circle" }, roundedTop: { type: [ Boolean, String, Number ], default: void 0 }, roundedBottom: { type: [ Boolean, String, Number ], default: void 0 }, roundedStart: { type: [ Boolean, String, Number ], default: void 0 }, roundedEnd: { type: [ Boolean, String, Number ], default: void 0 } }, emits: ["click", "img-error"], setup(__props, { emit: __emit }) { const props = require_useDefaults.useDefaults(__props, "BAvatar"); const emit = __emit; const slots = (0, vue.useSlots)(); const localSrc = (0, vue.ref)(props.src); (0, vue.watch)(() => props.src, (value) => { localSrc.value = value; }); const { computedLink, computedLinkProps } = require_BLink.useBLinkHelper(props); const parentData = (0, vue.inject)(require_keys.avatarGroupInjectionKey, null); const SIZES = Object.freeze([null, ...Object.keys({ lg: null, md: null, sm: null })]); const BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * .7; const hasDefaultSlot = (0, vue.computed)(() => !require_dom.isEmptySlot(slots.default)); const hasBadgeSlot = (0, vue.computed)(() => !require_dom.isEmptySlot(slots.badge)); const showBadge = (0, vue.computed)(() => !!props.badge || props.badge === "" || hasBadgeSlot.value); const computedSquare = (0, vue.computed)(() => parentData?.square.value || props.square); const computedSize = require_useNumberishToStyle.useNumberishToStyle(() => parentData?.size.value ?? props.size); const computedSizeIsLiteralSize = (0, vue.computed)(() => !!computedSize.value && SIZES.includes(computedSize.value)); const computedVariant = (0, vue.computed)(() => parentData?.variant.value ?? props.variant); const computedRounded = (0, vue.computed)(() => parentData?.rounded.value ?? props.rounded); const computedRoundedTop = (0, vue.computed)(() => parentData?.roundedTop.value ?? props.roundedTop); const computedRoundedBottom = (0, vue.computed)(() => parentData?.roundedBottom.value ?? props.roundedBottom); const computedRoundedStart = (0, vue.computed)(() => parentData?.roundedStart.value ?? props.roundedStart); const computedRoundedEnd = (0, vue.computed)(() => parentData?.roundedEnd.value ?? props.roundedEnd); const radiusElementClasses = require_useRadiusElementClasses.useRadiusElementClasses(() => ({ rounded: computedRounded.value, roundedTop: computedRoundedTop.value, roundedBottom: computedRoundedBottom.value, roundedStart: computedRoundedStart.value, roundedEnd: computedRoundedEnd.value })); const badgeText = (0, vue.computed)(() => props.badge === true ? "" : props.badge); const badgeImplicitlyDot = (0, vue.computed)(() => !badgeText.value && !hasBadgeSlot.value); const colorClasses = require_useColorVariantClasses.useColorVariantClasses(() => ({ bgVariant: parentData?.bgVariant.value ?? props.bgVariant, textVariant: parentData?.textVariant.value ?? props.textVariant, variant: computedVariant.value })); const computedClasses = (0, vue.computed)(() => [ colorClasses.value, computedSquare.value === true ? void 0 : radiusElementClasses.value, { [`b-avatar-${computedSize.value}`]: computedSizeIsLiteralSize.value && computedSize.value !== "md", [`btn-${computedVariant.value}`]: props.button ? computedVariant.value !== null : false, "badge": !props.button && computedVariant.value !== null && hasDefaultSlot.value, "btn": props.button, "rounded-0": computedSquare.value === true } ]); const badgeStyle = (0, vue.computed)(() => ({ fontSize: (!computedSizeIsLiteralSize.value ? `calc(${computedSize.value} * ${BADGE_FONT_SIZE_SCALE})` : "") || "" })); const textFontStyle = (0, vue.computed)(() => { const fontSize = !computedSizeIsLiteralSize.value ? `calc(${computedSize.value} * ${FONT_SIZE_SCALE})` : null; return fontSize ? { fontSize } : {}; }); const marginStyle = (0, vue.computed)(() => { const overlapScale = parentData?.overlapScale?.value || 0; const value = computedSize.value && overlapScale ? `calc(${computedSize.value} * -${overlapScale})` : null; return value ? { marginLeft: value, marginRight: value } : {}; }); const computedTag = (0, vue.computed)(() => computedLink.value ? require_BLink.BLink_default : props.button ? "button" : "span"); const computedStyle = (0, vue.computed)(() => ({ ...marginStyle.value, ...!computedSizeIsLiteralSize.value ? { width: computedSize.value, height: computedSize.value } : void 0 })); const clicked = (e) => { if (!props.disabled && (computedLink.value || props.button)) emit("click", e); }; const onImgError = (e) => { localSrc.value = void 0; emit("img-error", e); }; return (_ctx, _cache) => { return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(computedTag.value), (0, vue.mergeProps)({ class: ["b-avatar", computedClasses.value], style: computedStyle.value }, (0, vue.unref)(computedLinkProps), { type: (0, vue.unref)(props).button && !(0, vue.unref)(computedLink) ? (0, vue.unref)(props).buttonType : void 0, disabled: (0, vue.unref)(props).disabled || null, variant: null, onClick: clicked }), { default: (0, vue.withCtx)(() => [hasDefaultSlot.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_1, [(0, vue.renderSlot)(_ctx.$slots, "default")])) : !!localSrc.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_2, [(0, vue.createElementVNode)("img", { src: localSrc.value, alt: (0, vue.unref)(props).alt, onError: onImgError }, null, 40, _hoisted_3)])) : !!(0, vue.unref)(props).text ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { key: 2, class: "b-avatar-text", style: (0, vue.normalizeStyle)(textFontStyle.value) }, (0, vue.toDisplayString)((0, vue.unref)(props).text), 5)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_4, [..._cache[0] || (_cache[0] = [(0, vue.createElementVNode)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "80%", height: "80%", fill: "currentColor", class: "bi bi-person-fill", viewBox: "0 0 16 16" }, [(0, vue.createElementVNode)("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" })], -1)])])), showBadge.value ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_BBadge.BBadge_default, { key: 4, pill: (0, vue.unref)(props).badgePill, "dot-indicator": (0, vue.unref)(props).badgeDotIndicator || badgeImplicitlyDot.value, variant: (0, vue.unref)(props).badgeVariant, "bg-variant": (0, vue.unref)(props).badgeBgVariant, "text-variant": (0, vue.unref)(props).badgeTextVariant, style: (0, vue.normalizeStyle)(badgeStyle.value), placement: (0, vue.unref)(props).badgePlacement }, { default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "badge", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(badgeText.value), 1)])]), _: 3 }, 8, [ "pill", "dot-indicator", "variant", "bg-variant", "text-variant", "style", "placement" ])) : (0, vue.createCommentVNode)("", true)]), _: 3 }, 16, [ "class", "style", "type", "disabled" ]); }; } }); //#endregion //#region src/components/BAvatar/BAvatarGroup.vue var BAvatarGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({ __name: "BAvatarGroup", props: { overlap: { default: .3 }, size: { default: void 0 }, square: { type: Boolean, default: false }, tag: { default: "div" }, variant: { default: null }, bgVariant: { default: null }, textVariant: { default: null }, rounded: { type: [ Boolean, String, Number ], default: "circle" }, roundedTop: { type: [ Boolean, String, Number ], default: void 0 }, roundedBottom: { type: [ Boolean, String, Number ], default: void 0 }, roundedStart: { type: [ Boolean, String, Number ], default: void 0 }, roundedEnd: { type: [ Boolean, String, Number ], default: void 0 } }, setup(__props) { const props = require_useDefaults.useDefaults(__props, "BAvatarGroup"); const overlapNumber = require_dist.useToNumber(() => props.overlap); const computedSize = require_useNumberishToStyle.useNumberishToStyle(() => props.size); const overlapScale = (0, vue.computed)(() => Math.min(Math.max(overlapNumber.value, 0), 1) / 2); const paddingStyle = (0, vue.computed)(() => { const value = computedSize.value ? `calc(${computedSize.value} * ${overlapScale.value})` : null; return value ? { paddingLeft: value, paddingRight: value } : {}; }); (0, vue.provide)(require_keys.avatarGroupInjectionKey, { overlapScale, size: (0, vue.toRef)(() => props.size), square: (0, vue.toRef)(() => props.square), rounded: (0, vue.toRef)(() => props.rounded), roundedTop: (0, vue.toRef)(() => props.roundedTop), roundedBottom: (0, vue.toRef)(() => props.roundedBottom), roundedStart: (0, vue.toRef)(() => props.roundedStart), roundedEnd: (0, vue.toRef)(() => props.roundedEnd), variant: (0, vue.toRef)(() => props.variant), bgVariant: (0, vue.toRef)(() => props.bgVariant), textVariant: (0, vue.toRef)(() => props.textVariant) }); return (_ctx, _cache) => { return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(props).tag), { class: "b-avatar-group", role: "group" }, { default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { class: "b-avatar-group-inner", style: (0, vue.normalizeStyle)(paddingStyle.value) }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 4)]), _: 3 }); }; } }); //#endregion Object.defineProperty(exports, "BAvatarGroup_default", { enumerable: true, get: function() { return BAvatarGroup_default; } }); Object.defineProperty(exports, "BAvatar_default", { enumerable: true, get: function() { return BAvatar_default; } }); //# sourceMappingURL=BAvatar-eEIyfQso.js.map