UNPKG

tdesign-vue-next

Version:
1 lines 19.9 kB
{"version":3,"file":"useRowHighlight.mjs","sources":["../../../../components/table/hooks/useRowHighlight.ts"],"sourcesContent":["import { ref, Ref, toRefs } from 'vue';\nimport { get } from 'lodash-es';\nimport { useDefaultValue } from '@tdesign/shared-hooks';\nimport { BaseTableProps } from '../types';\nimport { RowEventContext, TableRowData } from '../type';\nimport { on, off } from '@tdesign/shared-utils';\nimport {\n ARROW_DOWN_REG,\n ARROW_UP_REG,\n ESCAPE_REG,\n SPACE_REG,\n SHIFT_REG,\n CLEAR_REG,\n ALL_REG,\n} from '@tdesign/common-js/common';\n\n/**\n * 行高亮功能,支持键盘操作\n */\nexport function useRowHighlight(props: BaseTableProps, tableRef: Ref<HTMLDivElement>) {\n const { data, activeRowType, activeRowKeys, defaultActiveRowKeys, disableSpaceInactiveRow } = toRefs(props);\n const currentOperationRowIndex = ref(-1);\n const isShiftPressed = ref(false);\n const shiftSelectionState = ref(false);\n const areaSelectionStartIndex = ref(-1);\n\n const [tActiveRow, setTActiveRow] = useDefaultValue(\n activeRowKeys,\n defaultActiveRowKeys.value,\n props.onActiveChange,\n 'activeRowKeys',\n );\n\n const handleInactive = (ctx: RowEventContext<TableRowData>) => {\n const { row, index } = ctx;\n const rowValue = get(row, props.rowKey);\n if (activeRowType.value === 'single') {\n const newActiveRowKeys = tActiveRow.value.length > 1 ? [rowValue] : [];\n setTActiveRow(newActiveRowKeys, {\n type: 'inactive',\n activeRowList: [{ row, rowIndex: index }],\n currentRowData: row,\n });\n } else if (activeRowType.value === 'multiple') {\n const newActiveRowKeys = tActiveRow.value.filter((t) => t !== rowValue);\n const activeRowList: { row: TableRowData; rowIndex: number }[] = [];\n for (let i = 0, len = data.value.length; i < len; i++) {\n const row = data.value[i];\n if (newActiveRowKeys.includes(get(row, props.rowKey))) {\n activeRowList.push({ row, rowIndex: i });\n }\n }\n setTActiveRow(newActiveRowKeys, {\n type: 'inactive',\n activeRowList,\n currentRowData: row,\n });\n }\n };\n\n const handleActive = (ctx: RowEventContext<TableRowData>) => {\n const { row } = ctx;\n const rowValue = get(row, props.rowKey);\n if (activeRowType.value === 'single') {\n setTActiveRow([rowValue], {\n activeRowList: [{ row, rowIndex: ctx.index }],\n currentRowData: row,\n type: 'active',\n });\n } else {\n const newActiveRowKeys = tActiveRow.value.concat(rowValue);\n const activeRowList: { row: TableRowData; rowIndex: number }[] = [];\n for (let i = 0, len = data.value.length; i < len; i++) {\n const row = data.value[i];\n if (newActiveRowKeys.includes(get(row, props.rowKey))) {\n activeRowList.push({ row, rowIndex: i });\n }\n }\n setTActiveRow(newActiveRowKeys, {\n activeRowList,\n currentRowData: row,\n type: 'active',\n });\n }\n };\n\n const handleShiftActive = (ctx: RowEventContext<TableRowData>) => {\n document.getSelection().removeAllRanges();\n const { row } = ctx;\n const currentIndex = currentOperationRowIndex.value;\n const startIndex = Math.min(areaSelectionStartIndex.value, currentIndex);\n const endIndex = Math.max(areaSelectionStartIndex.value, currentIndex);\n const newActiveRowData: { row: TableRowData; rowIndex: number }[] = [];\n for (let i = startIndex; i <= endIndex; i++) {\n newActiveRowData.push({ row: data.value[i], rowIndex: i });\n }\n const newActiveRowKeys = newActiveRowData.map((item) => get(item.row, props.rowKey));\n setTActiveRow(newActiveRowKeys, {\n activeRowList: newActiveRowData,\n type: 'active',\n currentRowData: row,\n });\n };\n\n const getActiveRowList = () => {\n const list: { row: TableRowData; rowIndex: number }[] = [];\n for (let i = 0, len = data.value.length; i < len; i++) {\n const row = data.value[i];\n const rowValue = get(row, props.rowKey);\n if (tActiveRow.value.includes(rowValue)) {\n list.push({ row, rowIndex: i });\n }\n }\n return list;\n };\n\n const onHighlightRow = (ctx: RowEventContext<TableRowData>, extra?: { action?: 'active' | 'inactive' }) => {\n if (!activeRowType.value) return;\n const { row, index } = ctx;\n const rowValue = get(row, props.rowKey);\n // 如果是连续选中\n if (isShiftPressed.value) {\n currentOperationRowIndex.value = index;\n handleShiftActive(ctx);\n shiftSelectionState.value = true;\n } else if (tActiveRow.value.includes(rowValue) && extra?.action !== 'active') {\n if (!disableSpaceInactiveRow.value) {\n // 如果已经高亮,则取消高亮\n handleInactive(ctx);\n currentOperationRowIndex.value = index;\n }\n } else {\n // 如果没有高亮,则设置高亮\n handleActive(ctx);\n currentOperationRowIndex.value = index;\n }\n };\n\n const clearActive = () => {\n setTActiveRow([], {\n activeRowList: [],\n currentRowData: undefined,\n type: 'inactive',\n });\n props.onActiveRowAction?.({ action: 'clear', activeRowList: [] });\n currentOperationRowIndex.value = -1;\n };\n\n const setAllActive = () => {\n const activeKeys = data.value.map((item) => get(item, props.rowKey));\n const activeRowList = data.value.map((row, rowIndex) => ({ row, rowIndex }));\n setTActiveRow(activeKeys, {\n activeRowList,\n currentRowData: undefined,\n type: 'active',\n });\n props.onActiveRowAction?.({ action: 'select-all', activeRowList });\n currentOperationRowIndex.value = -1;\n };\n\n const clearShiftAreaSelection = () => {\n shiftSelectionState.value = false;\n };\n\n const keyboardDownListener = (e: KeyboardEvent) => {\n const code = e.code || e.key?.trim();\n\n if (ARROW_DOWN_REG.test(code)) {\n e.preventDefault();\n const index = Math.min(data.value.length - 1, currentOperationRowIndex.value + 1);\n if (activeRowType.value === 'single') {\n onHighlightRow({ row: data.value[index], index, e }, { action: 'active' });\n } else {\n currentOperationRowIndex.value = index;\n }\n } else if (ARROW_UP_REG.test(code)) {\n e.preventDefault();\n const index = Math.max(0, currentOperationRowIndex.value - 1);\n if (activeRowType.value === 'single') {\n onHighlightRow({ row: data.value[index], index, e }, { action: 'active' });\n } else {\n currentOperationRowIndex.value = index;\n }\n } else if (SPACE_REG.test(code)) {\n e.preventDefault();\n // keydown space to active or inactive\n const index = currentOperationRowIndex.value;\n // area selection can not cancel active with keydown space\n if (shiftSelectionState.value) {\n props.onActiveRowAction?.({\n action: 'shift-area-selection',\n activeRowList: getActiveRowList(),\n });\n } else if (!disableSpaceInactiveRow.value) {\n onHighlightRow({ row: data.value[index], index, e });\n } else {\n props.onActiveRowAction?.({\n action: 'space-one-selection',\n activeRowList: getActiveRowList(),\n });\n }\n } else if (SHIFT_REG.test(code)) {\n // shift 连续选中开始\n isShiftPressed.value = true;\n areaSelectionStartIndex.value = currentOperationRowIndex.value;\n } else if (ESCAPE_REG.test(code) || CLEAR_REG.test(code)) {\n // 清空\n clearActive();\n clearShiftAreaSelection();\n } else if (ALL_REG.test(code)) {\n // 全选\n if (activeRowType.value === 'multiple') {\n setAllActive();\n }\n }\n\n if (!SPACE_REG.test(code)) {\n clearShiftAreaSelection();\n }\n };\n\n const keyboardUpListener = (e: KeyboardEvent) => {\n const code = e.code || e.key?.trim();\n if (SHIFT_REG.test(code)) {\n isShiftPressed.value = false;\n }\n };\n\n const addHighlightKeyboardListener = () => {\n on(tableRef.value, 'keydown', keyboardDownListener);\n on(tableRef.value, 'keyup', keyboardUpListener);\n };\n\n const removeHighlightKeyboardListener = () => {\n off(tableRef.value, 'keydown', keyboardDownListener);\n off(tableRef.value, 'keyup', keyboardUpListener);\n };\n\n return {\n tActiveRow,\n onHighlightRow,\n addHighlightKeyboardListener,\n removeHighlightKeyboardListener,\n };\n}\n\nexport default useRowHighlight;\n"],"names":["useRowHighlight","props","tableRef","_toRefs","toRefs","data","activeRowType","activeRowKeys","defaultActiveRowKeys","disableSpaceInactiveRow","currentOperationRowIndex","ref","isShiftPressed","shiftSelectionState","areaSelectionStartIndex","_useDefaultValue","useDefaultValue","value","onActiveChange","_useDefaultValue2","_slicedToArray","tActiveRow","setTActiveRow","handleInactive","ctx","row","index","rowValue","get","rowKey","newActiveRowKeys","length","type","activeRowList","rowIndex","currentRowData","filter","t","i","len","includes","push","handleActive","concat","handleShiftActive","document","getSelection","removeAllRanges","currentIndex","startIndex","Math","min","endIndex","max","newActiveRowData","map","item","getActiveRowList","list","onHighlightRow","extra","action","clearActive","_props$onActiveRowAct","onActiveRowAction","call","setAllActive","_props$onActiveRowAct2","activeKeys","clearShiftAreaSelection","keyboardDownListener","e","_e$key","code","key","trim","ARROW_DOWN_REG","test","preventDefault","ARROW_UP_REG","SPACE_REG","_props$onActiveRowAct3","_props$onActiveRowAct4","SHIFT_REG","ESCAPE_REG","CLEAR_REG","ALL_REG","keyboardUpListener","_e$key2","addHighlightKeyboardListener","on","removeHighlightKeyboardListener","off"],"mappings":"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"}