UNPKG

tdesign-vue-next

Version:
1 lines 26.8 kB
{"version":3,"file":"useRowSelect.mjs","sources":["../../../../components/table/hooks/useRowSelect.tsx"],"sourcesContent":["/**\n * 行选中相关功能:单选 + 多选\n */\nimport { computed, toRefs, h, ref, watch } from 'vue';\nimport { get, isFunction, intersection } from 'lodash-es';\n\nimport { useDefaultValue } from '@tdesign/shared-hooks';\nimport {\n ActiveRowActionContext,\n PrimaryTableCellParams,\n PrimaryTableCol,\n RowClassNameParams,\n TableRowData,\n TdPrimaryTableProps,\n} from '../type';\nimport { isRowSelectedDisabled } from '@tdesign/common-js/table/utils';\nimport { getLocalPaginationPageData } from '../utils';\nimport { TableClassName } from './useClassName';\nimport Checkbox from '../../checkbox';\nimport Radio, { RadioProps } from '../../radio';\nimport log from '@tdesign/common-js/log/index';\n\nexport default function useRowSelect(\n props: TdPrimaryTableProps,\n tableSelectedClasses: TableClassName['tableSelectedClasses'],\n) {\n const { selectedRowKeys, columns, rowKey, data, reserveSelectedRowOnPaginate, pagination, disableDataPage } =\n toRefs(props);\n\n const currentPaginateData = ref<TableRowData[]>(\n getLocalPaginationPageData(data.value, pagination.value, disableDataPage.value),\n );\n const selectedRowClassNames = ref();\n const [tSelectedRowKeys, setTSelectedRowKeys] = useDefaultValue(\n selectedRowKeys,\n props.defaultSelectedRowKeys || [],\n props.onSelectChange,\n 'selectedRowKeys',\n );\n const selectedRowDataMap = ref(new Map<string | number, TableRowData>());\n const selectColumn = computed(() => props.columns.find(({ type }) => ['multiple', 'single'].includes(type)));\n const selectionType = computed(() => props.rowSelectionType || selectColumn.value?.type || 'single');\n const canSelectedRows = computed(() => {\n const currentData = reserveSelectedRowOnPaginate.value ? data.value : currentPaginateData.value;\n return currentData.filter((row, rowIndex): boolean => !isDisabled(row, rowIndex));\n });\n // 选中的行,和所有可以选择的行,交集,用于计算 isSelectedAll 和 isIndeterminate\n const intersectionKeys = computed(() =>\n intersection(\n tSelectedRowKeys.value,\n canSelectedRows.value.map((t) => get(t, props.rowKey || 'id')),\n ),\n );\n\n const allowUncheck = computed(() => {\n if (props.rowSelectionAllowUncheck) return true;\n const singleSelectCol = selectionType.value === 'single';\n if (!singleSelectCol || !selectColumn.value?.checkProps || !('allowUncheck' in selectColumn.value?.checkProps))\n return false;\n return selectColumn.value.checkProps.allowUncheck;\n });\n\n watch(\n [data, columns, tSelectedRowKeys, selectColumn, rowKey],\n () => {\n const disabledRowFunc = (p: RowClassNameParams<TableRowData>) =>\n selectColumn.value.disabled(p) ? tableSelectedClasses.disabled : '';\n const disabledRowClass = selectColumn.value?.disabled ? disabledRowFunc : undefined;\n const selected = new Set(tSelectedRowKeys.value);\n const selectedRowClassFunc = ({ row }: RowClassNameParams<TableRowData>) => {\n const rowId = get(row, props.rowKey || 'id');\n return selected.has(rowId) ? tableSelectedClasses.selected : '';\n };\n const selectedRowClass = selected.size ? selectedRowClassFunc : undefined;\n selectedRowClassNames.value = [disabledRowClass, selectedRowClass];\n },\n { immediate: true },\n );\n\n const updateCurrentPaginateData = () => {\n currentPaginateData.value = getLocalPaginationPageData(data.value, pagination.value, disableDataPage.value);\n };\n\n // data / 分页变化时同步当前页数据:本地分页需 slice,远程分页 data 本身即为当前页\n watch([data, () => pagination.value?.current, () => pagination.value?.pageSize, disableDataPage], () => {\n updateCurrentPaginateData();\n });\n\n function isDisabled(row: Record<string, any>, rowIndex: number): boolean {\n return isRowSelectedDisabled(selectColumn.value, row, rowIndex);\n }\n\n function getSelectedHeader() {\n return () => {\n const isIndeterminate =\n intersectionKeys.value.length > 0 && intersectionKeys.value.length < canSelectedRows.value.length;\n const isChecked =\n canSelectedRows.value.length !== 0 && intersectionKeys.value.length === canSelectedRows.value.length;\n return (\n <Checkbox\n checked={isChecked}\n indeterminate={isIndeterminate}\n disabled={!canSelectedRows.value.length}\n onChange={handleSelectAll}\n />\n );\n };\n }\n\n function getRowSelectDisabledData(p: PrimaryTableCellParams<TableRowData>) {\n const { col, row, rowIndex } = p;\n const disabled: boolean = isFunction(col.disabled) ? col.disabled({ row, rowIndex }) : col.disabled;\n const checkProps = isFunction(col.checkProps) ? col.checkProps({ row, rowIndex }) : col.checkProps;\n return {\n disabled: disabled || checkProps?.disabled,\n checkProps,\n };\n }\n\n function renderSelectCell(p: PrimaryTableCellParams<TableRowData>) {\n const { col: column, row = {} } = p;\n const checked = tSelectedRowKeys.value.includes(get(row, props.rowKey || 'id'));\n const { disabled, checkProps } = getRowSelectDisabledData(p);\n const selectBoxProps: object = {\n checked,\n disabled,\n ...checkProps,\n // 兼容处理不同的参数\n onClick: (e: MouseEvent | { e: MouseEvent }) => {\n // 选中行功能中,点击 checkbox/radio 需阻止事件冒泡,避免触发不必要的 onRowClick\n if (typeof e === 'object' && 'e' in e) {\n e.e?.stopPropagation();\n } else {\n e?.stopPropagation();\n }\n },\n onChange: () => handleSelectChange(row),\n };\n if (column.type === 'single') return <Radio {...(selectBoxProps as RadioProps)} />;\n if (column.type === 'multiple') {\n const isIndeterminate = props.indeterminateSelectedRowKeys?.length\n ? props.indeterminateSelectedRowKeys.includes(get(row, props.rowKey))\n : false;\n return <Checkbox indeterminate={isIndeterminate} {...selectBoxProps} />;\n }\n return null;\n }\n\n function handleSelectChange(row: TableRowData = {}) {\n let selectedRowKeys = [...tSelectedRowKeys.value];\n const reRowKey = props.rowKey || 'id';\n const id = get(row, reRowKey);\n const selectedRowIndex = selectedRowKeys.indexOf(id);\n const isExisted = selectedRowIndex !== -1;\n if (selectionType.value === 'multiple') {\n isExisted ? selectedRowKeys.splice(selectedRowIndex, 1) : selectedRowKeys.push(id);\n } else if (selectionType.value === 'single') {\n selectedRowKeys = isExisted && allowUncheck.value ? [] : [id];\n } else {\n log.warn('Table', '`column.type` must be one of `multiple` and `single`');\n return;\n }\n setTSelectedRowKeys(selectedRowKeys, {\n selectedRowData: selectedRowKeys.map((t) => selectedRowDataMap.value.get(t)),\n currentRowKey: id,\n currentRowData: row,\n type: isExisted ? 'uncheck' : 'check',\n });\n }\n\n function handleSelectAll(checked: boolean) {\n const reRowKey = props.rowKey || 'id';\n const canSelectedRowKeys = canSelectedRows.value.map((record) => get(record, reRowKey));\n const disabledSelectedRowKeys = selectedRowKeys.value?.filter((id) => !canSelectedRowKeys.includes(id)) || [];\n const allIds = checked ? [...disabledSelectedRowKeys, ...canSelectedRowKeys] : [...disabledSelectedRowKeys];\n setTSelectedRowKeys(allIds, {\n selectedRowData: checked ? allIds.map((t) => selectedRowDataMap.value.get(t)) : [],\n type: checked ? 'check' : 'uncheck',\n currentRowKey: 'CHECK_ALL_BOX',\n });\n }\n\n function formatToRowSelectColumn(col: PrimaryTableCol) {\n const isSelection = ['multiple', 'single'].includes(col.type);\n if (!isSelection) return col;\n return {\n ...col,\n width: col.width || 64,\n className: [tableSelectedClasses.checkCell, col.className],\n cell: (_: typeof h, p: PrimaryTableCellParams<TableRowData>) => renderSelectCell(p),\n title: col.type === 'multiple' ? getSelectedHeader() : col.title,\n };\n }\n\n const onInnerSelectRowClick: TdPrimaryTableProps['onRowClick'] = ({ row, index }) => {\n const selectedColIndex = props.columns.findIndex((item) => item.colKey === 'row-select');\n let disabled = false;\n if (selectedColIndex !== -1) {\n disabled = getRowSelectDisabledData({\n row,\n rowIndex: index,\n col: props.columns[selectedColIndex],\n colIndex: selectedColIndex,\n })?.disabled;\n }\n if (disabled) return;\n handleSelectChange(row);\n };\n\n watch(\n [data, rowKey],\n () => {\n for (let i = 0, len = data.value.length; i < len; i++) {\n selectedRowDataMap.value.set(get(data.value[i], rowKey.value || 'id'), data.value[i]);\n }\n },\n { immediate: true },\n );\n\n // 是否开启了行选中功能\n const showRowSelect = computed(() => Boolean(selectColumn.value || props.selectOnRowClick || props.selectedRowKeys));\n\n const clearAllSelectedRowKeys = () => {\n setTSelectedRowKeys([], {\n selectedRowData: [],\n currentRowKey: undefined,\n currentRowData: undefined,\n type: 'uncheck',\n });\n };\n\n const handleRowSelectWithAreaSelection = ({ activeRowList, action }: ActiveRowActionContext<TableRowData>) => {\n if (!showRowSelect.value) return;\n\n if (action === 'clear') {\n clearAllSelectedRowKeys();\n return;\n }\n\n if (action === 'select-all') {\n handleSelectAll(true);\n return;\n }\n\n if (selectionType.value === 'single') {\n if (action === 'space-one-selection') {\n handleSelectChange(activeRowList[0].row);\n }\n return;\n }\n\n const validAreaSelection = activeRowList.filter(\n ({ row, rowIndex }) =>\n !getRowSelectDisabledData({\n row,\n rowIndex,\n col: selectColumn.value,\n colIndex: undefined,\n }).disabled,\n );\n if (!validAreaSelection.length) return;\n\n const areaSelectionKeys = validAreaSelection.map(({ row }) => get(row, props.rowKey));\n const intersectionKeys = intersection(tSelectedRowKeys.value, areaSelectionKeys);\n const toCheck = intersectionKeys.length !== areaSelectionKeys.length;\n const clearedKeys = tSelectedRowKeys.value.filter((key) => !areaSelectionKeys.includes(key));\n const newSelectedRowKeys = toCheck ? [...new Set(tSelectedRowKeys.value.concat(areaSelectionKeys))] : clearedKeys;\n\n const currentRowData = action === 'space-one-selection' ? activeRowList[0].row : undefined;\n setTSelectedRowKeys(newSelectedRowKeys, {\n selectedRowData: activeRowList,\n currentRowKey: get(currentRowData, props.rowKey),\n currentRowData,\n type: toCheck ? 'check' : 'uncheck',\n });\n };\n\n return {\n selectColumn,\n showRowSelect,\n selectedRowClassNames,\n currentPaginateData,\n setTSelectedRowKeys,\n formatToRowSelectColumn,\n onInnerSelectRowClick,\n handleRowSelectWithAreaSelection,\n };\n}\n"],"names":["useRowSelect","props","tableSelectedClasses","_toRefs","toRefs","selectedRowKeys","columns","rowKey","data","reserveSelectedRowOnPaginate","pagination","disableDataPage","currentPaginateData","ref","getLocalPaginationPageData","value","selectedRowClassNames","_useDefaultValue","useDefaultValue","defaultSelectedRowKeys","onSelectChange","_useDefaultValue2","_slicedToArray","tSelectedRowKeys","setTSelectedRowKeys","selectedRowDataMap","Map","selectColumn","computed","find","_ref","type","includes","selectionType","_selectColumn$value","rowSelectionType","canSelectedRows","currentData","filter","row","rowIndex","isDisabled","intersectionKeys","intersection","map","t","get","allowUncheck","_selectColumn$value2","_selectColumn$value3","rowSelectionAllowUncheck","singleSelectCol","checkProps","watch","_selectColumn$value4","disabledRowFunc","p","disabled","disabledRowClass","selected","Set","selectedRowClassFunc","_ref2","rowId","has","selectedRowClass","size","immediate","updateCurrentPaginateData","_pagination$value","current","_pagination$value2","pageSize","isRowSelectedDisabled","getSelectedHeader","isIndeterminate","length","isChecked","_createVNode","Checkbox","handleSelectAll","getRowSelectDisabledData","col","isFunction","renderSelectCell","column","_p$row","checked","_getRowSelectDisabled","selectBoxProps","_objectSpread","onClick","e","_typeof","_e$e","stopPropagation","onChange","handleSelectChange","Radio","_props$indeterminateS","indeterminateSelectedRowKeys","_mergeProps","arguments","undefined","_toConsumableArray","reRowKey","id","selectedRowIndex","indexOf","isExisted","splice","push","log","warn","selectedRowData","currentRowKey","currentRowData","_selectedRowKeys$valu","canSelectedRowKeys","record","disabledSelectedRowKeys","allIds","concat","formatToRowSelectColumn","isSelection","width","className","checkCell","cell","_","title","onInnerSelectRowClick","_ref3","index","selectedColIndex","findIndex","item","colKey","_getRowSelectDisabled2","colIndex","i","len","set","showRowSelect","Boolean","selectOnRowClick","clearAllSelectedRowKeys","handleRowSelectWithAreaSelection","_ref4","activeRowList","action","validAreaSelection","_ref5","areaSelectionKeys","_ref6","toCheck","clearedKeys","key","newSelectedRowKeys"],"mappings":"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"}