@oruga-ui/oruga-next
Version:
UI components for Vue.js and CSS framework agnostic
200 lines (199 loc) • 7.38 kB
JavaScript
/*! Oruga v0.11.0 | MIT License | github.com/oruga-ui/oruga */
import { defineComponent, useTemplateRef, computed, resolveComponent, createElementBlock, openBlock, normalizeStyle, normalizeClass, unref, createElementVNode, renderSlot, Fragment, renderList, createBlock, mergeProps, withDirectives, resolveDynamicComponent, withCtx, createCommentVNode, toDisplayString, vShow } from "vue";
import { g as getDefault, b as registerComponent } from "./config-Dl7tu_Ly.mjs";
import { d as defineClasses } from "./defineClasses-CWB9NuS-.mjs";
import { u as useProviderParent, a as useProviderChild } from "./useParentProvider-26MPTCZ6.mjs";
import { n as normalizeOptions } from "./useOptions-eabMIWNM.mjs";
import { u as useSequentialId } from "./useSequentialId-BpzOPIdj.mjs";
import { _ as _sfc_main$2 } from "./Icon.vue_vue_type_script_setup_true_lang-C6IfOTXx.mjs";
const _hoisted_1$1 = ["aria-label"];
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
...{
isOruga: true,
name: "OBreadcrumb",
configField: "breadcrumb"
},
__name: "Breadcrumb",
props: {
override: { type: Boolean, default: void 0 },
options: { default: void 0 },
size: { default: () => getDefault("breadcrumb.size") },
variant: { default: () => getDefault("breadcrumb.variant") },
position: { default: () => getDefault("breadcrumb.position") },
separator: { default: () => getDefault("breadcrumb.separator", "/") },
ariaLabel: { default: () => getDefault("modal.ariaLabel", "Breadcrumb") },
rootClass: {},
sizeClass: {},
variantClass: {},
positionClass: {},
listClass: {}
},
setup(__props) {
const props = __props;
const rootRef = useTemplateRef("rootElement");
useProviderParent({ rootRef });
const { nextSequence } = useSequentialId();
const normalizedOptions = computed(
() => normalizeOptions(props.options, nextSequence)
);
const customStyle = computed(() => ({ "--seperator": `'${props.separator}'` }));
const rootClasses = defineClasses(
["rootClass", "o-breadcrumb"],
[
"sizeClass",
"o-breadcrumb--",
computed(() => props.size),
computed(() => !!props.size)
],
[
"variantClass",
"o-breadcrumb--",
computed(() => props.variant),
computed(() => !!props.variant)
],
[
"positionClass",
"o-breadcrumb--",
computed(() => props.position),
computed(() => !!props.position)
]
);
const listClasses = defineClasses(["listClass", "o-breadcrumb__list"]);
return (_ctx, _cache) => {
const _component_OBreadcrumbItem = resolveComponent("OBreadcrumbItem");
return openBlock(), createElementBlock("nav", {
ref: "rootElement",
"data-oruga": "breadcrumb",
class: normalizeClass(unref(rootClasses)),
style: normalizeStyle(customStyle.value),
"aria-label": _ctx.ariaLabel
}, [
createElementVNode("ol", {
class: normalizeClass(unref(listClasses))
}, [
renderSlot(_ctx.$slots, "default", {}, () => [
(openBlock(true), createElementBlock(Fragment, null, renderList(normalizedOptions.value, (option) => {
return openBlock(), createBlock(_component_OBreadcrumbItem, mergeProps({
key: option.key,
ref_for: true
}, option.attrs, {
value: option.value,
label: option.label,
hidden: option.hidden
}), null, 16, ["value", "label", "hidden"]);
}), 128))
])
], 2)
], 14, _hoisted_1$1);
};
}
});
const _hoisted_1 = ["data-id", "aria-current"];
const _sfc_main = /* @__PURE__ */ defineComponent({
...{
isOruga: true,
name: "OBreadcrumbItem",
configField: "breadcrumb",
inheritAttrs: false
},
__name: "BreadcrumbItem",
props: {
override: { type: Boolean, default: void 0 },
label: { default: void 0 },
active: { type: Boolean, default: false },
disabled: { type: Boolean, default: false },
hidden: { type: Boolean, default: false },
iconLeft: { default: void 0 },
iconRight: { default: void 0 },
iconPack: { default: () => getDefault("breadcrumb.iconPack") },
iconSize: { default: () => getDefault("breadcrumb.iconSize") },
tag: { default: () => getDefault("breadcrumb.tag", "a") },
itemClass: {},
disabledClass: {},
activeClass: {},
seperatorClass: {},
linkClass: {},
iconClass: {},
iconLeftClass: {},
iconRightClass: {}
},
setup(__props) {
const props = __props;
const { item } = useProviderChild();
const rootClasses = defineClasses(
["itemClass", "o-breadcrumb__item"],
[
"disabledClass",
"o-breadcrumb__item--disabled",
null,
computed(() => props.disabled)
],
[
"activeClass",
"o-breadcrumb__item--active",
null,
computed(() => props.active)
]
);
const linkClasses = defineClasses(["linkClass", "o-breadcrumb__item__link"]);
const iconLeftClasses = defineClasses(
["iconClass", "o-breadcrumb__item__icon"],
["iconLeftClass", "o-breadcrumb__item__icon--left"]
);
const iconRightClasses = defineClasses(
["iconClass", "o-breadcrumb__item__icon"],
["iconRightClass", "o-breadcrumb__item__icon--right"]
);
return (_ctx, _cache) => {
return withDirectives((openBlock(), createElementBlock("li", {
"data-oruga": "breadcrumb-item",
"data-id": `breadcrumb-${unref(item).identifier}`,
class: normalizeClass(unref(rootClasses)),
"aria-current": _ctx.active ? "page" : void 0
}, [
renderSlot(_ctx.$slots, "seperator"),
(openBlock(), createBlock(resolveDynamicComponent(_ctx.tag), mergeProps(_ctx.$attrs, {
class: unref(linkClasses),
disabled: _ctx.disabled,
active: _ctx.active,
"aria-current": _ctx.active ? "page" : void 0
}), {
default: withCtx(() => [
_ctx.iconLeft ? (openBlock(), createBlock(_sfc_main$2, {
key: 0,
icon: _ctx.iconLeft,
pack: _ctx.iconPack,
size: _ctx.iconSize,
class: normalizeClass(unref(iconLeftClasses))
}, null, 8, ["icon", "pack", "size", "class"])) : createCommentVNode("", true),
renderSlot(_ctx.$slots, "default", {}, () => [
createElementVNode("span", null, toDisplayString(_ctx.label), 1)
]),
_ctx.iconRight ? (openBlock(), createBlock(_sfc_main$2, {
key: 1,
icon: _ctx.iconRight,
pack: _ctx.iconPack,
size: _ctx.iconSize,
class: normalizeClass(unref(iconRightClasses))
}, null, 8, ["icon", "pack", "size", "class"])) : createCommentVNode("", true)
]),
_: 3
}, 16, ["class", "disabled", "active", "aria-current"]))
], 10, _hoisted_1)), [
[vShow, !_ctx.hidden]
]);
};
}
});
const index = {
install(app) {
registerComponent(app, _sfc_main$1);
registerComponent(app, _sfc_main);
}
};
export {
_sfc_main$1 as OBreadcrumb,
_sfc_main as OBreadcrumbItem,
index as default
};
//# sourceMappingURL=breadcrumb.mjs.map