@visactor/vtable-plugins 1.20.2 → 1.20.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/excel-edit-cell-keyboard.d.ts +15 -0
- package/cjs/excel-edit-cell-keyboard.js +30 -13
- package/cjs/excel-edit-cell-keyboard.js.map +1 -1
- package/cjs/table-export/excel/index.js +1 -1
- package/cjs/table-export/excel/style.js +2 -2
- package/cjs/table-export/util/promise.js +1 -1
- package/cjs/table-export/util/type.js +1 -1
- package/dist/vtable-plugins.js +63 -37
- package/dist/vtable-plugins.min.js +2 -2
- package/es/excel-edit-cell-keyboard.d.ts +15 -0
- package/es/excel-edit-cell-keyboard.js +29 -12
- package/es/excel-edit-cell-keyboard.js.map +1 -1
- package/es/table-export/excel/index.js +1 -1
- package/es/table-export/excel/style.js +1 -1
- package/es/table-export/util/promise.js +1 -1
- package/es/table-export/util/type.js +1 -1
- package/package.json +7 -7
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import type { ListTable, BaseTableAPI, pluginsDefinition } from '@visactor/vtable';
|
|
2
2
|
import type { TableEvents } from '@visactor/vtable/src/core/TABLE_EVENT_TYPE';
|
|
3
3
|
import type { EventArg } from './types';
|
|
4
|
+
export declare enum ExcelEditCellKeyboardResponse {
|
|
5
|
+
ENTER = "enter",
|
|
6
|
+
TAB = "tab",
|
|
7
|
+
ARROW_LEFT = "arrowLeft",
|
|
8
|
+
ARROW_RIGHT = "arrowRight",
|
|
9
|
+
ARROW_DOWN = "arrowDown",
|
|
10
|
+
ARROW_UP = "arrowUp",
|
|
11
|
+
DELETE = "delete",
|
|
12
|
+
BACKSPACE = "backspace"
|
|
13
|
+
}
|
|
4
14
|
export type IExcelEditCellKeyboardPluginOptions = {
|
|
5
15
|
id?: string;
|
|
16
|
+
responseKeyboard?: ExcelEditCellKeyboardResponse[];
|
|
6
17
|
};
|
|
7
18
|
export declare class ExcelEditCellKeyboardPlugin implements pluginsDefinition.IVTablePlugin {
|
|
8
19
|
id: string;
|
|
@@ -10,10 +21,14 @@ export declare class ExcelEditCellKeyboardPlugin implements pluginsDefinition.IV
|
|
|
10
21
|
runTime: "initialized"[];
|
|
11
22
|
table: ListTable;
|
|
12
23
|
pluginOptions: IExcelEditCellKeyboardPluginOptions;
|
|
24
|
+
responseKeyboard: ExcelEditCellKeyboardResponse[];
|
|
13
25
|
constructor(pluginOptions?: IExcelEditCellKeyboardPluginOptions);
|
|
14
26
|
run(...args: [EventArg, TableEvents[keyof TableEvents] | TableEvents[keyof TableEvents][], BaseTableAPI]): void;
|
|
15
27
|
bindEvent(): void;
|
|
16
28
|
handleKeyDown(event: KeyboardEvent): void;
|
|
17
29
|
isExcelShortcutKey(event: KeyboardEvent): boolean;
|
|
30
|
+
setResponseKeyboard(responseKeyboard: ExcelEditCellKeyboardResponse[]): void;
|
|
31
|
+
deleteResponseKeyboard(responseKeyboard: ExcelEditCellKeyboardResponse[]): void;
|
|
32
|
+
addResponseKeyboard(responseKeyboard: ExcelEditCellKeyboardResponse[]): void;
|
|
18
33
|
release(): void;
|
|
19
34
|
}
|
|
@@ -2,16 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.ExcelEditCellKeyboardPlugin = void 0;
|
|
5
|
+
}), exports.ExcelEditCellKeyboardPlugin = exports.ExcelEditCellKeyboardResponse = void 0;
|
|
6
6
|
|
|
7
7
|
const vtable_1 = require("@visactor/vtable");
|
|
8
8
|
|
|
9
|
+
var ExcelEditCellKeyboardResponse;
|
|
10
|
+
|
|
11
|
+
!function(ExcelEditCellKeyboardResponse) {
|
|
12
|
+
ExcelEditCellKeyboardResponse.ENTER = "enter", ExcelEditCellKeyboardResponse.TAB = "tab",
|
|
13
|
+
ExcelEditCellKeyboardResponse.ARROW_LEFT = "arrowLeft", ExcelEditCellKeyboardResponse.ARROW_RIGHT = "arrowRight",
|
|
14
|
+
ExcelEditCellKeyboardResponse.ARROW_DOWN = "arrowDown", ExcelEditCellKeyboardResponse.ARROW_UP = "arrowUp",
|
|
15
|
+
ExcelEditCellKeyboardResponse.DELETE = "delete", ExcelEditCellKeyboardResponse.BACKSPACE = "backspace";
|
|
16
|
+
}(ExcelEditCellKeyboardResponse = exports.ExcelEditCellKeyboardResponse || (exports.ExcelEditCellKeyboardResponse = {}));
|
|
17
|
+
|
|
9
18
|
class ExcelEditCellKeyboardPlugin {
|
|
10
19
|
constructor(pluginOptions) {
|
|
11
|
-
var _a;
|
|
20
|
+
var _a, _b;
|
|
12
21
|
this.id = "excel-edit-cell-keyboard", this.name = "Excel Edit Cell Keyboard", this.runTime = [ vtable_1.TABLE_EVENT_TYPE.INITIALIZED ],
|
|
13
22
|
this.id = null !== (_a = null == pluginOptions ? void 0 : pluginOptions.id) && void 0 !== _a ? _a : this.id,
|
|
14
|
-
this.pluginOptions = pluginOptions, this.
|
|
23
|
+
this.pluginOptions = pluginOptions, this.responseKeyboard = null !== (_b = null == pluginOptions ? void 0 : pluginOptions.responseKeyboard) && void 0 !== _b ? _b : [ ExcelEditCellKeyboardResponse.ENTER, ExcelEditCellKeyboardResponse.TAB, ExcelEditCellKeyboardResponse.ARROW_LEFT, ExcelEditCellKeyboardResponse.ARROW_RIGHT, ExcelEditCellKeyboardResponse.ARROW_DOWN, ExcelEditCellKeyboardResponse.ARROW_UP, ExcelEditCellKeyboardResponse.DELETE, ExcelEditCellKeyboardResponse.BACKSPACE ],
|
|
24
|
+
this.bindEvent();
|
|
15
25
|
}
|
|
16
26
|
run(...args) {
|
|
17
27
|
const table = args[2];
|
|
@@ -21,27 +31,34 @@ class ExcelEditCellKeyboardPlugin {
|
|
|
21
31
|
document.addEventListener("keydown", this.handleKeyDown.bind(this), !0);
|
|
22
32
|
}
|
|
23
33
|
handleKeyDown(event) {
|
|
24
|
-
if (this.table.editorManager) if ("keydown" === this.table.editorManager.beginTriggerEditCellMode) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
event.stopPropagation(), event.preventDefault());
|
|
29
|
-
}
|
|
34
|
+
if (this.table.editorManager && this.isExcelShortcutKey(event)) if (this.table.editorManager.editingEditor && "keydown" === this.table.editorManager.beginTriggerEditCellMode) {
|
|
35
|
+
const {col: col, row: row} = this.table.editorManager.editCell;
|
|
36
|
+
this.table.editorManager.completeEdit(), this.table.getElement().focus(), event.shiftKey || event.ctrlKey || event.metaKey || (event.key === ExcelEditCellKeyboardResponse.ENTER ? this.table.selectCell(col, row + 1) : event.key === ExcelEditCellKeyboardResponse.TAB ? this.table.selectCell(col + 1, row) : event.key === ExcelEditCellKeyboardResponse.ARROW_LEFT ? this.table.selectCell(col - 1, row) : event.key === ExcelEditCellKeyboardResponse.ARROW_RIGHT ? this.table.selectCell(col + 1, row) : event.key === ExcelEditCellKeyboardResponse.ARROW_DOWN ? this.table.selectCell(col, row + 1) : event.key === ExcelEditCellKeyboardResponse.ARROW_UP && this.table.selectCell(col, row - 1),
|
|
37
|
+
event.stopPropagation(), event.preventDefault());
|
|
30
38
|
} else {
|
|
31
39
|
const {col: col, row: row} = this.table.stateManager.select.cellPos;
|
|
32
|
-
if (!this.table.editorManager.editingEditor ||
|
|
33
|
-
if (!this.table.editorManager.editingEditor && (
|
|
40
|
+
if (!this.table.editorManager.editingEditor || event.key !== ExcelEditCellKeyboardResponse.ENTER && event.key !== ExcelEditCellKeyboardResponse.TAB) {
|
|
41
|
+
if (!this.table.editorManager.editingEditor && (event.key === ExcelEditCellKeyboardResponse.DELETE || event.key === ExcelEditCellKeyboardResponse.BACKSPACE)) {
|
|
34
42
|
const selectCells = this.table.getSelectedCellInfos();
|
|
35
43
|
(null == selectCells ? void 0 : selectCells.length) > 0 && deleteSelectRange(selectCells, this.table),
|
|
36
44
|
event.stopPropagation(), event.preventDefault();
|
|
37
45
|
}
|
|
38
46
|
} else this.table.editorManager.completeEdit(), this.table.getElement().focus(),
|
|
39
|
-
|
|
47
|
+
event.key === ExcelEditCellKeyboardResponse.ENTER ? this.table.selectCell(col, row + 1) : event.key === ExcelEditCellKeyboardResponse.TAB && this.table.selectCell(col + 1, row),
|
|
40
48
|
event.stopPropagation(), event.preventDefault();
|
|
41
49
|
}
|
|
42
50
|
}
|
|
43
51
|
isExcelShortcutKey(event) {
|
|
44
|
-
return
|
|
52
|
+
return this.responseKeyboard.includes(event.key);
|
|
53
|
+
}
|
|
54
|
+
setResponseKeyboard(responseKeyboard) {
|
|
55
|
+
this.responseKeyboard = responseKeyboard;
|
|
56
|
+
}
|
|
57
|
+
deleteResponseKeyboard(responseKeyboard) {
|
|
58
|
+
this.responseKeyboard = this.responseKeyboard.filter((key => !responseKeyboard.includes(key)));
|
|
59
|
+
}
|
|
60
|
+
addResponseKeyboard(responseKeyboard) {
|
|
61
|
+
this.responseKeyboard = [ ...this.responseKeyboard, ...responseKeyboard ];
|
|
45
62
|
}
|
|
46
63
|
release() {
|
|
47
64
|
document.removeEventListener("keydown", this.handleKeyDown, !0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/excel-edit-cell-keyboard.ts"],"names":[],"mappings":";;;AACA,6CAAoD;AAUpD,MAAa,2BAA2B;IAMtC,YAAY,aAAmD;;QAL/D,OAAE,GAAG,0BAA0B,CAAC;QAChC,SAAI,GAAG,0BAA0B,CAAC;QAClC,YAAO,GAAG,CAAC,yBAAgB,CAAC,WAAW,CAAC,CAAC;QAIvC,IAAI,CAAC,EAAE,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,mCAAI,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IACD,GAAG,CAAC,GAAG,IAAiG;QACtG,MAAM,KAAK,GAAiB,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,KAAkB,CAAC;IAClC,CAAC;IAED,SAAS;QAEP,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAc5E,CAAC;IACD,aAAa,CAAC,KAAoB;QAChC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAE5B,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,wBAAwB,KAAK,SAAS,EAAE;gBACnE,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;oBAC5E,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC;oBACvD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;oBACxC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;oBAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;wBAEvD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;4BACzB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;yBACrC;6BAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;4BAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;yBACrC;6BAAM,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;4BACpC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;yBACrC;6BAAM,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE;4BACrC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;yBACrC;6BAAM,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;4BACpC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;yBACrC;6BAAM,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;4BAClC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;yBACrC;wBAED,KAAK,CAAC,eAAe,EAAE,CAAC;wBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;qBACxB;iBACF;aACF;iBAAM;gBACL,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC5D,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE;oBAC5F,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;oBACxC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;oBAChC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;wBACzB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;qBACrC;yBAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;wBAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;qBACrC;oBAED,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;iBACxB;qBAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,EAAE;oBAE3G,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;oBACtD,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,IAAG,CAAC,EAAE;wBAE3B,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC5C;oBAED,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;iBACxB;aACF;SACF;IACH,CAAC;IAED,kBAAkB,CAAC,KAAoB;QACrC,OAAO,CACL,KAAK,CAAC,GAAG,KAAK,OAAO;YACrB,KAAK,CAAC,GAAG,KAAK,KAAK;YACnB,KAAK,CAAC,GAAG,KAAK,WAAW;YACzB,KAAK,CAAC,GAAG,KAAK,YAAY;YAC1B,KAAK,CAAC,GAAG,KAAK,WAAW;YACzB,KAAK,CAAC,GAAG,KAAK,SAAS,CACxB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;CACF;AAvGD,kEAuGC;AAED,SAAS,iBAAiB,CAAC,WAA+B,EAAE,aAAwB;IAClF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,aAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SACjF;KACF;AACH,CAAC","file":"excel-edit-cell-keyboard.js","sourcesContent":["import type { ListTable, BaseTableAPI, TYPES, pluginsDefinition } from '@visactor/vtable';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type { TableEvents } from '@visactor/vtable/src/core/TABLE_EVENT_TYPE';\nimport type { EventArg } from './types';\n//备用 插件配置项 目前感觉都走默认逻辑就行\nexport type IExcelEditCellKeyboardPluginOptions = {\n id?: string;\n // 是否响应删除\n // enableDeleteKey?: boolean;\n};\n\nexport class ExcelEditCellKeyboardPlugin implements pluginsDefinition.IVTablePlugin {\n id = `excel-edit-cell-keyboard`;\n name = 'Excel Edit Cell Keyboard';\n runTime = [TABLE_EVENT_TYPE.INITIALIZED];\n table: ListTable;\n pluginOptions: IExcelEditCellKeyboardPluginOptions;\n constructor(pluginOptions?: IExcelEditCellKeyboardPluginOptions) {\n this.id = pluginOptions?.id ?? this.id;\n this.pluginOptions = pluginOptions;\n\n this.bindEvent();\n }\n run(...args: [EventArg, TableEvents[keyof TableEvents] | TableEvents[keyof TableEvents][], BaseTableAPI]) {\n const table: BaseTableAPI = args[2];\n this.table = table as ListTable;\n }\n\n bindEvent() {\n //监听document全局的keydown事件 捕获阶段监听 可以及时阻止事件传播和默认行为\n document.addEventListener('keydown', this.handleKeyDown.bind(this), true);\n // this.table.on('selected_cell', () => {\n // this.updateHighlight();\n // });\n\n // this.table.on('selected_clear', () => {\n // this.clearHighlight();\n // });\n\n // this.table.on('mousemove_table', () => {\n // if (this.table.stateManager.select.selecting) {\n // this.updateHighlight();\n // }\n // });\n }\n handleKeyDown(event: KeyboardEvent) {\n if (this.table.editorManager) {\n //判断是键盘触发编辑单元格的情况下,那么在编辑状态中切换方向需要选中下一个继续编辑\n if (this.table.editorManager.beginTriggerEditCellMode === 'keydown') {\n if (this.table.editorManager.editingEditor && this.isExcelShortcutKey(event)) {\n const { col, row } = this.table.editorManager.editCell;\n this.table.editorManager.completeEdit();\n this.table.getElement().focus();\n if (!event.shiftKey && !event.ctrlKey && !event.metaKey) {\n //有这些配合键,则不进行选中下一个单元格的行为 执行vtable内部逻辑\n if (event.key === 'Enter') {\n this.table.selectCell(col, row + 1);\n } else if (event.key === 'Tab') {\n this.table.selectCell(col + 1, row);\n } else if (event.key === 'ArrowLeft') {\n this.table.selectCell(col - 1, row);\n } else if (event.key === 'ArrowRight') {\n this.table.selectCell(col + 1, row);\n } else if (event.key === 'ArrowDown') {\n this.table.selectCell(col, row + 1);\n } else if (event.key === 'ArrowUp') {\n this.table.selectCell(col, row - 1);\n }\n // 阻止事件传播和默认行为\n event.stopPropagation();\n event.preventDefault();\n }\n }\n } else {\n const { col, row } = this.table.stateManager.select.cellPos;\n if (this.table.editorManager.editingEditor && (event.key === 'Enter' || event.key === 'Tab')) {\n this.table.editorManager.completeEdit();\n this.table.getElement().focus();\n if (event.key === 'Enter') {\n this.table.selectCell(col, row + 1);\n } else if (event.key === 'Tab') {\n this.table.selectCell(col + 1, row);\n }\n // 阻止事件传播和默认行为\n event.stopPropagation();\n event.preventDefault();\n } else if (!this.table.editorManager.editingEditor && (event.key === 'Delete' || event.key === 'Backspace')) {\n //响应删除键,删除\n const selectCells = this.table.getSelectedCellInfos();\n if (selectCells?.length > 0) {\n // 如果选中的是范围,则删除范围内的所有单元格\n deleteSelectRange(selectCells, this.table);\n }\n // 阻止事件传播和默认行为\n event.stopPropagation();\n event.preventDefault();\n }\n }\n }\n }\n // 判断event的keyCode是否是excel的快捷键\n isExcelShortcutKey(event: KeyboardEvent) {\n return (\n event.key === 'Enter' ||\n event.key === 'Tab' ||\n event.key === 'ArrowLeft' ||\n event.key === 'ArrowRight' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n );\n }\n release() {\n document.removeEventListener('keydown', this.handleKeyDown, true);\n }\n}\n//将选中单元格的值设置为空\nfunction deleteSelectRange(selectCells: TYPES.CellInfo[][], tableInstance: ListTable) {\n for (let i = 0; i < selectCells.length; i++) {\n for (let j = 0; j < selectCells[i].length; j++) {\n tableInstance.changeCellValue(selectCells[i][j].col, selectCells[i][j].row, '');\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/excel-edit-cell-keyboard.ts"],"names":[],"mappings":"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","file":"excel-edit-cell-keyboard.js","sourcesContent":["import type { ListTable, BaseTableAPI, TYPES, pluginsDefinition } from '@visactor/vtable';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type { TableEvents } from '@visactor/vtable/src/core/TABLE_EVENT_TYPE';\nimport type { EventArg } from './types';\nexport enum ExcelEditCellKeyboardResponse {\n ENTER = 'enter',\n TAB = 'tab',\n ARROW_LEFT = 'arrowLeft',\n ARROW_RIGHT = 'arrowRight',\n ARROW_DOWN = 'arrowDown',\n ARROW_UP = 'arrowUp',\n DELETE = 'delete',\n BACKSPACE = 'backspace'\n}\n//备用 插件配置项 目前感觉都走默认逻辑就行\nexport type IExcelEditCellKeyboardPluginOptions = {\n id?: string;\n responseKeyboard?: ExcelEditCellKeyboardResponse[];\n // 是否响应删除\n // enableDeleteKey?: boolean;\n};\n\nexport class ExcelEditCellKeyboardPlugin implements pluginsDefinition.IVTablePlugin {\n id = `excel-edit-cell-keyboard`;\n name = 'Excel Edit Cell Keyboard';\n runTime = [TABLE_EVENT_TYPE.INITIALIZED];\n table: ListTable;\n pluginOptions: IExcelEditCellKeyboardPluginOptions;\n responseKeyboard: ExcelEditCellKeyboardResponse[];\n constructor(pluginOptions?: IExcelEditCellKeyboardPluginOptions) {\n this.id = pluginOptions?.id ?? this.id;\n this.pluginOptions = pluginOptions;\n this.responseKeyboard = pluginOptions?.responseKeyboard ?? [\n ExcelEditCellKeyboardResponse.ENTER,\n ExcelEditCellKeyboardResponse.TAB,\n ExcelEditCellKeyboardResponse.ARROW_LEFT,\n ExcelEditCellKeyboardResponse.ARROW_RIGHT,\n ExcelEditCellKeyboardResponse.ARROW_DOWN,\n ExcelEditCellKeyboardResponse.ARROW_UP,\n ExcelEditCellKeyboardResponse.DELETE,\n ExcelEditCellKeyboardResponse.BACKSPACE\n ];\n\n this.bindEvent();\n }\n run(...args: [EventArg, TableEvents[keyof TableEvents] | TableEvents[keyof TableEvents][], BaseTableAPI]) {\n const table: BaseTableAPI = args[2];\n this.table = table as ListTable;\n }\n\n bindEvent() {\n //监听document全局的keydown事件 捕获阶段监听 可以及时阻止事件传播和默认行为\n document.addEventListener('keydown', this.handleKeyDown.bind(this), true);\n // this.table.on('selected_cell', () => {\n // this.updateHighlight();\n // });\n\n // this.table.on('selected_clear', () => {\n // this.clearHighlight();\n // });\n\n // this.table.on('mousemove_table', () => {\n // if (this.table.stateManager.select.selecting) {\n // this.updateHighlight();\n // }\n // });\n }\n handleKeyDown(event: KeyboardEvent) {\n if (this.table.editorManager && this.isExcelShortcutKey(event)) {\n //判断是键盘触发编辑单元格的情况下,那么在编辑状态中切换方向需要选中下一个继续编辑\n if (this.table.editorManager.editingEditor && this.table.editorManager.beginTriggerEditCellMode === 'keydown') {\n const { col, row } = this.table.editorManager.editCell;\n this.table.editorManager.completeEdit();\n this.table.getElement().focus();\n if (!event.shiftKey && !event.ctrlKey && !event.metaKey) {\n //有这些配合键,则不进行选中下一个单元格的行为 执行vtable内部逻辑\n if (event.key === ExcelEditCellKeyboardResponse.ENTER) {\n this.table.selectCell(col, row + 1);\n } else if (event.key === ExcelEditCellKeyboardResponse.TAB) {\n this.table.selectCell(col + 1, row);\n } else if (event.key === ExcelEditCellKeyboardResponse.ARROW_LEFT) {\n this.table.selectCell(col - 1, row);\n } else if (event.key === ExcelEditCellKeyboardResponse.ARROW_RIGHT) {\n this.table.selectCell(col + 1, row);\n } else if (event.key === ExcelEditCellKeyboardResponse.ARROW_DOWN) {\n this.table.selectCell(col, row + 1);\n } else if (event.key === ExcelEditCellKeyboardResponse.ARROW_UP) {\n this.table.selectCell(col, row - 1);\n }\n // 阻止事件传播和默认行为\n event.stopPropagation();\n event.preventDefault();\n }\n } else {\n const { col, row } = this.table.stateManager.select.cellPos;\n if (\n this.table.editorManager.editingEditor &&\n (event.key === ExcelEditCellKeyboardResponse.ENTER || event.key === ExcelEditCellKeyboardResponse.TAB)\n ) {\n this.table.editorManager.completeEdit();\n this.table.getElement().focus();\n if (event.key === ExcelEditCellKeyboardResponse.ENTER) {\n this.table.selectCell(col, row + 1);\n } else if (event.key === ExcelEditCellKeyboardResponse.TAB) {\n this.table.selectCell(col + 1, row);\n }\n // 阻止事件传播和默认行为\n event.stopPropagation();\n event.preventDefault();\n } else if (\n !this.table.editorManager.editingEditor &&\n (event.key === ExcelEditCellKeyboardResponse.DELETE || event.key === ExcelEditCellKeyboardResponse.BACKSPACE)\n ) {\n //响应删除键,删除\n const selectCells = this.table.getSelectedCellInfos();\n if (selectCells?.length > 0) {\n // 如果选中的是范围,则删除范围内的所有单元格\n deleteSelectRange(selectCells, this.table);\n }\n // 阻止事件传播和默认行为\n event.stopPropagation();\n event.preventDefault();\n }\n }\n }\n }\n // 判断event的keyCode是否是excel的快捷键\n isExcelShortcutKey(event: KeyboardEvent) {\n return this.responseKeyboard.includes(event.key as ExcelEditCellKeyboardResponse);\n }\n setResponseKeyboard(responseKeyboard: ExcelEditCellKeyboardResponse[]) {\n this.responseKeyboard = responseKeyboard;\n }\n deleteResponseKeyboard(responseKeyboard: ExcelEditCellKeyboardResponse[]) {\n this.responseKeyboard = this.responseKeyboard.filter(key => !responseKeyboard.includes(key));\n }\n addResponseKeyboard(responseKeyboard: ExcelEditCellKeyboardResponse[]) {\n this.responseKeyboard = [...this.responseKeyboard, ...responseKeyboard];\n }\n release() {\n document.removeEventListener('keydown', this.handleKeyDown, true);\n }\n}\n//将选中单元格的值设置为空\nfunction deleteSelectRange(selectCells: TYPES.CellInfo[][], tableInstance: ListTable) {\n for (let i = 0; i < selectCells.length; i++) {\n for (let j = 0; j < selectCells[i].length; j++) {\n tableInstance.changeCellValue(selectCells[i][j].col, selectCells[i][j].row, '');\n }\n }\n}\n"]}
|
|
@@ -239,5 +239,5 @@ function needCellImageExport(cellType, isAxisCell, isCustomCell, isTextWithIcon,
|
|
|
239
239
|
return !(null == options ? void 0 : options.skipImageExportCellType) || ("image" === cellType || "video" === cellType || "progressbar" === cellType || "sparkline" === cellType || "chart" === cellType ? !options.skipImageExportCellType.includes(cellType) : isAxisCell ? !options.skipImageExportCellType.includes("chart") : isCustomCell ? !options.skipImageExportCellType.includes("custom") : !isTextWithIcon || !options.skipImageExportCellType.includes("textWithIcon"));
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
+
exports.exportVTableToExcel = exportVTableToExcel;
|
|
242
243
|
//# sourceMappingURL=index.js.map
|
|
243
|
-
exports.exportVTableToExcel = exportVTableToExcel;
|
|
@@ -84,6 +84,6 @@ function getColor(color) {
|
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
//# sourceMappingURL=style.js.map
|
|
88
87
|
exports.getCellFont = getCellFont, exports.getCellFill = getCellFill, exports.getCellBorder = getCellBorder,
|
|
89
|
-
exports.getCellAlignment = getCellAlignment;
|
|
88
|
+
exports.getCellAlignment = getCellAlignment;
|
|
89
|
+
//# sourceMappingURL=style.js.map
|
package/dist/vtable-plugins.js
CHANGED
|
@@ -1063,15 +1063,37 @@
|
|
|
1063
1063
|
return (a.start.col === b.start.col && a.start.row === b.start.row && a.end.col === b.end.col && a.end.row === b.end.row);
|
|
1064
1064
|
}
|
|
1065
1065
|
|
|
1066
|
+
exports.ExcelEditCellKeyboardResponse = void 0;
|
|
1067
|
+
(function (ExcelEditCellKeyboardResponse) {
|
|
1068
|
+
ExcelEditCellKeyboardResponse["ENTER"] = "enter";
|
|
1069
|
+
ExcelEditCellKeyboardResponse["TAB"] = "tab";
|
|
1070
|
+
ExcelEditCellKeyboardResponse["ARROW_LEFT"] = "arrowLeft";
|
|
1071
|
+
ExcelEditCellKeyboardResponse["ARROW_RIGHT"] = "arrowRight";
|
|
1072
|
+
ExcelEditCellKeyboardResponse["ARROW_DOWN"] = "arrowDown";
|
|
1073
|
+
ExcelEditCellKeyboardResponse["ARROW_UP"] = "arrowUp";
|
|
1074
|
+
ExcelEditCellKeyboardResponse["DELETE"] = "delete";
|
|
1075
|
+
ExcelEditCellKeyboardResponse["BACKSPACE"] = "backspace";
|
|
1076
|
+
})(exports.ExcelEditCellKeyboardResponse || (exports.ExcelEditCellKeyboardResponse = {}));
|
|
1066
1077
|
class ExcelEditCellKeyboardPlugin {
|
|
1067
1078
|
id = `excel-edit-cell-keyboard`;
|
|
1068
1079
|
name = 'Excel Edit Cell Keyboard';
|
|
1069
1080
|
runTime = [vtable.TABLE_EVENT_TYPE.INITIALIZED];
|
|
1070
1081
|
table;
|
|
1071
1082
|
pluginOptions;
|
|
1083
|
+
responseKeyboard;
|
|
1072
1084
|
constructor(pluginOptions) {
|
|
1073
1085
|
this.id = pluginOptions?.id ?? this.id;
|
|
1074
1086
|
this.pluginOptions = pluginOptions;
|
|
1087
|
+
this.responseKeyboard = pluginOptions?.responseKeyboard ?? [
|
|
1088
|
+
exports.ExcelEditCellKeyboardResponse.ENTER,
|
|
1089
|
+
exports.ExcelEditCellKeyboardResponse.TAB,
|
|
1090
|
+
exports.ExcelEditCellKeyboardResponse.ARROW_LEFT,
|
|
1091
|
+
exports.ExcelEditCellKeyboardResponse.ARROW_RIGHT,
|
|
1092
|
+
exports.ExcelEditCellKeyboardResponse.ARROW_DOWN,
|
|
1093
|
+
exports.ExcelEditCellKeyboardResponse.ARROW_UP,
|
|
1094
|
+
exports.ExcelEditCellKeyboardResponse.DELETE,
|
|
1095
|
+
exports.ExcelEditCellKeyboardResponse.BACKSPACE
|
|
1096
|
+
];
|
|
1075
1097
|
this.bindEvent();
|
|
1076
1098
|
}
|
|
1077
1099
|
run(...args) {
|
|
@@ -1082,51 +1104,51 @@
|
|
|
1082
1104
|
document.addEventListener('keydown', this.handleKeyDown.bind(this), true);
|
|
1083
1105
|
}
|
|
1084
1106
|
handleKeyDown(event) {
|
|
1085
|
-
if (this.table.editorManager) {
|
|
1086
|
-
if (this.table.editorManager.beginTriggerEditCellMode === 'keydown') {
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
if (
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
this.table.selectCell(col, row + 1);
|
|
1106
|
-
}
|
|
1107
|
-
else if (event.key === 'ArrowUp') {
|
|
1108
|
-
this.table.selectCell(col, row - 1);
|
|
1109
|
-
}
|
|
1110
|
-
event.stopPropagation();
|
|
1111
|
-
event.preventDefault();
|
|
1107
|
+
if (this.table.editorManager && this.isExcelShortcutKey(event)) {
|
|
1108
|
+
if (this.table.editorManager.editingEditor && this.table.editorManager.beginTriggerEditCellMode === 'keydown') {
|
|
1109
|
+
const { col, row } = this.table.editorManager.editCell;
|
|
1110
|
+
this.table.editorManager.completeEdit();
|
|
1111
|
+
this.table.getElement().focus();
|
|
1112
|
+
if (!event.shiftKey && !event.ctrlKey && !event.metaKey) {
|
|
1113
|
+
if (event.key === exports.ExcelEditCellKeyboardResponse.ENTER) {
|
|
1114
|
+
this.table.selectCell(col, row + 1);
|
|
1115
|
+
}
|
|
1116
|
+
else if (event.key === exports.ExcelEditCellKeyboardResponse.TAB) {
|
|
1117
|
+
this.table.selectCell(col + 1, row);
|
|
1118
|
+
}
|
|
1119
|
+
else if (event.key === exports.ExcelEditCellKeyboardResponse.ARROW_LEFT) {
|
|
1120
|
+
this.table.selectCell(col - 1, row);
|
|
1121
|
+
}
|
|
1122
|
+
else if (event.key === exports.ExcelEditCellKeyboardResponse.ARROW_RIGHT) {
|
|
1123
|
+
this.table.selectCell(col + 1, row);
|
|
1124
|
+
}
|
|
1125
|
+
else if (event.key === exports.ExcelEditCellKeyboardResponse.ARROW_DOWN) {
|
|
1126
|
+
this.table.selectCell(col, row + 1);
|
|
1112
1127
|
}
|
|
1128
|
+
else if (event.key === exports.ExcelEditCellKeyboardResponse.ARROW_UP) {
|
|
1129
|
+
this.table.selectCell(col, row - 1);
|
|
1130
|
+
}
|
|
1131
|
+
event.stopPropagation();
|
|
1132
|
+
event.preventDefault();
|
|
1113
1133
|
}
|
|
1114
1134
|
}
|
|
1115
1135
|
else {
|
|
1116
1136
|
const { col, row } = this.table.stateManager.select.cellPos;
|
|
1117
|
-
if (this.table.editorManager.editingEditor &&
|
|
1137
|
+
if (this.table.editorManager.editingEditor &&
|
|
1138
|
+
(event.key === exports.ExcelEditCellKeyboardResponse.ENTER || event.key === exports.ExcelEditCellKeyboardResponse.TAB)) {
|
|
1118
1139
|
this.table.editorManager.completeEdit();
|
|
1119
1140
|
this.table.getElement().focus();
|
|
1120
|
-
if (event.key ===
|
|
1141
|
+
if (event.key === exports.ExcelEditCellKeyboardResponse.ENTER) {
|
|
1121
1142
|
this.table.selectCell(col, row + 1);
|
|
1122
1143
|
}
|
|
1123
|
-
else if (event.key ===
|
|
1144
|
+
else if (event.key === exports.ExcelEditCellKeyboardResponse.TAB) {
|
|
1124
1145
|
this.table.selectCell(col + 1, row);
|
|
1125
1146
|
}
|
|
1126
1147
|
event.stopPropagation();
|
|
1127
1148
|
event.preventDefault();
|
|
1128
1149
|
}
|
|
1129
|
-
else if (!this.table.editorManager.editingEditor &&
|
|
1150
|
+
else if (!this.table.editorManager.editingEditor &&
|
|
1151
|
+
(event.key === exports.ExcelEditCellKeyboardResponse.DELETE || event.key === exports.ExcelEditCellKeyboardResponse.BACKSPACE)) {
|
|
1130
1152
|
const selectCells = this.table.getSelectedCellInfos();
|
|
1131
1153
|
if (selectCells?.length > 0) {
|
|
1132
1154
|
deleteSelectRange(selectCells, this.table);
|
|
@@ -1138,12 +1160,16 @@
|
|
|
1138
1160
|
}
|
|
1139
1161
|
}
|
|
1140
1162
|
isExcelShortcutKey(event) {
|
|
1141
|
-
return (event.key
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1163
|
+
return this.responseKeyboard.includes(event.key);
|
|
1164
|
+
}
|
|
1165
|
+
setResponseKeyboard(responseKeyboard) {
|
|
1166
|
+
this.responseKeyboard = responseKeyboard;
|
|
1167
|
+
}
|
|
1168
|
+
deleteResponseKeyboard(responseKeyboard) {
|
|
1169
|
+
this.responseKeyboard = this.responseKeyboard.filter(key => !responseKeyboard.includes(key));
|
|
1170
|
+
}
|
|
1171
|
+
addResponseKeyboard(responseKeyboard) {
|
|
1172
|
+
this.responseKeyboard = [...this.responseKeyboard, ...responseKeyboard];
|
|
1147
1173
|
}
|
|
1148
1174
|
release() {
|
|
1149
1175
|
document.removeEventListener('keydown', this.handleKeyDown, true);
|