handsontable 13.1.0 → 14.0.0-next-d97b156-20231027

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 (691) hide show
  1. package/3rdparty/walkontable/src/calculator/constants.js +3 -6
  2. package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -2
  3. package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -2
  4. package/3rdparty/walkontable/src/cell/coords.d.ts +8 -1
  5. package/3rdparty/walkontable/src/cell/coords.js +81 -13
  6. package/3rdparty/walkontable/src/cell/coords.mjs +80 -11
  7. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  8. package/3rdparty/walkontable/src/cell/range.js +39 -9
  9. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  10. package/3rdparty/walkontable/src/core/_base.js +9 -3
  11. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  12. package/3rdparty/walkontable/src/core/clone.js +2 -2
  13. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  14. package/3rdparty/walkontable/src/core/core.js +3 -2
  15. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  16. package/3rdparty/walkontable/src/event.js +13 -12
  17. package/3rdparty/walkontable/src/event.mjs +12 -10
  18. package/3rdparty/walkontable/src/facade/core.js +2 -2
  19. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  20. package/3rdparty/walkontable/src/filter/column.js +1 -2
  21. package/3rdparty/walkontable/src/filter/row.js +1 -2
  22. package/3rdparty/walkontable/src/index.js +12 -4
  23. package/3rdparty/walkontable/src/index.mjs +2 -2
  24. package/3rdparty/walkontable/src/overlay/_base.js +13 -2
  25. package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
  26. package/3rdparty/walkontable/src/overlay/constants.js +7 -14
  27. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  28. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  29. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  30. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  31. package/3rdparty/walkontable/src/overlays.js +1 -2
  32. package/3rdparty/walkontable/src/renderer/cells.js +10 -0
  33. package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
  34. package/3rdparty/walkontable/src/renderer/columnHeaders.js +13 -0
  35. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +14 -1
  36. package/3rdparty/walkontable/src/renderer/rowHeaders.js +8 -0
  37. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +8 -0
  38. package/3rdparty/walkontable/src/renderer/rows.js +13 -0
  39. package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
  40. package/3rdparty/walkontable/src/renderer/table.js +9 -0
  41. package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
  42. package/3rdparty/walkontable/src/scroll.js +3 -2
  43. package/3rdparty/walkontable/src/scroll.mjs +2 -0
  44. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +8 -14
  45. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  46. package/3rdparty/walkontable/src/selection/border/constants.js +15 -0
  47. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  48. package/3rdparty/walkontable/src/selection/constants.js +54 -0
  49. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  50. package/3rdparty/walkontable/src/selection/index.js +26 -0
  51. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  52. package/3rdparty/walkontable/src/selection/manager.js +274 -0
  53. package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
  54. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  55. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  56. package/3rdparty/walkontable/src/selection/selection.js +100 -0
  57. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  58. package/3rdparty/walkontable/src/settings.js +13 -4
  59. package/3rdparty/walkontable/src/settings.mjs +13 -4
  60. package/3rdparty/walkontable/src/table/bottom.js +1 -2
  61. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +1 -2
  62. package/3rdparty/walkontable/src/table/inlineStart.js +1 -2
  63. package/3rdparty/walkontable/src/table/master.js +3 -6
  64. package/3rdparty/walkontable/src/table/master.mjs +2 -4
  65. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +10 -2
  66. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  67. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +10 -2
  68. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  69. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +10 -2
  70. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  71. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +10 -2
  72. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  73. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +10 -2
  74. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  75. package/3rdparty/walkontable/src/table/top.js +1 -2
  76. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +1 -2
  77. package/3rdparty/walkontable/src/table.js +20 -80
  78. package/3rdparty/walkontable/src/table.mjs +20 -79
  79. package/3rdparty/walkontable/src/utils/orderView/constants.js +3 -6
  80. package/3rdparty/walkontable/src/viewport.js +1 -2
  81. package/CHANGELOG.md +51 -0
  82. package/base.js +3 -4
  83. package/base.mjs +2 -2
  84. package/cellTypes/autocompleteType/autocompleteType.js +3 -5
  85. package/cellTypes/checkboxType/checkboxType.js +3 -5
  86. package/cellTypes/dateType/dateType.d.ts +3 -3
  87. package/cellTypes/dateType/dateType.js +5 -7
  88. package/cellTypes/dateType/dateType.mjs +2 -2
  89. package/cellTypes/dropdownType/dropdownType.js +3 -5
  90. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  91. package/cellTypes/handsontableType/handsontableType.js +5 -7
  92. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  93. package/cellTypes/index.d.ts +3 -0
  94. package/cellTypes/index.js +4 -0
  95. package/cellTypes/index.mjs +3 -1
  96. package/cellTypes/numericType/numericType.js +3 -5
  97. package/cellTypes/passwordType/passwordType.js +3 -5
  98. package/cellTypes/selectType/index.d.ts +1 -0
  99. package/cellTypes/selectType/index.js +6 -0
  100. package/cellTypes/selectType/index.mjs +1 -0
  101. package/cellTypes/selectType/selectType.d.ts +14 -0
  102. package/cellTypes/selectType/selectType.js +11 -0
  103. package/cellTypes/selectType/selectType.mjs +8 -0
  104. package/cellTypes/textType/textType.js +3 -5
  105. package/cellTypes/timeType/timeType.js +3 -5
  106. package/common.d.ts +1 -1
  107. package/core/focusCatcher/focusDetector.js +63 -0
  108. package/core/focusCatcher/focusDetector.mjs +59 -0
  109. package/core/focusCatcher/index.js +148 -0
  110. package/core/focusCatcher/index.mjs +144 -0
  111. package/core/index.js +9 -0
  112. package/core/index.mjs +1 -0
  113. package/core.d.ts +10 -5
  114. package/core.js +327 -359
  115. package/core.mjs +327 -359
  116. package/dataMap/dataMap.js +1 -2
  117. package/dataMap/dataSource.js +1 -2
  118. package/dataMap/metaManager/metaSchema.js +65 -0
  119. package/dataMap/metaManager/metaSchema.mjs +65 -0
  120. package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
  121. package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
  122. package/dataMap/replaceData.js +5 -0
  123. package/dataMap/replaceData.mjs +5 -0
  124. package/dist/handsontable.css +94 -76
  125. package/dist/handsontable.full.css +94 -76
  126. package/dist/handsontable.full.js +21236 -14104
  127. package/dist/handsontable.full.min.css +8 -8
  128. package/dist/handsontable.full.min.js +170 -152
  129. package/dist/handsontable.js +22016 -15254
  130. package/dist/handsontable.min.css +7 -7
  131. package/dist/handsontable.min.js +31 -23
  132. package/dist/languages/all.js +47 -40
  133. package/dist/languages/all.min.js +1 -1
  134. package/dist/languages/ar-AR.js +1 -2
  135. package/dist/languages/cs-CZ.js +1 -2
  136. package/dist/languages/de-CH.js +1 -2
  137. package/dist/languages/de-DE.js +1 -2
  138. package/dist/languages/en-US.js +15 -3
  139. package/dist/languages/en-US.min.js +1 -1
  140. package/dist/languages/es-MX.js +1 -2
  141. package/dist/languages/fr-FR.js +1 -2
  142. package/dist/languages/it-IT.js +1 -2
  143. package/dist/languages/ja-JP.js +1 -2
  144. package/dist/languages/ko-KR.js +1 -2
  145. package/dist/languages/lv-LV.js +1 -2
  146. package/dist/languages/nb-NO.js +1 -2
  147. package/dist/languages/nl-NL.js +1 -2
  148. package/dist/languages/pl-PL.js +15 -3
  149. package/dist/languages/pl-PL.min.js +1 -1
  150. package/dist/languages/pt-BR.js +1 -2
  151. package/dist/languages/ru-RU.js +1 -2
  152. package/dist/languages/sr-SP.js +1 -2
  153. package/dist/languages/zh-CN.js +1 -2
  154. package/dist/languages/zh-TW.js +1 -2
  155. package/editorManager.js +17 -91
  156. package/editorManager.mjs +16 -87
  157. package/editors/autocompleteEditor/autocompleteEditor.js +65 -11
  158. package/editors/autocompleteEditor/autocompleteEditor.mjs +65 -10
  159. package/editors/baseEditor/baseEditor.js +19 -13
  160. package/editors/baseEditor/baseEditor.mjs +16 -7
  161. package/editors/checkboxEditor/checkboxEditor.js +1 -2
  162. package/editors/dateEditor/dateEditor.js +27 -9
  163. package/editors/dateEditor/dateEditor.mjs +27 -8
  164. package/editors/dropdownEditor/dropdownEditor.js +1 -2
  165. package/editors/handsontableEditor/handsontableEditor.js +14 -7
  166. package/editors/handsontableEditor/handsontableEditor.mjs +14 -6
  167. package/editors/numericEditor/numericEditor.js +1 -2
  168. package/editors/passwordEditor/passwordEditor.js +1 -2
  169. package/editors/selectEditor/selectEditor.js +1 -2
  170. package/editors/textEditor/textEditor.js +20 -29
  171. package/editors/textEditor/textEditor.mjs +22 -30
  172. package/editors/timeEditor/timeEditor.js +1 -2
  173. package/eventManager.js +1 -2
  174. package/focusManager.d.ts +12 -0
  175. package/focusManager.js +265 -0
  176. package/focusManager.mjs +261 -0
  177. package/helpers/a11y.js +81 -0
  178. package/helpers/a11y.mjs +39 -0
  179. package/helpers/dom/element.js +224 -12
  180. package/helpers/dom/element.mjs +216 -10
  181. package/helpers/dom/event.d.ts +1 -0
  182. package/helpers/dom/event.js +25 -0
  183. package/helpers/dom/event.mjs +24 -0
  184. package/helpers/mixed.js +2 -2
  185. package/helpers/mixed.mjs +2 -2
  186. package/helpers/number.d.ts +1 -0
  187. package/helpers/number.js +18 -0
  188. package/helpers/number.mjs +17 -0
  189. package/helpers/unicode.js +1 -2
  190. package/i18n/constants.js +97 -160
  191. package/i18n/constants.mjs +17 -1
  192. package/i18n/languages/ar-AR.js +3 -4
  193. package/i18n/languages/cs-CZ.js +3 -4
  194. package/i18n/languages/de-CH.js +3 -4
  195. package/i18n/languages/de-DE.js +3 -4
  196. package/i18n/languages/en-US.js +17 -5
  197. package/i18n/languages/en-US.mjs +14 -1
  198. package/i18n/languages/es-MX.js +3 -4
  199. package/i18n/languages/fr-FR.js +3 -4
  200. package/i18n/languages/it-IT.js +3 -4
  201. package/i18n/languages/ja-JP.js +3 -4
  202. package/i18n/languages/ko-KR.js +3 -4
  203. package/i18n/languages/lv-LV.js +3 -4
  204. package/i18n/languages/nb-NO.js +3 -4
  205. package/i18n/languages/nl-NL.js +3 -4
  206. package/i18n/languages/pl-PL.js +17 -5
  207. package/i18n/languages/pl-PL.mjs +14 -1
  208. package/i18n/languages/pt-BR.js +3 -4
  209. package/i18n/languages/ru-RU.js +3 -4
  210. package/i18n/languages/sr-SP.js +3 -4
  211. package/i18n/languages/zh-CN.js +3 -4
  212. package/i18n/languages/zh-TW.js +3 -4
  213. package/i18n/registry.js +4 -6
  214. package/index.js +3 -4
  215. package/languages/all.js +47 -40
  216. package/languages/ar-AR.js +1 -2
  217. package/languages/cs-CZ.js +1 -2
  218. package/languages/de-CH.js +1 -2
  219. package/languages/de-DE.js +1 -2
  220. package/languages/en-US.js +15 -3
  221. package/languages/en-US.mjs +14 -1
  222. package/languages/es-MX.js +1 -2
  223. package/languages/fr-FR.js +1 -2
  224. package/languages/index.js +47 -40
  225. package/languages/it-IT.js +1 -2
  226. package/languages/ja-JP.js +1 -2
  227. package/languages/ko-KR.js +1 -2
  228. package/languages/lv-LV.js +1 -2
  229. package/languages/nb-NO.js +1 -2
  230. package/languages/nl-NL.js +1 -2
  231. package/languages/pl-PL.js +15 -3
  232. package/languages/pl-PL.mjs +14 -1
  233. package/languages/pt-BR.js +1 -2
  234. package/languages/ru-RU.js +1 -2
  235. package/languages/sr-SP.js +1 -2
  236. package/languages/zh-CN.js +1 -2
  237. package/languages/zh-TW.js +1 -2
  238. package/mixins/hooksRefRegisterer.js +1 -2
  239. package/mixins/localHooks.js +1 -2
  240. package/package.json +119 -96
  241. package/pluginHooks.d.ts +42 -7
  242. package/pluginHooks.js +301 -65
  243. package/pluginHooks.mjs +300 -63
  244. package/plugins/autoColumnSize/autoColumnSize.d.ts +2 -0
  245. package/plugins/autoColumnSize/autoColumnSize.js +2 -4
  246. package/plugins/autoRowSize/autoRowSize.d.ts +2 -0
  247. package/plugins/autoRowSize/autoRowSize.js +15 -10
  248. package/plugins/autoRowSize/autoRowSize.mjs +13 -6
  249. package/plugins/autofill/autofill.js +2 -4
  250. package/plugins/autofill/utils.js +1 -2
  251. package/plugins/base/base.js +1 -2
  252. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -4
  253. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +1 -2
  254. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -2
  255. package/plugins/collapsibleColumns/collapsibleColumns.js +77 -8
  256. package/plugins/collapsibleColumns/collapsibleColumns.mjs +76 -5
  257. package/plugins/columnSorting/columnSorting.js +71 -6
  258. package/plugins/columnSorting/columnSorting.mjs +70 -3
  259. package/plugins/columnSorting/index.js +3 -1
  260. package/plugins/columnSorting/index.mjs +1 -1
  261. package/plugins/columnSorting/sortFunction/checkbox.js +1 -2
  262. package/plugins/columnSorting/sortFunction/date.js +1 -2
  263. package/plugins/columnSorting/sortFunction/default.js +1 -2
  264. package/plugins/columnSorting/sortFunction/numeric.js +1 -2
  265. package/plugins/columnSorting/sortService/engine.js +3 -6
  266. package/plugins/columnSorting/utils.js +3 -6
  267. package/plugins/columnSummary/columnSummary.js +2 -4
  268. package/plugins/columnSummary/endpoints.js +1 -2
  269. package/plugins/comments/commentEditor.js +2 -2
  270. package/plugins/comments/commentEditor.mjs +1 -0
  271. package/plugins/comments/comments.js +254 -197
  272. package/plugins/comments/comments.mjs +251 -190
  273. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  274. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  275. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  276. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  277. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  278. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  279. package/plugins/comments/displaySwitch.js +1 -2
  280. package/plugins/contextMenu/commandExecutor.js +2 -3
  281. package/plugins/contextMenu/commandExecutor.mjs +2 -3
  282. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  283. package/plugins/contextMenu/contextMenu.js +77 -40
  284. package/plugins/contextMenu/contextMenu.mjs +74 -35
  285. package/plugins/contextMenu/itemsFactory.js +2 -3
  286. package/plugins/contextMenu/itemsFactory.mjs +3 -4
  287. package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
  288. package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
  289. package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
  290. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
  291. package/plugins/contextMenu/menu/index.js +9 -0
  292. package/plugins/contextMenu/menu/index.mjs +1 -0
  293. package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
  294. package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
  295. package/plugins/contextMenu/menu/menuItemRenderer.js +70 -0
  296. package/plugins/contextMenu/menu/menuItemRenderer.mjs +66 -0
  297. package/plugins/contextMenu/menu/navigator.js +27 -0
  298. package/plugins/contextMenu/menu/navigator.mjs +23 -0
  299. package/plugins/contextMenu/menu/positioner.js +213 -0
  300. package/plugins/contextMenu/menu/positioner.mjs +209 -0
  301. package/plugins/contextMenu/menu/shortcuts.js +114 -0
  302. package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
  303. package/plugins/contextMenu/menu/utils.js +177 -0
  304. package/plugins/contextMenu/menu/utils.mjs +163 -0
  305. package/plugins/contextMenu/predefinedItems/alignment.js +10 -4
  306. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  307. package/plugins/contextMenu/predefinedItems/clearColumn.js +8 -7
  308. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  309. package/plugins/contextMenu/predefinedItems/columnLeft.js +8 -7
  310. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  311. package/plugins/contextMenu/predefinedItems/columnRight.js +8 -7
  312. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  313. package/plugins/contextMenu/predefinedItems/index.js +75 -0
  314. package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
  315. package/plugins/contextMenu/predefinedItems/noItems.js +1 -2
  316. package/plugins/contextMenu/predefinedItems/readOnly.js +10 -4
  317. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  318. package/plugins/contextMenu/predefinedItems/redo.js +3 -4
  319. package/plugins/contextMenu/predefinedItems/removeColumn.js +10 -9
  320. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  321. package/plugins/contextMenu/predefinedItems/removeRow.js +10 -9
  322. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  323. package/plugins/contextMenu/predefinedItems/rowAbove.js +8 -7
  324. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  325. package/plugins/contextMenu/predefinedItems/rowBelow.js +8 -7
  326. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  327. package/plugins/contextMenu/predefinedItems/separator.js +1 -2
  328. package/plugins/contextMenu/predefinedItems/undo.js +3 -4
  329. package/plugins/contextMenu/utils.js +35 -151
  330. package/plugins/contextMenu/utils.mjs +35 -144
  331. package/plugins/copyPaste/clipboardData/clipboardData.js +516 -0
  332. package/plugins/copyPaste/clipboardData/clipboardData.mjs +512 -0
  333. package/plugins/copyPaste/clipboardData/copyClipboardData.js +69 -0
  334. package/plugins/copyPaste/clipboardData/copyClipboardData.mjs +65 -0
  335. package/plugins/copyPaste/clipboardData/index.js +9 -0
  336. package/plugins/copyPaste/clipboardData/index.mjs +4 -0
  337. package/plugins/copyPaste/clipboardData/pasteClipboardData.js +81 -0
  338. package/plugins/copyPaste/clipboardData/pasteClipboardData.mjs +77 -0
  339. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  340. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  341. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  342. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  343. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  344. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  345. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  346. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  347. package/plugins/copyPaste/contextMenuItem/cut.js +9 -2
  348. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  349. package/plugins/copyPaste/copyPaste.js +160 -167
  350. package/plugins/copyPaste/copyPaste.mjs +161 -166
  351. package/plugins/customBorders/contextMenuItem/bottom.js +2 -2
  352. package/plugins/customBorders/contextMenuItem/left.js +2 -2
  353. package/plugins/customBorders/contextMenuItem/noBorders.js +2 -2
  354. package/plugins/customBorders/contextMenuItem/right.js +2 -2
  355. package/plugins/customBorders/contextMenuItem/top.js +2 -2
  356. package/plugins/customBorders/customBorders.js +27 -26
  357. package/plugins/customBorders/customBorders.mjs +24 -21
  358. package/plugins/dragToScroll/dragToScroll.js +2 -4
  359. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  360. package/plugins/dropdownMenu/dropdownMenu.js +130 -44
  361. package/plugins/dropdownMenu/dropdownMenu.mjs +127 -39
  362. package/plugins/exportFile/dataProvider.js +1 -2
  363. package/plugins/exportFile/exportFile.js +4 -6
  364. package/plugins/exportFile/typeFactory.js +5 -8
  365. package/plugins/exportFile/types/_base.js +1 -2
  366. package/plugins/exportFile/types/csv.js +1 -2
  367. package/plugins/filters/component/_base.js +23 -8
  368. package/plugins/filters/component/_base.mjs +23 -8
  369. package/plugins/filters/component/actionBar.js +31 -29
  370. package/plugins/filters/component/actionBar.mjs +26 -23
  371. package/plugins/filters/component/condition.js +48 -61
  372. package/plugins/filters/component/condition.mjs +40 -52
  373. package/plugins/filters/component/operators.js +21 -22
  374. package/plugins/filters/component/operators.mjs +18 -18
  375. package/plugins/filters/component/value.js +37 -28
  376. package/plugins/filters/component/value.mjs +32 -22
  377. package/plugins/filters/condition/beginsWith.js +3 -4
  378. package/plugins/filters/condition/between.js +3 -4
  379. package/plugins/filters/condition/byValue.js +1 -2
  380. package/plugins/filters/condition/contains.js +3 -4
  381. package/plugins/filters/condition/date/after.js +3 -4
  382. package/plugins/filters/condition/date/before.js +3 -4
  383. package/plugins/filters/condition/date/today.js +3 -4
  384. package/plugins/filters/condition/date/tomorrow.js +3 -4
  385. package/plugins/filters/condition/date/yesterday.js +3 -4
  386. package/plugins/filters/condition/empty.js +3 -4
  387. package/plugins/filters/condition/endsWith.js +3 -4
  388. package/plugins/filters/condition/equal.js +3 -4
  389. package/plugins/filters/condition/false.js +1 -2
  390. package/plugins/filters/condition/greaterThan.js +3 -4
  391. package/plugins/filters/condition/greaterThanOrEqual.js +3 -4
  392. package/plugins/filters/condition/lessThan.js +3 -4
  393. package/plugins/filters/condition/lessThanOrEqual.js +3 -4
  394. package/plugins/filters/condition/none.js +3 -4
  395. package/plugins/filters/condition/notBetween.js +3 -4
  396. package/plugins/filters/condition/notContains.js +3 -4
  397. package/plugins/filters/condition/notEmpty.js +3 -4
  398. package/plugins/filters/condition/notEqual.js +3 -4
  399. package/plugins/filters/condition/true.js +1 -2
  400. package/plugins/filters/conditionCollection.d.ts +3 -2
  401. package/plugins/filters/conditionCollection.js +1 -2
  402. package/plugins/filters/conditionRegisterer.js +1 -2
  403. package/plugins/filters/conditionUpdateObserver.js +1 -2
  404. package/plugins/filters/constants.js +4 -8
  405. package/plugins/filters/constants.mjs +1 -1
  406. package/plugins/filters/dataFilter.js +1 -2
  407. package/plugins/filters/filters.d.ts +3 -5
  408. package/plugins/filters/filters.js +108 -66
  409. package/plugins/filters/filters.mjs +99 -55
  410. package/plugins/filters/logicalOperationRegisterer.js +1 -2
  411. package/plugins/filters/logicalOperations/conjunction.js +4 -6
  412. package/plugins/filters/logicalOperations/disjunction.js +4 -6
  413. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +4 -6
  414. package/plugins/filters/menu/focusController.js +123 -0
  415. package/plugins/filters/menu/focusController.mjs +119 -0
  416. package/plugins/filters/menu/focusNavigator.js +30 -0
  417. package/plugins/filters/menu/focusNavigator.mjs +26 -0
  418. package/plugins/filters/ui/_base.js +37 -15
  419. package/plugins/filters/ui/_base.mjs +35 -13
  420. package/plugins/filters/ui/input.js +43 -35
  421. package/plugins/filters/ui/input.mjs +42 -33
  422. package/plugins/filters/ui/link.js +44 -12
  423. package/plugins/filters/ui/link.mjs +44 -11
  424. package/plugins/filters/ui/multipleSelect.js +237 -133
  425. package/plugins/filters/ui/multipleSelect.mjs +232 -127
  426. package/plugins/filters/ui/radioInput.js +42 -18
  427. package/plugins/filters/ui/radioInput.mjs +42 -17
  428. package/plugins/filters/ui/select.js +152 -77
  429. package/plugins/filters/ui/select.mjs +148 -72
  430. package/plugins/formulas/engine/settings.js +2 -4
  431. package/plugins/formulas/formulas.js +3 -6
  432. package/plugins/formulas/indexSyncer/axisSyncer.js +1 -2
  433. package/plugins/formulas/indexSyncer/index.js +1 -2
  434. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -2
  435. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
  436. package/plugins/hiddenColumns/hiddenColumns.d.ts +1 -0
  437. package/plugins/hiddenColumns/hiddenColumns.js +49 -6
  438. package/plugins/hiddenColumns/hiddenColumns.mjs +48 -3
  439. package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -2
  440. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
  441. package/plugins/hiddenRows/hiddenRows.d.ts +1 -0
  442. package/plugins/hiddenRows/hiddenRows.js +49 -6
  443. package/plugins/hiddenRows/hiddenRows.mjs +48 -3
  444. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +2 -2
  445. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +2 -2
  446. package/plugins/manualColumnFreeze/manualColumnFreeze.js +2 -4
  447. package/plugins/manualColumnMove/manualColumnMove.js +9 -17
  448. package/plugins/manualColumnMove/manualColumnMove.mjs +7 -13
  449. package/plugins/manualColumnMove/ui/_base.js +1 -2
  450. package/plugins/manualColumnMove/ui/backlight.js +1 -2
  451. package/plugins/manualColumnMove/ui/guideline.js +1 -2
  452. package/plugins/manualColumnResize/manualColumnResize.js +2 -4
  453. package/plugins/manualRowMove/manualRowMove.js +6 -23
  454. package/plugins/manualRowMove/manualRowMove.mjs +4 -19
  455. package/plugins/manualRowMove/ui/_base.js +1 -2
  456. package/plugins/manualRowMove/ui/backlight.js +1 -2
  457. package/plugins/manualRowMove/ui/guideline.js +1 -2
  458. package/plugins/manualRowResize/manualRowResize.js +2 -4
  459. package/plugins/mergeCells/calculations/autofill.js +1 -2
  460. package/plugins/mergeCells/calculations/selection.js +1 -2
  461. package/plugins/mergeCells/cellCoords.js +1 -2
  462. package/plugins/mergeCells/cellsCollection.js +1 -2
  463. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +2 -2
  464. package/plugins/mergeCells/mergeCells.js +7 -20
  465. package/plugins/mergeCells/mergeCells.mjs +5 -16
  466. package/plugins/multiColumnSorting/multiColumnSorting.js +60 -6
  467. package/plugins/multiColumnSorting/multiColumnSorting.mjs +59 -3
  468. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -4
  469. package/plugins/nestedHeaders/nestedHeaders.js +263 -36
  470. package/plugins/nestedHeaders/nestedHeaders.mjs +262 -33
  471. package/plugins/nestedHeaders/stateManager/index.js +102 -3
  472. package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
  473. package/plugins/nestedHeaders/stateManager/sourceSettings.js +1 -2
  474. package/plugins/nestedHeaders/utils/ghostTable.js +1 -2
  475. package/plugins/nestedRows/data/dataManager.js +1 -2
  476. package/plugins/nestedRows/nestedRows.js +47 -10
  477. package/plugins/nestedRows/nestedRows.mjs +45 -6
  478. package/plugins/nestedRows/ui/_base.js +1 -2
  479. package/plugins/nestedRows/ui/collapsing.js +1 -2
  480. package/plugins/nestedRows/ui/contextMenu.js +3 -4
  481. package/plugins/nestedRows/ui/headers.js +13 -3
  482. package/plugins/nestedRows/ui/headers.mjs +13 -2
  483. package/plugins/persistentState/persistentState.js +2 -4
  484. package/plugins/persistentState/storage.js +1 -2
  485. package/plugins/search/search.js +2 -4
  486. package/plugins/touchScroll/touchScroll.js +2 -4
  487. package/plugins/trimRows/trimRows.js +2 -4
  488. package/plugins/undoRedo/index.js +2 -2
  489. package/plugins/undoRedo/undoRedo.js +2 -4
  490. package/renderers/autocompleteRenderer/autocompleteRenderer.js +9 -2
  491. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
  492. package/renderers/baseRenderer/baseRenderer.js +18 -2
  493. package/renderers/baseRenderer/baseRenderer.mjs +18 -1
  494. package/renderers/checkboxRenderer/checkboxRenderer.js +10 -6
  495. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  496. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  497. package/renderers/dateRenderer/dateRenderer.js +28 -0
  498. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  499. package/renderers/dateRenderer/index.d.ts +1 -0
  500. package/renderers/dateRenderer/index.js +6 -0
  501. package/renderers/dateRenderer/index.mjs +1 -0
  502. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  503. package/renderers/handsontableRenderer/handsontableRenderer.js +28 -0
  504. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  505. package/renderers/handsontableRenderer/index.d.ts +1 -0
  506. package/renderers/handsontableRenderer/index.js +6 -0
  507. package/renderers/handsontableRenderer/index.mjs +1 -0
  508. package/renderers/htmlRenderer/htmlRenderer.js +1 -2
  509. package/renderers/index.d.ts +9 -0
  510. package/renderers/numericRenderer/numericRenderer.js +1 -2
  511. package/renderers/passwordRenderer/passwordRenderer.js +1 -2
  512. package/renderers/selectRenderer/index.d.ts +1 -0
  513. package/renderers/selectRenderer/index.js +6 -0
  514. package/renderers/selectRenderer/index.mjs +1 -0
  515. package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
  516. package/renderers/selectRenderer/selectRenderer.js +26 -0
  517. package/renderers/selectRenderer/selectRenderer.mjs +22 -0
  518. package/renderers/textRenderer/textRenderer.js +1 -2
  519. package/renderers/timeRenderer/timeRenderer.js +1 -2
  520. package/selection/highlight/highlight.js +257 -73
  521. package/selection/highlight/highlight.mjs +250 -71
  522. package/selection/highlight/types/activeHeader.js +10 -8
  523. package/selection/highlight/types/activeHeader.mjs +10 -8
  524. package/selection/highlight/types/area.js +6 -18
  525. package/selection/highlight/types/area.mjs +6 -18
  526. package/selection/highlight/types/areaLayered.js +31 -0
  527. package/selection/highlight/types/areaLayered.mjs +26 -0
  528. package/selection/highlight/types/column.js +27 -0
  529. package/selection/highlight/types/column.mjs +22 -0
  530. package/selection/highlight/types/customSelection.js +7 -9
  531. package/selection/highlight/types/customSelection.mjs +7 -9
  532. package/selection/highlight/types/fill.js +5 -7
  533. package/selection/highlight/types/fill.mjs +5 -7
  534. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  535. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  536. package/selection/highlight/types/header.js +9 -18
  537. package/selection/highlight/types/header.mjs +9 -18
  538. package/selection/highlight/types/row.js +27 -0
  539. package/selection/highlight/types/row.mjs +22 -0
  540. package/selection/highlight/visualSelection.js +32 -29
  541. package/selection/highlight/visualSelection.mjs +31 -27
  542. package/selection/index.js +4 -7
  543. package/selection/index.mjs +2 -3
  544. package/selection/mouseEventHandler.js +7 -1
  545. package/selection/mouseEventHandler.mjs +7 -1
  546. package/selection/range.js +9 -10
  547. package/selection/range.mjs +8 -8
  548. package/selection/selection.js +334 -154
  549. package/selection/selection.mjs +330 -151
  550. package/selection/transformation.js +233 -94
  551. package/selection/transformation.mjs +232 -92
  552. package/selection/utils.js +20 -31
  553. package/selection/utils.mjs +16 -21
  554. package/settings.d.ts +4 -0
  555. package/shortcutContexts/commands/editor/closeAndSave.js +11 -0
  556. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  557. package/shortcutContexts/commands/editor/closeWithoutSaving.js +11 -0
  558. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  559. package/shortcutContexts/commands/editor/fastOpen.js +15 -0
  560. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  561. package/shortcutContexts/commands/editor/index.js +16 -0
  562. package/shortcutContexts/commands/editor/index.mjs +12 -0
  563. package/shortcutContexts/commands/editor/open.js +26 -0
  564. package/shortcutContexts/commands/editor/open.mjs +23 -0
  565. package/shortcutContexts/commands/emptySelectedCells.js +10 -0
  566. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  567. package/shortcutContexts/commands/extendCellsSelection/down.js +14 -0
  568. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  569. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +24 -0
  570. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
  571. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  572. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  573. package/shortcutContexts/commands/extendCellsSelection/left.js +14 -0
  574. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  575. package/shortcutContexts/commands/extendCellsSelection/right.js +14 -0
  576. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  577. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +18 -0
  578. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  579. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +28 -0
  580. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  581. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +18 -0
  582. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  583. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +18 -0
  584. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  585. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +28 -0
  586. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  587. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +28 -0
  588. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  589. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +28 -0
  590. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  591. package/shortcutContexts/commands/extendCellsSelection/toRows.js +18 -0
  592. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  593. package/shortcutContexts/commands/extendCellsSelection/up.js +14 -0
  594. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  595. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +24 -0
  596. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
  597. package/shortcutContexts/commands/index.js +35 -0
  598. package/shortcutContexts/commands/index.mjs +31 -0
  599. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  600. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  601. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +32 -0
  602. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
  603. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  604. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  605. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +11 -0
  606. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  607. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +11 -0
  608. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  609. package/shortcutContexts/commands/moveCellSelection/left.js +9 -0
  610. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  611. package/shortcutContexts/commands/moveCellSelection/right.js +9 -0
  612. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  613. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  614. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  615. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  616. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  617. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  618. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  619. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  620. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  621. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +18 -0
  622. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  623. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +20 -0
  624. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  625. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  626. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  627. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  628. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  629. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  630. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  631. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +32 -0
  632. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
  633. package/shortcutContexts/commands/populateSelectedCellsData.js +28 -0
  634. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  635. package/shortcutContexts/commands/scrollToFocusedCell.js +34 -0
  636. package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
  637. package/shortcutContexts/commands/selectAll.js +11 -0
  638. package/shortcutContexts/commands/selectAll.mjs +8 -0
  639. package/shortcutContexts/constants.js +11 -0
  640. package/shortcutContexts/constants.mjs +8 -0
  641. package/shortcutContexts/editor.js +25 -0
  642. package/shortcutContexts/editor.mjs +21 -0
  643. package/shortcutContexts/grid.js +167 -0
  644. package/shortcutContexts/grid.mjs +163 -0
  645. package/shortcutContexts/index.js +24 -0
  646. package/shortcutContexts/index.mjs +11 -0
  647. package/shortcuts/context.d.ts +1 -0
  648. package/shortcuts/context.js +23 -4
  649. package/shortcuts/context.mjs +23 -5
  650. package/shortcuts/manager.js +31 -7
  651. package/shortcuts/manager.mjs +32 -7
  652. package/shortcuts/recorder.js +30 -14
  653. package/shortcuts/recorder.mjs +30 -14
  654. package/shortcuts/utils.js +19 -5
  655. package/shortcuts/utils.mjs +18 -4
  656. package/tableView.js +113 -16
  657. package/tableView.mjs +113 -15
  658. package/utils/dataStructures/linkedList.js +1 -2
  659. package/utils/dataStructures/priorityMap.js +2 -4
  660. package/utils/dataStructures/queue.js +1 -2
  661. package/utils/dataStructures/stack.js +1 -2
  662. package/utils/dataStructures/tree.js +3 -6
  663. package/utils/ghostTable.js +32 -17
  664. package/utils/ghostTable.mjs +31 -15
  665. package/utils/interval.js +1 -2
  666. package/utils/paginator.js +151 -0
  667. package/utils/paginator.mjs +147 -0
  668. package/utils/parseTable.js +527 -83
  669. package/utils/parseTable.mjs +523 -82
  670. package/utils/rootInstance.js +2 -4
  671. package/utils/samplesGenerator.js +21 -13
  672. package/utils/samplesGenerator.mjs +20 -11
  673. package/utils/staticRegister.js +1 -2
  674. package/validators/autocompleteValidator/autocompleteValidator.js +1 -2
  675. package/validators/dateValidator/dateValidator.js +1 -2
  676. package/validators/numericValidator/numericValidator.js +1 -2
  677. package/validators/timeValidator/timeValidator.js +1 -2
  678. package/3rdparty/walkontable/src/selection.js +0 -295
  679. package/3rdparty/walkontable/src/selection.mjs +0 -290
  680. package/plugins/contextMenu/predefinedItems.js +0 -76
  681. package/plugins/contextMenu/predefinedItems.mjs +0 -68
  682. package/plugins/copyPaste/clipboardData.js +0 -18
  683. package/plugins/copyPaste/clipboardData.mjs +0 -14
  684. package/plugins/copyPaste/focusableElement.js +0 -186
  685. package/plugins/copyPaste/focusableElement.mjs +0 -180
  686. package/plugins/copyPaste/pasteEvent.js +0 -14
  687. package/plugins/copyPaste/pasteEvent.mjs +0 -9
  688. package/selection/highlight/constants.js +0 -15
  689. package/selection/highlight/constants.mjs +0 -6
  690. package/selection/highlight/types/index.js +0 -35
  691. package/selection/highlight/types/index.mjs +0 -31
