UNPKG

tdesign-vue-next

Version:
1 lines 6.73 kB
{"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/hooks';\nimport { AnchorInjectionKey } from './consts';\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 = () => {\n const { href } = props;\n if (!href) return;\n anchor.unregisterLink(href);\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 () => {\n unregister();\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","unregisterLink","handleClick","e","title","customScroll","handleScrollTo","handleLinkClick","isString","renderTitle","titleSlot","titleVal","isFunction","h","watch","immediate","onMounted","onUnmounted","target","children","titleAttr","active","wrapperClass","_defineProperty","value","titleClass","concat","_createVNode"],"mappings":"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"}