handsontable 15.3.0 → 16.0.0-next-f486b48-20250702

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.
Files changed (277) hide show
  1. package/3rdparty/walkontable/src/core/_base.js +0 -3
  2. package/3rdparty/walkontable/src/core/_base.mjs +0 -3
  3. package/3rdparty/walkontable/src/core/clone.js +0 -1
  4. package/3rdparty/walkontable/src/core/clone.mjs +0 -1
  5. package/3rdparty/walkontable/src/core/core.js +0 -2
  6. package/3rdparty/walkontable/src/core/core.mjs +0 -2
  7. package/3rdparty/walkontable/src/facade/core.js +0 -3
  8. package/3rdparty/walkontable/src/facade/core.mjs +0 -3
  9. package/3rdparty/walkontable/src/index.js +1 -2
  10. package/3rdparty/walkontable/src/overlay/_base.js +1 -3
  11. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -3
  12. package/3rdparty/walkontable/src/overlay/bottom.js +2 -2
  13. package/3rdparty/walkontable/src/overlay/bottom.mjs +2 -2
  14. package/3rdparty/walkontable/src/overlay/top.js +1 -1
  15. package/3rdparty/walkontable/src/overlay/top.mjs +1 -1
  16. package/3rdparty/walkontable/src/renderer/columnHeaders.js +1 -1
  17. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +2 -2
  18. package/3rdparty/walkontable/src/selection/border/border.js +17 -11
  19. package/3rdparty/walkontable/src/selection/border/border.mjs +17 -11
  20. package/3rdparty/walkontable/src/selection/border/utils.js +1 -1
  21. package/3rdparty/walkontable/src/selection/border/utils.mjs +1 -1
  22. package/3rdparty/walkontable/src/settings.js +3 -1
  23. package/3rdparty/walkontable/src/settings.mjs +3 -1
  24. package/3rdparty/walkontable/src/table.js +9 -6
  25. package/3rdparty/walkontable/src/table.mjs +9 -6
  26. package/3rdparty/walkontable/src/types.js +0 -1
  27. package/3rdparty/walkontable/src/types.mjs +0 -1
  28. package/3rdparty/walkontable/src/utils/column.js +1 -1
  29. package/3rdparty/walkontable/src/utils/column.mjs +1 -1
  30. package/3rdparty/walkontable/src/viewport.js +1 -1
  31. package/3rdparty/walkontable/src/viewport.mjs +1 -1
  32. package/CHANGELOG.md +53 -31
  33. package/README.md +10 -4
  34. package/base.js +2 -2
  35. package/base.mjs +2 -2
  36. package/cellTypes/registry.js +2 -3
  37. package/cellTypes/registry.mjs +1 -1
  38. package/core/coordsMapper/rangeToRenderableMapper.js +124 -0
  39. package/core/coordsMapper/rangeToRenderableMapper.mjs +120 -0
  40. package/core/focusCatcher/focusDetector.js +2 -2
  41. package/core/focusCatcher/focusDetector.mjs +2 -2
  42. package/core/hooks/constants.js +259 -1
  43. package/core/hooks/constants.mjs +259 -1
  44. package/core.d.ts +2 -0
  45. package/core.js +202 -58
  46. package/core.mjs +202 -58
  47. package/dataMap/dataMap.js +16 -30
  48. package/dataMap/dataMap.mjs +16 -30
  49. package/dataMap/metaManager/metaSchema.js +58 -0
  50. package/dataMap/metaManager/metaSchema.mjs +58 -0
  51. package/dist/handsontable.css +30 -4
  52. package/dist/handsontable.full.css +30 -4
  53. package/dist/handsontable.full.js +6073 -4352
  54. package/dist/handsontable.full.min.css +3 -3
  55. package/dist/handsontable.full.min.js +206 -206
  56. package/dist/handsontable.js +5751 -4037
  57. package/dist/handsontable.min.css +3 -3
  58. package/dist/handsontable.min.js +41 -41
  59. package/dist/languages/all.min.js +1 -1
  60. package/dist/languages/ar-AR.min.js +1 -1
  61. package/dist/languages/cs-CZ.min.js +1 -1
  62. package/dist/languages/de-CH.min.js +1 -1
  63. package/dist/languages/de-DE.min.js +1 -1
  64. package/dist/languages/en-US.min.js +1 -1
  65. package/dist/languages/es-MX.min.js +1 -1
  66. package/dist/languages/fa-IR.min.js +1 -1
  67. package/dist/languages/fr-FR.min.js +1 -1
  68. package/dist/languages/hr-HR.min.js +1 -1
  69. package/dist/languages/it-IT.min.js +1 -1
  70. package/dist/languages/ja-JP.min.js +1 -1
  71. package/dist/languages/ko-KR.min.js +1 -1
  72. package/dist/languages/lv-LV.min.js +1 -1
  73. package/dist/languages/nb-NO.min.js +1 -1
  74. package/dist/languages/nl-NL.min.js +1 -1
  75. package/dist/languages/pl-PL.min.js +1 -1
  76. package/dist/languages/pt-BR.min.js +1 -1
  77. package/dist/languages/ru-RU.min.js +1 -1
  78. package/dist/languages/sr-SP.min.js +1 -1
  79. package/dist/languages/zh-CN.min.js +1 -1
  80. package/dist/languages/zh-TW.min.js +1 -1
  81. package/editorManager.js +5 -1
  82. package/editorManager.mjs +5 -1
  83. package/editors/autocompleteEditor/autocompleteEditor.d.ts +0 -12
  84. package/editors/autocompleteEditor/autocompleteEditor.js +42 -69
  85. package/editors/autocompleteEditor/autocompleteEditor.mjs +43 -70
  86. package/editors/baseEditor/baseEditor.js +1 -1
  87. package/editors/baseEditor/baseEditor.mjs +1 -1
  88. package/editors/dateEditor/dateEditor.js +2 -8
  89. package/editors/dateEditor/dateEditor.mjs +3 -9
  90. package/editors/handsontableEditor/handsontableEditor.d.ts +8 -0
  91. package/editors/handsontableEditor/handsontableEditor.js +173 -17
  92. package/editors/handsontableEditor/handsontableEditor.mjs +173 -17
  93. package/editors/passwordEditor/passwordEditor.js +2 -0
  94. package/editors/passwordEditor/passwordEditor.mjs +2 -0
  95. package/editors/registry.js +2 -3
  96. package/editors/registry.mjs +1 -1
  97. package/editors/textEditor/textEditor.js +2 -0
  98. package/editors/textEditor/textEditor.mjs +2 -0
  99. package/helpers/a11y.js +2 -0
  100. package/helpers/a11y.mjs +1 -0
  101. package/helpers/dom/element.d.ts +1 -0
  102. package/helpers/dom/element.js +26 -1
  103. package/helpers/dom/element.mjs +25 -1
  104. package/helpers/mixed.js +4 -4
  105. package/helpers/mixed.mjs +4 -4
  106. package/i18n/languages/ar-AR.js +1 -2
  107. package/i18n/languages/cs-CZ.js +1 -2
  108. package/i18n/languages/de-CH.js +1 -2
  109. package/i18n/languages/de-DE.js +1 -2
  110. package/i18n/languages/en-US.js +1 -2
  111. package/i18n/languages/es-MX.js +1 -2
  112. package/i18n/languages/fa-IR.js +1 -2
  113. package/i18n/languages/fr-FR.js +1 -2
  114. package/i18n/languages/hr-HR.js +1 -2
  115. package/i18n/languages/it-IT.js +1 -2
  116. package/i18n/languages/ja-JP.js +1 -2
  117. package/i18n/languages/ko-KR.js +1 -2
  118. package/i18n/languages/lv-LV.js +1 -2
  119. package/i18n/languages/nb-NO.js +1 -2
  120. package/i18n/languages/nl-NL.js +1 -2
  121. package/i18n/languages/pl-PL.js +1 -2
  122. package/i18n/languages/pt-BR.js +1 -2
  123. package/i18n/languages/ru-RU.js +1 -2
  124. package/i18n/languages/sr-SP.js +1 -2
  125. package/i18n/languages/zh-CN.js +1 -2
  126. package/i18n/languages/zh-TW.js +1 -2
  127. package/i18n/phraseFormatters/index.js +2 -2
  128. package/i18n/phraseFormatters/index.mjs +1 -1
  129. package/i18n/registry.js +3 -4
  130. package/i18n/registry.mjs +1 -1
  131. package/index.js +1 -2
  132. package/package.json +10 -4
  133. package/plugins/autoColumnSize/autoColumnSize.js +47 -0
  134. package/plugins/autoColumnSize/autoColumnSize.mjs +47 -0
  135. package/plugins/autoRowSize/autoRowSize.js +45 -0
  136. package/plugins/autoRowSize/autoRowSize.mjs +45 -0
  137. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +13 -0
  138. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +13 -0
  139. package/plugins/collapsibleColumns/collapsibleColumns.js +31 -0
  140. package/plugins/collapsibleColumns/collapsibleColumns.mjs +31 -0
  141. package/plugins/columnSorting/sortService/registry.js +3 -4
  142. package/plugins/columnSorting/sortService/registry.mjs +1 -1
  143. package/plugins/columnSummary/columnSummary.js +33 -0
  144. package/plugins/columnSummary/columnSummary.mjs +33 -0
  145. package/plugins/comments/commentEditor.js +8 -2
  146. package/plugins/comments/commentEditor.mjs +8 -2
  147. package/plugins/comments/comments.js +59 -15
  148. package/plugins/comments/comments.mjs +60 -16
  149. package/plugins/comments/contextMenuItem/addEditComment.js +1 -2
  150. package/plugins/comments/contextMenuItem/readOnlyComment.js +1 -2
  151. package/plugins/comments/contextMenuItem/removeComment.js +1 -2
  152. package/plugins/contextMenu/contextMenu.js +1 -1
  153. package/plugins/contextMenu/contextMenu.mjs +1 -1
  154. package/plugins/contextMenu/menu/menu.js +12 -6
  155. package/plugins/contextMenu/menu/menu.mjs +13 -7
  156. package/plugins/contextMenu/predefinedItems/alignment.js +1 -2
  157. package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -2
  158. package/plugins/contextMenu/predefinedItems/columnLeft.js +1 -2
  159. package/plugins/contextMenu/predefinedItems/columnRight.js +1 -2
  160. package/plugins/contextMenu/predefinedItems/index.js +1 -2
  161. package/plugins/contextMenu/predefinedItems/readOnly.js +1 -2
  162. package/plugins/contextMenu/predefinedItems/redo.js +1 -2
  163. package/plugins/contextMenu/predefinedItems/removeColumn.js +1 -2
  164. package/plugins/contextMenu/predefinedItems/removeRow.js +1 -2
  165. package/plugins/contextMenu/predefinedItems/rowAbove.js +1 -2
  166. package/plugins/contextMenu/predefinedItems/rowBelow.js +1 -2
  167. package/plugins/contextMenu/predefinedItems/undo.js +1 -2
  168. package/plugins/copyPaste/contextMenuItem/cut.js +1 -2
  169. package/plugins/customBorders/contextMenuItem/bottom.js +1 -2
  170. package/plugins/customBorders/contextMenuItem/left.js +1 -2
  171. package/plugins/customBorders/contextMenuItem/noBorders.js +1 -2
  172. package/plugins/customBorders/contextMenuItem/right.js +1 -2
  173. package/plugins/customBorders/contextMenuItem/top.js +1 -2
  174. package/plugins/customBorders/customBorders.js +1 -2
  175. package/plugins/dropdownMenu/dropdownMenu.js +16 -1
  176. package/plugins/dropdownMenu/dropdownMenu.mjs +16 -1
  177. package/plugins/exportFile/exportFile.js +59 -2
  178. package/plugins/exportFile/exportFile.mjs +58 -0
  179. package/plugins/filters/component/actionBar.js +1 -2
  180. package/plugins/filters/component/condition.js +1 -2
  181. package/plugins/filters/component/value.js +1 -2
  182. package/plugins/filters/condition/beginsWith.js +1 -2
  183. package/plugins/filters/condition/between.js +1 -2
  184. package/plugins/filters/condition/contains.js +1 -2
  185. package/plugins/filters/condition/date/after.js +1 -2
  186. package/plugins/filters/condition/date/before.js +1 -2
  187. package/plugins/filters/condition/date/today.js +1 -2
  188. package/plugins/filters/condition/date/tomorrow.js +1 -2
  189. package/plugins/filters/condition/date/yesterday.js +1 -2
  190. package/plugins/filters/condition/empty.js +1 -2
  191. package/plugins/filters/condition/endsWith.js +1 -2
  192. package/plugins/filters/condition/equal.js +1 -2
  193. package/plugins/filters/condition/greaterThan.js +1 -2
  194. package/plugins/filters/condition/greaterThanOrEqual.js +1 -2
  195. package/plugins/filters/condition/lessThan.js +1 -2
  196. package/plugins/filters/condition/lessThanOrEqual.js +1 -2
  197. package/plugins/filters/condition/none.js +1 -2
  198. package/plugins/filters/condition/notBetween.js +1 -2
  199. package/plugins/filters/condition/notContains.js +1 -2
  200. package/plugins/filters/condition/notEmpty.js +1 -2
  201. package/plugins/filters/condition/notEqual.js +1 -2
  202. package/plugins/filters/filters.js +76 -3
  203. package/plugins/filters/filters.mjs +75 -1
  204. package/plugins/filters/logicalOperations/conjunction.js +1 -2
  205. package/plugins/filters/logicalOperations/disjunction.js +1 -2
  206. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +1 -2
  207. package/plugins/filters/ui/_base.js +1 -2
  208. package/plugins/filters/ui/multipleSelect.js +1 -7
  209. package/plugins/filters/ui/multipleSelect.mjs +0 -5
  210. package/plugins/filters/ui/select.js +1 -2
  211. package/plugins/formulas/engine/register.js +3 -4
  212. package/plugins/formulas/engine/register.mjs +1 -1
  213. package/plugins/formulas/formulas.js +40 -41
  214. package/plugins/formulas/formulas.mjs +39 -40
  215. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -2
  216. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -2
  217. package/plugins/hiddenColumns/hiddenColumns.js +64 -0
  218. package/plugins/hiddenColumns/hiddenColumns.mjs +64 -0
  219. package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -2
  220. package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -2
  221. package/plugins/hiddenRows/hiddenRows.js +64 -0
  222. package/plugins/hiddenRows/hiddenRows.mjs +64 -0
  223. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -2
  224. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -2
  225. package/plugins/manualRowMove/manualRowMove.js +1 -1
  226. package/plugins/manualRowMove/manualRowMove.mjs +1 -1
  227. package/plugins/manualRowResize/manualRowResize.js +1 -1
  228. package/plugins/manualRowResize/manualRowResize.mjs +1 -1
  229. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +1 -2
  230. package/plugins/mergeCells/mergeCells.js +56 -38
  231. package/plugins/mergeCells/mergeCells.mjs +56 -38
  232. package/plugins/mergeCells/utils.js +3 -4
  233. package/plugins/mergeCells/utils.mjs +3 -4
  234. package/plugins/nestedHeaders/nestedHeaders.js +37 -12
  235. package/plugins/nestedHeaders/nestedHeaders.mjs +37 -12
  236. package/plugins/nestedRows/nestedRows.js +12 -12
  237. package/plugins/nestedRows/nestedRows.mjs +12 -12
  238. package/plugins/nestedRows/ui/contextMenu.js +1 -2
  239. package/plugins/nestedRows/ui/headers.js +2 -3
  240. package/plugins/nestedRows/ui/headers.mjs +2 -3
  241. package/plugins/persistentState/persistentState.js +1 -1
  242. package/plugins/persistentState/persistentState.mjs +1 -1
  243. package/plugins/stretchColumns/calculator.js +3 -2
  244. package/plugins/stretchColumns/calculator.mjs +3 -2
  245. package/plugins/stretchColumns/stretchColumns.js +13 -0
  246. package/plugins/stretchColumns/stretchColumns.mjs +13 -0
  247. package/plugins/trimRows/trimRows.js +61 -0
  248. package/plugins/trimRows/trimRows.mjs +61 -0
  249. package/renderers/baseRenderer/baseRenderer.js +4 -0
  250. package/renderers/baseRenderer/baseRenderer.mjs +4 -0
  251. package/renderers/registry.js +2 -3
  252. package/renderers/registry.mjs +1 -1
  253. package/selection/mouseEventHandler.js +48 -13
  254. package/selection/mouseEventHandler.mjs +47 -13
  255. package/selection/range.js +73 -6
  256. package/selection/range.mjs +73 -6
  257. package/selection/selection.js +46 -32
  258. package/selection/selection.mjs +45 -30
  259. package/settings.d.ts +1 -0
  260. package/styles/handsontable.css +131 -55
  261. package/styles/handsontable.min.css +3 -3
  262. package/styles/ht-theme-horizon.css +296 -181
  263. package/styles/ht-theme-horizon.min.css +3 -3
  264. package/styles/ht-theme-main.css +314 -205
  265. package/styles/ht-theme-main.min.css +3 -3
  266. package/tableView.js +9 -20
  267. package/tableView.mjs +9 -20
  268. package/translations/indexMapper.js +9 -5
  269. package/translations/indexMapper.mjs +9 -5
  270. package/utils/paginator.js +13 -0
  271. package/utils/paginator.mjs +13 -0
  272. package/utils/staticRegister.js +24 -2
  273. package/utils/staticRegister.mjs +23 -2
  274. package/{3rdparty/walkontable/src/utils → utils}/stylesHandler.js +16 -30
  275. package/{3rdparty/walkontable/src/utils → utils}/stylesHandler.mjs +16 -30
  276. package/validators/registry.js +2 -3
  277. package/validators/registry.mjs +1 -1