@@ -5,11 +5,12 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typ
5
5
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
6
  import { HandsontableEditor } from "../handsontableEditor/index.mjs";
7
7
  import { arrayMap, pivot } from "../../helpers/array.mjs";
8
- import { addClass, getCaretPosition, getScrollbarWidth, getSelectionEndPosition, getTrimmingContainer, offset, outerHeight, outerWidth, setCaretPosition } from "../../helpers/dom/element.mjs";
8
+ import { addClass, getCaretPosition, getScrollbarWidth, getSelectionEndPosition, getTrimmingContainer, offset, outerHeight, outerWidth, setAttribute, setCaretPosition } from "../../helpers/dom/element.mjs";
9
9
  import { isDefined, stringify } from "../../helpers/mixed.mjs";
10
10
  import { stripTags } from "../../helpers/string.mjs";
11
11
  import { KEY_CODES, isPrintableChar } from "../../helpers/unicode.mjs";
12
12
  import { textRenderer } from "../../renderers/textRenderer/index.mjs";
13
+ import { A11Y_ACTIVEDESCENDANT, A11Y_AUTOCOMPLETE, A11Y_COMBOBOX, A11Y_CONTROLS, A11Y_EXPANDED, A11Y_HASPOPUP, A11Y_LISTBOX, A11Y_LIVE, A11Y_OPTION, A11Y_POSINSET, A11Y_PRESENTATION, A11Y_RELEVANT, A11Y_SELECTED, A11Y_SETSIZE, A11Y_TEXT } from "../../helpers/a11y.mjs";
13
14
  const privatePool = new WeakMap();
