handsontable 14.3.0-next-dda3c4b-20240415 → 14.4.0-next-f62dd73-20240521

Sign up to get free protection for your applications and to get access to all the features.
Files changed (195) hide show
  1. package/3rdparty/walkontable/src/calculator/viewportRows.js +3 -3
  2. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +3 -3
  3. package/3rdparty/walkontable/src/core/_base.js +1 -1
  4. package/3rdparty/walkontable/src/core/_base.mjs +1 -1
  5. package/3rdparty/walkontable/src/overlay/_base.js +24 -20
  6. package/3rdparty/walkontable/src/overlay/_base.mjs +24 -20
  7. package/3rdparty/walkontable/src/overlay/bottom.js +3 -6
  8. package/3rdparty/walkontable/src/overlay/bottom.mjs +3 -6
  9. package/3rdparty/walkontable/src/overlay/inlineStart.js +22 -19
  10. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +22 -19
  11. package/3rdparty/walkontable/src/overlay/top.js +13 -12
  12. package/3rdparty/walkontable/src/overlay/top.mjs +13 -12
  13. package/3rdparty/walkontable/src/overlays.js +46 -24
  14. package/3rdparty/walkontable/src/overlays.mjs +46 -24
  15. package/3rdparty/walkontable/src/selection/manager.js +7 -0
  16. package/3rdparty/walkontable/src/selection/manager.mjs +7 -0
  17. package/3rdparty/walkontable/src/selection/scanner.js +7 -0
  18. package/3rdparty/walkontable/src/selection/scanner.mjs +7 -0
  19. package/3rdparty/walkontable/src/table.js +10 -11
  20. package/3rdparty/walkontable/src/table.mjs +10 -11
  21. package/3rdparty/walkontable/src/utils/columnStretching.js +4 -0
  22. package/3rdparty/walkontable/src/utils/columnStretching.mjs +4 -0
  23. package/3rdparty/walkontable/src/viewport.js +18 -10
  24. package/3rdparty/walkontable/src/viewport.mjs +18 -10
  25. package/CHANGELOG.md +56 -12
  26. package/base.js +2 -2
  27. package/base.mjs +2 -2
  28. package/core.d.ts +2 -2
  29. package/core.js +93 -162
  30. package/core.mjs +93 -162
  31. package/dataMap/dataMap.js +10 -4
  32. package/dataMap/dataMap.mjs +10 -4
  33. package/dataMap/dataSource.js +16 -3
  34. package/dataMap/dataSource.mjs +16 -3
  35. package/dataMap/metaManager/lazyFactoryMap.js +7 -0
  36. package/dataMap/metaManager/lazyFactoryMap.mjs +7 -0
  37. package/dataMap/metaManager/metaSchema.js +38 -0
  38. package/dataMap/metaManager/metaSchema.mjs +38 -0
  39. package/dataMap/metaManager/mods/dynamicCellMeta.js +7 -0
  40. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +7 -0
  41. package/dataMap/metaManager/mods/extendMetaProperties.js +44 -31
  42. package/dataMap/metaManager/mods/extendMetaProperties.mjs +44 -31
  43. package/dataMap/metaManager/utils.js +7 -0
  44. package/dataMap/metaManager/utils.mjs +7 -0
  45. package/dist/handsontable.css +4 -5
  46. package/dist/handsontable.full.css +4 -5
  47. package/dist/handsontable.full.js +5878 -4657
  48. package/dist/handsontable.full.min.css +4 -4
  49. package/dist/handsontable.full.min.js +59 -59
  50. package/dist/handsontable.js +5383 -4277
  51. package/dist/handsontable.min.css +4 -4
  52. package/dist/handsontable.min.js +20 -20
  53. package/editorManager.js +0 -67
  54. package/editorManager.mjs +0 -67
  55. package/editors/autocompleteEditor/autocompleteEditor.js +6 -4
  56. package/editors/autocompleteEditor/autocompleteEditor.mjs +6 -4
  57. package/editors/baseEditor/baseEditor.js +1 -36
  58. package/editors/baseEditor/baseEditor.mjs +2 -37
  59. package/editors/dateEditor/dateEditor.js +4 -1
  60. package/editors/dateEditor/dateEditor.mjs +4 -1
  61. package/editors/dropdownEditor/dropdownEditor.js +8 -5
  62. package/editors/dropdownEditor/dropdownEditor.mjs +8 -5
  63. package/editors/handsontableEditor/handsontableEditor.js +2 -2
  64. package/editors/handsontableEditor/handsontableEditor.mjs +2 -2
  65. package/editors/selectEditor/selectEditor.js +1 -9
  66. package/editors/selectEditor/selectEditor.mjs +1 -9
  67. package/editors/textEditor/textEditor.js +2 -11
  68. package/editors/textEditor/textEditor.mjs +2 -11
  69. package/focusManager.js +3 -5
  70. package/focusManager.mjs +3 -5
  71. package/helpers/array.js +7 -0
  72. package/helpers/array.mjs +7 -0
  73. package/helpers/mixed.js +2 -2
  74. package/helpers/mixed.mjs +2 -2
  75. package/helpers/number.js +12 -2
  76. package/helpers/number.mjs +12 -2
  77. package/package.json +3 -3
  78. package/pluginHooks.d.ts +1 -1
  79. package/pluginHooks.js +79 -2
  80. package/pluginHooks.mjs +79 -2
  81. package/plugins/autoColumnSize/autoColumnSize.js +7 -0
  82. package/plugins/autoColumnSize/autoColumnSize.mjs +7 -0
  83. package/plugins/autoRowSize/autoRowSize.js +2 -2
  84. package/plugins/autoRowSize/autoRowSize.mjs +2 -2
  85. package/plugins/autofill/autofill.js +1 -1
  86. package/plugins/autofill/autofill.mjs +1 -1
  87. package/plugins/base/base.d.ts +1 -1
  88. package/plugins/base/base.js +6 -2
  89. package/plugins/base/base.mjs +6 -2
  90. package/plugins/collapsibleColumns/collapsibleColumns.js +1 -1
  91. package/plugins/collapsibleColumns/collapsibleColumns.mjs +1 -1
  92. package/plugins/columnSorting/sortFunction/date.js +2 -46
  93. package/plugins/columnSorting/sortFunction/date.mjs +2 -45
  94. package/plugins/columnSorting/sortFunction/time.js +17 -0
  95. package/plugins/columnSorting/sortFunction/time.mjs +13 -0
  96. package/plugins/columnSorting/sortService/registry.js +4 -2
  97. package/plugins/columnSorting/sortService/registry.mjs +3 -1
  98. package/plugins/columnSorting/utils.js +64 -0
  99. package/plugins/columnSorting/utils.mjs +62 -0
  100. package/plugins/columnSummary/columnSummary.js +27 -10
  101. package/plugins/columnSummary/columnSummary.mjs +27 -10
  102. package/plugins/columnSummary/endpoints.js +15 -0
  103. package/plugins/columnSummary/endpoints.mjs +15 -0
  104. package/plugins/comments/comments.js +2 -8
  105. package/plugins/comments/comments.mjs +2 -8
  106. package/plugins/comments/contextMenuItem/addEditComment.js +0 -1
  107. package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -1
  108. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  109. package/plugins/copyPaste/copyPaste.js +9 -2
  110. package/plugins/copyPaste/copyPaste.mjs +9 -2
  111. package/plugins/copyPaste/pasteEvent.js +1 -0
  112. package/plugins/copyPaste/pasteEvent.mjs +1 -0
  113. package/plugins/filters/filters.js +1 -1
  114. package/plugins/filters/filters.mjs +1 -1
  115. package/plugins/filters/ui/multipleSelect.js +22 -14
  116. package/plugins/filters/ui/multipleSelect.mjs +22 -14
  117. package/plugins/filters/utils.js +7 -0
  118. package/plugins/filters/utils.mjs +7 -0
  119. package/plugins/formulas/formulas.d.ts +10 -0
  120. package/plugins/formulas/formulas.js +11 -2
  121. package/plugins/formulas/formulas.mjs +11 -2
  122. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -1
  123. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +1 -1
  124. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -1
  125. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +1 -1
  126. package/plugins/hiddenColumns/hiddenColumns.js +8 -1
  127. package/plugins/hiddenColumns/hiddenColumns.mjs +8 -1
  128. package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -1
  129. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +1 -1
  130. package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -1
  131. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +1 -1
  132. package/plugins/hiddenRows/hiddenRows.js +7 -0
  133. package/plugins/hiddenRows/hiddenRows.mjs +7 -0
  134. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  135. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
  136. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  137. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
  138. package/plugins/manualColumnMove/manualColumnMove.js +1 -1
  139. package/plugins/manualColumnMove/manualColumnMove.mjs +1 -1
  140. package/plugins/manualColumnResize/manualColumnResize.js +3 -3
  141. package/plugins/manualColumnResize/manualColumnResize.mjs +3 -3
  142. package/plugins/manualRowMove/manualRowMove.js +1 -1
  143. package/plugins/manualRowMove/manualRowMove.mjs +1 -1
  144. package/plugins/manualRowResize/manualRowResize.d.ts +1 -0
  145. package/plugins/manualRowResize/manualRowResize.js +11 -2
  146. package/plugins/manualRowResize/manualRowResize.mjs +11 -2
  147. package/plugins/mergeCells/cellsCollection.js +7 -0
  148. package/plugins/mergeCells/cellsCollection.mjs +7 -0
  149. package/plugins/mergeCells/mergeCells.js +7 -0
  150. package/plugins/mergeCells/mergeCells.mjs +7 -0
  151. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +7 -0
  152. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +7 -0
  153. package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.js +7 -0
  154. package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.mjs +7 -0
  155. package/plugins/nestedRows/nestedRows.js +7 -0
  156. package/plugins/nestedRows/nestedRows.mjs +7 -0
  157. package/plugins/trimRows/trimRows.js +7 -0
  158. package/plugins/trimRows/trimRows.mjs +7 -0
  159. package/selection/selection.js +163 -4
  160. package/selection/selection.mjs +163 -4
  161. package/selection/utils.js +7 -0
  162. package/selection/utils.mjs +7 -0
  163. package/settings.d.ts +1 -0
  164. package/shortcutContexts/commands/editor/closeAndSave.js +2 -3
  165. package/shortcutContexts/commands/editor/closeAndSave.mjs +2 -3
  166. package/shortcutContexts/commands/editor/closeAndSaveByArrowKeys.js +27 -0
  167. package/shortcutContexts/commands/editor/closeAndSaveByArrowKeys.mjs +24 -0
  168. package/shortcutContexts/commands/editor/closeAndSaveByEnter.js +11 -0
  169. package/shortcutContexts/commands/editor/closeAndSaveByEnter.mjs +8 -0
  170. package/shortcutContexts/commands/editor/index.js +3 -1
  171. package/shortcutContexts/commands/editor/index.mjs +3 -1
  172. package/shortcutContexts/editor.js +9 -1
  173. package/shortcutContexts/editor.mjs +9 -1
  174. package/shortcutContexts/index.js +1 -1
  175. package/shortcutContexts/index.mjs +1 -1
  176. package/shortcuts/keyObserver.js +7 -0
  177. package/shortcuts/keyObserver.mjs +7 -0
  178. package/shortcuts/utils.js +7 -0
  179. package/shortcuts/utils.mjs +7 -0
  180. package/tableView.js +1 -4
  181. package/tableView.mjs +1 -4
  182. package/translations/changesObservable/observable.js +7 -0
  183. package/translations/changesObservable/observable.mjs +7 -0
  184. package/translations/indexMapper.js +7 -0
  185. package/translations/indexMapper.mjs +8 -1
  186. package/utils/dataStructures/uniqueSet.js +7 -0
  187. package/utils/dataStructures/uniqueSet.mjs +7 -0
  188. package/utils/ghostTable.js +0 -4
  189. package/utils/ghostTable.mjs +0 -4
  190. package/utils/paginator.js +7 -0
  191. package/utils/paginator.mjs +7 -0
  192. package/validators/dateValidator/dateValidator.js +1 -3
  193. package/validators/dateValidator/dateValidator.mjs +1 -3
  194. package/validators/timeValidator/timeValidator.js +1 -3
  195. package/validators/timeValidator/timeValidator.mjs +1 -3