@@ -49,6 +49,22 @@ exports.__esModule = true;
49
49
  * />
50
50
  * :::
51
51
  *
52
+ * ::: only-for angular
53
+ * ```ts
54
+ * settings = {
55
+ * afterChange: (changes, source) => {
56
+ * changes?.forEach(([row, prop, oldValue, newValue]) => {
57
+ * // Some logic...
58
+ * });
59
+ * },
60
+ * };
61
+ * ```
62
+ *
63
+ * ```html
64
+ * <hot-table [settings]="settings" />
65
+ * ```
66
+ * :::
67
+ *
52
68
  * ::: only-for javascript
53
69
  * ```js
54
70
  * // using events as plugin hooks
@@ -153,6 +169,22 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
153
169
  * />
154
170
  * ```
155
171
  * :::
172
+ *
173
+ * ::: only-for angular
174
+ * ```ts
175
+ * settings = {
176
+ * afterChange: (changes, source) => {
177
+ * changes?.forEach(([row, prop, oldValue, newValue]) => {
178
+ * // Some logic...
179
+ * });
180
+ * },
181
+ * };
182
+ * ```
183
+ *
184
+ * ```html
185
+ * <hot-table [settings]="settings"></hot-table>
186
+ * ```
187
+ * :::
156
188
  */
