UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 16.7 kB
{"version":3,"file":"useRowSelect.mjs","sources":["../../../src/table/hooks/useRowSelect.tsx"],"sourcesContent":["/**\n * 行选中相关功能:单选 + 多选\n */\nimport { computed, toRefs, h, ref, watch } from 'vue';\nimport intersection from 'lodash/intersection';\nimport get from 'lodash/get';\nimport isFunction from 'lodash/isFunction';\nimport useDefaultValue from '../../hooks/useDefaultValue';\nimport {\n PrimaryTableCellParams,\n PrimaryTableCol,\n RowClassNameParams,\n TableRowData,\n TdPrimaryTableProps,\n} from '../type';\nimport { isRowSelectedDisabled } from '../../_common/js/table/utils';\nimport { TableClassName } from './useClassName';\nimport Checkbox from '../../checkbox';\nimport Radio from '../../radio';\nimport log from '../../_common/js/log';\n\nexport default function useRowSelect(\n props: TdPrimaryTableProps,\n tableSelectedClasses: TableClassName['tableSelectedClasses'],\n) {\n const { selectedRowKeys, columns, rowKey, data, pagination, reserveSelectedRowOnPaginate } = toRefs(props);\n const currentPaginateData = ref<TableRowData[]>(data.value);\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 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 const singleSelectCol = columns.value.find((col) => col.type === 'single');\n if (!singleSelectCol || !singleSelectCol.checkProps || !('allowUncheck' in singleSelectCol.checkProps))\n return false;\n return singleSelectCol.checkProps.allowUncheck;\n });\n\n watch(\n [data, pagination, reserveSelectedRowOnPaginate],\n () => {\n if (reserveSelectedRowOnPaginate.value) return;\n const { pageSize, current, defaultPageSize, defaultCurrent } = pagination.value;\n const tPageSize = pageSize || defaultPageSize;\n const tCurrent = current || defaultCurrent;\n currentPaginateData.value = data.value.slice(tPageSize * (tCurrent - 1), tPageSize * tCurrent);\n },\n { immediate: true },\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 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 intersectionKeys.value.length !== 0 &&\n canSelectedRows.value.length !== 0 &&\n 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} />;\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 (selectColumn.value.type === 'multiple') {\n isExisted ? selectedRowKeys.splice(selectedRowIndex, 1) : selectedRowKeys.push(id);\n } else if (selectColumn.value.type === '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 if (selectedColIndex === -1) return;\n const { disabled } = getRowSelectDisabledData({\n row,\n rowIndex: index,\n col: props.columns[selectedColIndex],\n colIndex: selectedColIndex,\n });\n if (disabled) return;\n handleSelectChange(row);\n };\n\n watch(\n () => [[...data.value], 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 return {\n selectedRowClassNames,\n currentPaginateData,\n setTSelectedRowKeys,\n formatToRowSelectColumn,\n onInnerSelectRowClick,\n };\n}\n"],"names":["tSelectedRowKeys","setTSelectedRowKeys","intersection","currentPaginateData","immediate","watch","selectedRowClassNames","isFunction","row","rowIndex","checkProps","get","checked","disabled","onClick","e","_createVNode","_mergeProps","isExisted","log","selectedRowData","currentRowKey","currentRowData","type","width","cell","title","col","colIndex","formatToRowSelectColumn","onInnerSelectRowClick"],"mappings":"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"}