@@ -1536,6 +1536,44 @@ var _default = () => {
1536
1536
  * ```
1537
1537
  */
1538
1538
  data: undefined,
1539
+ /**
1540
+ * @description
1541
+ * If `true`, Handsontable will interpret the dots in the columns mapping as a nested object path. If your dataset contains
1542
+ * the dots in the object keys and you don't want Handsontable to interpret them as a nested object path, set this option to `false`.
1543
+ *
1544
+ * The option only works when defined in the global table settings.
1545
+ *
1546
+ * @since 14.4.0
1547
+ * @memberof Options#
1548
+ * @type {boolean}
1549
+ * @default true
1550
+ * @category Core
1551
+ *
1552
+ * @example
1553
+ * ```js
1554
+ * // All dots are interpreted as nested object paths
1555
+ * dataDotNotation: true,
1556
+ * data: [
1557
+ * { id: 1, name: { first: 'Ted', last: 'Right' }, user: { address: '1234 Any Street' } },
1558
+ * ],
1559
+ * columns={[
1560
+ * { data: 'name.first' },
1561
+ * { data: 'user.address' },
1562
+ * ]},
1563
+ * ```
1564
+ * ```js
1565
+ * // All dots are interpreted as simple object keys
1566
+ * dataDotNotation: false,
1567
+ * data: [
1568
+ * { id: 1, 'name.first': 'Ted', 'user.address': '1234 Any Street' },
1569
+ * ],
1570
+ * columns={[
1571
+ * { data: 'name.first' },
1572
+ * { data: 'user.address' },
1573
+ * ]},
1574
+ * ```
1575
+ */
1576
+ dataDotNotation: true,
1539
1577
  /**
1540
1578
  * @description
1541
1579
  * When the [`data`](#data) option is set to an [array of objects](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-objects)
@@ -1533,6 +1533,44 @@ export default (() => {
1533
1533
  * ```
1534
1534
  */
1535
1535
  data: undefined,
1536
+ /**
1537
+ * @description
1538
+ * If `true`, Handsontable will interpret the dots in the columns mapping as a nested object path. If your dataset contains
1539
+ * the dots in the object keys and you don't want Handsontable to interpret them as a nested object path, set this option to `false`.
1540
+ *
1541
+ * The option only works when defined in the global table settings.
1542
+ *
1543
+ * @since 14.4.0
1544
+ * @memberof Options#
1545
+ * @type {boolean}
1546
+ * @default true
1547
+ * @category Core
1548
+ *
1549
+ * @example
1550
+ * ```js
1551
+ * // All dots are interpreted as nested object paths
1552
+ * dataDotNotation: true,
1553
+ * data: [
1554
+ * { id: 1, name: { first: 'Ted', last: 'Right' }, user: { address: '1234 Any Street' } },
1555
+ * ],
1556
+ * columns={[
1557
+ * { data: 'name.first' },
1558
+ * { data: 'user.address' },
1559
+ * ]},
1560
+ * ```
1561
+ * ```js
1562
+ * // All dots are interpreted as simple object keys
1563
+ * dataDotNotation: false,
1564
+ * data: [
1565
+ * { id: 1, 'name.first': 'Ted', 'user.address': '1234 Any Street' },
1566
+ * ],
1567
+ * columns={[
1568
+ * { data: 'name.first' },
1569
+ * { data: 'user.address' },
1570
+ * ]},
1571
+ * ```
1572
+ */
1573
+ dataDotNotation: true,
1536
1574
  /**
1537
1575
  * @description
1538
1576
  * When the [`data`](#data) option is set to an [array of objects](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-objects)
@@ -2,6 +2,13 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
+ require("core-js/modules/esnext.set.difference.v2.js");
6
+ require("core-js/modules/esnext.set.intersection.v2.js");
7
+ require("core-js/modules/esnext.set.is-disjoint-from.v2.js");
8
+ require("core-js/modules/esnext.set.is-subset-of.v2.js");
9
+ require("core-js/modules/esnext.set.is-superset-of.v2.js");
10
+ require("core-js/modules/esnext.set.symmetric-difference.v2.js");
11
+ require("core-js/modules/esnext.set.union.v2.js");
5
12
  var _pluginHooks = _interopRequireDefault(require("../../../pluginHooks"));
6
13
  var _object = require("../../../helpers/object");
7
14
  var _function = require("../../../helpers/function");
@@ -1,4 +1,11 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/esnext.set.difference.v2.js";
3
+ import "core-js/modules/esnext.set.intersection.v2.js";
4
+ import "core-js/modules/esnext.set.is-disjoint-from.v2.js";
5
+ import "core-js/modules/esnext.set.is-subset-of.v2.js";
6
+ import "core-js/modules/esnext.set.is-superset-of.v2.js";
7
+ import "core-js/modules/esnext.set.symmetric-difference.v2.js";
8
+ import "core-js/modules/esnext.set.union.v2.js";
2
9
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
10
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
11
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -2,9 +2,22 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
+ require("core-js/modules/es.array.push.js");
6
+ require("core-js/modules/esnext.set.difference.v2.js");
7
+ require("core-js/modules/esnext.set.intersection.v2.js");
8
+ require("core-js/modules/esnext.set.is-disjoint-from.v2.js");
9
+ require("core-js/modules/esnext.set.is-subset-of.v2.js");
10
+ require("core-js/modules/esnext.set.is-superset-of.v2.js");
11
+ require("core-js/modules/esnext.set.symmetric-difference.v2.js");
12
+ require("core-js/modules/esnext.set.union.v2.js");
13
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
14
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
5
15
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
16
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
7
17
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
19
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
20
+ var _initOnlyCallback = /*#__PURE__*/new WeakMap();
8
21
  /**
9
22
  * @class ExtendMetaPropertiesMod
10
23
  */
@@ -22,11 +35,7 @@ class ExtendMetaPropertiesMod {
22
35
  * @type {Map}
23
36
  */
24
37
  _defineProperty(this, "propDescriptors", new Map([['ariaTags', {
25
- onChange(propName, value, isInitialChange) {
26
- if (!isInitialChange) {
27
- throw new Error(`The \`${propName}\` option can not be updated after the Handsontable instance was initialized.`);
28
- }
29
- }
38
+ initOnly: true
30
39
  }], ['fixedColumnsLeft', {
31
40
  target: 'fixedColumnsStart',
32
41
  onChange(propName) {
@@ -39,48 +48,52 @@ class ExtendMetaPropertiesMod {
39
48
  }
40
49
  }
41
50
  }], ['layoutDirection', {
42
- onChange(propName, value, isInitialChange) {
43
- if (!isInitialChange) {
44
- throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
45
- }
51
+ initOnly: true
52
+ }], ['renderAllColumns', {
53
+ initOnly: true
54
+ }], ['renderAllRows', {
55
+ initOnly: true
56
+ }]]));
57
+ /**
58
+ * Callback called when the prop is marked as `initOnly`.
59
+ *
60
+ * @param {string} propName The property name.
61
+ * @param {*} value The new value.
62
+ * @param {boolean} isInitialChange Is the change initial.
63
+ */
64
+ _classPrivateFieldInitSpec(this, _initOnlyCallback, (propName, value, isInitialChange) => {
65
+ if (!isInitialChange) {
66
+ throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
46
67
  }
47
- }]
48
- // Temporary commented out due to the bug in the React wrapper.
49
- // ['renderAllColumns', {
50
- // onChange(propName, value, isInitialChange) {
51
- // if (!isInitialChange) {
52
- // throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
53
- // }
54
- // }
55
- // }],
56
- // ['renderAllRows', {
57
- // onChange(propName, value, isInitialChange) {
58
- // if (!isInitialChange) {
59
- // throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
60
- // }
61
- // }
62
- // }],
63
- ]));
68
+ });
64
69
  this.metaManager = metaManager;