157
189
  'afterChange',
158
190
  /**
@@ -256,6 +288,21 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
256
288
  * />
257
289
  * ```
258
290
  * :::
291
+ *
292
+ * ::: only-for angular
293
+ * ```ts
294
+ * settings = {
295
+ * beforeCreateCol: (data, coords) => {
296
+ * // Return `false` to cancel column inserting.
297
+ * return false;
298
+ * },
299
+ * };
300
+ * ```
301
+ *
302
+ * ```html
303
+ * <hot-table [settings]="settings"></hot-table>
304
+ * ```
305
+ * :::
259
306
  */
260
307
  'beforeCreateCol',
261
308
  /**
@@ -640,6 +687,31 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
640
687
  * />
641
688
  * ```
642
689
  * :::
690
+ *
691
+ * ::: only-for angular
692
+ * ```ts
693
+ * settings = {
694
+ * afterSelection: (
695
+ * row,
696
+ * column,
697
+ * row2,
698
+ * column2,
699
+ * preventScrolling,
700
+ * selectionLayerLevel
701
+ * ) => {
702
+ * // If set to `false` (default): when cell selection is outside the viewport,
703
+ * // Handsontable scrolls the viewport to cell selection's end corner.
704
+ * // If set to `true`: when cell selection is outside the viewport,
705
+ * // Handsontable doesn't scroll to cell selection's end corner.
706
+ * preventScrolling.value = true;
707
+ * },
708
+ * };
709
+ * ```
710
+ *
711
+ * ```html
712
+ * <hot-table [settings]="settings"></hot-table>
713
+ * ```
714
+ * :::
643
715
  */
