handsontable 14.0.0-next-bdc44e7-20231115 → 14.0.0-next-0a2e56a-20231116
Sign up to get free protection for your applications and to get access to all the features.
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core/focusCatcher/index.js +1 -2
- package/core/focusCatcher/index.mjs +1 -2
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +23 -47
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +4 -4
- package/dist/handsontable.js +23 -47
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +4 -4
- package/editors/textEditor/textEditor.js +4 -27
- package/editors/textEditor/textEditor.mjs +4 -27
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/package.json +1 -1
- package/pluginHooks.d.ts +2 -2
- package/selection/transformation.js +12 -12
- package/selection/transformation.mjs +13 -13
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +1 -1
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +1 -1
@@ -388,6 +388,7 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
388
388
|
registerShortcuts() {
|
389
389
|
const shortcutManager = this.hot.getShortcutManager();
|
390
390
|
const editorContext = shortcutManager.getContext('editor');
|
391
|
+
const gridContext = shortcutManager.getContext('grid');
|
391
392
|
const contextConfig = {
|
392
393
|
runOnlyIf: () => (0, _mixed.isDefined)(this.hot.getSelected()),
|
393
394
|
group: SHORTCUTS_GROUP
|
@@ -396,21 +397,9 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
396
397
|
this.hot.rootDocument.execCommand('insertText', false, '\n');
|
397
398
|
};
|
398
399
|
editorContext.addShortcuts([{
|
399
|
-
keys: [['Tab']],
|
400
|
-
|
401
|
-
callback:
|
402
|
-
const tableMeta = this.hot.getSettings();
|
403
|
-
const tabMoves = typeof tableMeta.tabMoves === 'function' ? tableMeta.tabMoves(event) : tableMeta.tabMoves;
|
404
|
-
this.hot.selection.transformStart(tabMoves.row, tabMoves.col, true);
|
405
|
-
}
|
406
|
-
}, {
|
407
|
-
keys: [['Shift', 'Tab']],
|
408
|
-
// TODO: Duplicated part of code (callback to shortcut).
|
409
|
-
callback: event => {
|
410
|
-
const tableMeta = this.hot.getSettings();
|
411
|
-
const tabMoves = typeof tableMeta.tabMoves === 'function' ? tableMeta.tabMoves(event) : tableMeta.tabMoves;
|
412
|
-
this.hot.selection.transformStart(-tabMoves.row, -tabMoves.col);
|
413
|
-
}
|
400
|
+
keys: [['Tab'], ['Shift', 'Tab'], ['PageUp'], ['PageDown']],
|
401
|
+
forwardToContext: gridContext,
|
402
|
+
callback: () => {}
|
414
403
|
}, {
|
415
404
|
keys: [['Control', 'Enter']],
|
416
405
|
callback: () => {
|
@@ -436,18 +425,6 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
436
425
|
insertNewLine();
|
437
426
|
return false; // Will block closing editor.
|
438
427
|
}
|
439
|
-
}, {
|
440
|
-
// TODO: Duplicated part of code (callback to shortcut)
|
441
|
-
keys: [['PageUp']],
|
442
|
-
callback: () => {
|
443
|
-
this.hot.selection.transformStart(-this.hot.countVisibleRows(), 0);
|
444
|
-
}
|
445
|
-
}, {
|
446
|
-
// TODO: Duplicated part of code (callback to shortcut)
|
447
|
-
keys: [['PageDown']],
|
448
|
-
callback: () => {
|
449
|
-
this.hot.selection.transformStart(this.hot.countVisibleRows(), 0);
|
450
|
-
}
|
451
428
|
}, {
|
452
429
|
keys: [['Home']],
|
453
430
|
callback: (event, _ref) => {
|
@@ -384,6 +384,7 @@ export class TextEditor extends BaseEditor {
|
|
384
384
|
registerShortcuts() {
|
385
385
|
const shortcutManager = this.hot.getShortcutManager();
|
386
386
|
const editorContext = shortcutManager.getContext('editor');
|
387
|
+
const gridContext = shortcutManager.getContext('grid');
|
387
388
|
const contextConfig = {
|
388
389
|
runOnlyIf: () => isDefined(this.hot.getSelected()),
|
389
390
|
group: SHORTCUTS_GROUP
|
@@ -392,21 +393,9 @@ export class TextEditor extends BaseEditor {
|
|
392
393
|
this.hot.rootDocument.execCommand('insertText', false, '\n');
|
393
394
|
};
|
394
395
|
editorContext.addShortcuts([{
|
395
|
-
keys: [['Tab']],
|
396
|
-
|
397
|
-
callback:
|
398
|
-
const tableMeta = this.hot.getSettings();
|
399
|
-
const tabMoves = typeof tableMeta.tabMoves === 'function' ? tableMeta.tabMoves(event) : tableMeta.tabMoves;
|
400
|
-
this.hot.selection.transformStart(tabMoves.row, tabMoves.col, true);
|
401
|
-
}
|
402
|
-
}, {
|
403
|
-
keys: [['Shift', 'Tab']],
|
404
|
-
// TODO: Duplicated part of code (callback to shortcut).
|
405
|
-
callback: event => {
|
406
|
-
const tableMeta = this.hot.getSettings();
|
407
|
-
const tabMoves = typeof tableMeta.tabMoves === 'function' ? tableMeta.tabMoves(event) : tableMeta.tabMoves;
|
408
|
-
this.hot.selection.transformStart(-tabMoves.row, -tabMoves.col);
|
409
|
-
}
|
396
|
+
keys: [['Tab'], ['Shift', 'Tab'], ['PageUp'], ['PageDown']],
|
397
|
+
forwardToContext: gridContext,
|
398
|
+
callback: () => {}
|
410
399
|
}, {
|
411
400
|
keys: [['Control', 'Enter']],
|
412
401
|
callback: () => {
|
@@ -432,18 +421,6 @@ export class TextEditor extends BaseEditor {
|
|
432
421
|
insertNewLine();
|
433
422
|
return false; // Will block closing editor.
|
434
423
|
}
|
435
|
-
}, {
|
436
|
-
// TODO: Duplicated part of code (callback to shortcut)
|
437
|
-
keys: [['PageUp']],
|
438
|
-
callback: () => {
|
439
|
-
this.hot.selection.transformStart(-this.hot.countVisibleRows(), 0);
|
440
|
-
}
|
441
|
-
}, {
|
442
|
-
// TODO: Duplicated part of code (callback to shortcut)
|
443
|
-
keys: [['PageDown']],
|
444
|
-
callback: () => {
|
445
|
-
this.hot.selection.transformStart(this.hot.countVisibleRows(), 0);
|
446
|
-
}
|
447
424
|
}, {
|
448
425
|
keys: [['Home']],
|
449
426
|
callback: (event, _ref) => {
|
package/helpers/mixed.js
CHANGED
@@ -134,7 +134,7 @@ const domMessages = {
|
|
134
134
|
function _injectProductInfo(key, element) {
|
135
135
|
const hasValidType = !isEmpty(key);
|
136
136
|
const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
|
137
|
-
const hotVersion = "14.0.0-next-
|
137
|
+
const hotVersion = "14.0.0-next-0a2e56a-20231116";
|
138
138
|
let keyValidityDate;
|
139
139
|
let consoleMessageState = 'invalid';
|
140
140
|
let domMessageState = 'invalid';
|
package/helpers/mixed.mjs
CHANGED
@@ -124,7 +124,7 @@ const domMessages = {
|
|
124
124
|
export function _injectProductInfo(key, element) {
|
125
125
|
const hasValidType = !isEmpty(key);
|
126
126
|
const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
|
127
|
-
const hotVersion = "14.0.0-next-
|
127
|
+
const hotVersion = "14.0.0-next-0a2e56a-20231116";
|
128
128
|
let keyValidityDate;
|
129
129
|
let consoleMessageState = 'invalid';
|
130
130
|
let domMessageState = 'invalid';
|
package/package.json
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
"url": "https://github.com/handsontable/handsontable/issues"
|
11
11
|
},
|
12
12
|
"author": "Handsoncode <hello@handsontable.com>",
|
13
|
-
"version": "14.0.0-next-
|
13
|
+
"version": "14.0.0-next-0a2e56a-20231116",
|
14
14
|
"main": "index",
|
15
15
|
"module": "index.mjs",
|
16
16
|
"jsnext:main": "index.mjs",
|
package/pluginHooks.d.ts
CHANGED
@@ -166,7 +166,7 @@ export interface Events {
|
|
166
166
|
beforeColumnMove?: (movedColumns: number[], finalIndex: number, dropIndex: number | undefined, movePossible: boolean) => void | boolean;
|
167
167
|
beforeColumnResize?: (newSize: number, column: number, isDoubleClick: boolean) => void | number;
|
168
168
|
beforeColumnSort?: (currentSortConfig: ColumnSortingConfig[], destinationSortConfigs: ColumnSortingConfig[]) => void | boolean;
|
169
|
-
beforeColumnWrap?: (
|
169
|
+
beforeColumnWrap?: (isActionInterrupted: { value: boolean }, newCoords: CellCoords, isColumnFlipped: boolean) => void;
|
170
170
|
beforeColumnUnfreeze?: (columnIndex: number, isUnfreezingPerformed: boolean) => void | boolean;
|
171
171
|
beforeContextMenuSetItems?: (menuItems: ContextMenuMenuItemConfig[]) => void;
|
172
172
|
beforeContextMenuShow?: (context: ContextMenu) => void;
|
@@ -207,7 +207,7 @@ export interface Events {
|
|
207
207
|
beforeRenderer?: (TD: HTMLTableCellElement, row: number, column: number, prop: string | number, value: CellValue, cellProperties: CellProperties) => void;
|
208
208
|
beforeRowMove?: (movedRows: number[], finalIndex: number, dropIndex: number | undefined, movePossible: boolean) => void;
|
209
209
|
beforeRowResize?: (newSize: number, row: number, isDoubleClick: boolean) => number | void;
|
210
|
-
beforeRowWrap?: (
|
210
|
+
beforeRowWrap?: (isActionInterrupted: { value: boolean }, newCoords: CellCoords, isRowFlipped: boolean) => void;
|
211
211
|
beforeSelectColumns?: (from: CellCoords, to: CellCoords, highlight: CellCoords) => void;
|
212
212
|
beforeSelectionHighlightSet?: () => void;
|
213
213
|
beforeSelectRows?: (from: CellCoords, to: CellCoords, highlight: CellCoords) => void;
|
@@ -147,39 +147,39 @@ class Transformation {
|
|
147
147
|
const autoWrapCol = _classPrivateFieldGet(this, _options).autoWrapCol();
|
148
148
|
const zeroBasedCoords = _classPrivateFieldGet(this, _options).createCellCoords(row + delta.row, col + delta.col);
|
149
149
|
if (zeroBasedCoords.row >= height) {
|
150
|
-
const
|
151
|
-
const isWrapEnabled = !autoInsertingMode && autoWrapCol;
|
150
|
+
const isActionInterrupted = (0, _object.createObjectPropListener)(createMissingRecords && minSpareRows > 0 && fixedRowsBottom === 0);
|
152
151
|
const nextColumn = zeroBasedCoords.col + 1;
|
153
152
|
const newCoords = _classPrivateFieldGet(this, _options).createCellCoords(zeroBasedCoords.row - height, nextColumn >= width ? nextColumn - width : nextColumn);
|
154
|
-
this.runLocalHooks('beforeColumnWrap',
|
155
|
-
if (
|
153
|
+
this.runLocalHooks('beforeColumnWrap', isActionInterrupted, _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, newCoords), nextColumn >= width);
|
154
|
+
if (isActionInterrupted.value) {
|
156
155
|
this.runLocalHooks('insertRowRequire', _classPrivateFieldGet(this, _options).countRenderableRows());
|
157
|
-
} else if (
|
156
|
+
} else if (autoWrapCol) {
|
158
157
|
zeroBasedCoords.assign(newCoords);
|
159
158
|
}
|
160
159
|
} else if (zeroBasedCoords.row < 0) {
|
160
|
+
const isActionInterrupted = (0, _object.createObjectPropListener)(autoWrapCol);
|
161
161
|
const previousColumn = zeroBasedCoords.col - 1;
|
162
162
|
const newCoords = _classPrivateFieldGet(this, _options).createCellCoords(height + zeroBasedCoords.row, previousColumn < 0 ? width + previousColumn : previousColumn);
|
163
|
-
this.runLocalHooks('beforeColumnWrap',
|
163
|
+
this.runLocalHooks('beforeColumnWrap', isActionInterrupted, _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, newCoords), previousColumn < 0);
|
164
164
|
if (autoWrapCol) {
|
165
165
|
zeroBasedCoords.assign(newCoords);
|
166
166
|
}
|
167
167
|
}
|
168
168
|
if (zeroBasedCoords.col >= width) {
|
169
|
-
const
|
170
|
-
const isWrapEnabled = !autoInsertingMode && autoWrapRow;
|
169
|
+
const isActionInterrupted = (0, _object.createObjectPropListener)(createMissingRecords && minSpareCols > 0);
|
171
170
|
const nextRow = zeroBasedCoords.row + 1;
|
172
171
|
const newCoords = _classPrivateFieldGet(this, _options).createCellCoords(nextRow >= height ? nextRow - height : nextRow, zeroBasedCoords.col - width);
|
173
|
-
this.runLocalHooks('beforeRowWrap',
|
174
|
-
if (
|
172
|
+
this.runLocalHooks('beforeRowWrap', isActionInterrupted, _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, newCoords), nextRow >= height);
|
173
|
+
if (isActionInterrupted.value) {
|
175
174
|
this.runLocalHooks('insertColRequire', _classPrivateFieldGet(this, _options).countRenderableColumns());
|
176
|
-
} else if (
|
175
|
+
} else if (autoWrapRow) {
|
177
176
|
zeroBasedCoords.assign(newCoords);
|
178
177
|
}
|
179
178
|
} else if (zeroBasedCoords.col < 0) {
|
179
|
+
const isActionInterrupted = (0, _object.createObjectPropListener)(autoWrapRow);
|
180
180
|
const previousRow = zeroBasedCoords.row - 1;
|
181
181
|
const newCoords = _classPrivateFieldGet(this, _options).createCellCoords(previousRow < 0 ? height + previousRow : previousRow, width + zeroBasedCoords.col);
|
182
|
-
this.runLocalHooks('beforeRowWrap',
|
182
|
+
this.runLocalHooks('beforeRowWrap', isActionInterrupted, _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, newCoords), previousRow < 0);
|
183
183
|
if (autoWrapRow) {
|
184
184
|
zeroBasedCoords.assign(newCoords);
|
185
185
|
}
|
@@ -8,7 +8,7 @@ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(
|
|
8
8
|
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
9
9
|
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
10
10
|
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
11
|
-
import { mixin } from "../helpers/object.mjs";
|
11
|
+
import { mixin, createObjectPropListener } from "../helpers/object.mjs";
|
12
12
|
import localHooks from "./../mixins/localHooks.mjs";
|
13
13
|
/**
|
14
14
|
* The Transformation class implements algorithms for transforming coordinates based on current settings
|
@@ -143,39 +143,39 @@ class Transformation {
|
|
143
143
|
const autoWrapCol = _classPrivateFieldGet(this, _options).autoWrapCol();
|
144
144
|
const zeroBasedCoords = _classPrivateFieldGet(this, _options).createCellCoords(row + delta.row, col + delta.col);
|
145
145
|
if (zeroBasedCoords.row >= height) {
|
146
|
-
const
|
147
|
-
const isWrapEnabled = !autoInsertingMode && autoWrapCol;
|
146
|
+
const isActionInterrupted = createObjectPropListener(createMissingRecords && minSpareRows > 0 && fixedRowsBottom === 0);
|
148
147
|
const nextColumn = zeroBasedCoords.col + 1;
|
149
148
|
const newCoords = _classPrivateFieldGet(this, _options).createCellCoords(zeroBasedCoords.row - height, nextColumn >= width ? nextColumn - width : nextColumn);
|
150
|
-
this.runLocalHooks('beforeColumnWrap',
|
151
|
-
if (
|
149
|
+
this.runLocalHooks('beforeColumnWrap', isActionInterrupted, _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, newCoords), nextColumn >= width);
|
150
|
+
if (isActionInterrupted.value) {
|
152
151
|
this.runLocalHooks('insertRowRequire', _classPrivateFieldGet(this, _options).countRenderableRows());
|
153
|
-
} else if (
|
152
|
+
} else if (autoWrapCol) {
|
154
153
|
zeroBasedCoords.assign(newCoords);
|
155
154
|
}
|
156
155
|
} else if (zeroBasedCoords.row < 0) {
|
156
|
+
const isActionInterrupted = createObjectPropListener(autoWrapCol);
|
157
157
|
const previousColumn = zeroBasedCoords.col - 1;
|
158
158
|
const newCoords = _classPrivateFieldGet(this, _options).createCellCoords(height + zeroBasedCoords.row, previousColumn < 0 ? width + previousColumn : previousColumn);
|
159
|
-
this.runLocalHooks('beforeColumnWrap',
|
159
|
+
this.runLocalHooks('beforeColumnWrap', isActionInterrupted, _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, newCoords), previousColumn < 0);
|
160
160
|
if (autoWrapCol) {
|
161
161
|
zeroBasedCoords.assign(newCoords);
|
162
162
|
}
|
163
163
|
}
|
164
164
|
if (zeroBasedCoords.col >= width) {
|
165
|
-
const
|
166
|
-
const isWrapEnabled = !autoInsertingMode && autoWrapRow;
|
165
|
+
const isActionInterrupted = createObjectPropListener(createMissingRecords && minSpareCols > 0);
|
167
166
|
const nextRow = zeroBasedCoords.row + 1;
|
168
167
|
const newCoords = _classPrivateFieldGet(this, _options).createCellCoords(nextRow >= height ? nextRow - height : nextRow, zeroBasedCoords.col - width);
|
169
|
-
this.runLocalHooks('beforeRowWrap',
|
170
|
-
if (
|
168
|
+
this.runLocalHooks('beforeRowWrap', isActionInterrupted, _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, newCoords), nextRow >= height);
|
169
|
+
if (isActionInterrupted.value) {
|
171
170
|
this.runLocalHooks('insertColRequire', _classPrivateFieldGet(this, _options).countRenderableColumns());
|
172
|
-
} else if (
|
171
|
+
} else if (autoWrapRow) {
|
173
172
|
zeroBasedCoords.assign(newCoords);
|
174
173
|
}
|
175
174
|
} else if (zeroBasedCoords.col < 0) {
|
175
|
+
const isActionInterrupted = createObjectPropListener(autoWrapRow);
|
176
176
|
const previousRow = zeroBasedCoords.row - 1;
|
177
177
|
const newCoords = _classPrivateFieldGet(this, _options).createCellCoords(previousRow < 0 ? height + previousRow : previousRow, width + zeroBasedCoords.col);
|
178
|
-
this.runLocalHooks('beforeRowWrap',
|
178
|
+
this.runLocalHooks('beforeRowWrap', isActionInterrupted, _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, newCoords), previousRow < 0);
|
179
179
|
if (autoWrapRow) {
|
180
180
|
zeroBasedCoords.assign(newCoords);
|
181
181
|
}
|
@@ -6,6 +6,6 @@ const command = exports.command = {
|
|
6
6
|
callback(hot, event) {
|
7
7
|
const settings = hot.getSettings();
|
8
8
|
const tabMoves = typeof settings.tabMoves === 'function' ? settings.tabMoves(event) : settings.tabMoves;
|
9
|
-
hot.selection.transformStart(tabMoves.row, tabMoves.col
|
9
|
+
hot.selection.transformStart(tabMoves.row, tabMoves.col);
|
10
10
|
}
|
11
11
|
};
|
@@ -3,6 +3,6 @@ export const command = {
|
|
3
3
|
callback(hot, event) {
|
4
4
|
const settings = hot.getSettings();
|
5
5
|
const tabMoves = typeof settings.tabMoves === 'function' ? settings.tabMoves(event) : settings.tabMoves;
|
6
|
-
hot.selection.transformStart(tabMoves.row, tabMoves.col
|
6
|
+
hot.selection.transformStart(tabMoves.row, tabMoves.col);
|
7
7
|
}
|
8
8
|
};
|