65
70
  this.extendMetaProps();
66
71
  }
67
-
68
72
  /**
69
73
  * Extends the meta options based on the object descriptors from the `propDescriptors` list.
70
74
  */
71
75
  extendMetaProps() {
72
76
  this.propDescriptors.forEach((descriptor, alias) => {
73
77
  const {
78
+ initOnly,
74
79
  target,
75
- onChange = () => {}
80
+ onChange
76
81
  } = descriptor;
77
82
  const hasTarget = typeof target === 'string';
78
83
  const targetProp = hasTarget ? target : alias;
79
84
  const origProp = `_${targetProp}`;
80
85
  this.metaManager.globalMeta.meta[origProp] = this.metaManager.globalMeta.meta[targetProp];
81
- this.installPropWatcher(alias, origProp, onChange);
82
- if (hasTarget) {
83
- this.installPropWatcher(target, origProp, onChange);
86
+ if (onChange) {
87
+ this.installPropWatcher(alias, origProp, onChange);
88
+ if (hasTarget) {
89
+ this.installPropWatcher(target, origProp, onChange);
90
+ }
91
+ } else if (initOnly) {
92
+ this.installPropWatcher(alias, origProp, _classPrivateFieldGet(_initOnlyCallback, this));
93
+ if (!this.metaManager.globalMeta.meta._initOnlySettings) {
94
+ this.metaManager.globalMeta.meta._initOnlySettings = [];
95
+ }
96
+ this.metaManager.globalMeta.meta._initOnlySettings.push(alias);
84
97
  }
85
98
  });
86
99
  }
@@ -1,7 +1,20 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/es.array.push.js";
3
+ import "core-js/modules/esnext.set.difference.v2.js";
4
+ import "core-js/modules/esnext.set.intersection.v2.js";
5
+ import "core-js/modules/esnext.set.is-disjoint-from.v2.js";
6
+ import "core-js/modules/esnext.set.is-subset-of.v2.js";
7
+ import "core-js/modules/esnext.set.is-superset-of.v2.js";
8
+ import "core-js/modules/esnext.set.symmetric-difference.v2.js";
9
+ import "core-js/modules/esnext.set.union.v2.js";
10
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
11
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
2
12
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
13
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
14
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
15
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
16
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
17
+ var _initOnlyCallback = /*#__PURE__*/new WeakMap();
5
18
  /**
6
19
  * @class ExtendMetaPropertiesMod
7
20
  */
@@ -19,11 +32,7 @@ export class ExtendMetaPropertiesMod {
19
32
  * @type {Map}
20
33
  */
21
34
  _defineProperty(this, "propDescriptors", new Map([['ariaTags', {
22
- onChange(propName, value, isInitialChange) {
23
- if (!isInitialChange) {
24
- throw new Error(`The \`${propName}\` option can not be updated after the Handsontable instance was initialized.`);
25
- }
26
- }
35
+ initOnly: true
27
36
  }], ['fixedColumnsLeft', {
28
37
  target: 'fixedColumnsStart',
29
38
  onChange(propName) {
@@ -36,48 +45,52 @@ export class ExtendMetaPropertiesMod {
36
45
  }
37
46
  }
38
47
  }], ['layoutDirection', {
39
- onChange(propName, value, isInitialChange) {
40
- if (!isInitialChange) {
41
- throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
42
- }
48
+ initOnly: true
49
+ }], ['renderAllColumns', {
50
+ initOnly: true
51
+ }], ['renderAllRows', {
52
+ initOnly: true
53
+ }]]));
54
+ /**
55
+ * Callback called when the prop is marked as `initOnly`.
56
+ *
57
+ * @param {string} propName The property name.
58
+ * @param {*} value The new value.
59
+ * @param {boolean} isInitialChange Is the change initial.
60
+ */
61
+ _classPrivateFieldInitSpec(this, _initOnlyCallback, (propName, value, isInitialChange) => {
62
+ if (!isInitialChange) {
63
+ throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
43
64
  }
44
- }]
45
- // Temporary commented out due to the bug in the React wrapper.
46
- // ['renderAllColumns', {
47
- // onChange(propName, value, isInitialChange) {
48
- // if (!isInitialChange) {
49
- // throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
50
- // }
51
- // }
52
- // }],
53
- // ['renderAllRows', {
54
- // onChange(propName, value, isInitialChange) {
55
- // if (!isInitialChange) {
56
- // throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
57
- // }
58
- // }
59
- // }],
60
- ]));
65
+ });
61
66
  this.metaManager = metaManager;