644
716
  'afterSelection',
645
717
  /**
@@ -678,6 +750,28 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
678
750
  * />
679
751
  * ```
680
752
  * :::
753
+ *
754
+ * ::: only-for angular
755
+ * ```ts
756
+ * settings = {
757
+ * afterSelectionByProp: (
758
+ * row,
759
+ * column,
760
+ * row2,
761
+ * column2,
762
+ * preventScrolling,
763
+ * selectionLayerLevel
764
+ * ) => {
765
+ * // Setting if prevent scrolling after selection
766
+ * preventScrolling.value = true;
767
+ * },
768
+ * };
769
+ * ```
770
+ *
771
+ * ```html
772
+ * <hot-table [settings]="settings"></hot-table>
773
+ * ```
774
+ * :::
681
775
  */
682
776
  'afterSelectionByProp',
683
777
  /**
@@ -742,6 +836,24 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
742
836
  * />
743
837
  * ```
744
838
  * :::
839
+ *
840
+ * ::: only-for angular
841
+ * ```ts
842
+ * settings = {
843
+ * afterSelectionFocusSet: (row, column, preventScrolling) => {
844
+ * // If set to `false` (default): when focused cell selection is outside the viewport,
845
+ * // Handsontable scrolls the viewport to that cell.
846
+ * // If set to `true`: when focused cell selection is outside the viewport,
847
+ * // Handsontable doesn't scroll the viewport.
848
+ * preventScrolling.value = true;
849
+ * },
850
+ * };
851
+ * ```
852
+ *
853
+ * ```html
854
+ * <hot-table [settings]="settings"></hot-table>
855
+ * ```
856
+ * :::
745
857
  */