14
15
  export const EDITOR_TYPE = 'autocomplete';
15
16
 
@@ -109,7 +110,8 @@ export class AutocompleteEditor extends HandsontableEditor {
109
110
  this.rawChoices = [];
110
111
  privatePool.set(this, {
111
112
  skipOne: false,
112
- isMacOS: this.hot.rootWindow.navigator.platform.indexOf('Mac') > -1
113
+ isMacOS: this.hot.rootWindow.navigator.platform.indexOf('Mac') > -1,
114
+ idPrefix: instance.guid.slice(0, 9)
113
115
  });
114
116
  }
115
117
 
@@ -136,6 +138,27 @@ export class AutocompleteEditor extends HandsontableEditor {
136
138
  super.createElements();
137
139
  addClass(this.htContainer, 'autocompleteEditor');
138
140
  addClass(this.htContainer, this.hot.rootWindow.navigator.platform.indexOf('Mac') === -1 ? '' : 'htMacScroll');
141
+ if (this.hot.getSettings().ariaTags) {
142
+ setAttribute(this.TEXTAREA, [A11Y_TEXT(), A11Y_COMBOBOX(), A11Y_HASPOPUP('listbox'), A11Y_AUTOCOMPLETE()]);
143
+ }
144
+ }
145
+
146
+ /**
147
+ * Prepares editor's metadata and configuration of the internal Handsontable's instance.
148
+ *
149
+ * @param {number} row The visual row index.
150
+ * @param {number} col The visual column index.
151
+ * @param {number|string} prop The column property (passed when datasource is an array of objects).
152
+ * @param {HTMLTableCellElement} td The rendered cell element.
153
+ * @param {*} value The rendered value.
154
+ * @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
155
+ */
156
+ prepare(row, col, prop, td, value, cellProperties) {
157
+ const priv = privatePool.get(this);
158
+ super.prepare(row, col, prop, td, value, cellProperties);
159
+ if (this.hot.getSettings().ariaTags) {
160
+ setAttribute(this.TEXTAREA, [A11Y_EXPANDED('false'), A11Y_CONTROLS(`${priv.idPrefix}-listbox-${row}-${col}`)]);
161
+ }
139
162
  }