62
67
  this.extendMetaProps();
63
68
  }
64
-
65
69
  /**
66
70
  * Extends the meta options based on the object descriptors from the `propDescriptors` list.
67
71
  */
68
72
  extendMetaProps() {
69
73
  this.propDescriptors.forEach((descriptor, alias) => {
70
74
  const {
75
+ initOnly,
71
76
  target,
72
- onChange = () => {}
77
+ onChange
73
78
  } = descriptor;
74
79
  const hasTarget = typeof target === 'string';
75
80
  const targetProp = hasTarget ? target : alias;
76
81
  const origProp = `_${targetProp}`;
77
82
  this.metaManager.globalMeta.meta[origProp] = this.metaManager.globalMeta.meta[targetProp];
78
- this.installPropWatcher(alias, origProp, onChange);
79
- if (hasTarget) {
80
- this.installPropWatcher(target, origProp, onChange);
83
+ if (onChange) {
84
+ this.installPropWatcher(alias, origProp, onChange);
85
+ if (hasTarget) {
86
+ this.installPropWatcher(target, origProp, onChange);
87
+ }
88
+ } else if (initOnly) {
89
+ this.installPropWatcher(alias, origProp, _classPrivateFieldGet(_initOnlyCallback, this));
90
+ if (!this.metaManager.globalMeta.meta._initOnlySettings) {
91
+ this.metaManager.globalMeta.meta._initOnlySettings = [];
92
+ }
93
+ this.metaManager.globalMeta.meta._initOnlySettings.push(alias);
81
94
  }
82
95
  });
83
96
  }
@@ -7,6 +7,13 @@ exports.extendByMetaType = extendByMetaType;
7
7
  exports.isNullish = isNullish;
8
8
  exports.isUnsignedNumber = isUnsignedNumber;
9
9
  require("core-js/modules/es.error.cause.js");
10
+ require("core-js/modules/esnext.set.difference.v2.js");
11
+ require("core-js/modules/esnext.set.intersection.v2.js");
12
+ require("core-js/modules/esnext.set.is-disjoint-from.v2.js");
13
+ require("core-js/modules/esnext.set.is-subset-of.v2.js");
14
+ require("core-js/modules/esnext.set.is-superset-of.v2.js");
15
+ require("core-js/modules/esnext.set.symmetric-difference.v2.js");
16
+ require("core-js/modules/esnext.set.union.v2.js");
10
17
  var _object = require("../../helpers/object");
11
18
  var _registry = require("../../cellTypes/registry");
12
19
  /**
@@ -1,4 +1,11 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/esnext.set.difference.v2.js";
3
+ import "core-js/modules/esnext.set.intersection.v2.js";
4
+ import "core-js/modules/esnext.set.is-disjoint-from.v2.js";
5
+ import "core-js/modules/esnext.set.is-subset-of.v2.js";
6
+ import "core-js/modules/esnext.set.is-superset-of.v2.js";
7
+ import "core-js/modules/esnext.set.symmetric-difference.v2.js";
8
+ import "core-js/modules/esnext.set.union.v2.js";
2
9
  import { hasOwnProperty, isObject, objectEach, inherit, extend } from "../../helpers/object.mjs";
3
10
  import { getCellType } from "../../cellTypes/registry.mjs";
4
11
  /**
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 14.3.0-next-dda3c4b-20240415
29
- * Release date: 16/04/2024 (built at 15/04/2024 20:43:25)
28
+ * Version: 14.4.0-next-f62dd73-20240521
29
+ * Release date: 28/05/2024 (built at 21/05/2024 10:10:09)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -203,12 +203,11 @@
203
203
  }
204
204
 
205
205
  .handsontable th:first-child,
206
- .handsontable th:nth-child(2),
207
206
  .handsontable td:first-of-type {
208
207
  border-left: 1px solid #ccc;
209
208
  }
210
209
 
211
- [dir=rtl].handsontable th:first-child, [dir=rtl].handsontable th:nth-child(2), [dir=rtl].handsontable td:first-of-type {
210
+ [dir=rtl].handsontable th:first-child, [dir=rtl].handsontable td:first-of-type {
212
211
  border-right: 1px solid #ccc;
213
212
  }
214
213
 
@@ -1412,7 +1411,7 @@ textarea.HandsontableCopyPaste {
1412
1411
  }
1413
1412
 
1414
1413
  .htUIMultipleSelect .ht_master .wtHolder {
1415
- overflow-y: scroll;
1414
+ overflow: auto;
1416
1415
  }
1417
1416
 
1418
1417
  .handsontable .htFiltersActive .changeType {
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 14.3.0-next-dda3c4b-20240415
29
- * Release date: 16/04/2024 (built at 15/04/2024 20:43:25)
28
+ * Version: 14.4.0-next-f62dd73-20240521
29
+ * Release date: 28/05/2024 (built at 21/05/2024 10:10:09)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -203,12 +203,11 @@
203
203
  }
204
204
 
205
205
  .handsontable th:first-child,
206
- .handsontable th:nth-child(2),
207
206
  .handsontable td:first-of-type {
208
207
  border-left: 1px solid #ccc;
209
208
  }
210
209
 
211
- [dir=rtl].handsontable th:first-child, [dir=rtl].handsontable th:nth-child(2), [dir=rtl].handsontable td:first-of-type {
210
+ [dir=rtl].handsontable th:first-child, [dir=rtl].handsontable td:first-of-type {
212
211
  border-right: 1px solid #ccc;
213
212
  }
214
213
 
@@ -1645,7 +1644,7 @@ textarea.HandsontableCopyPaste {
1645
1644
  }
1646
1645
 
1647
1646
  .htUIMultipleSelect .ht_master .wtHolder {
1648
- overflow-y: scroll;
1647
+ overflow: auto;
1649
1648
  }
1650
1649
 
1651
1650
  .handsontable .htFiltersActive .changeType {