746
858
  'afterSelectionFocusSet',
747
859
  /**
@@ -776,6 +888,22 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
776
888
  * />
777
889
  * ```
778
890
  * :::
891
+ *
892
+ * ::: only-for angular
893
+ * ```ts
894
+ * settings = {
895
+ * beforeSelectColumns: (from, to, highlight) => {
896
+ * // Extend the column selection by one column left and one column right.
897
+ * from.col = Math.max(from.col - 1, 0);
898
+ * to.col = Math.min(to.col + 1, this.countCols() - 1);
899
+ * },
900
+ * };
901
+ * ```
902
+ *
903
+ * ```html
904
+ * <hot-table [settings]="settings"></hot-table>
905
+ * ```
906
+ * :::
779
907
  */
780
908
  'beforeSelectColumns',
781
909
  /**
@@ -820,6 +948,22 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
820
948
  * />
821
949
  * ```
822
950
  * :::
951
+ *
952
+ * ::: only-for angular
953
+ * ```ts
954
+ * settings = {
955
+ * beforeSelectRows: (from, to, highlight) => {
956
+ * // Extend the row selection by one row up and one row down.
957
+ * from.row = Math.max(from.row - 1, 0);
958
+ * to.row = Math.min(to.row + 1, this.countRows() - 1);
959
+ * },
960
+ * };
961
+ * ```
962
+ *
963
+ * ```html
964
+ * <hot-table [settings]="settings"></hot-table>
965
+ * ```
966
+ * :::
823
967
  */
824
968
  'beforeSelectRows',
825
969
  /**
@@ -1040,6 +1184,42 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
1040
1184
  * />
1041
1185
  * ```
1042
1186
  * :::
1187
+ * ::: only-for angular
1188
+ *```ts
1189
+ * // To alter a single change, overwrite the desired value with `changes[i][3]`
1190
+ * settings1 = {
1191
+ * beforeChange: (changes, source) => {
1192
+ * // [[row, prop, oldVal, newVal], ...]
1193
+ * changes[0][3] = 10;
1194
+ * },
1195
+ * };
1196
+ *
1197
+ * // To ignore a single change, set `changes[i]` to `null`
1198
+ * // or remove `changes[i]` from the array, by using changes.splice(i, 1).
1199
+ * settings2 = {
1200
+ * beforeChange: (changes, source) => {
1201
+ * // [[row, prop, oldVal, newVal], ...]
1202
+ * changes[0] = null;
1203
+ * },
1204
+ * };
1205
+ *
1206
+ * // To ignore all changes, return `false`
1207
+ * // or set the array's length to 0 (`changes.length = 0`)
1208
+ * settings3 = {
1209
+ * beforeChange: (changes, source) => {
1210
+ * // [[row, prop, oldVal, newVal], ...]
1211
+ * return false;
1212
+ * },
1213
+ * };
1214
+ * ```
1215
+ *
1216
+ * ```html
1217
+ * <hot-table [settings]="settings1"></hot-table>
1218
+ * <hot-table [settings]="settings2"></hot-table>
1219
+ * <hot-table [settings]="settings3"></hot-table>
1220
+ * ```
1221
+ *
1222
+ * :::
1043
1223
  */
1044
1224
  'beforeChange',
