tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 19.1 kB
Source Map (JSON)
{"version":3,"file":"indexes.mjs","sources":["../../src/indexes/indexes.tsx"],"sourcesContent":["import {\n ref,\n reactive,\n defineComponent,\n onMounted,\n watchEffect,\n onBeforeUnmount,\n provide,\n computed,\n watch,\n ComponentPublicInstance,\n nextTick,\n} from 'vue';\nimport { throttle } from 'lodash-es';\nimport { preventDefault } from '../shared/dom';\nimport config from '../config';\nimport IndexesProps from './props';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { TdIndexesAnchorProps } from './type';\n\ninterface State {\n showSidebarTip: boolean;\n activeSidebar: string | number;\n children: ComponentPublicInstance<TdIndexesAnchorProps>[];\n}\n\ninterface GroupTop {\n height: number;\n top: number;\n anchor: string | number;\n totalHeight: number;\n}\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-indexes`,\n props: IndexesProps,\n emits: ['select', 'change'],\n setup(props) {\n const readerTNodeJSX = useTNodeJSX();\n const indexesClass = usePrefixClass('indexes');\n let timeOut: number;\n const indexesRoot = ref<HTMLElement>();\n const parentRect = ref();\n const state: State = reactive({\n showSidebarTip: false,\n activeSidebar: '',\n children: [],\n });\n\n const groupTop: Array<GroupTop> = [];\n const indexList = computed(() => {\n if (!props.indexList) {\n const start = 'A'.charCodeAt(0);\n const alphabet = [];\n for (let i = start, end = start + 26; i < end; i += 1) {\n alphabet.push(String.fromCharCode(i));\n }\n return alphabet;\n }\n return props.indexList;\n });\n\n const setAnchorOnScroll = (scrollTop: number) => {\n if (!groupTop.length) return;\n const { sticky, stickyOffset } = props;\n const stickyTop = stickyOffset + parentRect.value.top;\n scrollTop += stickyTop;\n const curIndex = groupTop.findIndex(\n (group) => scrollTop >= group.top - group.height && scrollTop <= group.top + group.totalHeight - group.height,\n );\n state.activeSidebar = groupTop[0].anchor;\n if (curIndex === -1) return;\n state.activeSidebar = groupTop[curIndex].anchor;\n const curGroup = groupTop[curIndex];\n if (sticky) {\n const offset = curGroup.top - scrollTop;\n const betwixt = offset < curGroup.height && offset > 0 && scrollTop > stickyTop;\n state.children.forEach((child, index) => {\n const { $el } = child;\n const wrapperClass = `${indexesClass.value}-anchor__wrapper`;\n const headerClass = `${indexesClass.value}-anchor__header`;\n const wrapper = $el.querySelector(`.${wrapperClass}`);\n const header = $el.querySelector(`.${headerClass}`);\n if (index === curIndex) {\n if (scrollTop - parentRect.value.top > stickyOffset) {\n wrapper.classList.add(`${wrapperClass}--sticky`);\n } else {\n wrapper.classList.remove(`${wrapperClass}--sticky`);\n }\n wrapper.classList.add(`${wrapperClass}--active`);\n header.classList.add(`${headerClass}--active`);\n wrapper.style = `transform: translate3d(0, ${betwixt ? offset : 0}px, 0); top: ${stickyTop}px`;\n } else if (index + 1 === curIndex) {\n wrapper.classList.add(`${wrapperClass}--sticky`);\n wrapper.classList.add(`${wrapperClass}--active`);\n header.classList.add(`${headerClass}--active`);\n wrapper.style = `transform: translate3d(0, ${\n betwixt ? offset - groupTop[index].height : 0\n }px, 0); top: ${stickyTop}px;`;\n } else {\n wrapper.classList.remove(`${wrapperClass}--sticky`);\n wrapper.classList.remove(`${wrapperClass}--active`);\n header.classList.remove(`${headerClass}--active`);\n wrapper.style = '';\n }\n });\n }\n };\n\n const scrollToByIndex = (index: number | string) => {\n const curGroup = groupTop.find((item) => item.anchor === index);\n if (indexesRoot.value) {\n indexesRoot.value.scrollTo?.(0, curGroup.top ?? 0);\n }\n };\n\n const setActiveSidebarAndTip = (index: string | number) => {\n state.activeSidebar = index;\n state.showSidebarTip = true;\n };\n\n const handleSidebarItemClick = (index: string | number) => {\n props.onSelect?.(index);\n setActiveSidebarAndTip(index);\n scrollToByIndex(index);\n };\n\n const handleRootScroll = throttle((e: UIEvent) => {\n const scrollTop = indexesRoot.value?.scrollTop ?? 0;\n setAnchorOnScroll(scrollTop);\n }, 1000 / 30);\n\n const clearSidebarTip = (): void => {\n if (state.showSidebarTip && state.activeSidebar) {\n timeOut && clearTimeout(timeOut);\n timeOut = window.setTimeout(() => {\n state.showSidebarTip = false;\n }, 1000);\n }\n };\n\n const getAnchorsRect = () => {\n return Promise.all(\n state.children.map((child) => {\n const { $el, index } = child;\n const rect = $el.getBoundingClientRect();\n groupTop.push({\n height: rect.height,\n top: rect.top - parentRect.value.top,\n anchor: index,\n totalHeight: 0,\n });\n return child;\n }),\n );\n };\n\n const handleSidebarTouchmove = (event: TouchEvent) => {\n preventDefault(event, false);\n const { touches } = event;\n const { clientX, clientY } = touches[0];\n const target = document.elementFromPoint(clientX, clientY);\n if (target && target.className === `${indexesClass.value}__sidebar-item` && target instanceof HTMLElement) {\n const { index } = target.dataset;\n const curIndex = indexList.value.find((idx) => String(idx) === index);\n if (curIndex !== undefined && state.activeSidebar !== curIndex) {\n setActiveSidebarAndTip(curIndex);\n scrollToByIndex(curIndex);\n }\n }\n };\n\n const relation = (child: ComponentPublicInstance) => {\n child && state.children.push(child);\n };\n\n watchEffect(() => {\n if (state.showSidebarTip) {\n clearSidebarTip();\n }\n });\n\n watch(\n () => state.activeSidebar,\n (val, oldVal) => {\n if (val !== oldVal) {\n props.onChange?.(state.activeSidebar);\n }\n },\n );\n\n const init = () => {\n nextTick(() => {\n parentRect.value = indexesRoot.value?.getBoundingClientRect() || { top: 0 };\n getAnchorsRect().then(() => {\n groupTop.forEach((item, index) => {\n const next = groupTop[index + 1];\n item.totalHeight = (next?.top || Infinity) - item.top;\n });\n setAnchorOnScroll(0);\n });\n });\n };\n\n onMounted(init);\n\n watch(() => props.indexList, init);\n\n onBeforeUnmount(() => {\n timeOut && clearTimeout(timeOut);\n });\n\n provide('indexesProvide', {\n relation,\n });\n\n return () => (\n <div ref={indexesRoot} class={indexesClass.value} onScroll={handleRootScroll}>\n <div class={`${indexesClass.value}__sidebar`}>\n {indexList.value.map((item) => (\n <div\n class={[\n `${indexesClass.value}__sidebar-item`,\n state.activeSidebar === item ? `${indexesClass.value}__sidebar-item--active` : '',\n ]}\n data-index={item}\n onClick={(e: MouseEvent) => {\n e.preventDefault();\n handleSidebarItemClick(item);\n }}\n onTouchmove={handleSidebarTouchmove}\n >\n {item}\n {state.showSidebarTip && state.activeSidebar === item && (\n <div class={`${indexesClass.value}__sidebar-tips`}>{state.activeSidebar}</div>\n )}\n </div>\n ))}\n </div>\n {readerTNodeJSX('default')}\n </div>\n );\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","IndexesProps","emits","setup","readerTNodeJSX","useTNodeJSX","indexesClass","usePrefixClass","timeOut","indexesRoot","ref","parentRect","state","reactive","showSidebarTip","activeSidebar","children","groupTop","indexList","computed","start","charCodeAt","alphabet","i","end","push","String","fromCharCode","setAnchorOnScroll","scrollTop","length","sticky","stickyOffset","stickyTop","value","top","curIndex","findIndex","group","height","totalHeight","anchor","curGroup","offset","betwixt","forEach","child","index","$el","wrapperClass","concat","headerClass","wrapper","querySelector","header","classList","add","remove","style","scrollToByIndex","find","item","_indexesRoot$value$sc","_indexesRoot$value","_curGroup$top","scrollTo","call","setActiveSidebarAndTip","handleSidebarItemClick","_props$onSelect","onSelect","handleRootScroll","throttle","e","_indexesRoot$value$sc2","_indexesRoot$value2","clearSidebarTip","clearTimeout","window","setTimeout","getAnchorsRect","Promise","all","map","rect","getBoundingClientRect","handleSidebarTouchmove","event","preventDefault","touches","_touches$","clientX","clientY","target","document","elementFromPoint","className","HTMLElement","dataset","idx","relation","watchEffect","watch","val","oldVal","_props$onChange","onChange","init","nextTick","_indexesRoot$value3","then","next","Infinity","onMounted","onBeforeUnmount","provide","_createVNode","onClick"],"mappings":"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"}