bootstrap-vue-next
Version:
Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development
154 lines (153 loc) • 5.2 kB
JavaScript
import { useBreadcrumb } from "./src/composables/useBreadcrumb/index.mjs";
import { t as useDefaults } from "./useDefaults-BzP4qZBu.js";
import { a as pick } from "./object-C7YmCGEm.js";
import { t as BLink_default } from "./BLink-mdwZsC7b.js";
import { Fragment, computed, createBlock, createElementBlock, createElementVNode, createTextVNode, defineComponent, mergeProps, normalizeClass, openBlock, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, withCtx } from "vue";
//#endregion
//#region src/components/BBreadcrumb/BBreadcrumbItem.vue
var BBreadcrumbItem_default = /* @__PURE__ */ 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 = useDefaults(__props, "BBreadcrumbItem");
const emit = __emit;
const computedClasses = computed(() => ({ active: props.active }));
const computedTag = computed(() => props.active ? "span" : BLink_default);
const computedAriaCurrent = computed(() => props.active ? props.ariaCurrent : void 0);
const computedLinkProps = computed(() => computedTag.value !== "span" ? 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 openBlock(), createElementBlock("li", { class: normalizeClass(["breadcrumb-item", computedClasses.value]) }, [(openBlock(), createBlock(resolveDynamicComponent(computedTag.value), mergeProps({ "aria-current": computedAriaCurrent.value }, computedLinkProps.value, { onClick: clicked }), {
default: withCtx(() => [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(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__ */ defineComponent({
__name: "BBreadcrumb",
props: {
items: { default: void 0 },
id: { default: void 0 },
olAttrs: { default: void 0 },
olClass: { default: void 0 }
},
setup(__props) {
const props = useDefaults(__props, "BBreadcrumb");
const breadcrumb = useBreadcrumb(() => props.id || null);
const breadcrumbItemObjects = 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 openBlock(), createElementBlock("nav", {
id: unref(props).id,
"aria-label": "breadcrumb"
}, [createElementVNode("ol", mergeProps({ class: ["breadcrumb", unref(props).olClass] }, unref(props).olAttrs), [
renderSlot(_ctx.$slots, "prepend"),
(openBlock(true), createElementBlock(Fragment, null, renderList(breadcrumbItemObjects.value, (item, i) => {
return openBlock(), createBlock(BBreadcrumbItem_default, mergeProps({ key: i }, { ref_for: true }, item), {
default: withCtx(() => [createTextVNode(toDisplayString(item.text), 1)]),
_: 2
}, 1040);
}), 128)),
renderSlot(_ctx.$slots, "default"),
renderSlot(_ctx.$slots, "append")
], 16)], 8, _hoisted_1);
};
}
});
//#endregion
export { BBreadcrumbItem_default as n, BBreadcrumb_default as t };
//# sourceMappingURL=BBreadcrumb-C-SsS3hM.js.map