1045
1225
  /**
@@ -1447,7 +1627,7 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
1447
1627
  * Fired when a data was retrieved or modified.
1448
1628
  *
1449
1629
  * @event Hooks#modifyData
1450
- * @param {number} row Physical row index.
1630
+ * @param {number} row Visual row index.
1451
1631
  * @param {number} column Visual column index.
1452
1632
  * @param {object} valueHolder Object which contains original value which can be modified by overwriting `.value` property.
1453
1633
  * @param {string} ioMode String which indicates for what operation hook is fired (`get` or `set`).
@@ -1650,6 +1830,32 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
1650
1830
  * />
1651
1831
  * ```
1652
1832
  * :::
1833
+ *
1834
+ * ::: only-for angular
1835
+ *```ts
1836
+ * // To disregard a single row, remove it from the array using data.splice(i, 1).
1837
+ * settings1 = {
1838
+ * beforeCut: (data, coords) => {
1839
+ * // data -> [[1, 2, 3], [4, 5, 6]]
1840
+ * data.splice(0, 1);
1841
+ * // data -> [[4, 5, 6]]
1842
+ * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
1843
+ * },
1844
+ * };
1845
+ *
1846
+ * // To cancel a cutting action, just return `false`.
1847
+ * settings2 = {
1848
+ * beforeCut: (data, coords) => {
1849
+ * return false;
1850
+ * },
1851
+ * };
1852
+ * ```
1853
+ *
1854
+ * ```html
1855
+ * <hot-table [settings]="settings1"></hot-table>
1856
+ * <hot-table [settings]="settings2"></hot-table>
1857
+ * ```
1858
+ * :::
1653
1859
  */
1654
1860
  'beforeCut',
1655
1861
  /**
@@ -1722,6 +1928,32 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
1722
1928
  * ...
1723
1929
  * ```
1724
1930
  * :::
1931
+ *
1932
+ * ::: only-for angular
1933
+ * ```ts
1934
+ * // To disregard a single row, remove it from the array using data.splice(i, 1).
1935
+ * settings1 = {
1936
+ * beforeCopy: (data, coords) => {
1937
+ * // data -> [[1, 2, 3], [4, 5, 6]]
1938
+ * data.splice(0, 1);
1939
+ * // data -> [[4, 5, 6]]
1940
+ * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
1941
+ * },
1942
+ * };
1943
+ *
1944
+ * // To cancel copying, return false from the callback.
1945
+ * settings2 = {
1946
+ * beforeCopy: (data, coords) => {
1947
+ * return false;
1948
+ * },
1949
+ * };
1950
+ * ```
1951
+ *
1952
+ * ```html
1953
+ * <hot-table [settings]="settings1"></hot-table>
1954
+ * <hot-table [settings]="settings2"></hot-table>
1955
+ * ```
1956
+ * :::
1725
1957
  */
1726
1958
  'beforeCopy',
1727
1959
  /**
@@ -1784,6 +2016,32 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
1784
2016
  * />
1785
2017
  * ```
1786
2018
  * :::
2019
+ *
2020
+ * ::: only-for angular
2021
+ * ```ts
2022
+ * // To disregard a single row, remove it from the array using data.splice(i, 1).
2023
+ * settings1 = {
2024
+ * beforePaste: (data, coords) => {
2025
+ * // data -> [[1, 2, 3], [4, 5, 6]]
2026
+ * data.splice(0, 1);
2027
+ * // data -> [[4, 5, 6]]
2028
+ * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
2029
+ * },
2030
+ * };
2031
+ *
2032
+ * // To cancel pasting, return false from the callback.
2033
+ * settings2 = {
2034
+ * beforePaste: (data, coords) => {
2035
+ * return false;
2036
+ * },
2037
+ * };
2038
+ * ```
2039
+ *
2040
+ * ```html
2041
+ * <hot-table [settings]="settings1"></hot-table>
2042
+ * <hot-table [settings]="settings2"></hot-table>
2043
+ * ```
2044
+ * :::
1787
2045
  */
1788
2046
  'beforePaste',
1789
2047
  /**
@@ -46,6 +46,22 @@
46
46
  * />
47
47
  * :::
48
48
  *
49
+ * ::: only-for angular
50
+ * ```ts
51
+ * settings = {
52
+ * afterChange: (changes, source) => {
53
+ * changes?.forEach(([row, prop, oldValue, newValue]) => {
54
+ * // Some logic...
55
+ * });
56
+ * },
57
+ * };
58
+ * ```
59
+ *
60
+ * ```html
61
+ * <hot-table [settings]="settings" />
62
+ * ```
63
+ * :::
64
+ *
49
65
  * ::: only-for javascript
50
66
  * ```js
51
67
  * // using events as plugin hooks
@@ -150,6 +166,22 @@ export const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-com
150
166
  * />
151
167
  * ```
152
168
  * :::
169
+ *
170
+ * ::: only-for angular
171
+ * ```ts
172
+ * settings = {
173
+ * afterChange: (changes, source) => {
174
+ * changes?.forEach(([row, prop, oldValue, newValue]) => {
175
+ * // Some logic...
176
+ * });
177
+ * },
178
+ * };
179
+ * ```
180
+ *
181
+ * ```html
182
+ * <hot-table [settings]="settings"></hot-table>
183
+ * ```
184
+ * :::
153
185
  */
154
186
  'afterChange',
155
187
  /**
@@ -253,6 +285,21 @@ export const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-com
253
285
  * />
254
286
  * ```
255
287
  * :::
288
+ *
289
+ * ::: only-for angular
290
+ * ```ts
291
+ * settings = {
292
+ * beforeCreateCol: (data, coords) => {
293
+ * // Return `false` to cancel column inserting.
294
+ * return false;
295
+ * },
296
+ * };
297
+ * ```
298
+ *
299
+ * ```html
300
+ * <hot-table [settings]="settings"></hot-table>
301
+ * ```
302
+ * :::
256
303
  */
257
304
  'beforeCreateCol',
