handsontable 16.0.1-next-eee5f08-20250710 → 16.1.0-next-abd8f2e-20250904

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 (489) hide show
  1. package/3rdparty/walkontable/src/overlays.js +12 -2
  2. package/3rdparty/walkontable/src/overlays.mjs +12 -2
  3. package/3rdparty/walkontable/src/viewport.js +2 -6
  4. package/3rdparty/walkontable/src/viewport.mjs +2 -6
  5. package/CHANGELOG.md +32 -0
  6. package/base.js +2 -2
  7. package/base.mjs +2 -2
  8. package/cellTypes/autocompleteType/accessors/index.js +7 -0
  9. package/cellTypes/autocompleteType/accessors/index.mjs +2 -0
  10. package/cellTypes/autocompleteType/accessors/valueGetter.js +14 -0
  11. package/cellTypes/autocompleteType/accessors/valueGetter.mjs +10 -0
  12. package/cellTypes/autocompleteType/accessors/valueSetter.js +25 -0
  13. package/cellTypes/autocompleteType/accessors/valueSetter.mjs +21 -0
  14. package/cellTypes/autocompleteType/autocompleteType.js +4 -1
  15. package/cellTypes/autocompleteType/autocompleteType.mjs +4 -1
  16. package/cellTypes/checkboxType/accessors/index.js +5 -0
  17. package/cellTypes/checkboxType/accessors/index.mjs +1 -0
  18. package/cellTypes/checkboxType/accessors/valueSetter.js +26 -0
  19. package/cellTypes/checkboxType/accessors/valueSetter.mjs +22 -0
  20. package/cellTypes/checkboxType/checkboxType.js +3 -1
  21. package/cellTypes/checkboxType/checkboxType.mjs +3 -1
  22. package/cellTypes/dropdownType/accessors/index.js +7 -0
  23. package/cellTypes/dropdownType/accessors/index.mjs +2 -0
  24. package/cellTypes/dropdownType/accessors/valueGetter.js +14 -0
  25. package/cellTypes/dropdownType/accessors/valueGetter.mjs +10 -0
  26. package/cellTypes/dropdownType/accessors/valueSetter.js +17 -0
  27. package/cellTypes/dropdownType/accessors/valueSetter.mjs +13 -0
  28. package/cellTypes/dropdownType/dropdownType.js +4 -1
  29. package/cellTypes/dropdownType/dropdownType.mjs +4 -1
  30. package/cellTypes/numericType/accessors/index.js +5 -0
  31. package/cellTypes/numericType/accessors/index.mjs +1 -0
  32. package/cellTypes/numericType/accessors/valueSetter.js +19 -0
  33. package/cellTypes/numericType/accessors/valueSetter.mjs +15 -0
  34. package/cellTypes/numericType/numericType.js +3 -1
  35. package/cellTypes/numericType/numericType.mjs +3 -1
  36. package/core/focusCatcher/index.js +37 -112
  37. package/core/focusCatcher/index.mjs +35 -110
  38. package/core/focusCatcher/utils.js +31 -0
  39. package/core/focusCatcher/utils.mjs +27 -0
  40. package/core/hooks/constants.js +242 -0
  41. package/core/hooks/constants.mjs +242 -0
  42. package/core/hooks/index.d.ts +22 -0
  43. package/core/viewportScroll/scrollStrategies/focusScroll.js +5 -1
  44. package/core/viewportScroll/scrollStrategies/focusScroll.mjs +5 -1
  45. package/core/viewportScroll/utils.js +1 -1
  46. package/core/viewportScroll/utils.mjs +1 -1
  47. package/core.d.ts +4 -0
  48. package/core.js +237 -139
  49. package/core.mjs +240 -142
  50. package/dataMap/dataMap.js +13 -3
  51. package/dataMap/dataMap.mjs +14 -4
  52. package/dataMap/dataSource.js +16 -0
  53. package/dataMap/dataSource.mjs +16 -0
  54. package/dataMap/metaManager/lazyFactoryMap.js +4 -3
  55. package/dataMap/metaManager/lazyFactoryMap.mjs +2 -1
  56. package/dataMap/metaManager/metaLayers/cellMeta.js +3 -2
  57. package/dataMap/metaManager/metaLayers/cellMeta.mjs +3 -2
  58. package/dataMap/metaManager/metaSchema.js +289 -4
  59. package/dataMap/metaManager/metaSchema.mjs +289 -4
  60. package/dataMap/metaManager/utils.js +0 -11
  61. package/dataMap/metaManager/utils.mjs +0 -10
  62. package/dataMap/replaceData.js +1 -0
  63. package/dataMap/replaceData.mjs +1 -0
  64. package/dist/handsontable.css +281 -4
  65. package/dist/handsontable.full.css +281 -4
  66. package/dist/handsontable.full.js +7844 -2990
  67. package/dist/handsontable.full.min.css +4 -5
  68. package/dist/handsontable.full.min.js +167 -165
  69. package/dist/handsontable.js +9639 -4806
  70. package/dist/handsontable.min.css +4 -4
  71. package/dist/handsontable.min.js +52 -50
  72. package/dist/languages/all.js +231 -21
  73. package/dist/languages/all.min.js +1 -1
  74. package/dist/languages/ar-AR.js +11 -1
  75. package/dist/languages/ar-AR.min.js +1 -1
  76. package/dist/languages/cs-CZ.js +11 -1
  77. package/dist/languages/cs-CZ.min.js +1 -1
  78. package/dist/languages/de-CH.js +11 -1
  79. package/dist/languages/de-CH.min.js +1 -1
  80. package/dist/languages/de-DE.js +11 -1
  81. package/dist/languages/de-DE.min.js +1 -1
  82. package/dist/languages/en-US.js +11 -1
  83. package/dist/languages/en-US.min.js +1 -1
  84. package/dist/languages/es-MX.js +11 -1
  85. package/dist/languages/es-MX.min.js +1 -1
  86. package/dist/languages/fa-IR.js +11 -1
  87. package/dist/languages/fa-IR.min.js +1 -1
  88. package/dist/languages/fr-FR.js +11 -1
  89. package/dist/languages/fr-FR.min.js +1 -1
  90. package/dist/languages/hr-HR.js +11 -1
  91. package/dist/languages/hr-HR.min.js +1 -1
  92. package/dist/languages/it-IT.js +11 -1
  93. package/dist/languages/it-IT.min.js +1 -1
  94. package/dist/languages/ja-JP.js +11 -1
  95. package/dist/languages/ja-JP.min.js +1 -1
  96. package/dist/languages/ko-KR.js +11 -1
  97. package/dist/languages/ko-KR.min.js +1 -1
  98. package/dist/languages/lv-LV.js +11 -1
  99. package/dist/languages/lv-LV.min.js +1 -1
  100. package/dist/languages/nb-NO.js +11 -1
  101. package/dist/languages/nb-NO.min.js +1 -1
  102. package/dist/languages/nl-NL.js +11 -1
  103. package/dist/languages/nl-NL.min.js +1 -1
  104. package/dist/languages/pl-PL.js +11 -1
  105. package/dist/languages/pl-PL.min.js +1 -1
  106. package/dist/languages/pt-BR.js +11 -1
  107. package/dist/languages/pt-BR.min.js +1 -1
  108. package/dist/languages/ru-RU.js +11 -1
  109. package/dist/languages/ru-RU.min.js +1 -1
  110. package/dist/languages/sr-SP.js +11 -1
  111. package/dist/languages/sr-SP.min.js +1 -1
  112. package/dist/languages/zh-CN.js +11 -1
  113. package/dist/languages/zh-CN.min.js +1 -1
  114. package/dist/languages/zh-TW.js +11 -1
  115. package/dist/languages/zh-TW.min.js +1 -1
  116. package/editorManager.js +4 -4
  117. package/editorManager.mjs +4 -4
  118. package/editors/autocompleteEditor/autocompleteEditor.js +50 -112
  119. package/editors/autocompleteEditor/autocompleteEditor.mjs +51 -113
  120. package/editors/baseEditor/baseEditor.js +10 -6
  121. package/editors/baseEditor/baseEditor.mjs +10 -6
  122. package/editors/handsontableEditor/handsontableEditor.js +9 -9
  123. package/editors/handsontableEditor/handsontableEditor.mjs +9 -9
  124. package/editors/textEditor/textEditor.js +0 -7
  125. package/editors/textEditor/textEditor.mjs +0 -7
  126. package/focusManager.js +2 -2
  127. package/focusManager.mjs +2 -2
  128. package/helpers/a11y.js +15 -2
  129. package/helpers/a11y.mjs +10 -2
  130. package/helpers/console.js +12 -0
  131. package/helpers/console.mjs +11 -0
  132. package/helpers/dom/element.js +4 -4
  133. package/helpers/dom/element.mjs +4 -4
  134. package/helpers/mixed.js +65 -2
  135. package/helpers/mixed.mjs +63 -2
  136. package/helpers/number.js +28 -0
  137. package/helpers/number.mjs +26 -0
  138. package/helpers/object.js +35 -0
  139. package/helpers/object.mjs +34 -0
  140. package/helpers/string.js +19 -0
  141. package/helpers/string.mjs +18 -0
  142. package/helpers/templateLiteralTag.js +57 -1
  143. package/helpers/templateLiteralTag.mjs +56 -1
  144. package/i18n/constants.js +13 -1
  145. package/i18n/constants.mjs +13 -1
  146. package/i18n/languages/ar-AR.js +11 -1
  147. package/i18n/languages/ar-AR.mjs +11 -1
  148. package/i18n/languages/cs-CZ.js +11 -1
  149. package/i18n/languages/cs-CZ.mjs +11 -1
  150. package/i18n/languages/de-CH.js +11 -1
  151. package/i18n/languages/de-CH.mjs +11 -1
  152. package/i18n/languages/de-DE.js +11 -1
  153. package/i18n/languages/de-DE.mjs +11 -1
  154. package/i18n/languages/en-US.js +11 -1
  155. package/i18n/languages/en-US.mjs +11 -1
  156. package/i18n/languages/es-MX.js +11 -1
  157. package/i18n/languages/es-MX.mjs +11 -1
  158. package/i18n/languages/fa-IR.js +11 -1
  159. package/i18n/languages/fa-IR.mjs +11 -1
  160. package/i18n/languages/fr-FR.js +11 -1
  161. package/i18n/languages/fr-FR.mjs +11 -1
  162. package/i18n/languages/hr-HR.js +11 -1
  163. package/i18n/languages/hr-HR.mjs +11 -1
  164. package/i18n/languages/it-IT.js +11 -1
  165. package/i18n/languages/it-IT.mjs +11 -1
  166. package/i18n/languages/ja-JP.js +11 -1
  167. package/i18n/languages/ja-JP.mjs +11 -1
  168. package/i18n/languages/ko-KR.js +11 -1
  169. package/i18n/languages/ko-KR.mjs +11 -1
  170. package/i18n/languages/lv-LV.js +11 -1
  171. package/i18n/languages/lv-LV.mjs +11 -1
  172. package/i18n/languages/nb-NO.js +11 -1
  173. package/i18n/languages/nb-NO.mjs +11 -1
  174. package/i18n/languages/nl-NL.js +11 -1
  175. package/i18n/languages/nl-NL.mjs +11 -1
  176. package/i18n/languages/pl-PL.js +11 -1
  177. package/i18n/languages/pl-PL.mjs +11 -1
  178. package/i18n/languages/pt-BR.js +11 -1
  179. package/i18n/languages/pt-BR.mjs +11 -1
  180. package/i18n/languages/ru-RU.js +11 -1
  181. package/i18n/languages/ru-RU.mjs +11 -1
  182. package/i18n/languages/sr-SP.js +11 -1
  183. package/i18n/languages/sr-SP.mjs +11 -1
  184. package/i18n/languages/zh-CN.js +11 -1
  185. package/i18n/languages/zh-CN.mjs +11 -1
  186. package/i18n/languages/zh-TW.js +11 -1
  187. package/i18n/languages/zh-TW.mjs +11 -1
  188. package/i18n/phraseFormatters/index.js +3 -1
  189. package/i18n/phraseFormatters/index.mjs +3 -1
  190. package/i18n/registry.js +5 -6
  191. package/i18n/registry.mjs +5 -6
  192. package/index.d.ts +27 -0
  193. package/languages/all.js +231 -21
  194. package/languages/ar-AR.js +11 -1
  195. package/languages/ar-AR.mjs +11 -1
  196. package/languages/cs-CZ.js +11 -1
  197. package/languages/cs-CZ.mjs +11 -1
  198. package/languages/de-CH.js +11 -1
  199. package/languages/de-CH.mjs +11 -1
  200. package/languages/de-DE.js +11 -1
  201. package/languages/de-DE.mjs +11 -1
  202. package/languages/en-US.js +11 -1
  203. package/languages/en-US.mjs +11 -1
  204. package/languages/es-MX.js +11 -1
  205. package/languages/es-MX.mjs +11 -1
  206. package/languages/fa-IR.js +11 -1
  207. package/languages/fa-IR.mjs +11 -1
  208. package/languages/fr-FR.js +11 -1
  209. package/languages/fr-FR.mjs +11 -1
  210. package/languages/hr-HR.js +11 -1
  211. package/languages/hr-HR.mjs +11 -1
  212. package/languages/index.js +231 -21
  213. package/languages/it-IT.js +11 -1
  214. package/languages/it-IT.mjs +11 -1
  215. package/languages/ja-JP.js +11 -1
  216. package/languages/ja-JP.mjs +11 -1
  217. package/languages/ko-KR.js +11 -1
  218. package/languages/ko-KR.mjs +11 -1
  219. package/languages/lv-LV.js +11 -1
  220. package/languages/lv-LV.mjs +11 -1
  221. package/languages/nb-NO.js +11 -1
  222. package/languages/nb-NO.mjs +11 -1
  223. package/languages/nl-NL.js +11 -1
  224. package/languages/nl-NL.mjs +11 -1
  225. package/languages/pl-PL.js +11 -1
  226. package/languages/pl-PL.mjs +11 -1
  227. package/languages/pt-BR.js +11 -1
  228. package/languages/pt-BR.mjs +11 -1
  229. package/languages/ru-RU.js +11 -1
  230. package/languages/ru-RU.mjs +11 -1
  231. package/languages/sr-SP.js +11 -1
  232. package/languages/sr-SP.mjs +11 -1
  233. package/languages/zh-CN.js +11 -1
  234. package/languages/zh-CN.mjs +11 -1
  235. package/languages/zh-TW.js +11 -1
  236. package/languages/zh-TW.mjs +11 -1
  237. package/mixins/localHooks.js +16 -0
  238. package/mixins/localHooks.mjs +16 -0
  239. package/package.json +19 -1
  240. package/plugins/autoRowSize/autoRowSize.js +43 -6
  241. package/plugins/autoRowSize/autoRowSize.mjs +43 -6
  242. package/plugins/autofill/autofill.js +50 -3
  243. package/plugins/autofill/autofill.mjs +50 -3
  244. package/plugins/base/base.js +86 -15
  245. package/plugins/base/base.mjs +87 -16
  246. package/plugins/collapsibleColumns/collapsibleColumns.js +4 -4
  247. package/plugins/collapsibleColumns/collapsibleColumns.mjs +4 -4
  248. package/plugins/columnSorting/columnSorting.js +3 -3
  249. package/plugins/columnSorting/columnSorting.mjs +3 -3
  250. package/plugins/comments/comments.js +52 -22
  251. package/plugins/comments/comments.mjs +52 -22
  252. package/plugins/comments/contextMenuItem/addEditComment.js +3 -3
  253. package/plugins/comments/contextMenuItem/addEditComment.mjs +3 -3
  254. package/plugins/comments/contextMenuItem/readOnlyComment.js +2 -2
  255. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +2 -2
  256. package/plugins/comments/contextMenuItem/removeComment.js +2 -2
  257. package/plugins/comments/contextMenuItem/removeComment.mjs +2 -2
  258. package/plugins/contextMenu/contextMenu.js +4 -5
  259. package/plugins/contextMenu/contextMenu.mjs +4 -5
  260. package/plugins/contextMenu/menu/cursor.js +1 -1
  261. package/plugins/contextMenu/menu/cursor.mjs +1 -1
  262. package/plugins/contextMenu/menu/defaultShortcutsList.js +5 -5
  263. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +5 -5
  264. package/plugins/contextMenu/menu/menu.js +3 -3
  265. package/plugins/contextMenu/menu/menu.mjs +3 -3
  266. package/plugins/contextMenu/menu/positioner.js +1 -1
  267. package/plugins/contextMenu/menu/positioner.mjs +1 -1
  268. package/plugins/contextMenu/predefinedItems/alignment.js +1 -1
  269. package/plugins/contextMenu/predefinedItems/alignment.mjs +1 -1
  270. package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -1
  271. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +1 -1
  272. package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -3
  273. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -3
  274. package/plugins/contextMenu/predefinedItems/columnRight.js +3 -3
  275. package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -3
  276. package/plugins/contextMenu/predefinedItems/readOnly.js +1 -1
  277. package/plugins/contextMenu/predefinedItems/readOnly.mjs +1 -1
  278. package/plugins/contextMenu/predefinedItems/removeColumn.js +1 -1
  279. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +1 -1
  280. package/plugins/contextMenu/predefinedItems/removeRow.js +1 -1
  281. package/plugins/contextMenu/predefinedItems/removeRow.mjs +1 -1
  282. package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -3
  283. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -3
  284. package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -3
  285. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -3
  286. package/plugins/copyPaste/contextMenuItem/copy.js +1 -1
  287. package/plugins/copyPaste/contextMenuItem/copy.mjs +1 -1
  288. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +3 -3
  289. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +3 -3
  290. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +3 -3
  291. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +3 -3
  292. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +3 -3
  293. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +3 -3
  294. package/plugins/copyPaste/contextMenuItem/cut.js +1 -1
  295. package/plugins/copyPaste/contextMenuItem/cut.mjs +1 -1
  296. package/plugins/copyPaste/copyPaste.js +75 -40
  297. package/plugins/copyPaste/copyPaste.mjs +76 -41
  298. package/plugins/customBorders/customBorders.js +1 -1
  299. package/plugins/customBorders/customBorders.mjs +1 -1
  300. package/plugins/dialog/dialog.d.ts +23 -0
  301. package/plugins/dialog/dialog.js +489 -0
  302. package/plugins/dialog/dialog.mjs +485 -0
  303. package/plugins/dialog/index.d.ts +1 -0
  304. package/plugins/dialog/index.js +7 -0
  305. package/plugins/dialog/index.mjs +1 -0
  306. package/plugins/dialog/ui.js +264 -0
  307. package/plugins/dialog/ui.mjs +259 -0
  308. package/plugins/dropdownMenu/dropdownMenu.js +5 -4
  309. package/plugins/dropdownMenu/dropdownMenu.mjs +5 -4
  310. package/plugins/filters/filters.js +2 -2
  311. package/plugins/filters/filters.mjs +2 -2
  312. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +3 -3
  313. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +3 -3
  314. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +4 -4
  315. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +4 -4
  316. package/plugins/hiddenRows/contextMenuItem/hideRow.js +3 -3
  317. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +3 -3
  318. package/plugins/hiddenRows/contextMenuItem/showRow.js +4 -4
  319. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +4 -4
  320. package/plugins/index.d.ts +9 -0
  321. package/plugins/index.js +9 -0
  322. package/plugins/index.mjs +7 -1
  323. package/plugins/loading/content.js +36 -0
  324. package/plugins/loading/content.mjs +31 -0
  325. package/plugins/loading/index.d.ts +1 -0
  326. package/plugins/loading/index.js +7 -0
  327. package/plugins/loading/index.mjs +1 -0
  328. package/plugins/loading/loading.d.ts +19 -0
  329. package/plugins/loading/loading.js +292 -0
  330. package/plugins/loading/loading.mjs +287 -0
  331. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  332. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
  333. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  334. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
  335. package/plugins/manualColumnMove/manualColumnMove.js +3 -3
  336. package/plugins/manualColumnMove/manualColumnMove.mjs +3 -3
  337. package/plugins/manualColumnResize/manualColumnResize.js +3 -3
  338. package/plugins/manualColumnResize/manualColumnResize.mjs +3 -3
  339. package/plugins/manualRowMove/manualRowMove.js +4 -4
  340. package/plugins/manualRowMove/manualRowMove.mjs +4 -4
  341. package/plugins/manualRowResize/manualRowResize.js +5 -2
  342. package/plugins/manualRowResize/manualRowResize.mjs +5 -2
  343. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +15 -15
  344. package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +15 -15
  345. package/plugins/mergeCells/focusOrder.js +75 -39
  346. package/plugins/mergeCells/focusOrder.mjs +75 -39
  347. package/plugins/mergeCells/mergeCells.js +26 -19
  348. package/plugins/mergeCells/mergeCells.mjs +26 -19
  349. package/plugins/mergeCells/renderer.js +14 -8
  350. package/plugins/mergeCells/renderer.mjs +14 -8
  351. package/plugins/multiColumnSorting/multiColumnSorting.js +3 -3
  352. package/plugins/multiColumnSorting/multiColumnSorting.mjs +3 -3
  353. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +3 -3
  354. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +3 -3
  355. package/plugins/nestedHeaders/nestedHeaders.js +47 -41
  356. package/plugins/nestedHeaders/nestedHeaders.mjs +47 -41
  357. package/plugins/nestedRows/nestedRows.js +3 -3
  358. package/plugins/nestedRows/nestedRows.mjs +3 -3
  359. package/plugins/nestedRows/ui/collapsing.js +1 -2
  360. package/plugins/nestedRows/ui/collapsing.mjs +1 -2
  361. package/plugins/nestedRows/ui/contextMenu.js +4 -4
  362. package/plugins/nestedRows/ui/contextMenu.mjs +4 -4
  363. package/plugins/nestedRows/ui/headers.js +4 -1
  364. package/plugins/nestedRows/ui/headers.mjs +4 -1
  365. package/plugins/pagination/focusController.js +27 -0
  366. package/plugins/pagination/focusController.mjs +23 -0
  367. package/plugins/pagination/index.d.ts +1 -0
  368. package/plugins/pagination/index.js +7 -0
  369. package/plugins/pagination/index.mjs +1 -0
  370. package/plugins/pagination/pagination.d.ts +52 -0
  371. package/plugins/pagination/pagination.js +1034 -0
  372. package/plugins/pagination/pagination.mjs +1030 -0
  373. package/plugins/pagination/strategies/autoPageSize.js +96 -0
  374. package/plugins/pagination/strategies/autoPageSize.mjs +92 -0
  375. package/plugins/pagination/strategies/fixedPageSize.js +88 -0
  376. package/plugins/pagination/strategies/fixedPageSize.mjs +84 -0
  377. package/plugins/pagination/strategies/index.js +22 -0
  378. package/plugins/pagination/strategies/index.mjs +18 -0
  379. package/plugins/pagination/ui.js +449 -0
  380. package/plugins/pagination/ui.mjs +443 -0
  381. package/plugins/pagination/utils.js +28 -0
  382. package/plugins/pagination/utils.mjs +24 -0
  383. package/plugins/stretchColumns/calculator.js +4 -0
  384. package/plugins/stretchColumns/calculator.mjs +4 -0
  385. package/plugins/stretchColumns/stretchColumns.js +1 -1
  386. package/plugins/stretchColumns/stretchColumns.mjs +1 -1
  387. package/plugins/undoRedo/actions/dataChange.js +17 -15
  388. package/plugins/undoRedo/actions/dataChange.mjs +17 -15
  389. package/renderers/checkboxRenderer/checkboxRenderer.js +3 -3
  390. package/renderers/checkboxRenderer/checkboxRenderer.mjs +3 -3
  391. package/selection/range.js +11 -0
  392. package/selection/range.mjs +11 -0
  393. package/selection/selection.js +163 -124
  394. package/selection/selection.mjs +163 -124
  395. package/selection/transformation/_base.js +448 -0
  396. package/selection/transformation/_base.mjs +443 -0
  397. package/selection/transformation/extender.js +55 -0
  398. package/selection/transformation/extender.mjs +51 -0
  399. package/selection/transformation/focus.js +77 -0
  400. package/selection/transformation/focus.mjs +73 -0
  401. package/selection/transformation/index.js +7 -0
  402. package/selection/transformation/index.mjs +2 -0
  403. package/selection/utils.js +2 -1
  404. package/selection/utils.mjs +2 -1
  405. package/settings.d.ts +10 -1
  406. package/shortcutContexts/commands/editor/fastOpen.js +1 -1
  407. package/shortcutContexts/commands/editor/fastOpen.mjs +1 -1
  408. package/shortcutContexts/commands/editor/open.js +10 -4
  409. package/shortcutContexts/commands/editor/open.mjs +10 -4
  410. package/shortcutContexts/commands/extendCellsSelection/down.js +1 -1
  411. package/shortcutContexts/commands/extendCellsSelection/down.mjs +1 -1
  412. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +2 -2
  413. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +2 -2
  414. package/shortcutContexts/commands/extendCellsSelection/left.js +1 -1
  415. package/shortcutContexts/commands/extendCellsSelection/left.mjs +1 -1
  416. package/shortcutContexts/commands/extendCellsSelection/right.js +1 -1
  417. package/shortcutContexts/commands/extendCellsSelection/right.mjs +1 -1
  418. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +1 -1
  419. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +1 -1
  420. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +1 -1
  421. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +1 -1
  422. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +1 -1
  423. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +1 -1
  424. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +1 -1
  425. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +1 -1
  426. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +1 -1
  427. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +1 -1
  428. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +1 -1
  429. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +1 -1
  430. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +1 -1
  431. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +1 -1
  432. package/shortcutContexts/commands/extendCellsSelection/toRows.js +1 -1
  433. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +1 -1
  434. package/shortcutContexts/commands/extendCellsSelection/up.js +1 -1
  435. package/shortcutContexts/commands/extendCellsSelection/up.mjs +1 -1
  436. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +2 -2
  437. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +2 -2
  438. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +2 -2
  439. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +2 -2
  440. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +5 -2
  441. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +5 -2
  442. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +5 -2
  443. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +5 -2
  444. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +1 -1
  445. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +1 -1
  446. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +1 -1
  447. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +1 -1
  448. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +1 -1
  449. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +1 -1
  450. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +1 -1
  451. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +1 -1
  452. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +1 -1
  453. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +1 -1
  454. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +1 -1
  455. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +1 -1
  456. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +2 -2
  457. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +2 -2
  458. package/shortcutContexts/commands/scrollToFocusedCell.js +1 -1
  459. package/shortcutContexts/commands/scrollToFocusedCell.mjs +1 -1
  460. package/shortcutContexts/grid.js +3 -3
  461. package/shortcutContexts/grid.mjs +3 -3
  462. package/shortcuts/context.js +4 -1
  463. package/shortcuts/context.mjs +4 -1
  464. package/shortcuts/manager.js +17 -3
  465. package/shortcuts/manager.mjs +17 -3
  466. package/styles/handsontable.css +288 -22
  467. package/styles/handsontable.min.css +3 -3
  468. package/styles/ht-theme-classic.css +828 -0
  469. package/styles/ht-theme-classic.min.css +30 -0
  470. package/styles/ht-theme-horizon.css +122 -26
  471. package/styles/ht-theme-horizon.min.css +3 -3
  472. package/styles/ht-theme-main.css +124 -28
  473. package/styles/ht-theme-main.min.css +3 -3
  474. package/tableView.js +61 -25
  475. package/tableView.mjs +61 -25
  476. package/utils/a11yAnnouncer.js +70 -0
  477. package/utils/a11yAnnouncer.mjs +64 -0
  478. package/{core/focusCatcher → utils}/focusDetector.js +30 -12
  479. package/{core/focusCatcher → utils}/focusDetector.mjs +30 -12
  480. package/utils/samplesGenerator.js +17 -1
  481. package/utils/samplesGenerator.mjs +17 -1
  482. package/utils/stylesHandler.js +23 -8
  483. package/utils/stylesHandler.mjs +23 -8
  484. package/utils/valueAccessors.js +45 -0
  485. package/utils/valueAccessors.mjs +40 -0
  486. package/validators/autocompleteValidator/autocompleteValidator.js +2 -1
  487. package/validators/autocompleteValidator/autocompleteValidator.mjs +2 -1
  488. package/selection/transformation.js +0 -335
  489. package/selection/transformation.mjs +0 -331
