From ff82bfcc70d063724101cafa604f15412e83c67d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Tom=C3=A1=C5=A1ko?= Date: Fri, 28 Jul 2023 00:01:23 +0200 Subject: [PATCH] FIX: Editor remains mounted when scrolling --- .../DataView/TableView/onFieldKeyDown.ts | 1 + .../entities/TablePanelView/TablePanelView.tsx | 15 +++++++++++++++ .../TablePanelView/types/ITablePanelView.ts | 2 ++ 3 files changed, 18 insertions(+) diff --git a/frontend-html/src/model/actions-ui/DataView/TableView/onFieldKeyDown.ts b/frontend-html/src/model/actions-ui/DataView/TableView/onFieldKeyDown.ts index 9c8f0d5efc..89dca26a3b 100644 --- a/frontend-html/src/model/actions-ui/DataView/TableView/onFieldKeyDown.ts +++ b/frontend-html/src/model/actions-ui/DataView/TableView/onFieldKeyDown.ts @@ -40,6 +40,7 @@ export function onFieldKeyDown(ctx: any) { try { const dataView = getDataView(ctx); const tablePanelView = getTablePanelView(ctx); + tablePanelView.handleEditorKeyDown(event); switch (event.key) { case "Tab": { if (isGoingToChangeRow(event)) { diff --git a/frontend-html/src/model/entities/TablePanelView/TablePanelView.tsx b/frontend-html/src/model/entities/TablePanelView/TablePanelView.tsx index f18c548fb7..aec9182b1b 100644 --- a/frontend-html/src/model/entities/TablePanelView/TablePanelView.tsx +++ b/frontend-html/src/model/entities/TablePanelView/TablePanelView.tsx @@ -276,11 +276,26 @@ export class TablePanelView implements ITablePanelView { const _this = this; flow(function*() { if (_this.isEditing) { + if(!_this.isScrollByKeyboard) { + _this.setEditing(false); + } yield*flushCurrentRowData(_this)(); } })(); } + hScrollDead: any; + isScrollByKeyboard = false; + @action.bound handleEditorKeyDown(event: any) { + if (event.key === "Tab" || event.key === "Enter") { + clearTimeout(this.hScrollDead); + this.isScrollByKeyboard = true; + this.hScrollDead = setTimeout(() => { + this.isScrollByKeyboard = false; + }); + } + } + dontHandleNextScroll() { this.handleScrolling = false; } diff --git a/frontend-html/src/model/entities/TablePanelView/types/ITablePanelView.ts b/frontend-html/src/model/entities/TablePanelView/types/ITablePanelView.ts index a54b233d86..962bffe17b 100644 --- a/frontend-html/src/model/entities/TablePanelView/types/ITablePanelView.ts +++ b/frontend-html/src/model/entities/TablePanelView/types/ITablePanelView.ts @@ -115,6 +115,8 @@ export interface ITablePanelView extends ITablePanelViewData { setCellRectangle(rowId: number, columnId: number, rectangle: ICellRectangle): void; + handleEditorKeyDown(event: any): void; + clearCurrentCellEditData(): void; parent?: any;