258
305
  /**
@@ -637,6 +684,31 @@ export const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-com
637
684
  * />
638
685
  * ```
639
686
  * :::
687
+ *
688
+ * ::: only-for angular
689
+ * ```ts
690
+ * settings = {
691
+ * afterSelection: (
692
+ * row,
693
+ * column,
694
+ * row2,
695
+ * column2,
696
+ * preventScrolling,
697
+ * selectionLayerLevel
698
+ * ) => {
699
+ * // If set to `false` (default): when cell selection is outside the viewport,
700
+ * // Handsontable scrolls the viewport to cell selection's end corner.
701
+ * // If set to `true`: when cell selection is outside the viewport,
702
+ * // Handsontable doesn't scroll to cell selection's end corner.
703
+ * preventScrolling.value = true;
704
+ * },
705
+ * };
706
+ * ```
707
+ *
708
+ * ```html
709
+ * <hot-table [settings]="settings"></hot-table>
710
+ * ```
711
+ * :::
640
712
  */
641
713
  'afterSelection',
642
714
  /**
@@ -675,6 +747,28 @@ export const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-com
675
747
  * />
676
748
  * ```
677
749
  * :::
750
+ *
751
+ * ::: only-for angular
752
+ * ```ts
753
+ * settings = {
754
+ * afterSelectionByProp: (
755
+ * row,
756
+ * column,
757
+ * row2,
758
+ * column2,
759
+ * preventScrolling,
760
+ * selectionLayerLevel
761
+ * ) => {
762
+ * // Setting if prevent scrolling after selection
763
+ * preventScrolling.value = true;
764
+ * },
765
+ * };
766
+ * ```
767
+ *
768
+ * ```html
769
+ * <hot-table [settings]="settings"></hot-table>
770
+ * ```
771
+ * :::
678
772
  */
679
773
  'afterSelectionByProp',
680
774
  /**
@@ -739,6 +833,24 @@ export const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-com
739
833
  * />
740
834
  * ```
741
835
  * :::
836
+ *
837
+ * ::: only-for angular
838
+ * ```ts
839
+ * settings = {
840
+ * afterSelectionFocusSet: (row, column, preventScrolling) => {
841
+ * // If set to `false` (default): when focused cell selection is outside the viewport,
842
+ * // Handsontable scrolls the viewport to that cell.
843
+ * // If set to `true`: when focused cell selection is outside the viewport,
844
+ * // Handsontable doesn't scroll the viewport.
845
+ * preventScrolling.value = true;
846
+ * },
847
+ * };
848
+ * ```
849
+ *
850
+ * ```html
851
+ * <hot-table [settings]="settings"></hot-table>
852
+ * ```
853
+ * :::
742
854
  */
743
855
  'afterSelectionFocusSet',
744
856
  /**
@@ -773,6 +885,22 @@ export const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-com
773
885
  * />
774
886
  * ```
775
887
  * :::
888
+ *
889
+ * ::: only-for angular
890
+ * ```ts
891
+ * settings = {
892
+ * beforeSelectColumns: (from, to, highlight) => {
893
+ * // Extend the column selection by one column left and one column right.
894
+ * from.col = Math.max(from.col - 1, 0);
895
+ * to.col = Math.min(to.col + 1, this.countCols() - 1);
896
+ * },
897
+ * };
898
+ * ```
899
+ *
900
+ * ```html
901
+ * <hot-table [settings]="settings"></hot-table>
902
+ * ```
903
+ * :::
776
904
  */
777
905
  'beforeSelectColumns',
778
906
  /**
@@ -817,6 +945,22 @@ export const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-com
817
945
  * />
818
946
  * ```
819
947
  * :::
948
+ *
949
+ * ::: only-for angular
950
+ * ```ts
951
+ * settings = {
952
+ * beforeSelectRows: (from, to, highlight) => {
953
+ * // Extend the row selection by one row up and one row down.
954
+ * from.row = Math.max(from.row - 1, 0);
955
+ * to.row = Math.min(to.row + 1, this.countRows() - 1);
956
+ * },
957
+ * };
958
+ * ```
959
+ *
960
+ * ```html
961
+ * <hot-table [settings]="settings"></hot-table>
962
+ * ```
963
+ * :::
820
964
  */
821
965
  'beforeSelectRows',
822
966
  /**
@@ -1037,6 +1181,42 @@ export const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-com
1037
1181
  * />
1038
1182
  * ```
1039
1183
  * :::
1184
+ * ::: only-for angular
1185
+ *```ts
1186
+ * // To alter a single change, overwrite the desired value with `changes[i][3]`
1187
+ * settings1 = {
1188
+ * beforeChange: (changes, source) => {
1189
+ * // [[row, prop, oldVal, newVal], ...]
1190
+ * changes[0][3] = 10;
1191
+ * },
1192
+ * };
1193
+ *
1194
+ * // To ignore a single change, set `changes[i]` to `null`
1195
+ * // or remove `changes[i]` from the array, by using changes.splice(i, 1).
1196
+ * settings2 = {
1197
+ * beforeChange: (changes, source) => {
1198
+ * // [[row, prop, oldVal, newVal], ...]
1199
+ * changes[0] = null;
1200
+ * },
1201
+ * };
1202
+ *
1203
+ * // To ignore all changes, return `false`
1204
+ * // or set the array's length to 0 (`changes.length = 0`)
1205
+ * settings3 = {
1206
+ * beforeChange: (changes, source) => {
1207
+ * // [[row, prop, oldVal, newVal], ...]
1208
+ * return false;
1209
+ * },
1210
+ * };
1211
+ * ```
1212
+ *
1213
+ * ```html
1214
+ * <hot-table [settings]="settings1"></hot-table>
1215
+ * <hot-table [settings]="settings2"></hot-table>
1216
+ * <hot-table [settings]="settings3"></hot-table>
1217
+ * ```
1218
+ *
1219
+ * :::
1040
1220
  */