@@ -131,7 +131,7 @@ class Overlays {
131
131
  return;
132
132
  }
133
133
  _classPrivateFieldSet(_containerDomResizeCount, this, _classPrivateFieldGet(_containerDomResizeCount, this) + 1);
134
- if (_classPrivateFieldGet(_containerDomResizeCount, this) === 100) {
134
+ if (_classPrivateFieldGet(_containerDomResizeCount, this) === 300) {
135
135
  (0, _console.warn)('The ResizeObserver callback was fired too many times in direct succession.' + '\nThis may be due to an infinite loop caused by setting a dynamic height/width (for example, ' + 'with the `dvh` units) to a Handsontable container\'s parent. ' + '\nThe observer will be disconnected.');
136
136
  this.resizeObserver.disconnect();
137
137
  }
@@ -368,6 +368,10 @@ class Overlays {
368
368
  * @param {boolean} preventDefault If `true`, the `preventDefault` will be called on event object.
369
369
  */
370
370
  onCloneWheel(event, preventDefault) {
371
+ // Fix for Windows OS, where the ctrl key is used to zoom the page (issue #dev-2405).
372
+ if (event.ctrlKey) {
373
+ return;
374
+ }
371
375
  const {
372
376
  rootWindow
373
377
  } = this.domBindings;
@@ -617,7 +621,13 @@ class Overlays {
617
621
  const totalRows = this.wtSettings.getSetting('totalRows');
618
622
  const headerRowSize = wtViewport.getRowHeaderWidth();
619
623
  const headerColumnSize = wtViewport.getColumnHeaderHeight();
620
- const proposedHiderHeight = headerColumnSize + this.topOverlay.sumCellSizes(0, totalRows) + 1;
624
+ // The internal row height calculator contains a known issue that results in a 1px miscalculation.
625
+ // Ideally, this should be addressed at the core level. However, resolving it is non-trivial,
626
+ // as the flaw is embedded across multiple core modules and corresponding test cases.
627
+ // This limitation does not affect when the the external calculator is used (AutoRowSize), which
628
+ // computes heights accurately, so no adjustment is required when using it.
629
+ const hiderHeightComp = this.wtSettings.getSetting('externalRowCalculator') ? 0 : 1;
630
+ const proposedHiderHeight = headerColumnSize + this.topOverlay.sumCellSizes(0, totalRows) + hiderHeightComp;
621
631
  const proposedHiderWidth = headerRowSize + this.inlineStartOverlay.sumCellSizes(0, totalColumns);
622
632
  const hiderElement = wtTable.hider;
623
633
  const hiderStyle = hiderElement.style;
@@ -128,7 +128,7 @@ class Overlays {
128
128
  return;
129
129
  }
130
130
  _classPrivateFieldSet(_containerDomResizeCount, this, _classPrivateFieldGet(_containerDomResizeCount, this) + 1);
131
- if (_classPrivateFieldGet(_containerDomResizeCount, this) === 100) {
131
+ if (_classPrivateFieldGet(_containerDomResizeCount, this) === 300) {
132
132
  warn('The ResizeObserver callback was fired too many times in direct succession.' + '\nThis may be due to an infinite loop caused by setting a dynamic height/width (for example, ' + 'with the `dvh` units) to a Handsontable container\'s parent. ' + '\nThe observer will be disconnected.');
133
133
  this.resizeObserver.disconnect();
134
134
  }
@@ -365,6 +365,10 @@ class Overlays {
365
365
  * @param {boolean} preventDefault If `true`, the `preventDefault` will be called on event object.
366
366
  */
367
367
  onCloneWheel(event, preventDefault) {
368
+ // Fix for Windows OS, where the ctrl key is used to zoom the page (issue #dev-2405).
369
+ if (event.ctrlKey) {
370
+ return;
371
+ }
368
372
  const {
369
373
  rootWindow
370
374
  } = this.domBindings;
@@ -614,7 +618,13 @@ class Overlays {
614
618
  const totalRows = this.wtSettings.getSetting('totalRows');
615
619
  const headerRowSize = wtViewport.getRowHeaderWidth();
616
620
  const headerColumnSize = wtViewport.getColumnHeaderHeight();
617
- const proposedHiderHeight = headerColumnSize + this.topOverlay.sumCellSizes(0, totalRows) + 1;
621
+ // The internal row height calculator contains a known issue that results in a 1px miscalculation.
622
+ // Ideally, this should be addressed at the core level. However, resolving it is non-trivial,
623
+ // as the flaw is embedded across multiple core modules and corresponding test cases.
624
+ // This limitation does not affect when the the external calculator is used (AutoRowSize), which
625
+ // computes heights accurately, so no adjustment is required when using it.
626
+ const hiderHeightComp = this.wtSettings.getSetting('externalRowCalculator') ? 0 : 1;
627
+ const proposedHiderHeight = headerColumnSize + this.topOverlay.sumCellSizes(0, totalRows) + hiderHeightComp;
618
628
  const proposedHiderWidth = headerRowSize + this.inlineStartOverlay.sumCellSizes(0, totalColumns);
619
629
  const hiderElement = wtTable.hider;
620
630
  const hiderStyle = hiderElement.style;
@@ -151,15 +151,11 @@ class Viewport {
151
151
  return documentElement.scrollWidth > documentElement.clientWidth;
152
152
  }
153
153
  const {
154
- holder,
155
154
  hider
156
155
  } = this.wtTable;
157
- const holderWidth = holder.clientWidth;
158
156
  const hiderOffsetWidth = hider.offsetWidth;
159
- if (holderWidth < hiderOffsetWidth) {
160
- return true;
161
- }
162
- return hiderOffsetWidth > this.getWorkspaceWidth();
157
+ const scrollbarWidth = this.hasVerticalScroll() ? (0, _element.getScrollbarWidth)() : 0;
158
+ return hiderOffsetWidth > this.getWorkspaceWidth() - scrollbarWidth;
163
159
  }
164
160
 
165
161
  /**
@@ -148,15 +148,11 @@ class Viewport {
148
148
  return documentElement.scrollWidth > documentElement.clientWidth;
149
149
  }
150
150
  const {
151
- holder,
152
151
  hider
153
152
  } = this.wtTable;
154
- const holderWidth = holder.clientWidth;
155
153
  const hiderOffsetWidth = hider.offsetWidth;
156
- if (holderWidth < hiderOffsetWidth) {
157
- return true;
158
- }
159
- return hiderOffsetWidth > this.getWorkspaceWidth();
154
+ const scrollbarWidth = this.hasVerticalScroll() ? getScrollbarWidth() : 0;
155
+ return hiderOffsetWidth > this.getWorkspaceWidth() - scrollbarWidth;
160
156
  }
161
157
 
162
158
  /**
package/CHANGELOG.md CHANGED
@@ -9,6 +9,38 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9
9
 
10
10
  <!-- UNVERSIONED -->
11
11
 
12
+ ## [16.1.0] - 2025-09-11
13
+
14
+ ### Added
15
+ - Add row pagination functionality [#11612](https://github.com/handsontable/handsontable/pull/11612)
16
+ - Added Dialog Plugin: Core Modal System [#11754](https://github.com/handsontable/handsontable/pull/11754)
17
+ - Implemented the `key`/`value` feature for the Autocomplete and Dropdown editors and the new `valueGetter` and `valueSetter` options. [#11773](https://github.com/handsontable/handsontable/pull/11773)
18
+ - Add support for a new `initialState` option [#11777](https://github.com/handsontable/handsontable/pull/11777)
19
+ - Added Dialog Loading Plugin [#11792](https://github.com/handsontable/handsontable/pull/11792)
20
+
21
+ ### Changed
22
+ - Allow focus navigation between multiple selection layers [#11756](https://github.com/handsontable/handsontable/pull/11756)
23
+ - Change the input name of the internal focus catcher element [#11770](https://github.com/handsontable/handsontable/pull/11770)
24
+ - Added background color to holder element (`wtHolder`) [#11797](https://github.com/handsontable/handsontable/pull/11797)
25
+
26
+ ### Fixed
27
+ - Fixed undo/redo actions with cell types other than `text` [#11656](https://github.com/handsontable/handsontable/pull/11656)
28
+ - Fixed an issue with incorrect row and column resizing that occurs when the user double-clicks a column or row separator to auto-size it and then moves the mouse [#11671](https://github.com/handsontable/handsontable/pull/11671)
29
+ - Fixed an issue with mouse wheel zooming on Windows [#11680](https://github.com/handsontable/handsontable/pull/11680)
30
+ - Fixed an issue with autocomplete sorting and options highlighting [#11708](https://github.com/handsontable/handsontable/pull/11708)
31
+ - Fix missing touchend entry handler that prevents editor to open on mobile devices [#11729](https://github.com/handsontable/handsontable/pull/11729)
32
+ - Fixed an issue with rows being misaligned with row headers when using `autoRowSize`. [#11736](https://github.com/handsontable/handsontable/pull/11736)
33
+ - Fixed an issues with visual layout inconsistencies with browser zoom and scaling [#11739](https://github.com/handsontable/handsontable/pull/11739)
34
+ - Fixed an issue with root-wrapper height [#11769](https://github.com/handsontable/handsontable/pull/11769)
35
+ - Fixed TypeError after undo opertation for nested rows data structure [#11793](https://github.com/handsontable/handsontable/pull/11793)
36
+ - Fixed `rowHeights` option for merged cells [#11795](https://github.com/handsontable/handsontable/pull/11795)
37
+ - Fixed themes visaul issues [#11805](https://github.com/handsontable/handsontable/pull/11805)
38
+ - Fixed table misalignment when new data is loaded [#11809](https://github.com/handsontable/handsontable/pull/11809)
39
+ - Angular: Fixed treeshaking mechanism (modularization) for angular-wrapper [#11738](https://github.com/handsontable/handsontable/pull/11738)
40
+
41
+ ### Security
42
+ - Fixed the `critical` security vulnerabilities reported by `pnpm audit`. [#11798](https://github.com/handsontable/handsontable/pull/11798)
43
+
12
44
  ## [16.0.1] - 2025-07-10
13
45
 
14
46
  ### Fixed
package/base.js CHANGED
@@ -45,8 +45,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
45
45
  Handsontable.CellCoords = _src.CellCoords;
46
46
  Handsontable.CellRange = _src.CellRange;
47
47
  Handsontable.packageName = 'handsontable';
48
- Handsontable.buildDate = "10/07/2025 12:30:46";
49
- Handsontable.version = "16.0.1-next-eee5f08-20250710";
48
+ Handsontable.buildDate = "04/09/2025 07:50:37";
49
+ Handsontable.version = "16.1.0-next-abd8f2e-20250904";
50
50
  Handsontable.languages = {
51
51
  dictionaryKeys: _registry.dictionaryKeys,
52
52
  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 = "10/07/2025 12:30:51";
39
- Handsontable.version = "16.0.1-next-eee5f08-20250710";
38
+ Handsontable.buildDate = "04/09/2025 07:50:42";
39
+ Handsontable.version = "16.1.0-next-abd8f2e-20250904";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _valueGetter = require("./valueGetter");
5
+ exports.valueGetter = _valueGetter.valueGetter;
6
+ var _valueSetter = require("./valueSetter");
7
+ exports.valueSetter = _valueSetter.valueSetter;
@@ -0,0 +1,2 @@
1
+ export { valueGetter } from "./valueGetter.mjs";
2
+ export { valueSetter } from "./valueSetter.mjs";
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.valueGetter = valueGetter;
5
+ var _object = require("../../../helpers/object");
6
+ /**
7
+ * Defines the value being displayed in an autocomplete-typed cells.
8
+ *
9
+ * @param {*} value The value to be displayed.
10
+ * @returns {*} The final value of the cell.
11
+ */
12
+ function valueGetter(value) {
13
+ return (0, _object.isObject)(value) && value.value !== undefined ? value.value : value;
14
+ }
@@ -0,0 +1,10 @@
1
+ import { isObject } from "../../../helpers/object.mjs";
2
+ /**
3
+ * Defines the value being displayed in an autocomplete-typed cells.
4
+ *
5
+ * @param {*} value The value to be displayed.
6
+ * @returns {*} The final value of the cell.
7
+ */
8
+ export function valueGetter(value) {
9
+ return isObject(value) && value.value !== undefined ? value.value : value;
10
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.valueSetter = valueSetter;
5
+ var _object = require("../../../helpers/object");
6
+ var _mixed = require("../../../helpers/mixed");
7
+ /**
8
+ * Defines what value is set to an autocomplete-typed cell.
9
+ *
10
+ * @param {*} newValue The value to be set.
11
+ * @param {number} row The visual row index.
12
+ * @param {number} column The visual column index.
13
+ * @returns {*} The new value to be set.
14
+ */
15
+ function valueSetter(newValue, row, column) {
16
+ const sourceDataAtCell = this.getSourceDataAtCell(this.toPhysicalRow(row), this.toPhysicalColumn(column));
17
+ const isKeyValueObject = obj => (0, _object.isObject)(obj) && (0, _mixed.isDefined)(obj.key) && (0, _mixed.isDefined)(obj.value);
18
+ if (isKeyValueObject(sourceDataAtCell)) {
19
+ return isKeyValueObject(newValue) ? newValue : {
20
+ key: newValue,
21
+ value: newValue
22
+ };
23
+ }
24
+ return newValue;
25
+ }
@@ -0,0 +1,21 @@
1
+ import { isObject } from "../../../helpers/object.mjs";
2
+ import { isDefined } from "../../../helpers/mixed.mjs";
3
+ /**
4
+ * Defines what value is set to an autocomplete-typed cell.
5
+ *
6
+ * @param {*} newValue The value to be set.
7
+ * @param {number} row The visual row index.
8
+ * @param {number} column The visual column index.
9
+ * @returns {*} The new value to be set.
10
+ */
11
+ export function valueSetter(newValue, row, column) {
12
+ const sourceDataAtCell = this.getSourceDataAtCell(this.toPhysicalRow(row), this.toPhysicalColumn(column));
13
+ const isKeyValueObject = obj => isObject(obj) && isDefined(obj.key) && isDefined(obj.value);
14
+ if (isKeyValueObject(sourceDataAtCell)) {
15
+ return isKeyValueObject(newValue) ? newValue : {
16
+ key: newValue,
17
+ value: newValue
18
+ };
19
+ }
20
+ return newValue;
21
+ }
@@ -4,10 +4,13 @@ exports.__esModule = true;
4
4
  var _autocompleteEditor = require("../../editors/autocompleteEditor");
5
5
  var _autocompleteRenderer = require("../../renderers/autocompleteRenderer");
6
6
  var _autocompleteValidator = require("../../validators/autocompleteValidator");
7
+ var _accessors = require("./accessors");
7
8
  const CELL_TYPE = exports.CELL_TYPE = 'autocomplete';
8
9
  const AutocompleteCellType = exports.AutocompleteCellType = {
9
10
  CELL_TYPE,
10
11
  editor: _autocompleteEditor.AutocompleteEditor,
11
12
  renderer: _autocompleteRenderer.autocompleteRenderer,
12
- validator: _autocompleteValidator.autocompleteValidator
13
+ validator: _autocompleteValidator.autocompleteValidator,
14
+ valueGetter: _accessors.valueGetter,
15
+ valueSetter: _accessors.valueSetter
13
16
  };
@@ -1,10 +1,13 @@
1
1
  import { AutocompleteEditor } from "../../editors/autocompleteEditor/index.mjs";
2
2
  import { autocompleteRenderer } from "../../renderers/autocompleteRenderer/index.mjs";
3
3
  import { autocompleteValidator } from "../../validators/autocompleteValidator/index.mjs";
4
+ import { valueGetter, valueSetter } from "./accessors/index.mjs";
4
5
  export const CELL_TYPE = 'autocomplete';
5
6
  export const AutocompleteCellType = {
6
7
  CELL_TYPE,
7
8
  editor: AutocompleteEditor,
8
9
  renderer: autocompleteRenderer,
9
- validator: autocompleteValidator
10
+ validator: autocompleteValidator,
11
+ valueGetter,
12
+ valueSetter
10
13
  };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _valueSetter = require("./valueSetter");
5
+ exports.valueSetter = _valueSetter.valueSetter;
@@ -0,0 +1 @@
1
+ export { valueSetter } from "./valueSetter.mjs";
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.valueSetter = valueSetter;
5
+ var _mixed = require("../../../helpers/mixed");
6
+ /**
7
+ * Defines what value is set to a checkbox-typed cell.
8
+ *
9
+ * @param {*} newValue The value to be set.
10
+ * @param {number} row The row index.
11
+ * @param {number} column The column index.
12
+ * @returns {*} The new value to be set.
13
+ */
14
+ function valueSetter(newValue, row, column) {
15
+ const {
16
+ checkedTemplate,
17
+ uncheckedTemplate
18
+ } = this.getCellMeta(row, column);
19
+ const stringifiedValue = (0, _mixed.stringify)(newValue);
20
+ const isChecked = stringifiedValue === (0, _mixed.stringify)(checkedTemplate);
21
+ const isUnchecked = stringifiedValue === (0, _mixed.stringify)(uncheckedTemplate);
22
+ if (isChecked || isUnchecked) {
23
+ return isChecked ? checkedTemplate : uncheckedTemplate;
24
+ }
25
+ return newValue;
26
+ }
@@ -0,0 +1,22 @@
1
+ import { stringify } from "../../../helpers/mixed.mjs";
2
+ /**
3
+ * Defines what value is set to a checkbox-typed cell.
4
+ *
5
+ * @param {*} newValue The value to be set.
6
+ * @param {number} row The row index.
7
+ * @param {number} column The column index.
8
+ * @returns {*} The new value to be set.
9
+ */
10
+ export function valueSetter(newValue, row, column) {
11
+ const {
12
+ checkedTemplate,
13
+ uncheckedTemplate
14
+ } = this.getCellMeta(row, column);
15
+ const stringifiedValue = stringify(newValue);
16
+ const isChecked = stringifiedValue === stringify(checkedTemplate);
17
+ const isUnchecked = stringifiedValue === stringify(uncheckedTemplate);
18
+ if (isChecked || isUnchecked) {
19
+ return isChecked ? checkedTemplate : uncheckedTemplate;
20
+ }
21
+ return newValue;
22
+ }
@@ -3,9 +3,11 @@
3
3
  exports.__esModule = true;
4
4
  var _checkboxEditor = require("../../editors/checkboxEditor");
5
5
  var _checkboxRenderer = require("../../renderers/checkboxRenderer");
6
+ var _accessors = require("./accessors");
6
7
  const CELL_TYPE = exports.CELL_TYPE = 'checkbox';
7
8
  const CheckboxCellType = exports.CheckboxCellType = {
8
9
  CELL_TYPE,
9
10
  editor: _checkboxEditor.CheckboxEditor,
10
- renderer: _checkboxRenderer.checkboxRenderer
11
+ renderer: _checkboxRenderer.checkboxRenderer,
12
+ valueSetter: _accessors.valueSetter
11
13
  };
@@ -1,8 +1,10 @@
1
1
  import { CheckboxEditor } from "../../editors/checkboxEditor/index.mjs";
2
2
  import { checkboxRenderer } from "../../renderers/checkboxRenderer/index.mjs";
3
+ import { valueSetter } from "./accessors/index.mjs";
3
4
  export const CELL_TYPE = 'checkbox';
4
5
  export const CheckboxCellType = {
5
6
  CELL_TYPE,
6
7
  editor: CheckboxEditor,
7
- renderer: checkboxRenderer
8
+ renderer: checkboxRenderer,
9
+ valueSetter
8
10
  };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _valueGetter = require("./valueGetter");
5
+ exports.valueGetter = _valueGetter.valueGetter;
6
+ var _valueSetter = require("./valueSetter");
7
+ exports.valueSetter = _valueSetter.valueSetter;
@@ -0,0 +1,2 @@
1
+ export { valueGetter } from "./valueGetter.mjs";
2
+ export { valueSetter } from "./valueSetter.mjs";
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.valueGetter = valueGetter;
5
+ var _accessors = require("../../autocompleteType/accessors");
6
+ /**
7
+ * Defines the value being displayed in an dropdown-typed cells.
8
+ *
9
+ * @param {*} value The value to be displayed.
10
+ * @returns {*} The final value of the cell.
11
+ */
12
+ function valueGetter(value) {
13
+ return _accessors.valueGetter.call(this, value);
14
+ }
@@ -0,0 +1,10 @@
1
+ import { valueGetter as autocompleteValueGetter } from "../../autocompleteType/accessors/index.mjs";
2
+ /**
3
+ * Defines the value being displayed in an dropdown-typed cells.
4
+ *
5
+ * @param {*} value The value to be displayed.
6
+ * @returns {*} The final value of the cell.
7
+ */
8
+ export function valueGetter(value) {
9
+ return autocompleteValueGetter.call(this, value);
10
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.valueSetter = valueSetter;
5
+ var _accessors = require("../../autocompleteType/accessors");
6
+ /**
7
+ * Defines what value is set to an dropdown-typed cell.
8
+ *
9
+ * @param {*} newValue The value to be set.
10
+ * @param {number} row The row index.
11
+ * @param {number} column The column index.
12
+ * @param {object} cellMeta The cell meta object.
13
+ * @returns {*} The new value to be set.
14
+ */
15
+ function valueSetter(newValue, row, column, cellMeta) {
16
+ return _accessors.valueSetter.call(this, newValue, row, column, cellMeta);
17
+ }
@@ -0,0 +1,13 @@
1
+ import { valueSetter as autocompleteValueSetter } from "../../autocompleteType/accessors/index.mjs";
2
+ /**
3
+ * Defines what value is set to an dropdown-typed cell.
4
+ *
5
+ * @param {*} newValue The value to be set.
6
+ * @param {number} row The row index.
7
+ * @param {number} column The column index.
8
+ * @param {object} cellMeta The cell meta object.
9
+ * @returns {*} The new value to be set.
10
+ */
11
+ export function valueSetter(newValue, row, column, cellMeta) {
12
+ return autocompleteValueSetter.call(this, newValue, row, column, cellMeta);
13
+ }
@@ -4,6 +4,7 @@ exports.__esModule = true;
4
4
  var _dropdownEditor = require("../../editors/dropdownEditor");
5
5
  var _dropdownRenderer = require("../../renderers/dropdownRenderer");
6
6
  var _dropdownValidator = require("../../validators/dropdownValidator");
7
+ var _accessors = require("./accessors");
7
8
  const CELL_TYPE = exports.CELL_TYPE = 'dropdown';
8
9
  const DropdownCellType = exports.DropdownCellType = {
9
10
  CELL_TYPE,
@@ -12,5 +13,7 @@ const DropdownCellType = exports.DropdownCellType = {
12
13
  // displays small gray arrow on right side of the cell
13
14
  validator: _dropdownValidator.dropdownValidator,
14
15
  filter: false,
15
- strict: true
16
+ strict: true,
17
+ valueGetter: _accessors.valueGetter,
18
+ valueSetter: _accessors.valueSetter
16
19
  };
@@ -1,6 +1,7 @@
1
1
  import { DropdownEditor } from "../../editors/dropdownEditor/index.mjs";
2
2
  import { dropdownRenderer } from "../../renderers/dropdownRenderer/index.mjs";
3
3
  import { dropdownValidator } from "../../validators/dropdownValidator/index.mjs";
4
+ import { valueGetter, valueSetter } from "./accessors/index.mjs";
4
5
  export const CELL_TYPE = 'dropdown';
5
6
  export const DropdownCellType = {
6
7
  CELL_TYPE,
@@ -9,5 +10,7 @@ export const DropdownCellType = {
9
10
  // displays small gray arrow on right side of the cell
10
11
  validator: dropdownValidator,
11
12
  filter: false,
12
- strict: true
13
+ strict: true,
14
+ valueGetter,
15
+ valueSetter
13
16
  };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _valueSetter = require("./valueSetter");
5
+ exports.valueSetter = _valueSetter.valueSetter;
@@ -0,0 +1 @@
1
+ export { valueSetter } from "./valueSetter.mjs";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.valueSetter = valueSetter;
5
+ var _number = require("../../../helpers/number");
6
+ var _utils = require("../../../dataMap/metaManager/utils");
7
+ /**
8
+ * Defines what value is set to a numeric-typed cell.
9
+ *
10
+ * @param {*} newValue The value to be set.
11
+ * @returns {*} The new value to be set.
12
+ */
13
+ function valueSetter(newValue) {
14
+ if (typeof newValue === 'string' && (0, _number.isNumericLike)(newValue)) {
15
+ const parsedNumber = (0, _number.getParsedNumber)(newValue);
16
+ return (0, _utils.isNullish)(parsedNumber) ? newValue : parsedNumber;
17
+ }
18
+ return newValue;
19
+ }
@@ -0,0 +1,15 @@
1
+ import { isNumericLike, getParsedNumber } from "../../../helpers/number.mjs";
2
+ import { isNullish } from "../../../dataMap/metaManager/utils.mjs";
3
+ /**
4
+ * Defines what value is set to a numeric-typed cell.
5
+ *
6
+ * @param {*} newValue The value to be set.
7
+ * @returns {*} The new value to be set.
8
+ */
9
+ export function valueSetter(newValue) {
10
+ if (typeof newValue === 'string' && isNumericLike(newValue)) {
11
+ const parsedNumber = getParsedNumber(newValue);
12
+ return isNullish(parsedNumber) ? newValue : parsedNumber;
13
+ }
14
+ return newValue;
15
+ }
@@ -4,11 +4,13 @@ exports.__esModule = true;
4
4
  var _numericEditor = require("../../editors/numericEditor");
5
5
  var _numericRenderer = require("../../renderers/numericRenderer");
6
6
  var _numericValidator = require("../../validators/numericValidator");
7
+ var _accessors = require("./accessors");
7
8
  const CELL_TYPE = exports.CELL_TYPE = 'numeric';
8
9
  const NumericCellType = exports.NumericCellType = {
9
10
  CELL_TYPE,
10
11
  editor: _numericEditor.NumericEditor,
11
12
  renderer: _numericRenderer.numericRenderer,
12
13
  validator: _numericValidator.numericValidator,
13
- dataType: 'number'
14
+ dataType: 'number',
15
+ valueSetter: _accessors.valueSetter
14
16
  };
@@ -1,11 +1,13 @@
1
1
  import { NumericEditor } from "../../editors/numericEditor/index.mjs";
2
2
  import { numericRenderer } from "../../renderers/numericRenderer/index.mjs";
3
3
  import { numericValidator } from "../../validators/numericValidator/index.mjs";
4
+ import { valueSetter } from "./accessors/index.mjs";
4
5
  export const CELL_TYPE = 'numeric';
5
6
  export const NumericCellType = {
6
7
  CELL_TYPE,
7
8
  editor: NumericEditor,
8
9
  renderer: numericRenderer,
9
10
  validator: numericValidator,
10
- dataType: 'number'
11
+ dataType: 'number',
12
+ valueSetter
11
13
  };