tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 11.3 kB
Source Map (JSON)
{"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 { ChevronRightIcon as TdChevronRightIcon } from 'tdesign-icons-vue-next';\n\nimport props from './breadcrumb-item-props';\nimport Tooltip from '../tooltip/index';\nimport { isTextEllipsis } from '../utils/dom';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { useGlobalIcon } from '../hooks/useGlobalIcon';\nimport { useTNodeJSX, useContent } from '../hooks/tnode';\nimport { isFunction } from 'lodash-es';\n\ninterface LocalTBreadcrumb {\n separator: (() => void) | string;\n theme: string;\n slots: {\n separator: VNode | string;\n };\n maxItemWidth: string;\n}\n\nconst localTBreadcrumbOrigin: LocalTBreadcrumb = {\n separator: '',\n theme: 'light',\n slots: { separator: '' },\n maxItemWidth: undefined,\n};\n\nexport default defineComponent({\n name: 'TBreadcrumbItem',\n inheritAttrs: false,\n props,\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\n const { ChevronRightIcon } = useGlobalIcon({ ChevronRightIcon: TdChevronRightIcon });\n const maxWithStyle = computed(() => {\n const maxItemWidth = localTBreadcrumb?.maxItemWidth;\n const maxWith: string = props.maxWidth || maxItemWidth || '120';\n return { maxWidth: `${maxWith}px` };\n });\n\n onMounted(() => {\n isCutOff.value = isTextEllipsis(breadcrumbText.value);\n });\n onBeforeUpdate(() => {\n isCutOff.value = isTextEllipsis(breadcrumbText.value);\n });\n\n const separatorPropContent = localTBreadcrumb?.separator;\n const separatorSlot = localTBreadcrumb?.slots?.separator;\n const separatorContent = separatorPropContent || separatorSlot || (\n <ChevronRightIcon {...{ color: 'rgba(0,0,0,.3)' }} />\n );\n const { proxy } = getCurrentInstance();\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 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\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 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 {isFunction(separatorContent) ? separatorContent() : separatorContent}\n </span>\n </div>\n );\n };\n },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","localTBreadcrumbOrigin","separator","theme","slots","maxItemWidth","defineComponent","name","inheritAttrs","props","setup","_localTBreadcrumb$slo","attrs","_ref","renderContent","useContent","renderTNodeJSX","useTNodeJSX","breadcrumbText","ref","localTBreadcrumb","inject","themeClassName","isCutOff","COMPONENT_NAME","usePrefixClass","separatorClass","disableClass","linkClass","maxLengthClass","textFlowClass","_useGlobalIcon","useGlobalIcon","ChevronRightIcon","TdChevronRightIcon","maxWithStyle","computed","maxWith","maxWidth","concat","onMounted","value","isTextEllipsis","onBeforeUpdate","separatorPropContent","separatorSlot","separatorContent","_createVNode","color","_getCurrentInstance","getCurrentInstance","proxy","handleClick","router","$router","to","replace","push","window","location","href","bindEvent","e","disabled","preventDefault","target","open","itemClass","textClass","listeners","onClick","stopPropagation","content","textContent","style","itemContent","_objectSpread","_mergeProps","_default","textOverflow","isFunction"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAS2B,SAAAA,QAAAC,CAAA,EAAA;AAAA,EAAA,OAAA,OAAAA,CAAA,KAAA,UAAA,IAAAC,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAC,IAAA,CAAAJ,CAAA,CAAAK,KAAAA,iBAAAA,IAAAA,CAAAA,OAAA,CAAAL,CAAA,CAAA,CAAA;AAAA,CAAA;AAW3B,IAAMM,sBAA2C,GAAA;AAC/CC,EAAAA,SAAW,EAAA,EAAA;AACXC,EAAAA,KAAO,EAAA,OAAA;AACPC,EAAAA,KAAA,EAAO;AAAEF,IAAAA,SAAA,EAAW,EAAA;GAAG;AACvBG,EAAAA,YAAc,EAAA,KAAA,CAAA;AAChB,CAAA,CAAA;AAEA,sBAAeC,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,iBAAA;AACNC,EAAAA,YAAc,EAAA,KAAA;AACdC,EAAAA,KAAA,EAAAA,KAAA;AACAC,EAAAA,KAAMD,WAANC,KAAMD,CAAAA,MAAAA,EAAAA,IAAAA,EAAkB;AAAA,IAAA,IAAAE,qBAAA,CAAA;AAAA,IAAA,IAATC,KAAA,GAAAC,IAAA,CAAAD,KAAA,CAAA;AACb,IAAA,IAAME,gBAAgBC,UAAW,EAAA,CAAA;AACjC,IAAA,IAAMC,iBAAiBC,WAAY,EAAA,CAAA;AAEnC,IAAA,IAAMC,iBAAiBC,GAAiB,EAAA,CAAA;AAClC,IAAA,IAAAC,gBAAA,GAAmBC,MAAO,CAAA,aAAA,EAAepB,sBAAsB,CAAA,CAAA;IAC/D,IAAAqB,cAAA,GAAiBH,GAAI,CAAAC,gBAAA,KAAAA,IAAAA,IAAAA,gBAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAAkBjB,KAAK,CAAA,CAAA;AAC5C,IAAA,IAAAoB,QAAA,GAAWJ,IAAI,KAAK,CAAA,CAAA;AACpB,IAAA,IAAAK,cAAA,GAAiBC,eAAe,kBAAkB,CAAA,CAAA;AAClD,IAAA,IAAAC,cAAA,GAAiBD,eAAe,uBAAuB,CAAA,CAAA;AACvD,IAAA,IAAAE,YAAA,GAAeF,eAAe,aAAa,CAAA,CAAA;AAC3C,IAAA,IAAAG,SAAA,GAAYH,eAAe,MAAM,CAAA,CAAA;AACjC,IAAA,IAAAI,cAAA,GAAiBJ,eAAe,mBAAmB,CAAA,CAAA;AACnD,IAAA,IAAAK,aAAA,GAAgBL,eAAe,2BAA2B,CAAA,CAAA;IAEhE,IAAAM,cAAA,GAA6BC,cAAc;AAAEC,QAAAA,gBAAA,EAAkBC,gBAAAA;AAAmB,OAAC,CAAA;MAA3ED,kBAAiB,GAAAF,cAAA,CAAjBE,gBAAiB,CAAA;AACnB,IAAA,IAAAE,YAAA,GAAeC,SAAS,YAAM;MAClC,IAAM/B,eAAee,gBAAkB,KAAA,IAAA,IAAlBA,gBAAkB,KAAlBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAkB,CAAAf,YAAA,CAAA;MACjC,IAAAgC,OAAA,GAAkB5B,MAAM,CAAA6B,QAAA,IAAYjC,YAAgB,IAAA,KAAA,CAAA;MACnD,OAAA;QAAEiC,QAAU,EAAA,EAAA,CAAAC,MAAA,CAAGF,OAAY,EAAA,IAAA,CAAA;OAAA,CAAA;AACpC,KAAC,CAAA,CAAA;AAEDG,IAAAA,SAAA,CAAU,YAAM;MACLjB,QAAA,CAAAkB,KAAA,GAAQC,cAAe,CAAAxB,cAAA,CAAeuB,KAAK,CAAA,CAAA;AACtD,KAAC,CAAA,CAAA;AACDE,IAAAA,cAAA,CAAe,YAAM;MACVpB,QAAA,CAAAkB,KAAA,GAAQC,cAAe,CAAAxB,cAAA,CAAeuB,KAAK,CAAA,CAAA;AACtD,KAAC,CAAA,CAAA;IAED,IAAMG,uBAAuBxB,gBAAkB,KAAA,IAAA,IAAlBA,gBAAkB,KAAlBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAkB,CAAAlB,SAAA,CAAA;AACzC,IAAA,IAAA2C,aAAA,GAAgBzB,qBAAAA,IAAAA,IAAAA,wDAAAA,iBAAkBhB,KAAO,MAAAO,IAAAA,IAAAA,qBAAA,KAAzBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAyBT,SAAA,CAAA;IACzC,IAAA4C,gBAAA,GAAmBF,wBAAwBC,aAC/C,IAAAE,WAAA,CAAAd,kBAAA,EAAA;AAAwBe,MAAAA,KAAA,EAAO,gBAAA;KAAoB,EAAA,IAAA,CAAA,CAAA;AAE/C,IAAA,IAAAC,mBAAA,GAAYC,kBAAmB,EAAA;MAA7BC,KAAM,GAAAF,mBAAA,CAANE,KAAM,CAAA;AAEd,IAAA,IAAMC,cAAc,SAAdA,cAAoB;MAClB,IAAAC,MAAA,GAAS5C,MAAM,CAAA4C,MAAA,IAAUF,KAAM,CAAAG,OAAA,CAAA;AAEjC7C,MAAAA,IAAAA,MAAAA,CAAM8C,MAAMF,MAAQ,EAAA;AACtB5C,QAAAA,MAAAA,CAAM+C,OAAU,GAAAH,MAAA,CAAOG,OAAQ/C,CAAAA,MAAAA,CAAM8C,EAAE,CAAI,GAAAF,MAAA,CAAOI,IAAKhD,CAAAA,MAAAA,CAAM8C,EAAE,CAAA,CAAA;AACjE,OAAO,MAAA;AACEG,QAAAA,MAAA,CAAAC,QAAA,CAASC,OAAOnD,MAAM,CAAAmD,IAAA,CAAA;AAC/B,OAAA;KACF,CAAA;AACM,IAAA,IAAAC,SAAA,GAAY,SAAZA,SAAAA,CAAaC,CAAkB,EAAA;AAC/B,MAAA,IAAA,CAACrD,OAAMsD,QAAU,EAAA;QACnBD,CAAA,CAAEE,cAAe,EAAA,CAAA;AACbvD,QAAAA,IAAAA,MAAAA,CAAMwD,WAAW,QAAU,EAAA;AAC7BxD,UAAAA,MAAAA,CAAMmD,IAAO,GAAAF,MAAA,CAAOQ,IAAKzD,CAAAA,MAAAA,CAAMmD,IAAI,CAAI,GAAAF,MAAA,CAAOQ,IAAKzD,CAAAA,MAAAA,CAAM8C,EAAY,CAAA,CAAA;AACvE,SAAO,MAAA;AACOH,UAAAA,WAAA,EAAA,CAAA;AACd,SAAA;AACF,OAAA;KACF,CAAA;AAEA,IAAA,OAAO,YAAM;MACX,IAAMe,SAAY,GAAA,CAAC3C,cAAe,CAAAiB,KAAA,EAAOnB,eAAemB,KAAK,CAAA,CAAA;AACvD,MAAA,IAAA2B,SAAA,GAAY,CAACtC,aAAA,CAAcW,KAAK,CAAA,CAAA;MAEtC,IAAIhC,OAAMsD,QAAU,EAAA;AACRK,QAAAA,SAAA,CAAAX,IAAA,CAAK9B,aAAac,KAAK,CAAA,CAAA;AACnC,OAAA;AAEA,MAAA,IAAM4B,SAAY,GAAA;AAChBC,QAAAA,OAAA,EAAS,SAATA,OAAAA,CAAUR,CAAkB,EAAA;UAC1B,IAAIrD,OAAMsD,QAAU,EAAA;YAClBD,CAAA,CAAES,eAAgB,EAAA,CAAA;AAClB,YAAA,OAAA;AACF,WAAA;AACF,SAAA;OACF,CAAA;AAEM,MAAA,IAAAC,QAAA,GAAU1D,aAAc,CAAA,SAAA,EAAW,SAAS,CAAA,CAAA;MAE5C,IAAA2D,WAAA,GAAA1B,WAAA,CAAA,MAAA,EAAA;QACQ,OAAOlB,EAAAA,cAAe,CAAAY,KAAA;QAAOiC,KAAO,EAAAvC,YAAA,CAAaM,KAAAA;AAAM,OAAA,EAAA,CAChEzB,eAAe,MAAM,CAAA,EAAA+B,WAAA,CAAA,MAAA,EAAA;AAAA,QAAA,KAAA,EACX7B,cAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAAqB,MAAA,CAA0BV,cAAA,CAAeY,KACjD,EAAA,OAAA,CAAA;AAAA,OAAA,EAAA,CAAA+B,QAAA,CAHJ,CAAA,CAAA,CAAA,CAAA;AAOC,MAAA,IAAAG,WAAA,GAAA5B,WAAA,CAAA,MAAA,EAAA6B,aAAA,CAAA;QAA0B,OAAOR,EAAAA,SAAAA;OAAcC,EAAAA,SAAA,CAAcI,EAAAA,CAAAA,WAAA,CAA9C,CAAA,CAAA;AAEnB,MAAA,IAAA,CAAKhE,OAAMmD,IAAQnD,IAAAA,MAAAA,CAAM8C,EAAO,KAAA,CAAC9C,OAAMsD,QAAU,EAAA;AACrCK,QAAAA,SAAA,CAAAX,IAAA,CAAK7B,UAAUa,KAAK,CAAA,CAAA;QAC9BkC,WAAA,GAAA5B,WAAA,CAAA,GAAA,EAAA8B,UAAA,CAAA;AAAA,UAAA,OAAA,EACYT,SAAA;UAAA,MAAiB3D,EAAAA,MAAM,CAAAmD,IAAA;AAAA,UAAA,QAAA,EAAcnD,MAAAA,CAAMwD,MAAAA;AAAY,SAAA,EAAAI,SAAA,EAAA;UAAA,SAAoBR,EAAAA,SAAAA;AAAA,SAAA,CAAA,EAAA,CAClFY,YADF,CAAA,CAAA;AAIL,OAAA;MAEE,OAAA1B,WAAA,QAAA8B,UAAA,CAAA;QAAA,OAAYV,EAAAA,SAAAA;AAAA,OAAA,EAAevD;mBAAgB,CAACH,MAAM,CAAAsD,QAAA,IAAYtD,MAAM,CAAA6D,OAAAA;AAAA,OAAA,CAAA,EAAA,CACjE/C,QAAA,CAASkB;mBAA0B,SAAA+B,OAAA,GAAA;AAAA,UAAA,OAAMA,QAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA9E,OAAA,CAAUiF,WAAY,CAAA,GAAZA,WAAY,GAAA;AAAA,QAAA,SAAA,EAAA,SAAAG,QAAA,GAAA;AAAA,UAAA,OAAA,CAAZH,WAAY,CAAA,CAAA;AAAA,SAAA;OAAaA,CAAAA,GAAAA,WAAA,EAAA5B,WAAA,CAAA,MAAA,EAAA;QAAA,OAEpErB,EAAAA,cAAA,CAAee;eACf,EAAA;AACLsC,UAAAA,YAAA,EAAcxD,QAAS,CAAAkB,KAAA,GAAQ,UAAa,GAAA,MAAA;AAC9C,SAAA;OAECuC,EAAAA,CAAAA,UAAW,CAAAlC,gBAAgB,IAAIA,gBAAiB,EAAA,GAAIA;KAI7D,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}