UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 4.47 kB
{"version":3,"file":"use-scrollbar.mjs","sources":["../../../../../../../packages/components/table-v2/src/composables/use-scrollbar.ts"],"sourcesContent":["import { ref, unref, watch } from 'vue'\n\nimport type { Ref } from 'vue'\nimport type { Alignment as ScrollStrategy } from '@element-plus/components/virtual-list'\nimport type { TableV2Props } from '../table'\nimport type { TableGridInstance } from '../table-grid'\n\nexport type ScrollPos = { scrollLeft: number; scrollTop: number }\ntype GridInstanceRef = Ref<TableGridInstance | undefined>\n\ntype UseScrollBarProps = {\n mainTableRef: GridInstanceRef\n leftTableRef: GridInstanceRef\n rightTableRef: GridInstanceRef\n\n onMaybeEndReached: () => void\n}\n\nexport type { ScrollStrategy }\n\nexport const useScrollbar = (\n props: TableV2Props,\n {\n mainTableRef,\n leftTableRef,\n rightTableRef,\n onMaybeEndReached,\n }: UseScrollBarProps\n) => {\n const scrollPos = ref<ScrollPos>({ scrollLeft: 0, scrollTop: 0 })\n\n function doScroll(params: ScrollPos) {\n const { scrollTop } = params\n\n mainTableRef.value?.scrollTo(params)\n leftTableRef.value?.scrollToTop(scrollTop)\n rightTableRef.value?.scrollToTop(scrollTop)\n }\n\n // methods\n function scrollTo(params: ScrollPos) {\n scrollPos.value = params\n\n doScroll(params)\n }\n\n function scrollToTop(scrollTop: number) {\n scrollPos.value.scrollTop = scrollTop\n\n doScroll(unref(scrollPos))\n }\n\n function scrollToLeft(scrollLeft: number) {\n scrollPos.value.scrollLeft = scrollLeft\n\n mainTableRef.value?.scrollTo?.(unref(scrollPos))\n }\n\n function onScroll(params: ScrollPos) {\n scrollTo(params)\n props.onScroll?.(params)\n }\n\n function onVerticalScroll({ scrollTop }: ScrollPos) {\n const { scrollTop: currentScrollTop } = unref(scrollPos)\n if (scrollTop !== currentScrollTop) scrollToTop(scrollTop)\n }\n\n function scrollToRow(row: number, strategy: ScrollStrategy = 'auto') {\n mainTableRef.value?.scrollToRow(row, strategy)\n }\n\n // When scrollTop changes, maybe reaching the bottom\n watch(\n () => unref(scrollPos).scrollTop,\n (cur, prev) => {\n if (cur > prev) onMaybeEndReached()\n }\n )\n\n return {\n scrollPos,\n\n scrollTo,\n scrollToLeft,\n scrollToTop,\n scrollToRow,\n onScroll,\n onVerticalScroll,\n }\n}\n"],"names":[],"mappings":"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"}