140
163
 
141
164
  /**
@@ -144,8 +167,14 @@ export class AutocompleteEditor extends HandsontableEditor {
144
167
  open() {
145
168
  const priv = privatePool.get(this);
146
169
  super.open();
147
- const choicesListHot = this.htEditor.getInstance();
148
170
  const trimDropdown = this.cellProperties.trimDropdown === void 0 ? true : this.cellProperties.trimDropdown;
171
+ const rootInstanceAriaTagsEnabled = this.hot.getSettings().ariaTags;
172
+ const sourceArray = Array.isArray(this.cellProperties.source) ? this.cellProperties.source : null;
173
+ const sourceSize = sourceArray === null || sourceArray === void 0 ? void 0 : sourceArray.length;
174
+ const {
175
+ row: rowIndex,
176
+ col: colIndex
177
+ } = this;
149
178
  this.showEditableElement();
150
179
  this.focus();
151
180
  let scrollbarWidth = getScrollbarWidth();
@@ -154,9 +183,10 @@ export class AutocompleteEditor extends HandsontableEditor {
154
183
  }
155
184
 
156
185
  this.addHook('beforeKeyDown', event => this.onBeforeKeyDown(event));
157
- choicesListHot.updateSettings({
186
+ this.htEditor.updateSettings({
158
187
  colWidths: trimDropdown ? [outerWidth(this.TEXTAREA) - 2] : void 0,
159
188
  width: trimDropdown ? outerWidth(this.TEXTAREA) + scrollbarWidth : void 0,
189
+ autoColumnSize: true,
160
190
  renderer: (instance, TD, row, col, prop, value, cellProperties) => {
161
191
  textRenderer(instance, TD, row, col, prop, value, cellProperties);
162
192
  const {
@@ -175,10 +205,27 @@ export class AutocompleteEditor extends HandsontableEditor {
175
205
  cellValue = cellValue.replace(match, `<strong>${match}</strong>`);
176
206
  }
177
207
  }
208
+ if (rootInstanceAriaTagsEnabled) {
209
+ setAttribute(TD, [A11Y_OPTION(),
210
+ // Add `setsize` and `posinset` only if the source is an array.
211
+ ...(sourceArray ? [A11Y_SETSIZE(sourceSize)] : []), ...(sourceArray ? [A11Y_POSINSET(sourceArray.indexOf(value) + 1)] : []), ['id', `${this.htEditor.rootElement.id}_${row}-${col}`]]);
212
+ }
178
213
  TD.innerHTML = cellValue;
179
214
  },
180
- autoColumnSize: true
215
+ afterSelection: (startRow, startCol) => {
216
+ if (rootInstanceAriaTagsEnabled) {
217
+ const TD = this.htEditor.getCell(startRow, startCol, true);
218
+ setAttribute(TD, [A11Y_SELECTED()]);
219
+ setAttribute(this.TEXTAREA, ...A11Y_ACTIVEDESCENDANT(TD.id));
220
+ }
221
+ }
181
222
  });
223
+ if (rootInstanceAriaTagsEnabled) {
224
+ // Add `role=presentation` to the main table to prevent the readers from treating the option list as a table.
225
+ setAttribute(this.htEditor.view._wt.wtOverlays.wtTable.TABLE, ...A11Y_PRESENTATION());
226
+ setAttribute(this.htEditor.rootElement, [A11Y_LISTBOX(), A11Y_LIVE('polite'), A11Y_RELEVANT('text'), ['id', `${priv.idPrefix}-listbox-${rowIndex}-${colIndex}`]]);
227
+ setAttribute(this.TEXTAREA, ...A11Y_EXPANDED('true'));
228
+ }
182
229
  if (priv.skipOne) {
183
230
  priv.skipOne = false;
184
231
  }
@@ -193,6 +240,9 @@ export class AutocompleteEditor extends HandsontableEditor {
193
240
  close() {
194
241
  this.removeHooksByKey('beforeKeyDown');
195
242
  super.close();
243
+ if (this.hot.getSettings().ariaTags) {
244
+ setAttribute(this.TEXTAREA, [A11Y_EXPANDED('false')]);
245
+ }
196
246
  }
197
247
 
198
248
  /**
@@ -267,10 +317,15 @@ export class AutocompleteEditor extends HandsontableEditor {
267
317
  }
268
318
  this.strippedChoices = choices;
269
319
  this.htEditor.loadData(pivot([choices]));
270
- this.updateDropdownHeight();
271
- this.flipDropdownIfNeeded();
272
- if (this.cellProperties.strict === true) {
273
- this.highlightBestMatchingChoice(highlightIndex);
320
+ if (choices.length === 0) {
321
+ this.htEditor.rootElement.style.display = 'none';
322
+ } else {
323
+ this.htEditor.rootElement.style.display = '';
324
+ this.updateDropdownHeight();
325
+ this.flipDropdownIfNeeded();
326
+ if (this.cellProperties.strict === true) {
327
+ this.highlightBestMatchingChoice(highlightIndex);
328
+ }
274
329
  }
275
330
  this.hot.listen();
276
331
  setCaretPosition(this.TEXTAREA, pos, pos === endPos ? void 0 : endPos);
@@ -407,7 +462,7 @@ export class AutocompleteEditor extends HandsontableEditor {
407
462
  * @returns {number}
408
463
  */
