handsontable 14.5.0 → 14.6.0-next-6fbf568-20240930
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/3rdparty/walkontable/src/renderer/rows.js +10 -0
- package/3rdparty/walkontable/src/renderer/rows.mjs +11 -1
- package/3rdparty/walkontable/src/selection/manager.js +7 -7
- package/3rdparty/walkontable/src/selection/manager.mjs +7 -7
- package/3rdparty/walkontable/src/selection/scanner.js +7 -7
- package/3rdparty/walkontable/src/selection/scanner.mjs +7 -7
- package/CHANGELOG.md +29 -0
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core.d.ts +13 -2
- package/core.js +160 -9
- package/core.mjs +160 -9
- package/dataMap/metaManager/lazyFactoryMap.js +7 -7
- package/dataMap/metaManager/lazyFactoryMap.mjs +7 -7
- package/dataMap/metaManager/metaSchema.js +5 -6
- package/dataMap/metaManager/metaSchema.mjs +7 -8
- package/dataMap/metaManager/mods/dynamicCellMeta.js +7 -7
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +7 -7
- package/dataMap/metaManager/mods/extendMetaProperties.js +7 -7
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -7
- package/dataMap/metaManager/utils.js +7 -7
- package/dataMap/metaManager/utils.mjs +7 -7
- package/dist/handsontable.css +3 -17
- package/dist/handsontable.full.css +3 -17
- package/dist/handsontable.full.js +3501 -3220
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +109 -119
- package/dist/handsontable.js +3175 -2898
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +19 -19
- package/editors/autocompleteEditor/autocompleteEditor.d.ts +1 -1
- package/helpers/a11y.js +2 -0
- package/helpers/a11y.mjs +1 -0
- package/helpers/array.js +7 -7
- package/helpers/array.mjs +7 -7
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/helpers/number.js +7 -7
- package/helpers/number.mjs +7 -7
- package/package.json +1 -1
- package/pluginHooks.d.ts +1 -1
- package/pluginHooks.js +4 -1
- package/pluginHooks.mjs +4 -1
- package/plugins/autoRowSize/autoRowSize.js +1 -2
- package/plugins/autoRowSize/autoRowSize.mjs +1 -2
- package/plugins/columnSorting/columnSorting.js +10 -1
- package/plugins/columnSorting/columnSorting.mjs +10 -1
- package/plugins/columnSorting/utils.js +7 -7
- package/plugins/columnSorting/utils.mjs +7 -7
- package/plugins/contextMenu/contextMenu.js +7 -0
- package/plugins/contextMenu/contextMenu.mjs +7 -0
- package/plugins/contextMenu/menu/menu.js +47 -14
- package/plugins/contextMenu/menu/menu.mjs +48 -15
- package/plugins/contextMenu/menu/menuItemRenderer.js +3 -4
- package/plugins/contextMenu/menu/menuItemRenderer.mjs +5 -6
- package/plugins/contextMenu/menu/positioner.js +4 -12
- package/plugins/contextMenu/menu/positioner.mjs +4 -12
- package/plugins/contextMenu/menu/utils.js +11 -0
- package/plugins/contextMenu/menu/utils.mjs +10 -0
- package/plugins/contextMenu/predefinedItems/alignment.js +56 -49
- package/plugins/contextMenu/predefinedItems/alignment.mjs +57 -50
- package/plugins/contextMenu/predefinedItems/readOnly.js +8 -0
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +8 -0
- package/plugins/contextMenu/utils.js +26 -0
- package/plugins/contextMenu/utils.mjs +24 -0
- package/plugins/copyPaste/copyPaste.js +14 -14
- package/plugins/copyPaste/copyPaste.mjs +14 -14
- package/plugins/dropdownMenu/dropdownMenu.js +10 -4
- package/plugins/dropdownMenu/dropdownMenu.mjs +10 -4
- package/plugins/filters/component/condition.js +6 -1
- package/plugins/filters/component/condition.mjs +6 -1
- package/plugins/filters/component/value.js +6 -1
- package/plugins/filters/component/value.mjs +6 -1
- package/plugins/filters/conditionCollection.d.ts +4 -3
- package/plugins/filters/conditionCollection.js +26 -0
- package/plugins/filters/conditionCollection.mjs +26 -0
- package/plugins/filters/filters.js +4 -1
- package/plugins/filters/filters.mjs +4 -1
- package/plugins/filters/ui/multipleSelect.js +7 -9
- package/plugins/filters/ui/multipleSelect.mjs +7 -9
- package/plugins/filters/utils.js +7 -7
- package/plugins/filters/utils.mjs +7 -7
- package/plugins/formulas/formulas.js +7 -7
- package/plugins/formulas/formulas.mjs +7 -7
- package/plugins/hiddenColumns/hiddenColumns.js +7 -7
- package/plugins/hiddenColumns/hiddenColumns.mjs +7 -7
- package/plugins/hiddenRows/hiddenRows.js +7 -7
- package/plugins/hiddenRows/hiddenRows.mjs +7 -7
- package/plugins/mergeCells/cellsCollection.js +18 -16
- package/plugins/mergeCells/cellsCollection.mjs +19 -17
- package/plugins/mergeCells/mergeCells.js +7 -7
- package/plugins/mergeCells/mergeCells.mjs +7 -7
- package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +7 -7
- package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +7 -7
- package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.js +7 -7
- package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.mjs +7 -7
- package/plugins/nestedRows/nestedRows.js +7 -7
- package/plugins/nestedRows/nestedRows.mjs +7 -7
- package/plugins/trimRows/trimRows.js +7 -7
- package/plugins/trimRows/trimRows.mjs +7 -7
- package/plugins/undoRedo/undoRedo.js +9 -5
- package/plugins/undoRedo/undoRedo.mjs +9 -5
- package/renderers/checkboxRenderer/checkboxRenderer.js +18 -6
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +18 -6
- package/selection/selection.js +7 -7
- package/selection/selection.mjs +7 -7
- package/selection/utils.js +7 -7
- package/selection/utils.mjs +7 -7
- package/shortcutContexts/grid.js +10 -3
- package/shortcutContexts/grid.mjs +10 -3
- package/shortcuts/keyObserver.js +7 -7
- package/shortcuts/keyObserver.mjs +7 -7
- package/shortcuts/utils.js +3 -1
- package/shortcuts/utils.mjs +3 -1
- package/translations/changesObservable/observable.js +7 -7
- package/translations/changesObservable/observable.mjs +7 -7
- package/translations/indexMapper.js +7 -7
- package/translations/indexMapper.mjs +7 -7
- package/utils/dataStructures/uniqueSet.js +7 -7
- package/utils/dataStructures/uniqueSet.mjs +7 -7
- package/utils/ghostTable.js +11 -9
- package/utils/ghostTable.mjs +12 -10
- package/utils/paginator.js +7 -7
- package/utils/paginator.mjs +7 -7
@@ -260,13 +260,16 @@ class DropdownMenu extends _base.BasePlugin {
|
|
260
260
|
from
|
261
261
|
} = this.hot.getSelectedRangeLast();
|
262
262
|
const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
|
263
|
-
const target = this.hot.getCell(-1, from.col, true);
|
263
|
+
const target = this.hot.getCell(-1, from.col, true).querySelector(`.${BUTTON_CLASS_NAME}`);
|
264
264
|
const rect = target.getBoundingClientRect();
|
265
265
|
this.open({
|
266
266
|
left: rect.left + offset.left,
|
267
267
|
top: rect.top + target.offsetHeight + offset.top
|
268
268
|
}, {
|
269
|
-
left: rect.width
|
269
|
+
left: rect.width,
|
270
|
+
right: 0,
|
271
|
+
above: 0,
|
272
|
+
below: 3
|
270
273
|
});
|
271
274
|
// Make sure the first item is selected (role=menuitem). Otherwise, screen readers
|
272
275
|
// will block the Esc key for the whole menu.
|
@@ -433,9 +436,12 @@ function _onTableClick(event) {
|
|
433
436
|
_classPrivateFieldSet(_isButtonClicked, this, false);
|
434
437
|
this.open({
|
435
438
|
left: rect.left + offset.left,
|
436
|
-
top: rect.top + event.target.offsetHeight +
|
439
|
+
top: rect.top + event.target.offsetHeight + offset.top
|
437
440
|
}, {
|
438
|
-
left: rect.width
|
441
|
+
left: rect.width,
|
442
|
+
right: 0,
|
443
|
+
above: 0,
|
444
|
+
below: 3
|
439
445
|
});
|
440
446
|
}
|
441
447
|
}
|
@@ -256,13 +256,16 @@ export class DropdownMenu extends BasePlugin {
|
|
256
256
|
from
|
257
257
|
} = this.hot.getSelectedRangeLast();
|
258
258
|
const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
|
259
|
-
const target = this.hot.getCell(-1, from.col, true);
|
259
|
+
const target = this.hot.getCell(-1, from.col, true).querySelector(`.${BUTTON_CLASS_NAME}`);
|
260
260
|
const rect = target.getBoundingClientRect();
|
261
261
|
this.open({
|
262
262
|
left: rect.left + offset.left,
|
263
263
|
top: rect.top + target.offsetHeight + offset.top
|
264
264
|
}, {
|
265
|
-
left: rect.width
|
265
|
+
left: rect.width,
|
266
|
+
right: 0,
|
267
|
+
above: 0,
|
268
|
+
below: 3
|
266
269
|
});
|
267
270
|
// Make sure the first item is selected (role=menuitem). Otherwise, screen readers
|
268
271
|
// will block the Esc key for the whole menu.
|
@@ -428,9 +431,12 @@ function _onTableClick(event) {
|
|
428
431
|
_classPrivateFieldSet(_isButtonClicked, this, false);
|
429
432
|
this.open({
|
430
433
|
left: rect.left + offset.left,
|
431
|
-
top: rect.top + event.target.offsetHeight +
|
434
|
+
top: rect.top + event.target.offsetHeight + offset.top
|
432
435
|
}, {
|
433
|
-
left: rect.width
|
436
|
+
left: rect.width,
|
437
|
+
right: 0,
|
438
|
+
above: 0,
|
439
|
+
below: 3
|
434
440
|
});
|
435
441
|
}
|
436
442
|
}
|
@@ -191,7 +191,12 @@ class ConditionComponent extends _base.BaseComponent {
|
|
191
191
|
(0, _element.addClass)(label, 'htFiltersMenuLabel');
|
192
192
|
label.textContent = value;
|
193
193
|
wrapper.appendChild(label);
|
194
|
-
|
194
|
+
|
195
|
+
// The SelectUI should not extend the menu width (it should adjust to the menu item width only).
|
196
|
+
// That's why it's skipped from rendering when the GhostTable tries to render it.
|
197
|
+
if (!wrapper.parentElement.hasAttribute('ghost-table')) {
|
198
|
+
(0, _array.arrayEach)(this.elements, ui => wrapper.appendChild(ui.element));
|
199
|
+
}
|
195
200
|
return wrapper;
|
196
201
|
}
|
197
202
|
};
|
@@ -186,7 +186,12 @@ export class ConditionComponent extends BaseComponent {
|
|
186
186
|
addClass(label, 'htFiltersMenuLabel');
|
187
187
|
label.textContent = value;
|
188
188
|
wrapper.appendChild(label);
|
189
|
-
|
189
|
+
|
190
|
+
// The SelectUI should not extend the menu width (it should adjust to the menu item width only).
|
191
|
+
// That's why it's skipped from rendering when the GhostTable tries to render it.
|
192
|
+
if (!wrapper.parentElement.hasAttribute('ghost-table')) {
|
193
|
+
arrayEach(this.elements, ui => wrapper.appendChild(ui.element));
|
194
|
+
}
|
190
195
|
return wrapper;
|
191
196
|
}
|
192
197
|
};
|
@@ -177,7 +177,12 @@ class ValueComponent extends _base.BaseComponent {
|
|
177
177
|
(0, _element.addClass)(label, 'htFiltersMenuLabel');
|
178
178
|
label.textContent = value;
|
179
179
|
wrapper.appendChild(label);
|
180
|
-
|
180
|
+
|
181
|
+
// The MultipleSelectUI should not extend the menu width (it should adjust to the menu item width only).
|
182
|
+
// That's why it's skipped from rendering when the GhostTable tries to render it.
|
183
|
+
if (!wrapper.parentElement.hasAttribute('ghost-table')) {
|
184
|
+
(0, _array.arrayEach)(this.elements, ui => wrapper.appendChild(ui.element));
|
185
|
+
}
|
181
186
|
return wrapper;
|
182
187
|
}
|
183
188
|
};
|
@@ -172,7 +172,12 @@ export class ValueComponent extends BaseComponent {
|
|
172
172
|
addClass(label, 'htFiltersMenuLabel');
|
173
173
|
label.textContent = value;
|
174
174
|
wrapper.appendChild(label);
|
175
|
-
|
175
|
+
|
176
|
+
// The MultipleSelectUI should not extend the menu width (it should adjust to the menu item width only).
|
177
|
+
// That's why it's skipped from rendering when the GhostTable tries to render it.
|
178
|
+
if (!wrapper.parentElement.hasAttribute('ghost-table')) {
|
179
|
+
arrayEach(this.elements, ui => wrapper.appendChild(ui.element));
|
180
|
+
}
|
176
181
|
return wrapper;
|
177
182
|
}
|
178
183
|
};
|
@@ -5,9 +5,10 @@ import {
|
|
5
5
|
ColumnConditions,
|
6
6
|
} from './filters';
|
7
7
|
|
8
|
-
export type ConditionName = 'begins_with' | 'between' | 'by_value' | 'contains' |
|
9
|
-
'
|
10
|
-
'
|
8
|
+
export type ConditionName = 'begins_with' | 'between' | 'by_value' | 'contains' |
|
9
|
+
'date_after' | 'date_before' | 'date_today' | 'date_tomorrow' | 'date_yesterday' |
|
10
|
+
'empty' | 'ends_with' | 'eq' | 'gt' | 'gte' | 'lt' | 'lte' |
|
11
|
+
'not_between' | 'not_contains' | 'not_empty' | 'neq' | 'none';
|
11
12
|
|
12
13
|
export interface Condition {
|
13
14
|
name: ConditionName;
|
@@ -45,6 +45,13 @@ class ConditionCollection {
|
|
45
45
|
* @type {LinkedPhysicalIndexToValueMap}
|
46
46
|
*/
|
47
47
|
_defineProperty(this, "filteringStates", new _translations.LinkedPhysicalIndexToValueMap());
|
48
|
+
/**
|
49
|
+
* Stores the previous state of the condition stack before the latest filter operation.
|
50
|
+
* This is used in the `beforeFilter` plugin to allow performing the undo operation.
|
51
|
+
*
|
52
|
+
* @type {null|Array}
|
53
|
+
*/
|
54
|
+
_defineProperty(this, "previousConditionStack", null);
|
48
55
|
this.hot = hot;
|
49
56
|
this.isMapRegistrable = isMapRegistrable;
|
50
57
|
if (this.isMapRegistrable === true) {
|
@@ -113,6 +120,13 @@ class ConditionCollection {
|
|
113
120
|
const localeForColumn = this.hot.getCellMeta(0, column).locale;
|
114
121
|
const args = (0, _array.arrayMap)(conditionDefinition.args, v => typeof v === 'string' ? v.toLocaleLowerCase(localeForColumn) : v);
|
115
122
|
const name = conditionDefinition.name || conditionDefinition.command.key;
|
123
|
+
|
124
|
+
// If there's no previous condition stack defined (which means the condition stack was not cleared after the
|
125
|
+
// previous filter operation or that there was no filter operation performed yet), store the current conditions as
|
126
|
+
// the previous condition stack.
|
127
|
+
if (this.previousConditionStack === null) {
|
128
|
+
this.setPreviousConditionStack(this.exportAllConditions());
|
129
|
+
}
|
116
130
|
this.runLocalHooks('beforeAdd', column);
|
117
131
|
const columnType = this.getOperation(column);
|
118
132
|
if (columnType) {
|
@@ -241,6 +255,8 @@ class ConditionCollection {
|
|
241
255
|
* @fires ConditionCollection#afterRemove
|
242
256
|
*/
|
243
257
|
removeConditions(column) {
|
258
|
+
// Store the current conditions as the previous condition stack before it's cleared.
|
259
|
+
this.setPreviousConditionStack(this.exportAllConditions());
|
244
260
|
this.runLocalHooks('beforeRemove', column);
|
245
261
|
this.filteringStates.clearValue(column);
|
246
262
|
this.runLocalHooks('afterRemove', column);
|
@@ -274,6 +290,16 @@ class ConditionCollection {
|
|
274
290
|
return conditions.length > 0;
|
275
291
|
}
|
276
292
|
|
293
|
+
/**
|
294
|
+
* Updates the `previousConditionStack` property with the provided stack.
|
295
|
+
* It is used to store the current conditions before they are modified, allowing for undo operations.
|
296
|
+
*
|
297
|
+
* @param {Array|null} previousConditionStack The stack of previous conditions.
|
298
|
+
*/
|
299
|
+
setPreviousConditionStack(previousConditionStack) {
|
300
|
+
this.previousConditionStack = previousConditionStack;
|
301
|
+
}
|
302
|
+
|
277
303
|
/**
|
278
304
|
* Destroy object.
|
279
305
|
*/
|
@@ -41,6 +41,13 @@ class ConditionCollection {
|
|
41
41
|
* @type {LinkedPhysicalIndexToValueMap}
|
42
42
|
*/
|
43
43
|
_defineProperty(this, "filteringStates", new IndexToValueMap());
|
44
|
+
/**
|
45
|
+
* Stores the previous state of the condition stack before the latest filter operation.
|
46
|
+
* This is used in the `beforeFilter` plugin to allow performing the undo operation.
|
47
|
+
*
|
48
|
+
* @type {null|Array}
|
49
|
+
*/
|
50
|
+
_defineProperty(this, "previousConditionStack", null);
|
44
51
|
this.hot = hot;
|
45
52
|
this.isMapRegistrable = isMapRegistrable;
|
46
53
|
if (this.isMapRegistrable === true) {
|
@@ -109,6 +116,13 @@ class ConditionCollection {
|
|
109
116
|
const localeForColumn = this.hot.getCellMeta(0, column).locale;
|
110
117
|
const args = arrayMap(conditionDefinition.args, v => typeof v === 'string' ? v.toLocaleLowerCase(localeForColumn) : v);
|
111
118
|
const name = conditionDefinition.name || conditionDefinition.command.key;
|
119
|
+
|
120
|
+
// If there's no previous condition stack defined (which means the condition stack was not cleared after the
|
121
|
+
// previous filter operation or that there was no filter operation performed yet), store the current conditions as
|
122
|
+
// the previous condition stack.
|
123
|
+
if (this.previousConditionStack === null) {
|
124
|
+
this.setPreviousConditionStack(this.exportAllConditions());
|
125
|
+
}
|
112
126
|
this.runLocalHooks('beforeAdd', column);
|
113
127
|
const columnType = this.getOperation(column);
|
114
128
|
if (columnType) {
|
@@ -237,6 +251,8 @@ class ConditionCollection {
|
|
237
251
|
* @fires ConditionCollection#afterRemove
|
238
252
|
*/
|
239
253
|
removeConditions(column) {
|
254
|
+
// Store the current conditions as the previous condition stack before it's cleared.
|
255
|
+
this.setPreviousConditionStack(this.exportAllConditions());
|
240
256
|
this.runLocalHooks('beforeRemove', column);
|
241
257
|
this.filteringStates.clearValue(column);
|
242
258
|
this.runLocalHooks('afterRemove', column);
|
@@ -270,6 +286,16 @@ class ConditionCollection {
|
|
270
286
|
return conditions.length > 0;
|
271
287
|
}
|
272
288
|
|
289
|
+
/**
|
290
|
+
* Updates the `previousConditionStack` property with the provided stack.
|
291
|
+
* It is used to store the current conditions before they are modified, allowing for undo operations.
|
292
|
+
*
|
293
|
+
* @param {Array|null} previousConditionStack The stack of previous conditions.
|
294
|
+
*/
|
295
|
+
setPreviousConditionStack(previousConditionStack) {
|
296
|
+
this.previousConditionStack = previousConditionStack;
|
297
|
+
}
|
298
|
+
|
273
299
|
/**
|
274
300
|
* Destroy object.
|
275
301
|
*/
|
@@ -483,7 +483,7 @@ class Filters extends _base.BasePlugin {
|
|
483
483
|
const needToFilter = !this.conditionCollection.isEmpty();
|
484
484
|
let visibleVisualRows = [];
|
485
485
|
const conditions = this.conditionCollection.exportAllConditions();
|
486
|
-
const allowFiltering = this.hot.runHooks('beforeFilter', conditions);
|
486
|
+
const allowFiltering = this.hot.runHooks('beforeFilter', conditions, this.conditionCollection.previousConditionStack);
|
487
487
|
if (allowFiltering !== false) {
|
488
488
|
if (needToFilter) {
|
489
489
|
const trimmedRows = [];
|
@@ -508,6 +508,7 @@ class Filters extends _base.BasePlugin {
|
|
508
508
|
}
|
509
509
|
}
|
510
510
|
this.hot.runHooks('afterFilter', conditions);
|
511
|
+
this.conditionCollection.setPreviousConditionStack(null);
|
511
512
|
this.hot.view.adjustElementsSize();
|
512
513
|
this.hot.render();
|
513
514
|
if (this.hot.selection.isSelected()) {
|
@@ -802,7 +803,9 @@ function _onAfterChange(changes) {
|
|
802
803
|
}
|
803
804
|
}
|
804
805
|
function _onAfterDropdownMenuShow() {
|
806
|
+
const menu = this.dropdownMenuPlugin.menu;
|
805
807
|
this.restoreComponents(Array.from(this.components.values()));
|
808
|
+
menu.updateMenuDimensions();
|
806
809
|
}
|
807
810
|
/**
|
808
811
|
* After dropdown menu hide listener.
|
@@ -477,7 +477,7 @@ export class Filters extends BasePlugin {
|
|
477
477
|
const needToFilter = !this.conditionCollection.isEmpty();
|
478
478
|
let visibleVisualRows = [];
|
479
479
|
const conditions = this.conditionCollection.exportAllConditions();
|
480
|
-
const allowFiltering = this.hot.runHooks('beforeFilter', conditions);
|
480
|
+
const allowFiltering = this.hot.runHooks('beforeFilter', conditions, this.conditionCollection.previousConditionStack);
|
481
481
|
if (allowFiltering !== false) {
|
482
482
|
if (needToFilter) {
|
483
483
|
const trimmedRows = [];
|
@@ -502,6 +502,7 @@ export class Filters extends BasePlugin {
|
|
502
502
|
}
|
503
503
|
}
|
504
504
|
this.hot.runHooks('afterFilter', conditions);
|
505
|
+
this.conditionCollection.setPreviousConditionStack(null);
|
505
506
|
this.hot.view.adjustElementsSize();
|
506
507
|
this.hot.render();
|
507
508
|
if (this.hot.selection.isSelected()) {
|
@@ -795,7 +796,9 @@ function _onAfterChange(changes) {
|
|
795
796
|
}
|
796
797
|
}
|
797
798
|
function _onAfterDropdownMenuShow() {
|
799
|
+
const menu = this.dropdownMenuPlugin.menu;
|
798
800
|
this.restoreComponents(Array.from(this.components.values()));
|
801
|
+
menu.updateMenuDimensions();
|
799
802
|
}
|
800
803
|
/**
|
801
804
|
* After dropdown menu hide listener.
|
@@ -128,10 +128,9 @@ class MultipleSelectUI extends _base.BaseUI {
|
|
128
128
|
* @param {Array} items Array of objects with `checked` and `label` property.
|
129
129
|
*/
|
130
130
|
setItems(items) {
|
131
|
+
var _classPrivateFieldGet2;
|
131
132
|
_classPrivateFieldSet(_items, this, items);
|
132
|
-
|
133
|
-
_classPrivateFieldGet(_itemsBox, this).loadData(_classPrivateFieldGet(_items, this));
|
134
|
-
}
|
133
|
+
(_classPrivateFieldGet2 = _classPrivateFieldGet(_itemsBox, this)) === null || _classPrivateFieldGet2 === void 0 || _classPrivateFieldGet2.loadData(_classPrivateFieldGet(_items, this));
|
135
134
|
}
|
136
135
|
|
137
136
|
/**
|
@@ -223,13 +222,13 @@ class MultipleSelectUI extends _base.BaseUI {
|
|
223
222
|
this._element.appendChild(selectionControl.element);
|
224
223
|
this._element.appendChild(itemsBoxWrapper);
|
225
224
|
const hotInitializer = wrapper => {
|
225
|
+
var _classPrivateFieldGet3;
|
226
226
|
if (!this._element) {
|
227
227
|
return;
|
228
228
|
}
|
229
|
-
|
230
|
-
_classPrivateFieldGet(_itemsBox, this).destroy();
|
231
|
-
}
|
229
|
+
(_classPrivateFieldGet3 = _classPrivateFieldGet(_itemsBox, this)) === null || _classPrivateFieldGet3 === void 0 || _classPrivateFieldGet3.destroy();
|
232
230
|
(0, _element.addClass)(wrapper, 'htUIMultipleSelectHot');
|
231
|
+
|
233
232
|
// Constructs and initializes a new Handsontable instance
|
234
233
|
_classPrivateFieldSet(_itemsBox, this, new this.hot.constructor(wrapper, {
|
235
234
|
data: _classPrivateFieldGet(_items, this),
|
@@ -323,9 +322,8 @@ class MultipleSelectUI extends _base.BaseUI {
|
|
323
322
|
* Destroy instance.
|
324
323
|
*/
|
325
324
|
destroy() {
|
326
|
-
|
327
|
-
|
328
|
-
}
|
325
|
+
var _classPrivateFieldGet4;
|
326
|
+
(_classPrivateFieldGet4 = _classPrivateFieldGet(_itemsBox, this)) === null || _classPrivateFieldGet4 === void 0 || _classPrivateFieldGet4.destroy();
|
329
327
|
_classPrivateFieldGet(_searchInput, this).destroy();
|
330
328
|
_classPrivateFieldGet(_clearAllUI, this).destroy();
|
331
329
|
_classPrivateFieldGet(_selectAllUI, this).destroy();
|
@@ -123,10 +123,9 @@ export class MultipleSelectUI extends BaseUI {
|
|
123
123
|
* @param {Array} items Array of objects with `checked` and `label` property.
|
124
124
|
*/
|
125
125
|
setItems(items) {
|
126
|
+
var _classPrivateFieldGet2;
|
126
127
|
_classPrivateFieldSet(_items, this, items);
|
127
|
-
|
128
|
-
_classPrivateFieldGet(_itemsBox, this).loadData(_classPrivateFieldGet(_items, this));
|
129
|
-
}
|
128
|
+
(_classPrivateFieldGet2 = _classPrivateFieldGet(_itemsBox, this)) === null || _classPrivateFieldGet2 === void 0 || _classPrivateFieldGet2.loadData(_classPrivateFieldGet(_items, this));
|
130
129
|
}
|
131
130
|
|
132
131
|
/**
|
@@ -218,13 +217,13 @@ export class MultipleSelectUI extends BaseUI {
|
|
218
217
|
this._element.appendChild(selectionControl.element);
|
219
218
|
this._element.appendChild(itemsBoxWrapper);
|
220
219
|
const hotInitializer = wrapper => {
|
220
|
+
var _classPrivateFieldGet3;
|
221
221
|
if (!this._element) {
|
222
222
|
return;
|
223
223
|
}
|
224
|
-
|
225
|
-
_classPrivateFieldGet(_itemsBox, this).destroy();
|
226
|
-
}
|
224
|
+
(_classPrivateFieldGet3 = _classPrivateFieldGet(_itemsBox, this)) === null || _classPrivateFieldGet3 === void 0 || _classPrivateFieldGet3.destroy();
|
227
225
|
addClass(wrapper, 'htUIMultipleSelectHot');
|
226
|
+
|
228
227
|
// Constructs and initializes a new Handsontable instance
|
229
228
|
_classPrivateFieldSet(_itemsBox, this, new this.hot.constructor(wrapper, {
|
230
229
|
data: _classPrivateFieldGet(_items, this),
|
@@ -318,9 +317,8 @@ export class MultipleSelectUI extends BaseUI {
|
|
318
317
|
* Destroy instance.
|
319
318
|
*/
|
320
319
|
destroy() {
|
321
|
-
|
322
|
-
|
323
|
-
}
|
320
|
+
var _classPrivateFieldGet4;
|
321
|
+
(_classPrivateFieldGet4 = _classPrivateFieldGet(_itemsBox, this)) === null || _classPrivateFieldGet4 === void 0 || _classPrivateFieldGet4.destroy();
|
324
322
|
_classPrivateFieldGet(_searchInput, this).destroy();
|
325
323
|
_classPrivateFieldGet(_clearAllUI, this).destroy();
|
326
324
|
_classPrivateFieldGet(_selectAllUI, this).destroy();
|
package/plugins/filters/utils.js
CHANGED
@@ -8,13 +8,13 @@ exports.toEmptyString = toEmptyString;
|
|
8
8
|
exports.toVisualValue = toVisualValue;
|
9
9
|
exports.unifyColumnValues = unifyColumnValues;
|
10
10
|
require("core-js/modules/es.array.push.js");
|
11
|
-
require("core-js/modules/
|
12
|
-
require("core-js/modules/
|
13
|
-
require("core-js/modules/
|
14
|
-
require("core-js/modules/
|
15
|
-
require("core-js/modules/
|
16
|
-
require("core-js/modules/
|
17
|
-
require("core-js/modules/
|
11
|
+
require("core-js/modules/es.set.difference.v2.js");
|
12
|
+
require("core-js/modules/es.set.intersection.v2.js");
|
13
|
+
require("core-js/modules/es.set.is-disjoint-from.v2.js");
|
14
|
+
require("core-js/modules/es.set.is-subset-of.v2.js");
|
15
|
+
require("core-js/modules/es.set.is-superset-of.v2.js");
|
16
|
+
require("core-js/modules/es.set.symmetric-difference.v2.js");
|
17
|
+
require("core-js/modules/es.set.union.v2.js");
|
18
18
|
var _feature = require("../../helpers/feature");
|
19
19
|
var _array = require("../../helpers/array");
|
20
20
|
const sortCompare = (0, _feature.getComparisonFunction)();
|
@@ -1,11 +1,11 @@
|
|
1
1
|
import "core-js/modules/es.array.push.js";
|
2
|
-
import "core-js/modules/
|
3
|
-
import "core-js/modules/
|
4
|
-
import "core-js/modules/
|
5
|
-
import "core-js/modules/
|
6
|
-
import "core-js/modules/
|
7
|
-
import "core-js/modules/
|
8
|
-
import "core-js/modules/
|
2
|
+
import "core-js/modules/es.set.difference.v2.js";
|
3
|
+
import "core-js/modules/es.set.intersection.v2.js";
|
4
|
+
import "core-js/modules/es.set.is-disjoint-from.v2.js";
|
5
|
+
import "core-js/modules/es.set.is-subset-of.v2.js";
|
6
|
+
import "core-js/modules/es.set.is-superset-of.v2.js";
|
7
|
+
import "core-js/modules/es.set.symmetric-difference.v2.js";
|
8
|
+
import "core-js/modules/es.set.union.v2.js";
|
9
9
|
import { getComparisonFunction } from "../../helpers/feature.mjs";
|
10
10
|
import { arrayUnique, arrayEach } from "../../helpers/array.mjs";
|
11
11
|
const sortCompare = getComparisonFunction();
|
@@ -4,13 +4,13 @@ exports.__esModule = true;
|
|
4
4
|
require("core-js/modules/es.error.cause.js");
|
5
5
|
require("core-js/modules/es.array.push.js");
|
6
6
|
require("core-js/modules/es.json.stringify.js");
|
7
|
-
require("core-js/modules/
|
8
|
-
require("core-js/modules/
|
9
|
-
require("core-js/modules/
|
10
|
-
require("core-js/modules/
|
11
|
-
require("core-js/modules/
|
12
|
-
require("core-js/modules/
|
13
|
-
require("core-js/modules/
|
7
|
+
require("core-js/modules/es.set.difference.v2.js");
|
8
|
+
require("core-js/modules/es.set.intersection.v2.js");
|
9
|
+
require("core-js/modules/es.set.is-disjoint-from.v2.js");
|
10
|
+
require("core-js/modules/es.set.is-subset-of.v2.js");
|
11
|
+
require("core-js/modules/es.set.is-superset-of.v2.js");
|
12
|
+
require("core-js/modules/es.set.symmetric-difference.v2.js");
|
13
|
+
require("core-js/modules/es.set.union.v2.js");
|
14
14
|
var _base = require("../base");
|
15
15
|
var _staticRegister = _interopRequireDefault(require("../../utils/staticRegister"));
|
16
16
|
var _console = require("../../helpers/console");
|
@@ -1,13 +1,13 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
2
|
import "core-js/modules/es.array.push.js";
|
3
3
|
import "core-js/modules/es.json.stringify.js";
|
4
|
-
import "core-js/modules/
|
5
|
-
import "core-js/modules/
|
6
|
-
import "core-js/modules/
|
7
|
-
import "core-js/modules/
|
8
|
-
import "core-js/modules/
|
9
|
-
import "core-js/modules/
|
10
|
-
import "core-js/modules/
|
4
|
+
import "core-js/modules/es.set.difference.v2.js";
|
5
|
+
import "core-js/modules/es.set.intersection.v2.js";
|
6
|
+
import "core-js/modules/es.set.is-disjoint-from.v2.js";
|
7
|
+
import "core-js/modules/es.set.is-subset-of.v2.js";
|
8
|
+
import "core-js/modules/es.set.is-superset-of.v2.js";
|
9
|
+
import "core-js/modules/es.set.symmetric-difference.v2.js";
|
10
|
+
import "core-js/modules/es.set.union.v2.js";
|
11
11
|
function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
|
12
12
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
13
13
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
@@ -3,13 +3,13 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
require("core-js/modules/es.error.cause.js");
|
5
5
|
require("core-js/modules/es.array.push.js");
|
6
|
-
require("core-js/modules/
|
7
|
-
require("core-js/modules/
|
8
|
-
require("core-js/modules/
|
9
|
-
require("core-js/modules/
|
10
|
-
require("core-js/modules/
|
11
|
-
require("core-js/modules/
|
12
|
-
require("core-js/modules/
|
6
|
+
require("core-js/modules/es.set.difference.v2.js");
|
7
|
+
require("core-js/modules/es.set.intersection.v2.js");
|
8
|
+
require("core-js/modules/es.set.is-disjoint-from.v2.js");
|
9
|
+
require("core-js/modules/es.set.is-subset-of.v2.js");
|
10
|
+
require("core-js/modules/es.set.is-superset-of.v2.js");
|
11
|
+
require("core-js/modules/es.set.symmetric-difference.v2.js");
|
12
|
+
require("core-js/modules/es.set.union.v2.js");
|
13
13
|
var _base = require("../base");
|
14
14
|
var _element = require("../../helpers/dom/element");
|
15
15
|
var _number = require("../../helpers/number");
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
2
|
import "core-js/modules/es.array.push.js";
|
3
|
-
import "core-js/modules/
|
4
|
-
import "core-js/modules/
|
5
|
-
import "core-js/modules/
|
6
|
-
import "core-js/modules/
|
7
|
-
import "core-js/modules/
|
8
|
-
import "core-js/modules/
|
9
|
-
import "core-js/modules/
|
3
|
+
import "core-js/modules/es.set.difference.v2.js";
|
4
|
+
import "core-js/modules/es.set.intersection.v2.js";
|
5
|
+
import "core-js/modules/es.set.is-disjoint-from.v2.js";
|
6
|
+
import "core-js/modules/es.set.is-subset-of.v2.js";
|
7
|
+
import "core-js/modules/es.set.is-superset-of.v2.js";
|
8
|
+
import "core-js/modules/es.set.symmetric-difference.v2.js";
|
9
|
+
import "core-js/modules/es.set.union.v2.js";
|
10
10
|
function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
|
11
11
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
12
12
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -3,13 +3,13 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
require("core-js/modules/es.error.cause.js");
|
5
5
|
require("core-js/modules/es.array.push.js");
|
6
|
-
require("core-js/modules/
|
7
|
-
require("core-js/modules/
|
8
|
-
require("core-js/modules/
|
9
|
-
require("core-js/modules/
|
10
|
-
require("core-js/modules/
|
11
|
-
require("core-js/modules/
|
12
|
-
require("core-js/modules/
|
6
|
+
require("core-js/modules/es.set.difference.v2.js");
|
7
|
+
require("core-js/modules/es.set.intersection.v2.js");
|
8
|
+
require("core-js/modules/es.set.is-disjoint-from.v2.js");
|
9
|
+
require("core-js/modules/es.set.is-subset-of.v2.js");
|
10
|
+
require("core-js/modules/es.set.is-superset-of.v2.js");
|
11
|
+
require("core-js/modules/es.set.symmetric-difference.v2.js");
|
12
|
+
require("core-js/modules/es.set.union.v2.js");
|
13
13
|
var _base = require("../base");
|
14
14
|
var _element = require("../../helpers/dom/element");
|
15
15
|
var _number = require("../../helpers/number");
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
2
|
import "core-js/modules/es.array.push.js";
|
3
|
-
import "core-js/modules/
|
4
|
-
import "core-js/modules/
|
5
|
-
import "core-js/modules/
|
6
|
-
import "core-js/modules/
|
7
|
-
import "core-js/modules/
|
8
|
-
import "core-js/modules/
|
9
|
-
import "core-js/modules/
|
3
|
+
import "core-js/modules/es.set.difference.v2.js";
|
4
|
+
import "core-js/modules/es.set.intersection.v2.js";
|
5
|
+
import "core-js/modules/es.set.is-disjoint-from.v2.js";
|
6
|
+
import "core-js/modules/es.set.is-subset-of.v2.js";
|
7
|
+
import "core-js/modules/es.set.is-superset-of.v2.js";
|
8
|
+
import "core-js/modules/es.set.symmetric-difference.v2.js";
|
9
|
+
import "core-js/modules/es.set.union.v2.js";
|
10
10
|
function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
|
11
11
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
12
12
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -4,13 +4,13 @@ exports.__esModule = true;
|
|
4
4
|
require("core-js/modules/es.error.cause.js");
|
5
5
|
require("core-js/modules/es.array.push.js");
|
6
6
|
require("core-js/modules/es.array.unscopables.flat-map.js");
|
7
|
-
require("core-js/modules/
|
8
|
-
require("core-js/modules/
|
9
|
-
require("core-js/modules/
|
10
|
-
require("core-js/modules/
|
11
|
-
require("core-js/modules/
|
12
|
-
require("core-js/modules/
|
13
|
-
require("core-js/modules/
|
7
|
+
require("core-js/modules/es.set.difference.v2.js");
|
8
|
+
require("core-js/modules/es.set.intersection.v2.js");
|
9
|
+
require("core-js/modules/es.set.is-disjoint-from.v2.js");
|
10
|
+
require("core-js/modules/es.set.is-subset-of.v2.js");
|
11
|
+
require("core-js/modules/es.set.is-superset-of.v2.js");
|
12
|
+
require("core-js/modules/es.set.symmetric-difference.v2.js");
|
13
|
+
require("core-js/modules/es.set.union.v2.js");
|
14
14
|
var _cellCoords = _interopRequireDefault(require("./cellCoords"));
|
15
15
|
var _number = require("../../helpers/number");
|
16
16
|
var _console = require("../../helpers/console");
|
@@ -424,18 +424,20 @@ class MergedCellsCollection {
|
|
424
424
|
break;
|
425
425
|
default:
|
426
426
|
}
|
427
|
-
|
428
|
-
|
427
|
+
const removedMergedCells = [];
|
428
|
+
this.mergedCells.forEach(currentMerge => {
|
429
429
|
currentMerge.shift(shiftVector, index);
|
430
|
-
|
431
|
-
|
432
|
-
(0, _number.rangeEachReverse)(this.mergedCells.length - 1, 0, i => {
|
433
|
-
const currentMerge = this.mergedCells[i];
|
434
|
-
if (currentMerge && currentMerge.removed) {
|
435
|
-
this.mergedCells.splice(this.mergedCells.indexOf(currentMerge), 1);
|
436
|
-
_assertClassBrand(_MergedCellsCollection_brand, this, _removeMergedCellFromMatrix).call(this, currentMerge);
|
430
|
+
if (currentMerge.removed) {
|
431
|
+
removedMergedCells.push(currentMerge);
|
437
432
|
}
|
438
433
|
});
|
434
|
+
removedMergedCells.forEach(removedMerge => {
|
435
|
+
this.mergedCells.splice(this.mergedCells.indexOf(removedMerge), 1);
|
436
|
+
});
|
437
|
+
this.mergedCellsMatrix.clear();
|
438
|
+
this.mergedCells.forEach(currentMerge => {
|
439
|
+
_assertClassBrand(_MergedCellsCollection_brand, this, _addMergedCellToMatrix).call(this, currentMerge);
|
440
|
+
});
|
439
441
|
}
|
440
442
|
|
441
443
|
/**
|