UNPKG

tdesign-vue-next

Version:
1 lines 10.5 kB
{"version":3,"file":"breadcrumb-item.mjs","sources":["../../../components/breadcrumb/breadcrumb-item.tsx"],"sourcesContent":["import { defineComponent, VNode, inject, ref, computed, getCurrentInstance, onMounted, onBeforeUpdate } from 'vue';\nimport props from './breadcrumb-item-props';\nimport Tooltip from '../tooltip/index';\nimport { isTextEllipsis } from '@tdesign/shared-utils';\nimport { useContent, useTNodeJSX, usePrefixClass } from '@tdesign/shared-hooks';\n\ninterface LocalTBreadcrumb {\n separator: VNode | string;\n theme: string;\n maxItemWidth: string;\n}\n\nconst localTBreadcrumbOrigin: LocalTBreadcrumb = {\n separator: '',\n theme: 'light',\n maxItemWidth: undefined,\n};\n\nexport default defineComponent({\n name: 'TBreadcrumbItem',\n inheritAttrs: false,\n props: {\n ...props,\n isEllipsisItem: Boolean,\n },\n setup(props, { attrs }) {\n const renderContent = useContent();\n const renderTNodeJSX = useTNodeJSX();\n\n const breadcrumbText = ref<HTMLElement>();\n const localTBreadcrumb = inject('tBreadcrumb', localTBreadcrumbOrigin);\n const themeClassName = ref(localTBreadcrumb?.theme);\n const isCutOff = ref(false);\n const COMPONENT_NAME = usePrefixClass('breadcrumb__item');\n const separatorClass = usePrefixClass('breadcrumb__separator');\n const disableClass = usePrefixClass('is-disabled');\n const linkClass = usePrefixClass('link');\n const maxLengthClass = usePrefixClass('breadcrumb__inner');\n const textFlowClass = usePrefixClass('breadcrumb--text-overflow');\n const maxWithStyle = computed(() => {\n const maxItemWidth = localTBreadcrumb?.maxItemWidth;\n const maxWith: string = props.maxWidth || maxItemWidth || '120';\n return { maxWidth: `${maxWith}px` };\n });\n const { proxy } = getCurrentInstance();\n\n onMounted(() => {\n if (breadcrumbText.value) {\n isCutOff.value = isTextEllipsis(breadcrumbText.value);\n }\n });\n onBeforeUpdate(() => {\n if (breadcrumbText.value) {\n isCutOff.value = isTextEllipsis(breadcrumbText.value);\n }\n });\n\n const handleClick = () => {\n const router = props.router || proxy.$router;\n\n if (props.to && router) {\n props.replace ? router.replace(props.to) : router.push(props.to);\n } else {\n window.location.href = props.href;\n }\n };\n\n const bindEvent = (e: MouseEvent) => {\n if (!props.disabled) {\n e.preventDefault();\n if (props.target === '_blank') {\n props.href ? window.open(props.href) : window.open(props.to as string);\n } else {\n handleClick();\n }\n }\n };\n\n return () => {\n const itemClass = [COMPONENT_NAME.value, themeClassName.value];\n const textClass = [textFlowClass.value];\n\n if (props.disabled) {\n textClass.push(disableClass.value);\n }\n\n const listeners = {\n onClick: (e: MouseEvent) => {\n if (props.disabled) {\n e.stopPropagation();\n return;\n }\n },\n };\n\n const content = renderContent('default', 'content');\n const textContent = (\n <span {...{ class: maxLengthClass.value, style: maxWithStyle.value }}>\n {renderTNodeJSX('icon')}\n <span ref={breadcrumbText} class={`${maxLengthClass.value}-text`}>\n {content}\n </span>\n </span>\n );\n let itemContent = <span {...{ class: textClass, ...listeners }}>{textContent}</span>;\n\n if ((props.href || props.to) && !props.disabled) {\n textClass.push(linkClass.value);\n itemContent = (\n <a class={textClass} href={props.href} target={props.target} {...listeners} onClick={bindEvent}>\n {textContent}\n </a>\n );\n }\n if (props?.isEllipsisItem) {\n itemContent = <div style=\"display: flex\">{content}</div>;\n }\n return (\n <div class={itemClass} {...attrs} onClick={!props.disabled && props.onClick}>\n {isCutOff.value ? <Tooltip content={() => content}>{itemContent}</Tooltip> : itemContent}\n <span\n class={separatorClass.value}\n style={{\n textOverflow: isCutOff.value ? 'ellipsis' : 'clip',\n }}\n >\n {localTBreadcrumb.separator}\n </span>\n </div>\n );\n };\n },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","localTBreadcrumbOrigin","separator","theme","maxItemWidth","defineComponent","name","inheritAttrs","props","_objectSpread","isEllipsisItem","Boolean","setup","attrs","_ref","renderContent","useContent","renderTNodeJSX","useTNodeJSX","breadcrumbText","ref","localTBreadcrumb","inject","themeClassName","isCutOff","COMPONENT_NAME","usePrefixClass","separatorClass","disableClass","linkClass","maxLengthClass","textFlowClass","maxWithStyle","computed","maxWith","maxWidth","concat","_getCurrentInstance","getCurrentInstance","proxy","onMounted","value","isTextEllipsis","onBeforeUpdate","handleClick","router","$router","to","replace","push","window","location","href","bindEvent","e","disabled","preventDefault","target","open","itemClass","textClass","listeners","onClick","stopPropagation","content","textContent","_createVNode","style","itemContent","_mergeProps","_default","textOverflow"],"mappings":"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"}