tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 6.9 kB
Source Map (JSON)
{"version":3,"file":"anchor-item.mjs","sources":["../../../components/anchor/anchor-item.tsx"],"sourcesContent":["import { defineComponent, h, VNodeChild, onMounted, onUnmounted, inject, watch } from 'vue';\nimport { ANCHOR_SHARP_REGEXP } from './utils';\nimport props from './anchor-item-props';\nimport { usePrefixClass, useCommonClassName } from '@tdesign/shared-hooks';\nimport { AnchorInjectionKey } from './constants';\nimport { isString, isFunction } from 'lodash-es';\n\nconst localProps = {\n ...props,\n href: {\n type: String,\n required: true,\n validator(v: string): boolean {\n return ANCHOR_SHARP_REGEXP.test(v);\n },\n },\n};\n\nexport default defineComponent({\n name: 'TAnchorItem',\n inject: {\n tAnchor: { default: undefined },\n },\n props: localProps,\n setup(props, { slots }) {\n const anchor = inject(AnchorInjectionKey, undefined);\n const CLASSNAME_PREFIX = usePrefixClass('anchor__item');\n const { STATUS } = useCommonClassName();\n const register = () => {\n anchor.registerLink(props.href as string);\n };\n const unregister = (hrefVal?: string) => {\n const val = hrefVal || props.href;\n if (!val) return;\n anchor.unregisterLink(val);\n };\n const handleClick = (e: MouseEvent) => {\n const { href, title } = props;\n if (!props.customScroll) anchor.handleScrollTo(href);\n anchor.handleLinkClick({ href, title: isString(title) ? title : undefined, e });\n };\n const renderTitle = () => {\n const { title } = props;\n const { title: titleSlot } = slots;\n let titleVal: VNodeChild;\n if (isString(title)) {\n titleVal = title;\n } else if (isFunction(title)) {\n titleVal = title(h);\n } else if (titleSlot) {\n titleVal = titleSlot(null);\n }\n return titleVal;\n };\n watch(\n () => props.href,\n (newVal, oldVal) => {\n unregister(oldVal);\n register();\n },\n { immediate: true },\n );\n onMounted(() => {\n register();\n });\n onUnmounted(() => {\n unregister();\n });\n return () => {\n const { href, target } = props;\n const { default: children, title: titleSlot } = slots;\n const title = renderTitle();\n const titleAttr = isString(title) ? title : null;\n const active = anchor.active === href;\n const wrapperClass = {\n [CLASSNAME_PREFIX.value]: true,\n [STATUS.value.active]: active,\n };\n const titleClass = {\n [`${CLASSNAME_PREFIX.value}-link`]: true,\n };\n return (\n <div class={wrapperClass}>\n <a href={href} title={titleAttr} class={titleClass} target={target} onClick={handleClick}>\n {titleSlot ? titleSlot(null) : title}\n </a>\n {children && children(null)}\n </div>\n );\n };\n },\n});\n"],"names":["localProps","_objectSpread","props","href","type","String","required","validator","v","ANCHOR_SHARP_REGEXP","test","defineComponent","name","inject","tAnchor","setup","slots","_ref","anchor","AnchorInjectionKey","CLASSNAME_PREFIX","usePrefixClass","_useCommonClassName","useCommonClassName","STATUS","register","registerLink","unregister","hrefVal","val","unregisterLink","handleClick","e","title","customScroll","handleScrollTo","handleLinkClick","isString","renderTitle","titleSlot","titleVal","isFunction","h","watch","newVal","oldVal","immediate","onMounted","onUnmounted","target","children","titleAttr","active","wrapperClass","_defineProperty","value","titleClass","concat","_createVNode"],"mappings":"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"}