bootstrap-vue-next
Version:
Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development
166 lines (165 loc) • 5.71 kB
JavaScript
require("./chunk-CoQrYLCe.js");
const require_src_composables_useBreadcrumb_index = require("./src/composables/useBreadcrumb/index.umd.js");
const require_useDefaults = require("./useDefaults-DsLf4iRY.js");
const require_object = require("./object-BN7QwMcz.js");
const require_BLink = require("./BLink-uemyYKst.js");
let vue = require("vue");
//#endregion
//#region src/components/BBreadcrumb/BBreadcrumbItem.vue
var BBreadcrumbItem_default = /* @__PURE__ */ (0, vue.defineComponent)({
__name: "BBreadcrumbItem",
props: {
ariaCurrent: { default: "location" },
text: { default: void 0 },
active: {
type: Boolean,
default: false
},
activeClass: { default: void 0 },
disabled: {
type: Boolean,
default: void 0
},
exactActiveClass: { default: void 0 },
href: { default: void 0 },
icon: {
type: Boolean,
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: { default: void 0 },
underlineOffset: { default: void 0 },
underlineOffsetHover: { default: void 0 },
underlineOpacity: { default: void 0 },
underlineOpacityHover: { default: void 0 },
underlineVariant: { default: void 0 },
variant: { default: void 0 }
},
emits: ["click"],
setup(__props, { emit: __emit }) {
const props = require_useDefaults.useDefaults(__props, "BBreadcrumbItem");
const emit = __emit;
const computedClasses = (0, vue.computed)(() => ({ active: props.active }));
const computedTag = (0, vue.computed)(() => props.active ? "span" : require_BLink.BLink_default);
const computedAriaCurrent = (0, vue.computed)(() => props.active ? props.ariaCurrent : void 0);
const computedLinkProps = (0, vue.computed)(() => computedTag.value !== "span" ? require_object.pick(props, [
"active",
"activeClass",
"disabled",
"exactActiveClass",
"href",
"icon",
"noRel",
"opacity",
"opacityHover",
"noPrefetch",
"prefetch",
"prefetchOn",
"prefetchedClass",
"rel",
"replace",
"routerComponentName",
"stretched",
"target",
"to",
"underlineOffset",
"underlineOffsetHover",
"underlineOpacity",
"underlineOpacityHover",
"underlineVariant",
"variant"
]) : {});
const clicked = (e) => {
if (props.disabled || props.active) {
e.preventDefault();
e.stopImmediatePropagation();
return;
}
if (!props.disabled) emit("click", e);
};
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { class: (0, vue.normalizeClass)(["breadcrumb-item", computedClasses.value]) }, [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(computedTag.value), (0, vue.mergeProps)({ "aria-current": computedAriaCurrent.value }, computedLinkProps.value, { onClick: clicked }), {
default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(props).text), 1)])]),
_: 3
}, 16, ["aria-current"]))], 2);
};
}
});
//#endregion
//#region src/components/BBreadcrumb/BBreadcrumb.vue?vue&type=script&setup=true&lang.ts
var _hoisted_1 = ["id"];
//#endregion
//#region src/components/BBreadcrumb/BBreadcrumb.vue
var BBreadcrumb_default = /* @__PURE__ */ (0, vue.defineComponent)({
__name: "BBreadcrumb",
props: {
items: { default: void 0 },
id: { default: void 0 },
olAttrs: { default: void 0 },
olClass: { default: void 0 }
},
setup(__props) {
const props = require_useDefaults.useDefaults(__props, "BBreadcrumb");
const breadcrumb = require_src_composables_useBreadcrumb_index.useBreadcrumb(() => props.id || null);
const breadcrumbItemObjects = (0, vue.computed)(() => {
const localItems = props.items || breadcrumb.items?.value || [];
let activeDefined = false;
return localItems.map((item, idx) => {
if (typeof item === "string") {
item = { text: item };
if (idx < localItems.length - 1) item.href = "#";
}
if (item.active) activeDefined = true;
if (!item.active && !activeDefined) item.active = idx + 1 === localItems.length;
return item;
});
});
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("nav", {
id: (0, vue.unref)(props).id,
"aria-label": "breadcrumb"
}, [(0, vue.createElementVNode)("ol", (0, vue.mergeProps)({ class: ["breadcrumb", (0, vue.unref)(props).olClass] }, (0, vue.unref)(props).olAttrs), [
(0, vue.renderSlot)(_ctx.$slots, "prepend"),
((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(breadcrumbItemObjects.value, (item, i) => {
return (0, vue.openBlock)(), (0, vue.createBlock)(BBreadcrumbItem_default, (0, vue.mergeProps)({ key: i }, { ref_for: true }, item), {
default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(item.text), 1)]),
_: 2
}, 1040);
}), 128)),
(0, vue.renderSlot)(_ctx.$slots, "default"),
(0, vue.renderSlot)(_ctx.$slots, "append")
], 16)], 8, _hoisted_1);
};
}
});
//#endregion
Object.defineProperty(exports, "BBreadcrumbItem_default", {
enumerable: true,
get: function() {
return BBreadcrumbItem_default;
}
});
Object.defineProperty(exports, "BBreadcrumb_default", {
enumerable: true,
get: function() {
return BBreadcrumb_default;
}
});
//# sourceMappingURL=BBreadcrumb-BkRDTYv1.js.map