handsontable 12.4.0 → 13.0.0-next-900887e-20230613
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/border.js +1 -0
- package/3rdparty/walkontable/src/border.mjs +1 -0
- package/3rdparty/walkontable/src/selection.js +1 -0
- package/3rdparty/walkontable/src/selection.mjs +1 -0
- package/3rdparty/walkontable/src/table.js +1 -0
- package/3rdparty/walkontable/src/table.mjs +1 -0
- package/CHANGELOG.md +15 -1
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core.d.ts +3 -4
- package/core.js +90 -107
- package/core.mjs +94 -111
- package/dataMap/dataMap.js +1 -0
- package/dataMap/dataMap.mjs +1 -0
- package/dataMap/metaManager/lazyFactoryMap.js +1 -0
- package/dataMap/metaManager/lazyFactoryMap.mjs +1 -0
- package/dataMap/metaManager/metaLayers/cellMeta.js +1 -0
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -0
- package/dataMap/metaManager/metaSchema.js +6 -6
- package/dataMap/metaManager/metaSchema.mjs +6 -6
- package/dist/handsontable.css +24 -2
- package/dist/handsontable.full.css +24 -2
- package/dist/handsontable.full.js +3294 -3169
- package/dist/handsontable.full.min.css +4 -4
- package/dist/handsontable.full.min.js +96 -92
- package/dist/handsontable.js +856 -952
- package/dist/handsontable.min.css +4 -4
- package/dist/handsontable.min.js +4 -4
- package/editorManager.js +1 -0
- package/editorManager.mjs +1 -0
- package/editors/baseEditor/baseEditor.js +1 -0
- package/editors/baseEditor/baseEditor.mjs +1 -0
- package/editors/textEditor/textEditor.js +1 -0
- package/editors/textEditor/textEditor.mjs +1 -0
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/helpers/object.js +2 -0
- package/helpers/object.mjs +2 -0
- package/package.json +1 -1
- package/pluginHooks.d.ts +0 -1
- package/pluginHooks.js +1 -12
- package/pluginHooks.mjs +1 -12
- package/plugins/autoColumnSize/autoColumnSize.js +1 -0
- package/plugins/autoColumnSize/autoColumnSize.mjs +1 -0
- package/plugins/autoRowSize/autoRowSize.js +1 -0
- package/plugins/autoRowSize/autoRowSize.mjs +1 -0
- package/plugins/autofill/autofill.js +2 -2
- package/plugins/autofill/autofill.mjs +3 -3
- package/plugins/autofill/utils.js +1 -39
- package/plugins/autofill/utils.mjs +0 -37
- package/plugins/base/base.js +1 -0
- package/plugins/base/base.mjs +1 -0
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -0
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +1 -0
- package/plugins/collapsibleColumns/collapsibleColumns.js +1 -0
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +1 -0
- package/plugins/columnSorting/columnSorting.js +1 -0
- package/plugins/columnSorting/columnSorting.mjs +1 -0
- package/plugins/columnSorting/columnStatesManager.js +1 -0
- package/plugins/columnSorting/columnStatesManager.mjs +1 -0
- package/plugins/columnSorting/rootComparator.js +1 -0
- package/plugins/columnSorting/rootComparator.mjs +1 -0
- package/plugins/contextMenu/predefinedItems/removeColumn.js +1 -0
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +1 -0
- package/plugins/contextMenu/predefinedItems/removeRow.js +1 -0
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +1 -0
- package/plugins/copyPaste/copyPaste.js +1 -0
- package/plugins/copyPaste/copyPaste.mjs +1 -0
- package/plugins/customBorders/customBorders.js +1 -0
- package/plugins/customBorders/customBorders.mjs +1 -0
- package/plugins/exportFile/dataProvider.js +1 -0
- package/plugins/exportFile/dataProvider.mjs +1 -0
- package/plugins/filters/component/value.js +1 -0
- package/plugins/filters/component/value.mjs +1 -0
- package/plugins/filters/condition/beginsWith.js +1 -0
- package/plugins/filters/condition/beginsWith.mjs +1 -0
- package/plugins/filters/condition/between.js +1 -0
- package/plugins/filters/condition/between.mjs +1 -0
- package/plugins/filters/condition/byValue.js +1 -0
- package/plugins/filters/condition/byValue.mjs +1 -0
- package/plugins/filters/condition/contains.js +1 -0
- package/plugins/filters/condition/contains.mjs +1 -0
- package/plugins/filters/condition/date/after.js +1 -0
- package/plugins/filters/condition/date/after.mjs +1 -0
- package/plugins/filters/condition/date/before.js +1 -0
- package/plugins/filters/condition/date/before.mjs +1 -0
- package/plugins/filters/condition/endsWith.js +1 -0
- package/plugins/filters/condition/endsWith.mjs +1 -0
- package/plugins/filters/condition/equal.js +1 -0
- package/plugins/filters/condition/equal.mjs +1 -0
- package/plugins/filters/condition/greaterThan.js +1 -0
- package/plugins/filters/condition/greaterThan.mjs +1 -0
- package/plugins/filters/condition/greaterThanOrEqual.js +1 -0
- package/plugins/filters/condition/greaterThanOrEqual.mjs +1 -0
- package/plugins/filters/condition/lessThan.js +1 -0
- package/plugins/filters/condition/lessThan.mjs +1 -0
- package/plugins/filters/condition/lessThanOrEqual.js +1 -0
- package/plugins/filters/condition/lessThanOrEqual.mjs +1 -0
- package/plugins/filters/conditionCollection.js +1 -0
- package/plugins/filters/conditionCollection.mjs +1 -0
- package/plugins/filters/filters.js +1 -0
- package/plugins/filters/filters.mjs +1 -0
- package/plugins/filters/ui/multipleSelect.js +1 -0
- package/plugins/filters/ui/multipleSelect.mjs +1 -0
- package/plugins/formulas/formulas.js +1 -0
- package/plugins/formulas/formulas.mjs +1 -0
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -0
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +1 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +1 -0
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -0
- package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +1 -0
- package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -0
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -0
- package/plugins/manualRowMove/manualRowMove.js +5 -1
- package/plugins/manualRowMove/manualRowMove.mjs +5 -1
- package/plugins/mergeCells/calculations/autofill.js +1 -0
- package/plugins/mergeCells/calculations/autofill.mjs +1 -0
- package/plugins/mergeCells/cellsCollection.js +1 -0
- package/plugins/mergeCells/cellsCollection.mjs +1 -0
- package/plugins/mergeCells/mergeCells.js +1 -0
- package/plugins/mergeCells/mergeCells.mjs +1 -0
- package/plugins/multiColumnSorting/rootComparator.js +1 -0
- package/plugins/multiColumnSorting/rootComparator.mjs +1 -0
- package/plugins/nestedHeaders/stateManager/headersTree.js +1 -0
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +1 -0
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +1 -0
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +1 -0
- package/plugins/nestedRows/data/dataManager.js +1 -0
- package/plugins/nestedRows/data/dataManager.mjs +1 -0
- package/plugins/nestedRows/nestedRows.js +1 -0
- package/plugins/nestedRows/nestedRows.mjs +1 -0
- package/plugins/nestedRows/ui/collapsing.js +1 -0
- package/plugins/nestedRows/ui/collapsing.mjs +1 -0
- package/plugins/nestedRows/utils/rowMoveController.js +1 -0
- package/plugins/nestedRows/utils/rowMoveController.mjs +1 -0
- package/plugins/persistentState/storage.js +1 -0
- package/plugins/persistentState/storage.mjs +1 -0
- package/plugins/registry.js +1 -0
- package/plugins/registry.mjs +1 -0
- package/plugins/undoRedo/undoRedo.js +1 -0
- package/plugins/undoRedo/undoRedo.mjs +1 -0
- package/selection/highlight/highlight.js +1 -0
- package/selection/highlight/highlight.mjs +1 -0
- package/selection/selection.js +1 -0
- package/selection/selection.mjs +1 -0
- package/selection/utils.js +1 -0
- package/selection/utils.mjs +1 -0
- package/settings.d.ts +1 -0
- package/shortcuts/context.js +1 -0
- package/shortcuts/context.mjs +1 -0
- package/tableView.js +1 -0
- package/tableView.mjs +1 -0
- package/translations/indexMapper.js +8 -56
- package/translations/indexMapper.mjs +9 -56
- package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
- package/translations/maps/utils/indexesSequence.js +1 -0
- package/translations/maps/utils/indexesSequence.mjs +1 -0
- package/translations/maps/utils/physicallyIndexed.js +1 -0
- package/translations/maps/utils/physicallyIndexed.mjs +1 -0
- package/utils/dataStructures/priorityMap.js +1 -0
- package/utils/dataStructures/priorityMap.mjs +1 -0
- package/utils/dataStructures/tree.js +1 -0
- package/utils/dataStructures/tree.mjs +1 -0
- package/utils/dataStructures/uniqueMap.js +1 -0
- package/utils/dataStructures/uniqueMap.mjs +1 -0
- package/utils/dataStructures/uniqueSet.js +1 -0
- package/utils/dataStructures/uniqueSet.mjs +1 -0
- package/utils/ghostTable.js +1 -0
- package/utils/ghostTable.mjs +1 -0
- package/utils/staticRegister.js +1 -0
- package/utils/staticRegister.mjs +1 -0
@@ -5,6 +5,7 @@ require("core-js/modules/es.array.iterator.js");
|
|
5
5
|
require("core-js/modules/es.string.iterator.js");
|
6
6
|
require("core-js/modules/web.dom-collections.iterator.js");
|
7
7
|
require("core-js/modules/es.array.slice.js");
|
8
|
+
require("core-js/modules/es.regexp.to-string.js");
|
8
9
|
require("core-js/modules/es.function.name.js");
|
9
10
|
require("core-js/modules/es.array.from.js");
|
10
11
|
require("core-js/modules/es.regexp.exec.js");
|
@@ -17,6 +17,7 @@ import "core-js/modules/es.array.iterator.js";
|
|
17
17
|
import "core-js/modules/es.string.iterator.js";
|
18
18
|
import "core-js/modules/web.dom-collections.iterator.js";
|
19
19
|
import "core-js/modules/es.array.slice.js";
|
20
|
+
import "core-js/modules/es.regexp.to-string.js";
|
20
21
|
import "core-js/modules/es.function.name.js";
|
21
22
|
import "core-js/modules/es.array.from.js";
|
22
23
|
import "core-js/modules/es.regexp.exec.js";
|
@@ -5,6 +5,7 @@ require("core-js/modules/es.array.iterator.js");
|
|
5
5
|
require("core-js/modules/es.string.iterator.js");
|
6
6
|
require("core-js/modules/web.dom-collections.iterator.js");
|
7
7
|
require("core-js/modules/es.array.slice.js");
|
8
|
+
require("core-js/modules/es.regexp.to-string.js");
|
8
9
|
require("core-js/modules/es.function.name.js");
|
9
10
|
require("core-js/modules/es.array.from.js");
|
10
11
|
require("core-js/modules/es.regexp.exec.js");
|
@@ -20,6 +20,7 @@ import "core-js/modules/es.array.iterator.js";
|
|
20
20
|
import "core-js/modules/es.string.iterator.js";
|
21
21
|
import "core-js/modules/web.dom-collections.iterator.js";
|
22
22
|
import "core-js/modules/es.array.slice.js";
|
23
|
+
import "core-js/modules/es.regexp.to-string.js";
|
23
24
|
import "core-js/modules/es.function.name.js";
|
24
25
|
import "core-js/modules/es.array.from.js";
|
25
26
|
import "core-js/modules/es.regexp.exec.js";
|
@@ -4,6 +4,7 @@ require("core-js/modules/es.symbol.iterator.js");
|
|
4
4
|
require("core-js/modules/es.array.iterator.js");
|
5
5
|
require("core-js/modules/web.dom-collections.iterator.js");
|
6
6
|
require("core-js/modules/es.array.slice.js");
|
7
|
+
require("core-js/modules/es.regexp.to-string.js");
|
7
8
|
require("core-js/modules/es.regexp.exec.js");
|
8
9
|
exports.__esModule = true;
|
9
10
|
exports.default = void 0;
|
@@ -24,6 +24,7 @@ import "core-js/modules/es.symbol.iterator.js";
|
|
24
24
|
import "core-js/modules/es.array.iterator.js";
|
25
25
|
import "core-js/modules/web.dom-collections.iterator.js";
|
26
26
|
import "core-js/modules/es.array.slice.js";
|
27
|
+
import "core-js/modules/es.regexp.to-string.js";
|
27
28
|
import "core-js/modules/es.regexp.exec.js";
|
28
29
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
29
30
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
package/CHANGELOG.md
CHANGED
@@ -9,6 +9,20 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
9
9
|
|
10
10
|
<!-- UNVERSIONED -->
|
11
11
|
|
12
|
+
## [13.0.0] - 2023-06-20
|
13
|
+
|
14
|
+
### Added
|
15
|
+
- **Breaking change**: Angular: Rewritten the Angular wrapper to be based on Angular@12 and to support Angular versions 12 and above. [#10396](https://github.com/handsontable/handsontable/pull/10396)
|
16
|
+
|
17
|
+
### Changed
|
18
|
+
- **Breaking change**: Swapping `beforeChange` and `afterSetDataAtCell`/`afterSetDataAtRowProp` hooks order [#677](https://github.com/handsontable/handsontable/pull/677)
|
19
|
+
|
20
|
+
### Removed
|
21
|
+
- **Breaking change**: Removed the the deprecated hooks, methods and options for 13.0.0. [#10407](https://github.com/handsontable/handsontable/issues/10407)
|
22
|
+
|
23
|
+
### Fixed
|
24
|
+
- Changed margins for context-menu in RTL mode and fixed problem with wrong position for check inside Read only entry [#10375](https://github.com/handsontable/handsontable/pull/10375)
|
25
|
+
|
12
26
|
## [12.4.0] - 2023-05-23
|
13
27
|
|
14
28
|
### Added
|
@@ -30,7 +44,7 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
30
44
|
|
31
45
|
For more information on Handsontable 12.4.0, see:
|
32
46
|
|
33
|
-
- [Blog post (12.4.0)](
|
47
|
+
- [Blog post (12.4.0)](https://handsontable.com/blog/handsontable-12-4-0-auto-updating-formulas)
|
34
48
|
- [Documentation (12.4)](https://handsontable.com/docs/12.4)
|
35
49
|
- [Release notes (12.4.0)](https://handsontable.com/docs/release-notes/#_12-4-0)
|
36
50
|
|
package/base.js
CHANGED
@@ -44,8 +44,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
|
|
44
44
|
Handsontable.CellCoords = _src.CellCoords;
|
45
45
|
Handsontable.CellRange = _src.CellRange;
|
46
46
|
Handsontable.packageName = 'handsontable';
|
47
|
-
Handsontable.buildDate = "
|
48
|
-
Handsontable.version = "
|
47
|
+
Handsontable.buildDate = "13/06/2023 14:32:06";
|
48
|
+
Handsontable.version = "13.0.0-next-900887e-20230613";
|
49
49
|
Handsontable.languages = {
|
50
50
|
dictionaryKeys: _registry.dictionaryKeys,
|
51
51
|
getLanguageDictionary: _registry.getLanguageDictionary,
|
package/base.mjs
CHANGED
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
|
|
35
35
|
Handsontable.CellCoords = CellCoords;
|
36
36
|
Handsontable.CellRange = CellRange;
|
37
37
|
Handsontable.packageName = 'handsontable';
|
38
|
-
Handsontable.buildDate = "
|
39
|
-
Handsontable.version = "
|
38
|
+
Handsontable.buildDate = "13/06/2023 14:32:21";
|
39
|
+
Handsontable.version = "13.0.0-next-900887e-20230613";
|
40
40
|
Handsontable.languages = {
|
41
41
|
dictionaryKeys: dictionaryKeys,
|
42
42
|
getLanguageDictionary: getLanguageDictionary,
|
package/core.d.ts
CHANGED
@@ -18,8 +18,8 @@ import { Plugins } from './plugins';
|
|
18
18
|
import { CellType } from './cellTypes';
|
19
19
|
import { ShortcutManager } from './shortcuts';
|
20
20
|
|
21
|
-
type AlterActions = '
|
22
|
-
'
|
21
|
+
type AlterActions = 'insert_row_above' | 'insert_row_below' |
|
22
|
+
'insert_col_start' | 'insert_col_end' |
|
23
23
|
'remove_row' | 'remove_col';
|
24
24
|
|
25
25
|
export default class Core {
|
@@ -113,8 +113,7 @@ export default class Core {
|
|
113
113
|
listen(): void;
|
114
114
|
loadData(data: CellValue[][] | RowObject[], source?: string): void;
|
115
115
|
populateFromArray(row: number, col: number, input: CellValue[][], endRow?: number,
|
116
|
-
endCol?: number, source?: string, method?: 'shift_down' | 'shift_right' | 'overwrite'
|
117
|
-
direction?: 'left' | 'right' | 'up' | 'down', deltas?: any[]): void;
|
116
|
+
endCol?: number, source?: string, method?: 'shift_down' | 'shift_right' | 'overwrite'): void;
|
118
117
|
propToCol(prop: string | number): number;
|
119
118
|
redo(): void;
|
120
119
|
refreshDimensions(): void;
|
package/core.js
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
require("core-js/modules/es.symbol.js");
|
4
4
|
require("core-js/modules/es.symbol.description.js");
|
5
5
|
require("core-js/modules/es.symbol.iterator.js");
|
6
|
+
require("core-js/modules/es.regexp.to-string.js");
|
6
7
|
require("core-js/modules/es.function.name.js");
|
7
|
-
require("core-js/modules/es.object.freeze.js");
|
8
8
|
exports.__esModule = true;
|
9
9
|
exports.default = Core;
|
10
10
|
require("core-js/modules/es.array.iterator.js");
|
@@ -23,6 +23,7 @@ require("core-js/modules/es.array.fill.js");
|
|
23
23
|
require("core-js/modules/es.array.map.js");
|
24
24
|
require("core-js/modules/es.regexp.exec.js");
|
25
25
|
require("core-js/modules/es.string.replace.js");
|
26
|
+
require("core-js/modules/es.array.filter.js");
|
26
27
|
require("core-js/modules/es.array.from.js");
|
27
28
|
require("core-js/modules/es.array.index-of.js");
|
28
29
|
require("core-js/modules/es.array.reverse.js");
|
@@ -34,8 +35,6 @@ var _element = require("./helpers/dom/element");
|
|
34
35
|
var _function = require("./helpers/function");
|
35
36
|
var _mixed = require("./helpers/mixed");
|
36
37
|
var _browser = require("./helpers/browser");
|
37
|
-
var _console = require("./helpers/console");
|
38
|
-
var _templateLiteralTag = require("./helpers/templateLiteralTag");
|
39
38
|
var _editorManager = _interopRequireDefault(require("./editorManager"));
|
40
39
|
var _eventManager = _interopRequireDefault(require("./eventManager"));
|
41
40
|
var _object = require("./helpers/object");
|
@@ -60,10 +59,8 @@ var _selection = require("./selection");
|
|
60
59
|
var _dataMap = require("./dataMap");
|
61
60
|
var _uniqueMap = require("./utils/dataStructures/uniqueMap");
|
62
61
|
var _shortcuts = require("./shortcuts");
|
63
|
-
var _templateObject, _templateObject2;
|
64
62
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
65
63
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
66
|
-
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
67
64
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
68
65
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
69
66
|
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
@@ -76,6 +73,13 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
|
|
76
73
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
77
74
|
var SHORTCUTS_GROUP = 'gridDefault';
|
78
75
|
var activeGuid = null;
|
76
|
+
|
77
|
+
/**
|
78
|
+
* A set of deprecated feature names.
|
79
|
+
*
|
80
|
+
* @type {Set<string>}
|
81
|
+
*/
|
82
|
+
// eslint-disable-next-line no-unused-vars
|
79
83
|
var deprecationWarns = new Set();
|
80
84
|
|
81
85
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
@@ -504,13 +508,6 @@ function Core(rootElement, userSettings) {
|
|
504
508
|
|
505
509
|
/* eslint-disable no-case-declarations */
|
506
510
|
switch (action) {
|
507
|
-
case 'insert_row':
|
508
|
-
// backward compatibility
|
509
|
-
if (!deprecationWarns.has(action)) {
|
510
|
-
deprecationWarns.add(action);
|
511
|
-
(0, _console.warn)((0, _templateLiteralTag.toSingleLine)(_templateObject || (_templateObject = _taggedTemplateLiteral(["The `", "` action of the `alter()` method is deprecated and will be removed \n in the next major release of Handsontable. Use the `insert_row_above` action instead."], ["The \\`", "\\` action of the \\`alter()\\` method is deprecated and will be removed\\x20\n in the next major release of Handsontable. Use the \\`insert_row_above\\` action instead."])), action));
|
512
|
-
}
|
513
|
-
// falls through
|
514
511
|
case 'insert_row_below':
|
515
512
|
case 'insert_row_above':
|
516
513
|
var numberOfSourceRows = instance.countSourceRows();
|
@@ -521,11 +518,9 @@ function Core(rootElement, userSettings) {
|
|
521
518
|
// `above` is the default behavior for creating new rows
|
522
519
|
var insertRowMode = action === 'insert_row_below' ? 'below' : 'above';
|
523
520
|
|
524
|
-
// The line below ensures backward compatibility of the `alter()` method's `insert_row` action.
|
525
|
-
// Calling the `insert_row` action with no arguments adds a new row at the end of the data set.
|
526
521
|
// Calling the `insert_row_above` action adds a new row at the beginning of the data set.
|
527
522
|
// eslint-disable-next-line no-param-reassign
|
528
|
-
index = (_index = index) !== null && _index !== void 0 ? _index :
|
523
|
+
index = (_index = index) !== null && _index !== void 0 ? _index : insertRowMode === 'below' ? numberOfSourceRows : 0;
|
529
524
|
var _datamap$createRow = datamap.createRow(index, amount, {
|
530
525
|
source: source,
|
531
526
|
mode: insertRowMode
|
@@ -564,23 +559,14 @@ function Core(rootElement, userSettings) {
|
|
564
559
|
}
|
565
560
|
|
566
561
|
break;
|
567
|
-
case 'insert_col':
|
568
|
-
// backward compatibility
|
569
|
-
if (!deprecationWarns.has(action)) {
|
570
|
-
deprecationWarns.add(action);
|
571
|
-
(0, _console.warn)((0, _templateLiteralTag.toSingleLine)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["The `", "` action of the `alter()` method is deprecated and will be removed \n in the next major release of Handsontable. Use the `insert_col_start` action instead."], ["The \\`", "\\` action of the \\`alter()\\` method is deprecated and will be removed\\x20\n in the next major release of Handsontable. Use the \\`insert_col_start\\` action instead."])), action));
|
572
|
-
}
|
573
|
-
// falls through
|
574
562
|
case 'insert_col_start':
|
575
563
|
case 'insert_col_end':
|
576
564
|
// "start" is a default behavior for creating new columns
|
577
565
|
var insertColumnMode = action === 'insert_col_end' ? 'end' : 'start';
|
578
566
|
|
579
|
-
// The line below ensures backward compatibility of the `alter()` method's `insert_col` action.
|
580
|
-
// Calling the `insert_col` action with no arguments adds a new column to the right of the data set.
|
581
567
|
// Calling the `insert_col_start` action adds a new column to the left of the data set.
|
582
568
|
// eslint-disable-next-line no-param-reassign
|
583
|
-
index = (_index2 = index) !== null && _index2 !== void 0 ? _index2 :
|
569
|
+
index = (_index2 = index) !== null && _index2 !== void 0 ? _index2 : insertColumnMode === 'end' ? instance.countSourceCols() : 0;
|
584
570
|
var _datamap$createCol = datamap.createCol(index, amount, {
|
585
571
|
source: source,
|
586
572
|
mode: insertColumnMode
|
@@ -851,13 +837,9 @@ function Core(rootElement, userSettings) {
|
|
851
837
|
* @param {object} [end] End selection position (only for drag-down mode). Visual indexes.
|
852
838
|
* @param {string} [source="populateFromArray"] Source information string.
|
853
839
|
* @param {string} [method="overwrite"] Populate method. Possible options: `shift_down`, `shift_right`, `overwrite`.
|
854
|
-
* @param {string} direction (left|right|up|down) String specifying the direction.
|
855
|
-
* @param {Array} deltas The deltas array. A difference between values of adjacent cells.
|
856
|
-
* Useful **only** when the type of handled cells is `numeric`.
|
857
840
|
* @returns {object|undefined} Ending td in pasted area (only if any cell was changed).
|
858
841
|
*/
|
859
|
-
populateFromArray: function populateFromArray(start, input, end, source, method
|
860
|
-
// TODO: either remove or implement the `direction` argument. Currently it's not working at all.
|
842
|
+
populateFromArray: function populateFromArray(start, input, end, source, method) {
|
861
843
|
var r;
|
862
844
|
var rlen;
|
863
845
|
var c;
|
@@ -945,11 +927,6 @@ function Core(rootElement, userSettings) {
|
|
945
927
|
// overwrite and other not specified options
|
946
928
|
current.row = start.row;
|
947
929
|
current.col = start.col;
|
948
|
-
var selected = {
|
949
|
-
// selected range
|
950
|
-
row: end && start ? end.row - start.row + 1 : 1,
|
951
|
-
col: end && start ? end.col - start.col + 1 : 1
|
952
|
-
};
|
953
930
|
var skippedRow = 0;
|
954
931
|
var skippedColumn = 0;
|
955
932
|
var pushData = true;
|
@@ -1010,16 +987,6 @@ function Core(rootElement, userSettings) {
|
|
1010
987
|
var visualColumn = c - skippedColumn;
|
1011
988
|
var value = getInputValue(visualRow, visualColumn);
|
1012
989
|
var orgValue = instance.getDataAtCell(current.row, current.col);
|
1013
|
-
var index = {
|
1014
|
-
row: visualRow,
|
1015
|
-
col: visualColumn
|
1016
|
-
};
|
1017
|
-
if (source === 'Autofill.fill') {
|
1018
|
-
var result = instance.runHooks('beforeAutofillInsidePopulate', index, direction, input, deltas, {}, selected);
|
1019
|
-
if (result) {
|
1020
|
-
value = (0, _mixed.isUndefined)(result.value) ? value : result.value;
|
1021
|
-
}
|
1022
|
-
}
|
1023
990
|
if (value !== null && _typeof(value) === 'object') {
|
1024
991
|
// when 'value' is array and 'orgValue' is null, set 'orgValue' to
|
1025
992
|
// an empty array so that the null value can be compared to 'value'
|
@@ -1189,15 +1156,8 @@ function Core(rootElement, userSettings) {
|
|
1189
1156
|
return;
|
1190
1157
|
}
|
1191
1158
|
var activeEditor = instance.getActiveEditor();
|
1192
|
-
var beforeChangeResult = instance.runHooks('beforeChange', changes, source || 'edit');
|
1193
|
-
var shouldBeCanceled = true;
|
1194
|
-
if (beforeChangeResult === false) {
|
1195
|
-
if (activeEditor) {
|
1196
|
-
activeEditor.cancelChanges();
|
1197
|
-
}
|
1198
|
-
return;
|
1199
|
-
}
|
1200
1159
|
var waitingForValidator = new ValidatorsQueue();
|
1160
|
+
var shouldBeCanceled = true;
|
1201
1161
|
waitingForValidator.onQueueEmpty = function (isValid) {
|
1202
1162
|
if (activeEditor && shouldBeCanceled) {
|
1203
1163
|
activeEditor.cancelChanges();
|
@@ -1206,43 +1166,37 @@ function Core(rootElement, userSettings) {
|
|
1206
1166
|
};
|
1207
1167
|
|
1208
1168
|
for (var i = changes.length - 1; i >= 0; i--) {
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
if (cellProperties.type === 'numeric' && typeof newValue === 'string' && (0, _number.isNumericLike)(newValue)) {
|
1219
|
-
changes[i][3] = getParsedNumber(newValue);
|
1220
|
-
}
|
1169
|
+
var _changes$i = _slicedToArray(changes[i], 4),
|
1170
|
+
row = _changes$i[0],
|
1171
|
+
prop = _changes$i[1],
|
1172
|
+
newValue = _changes$i[3];
|
1173
|
+
var col = datamap.propToCol(prop);
|
1174
|
+
var cellProperties = instance.getCellMeta(row, col);
|
1175
|
+
if (cellProperties.type === 'numeric' && typeof newValue === 'string' && (0, _number.isNumericLike)(newValue)) {
|
1176
|
+
changes[i][3] = getParsedNumber(newValue);
|
1177
|
+
}
|
1221
1178
|
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
}
|
1239
|
-
// index -= 1;
|
1179
|
+
/* eslint-disable no-loop-func */
|
1180
|
+
if (instance.getCellValidator(cellProperties)) {
|
1181
|
+
waitingForValidator.addValidatorToQueue();
|
1182
|
+
instance.validateCell(changes[i][3], cellProperties, function (index, cellPropertiesReference) {
|
1183
|
+
return function (result) {
|
1184
|
+
if (typeof result !== 'boolean') {
|
1185
|
+
throw new Error('Validation error: result is not boolean');
|
1186
|
+
}
|
1187
|
+
if (result === false && cellPropertiesReference.allowInvalid === false) {
|
1188
|
+
shouldBeCanceled = false;
|
1189
|
+
changes.splice(index, 1); // cancel the change
|
1190
|
+
cellPropertiesReference.valid = true; // we cancelled the change, so cell value is still valid
|
1191
|
+
|
1192
|
+
var cell = instance.getCell(cellPropertiesReference.visualRow, cellPropertiesReference.visualCol);
|
1193
|
+
if (cell !== null) {
|
1194
|
+
(0, _element.removeClass)(cell, tableMeta.invalidCellClassName);
|
1240
1195
|
}
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1245
|
-
}
|
1196
|
+
}
|
1197
|
+
waitingForValidator.removeValidatorFormQueue();
|
1198
|
+
};
|
1199
|
+
}(i, cellProperties), source);
|
1246
1200
|
}
|
1247
1201
|
}
|
1248
1202
|
waitingForValidator.checkIfQueueIsEmpty();
|
@@ -1432,6 +1386,31 @@ function Core(rootElement, userSettings) {
|
|
1432
1386
|
return [[row, propOrCol, value]];
|
1433
1387
|
}
|
1434
1388
|
|
1389
|
+
/**
|
1390
|
+
* Process changes prepared for applying to the dataset (unifying list of changes, closing an editor - when needed,
|
1391
|
+
* calling a hook).
|
1392
|
+
*
|
1393
|
+
* @private
|
1394
|
+
* @param {Array} changes Array of changes in format `[[row, col, value],...]`.
|
1395
|
+
* @param {string} [source] String that identifies how this change will be described in the changes array (useful in afterChange or beforeChange callback). Set to 'edit' if left empty.
|
1396
|
+
* @returns {Array} List of changes finally applied to the dataset.
|
1397
|
+
*/
|
1398
|
+
function processChanges(changes, source) {
|
1399
|
+
var activeEditor = instance.getActiveEditor();
|
1400
|
+
var beforeChangeResult = instance.runHooks('beforeChange', changes, source || 'edit');
|
1401
|
+
// The `beforeChange` hook could add a `null` for purpose of cancelling some dataset's change.
|
1402
|
+
var filteredChanges = changes.filter(function (change) {
|
1403
|
+
return change !== null;
|
1404
|
+
});
|
1405
|
+
if (beforeChangeResult === false || filteredChanges.length === 0) {
|
1406
|
+
if (activeEditor) {
|
1407
|
+
activeEditor.cancelChanges();
|
1408
|
+
}
|
1409
|
+
return [];
|
1410
|
+
}
|
1411
|
+
return filteredChanges;
|
1412
|
+
}
|
1413
|
+
|
1435
1414
|
/**
|
1436
1415
|
* @description
|
1437
1416
|
* Set new value to a cell. To change many cells at once (recommended way), pass an array of `changes` in format
|
@@ -1469,9 +1448,10 @@ function Core(rootElement, userSettings) {
|
|
1469
1448
|
if (!changeSource && _typeof(row) === 'object') {
|
1470
1449
|
changeSource = column;
|
1471
1450
|
}
|
1472
|
-
|
1473
|
-
|
1474
|
-
|
1451
|
+
var processedChanges = processChanges(changes, source);
|
1452
|
+
instance.runHooks('afterSetDataAtCell', processedChanges, changeSource);
|
1453
|
+
validateChanges(processedChanges, changeSource, function () {
|
1454
|
+
applyChanges(processedChanges, changeSource);
|
1475
1455
|
});
|
1476
1456
|
};
|
1477
1457
|
|
@@ -1499,9 +1479,10 @@ function Core(rootElement, userSettings) {
|
|
1499
1479
|
if (!changeSource && _typeof(row) === 'object') {
|
1500
1480
|
changeSource = prop;
|
1501
1481
|
}
|
1502
|
-
|
1503
|
-
|
1504
|
-
|
1482
|
+
var processedChanges = processChanges(changes, source);
|
1483
|
+
instance.runHooks('afterSetDataAtRowProp', processedChanges, changeSource);
|
1484
|
+
validateChanges(processedChanges, changeSource, function () {
|
1485
|
+
applyChanges(processedChanges, changeSource);
|
1505
1486
|
});
|
1506
1487
|
};
|
1507
1488
|
|
@@ -1576,18 +1557,15 @@ function Core(rootElement, userSettings) {
|
|
1576
1557
|
* @param {number} [endCol] End visual column index (use when you want to cut input when certain column is reached).
|
1577
1558
|
* @param {string} [source=populateFromArray] Used to identify this call in the resulting events (beforeChange, afterChange).
|
1578
1559
|
* @param {string} [method=overwrite] Populate method, possible values: `'shift_down'`, `'shift_right'`, `'overwrite'`.
|
1579
|
-
* @param {string} direction Populate direction, possible values: `'left'`, `'right'`, `'up'`, `'down'`.
|
1580
|
-
* @param {Array} deltas The deltas array. A difference between values of adjacent cells.
|
1581
|
-
* Useful **only** when the type of handled cells is `numeric`.
|
1582
1560
|
* @returns {object|undefined} Ending td in pasted area (only if any cell was changed).
|
1583
1561
|
*/
|
1584
|
-
this.populateFromArray = function (row, column, input, endRow, endCol, source, method
|
1562
|
+
this.populateFromArray = function (row, column, input, endRow, endCol, source, method) {
|
1585
1563
|
if (!(_typeof(input) === 'object' && _typeof(input[0]) === 'object')) {
|
1586
1564
|
throw new Error('populateFromArray parameter `input` must be an array of arrays'); // API changed in 0.9-beta2, let's check if you use it correctly
|
1587
1565
|
}
|
1588
1566
|
|
1589
1567
|
var c = typeof endRow === 'number' ? instance._createCellCoords(endRow, endCol) : null;
|
1590
|
-
return grid.populateFromArray(instance._createCellCoords(row, column), input, c, source, method
|
1568
|
+
return grid.populateFromArray(instance._createCellCoords(row, column), input, c, source, method);
|
1591
1569
|
};
|
1592
1570
|
|
1593
1571
|
/**
|
@@ -2513,10 +2491,11 @@ function Core(rootElement, userSettings) {
|
|
2513
2491
|
* | `'insert_col_start'` | Inserts columns before the `index` column. | Inserts columns before the first column. |
|
2514
2492
|
* | `'insert_col_end'` | Inserts columns after the `index` column. | Inserts columns after the last column. |
|
2515
2493
|
* | `'remove_col'` | Removes columns, starting from the `index` column. | Removes columns, starting from the last column. |
|
2516
|
-
* | `'insert_row'` (<b>Deprecated</b>) | Inserts rows above the `index` row. | Inserts rows below the last row. |
|
2517
|
-
* | `'insert_col'` (<b>Deprecated</b>) | Inserts columns before the `index` column. | Inserts columns after the last column. |
|
2518
2494
|
*
|
2519
|
-
*
|
2495
|
+
* Additional information about `'insert_col_start'` and `'insert_col_end'`:
|
2496
|
+
* - Their behavior depends on your [`layoutDirection`](@/api/options.md#layoutdirection).
|
2497
|
+
* - If the provided `index` is higher than the actual number of columns, Handsontable doesn't generate
|
2498
|
+
* the columns missing in between. Instead, the new columns are inserted next to the last column.
|
2520
2499
|
*
|
2521
2500
|
* @memberof Core#
|
2522
2501
|
* @function alter
|
@@ -2528,8 +2507,6 @@ function Core(rootElement, userSettings) {
|
|
2528
2507
|
* <li> `'insert_col_start'` </li>
|
2529
2508
|
* <li> `'insert_col_end'` </li>
|
2530
2509
|
* <li> `'remove_col'` </li>
|
2531
|
-
* <li> `'insert_row'` (<b>Deprecated</b>) </li>
|
2532
|
-
* <li> `'insert_col'` (<b>Deprecated</b>) </li>
|
2533
2510
|
* </ul>
|
2534
2511
|
* @param {number|number[]} [index] A visual index of the row/column before or after which the new row/column will be
|
2535
2512
|
* inserted or removed. Can also be an array of arrays, in format `[[index, amount],...]`.
|
@@ -3240,10 +3217,16 @@ function Core(rootElement, userSettings) {
|
|
3240
3217
|
};
|
3241
3218
|
|
3242
3219
|
/**
|
3243
|
-
* Validates
|
3220
|
+
* Validates every cell in the data set,
|
3221
|
+
* using a [validator function](@/guides/cell-functions/cell-validator.md) configured for each cell.
|
3244
3222
|
*
|
3245
|
-
*
|
3246
|
-
*
|
3223
|
+
* Doesn't validate cells that are currently [trimmed](@/guides/rows/row-trimming.md),
|
3224
|
+
* [hidden](@/guides/rows/row-hiding.md), or [filtered](@/guides/columns/column-filter.md),
|
3225
|
+
* as such cells are not included in the data set until you bring them back again.
|
3226
|
+
*
|
3227
|
+
* After the validation, the `callback` function is fired, with the `valid` argument set to:
|
3228
|
+
* - `true` for valid cells
|
3229
|
+
* - `false` for invalid cells
|
3247
3230
|
*
|
3248
3231
|
* @memberof Core#
|
3249
3232
|
* @function validateCells
|