Skip to content

Commit

Permalink
Merge pull request #2085 from zhao-heng-sheng/fix/keyboardToSelectDis…
Browse files Browse the repository at this point in the history
…ableCell

fix: keyboard can select disable cell error #1328
  • Loading branch information
fangsmile authored Jul 17, 2024
2 parents 5d7c3df + 5755137 commit 00af203
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
10 changes: 9 additions & 1 deletion packages/vtable/src/event/listener/container-dom.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { browser } from '../../tools/helper';
import type { EventManager } from '../event';
import { getPixelRatio } from '../../tools/pixel-ratio';
import { endResizeCol, endResizeRow } from './table-group';

import { isCellDisableSelect } from '../../state/select/is-cell-select-highlight';
export function bindContainerDomListener(eventManager: EventManager) {
const table = eventManager.table;
const stateManager = table.stateManager;
Expand Down Expand Up @@ -107,6 +107,10 @@ export function bindContainerDomListener(eventManager: EventManager) {
targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col + 1));
}
}
// 如果是不支持选中的单元格 则退出
if (isCellDisableSelect(table, targetCol, targetRow)) {
return;
}
table.selectCell(targetCol, targetRow, e.shiftKey);
if (
(table.options.keyboardOptions?.moveEditCellOnArrowKeys ?? false) &&
Expand Down Expand Up @@ -162,6 +166,10 @@ export function bindContainerDomListener(eventManager: EventManager) {
targetRow = stateManager.select.cellPos.row;
targetCol = stateManager.select.cellPos.col + 1;
}
// 如果是不支持选中的单元格 则退出
if (isCellDisableSelect(table, targetCol, targetRow)) {
return;
}
table.selectCell(targetCol, targetRow);
if ((table as ListTableAPI).editorManager?.editingEditor) {
(table as ListTableAPI).editorManager.completeEdit();
Expand Down
12 changes: 12 additions & 0 deletions packages/vtable/src/state/select/is-cell-select-highlight.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,3 +113,15 @@ export function isCellSelected(state: StateManager, col: number, row: number, ce
}
return selectMode;
}

export function isCellDisableSelect(table: BaseTableAPI, col: number, row: number) {
const columnDefine = table.getBodyColumnDefine(col, row);
const isHeader = table.isHeader(col, row);
if ((columnDefine as ColumnDefine)?.disableSelect && !isHeader) {
return true;
}
if (isHeader && (columnDefine as ColumnDefine)?.disableHeaderSelect) {
return true;
}
return false;
}

0 comments on commit 00af203

Please sign in to comment.