song-ui-u
Version:
vue3 + js的PC前端组件库
100 lines (97 loc) • 3.28 kB
JavaScript
import { defineComponent, inject, createVNode, isVNode } from 'vue';
import { useRouter } from 'vue-router';
import * as icons from 'song-ui-pro-icon';
import '../../button/index.mjs';
import '../../buttonGroup/index.mjs';
import { XIcon } from '../../icon/index.mjs';
import '../../input/index.mjs';
import '../../textarea/index.mjs';
import '../../row/index.mjs';
import '../../col/index.mjs';
import '../../container/index.mjs';
import '../../checkbox/index.mjs';
import '../../switch/index.mjs';
import '../../form/index.mjs';
import '../../message/index.mjs';
import '../../mask/src/mask.mjs';
import '../../modal/index.mjs';
import '../../messageBox/index.mjs';
import '../../drawer/index.mjs';
import '../../badge/index.mjs';
import '../../space/index.mjs';
import '../../image/index.mjs';
import '../../radio/index.mjs';
import '../../divider/index.mjs';
import '../../chat/index.mjs';
import '../../progress/index.mjs';
import '../../upload/index.mjs';
import '../../vTree/index.mjs';
import '../../table/index.mjs';
import '../../tabs/index.mjs';
import '../../menu/index.mjs';
import '../../steps/index.mjs';
import '../../header/index.mjs';
import '../index.mjs';
import '../../datePicker/index.mjs';
import '../../tooltip/index.mjs';
import '../../popover/index.mjs';
import '../../timePicker/index.mjs';
import '../../select/index.mjs';
import '../../collapse/index.mjs';
import '../../card/index.mjs';
import '../../timeline/index.mjs';
import '../../tag/index.mjs';
import '../../result/index.mjs';
import '../../sender/index.mjs';
import { useNamespace } from '../../../hook/use-namespace/index.mjs';
import '../../../hook/use-zindex/index.mjs';
function _isSlot(s) {
return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
}
var breadcrumbItem = /* @__PURE__ */ defineComponent({
name: "x-breadcrumb-item",
// 修改组件名
props: {
to: [String, Object],
// 跳转路径
replace: Boolean
// 是否替换历史记录
},
setup(props, {
slots
}) {
const router = useRouter();
const breadcrumbCtx = inject("breadcrumb");
const ns = useNamespace("breadcrumb-item");
const renderIcons = () => {
if (breadcrumbCtx.props.separatorIcon) {
return icons[breadcrumbCtx.props?.separatorIcon].render();
}
};
const handleClick = () => {
if (!props.to) return;
props.replace ? router.replace(props.to) : router.push(props.to);
};
return () => {
let _slot;
const isLink = !!props.to;
const separator = breadcrumbCtx.props.separatorIcon ? createVNode("span", {
"class": ns.e("separator-icon")
}, [createVNode(XIcon, null, _isSlot(_slot = renderIcons()) ? _slot : {
default: () => [_slot]
})]) : createVNode("span", {
"class": ns.e("separator")
}, [breadcrumbCtx.props.separator]);
return createVNode("div", {
"class": [ns.b()]
}, [isLink ? createVNode("a", {
"class": [ns.e("link")],
"onClick": handleClick
}, [slots.default?.()]) : createVNode("span", {
"class": ns.e("text")
}, [slots.default?.()]), separator]);
};
}
});
export { breadcrumbItem as default };
//# sourceMappingURL=breadcrumb-item.mjs.map