409
464
  getDropdownHeight() {
410
- const firstRowHeight = this.htEditor.getInstance().getRowHeight(0) || 23;
465
+ const firstRowHeight = this.htEditor.getRowHeight(0) || 23;
411
466
  const visibleRows = this.cellProperties.visibleRows;
412
467
  return this.strippedChoices.length >= visibleRows ? visibleRows * firstRowHeight : this.strippedChoices.length * firstRowHeight + 8; // eslint-disable-line max-len
413
468
  }
@@ -8,9 +8,8 @@ var _editorManager = require("../../editorManager");
8
8
  var _hooksRefRegisterer = _interopRequireDefault(require("../../mixins/hooksRefRegisterer"));
9
9
  var _element = require("../../helpers/dom/element");
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
- const EDITOR_TYPE = 'base';
12
- exports.EDITOR_TYPE = EDITOR_TYPE;
13
- const EDITOR_STATE = Object.freeze({
11
+ const EDITOR_TYPE = exports.EDITOR_TYPE = 'base';
12
+ const EDITOR_STATE = exports.EDITOR_STATE = Object.freeze({
14
13
  VIRGIN: 'STATE_VIRGIN',
15
14
  // before editing
16
15
  EDITING: 'STATE_EDITING',
@@ -18,13 +17,11 @@ const EDITOR_STATE = Object.freeze({
18
17
  // waiting for async validation
19
18
  FINISHED: 'STATE_FINISHED'
20
19
  });
21
- exports.EDITOR_STATE = EDITOR_STATE;
22
- const SHORTCUTS_GROUP_EDITOR = 'baseEditor';
20
+ const SHORTCUTS_GROUP_EDITOR = exports.SHORTCUTS_GROUP_EDITOR = 'baseEditor';
23
21
 
24
22
  /**
25
23
  * @class BaseEditor
26
24
  */
27
- exports.SHORTCUTS_GROUP_EDITOR = SHORTCUTS_GROUP_EDITOR;
28
25
  class BaseEditor {
29
26
  static get EDITOR_TYPE() {
30
27
  return EDITOR_TYPE;
@@ -492,21 +489,30 @@ class BaseEditor {
492
489
  const horizontalScrollPosition = Math.abs(wtOverlays.inlineStartOverlay.getScrollPosition());
493
490
  const verticalScrollPosition = wtOverlays.topOverlay.getScrollPosition();
494
491
  const scrollbarWidth = (0, _element.getScrollbarWidth)(this.hot.rootDocument);
495
- const cellTopOffset = TD.offsetTop + firstRowOffset - verticalScrollPosition;
496
- let cellStartOffset = 0;
492
+ let cellTopOffset = TD.offsetTop;
493
+ if (['inline_start', 'master'].includes(overlayName)) {
494
+ cellTopOffset += firstRowOffset - verticalScrollPosition;
495
+ }
496
+ if (['bottom', 'bottom_inline_start_corner'].includes(overlayName)) {
497
+ const {
498
+ wtViewport: bottomWtViewport,
499
+ wtTable: bottomWtTable
500
+ } = wtOverlays.bottomOverlay.clone;
501
+ cellTopOffset += bottomWtViewport.getWorkspaceHeight() - bottomWtTable.getHeight() - scrollbarWidth;
502
+ }
503
+ let cellStartOffset = TD.offsetLeft;
497
504
  if (this.hot.isRtl()) {
498
- const cellOffset = TD.offsetLeft;
499
- if (cellOffset >= 0) {
505
+ if (cellStartOffset >= 0) {
500
506
  cellStartOffset = overlayTable.getWidth() - TD.offsetLeft;
501
507
  } else {
502
508
  // The `offsetLeft` returns negative values when the parent offset element has position relative
503
509
  // (it happens when on the cell the selection is applied - the `area` CSS class).
504
510
  // When it happens the `offsetLeft` value is calculated from the right edge of the parent element.
505
- cellStartOffset = Math.abs(cellOffset);
511
+ cellStartOffset = Math.abs(cellStartOffset);
506
512
  }
507
513
  cellStartOffset += firstColumnOffset - horizontalScrollPosition - cellWidth;
508
- } else {
509
- cellStartOffset = TD.offsetLeft + firstColumnOffset - horizontalScrollPosition;
514
+ } else if (['top', 'master', 'bottom'].includes(overlayName)) {
515
+ cellStartOffset += firstColumnOffset - horizontalScrollPosition;
510
516
  }
511
517
  const cellComputedStyle = (0, _element.getComputedStyle)(this.TD, this.hot.rootWindow);
512
518
  const borderPhysicalWidthProp = this.hot.isRtl() ? 'borderRightWidth' : 'borderLeftWidth';
@@ -485,21 +485,30 @@ export class BaseEditor {
485
485
  const horizontalScrollPosition = Math.abs(wtOverlays.inlineStartOverlay.getScrollPosition());
486
486
  const verticalScrollPosition = wtOverlays.topOverlay.getScrollPosition();
487
487
  const scrollbarWidth = getScrollbarWidth(this.hot.rootDocument);
488
- const cellTopOffset = TD.offsetTop + firstRowOffset - verticalScrollPosition;
489
- let cellStartOffset = 0;
488
+ let cellTopOffset = TD.offsetTop;
489
+ if (['inline_start', 'master'].includes(overlayName)) {
490
+ cellTopOffset += firstRowOffset - verticalScrollPosition;
491
+ }
492
+ if (['bottom', 'bottom_inline_start_corner'].includes(overlayName)) {
493
+ const {
494
+ wtViewport: bottomWtViewport,
495
+ wtTable: bottomWtTable
496
+ } = wtOverlays.bottomOverlay.clone;
497
+ cellTopOffset += bottomWtViewport.getWorkspaceHeight() - bottomWtTable.getHeight() - scrollbarWidth;
498
+ }
499
+ let cellStartOffset = TD.offsetLeft;
490
500
  if (this.hot.isRtl()) {
491
- const cellOffset = TD.offsetLeft;
492
- if (cellOffset >= 0) {
501
+ if (cellStartOffset >= 0) {
493
502
  cellStartOffset = overlayTable.getWidth() - TD.offsetLeft;
494
503
  } else {
495
504
  // The `offsetLeft` returns negative values when the parent offset element has position relative
496
505
  // (it happens when on the cell the selection is applied - the `area` CSS class).
497
506
  // When it happens the `offsetLeft` value is calculated from the right edge of the parent element.
498
- cellStartOffset = Math.abs(cellOffset);
507
+ cellStartOffset = Math.abs(cellStartOffset);
499
508
  }
500
509
  cellStartOffset += firstColumnOffset - horizontalScrollPosition - cellWidth;
501
- } else {
502
- cellStartOffset = TD.offsetLeft + firstColumnOffset - horizontalScrollPosition;
510
+ } else if (['top', 'master', 'bottom'].includes(overlayName)) {
511
+ cellStartOffset += firstColumnOffset - horizontalScrollPosition;
503
512
  }
504
513
  const cellComputedStyle = getComputedStyle(this.TD, this.hot.rootWindow);
505
514
  const borderPhysicalWidthProp = this.hot.isRtl() ? 'borderRightWidth' : 'borderLeftWidth';
@@ -3,13 +3,12 @@
3
3
  exports.__esModule = true;
4
4
  var _baseEditor = require("../baseEditor");
5
5
  var _element = require("../../helpers/dom/element");
6
- const EDITOR_TYPE = 'checkbox';
6
+ const EDITOR_TYPE = exports.EDITOR_TYPE = 'checkbox';
7
7
 
8
8
  /**
9
9
  * @private
10
10
  * @class CheckboxEditor
11
11
  */
12
- exports.EDITOR_TYPE = EDITOR_TYPE;
13
12
  class CheckboxEditor extends _baseEditor.BaseEditor {
14
13
  static get EDITOR_TYPE() {
15
14
  return EDITOR_TYPE;
@@ -7,11 +7,11 @@ var _pikaday = _interopRequireDefault(require("pikaday"));
7
7
  var _textEditor = require("../textEditor");
8
8
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
9
9
  var _element = require("../../helpers/dom/element");
10
+ var _a11y = require("../../helpers/a11y");
10
11
  var _object = require("../../helpers/object");
11
12
  var _unicode = require("../../helpers/unicode");
12
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
- const EDITOR_TYPE = 'date';
14
- exports.EDITOR_TYPE = EDITOR_TYPE;
14
+ const EDITOR_TYPE = exports.EDITOR_TYPE = 'date';
15
15
  const SHORTCUTS_GROUP_EDITOR = 'dateEditor';
16
16
 
17
17
  /**
@@ -44,7 +44,7 @@ class DateEditor extends _textEditor.TextEditor {
44
44
  throw new Error('You need to include Pikaday to your project.');
45
45
  }
46
46
  super.init();
47
- this.instance.addHook('afterDestroy', () => {
47
+ this.hot.addHook('afterDestroy', () => {
48
48
  this.parentDestroyed = true;
49
49
  this.destroyElements();
50
50
  });
@@ -69,7 +69,21 @@ class DateEditor extends _textEditor.TextEditor {
69
69
  /**
70
70
  * Prevent recognizing clicking on datepicker as clicking outside of table.
71
71
  */
72
- eventManager.addEventListener(this.datePicker, 'mousedown', event => event.stopPropagation());
72
+ eventManager.addEventListener(this.datePicker, 'mousedown', event => {
73
+ if ((0, _element.hasClass)(event.target, 'pika-day')) {
74
+ this.hideDatepicker();
75
+ }
76
+ event.stopPropagation();
77
+ });
78
+
79
+ /**
80
+ * Prevent caret movement in the TEXTAREA when navigating over the date picker.
81
+ */
82
+ eventManager.addEventListener(this.TEXTAREA, 'keydown', event => {
83
+ if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.code)) {
84
+ event.preventDefault();
85
+ }
86
+ });
73
87
  }
74
88
 
75
89
  /**
@@ -110,6 +124,9 @@ class DateEditor extends _textEditor.TextEditor {
110
124
  const editorContext = shortcutManager.getContext('editor');
111
125
  super.open();
112
126
  this.showDatepicker(event);
127
+ if (this.hot.getSettings().ariaTags) {
128
+ (0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('true')]);
129
+ }
113
130
  editorContext.addShortcut({
114
131
  keys: [['Enter']],
115
132
  callback: keyboardEvent => {
@@ -132,9 +149,12 @@ class DateEditor extends _textEditor.TextEditor {
132
149
  if ((_this$$datePicker = this.$datePicker) !== null && _this$$datePicker !== void 0 && _this$$datePicker.destroy) {
133
150
  this.$datePicker.destroy();
134
151
  }
135
- this.instance._registerTimeout(() => {
136
- this.instance._refreshBorders();
152
+ this.hot._registerTimeout(() => {
153
+ this.hot._refreshBorders();
137
154
  });
155
+ if (this.TD && this.hot.getSettings().ariaTags) {
156
+ (0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('false')]);
157
+ }
138
158
  const shortcutManager = this.hot.getShortcutManager();
139
159
  const editorContext = shortcutManager.getContext('editor');
140
160
  editorContext.removeShortcutsByGroup(SHORTCUTS_GROUP_EDITOR);
@@ -152,7 +172,6 @@ class DateEditor extends _textEditor.TextEditor {
152
172
  let ctrlDown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
153
173
  if (restoreOriginalValue) {
154
174
  // pressed ESC, restore original value
155
- // var value = this.instance.getDataAtCell(this.row, this.col);
156
175
  const value = this.originalValue;
157
176
  if (value !== void 0) {
158
177
  this.setValue(value);
@@ -169,7 +188,7 @@ class DateEditor extends _textEditor.TextEditor {
169
188
  showDatepicker(event) {
170
189
  const offset = this.TD.getBoundingClientRect();
171
190
  const dateFormat = this.cellProperties.dateFormat || this.defaultDateFormat;
172
- const isMouseDown = this.instance.view.isMouseDown();
191
+ const isMouseDown = this.hot.view.isMouseDown();
173
192
  const isMeta = event ? (0, _unicode.isFunctionKey)(event.keyCode) : false;
174
193
  let dateStr;
175
194
  this.datePicker.style.display = 'block';
@@ -248,7 +267,6 @@ class DateEditor extends _textEditor.TextEditor {
248
267
  dateStr = (0, _moment.default)(dateStr).format(this.cellProperties.dateFormat || this.defaultDateFormat);
249
268
  }
250
269
  this.setValue(dateStr);
251
- this.hideDatepicker();
252
270
  if (origOnSelect) {
253
271
  origOnSelect();
254
272
  }
@@ -3,7 +3,8 @@ import moment from 'moment';
3
3
  import Pikaday from 'pikaday';
4
4
  import { TextEditor } from "../textEditor/index.mjs";
5
5
  import EventManager from "../../eventManager.mjs";
6
- import { addClass, outerHeight, outerWidth } from "../../helpers/dom/element.mjs";
6
+ import { addClass, hasClass, outerHeight, outerWidth, setAttribute } from "../../helpers/dom/element.mjs";
7
+ import { A11Y_EXPANDED } from "../../helpers/a11y.mjs";
7
8
  import { deepExtend } from "../../helpers/object.mjs";
8
9
  import { isFunctionKey } from "../../helpers/unicode.mjs";
9
10
  export const EDITOR_TYPE = 'date';
@@ -39,7 +40,7 @@ export class DateEditor extends TextEditor {
39
40
  throw new Error('You need to include Pikaday to your project.');
40
41
  }
41
42
  super.init();
42
- this.instance.addHook('afterDestroy', () => {
43
+ this.hot.addHook('afterDestroy', () => {
43
44
  this.parentDestroyed = true;
44
45
  this.destroyElements();
45
46
  });
@@ -64,7 +65,21 @@ export class DateEditor extends TextEditor {
64
65
  /**
65
66
  * Prevent recognizing clicking on datepicker as clicking outside of table.
66
67
  */
67
- eventManager.addEventListener(this.datePicker, 'mousedown', event => event.stopPropagation());
68
+ eventManager.addEventListener(this.datePicker, 'mousedown', event => {
69
+ if (hasClass(event.target, 'pika-day')) {
70
+ this.hideDatepicker();
71
+ }
72
+ event.stopPropagation();
73
+ });
74
+
75
+ /**
76
+ * Prevent caret movement in the TEXTAREA when navigating over the date picker.
77
+ */
78
+ eventManager.addEventListener(this.TEXTAREA, 'keydown', event => {
79
+ if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.code)) {
80
+ event.preventDefault();
81
+ }
82
+ });
68
83
  }
69
84
 
70
85
  /**
@@ -105,6 +120,9 @@ export class DateEditor extends TextEditor {
105
120
  const editorContext = shortcutManager.getContext('editor');
106
121
  super.open();
107
122
  this.showDatepicker(event);
123
+ if (this.hot.getSettings().ariaTags) {
124
+ setAttribute(this.TD, [A11Y_EXPANDED('true')]);
125
+ }
108
126
  editorContext.addShortcut({
109
127
  keys: [['Enter']],
110
128
  callback: keyboardEvent => {
@@ -127,9 +145,12 @@ export class DateEditor extends TextEditor {
127
145
  if ((_this$$datePicker = this.$datePicker) !== null && _this$$datePicker !== void 0 && _this$$datePicker.destroy) {
128
146
  this.$datePicker.destroy();
129
147
  }
130
- this.instance._registerTimeout(() => {
131
- this.instance._refreshBorders();
148
+ this.hot._registerTimeout(() => {
149
+ this.hot._refreshBorders();
132
150
  });
151
+ if (this.TD && this.hot.getSettings().ariaTags) {
152
+ setAttribute(this.TD, [A11Y_EXPANDED('false')]);
153
+ }
133
154
  const shortcutManager = this.hot.getShortcutManager();
134
155
  const editorContext = shortcutManager.getContext('editor');
135
156
  editorContext.removeShortcutsByGroup(SHORTCUTS_GROUP_EDITOR);
@@ -147,7 +168,6 @@ export class DateEditor extends TextEditor {
147
168
  let ctrlDown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
148
169
  if (restoreOriginalValue) {
149
170
  // pressed ESC, restore original value
150
- // var value = this.instance.getDataAtCell(this.row, this.col);
151
171
  const value = this.originalValue;
152
172
  if (value !== void 0) {
153
173
  this.setValue(value);
@@ -164,7 +184,7 @@ export class DateEditor extends TextEditor {
164
184
  showDatepicker(event) {
165
185
  const offset = this.TD.getBoundingClientRect();
166
186
  const dateFormat = this.cellProperties.dateFormat || this.defaultDateFormat;
167
- const isMouseDown = this.instance.view.isMouseDown();
187
+ const isMouseDown = this.hot.view.isMouseDown();
168
188
  const isMeta = event ? isFunctionKey(event.keyCode) : false;
169
189
  let dateStr;
170
190
  this.datePicker.style.display = 'block';
@@ -243,7 +263,6 @@ export class DateEditor extends TextEditor {
243
263
  dateStr = moment(dateStr).format(this.cellProperties.dateFormat || this.defaultDateFormat);
244
264
  }
245
265
  this.setValue(dateStr);
246
- this.hideDatepicker();
247
266
  if (origOnSelect) {
248
267
  origOnSelect();
249
268
  }
@@ -4,13 +4,12 @@ exports.__esModule = true;
4
4
  var _autocompleteEditor = require("../autocompleteEditor");
5
5
  var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
6
6
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
- const EDITOR_TYPE = 'dropdown';
7
+ const EDITOR_TYPE = exports.EDITOR_TYPE = 'dropdown';
8
8
 
9
9
  /**
10
10
  * @private
11
11
  * @class DropdownEditor
12
12
  */
13
- exports.EDITOR_TYPE = EDITOR_TYPE;
14
13
  class DropdownEditor extends _autocompleteEditor.AutocompleteEditor {
15
14
  static get EDITOR_TYPE() {
16
15
  return EDITOR_TYPE;
@@ -6,14 +6,14 @@ var _element = require("../../helpers/dom/element");
6
6
  var _event = require("../../helpers/dom/event");
7
7
  var _object = require("../../helpers/object");
8
8
  var _editorManager = require("../../editorManager");
9
+ var _a11y = require("../../helpers/a11y");
9
10
  const SHORTCUTS_GROUP = 'handsontableEditor';
10
- const EDITOR_TYPE = 'handsontable';
11
+ const EDITOR_TYPE = exports.EDITOR_TYPE = 'handsontable';
11
12
 
12
13
  /**
13
14
  * @private
14
15
  * @class HandsontableEditor
15
16
  */
16
- exports.EDITOR_TYPE = EDITOR_TYPE;
17
17
  class HandsontableEditor extends _textEditor.TextEditor {
18
18
  static get EDITOR_TYPE() {
19
19
  return EDITOR_TYPE;
@@ -42,6 +42,9 @@ class HandsontableEditor extends _textEditor.TextEditor {
42
42
  }
43
43
  (0, _element.setCaretPosition)(this.TEXTAREA, 0, this.TEXTAREA.value.length);
44
44
  this.refreshDimensions();
45
+ if (this.hot.getSettings().ariaTags) {
46
+ (0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('true')]);
47
+ }
45
48
  }
46
49
 
47
50
  /**
@@ -53,6 +56,9 @@ class HandsontableEditor extends _textEditor.TextEditor {
53
56
  }
54
57
  this.removeHooksByKey('beforeKeyDown');
55
58
  super.close();
59
+ if (this.hot.getSettings().ariaTags) {
60
+ (0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('false')]);
61
+ }
56
62
  }
57
63
 
58
64
  /**
@@ -81,6 +87,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
81
87
  fillHandle: false,
82
88
  autoWrapCol: false,
83
89
  autoWrapRow: false,
90
+ ariaTags: false,
84
91
  afterOnCellMouseDown(_, coords) {
85
92
  const sourceValue = this.getSourceData(coords.row, coords.col);
86
93
 
@@ -139,7 +146,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
139
146
  }
140
147
 
141
148
  if (this.htEditor && this.htEditor.getSelectedLast()) {
142
- const value = this.htEditor.getInstance().getValue();
149
+ const value = this.htEditor.getValue();
143
150
  if (value !== void 0) {
144
151
  // if the value is undefined then it means we don't want to set the value
145
152
  this.setValue(value);
@@ -149,7 +156,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
149
156
  }
150
157
 
151
158
  /**
152
- * Assings afterDestroy callback to prevent memory leaks.
159
+ * Assigns afterDestroy callback to prevent memory leaks.
153
160
  *
154
161
  * @private
155
162
  */
@@ -176,7 +183,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
176
183
  position: 'before'
177
184
  };
178
185
  const action = (rowToSelect, event) => {
179
- const innerHOT = this.htEditor.getInstance();
186
+ const innerHOT = this.htEditor;
180
187
  if (rowToSelect !== void 0) {
181
188
  if (rowToSelect < 0 || innerHOT.flipped && rowToSelect > innerHOT.countRows() - 1) {
182
189
  innerHOT.deselectCell();
@@ -195,7 +202,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
195
202
  editorContext.addShortcuts([{
196
203
  keys: [['ArrowUp']],
197
204
  callback: event => {
198
- const innerHOT = this.htEditor.getInstance();
205
+ const innerHOT = this.htEditor;
199
206
  let rowToSelect;
200
207
  let selectedRow;
201
208
  if (!innerHOT.getSelectedLast() && innerHOT.flipped) {
@@ -215,7 +222,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
215
222
  }, {
216
223
  keys: [['ArrowDown']],
217
224
  callback: event => {
218
- const innerHOT = this.htEditor.getInstance();
225
+ const innerHOT = this.htEditor;
219
226
  let rowToSelect;
220
227
  let selectedRow;
221
228
  if (!innerHOT.getSelectedLast() && !innerHOT.flipped) {
@@ -1,8 +1,9 @@
1
1
  import { TextEditor } from "../textEditor/index.mjs";
2
- import { setCaretPosition } from "../../helpers/dom/element.mjs";
2
+ import { setAttribute, setCaretPosition } from "../../helpers/dom/element.mjs";
3
3
  import { stopImmediatePropagation } from "../../helpers/dom/event.mjs";
4
4
  import { extend } from "../../helpers/object.mjs";
5
5
  import { SHORTCUTS_GROUP_NAVIGATION } from "../../editorManager.mjs";
6
+ import { A11Y_EXPANDED } from "../../helpers/a11y.mjs";
6
7
  const SHORTCUTS_GROUP = 'handsontableEditor';
7
8
  export const EDITOR_TYPE = 'handsontable';
8
9
 
@@ -38,6 +39,9 @@ export class HandsontableEditor extends TextEditor {
38
39
  }
39
40
  setCaretPosition(this.TEXTAREA, 0, this.TEXTAREA.value.length);
40
41
  this.refreshDimensions();
42
+ if (this.hot.getSettings().ariaTags) {
43
+ setAttribute(this.TD, [A11Y_EXPANDED('true')]);
44
+ }
41
45
  }
42
46
 
43
47
  /**
@@ -49,6 +53,9 @@ export class HandsontableEditor extends TextEditor {
49
53
  }
50
54
  this.removeHooksByKey('beforeKeyDown');
51
55
  super.close();
56
+ if (this.hot.getSettings().ariaTags) {
57
+ setAttribute(this.TD, [A11Y_EXPANDED('false')]);
58
+ }
52
59
  }
53
60
 
54
61
  /**
@@ -77,6 +84,7 @@ export class HandsontableEditor extends TextEditor {
77
84
  fillHandle: false,
78
85
  autoWrapCol: false,
79
86
  autoWrapRow: false,
87
+ ariaTags: false,
80
88
  afterOnCellMouseDown(_, coords) {
81
89
  const sourceValue = this.getSourceData(coords.row, coords.col);
82
90
 
@@ -135,7 +143,7 @@ export class HandsontableEditor extends TextEditor {
135
143
  }
136
144
 
137
145
  if (this.htEditor && this.htEditor.getSelectedLast()) {
138
- const value = this.htEditor.getInstance().getValue();
146
+ const value = this.htEditor.getValue();
139
147
  if (value !== void 0) {
140
148
  // if the value is undefined then it means we don't want to set the value
141
149
  this.setValue(value);
@@ -145,7 +153,7 @@ export class HandsontableEditor extends TextEditor {
145
153
  }
146
154
 
147
155
  /**
148
- * Assings afterDestroy callback to prevent memory leaks.
156
+ * Assigns afterDestroy callback to prevent memory leaks.
149
157
  *
150
158
  * @private
151
159
  */
@@ -172,7 +180,7 @@ export class HandsontableEditor extends TextEditor {
172
180
  position: 'before'
173
181
  };
174
182
  const action = (rowToSelect, event) => {
175
- const innerHOT = this.htEditor.getInstance();
183
+ const innerHOT = this.htEditor;
176
184
  if (rowToSelect !== void 0) {
177
185
  if (rowToSelect < 0 || innerHOT.flipped && rowToSelect > innerHOT.countRows() - 1) {
178
186
  innerHOT.deselectCell();
@@ -191,7 +199,7 @@ export class HandsontableEditor extends TextEditor {
191
199
  editorContext.addShortcuts([{
192
200
  keys: [['ArrowUp']],
193
201
  callback: event => {
194
- const innerHOT = this.htEditor.getInstance();
202
+ const innerHOT = this.htEditor;
195
203
  let rowToSelect;
196
204
  let selectedRow;
197
205
  if (!innerHOT.getSelectedLast() && innerHOT.flipped) {
@@ -211,7 +219,7 @@ export class HandsontableEditor extends TextEditor {
211
219
  }, {
212
220
  keys: [['ArrowDown']],
213
221
  callback: event => {
214
- const innerHOT = this.htEditor.getInstance();
222
+ const innerHOT = this.htEditor;
215
223
  let rowToSelect;
216
224
  let selectedRow;
217
225
  if (!innerHOT.getSelectedLast() && !innerHOT.flipped) {
@@ -2,13 +2,12 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  var _textEditor = require("../textEditor");
5
- const EDITOR_TYPE = 'numeric';
5
+ const EDITOR_TYPE = exports.EDITOR_TYPE = 'numeric';
6
6
 
7
7
  /**
8
8
  * @private
9
9
  * @class NumericEditor
10
10
  */
11
- exports.EDITOR_TYPE = EDITOR_TYPE;
12
11
  class NumericEditor extends _textEditor.TextEditor {
13
12
  static get EDITOR_TYPE() {
14
13
  return EDITOR_TYPE;
@@ -3,13 +3,12 @@
3
3
  exports.__esModule = true;
4
4
  var _textEditor = require("../textEditor");
5
5
  var _element = require("../../helpers/dom/element");
6
- const EDITOR_TYPE = 'password';
6
+ const EDITOR_TYPE = exports.EDITOR_TYPE = 'password';
7
7
 
8
8
  /**
9
9
  * @private
10
10
  * @class PasswordEditor
11
11
  */
12
- exports.EDITOR_TYPE = EDITOR_TYPE;
13
12
  class PasswordEditor extends _textEditor.TextEditor {
14
13
  static get EDITOR_TYPE() {
15
14
  return EDITOR_TYPE;