UNPKG

tdesign-mobile-vue

Version:
1 lines 31.8 kB
{"version":3,"file":"useFixed.mjs","sources":["../../../src/table/hooks/useFixed.ts"],"sourcesContent":["import { toRefs, ref, watch, reactive } from 'vue';\nimport { get } from 'lodash-es';\nimport log from '../../_common/js/log';\nimport { ClassName, Styles } from '../../common';\nimport type { TdBaseTableProps, TableRowData, BaseTableCol, BaseTableInstanceFunctions } from '../type';\nimport type { RowAndColFixedPosition, TableRowFixedClasses, FixedColumnInfo, TableColFixedClasses } from '../interface';\n\n// 固定列相关类名处理\nexport function getColumnFixedStyles(\n col: TdBaseTableProps['columns'][0],\n index: number,\n rowAndColFixedPosition: RowAndColFixedPosition,\n tableColFixedClasses: TableColFixedClasses,\n): { style?: Styles; classes?: ClassName } {\n const fixedPos = rowAndColFixedPosition?.get(col.colKey || index);\n if (!fixedPos) return {};\n const thClasses = {\n [tableColFixedClasses.left]: col.fixed === 'left',\n [tableColFixedClasses.right]: col.fixed === 'right',\n [tableColFixedClasses.lastLeft]: col.fixed === 'left' && fixedPos.lastLeftFixedCol,\n [tableColFixedClasses.firstRight]: col.fixed === 'right' && fixedPos.firstRightFixedCol,\n };\n const thStyles = {\n left: col.fixed === 'left' ? `${fixedPos.left}px` : undefined,\n right: col.fixed === 'right' ? `${fixedPos.right}px` : undefined,\n };\n return {\n style: thStyles,\n classes: thClasses,\n };\n}\n\n// 固定行相关类名处理\nexport function getRowFixedStyles(\n rowId: string | number,\n rowIndex: number,\n rowLength: number,\n fixedRows: TdBaseTableProps['fixedRows'],\n rowAndColFixedPosition: RowAndColFixedPosition,\n tableRowFixedClasses: TableRowFixedClasses,\n // 和虚拟滚动搭配使用时,需要增加 style 的偏移量\n virtualTranslateY = 0,\n): { style: Styles; classes: ClassName } {\n if (!fixedRows || !fixedRows.length) return { style: undefined, classes: undefined };\n const fixedTop = rowIndex < fixedRows[0];\n const fixedBottom = rowIndex > rowLength - 1 - fixedRows[1];\n const firstFixedBottomRow = rowLength - fixedRows[1];\n const fixedPos = rowAndColFixedPosition?.get(rowId) || {};\n const rowClasses = {\n [tableRowFixedClasses.top]: fixedTop,\n [tableRowFixedClasses.bottom]: fixedBottom,\n [tableRowFixedClasses.firstBottom]: rowIndex === firstFixedBottomRow,\n [tableRowFixedClasses.withoutBorderBottom]: rowIndex === firstFixedBottomRow - 1,\n };\n const rowStyles = {\n top: fixedTop ? `${fixedPos.top - virtualTranslateY}px` : undefined,\n bottom: fixedBottom ? `${fixedPos.bottom + virtualTranslateY}px` : undefined,\n };\n return {\n style: rowStyles,\n classes: rowClasses,\n };\n}\n\nexport default function useFixed(props: TdBaseTableProps) {\n const { columns, tableLayout, tableContentWidth, fixedRows, bordered } = toRefs(props);\n const data = ref<TableRowData[]>([]);\n const tableContentRef = ref<HTMLDivElement>();\n const isFixedHeader = ref(false);\n const isWidthOverflow = ref(false);\n const tableElmRef = ref<HTMLTableElement>();\n // 固定列、固定表头、固定表尾等内容的位置信息\n const rowAndColFixedPosition = ref<RowAndColFixedPosition>(new Map());\n const showColumnShadow = reactive({\n left: false,\n right: false,\n });\n // 虚拟滚动不能使用 CSS sticky 固定表头\n const virtualScrollHeaderPos = ref<{ left: number; top: number }>({ left: 0, top: 0 });\n const tableWidth = ref(0);\n const tableElmWidth = ref(0);\n const thWidthList = ref<{ [colKey: string]: number }>({});\n\n const isFixedColumn = ref(false);\n const isFixedRightColumn = ref(false);\n const isFixedLeftColumn = ref(false);\n\n function setUseFixedTableElmRef(val: HTMLTableElement) {\n tableElmRef.value = val;\n }\n\n function getColumnMap(\n columns: BaseTableCol[],\n map: RowAndColFixedPosition = new Map(),\n levelNodes: FixedColumnInfo[][] = [],\n level = 0,\n parent?: FixedColumnInfo,\n ) {\n for (let i = 0, len = columns.length; i < len; i++) {\n const col = columns[i];\n if (['left', 'right'].includes(col.fixed)) {\n isFixedColumn.value = true;\n }\n if (col.fixed === 'right') {\n isFixedRightColumn.value = true;\n }\n if (col.fixed === 'left') {\n isFixedLeftColumn.value = true;\n }\n const key = col.colKey || i;\n const columnInfo: FixedColumnInfo = { col, parent, index: i };\n map.set(key, columnInfo);\n\n if (levelNodes[level]) {\n levelNodes[level].push(columnInfo);\n } else {\n // eslint-disable-next-line no-param-reassign\n levelNodes[level] = [columnInfo];\n }\n }\n return {\n newColumnsMap: map,\n levelNodes,\n };\n }\n\n // 设置固定行位置信息 top/bottom\n const setFixedRowPosition = (\n trList: HTMLCollection,\n initialColumnMap: RowAndColFixedPosition,\n thead: HTMLTableSectionElement,\n tfoot: HTMLTableSectionElement,\n ) => {\n const [fixedTopRows, fixedBottomRows] = fixedRows.value || [];\n const { data, rowKey = 'id' } = props;\n for (let i = 0; i < fixedTopRows; i++) {\n const tr = trList[i] as HTMLElement;\n const rowId = get(data[i], rowKey);\n const thisRowInfo = initialColumnMap.get(rowId) || {};\n const lastRowId = get(data[i - 1], rowKey);\n const lastRowInfo = initialColumnMap.get(lastRowId) || {};\n let defaultBottom = 0;\n if (i === 0) {\n defaultBottom = thead?.getBoundingClientRect().height || 0;\n }\n thisRowInfo.top = (lastRowInfo.top || defaultBottom) + (lastRowInfo.height || 0);\n initialColumnMap.set(rowId, { ...thisRowInfo, height: tr?.getBoundingClientRect().height || 0 });\n }\n for (let i = data.length - 1; i >= data.length - fixedBottomRows; i--) {\n // 当虚拟滚动的时候,尾部固定行并非对应数据的 index,需要进行倒推计算\n const tr = trList[trList.length - (data.length - i)] as HTMLElement;\n const rowId = get(data[i], rowKey);\n const thisRowInfo = initialColumnMap.get(rowId) || {};\n const lastRowId = get(data[i + 1], rowKey);\n const lastRowInfo = initialColumnMap.get(lastRowId) || {};\n let defaultBottom = 0;\n if (i === data.length - 1) {\n defaultBottom = tfoot?.getBoundingClientRect().height || 0;\n }\n thisRowInfo.bottom = (lastRowInfo.bottom || defaultBottom) + (lastRowInfo.height || 0);\n initialColumnMap.set(rowId, { ...thisRowInfo, height: tr?.getBoundingClientRect().height || 0 });\n }\n };\n\n const setFixedLeftPos = (\n columns: BaseTableCol[],\n initialColumnMap: RowAndColFixedPosition,\n parent: FixedColumnInfo = {},\n ) => {\n for (let i = 0, len = columns.length; i < len; i++) {\n const col = columns[i];\n if (col.fixed === 'right') return;\n const colInfo = initialColumnMap.get(col.colKey || i);\n let lastColIndex = i - 1;\n while (lastColIndex >= 0 && columns[lastColIndex].fixed !== 'left') {\n lastColIndex -= 1;\n }\n const lastCol = columns[lastColIndex];\n // 多级表头,使用父元素作为初始基本位置\n const defaultWidth = i === 0 ? parent?.left || 0 : 0;\n const lastColInfo = initialColumnMap.get(lastCol?.colKey || i - 1);\n if (colInfo) {\n colInfo.left = (lastColInfo?.left || defaultWidth) + (lastColInfo?.width || 0);\n }\n }\n };\n\n const setFixedRightPos = (\n columns: BaseTableCol[],\n initialColumnMap: RowAndColFixedPosition,\n parent: FixedColumnInfo = {},\n ) => {\n for (let i = columns.length - 1; i >= 0; i--) {\n const col = columns[i];\n if (col.fixed === 'left') return;\n const colInfo = initialColumnMap.get(col.colKey || i);\n let lastColIndex = i + 1;\n while (lastColIndex < columns.length && columns[lastColIndex].fixed !== 'right') {\n lastColIndex += 1;\n }\n const lastCol = columns[lastColIndex];\n // 多级表头,使用父元素作为初始基本位置\n const defaultWidth = i === columns.length - 1 ? parent?.right || 0 : 0;\n const lastColInfo = initialColumnMap.get(lastCol?.colKey || i + 1);\n if (colInfo) {\n colInfo.right = (lastColInfo?.right || defaultWidth) + (lastColInfo?.width || 0);\n }\n }\n };\n\n // 获取固定列位置信息。先获取节点宽度,再计算\n const setFixedColPosition = (trList: HTMLCollection, initialColumnMap: RowAndColFixedPosition) => {\n if (!trList) return;\n for (let i = 0, len = trList.length; i < len; i++) {\n const thList = trList[i].children;\n for (let j = 0, thLen = thList.length; j < thLen; j++) {\n const th = thList[j] as HTMLElement;\n const colKey = th.dataset.colkey;\n if (!colKey) {\n log.warn('TDesign Table', `${th.innerText} missing colKey. colKey is required for fixed column feature.`);\n }\n const obj = initialColumnMap.get(colKey || j);\n if (obj?.col?.fixed) {\n initialColumnMap.set(colKey, { ...obj, width: th.getBoundingClientRect().width });\n }\n }\n }\n setFixedLeftPos(columns.value, initialColumnMap);\n setFixedRightPos(columns.value, initialColumnMap);\n };\n\n const updateRowAndColFixedPosition = (tableContentElm: HTMLElement, initialColumnMap: RowAndColFixedPosition) => {\n rowAndColFixedPosition.value.clear();\n if (!tableContentElm) return;\n const thead = tableContentElm.querySelector('thead');\n // 处理固定列\n thead && setFixedColPosition(thead.children, initialColumnMap);\n // 处理冻结行\n const tbody = tableContentElm.querySelector('tbody');\n const tfoot = tableContentElm.querySelector('tfoot');\n tbody && setFixedRowPosition(tbody.children, initialColumnMap, thead, tfoot);\n // 更新最终 Map\n rowAndColFixedPosition.value = initialColumnMap;\n };\n\n let shadowLastScrollLeft: number;\n const updateColumnFixedShadow = (target: HTMLElement, extra?: { skipScrollLimit?: boolean }) => {\n if (!isFixedColumn.value || !target) return;\n const { scrollLeft } = target;\n // 只有左右滚动,需要更新固定列阴影\n if (shadowLastScrollLeft === scrollLeft && (!extra || !extra.skipScrollLimit)) return;\n shadowLastScrollLeft = scrollLeft;\n const isShowRight = target.clientWidth + scrollLeft < target.scrollWidth;\n const isShowLeft = scrollLeft > 0;\n\n if (showColumnShadow.left === isShowLeft && showColumnShadow.right === isShowRight) return;\n showColumnShadow.left = isShowLeft && isFixedLeftColumn.value;\n showColumnShadow.right = isShowRight && isFixedRightColumn.value;\n };\n\n // 多级表头场景较为复杂:为了滚动的阴影效果,需要知道哪些列是边界列,左侧固定列的最后一列,右侧固定列的第一列,每一层表头都需要兼顾\n const setIsLastOrFirstFixedCol = (levelNodes: FixedColumnInfo[][]) => {\n for (let t = 0; t < levelNodes.length; t++) {\n const nodes = levelNodes[t];\n for (let i = 0, len = nodes.length; i < len; i++) {\n const colMapInfo = nodes[i];\n const nextColMapInfo = nodes[i + 1];\n const { parent } = colMapInfo;\n const isParentLastLeftFixedCol = !parent || parent?.lastLeftFixedCol;\n if (isParentLastLeftFixedCol && colMapInfo.col.fixed === 'left' && nextColMapInfo?.col.fixed !== 'left') {\n colMapInfo.lastLeftFixedCol = true;\n }\n const lastColMapInfo = nodes[i - 1];\n const isParentFirstRightFixedCol = !parent || parent?.firstRightFixedCol;\n if (isParentFirstRightFixedCol && colMapInfo.col.fixed === 'right' && lastColMapInfo?.col.fixed !== 'right') {\n colMapInfo.firstRightFixedCol = true;\n }\n }\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const updateFixedStatus = () => {\n const { newColumnsMap, levelNodes } = getColumnMap(columns.value);\n setIsLastOrFirstFixedCol(levelNodes);\n const timer = setTimeout(() => {\n if (isFixedColumn.value || fixedRows.value?.length) {\n updateRowAndColFixedPosition(tableContentRef.value, newColumnsMap);\n }\n clearTimeout(timer);\n }, 0);\n return () => {\n clearTimeout(timer);\n };\n };\n\n const setTableElmWidth = (width: number) => {\n if (tableElmWidth.value === width) return;\n tableElmWidth.value = width;\n };\n\n watch(\n [data, columns, bordered, tableLayout, tableContentWidth, isFixedHeader, isWidthOverflow, isFixedColumn, fixedRows],\n updateFixedStatus,\n { immediate: true },\n );\n\n watch(\n [isFixedColumn, columns],\n () => {\n const timer = setTimeout(() => {\n if (isFixedColumn.value) {\n updateColumnFixedShadow(tableContentRef.value);\n }\n clearTimeout(timer);\n }, 0);\n },\n { immediate: true },\n );\n\n const refreshTable: BaseTableInstanceFunctions['refreshTable'] = () => {\n if (isFixedColumn.value || isFixedHeader.value) {\n updateFixedStatus();\n updateColumnFixedShadow(tableContentRef.value, { skipScrollLimit: true });\n }\n };\n\n const setData = (dataSource: TableRowData[]) => {\n data.value = dataSource;\n };\n\n const updateTableAfterColumnResize = () => {\n updateFixedStatus();\n };\n\n return {\n tableWidth,\n tableElmWidth,\n thWidthList,\n isFixedHeader,\n isWidthOverflow,\n tableContentRef,\n isFixedColumn,\n showColumnShadow,\n rowAndColFixedPosition,\n virtualScrollHeaderPos,\n setData,\n refreshTable,\n setTableElmWidth,\n setUseFixedTableElmRef,\n updateColumnFixedShadow,\n updateTableAfterColumnResize,\n };\n}\n"],"names":["getColumnFixedStyles","col","index","rowAndColFixedPosition","tableColFixedClasses","fixedPos","get","colKey","thClasses","_defineProperty","left","fixed","right","lastLeft","lastLeftFixedCol","firstRight","firstRightFixedCol","thStyles","concat","style","classes","getRowFixedStyles","rowId","rowIndex","rowLength","fixedRows","tableRowFixedClasses","virtualTranslateY","length","fixedTop","fixedBottom","firstFixedBottomRow","rowClasses","top","bottom","firstBottom","withoutBorderBottom","rowStyles","useFixed","props","_toRefs","toRefs","columns","tableLayout","tableContentWidth","bordered","data","ref","tableContentRef","isFixedHeader","isWidthOverflow","tableElmRef","Map","showColumnShadow","reactive","virtualScrollHeaderPos","tableWidth","tableElmWidth","thWidthList","isFixedColumn","isFixedRightColumn","isFixedLeftColumn","setUseFixedTableElmRef","val","value","getColumnMap","map","arguments","undefined","levelNodes","level","parent","i","len","includes","key","columnInfo","set","push","newColumnsMap","setFixedRowPosition","trList","initialColumnMap","thead","tfoot","_ref","_ref2","_slicedToArray","fixedTopRows","fixedBottomRows","_props$rowKey","rowKey","tr","thisRowInfo","lastRowId","lastRowInfo","defaultBottom","getBoundingClientRect","height","_objectSpread","setFixedLeftPos","colInfo","lastColIndex","lastCol","defaultWidth","lastColInfo","width","setFixedRightPos","setFixedColPosition","thList","children","j","thLen","_obj$col","th","dataset","colkey","log","warn","innerText","obj","updateRowAndColFixedPosition","tableContentElm","clear","querySelector","tbody","shadowLastScrollLeft","updateColumnFixedShadow","target","extra","scrollLeft","skipScrollLimit","isShowRight","clientWidth","scrollWidth","isShowLeft","setIsLastOrFirstFixedCol","t","nodes","colMapInfo","nextColMapInfo","isParentLastLeftFixedCol","lastColMapInfo","isParentFirstRightFixedCol","updateFixedStatus","_getColumnMap","timer","setTimeout","_fixedRows$value","clearTimeout","setTableElmWidth","watch","immediate","refreshTable","setData","dataSource","updateTableAfterColumnResize"],"mappings":"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"}