1041
1221
  'beforeChange',
1042
1222
  /**
@@ -1444,7 +1624,7 @@ export const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-com
1444
1624
  * Fired when a data was retrieved or modified.
1445
1625
  *
1446
1626
  * @event Hooks#modifyData
1447
- * @param {number} row Physical row index.
1627
+ * @param {number} row Visual row index.
1448
1628
  * @param {number} column Visual column index.
1449
1629
  * @param {object} valueHolder Object which contains original value which can be modified by overwriting `.value` property.
1450
1630
  * @param {string} ioMode String which indicates for what operation hook is fired (`get` or `set`).
@@ -1647,6 +1827,32 @@ export const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-com
1647
1827
  * />
1648
1828
  * ```
1649
1829
  * :::
1830
+ *
1831
+ * ::: only-for angular
1832
+ *```ts
1833
+ * // To disregard a single row, remove it from the array using data.splice(i, 1).
1834
+ * settings1 = {
1835
+ * beforeCut: (data, coords) => {
1836
+ * // data -> [[1, 2, 3], [4, 5, 6]]
1837
+ * data.splice(0, 1);
1838
+ * // data -> [[4, 5, 6]]
1839
+ * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
1840
+ * },
1841
+ * };
1842
+ *
1843
+ * // To cancel a cutting action, just return `false`.
1844
+ * settings2 = {
1845
+ * beforeCut: (data, coords) => {
1846
+ * return false;
1847
+ * },
1848
+ * };
1849
+ * ```
1850
+ *
1851
+ * ```html
1852
+ * <hot-table [settings]="settings1"></hot-table>
1853
+ * <hot-table [settings]="settings2"></hot-table>
1854
+ * ```
1855
+ * :::
1650
1856
  */
1651
1857
  'beforeCut',
1652
1858
  /**
@@ -1719,6 +1925,32 @@ export const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-com
1719
1925
  * ...
1720
1926
  * ```
1721
1927
  * :::
1928
+ *
1929
+ * ::: only-for angular
1930
+ * ```ts
1931
+ * // To disregard a single row, remove it from the array using data.splice(i, 1).
1932
+ * settings1 = {
1933
+ * beforeCopy: (data, coords) => {
1934
+ * // data -> [[1, 2, 3], [4, 5, 6]]
1935
+ * data.splice(0, 1);
1936
+ * // data -> [[4, 5, 6]]
1937
+ * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
1938
+ * },
1939
+ * };
1940
+ *
1941
+ * // To cancel copying, return false from the callback.
1942
+ * settings2 = {
1943
+ * beforeCopy: (data, coords) => {
1944
+ * return false;
1945
+ * },
1946
+ * };
1947
+ * ```
1948
+ *
1949
+ * ```html
1950
+ * <hot-table [settings]="settings1"></hot-table>
1951
+ * <hot-table [settings]="settings2"></hot-table>
1952
+ * ```
1953
+ * :::
1722
1954
  */
1723
1955
  'beforeCopy',
1724
1956
  /**
@@ -1781,6 +2013,32 @@ export const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-com
1781
2013
  * />
1782
2014
  * ```
1783
2015
  * :::
2016
+ *
2017
+ * ::: only-for angular
2018
+ * ```ts
2019
+ * // To disregard a single row, remove it from the array using data.splice(i, 1).
2020
+ * settings1 = {
2021
+ * beforePaste: (data, coords) => {
2022
+ * // data -> [[1, 2, 3], [4, 5, 6]]
2023
+ * data.splice(0, 1);
2024
+ * // data -> [[4, 5, 6]]
2025
+ * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
2026
+ * },
2027
+ * };
2028
+ *
2029
+ * // To cancel pasting, return false from the callback.
2030
+ * settings2 = {
2031
+ * beforePaste: (data, coords) => {
2032
+ * return false;
2033
+ * },
2034
+ * };
2035
+ * ```
2036
+ *
2037
+ * ```html
2038
+ * <hot-table [settings]="settings1"></hot-table>
2039
+ * <hot-table [settings]="settings2"></hot-table>
2040
+ * ```
2041
+ * :::
1784
2042
  */
1785
2043
  'beforePaste',
1786
2044
  /**
package/core.d.ts CHANGED
@@ -113,6 +113,8 @@ export default class Core {
113
113
  getSourceDataAtCell(row: number, column: number): CellValue;
114
114
  getSourceDataAtCol(column: number): CellValue[];
115
115
  getSourceDataAtRow(row: number): CellValue[] | RowObject;
116
+ getTableWidth(): number;
117
+ getTableHeight(): number;
116
118
  getTranslatedPhrase(dictionaryKey: string, extraArguments: any): string | null;
117
119
  getValue(): CellValue;
118
120
  hasColHeaders(): boolean;