Commit 2875a97b70974a379ac6ea15665ad7fe0c3ac747

Authored by 无木
1 parent 067753d4

fix(table): `clickToRowSelect` support `disabled` checkbox

修复`clickToRowSelect`会无视行选择框disabled状态的问题
CHANGELOG.zh_CN.md
... ... @@ -8,6 +8,7 @@
8 8 - 修复可编辑单元格某些情况下无法提交的问题
9 9 - 修复`inset`属性不起作用的问题
10 10 - 修复`useTable`与`BasicTable`实例的`reload`方法`await`表现不一致的问题
  11 + - 修复`clickToRowSelect`会无视行选择框 disabled 状态的问题
11 12 - **BasicModal**
12 13 - 修复点击遮罩、按下`Esc`键都不能关闭`Modal`的问题
13 14 - 修复点击关闭按钮、最大化按钮旁边的空白区域也会导致`Modal`关闭的问题
... ...
src/components/Table/src/hooks/useCustomRow.ts
... ... @@ -46,6 +46,14 @@ export function useCustomRow(
46 46  
47 47 const isCheckbox = rowSelection.type === 'checkbox';
48 48 if (isCheckbox) {
  49 + // 找到tr
  50 + const tr: HTMLElement = (e as MouseEvent)
  51 + .composedPath?.()
  52 + .find((dom: HTMLElement) => dom.tagName === 'TR') as HTMLElement;
  53 + if (!tr) return;
  54 + // 找到Checkbox,检查是否为disabled
  55 + const checkBox = tr.querySelector('input[type=checkbox]');
  56 + if (!checkBox || checkBox.hasAttribute('disabled')) return;
49 57 if (!keys.includes(key)) {
50 58 setSelectedRowKeys([...keys, key]);
51 59 return;
... ...
src/views/demo/table/TreeTable.vue
... ... @@ -19,7 +19,17 @@
19 19 const [register, { expandAll, collapseAll }] = useTable({
20 20 title: '树形表格',
21 21 isTreeTable: true,
22   - rowSelection: { type: 'checkbox' },
  22 + rowSelection: {
  23 + type: 'checkbox',
  24 + getCheckboxProps(record: Recordable) {
  25 + // Demo: 第一行(id为0)的选择框禁用
  26 + if (record.id === '0') {
  27 + return { disabled: true };
  28 + } else {
  29 + return { disabled: false };
  30 + }
  31 + },
  32 + },
23 33 titleHelpMessage: '树形组件不能和序列号列同时存在',
24 34 columns: getBasicColumns(),
25 35 dataSource: getTreeTableData(),
... ...