bootstrap-vue-next
Version:
Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development
54 lines (53 loc) • 2.09 kB
JavaScript
import { o as isEmptySlot } from "./dom-AhkaSoh8.mjs";
import { t as useDefaults } from "./useDefaults-BKgBaqOV.mjs";
import { t as useColorVariantClasses } from "./useColorVariantClasses-B6Me_Kx6.mjs";
import { computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, defineComponent, normalizeClass, openBlock, renderSlot, resolveDynamicComponent, toDisplayString, unref, useSlots, withCtx } from "vue";
//#region src/components/BSpinner/BSpinner.vue?vue&type=script&setup=true&lang.ts
var _hoisted_1 = {
key: 0,
class: "visually-hidden"
};
//#endregion
//#region src/components/BSpinner/BSpinner.vue
var BSpinner_default = /* @__PURE__ */ defineComponent({
__name: "BSpinner",
props: {
label: { default: void 0 },
role: { default: "status" },
small: {
type: Boolean,
default: false
},
tag: { default: "span" },
type: { default: "border" },
variant: { default: null }
},
setup(__props) {
const props = useDefaults(__props, "BSpinner");
const slots = useSlots();
const colorClasses = useColorVariantClasses(computed(() => ({ textVariant: props.variant })));
const computedClasses = computed(() => [
`spinner-${props.type}`,
colorClasses.value,
{ [`spinner-${props.type}-sm`]: props.small }
]);
const hasLabelSlot = computed(() => !isEmptySlot(slots.label));
return (_ctx, _cache) => {
return openBlock(), createBlock(resolveDynamicComponent(unref(props).tag), {
class: normalizeClass(computedClasses.value),
role: unref(props).label || hasLabelSlot.value ? unref(props).role : null,
"aria-hidden": unref(props).label || hasLabelSlot.value ? null : true
}, {
default: withCtx(() => [unref(props).label || hasLabelSlot.value ? (openBlock(), createElementBlock("span", _hoisted_1, [renderSlot(_ctx.$slots, "label", {}, () => [createTextVNode(toDisplayString(unref(props).label), 1)])])) : createCommentVNode("", true)]),
_: 3
}, 8, [
"class",
"role",
"aria-hidden"
]);
};
}
});
//#endregion
export { BSpinner_default as t };
//# sourceMappingURL=BSpinner-BpnwONvx.mjs.map