UNPKG

song-ui-u

Version:

vue3 + js的PC前端组件库

100 lines (97 loc) 3.28 kB
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