handsontable 0.0.0-next-9059914-20231025 → 0.0.0-next-21d91d0-20231025

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (446) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +50 -11
  3. package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +38 -7
  6. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  7. package/3rdparty/walkontable/src/core/_base.js +9 -3
  8. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  9. package/3rdparty/walkontable/src/core/clone.js +2 -2
  10. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  11. package/3rdparty/walkontable/src/core/core.js +3 -2
  12. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  13. package/3rdparty/walkontable/src/event.js +12 -10
  14. package/3rdparty/walkontable/src/event.mjs +12 -10
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +10 -2
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +13 -2
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  23. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  24. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  25. package/3rdparty/walkontable/src/renderer/cells.js +10 -0
  26. package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
  27. package/3rdparty/walkontable/src/renderer/columnHeaders.js +10 -0
  28. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +11 -1
  29. package/3rdparty/walkontable/src/renderer/rowHeaders.js +5 -0
  30. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +5 -0
  31. package/3rdparty/walkontable/src/renderer/rows.js +13 -0
  32. package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
  33. package/3rdparty/walkontable/src/renderer/table.js +9 -0
  34. package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
  35. package/3rdparty/walkontable/src/scroll.js +2 -0
  36. package/3rdparty/walkontable/src/scroll.mjs +2 -0
  37. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  38. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  39. package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
  40. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  41. package/3rdparty/walkontable/src/selection/constants.js +62 -0
  42. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  43. package/3rdparty/walkontable/src/selection/index.js +26 -0
  44. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  45. package/3rdparty/walkontable/src/selection/manager.js +274 -0
  46. package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
  47. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  48. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  49. package/3rdparty/walkontable/src/selection/selection.js +101 -0
  50. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  51. package/3rdparty/walkontable/src/settings.js +13 -4
  52. package/3rdparty/walkontable/src/settings.mjs +13 -4
  53. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  54. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  55. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  56. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  57. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  58. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  59. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  60. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  61. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  62. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  63. package/3rdparty/walkontable/src/table.js +19 -78
  64. package/3rdparty/walkontable/src/table.mjs +20 -79
  65. package/base.js +2 -2
  66. package/base.mjs +2 -2
  67. package/cellTypes/dateType/dateType.d.ts +3 -3
  68. package/cellTypes/dateType/dateType.js +2 -2
  69. package/cellTypes/dateType/dateType.mjs +2 -2
  70. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  71. package/cellTypes/handsontableType/handsontableType.js +2 -2
  72. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  73. package/cellTypes/index.d.ts +3 -0
  74. package/cellTypes/index.js +4 -0
  75. package/cellTypes/index.mjs +3 -1
  76. package/cellTypes/selectType/index.d.ts +1 -0
  77. package/cellTypes/selectType/index.js +6 -0
  78. package/cellTypes/selectType/index.mjs +1 -0
  79. package/cellTypes/selectType/selectType.d.ts +14 -0
  80. package/cellTypes/selectType/selectType.js +13 -0
  81. package/cellTypes/selectType/selectType.mjs +8 -0
  82. package/core/focusCatcher/focusDetector.js +63 -0
  83. package/core/focusCatcher/focusDetector.mjs +59 -0
  84. package/core/focusCatcher/index.js +142 -0
  85. package/core/focusCatcher/index.mjs +138 -0
  86. package/core/index.js +9 -0
  87. package/core/index.mjs +1 -0
  88. package/core.d.ts +9 -4
  89. package/core.js +285 -327
  90. package/core.mjs +285 -327
  91. package/dataMap/metaManager/metaSchema.js +65 -0
  92. package/dataMap/metaManager/metaSchema.mjs +65 -0
  93. package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
  94. package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
  95. package/dataMap/replaceData.js +5 -0
  96. package/dataMap/replaceData.mjs +5 -0
  97. package/dist/handsontable.css +51 -15
  98. package/dist/handsontable.full.css +51 -15
  99. package/dist/handsontable.full.js +13360 -7840
  100. package/dist/handsontable.full.min.css +7 -7
  101. package/dist/handsontable.full.min.js +136 -136
  102. package/dist/handsontable.js +20955 -15435
  103. package/dist/handsontable.min.css +6 -6
  104. package/dist/handsontable.min.js +24 -24
  105. package/dist/languages/all.js +6 -2
  106. package/dist/languages/all.min.js +1 -1
  107. package/dist/languages/en-US.js +3 -1
  108. package/dist/languages/en-US.min.js +1 -1
  109. package/dist/languages/pl-PL.js +3 -1
  110. package/dist/languages/pl-PL.min.js +1 -1
  111. package/editorManager.js +15 -87
  112. package/editorManager.mjs +16 -87
  113. package/editors/autocompleteEditor/autocompleteEditor.js +53 -2
  114. package/editors/autocompleteEditor/autocompleteEditor.mjs +54 -3
  115. package/editors/dateEditor/dateEditor.js +26 -7
  116. package/editors/dateEditor/dateEditor.mjs +27 -8
  117. package/editors/handsontableEditor/handsontableEditor.js +9 -1
  118. package/editors/handsontableEditor/handsontableEditor.mjs +10 -2
  119. package/editors/textEditor/textEditor.js +19 -27
  120. package/editors/textEditor/textEditor.mjs +22 -30
  121. package/focusManager.d.ts +12 -0
  122. package/focusManager.js +265 -0
  123. package/focusManager.mjs +261 -0
  124. package/helpers/a11y.js +79 -0
  125. package/helpers/a11y.mjs +38 -0
  126. package/helpers/dom/element.js +188 -9
  127. package/helpers/dom/element.mjs +182 -9
  128. package/helpers/mixed.js +1 -1
  129. package/helpers/mixed.mjs +1 -1
  130. package/helpers/number.d.ts +1 -0
  131. package/helpers/number.js +18 -0
  132. package/helpers/number.mjs +17 -0
  133. package/i18n/constants.js +7 -1
  134. package/i18n/constants.mjs +4 -1
  135. package/i18n/languages/en-US.js +3 -1
  136. package/i18n/languages/en-US.mjs +3 -1
  137. package/i18n/languages/pl-PL.js +3 -1
  138. package/i18n/languages/pl-PL.mjs +3 -1
  139. package/languages/all.js +6 -2
  140. package/languages/en-US.js +3 -1
  141. package/languages/en-US.mjs +3 -1
  142. package/languages/index.js +6 -2
  143. package/languages/pl-PL.js +3 -1
  144. package/languages/pl-PL.mjs +3 -1
  145. package/package.json +21 -1
  146. package/pluginHooks.d.ts +12 -1
  147. package/pluginHooks.js +152 -1
  148. package/pluginHooks.mjs +152 -1
  149. package/plugins/collapsibleColumns/collapsibleColumns.js +74 -4
  150. package/plugins/collapsibleColumns/collapsibleColumns.mjs +75 -5
  151. package/plugins/columnSorting/columnSorting.js +43 -0
  152. package/plugins/columnSorting/columnSorting.mjs +44 -3
  153. package/plugins/columnSorting/index.js +3 -1
  154. package/plugins/columnSorting/index.mjs +1 -1
  155. package/plugins/comments/commentEditor.js +1 -0
  156. package/plugins/comments/commentEditor.mjs +1 -0
  157. package/plugins/comments/comments.js +252 -189
  158. package/plugins/comments/comments.mjs +251 -190
  159. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  160. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  161. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  162. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  163. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  164. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  165. package/plugins/contextMenu/commandExecutor.js +2 -3
  166. package/plugins/contextMenu/commandExecutor.mjs +2 -3
  167. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  168. package/plugins/contextMenu/contextMenu.js +75 -36
  169. package/plugins/contextMenu/contextMenu.mjs +74 -35
  170. package/plugins/contextMenu/itemsFactory.js +2 -3
  171. package/plugins/contextMenu/itemsFactory.mjs +3 -4
  172. package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
  173. package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
  174. package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
  175. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
  176. package/plugins/contextMenu/menu/index.js +9 -0
  177. package/plugins/contextMenu/menu/index.mjs +1 -0
  178. package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
  179. package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
  180. package/plugins/contextMenu/menu/menuItemRenderer.js +58 -0
  181. package/plugins/contextMenu/menu/menuItemRenderer.mjs +54 -0
  182. package/plugins/contextMenu/menu/navigator.js +27 -0
  183. package/plugins/contextMenu/menu/navigator.mjs +23 -0
  184. package/plugins/contextMenu/menu/positioner.js +213 -0
  185. package/plugins/contextMenu/menu/positioner.mjs +209 -0
  186. package/plugins/contextMenu/menu/shortcuts.js +114 -0
  187. package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
  188. package/plugins/contextMenu/menu/utils.js +177 -0
  189. package/plugins/contextMenu/menu/utils.mjs +163 -0
  190. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  191. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  192. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  193. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  194. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  195. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  196. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  197. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  198. package/plugins/contextMenu/{predefinedItems.js → predefinedItems/index.js} +14 -14
  199. package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
  200. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  201. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  202. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  203. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  204. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  205. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  206. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  207. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  208. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  209. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  210. package/plugins/contextMenu/utils.js +35 -151
  211. package/plugins/contextMenu/utils.mjs +35 -144
  212. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  213. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  214. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  215. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  216. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  217. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  218. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  219. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  220. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  221. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  222. package/plugins/copyPaste/copyPaste.js +127 -78
  223. package/plugins/copyPaste/copyPaste.mjs +128 -79
  224. package/plugins/customBorders/customBorders.js +23 -20
  225. package/plugins/customBorders/customBorders.mjs +24 -21
  226. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  227. package/plugins/dropdownMenu/dropdownMenu.js +127 -40
  228. package/plugins/dropdownMenu/dropdownMenu.mjs +126 -39
  229. package/plugins/filters/component/_base.js +23 -8
  230. package/plugins/filters/component/_base.mjs +23 -8
  231. package/plugins/filters/component/actionBar.js +29 -27
  232. package/plugins/filters/component/actionBar.mjs +26 -23
  233. package/plugins/filters/component/condition.js +46 -59
  234. package/plugins/filters/component/condition.mjs +40 -52
  235. package/plugins/filters/component/operators.js +21 -22
  236. package/plugins/filters/component/operators.mjs +18 -18
  237. package/plugins/filters/component/value.js +35 -26
  238. package/plugins/filters/component/value.mjs +32 -22
  239. package/plugins/filters/constants.mjs +1 -1
  240. package/plugins/filters/filters.js +106 -62
  241. package/plugins/filters/filters.mjs +99 -55
  242. package/plugins/filters/menu/focusController.js +123 -0
  243. package/plugins/filters/menu/focusController.mjs +119 -0
  244. package/plugins/filters/menu/focusNavigator.js +30 -0
  245. package/plugins/filters/menu/focusNavigator.mjs +26 -0
  246. package/plugins/filters/ui/_base.js +35 -13
  247. package/plugins/filters/ui/_base.mjs +35 -13
  248. package/plugins/filters/ui/input.js +43 -32
  249. package/plugins/filters/ui/input.mjs +42 -30
  250. package/plugins/filters/ui/link.js +44 -12
  251. package/plugins/filters/ui/link.mjs +44 -11
  252. package/plugins/filters/ui/multipleSelect.js +234 -129
  253. package/plugins/filters/ui/multipleSelect.mjs +232 -127
  254. package/plugins/filters/ui/radioInput.js +42 -18
  255. package/plugins/filters/ui/radioInput.mjs +42 -17
  256. package/plugins/filters/ui/select.js +144 -75
  257. package/plugins/filters/ui/select.mjs +142 -72
  258. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
  259. package/plugins/hiddenRows/hiddenRows.mjs +1 -1
  260. package/plugins/manualColumnMove/manualColumnMove.js +3 -1
  261. package/plugins/manualColumnMove/manualColumnMove.mjs +3 -1
  262. package/plugins/mergeCells/mergeCells.js +5 -16
  263. package/plugins/mergeCells/mergeCells.mjs +5 -16
  264. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  265. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  266. package/plugins/nestedHeaders/nestedHeaders.js +240 -10
  267. package/plugins/nestedHeaders/nestedHeaders.mjs +241 -11
  268. package/plugins/nestedHeaders/stateManager/index.js +102 -3
  269. package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
  270. package/plugins/nestedRows/nestedRows.js +41 -0
  271. package/plugins/nestedRows/nestedRows.mjs +41 -0
  272. package/plugins/nestedRows/ui/headers.js +11 -0
  273. package/plugins/nestedRows/ui/headers.mjs +12 -1
  274. package/renderers/autocompleteRenderer/autocompleteRenderer.js +8 -0
  275. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
  276. package/renderers/baseRenderer/baseRenderer.js +17 -0
  277. package/renderers/baseRenderer/baseRenderer.mjs +18 -1
  278. package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
  279. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  280. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  281. package/renderers/dateRenderer/dateRenderer.js +29 -0
  282. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  283. package/renderers/dateRenderer/index.d.ts +1 -0
  284. package/renderers/dateRenderer/index.js +6 -0
  285. package/renderers/dateRenderer/index.mjs +1 -0
  286. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  287. package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
  288. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  289. package/renderers/handsontableRenderer/index.d.ts +1 -0
  290. package/renderers/handsontableRenderer/index.js +6 -0
  291. package/renderers/handsontableRenderer/index.mjs +1 -0
  292. package/renderers/index.d.ts +9 -0
  293. package/renderers/selectRenderer/index.d.ts +1 -0
  294. package/renderers/selectRenderer/index.js +6 -0
  295. package/renderers/selectRenderer/index.mjs +1 -0
  296. package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
  297. package/renderers/selectRenderer/selectRenderer.js +27 -0
  298. package/renderers/selectRenderer/selectRenderer.mjs +22 -0
  299. package/selection/highlight/highlight.js +256 -71
  300. package/selection/highlight/highlight.mjs +250 -71
  301. package/selection/highlight/types/activeHeader.js +10 -8
  302. package/selection/highlight/types/activeHeader.mjs +10 -8
  303. package/selection/highlight/types/area.js +6 -18
  304. package/selection/highlight/types/area.mjs +6 -18
  305. package/selection/highlight/types/areaLayered.js +31 -0
  306. package/selection/highlight/types/areaLayered.mjs +26 -0
  307. package/selection/highlight/types/column.js +27 -0
  308. package/selection/highlight/types/column.mjs +22 -0
  309. package/selection/highlight/types/customSelection.js +7 -9
  310. package/selection/highlight/types/customSelection.mjs +7 -9
  311. package/selection/highlight/types/fill.js +5 -7
  312. package/selection/highlight/types/fill.mjs +5 -7
  313. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  314. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  315. package/selection/highlight/types/header.js +9 -18
  316. package/selection/highlight/types/header.mjs +9 -18
  317. package/selection/highlight/types/row.js +27 -0
  318. package/selection/highlight/types/row.mjs +22 -0
  319. package/selection/highlight/visualSelection.js +31 -27
  320. package/selection/highlight/visualSelection.mjs +31 -27
  321. package/selection/index.js +4 -7
  322. package/selection/index.mjs +2 -3
  323. package/selection/mouseEventHandler.js +7 -1
  324. package/selection/mouseEventHandler.mjs +7 -1
  325. package/selection/range.js +8 -8
  326. package/selection/range.mjs +8 -8
  327. package/selection/selection.js +321 -152
  328. package/selection/selection.mjs +318 -151
  329. package/selection/transformation.js +232 -90
  330. package/selection/transformation.mjs +232 -90
  331. package/selection/utils.js +15 -21
  332. package/selection/utils.mjs +16 -21
  333. package/settings.d.ts +4 -0
  334. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  335. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  336. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  337. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  338. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  339. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  340. package/shortcutContexts/commands/editor/index.js +16 -0
  341. package/shortcutContexts/commands/editor/index.mjs +12 -0
  342. package/shortcutContexts/commands/editor/open.js +27 -0
  343. package/shortcutContexts/commands/editor/open.mjs +23 -0
  344. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  345. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  346. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  347. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  348. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +25 -0
  349. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
  350. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  351. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  352. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  353. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  354. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  355. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  356. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  357. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  358. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  359. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  360. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  361. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  362. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  363. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  364. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  365. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  366. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  367. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  368. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  369. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  370. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  371. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  372. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  373. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  374. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +25 -0
  375. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
  376. package/shortcutContexts/commands/index.js +35 -0
  377. package/shortcutContexts/commands/index.mjs +31 -0
  378. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  379. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  380. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +33 -0
  381. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
  382. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  383. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  384. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  385. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  386. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  387. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  388. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  389. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  390. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  391. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  392. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  393. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  394. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  395. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  396. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  397. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  398. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  399. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  400. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  401. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  402. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  403. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  404. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  405. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  406. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  407. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  408. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  409. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  410. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +33 -0
  411. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
  412. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  413. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  414. package/shortcutContexts/commands/scrollToFocusedCell.js +35 -0
  415. package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
  416. package/shortcutContexts/commands/selectAll.js +12 -0
  417. package/shortcutContexts/commands/selectAll.mjs +8 -0
  418. package/shortcutContexts/constants.js +13 -0
  419. package/shortcutContexts/constants.mjs +8 -0
  420. package/shortcutContexts/editor.js +25 -0
  421. package/shortcutContexts/editor.mjs +21 -0
  422. package/shortcutContexts/grid.js +163 -0
  423. package/shortcutContexts/grid.mjs +159 -0
  424. package/shortcutContexts/index.js +24 -0
  425. package/shortcutContexts/index.mjs +11 -0
  426. package/shortcuts/context.js +23 -4
  427. package/shortcuts/context.mjs +23 -5
  428. package/shortcuts/manager.js +25 -7
  429. package/shortcuts/manager.mjs +26 -7
  430. package/shortcuts/recorder.js +3 -3
  431. package/shortcuts/recorder.mjs +3 -3
  432. package/shortcuts/utils.js +19 -5
  433. package/shortcuts/utils.mjs +18 -4
  434. package/tableView.js +111 -13
  435. package/tableView.mjs +112 -14
  436. package/utils/paginator.js +151 -0
  437. package/utils/paginator.mjs +147 -0
  438. package/3rdparty/walkontable/src/selection.js +0 -295
  439. package/3rdparty/walkontable/src/selection.mjs +0 -290
  440. package/plugins/contextMenu/predefinedItems.mjs +0 -68
  441. package/plugins/copyPaste/focusableElement.js +0 -186
  442. package/plugins/copyPaste/focusableElement.mjs +0 -180
  443. package/selection/highlight/constants.js +0 -15
  444. package/selection/highlight/constants.mjs +0 -6
  445. package/selection/highlight/types/index.js +0 -35
  446. package/selection/highlight/types/index.mjs +0 -31
@@ -1,32 +1,47 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/es.error.cause.js");
3
4
  exports.__esModule = true;
5
+ require("core-js/modules/es.array.unscopables.flat.js");
4
6
  require("core-js/modules/es.array.push.js");
5
7
  var _base = require("../base");
6
8
  var _array = require("../../helpers/array");
7
9
  var _templateLiteralTag = require("../../helpers/templateLiteralTag");
8
10
  var _console = require("../../helpers/console");
9
11
  var _number = require("../../helpers/number");
10
- var _eventManager = _interopRequireDefault(require("../../eventManager"));
11
12
  var _element = require("../../helpers/dom/element");
13
+ var _unicode = require("../../helpers/unicode");
12
14
  var _predefinedItems = require("../contextMenu/predefinedItems");
13
15
  var constants = _interopRequireWildcard(require("../../i18n/constants"));
14
- var _condition = _interopRequireDefault(require("./component/condition"));
15
- var _operators = _interopRequireDefault(require("./component/operators"));
16
- var _value = _interopRequireDefault(require("./component/value"));
17
- var _actionBar = _interopRequireDefault(require("./component/actionBar"));
16
+ var _condition = require("./component/condition");
17
+ var _operators = require("./component/operators");
18
+ var _value = require("./component/value");
19
+ var _actionBar = require("./component/actionBar");
18
20
  var _conditionCollection = _interopRequireDefault(require("./conditionCollection"));
19
21
  var _dataFilter = _interopRequireDefault(require("./dataFilter"));
20
22
  var _conditionUpdateObserver = _interopRequireDefault(require("./conditionUpdateObserver"));
21
23
  var _utils = require("./utils");
24
+ var _focusController = require("./menu/focusController");
22
25
  var _constants2 = require("./constants");
23
26
  var _translations = require("../../translations");
27
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
28
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
29
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
31
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
32
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
33
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
34
+ 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); }
35
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
36
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
37
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
38
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
39
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
27
40
  const PLUGIN_KEY = 'filters';
28
41
  exports.PLUGIN_KEY = PLUGIN_KEY;
29
42
  const PLUGIN_PRIORITY = 250;
43
+ exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
44
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
30
45
 
31
46
  /**
32
47
  * @plugin Filters
@@ -63,7 +78,7 @@ const PLUGIN_PRIORITY = 250;
63
78
  * ```
64
79
  * :::
65
80
  */
66
- exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
81
+ var _menuFocusNavigator = /*#__PURE__*/new WeakMap();
67
82
  class Filters extends _base.BasePlugin {
68
83
  static get PLUGIN_KEY() {
69
84
  return PLUGIN_KEY;
@@ -74,52 +89,55 @@ class Filters extends _base.BasePlugin {
74
89
  static get PLUGIN_DEPS() {
75
90
  return ['plugin:DropdownMenu', 'plugin:HiddenRows', 'cell-type:checkbox'];
76
91
  }
92
+
93
+ /**
94
+ * Instance of {@link DropdownMenu}.
95
+ *
96
+ * @private
97
+ * @type {DropdownMenu}
98
+ */
99
+
77
100
  constructor(hotInstance) {
78
101
  super(hotInstance);
79
- /**
80
- * Instance of {@link EventManager}.
81
- *
82
- * @private
83
- * @type {EventManager}
84
- */
85
- this.eventManager = new _eventManager.default(this);
86
- /**
87
- * Instance of {@link DropdownMenu}.
88
- *
89
- * @private
90
- * @type {DropdownMenu}
91
- */
92
- this.dropdownMenuPlugin = null;
102
+ // One listener for the enable/disable functionality
103
+ _defineProperty(this, "dropdownMenuPlugin", null);
93
104
  /**
94
105
  * Instance of {@link ConditionCollection}.
95
106
  *
96
107
  * @private
97
108
  * @type {ConditionCollection}
98
109
  */
99
- this.conditionCollection = null;
110
+ _defineProperty(this, "conditionCollection", null);
100
111
  /**
101
112
  * Instance of {@link ConditionUpdateObserver}.
102
113
  *
103
114
  * @private
104
115
  * @type {ConditionUpdateObserver}
105
116
  */
106
- this.conditionUpdateObserver = null;
117
+ _defineProperty(this, "conditionUpdateObserver", null);
107
118
  /**
108
119
  * Map, where key is component identifier and value represent `BaseComponent` element or it derivatives.
109
120
  *
110
121
  * @private
111
122
  * @type {Map}
112
123
  */
113
- this.components = new Map([['filter_by_condition', null], ['filter_operators', null], ['filter_by_condition2', null], ['filter_by_value', null], ['filter_action_bar', null]]);
124
+ _defineProperty(this, "components", new Map([['filter_by_condition', null], ['filter_operators', null], ['filter_by_condition2', null], ['filter_by_value', null], ['filter_action_bar', null]]));
114
125
  /**
115
126
  * Map of skipped rows by plugin.
116
127
  *
117
128
  * @private
118
129
  * @type {null|TrimmingMap}
119
130
  */
120
- this.filtersRowsMap = null;
121
-
122
- // One listener for the enable/disable functionality
131
+ _defineProperty(this, "filtersRowsMap", null);
132
+ /**
133
+ * Menu focus navigator allows switching the focus position through Tab and Shift Tab keys.
134
+ *
135
+ * @type {MenuFocusNavigator|undefined}
136
+ */
137
+ _classPrivateFieldInitSpec(this, _menuFocusNavigator, {
138
+ writable: true,
139
+ value: void 0
140
+ });
123
141
  this.hot.addHook('afterGetColHeader', (col, TH) => this.onAfterGetColHeader(col, TH));
124
142
  }
125
143
 
@@ -154,7 +172,7 @@ class Filters extends _base.BasePlugin {
154
172
  const filterByConditionLabel = () => `${this.hot.getTranslatedPhrase(constants.FILTERS_DIVS_FILTER_BY_CONDITION)}:`;
155
173
  const filterValueLabel = () => `${this.hot.getTranslatedPhrase(constants.FILTERS_DIVS_FILTER_BY_VALUE)}:`;
156
174
  if (!this.components.get('filter_by_condition')) {
157
- const conditionComponent = new _condition.default(this.hot, {
175
+ const conditionComponent = new _condition.ConditionComponent(this.hot, {
158
176
  id: 'filter_by_condition',
159
177
  name: filterByConditionLabel,
160
178
  addSeparator: false,
@@ -164,13 +182,13 @@ class Filters extends _base.BasePlugin {
164
182
  this.components.set('filter_by_condition', addConfirmationHooks(conditionComponent));
165
183
  }
166
184
  if (!this.components.get('filter_operators')) {
167
- this.components.set('filter_operators', new _operators.default(this.hot, {
185
+ this.components.set('filter_operators', new _operators.OperatorsComponent(this.hot, {
168
186
  id: 'filter_operators',
169
187
  name: 'Operators'
170
188
  }));
171
189
  }
172
190
  if (!this.components.get('filter_by_condition2')) {
173
- const conditionComponent = new _condition.default(this.hot, {
191
+ const conditionComponent = new _condition.ConditionComponent(this.hot, {
174
192
  id: 'filter_by_condition2',
175
193
  name: '',
176
194
  addSeparator: true,
@@ -180,13 +198,13 @@ class Filters extends _base.BasePlugin {
180
198
  this.components.set('filter_by_condition2', addConfirmationHooks(conditionComponent));
181
199
  }
182
200
  if (!this.components.get('filter_by_value')) {
183
- this.components.set('filter_by_value', addConfirmationHooks(new _value.default(this.hot, {
201
+ this.components.set('filter_by_value', addConfirmationHooks(new _value.ValueComponent(this.hot, {
184
202
  id: 'filter_by_value',
185
203
  name: filterValueLabel
186
204
  })));
187
205
  }
188
206
  if (!this.components.get('filter_action_bar')) {
189
- this.components.set('filter_action_bar', addConfirmationHooks(new _actionBar.default(this.hot, {
207
+ this.components.set('filter_action_bar', addConfirmationHooks(new _actionBar.ActionBarComponent(this.hot, {
190
208
  id: 'filter_action_bar',
191
209
  name: 'Action bar'
192
210
  })));
@@ -199,7 +217,6 @@ class Filters extends _base.BasePlugin {
199
217
  this.conditionUpdateObserver.addLocalHook('update', conditionState => this.updateComponents(conditionState));
200
218
  }
201
219
  this.components.forEach(component => component.show());
202
- this.addHook('beforeDropdownMenuSetItems', items => this.onBeforeDropdownMenuSetItems(items));
203
220
  this.addHook('afterDropdownMenuDefaultOptions', defaultOptions => this.onAfterDropdownMenuDefaultOptions(defaultOptions));
204
221
  this.addHook('afterDropdownMenuShow', () => this.onAfterDropdownMenuShow());
205
222
  this.addHook('afterDropdownMenuHide', () => this.onAfterDropdownMenuHide());
@@ -210,6 +227,33 @@ class Filters extends _base.BasePlugin {
210
227
  this.dropdownMenuPlugin.disablePlugin();
211
228
  this.dropdownMenuPlugin.enablePlugin();
212
229
  }
230
+ if (!_classPrivateFieldGet(this, _menuFocusNavigator) && this.dropdownMenuPlugin.enabled) {
231
+ const mainMenu = this.dropdownMenuPlugin.menu;
232
+ const focusableItems = [
233
+ // A fake menu item that once focused allows escaping from the focus navigation (using Tab keys)
234
+ // to the menu navigation using arrow keys.
235
+ {
236
+ focus: () => mainMenu.focus()
237
+ }, ...Array.from(this.components).map(_ref => {
238
+ let [, component] = _ref;
239
+ return component.getElements();
240
+ }).flat()];
241
+ _classPrivateFieldSet(this, _menuFocusNavigator, (0, _focusController.createMenuFocusController)(mainMenu, focusableItems));
242
+ const forwardToFocusNavigation = event => {
243
+ _classPrivateFieldGet(this, _menuFocusNavigator).listen();
244
+ event.preventDefault();
245
+ if ((0, _unicode.isKey)(event.keyCode, 'TAB')) {
246
+ if (event.shiftKey) {
247
+ _classPrivateFieldGet(this, _menuFocusNavigator).toPreviousItem();
248
+ } else {
249
+ _classPrivateFieldGet(this, _menuFocusNavigator).toNextItem();
250
+ }
251
+ }
252
+ };
253
+ this.components.get('filter_by_value').addLocalHook('listTabKeydown', forwardToFocusNavigation);
254
+ this.components.get('filter_by_condition').addLocalHook('selectTabKeydown', forwardToFocusNavigation);
255
+ }
256
+ this.registerShortcuts();
213
257
  super.enablePlugin();
214
258
  }
215
259
 
@@ -230,9 +274,36 @@ class Filters extends _base.BasePlugin {
230
274
  this.conditionCollection = null;
231
275
  this.hot.rowIndexMapper.unregisterMap(this.pluginName);
232
276
  }
277
+ this.unregisterShortcuts();
233
278
  super.disablePlugin();
234
279
  }
235
280
 
281
+ /**
282
+ * Register shortcuts responsible for clearing the filters.
283
+ *
284
+ * @private
285
+ */
286
+ registerShortcuts() {
287
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
288
+ keys: [['Alt', 'A']],
289
+ stopPropagation: true,
290
+ callback: () => {
291
+ this.clearConditions();
292
+ this.filter();
293
+ },
294
+ group: SHORTCUTS_GROUP
295
+ });
296
+ }
297
+
298
+ /**
299
+ * Unregister shortcuts responsible for clearing the filters.
300
+ *
301
+ * @private
302
+ */
303
+ unregisterShortcuts() {
304
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
305
+ }
306
+
236
307
  /* eslint-disable jsdoc/require-description-complete-sentence */
237
308
  /**
238
309
  * @memberof Filters#
@@ -422,7 +493,6 @@ class Filters extends _base.BasePlugin {
422
493
  this.hot.runHooks('afterFilter', conditions);
423
494
  this.hot.view.adjustElementsSize(true);
424
495
  this.hot.render();
425
- this.clearColumnSelection();
426
496
  }
427
497
 
428
498
  /**
@@ -444,18 +514,6 @@ class Filters extends _base.BasePlugin {
444
514
  };
445
515
  }
446
516
 
447
- /**
448
- * Clears column selection.
449
- *
450
- * @private
451
- */
452
- clearColumnSelection() {
453
- const selectedColumn = this.getSelectedColumn();
454
- if (selectedColumn !== null) {
455
- this.hot.selectCell(0, selectedColumn.visualIndex);
456
- }
457
- }
458
-
459
517
  /**
460
518
  * Returns handsontable source data with cell meta based on current selection.
461
519
  *
@@ -562,21 +620,6 @@ class Filters extends _base.BasePlugin {
562
620
  this.components.get('filter_by_condition2').getSelectElement().closeOptions();
563
621
  }
564
622
 
565
- /**
566
- * Before dropdown menu set menu items listener.
567
- *
568
- * @private
569
- */
570
- onBeforeDropdownMenuSetItems() {
571
- if (this.dropdownMenuPlugin) {
572
- this.dropdownMenuPlugin.menu.addLocalHook('afterOpen', () => {
573
- this.dropdownMenuPlugin.menu.hotMenu.updateSettings({
574
- hiddenRows: true
575
- });
576
- });
577
- }
578
- }
579
-
580
623
  /**
581
624
  * After dropdown menu default options listener.
582
625
  *
@@ -655,6 +698,7 @@ class Filters extends _base.BasePlugin {
655
698
  this.components.forEach(component => component.saveState(physicalIndex));
656
699
  this.filtersRowsMap.clear();
657
700
  this.filter();
701
+ this.hot.selectCell(0, selectedColumn.visualIndex);
658
702
  }
659
703
  (_this$dropdownMenuPlu3 = this.dropdownMenuPlugin) === null || _this$dropdownMenuPlu3 === void 0 || _this$dropdownMenuPlu3.close();
660
704
  }
@@ -668,7 +712,7 @@ class Filters extends _base.BasePlugin {
668
712
  */
669
713
  onComponentChange(component, command) {
670
714
  this.updateDependentComponentsVisibility();
671
- if (component.constructor === _condition.default && !command.inputsCount) {
715
+ if (component.constructor === _condition.ConditionComponent && !command.inputsCount) {
672
716
  this.setListeningDropdownMenu();
673
717
  }
674
718
  }
@@ -1,25 +1,39 @@
1
+ import "core-js/modules/es.array.unscopables.flat.js";
1
2
  import "core-js/modules/es.array.push.js";
3
+ import "core-js/modules/es.error.cause.js";
4
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
5
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
6
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
8
+ 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); }
9
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
10
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
11
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
12
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
13
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
2
14
  import { BasePlugin } from "../base/index.mjs";
3
15
  import { arrayEach, arrayMap } from "../../helpers/array.mjs";
4
16
  import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
5
17
  import { warn } from "../../helpers/console.mjs";
6
18
  import { rangeEach } from "../../helpers/number.mjs";
7
- import EventManager from "../../eventManager.mjs";
8
19
  import { addClass, removeClass } from "../../helpers/dom/element.mjs";
9
- import { SEPARATOR } from "../contextMenu/predefinedItems.mjs";
20
+ import { isKey } from "../../helpers/unicode.mjs";
21
+ import { SEPARATOR } from "../contextMenu/predefinedItems/index.mjs";
10
22
  import * as constants from "../../i18n/constants.mjs";
11
- import ConditionComponent from "./component/condition.mjs";
12
- import OperatorsComponent from "./component/operators.mjs";
13
- import ValueComponent from "./component/value.mjs";
14
- import ActionBarComponent from "./component/actionBar.mjs";
23
+ import { ConditionComponent } from "./component/condition.mjs";
24
+ import { OperatorsComponent } from "./component/operators.mjs";
25
+ import { ValueComponent } from "./component/value.mjs";
26
+ import { ActionBarComponent } from "./component/actionBar.mjs";
15
27
  import ConditionCollection from "./conditionCollection.mjs";
16
28
  import DataFilter from "./dataFilter.mjs";
17
29
  import ConditionUpdateObserver from "./conditionUpdateObserver.mjs";
18
30
  import { createArrayAssertion, toEmptyString, unifyColumnValues } from "./utils.mjs";
31
+ import { createMenuFocusController } from "./menu/focusController.mjs";
19
32
  import { CONDITION_NONE, CONDITION_BY_VALUE, OPERATION_AND, OPERATION_OR, OPERATION_OR_THEN_VARIABLE } from "./constants.mjs";
20
33
  import { TrimmingMap } from "../../translations/index.mjs";
21
34
  export const PLUGIN_KEY = 'filters';
22
35
  export const PLUGIN_PRIORITY = 250;
36
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
23
37
 
24
38
  /**
25
39
  * @plugin Filters
@@ -56,6 +70,7 @@ export const PLUGIN_PRIORITY = 250;
56
70
  * ```
57
71
  * :::
58
72
  */
73
+ var _menuFocusNavigator = /*#__PURE__*/new WeakMap();
59
74
  export class Filters extends BasePlugin {
60
75
  static get PLUGIN_KEY() {
61
76
  return PLUGIN_KEY;
@@ -66,52 +81,55 @@ export class Filters extends BasePlugin {
66
81
  static get PLUGIN_DEPS() {
67
82
  return ['plugin:DropdownMenu', 'plugin:HiddenRows', 'cell-type:checkbox'];
68
83
  }
84
+
85
+ /**
86
+ * Instance of {@link DropdownMenu}.
87
+ *
88
+ * @private
89
+ * @type {DropdownMenu}
90
+ */
91
+
69
92
  constructor(hotInstance) {
70
93
  super(hotInstance);
71
- /**
72
- * Instance of {@link EventManager}.
73
- *
74
- * @private
75
- * @type {EventManager}
76
- */
77
- this.eventManager = new EventManager(this);
78
- /**
79
- * Instance of {@link DropdownMenu}.
80
- *
81
- * @private
82
- * @type {DropdownMenu}
83
- */
84
- this.dropdownMenuPlugin = null;
94
+ // One listener for the enable/disable functionality
95
+ _defineProperty(this, "dropdownMenuPlugin", null);
85
96
  /**
86
97
  * Instance of {@link ConditionCollection}.
87
98
  *
88
99
  * @private
89
100
  * @type {ConditionCollection}
90
101
  */
91
- this.conditionCollection = null;
102
+ _defineProperty(this, "conditionCollection", null);
92
103
  /**
93
104
  * Instance of {@link ConditionUpdateObserver}.
94
105
  *
95
106
  * @private
96
107
  * @type {ConditionUpdateObserver}
97
108
  */
98
- this.conditionUpdateObserver = null;
109
+ _defineProperty(this, "conditionUpdateObserver", null);
99
110
  /**
100
111
  * Map, where key is component identifier and value represent `BaseComponent` element or it derivatives.
101
112
  *
102
113
  * @private
103
114
  * @type {Map}
104
115
  */
105
- this.components = new Map([['filter_by_condition', null], ['filter_operators', null], ['filter_by_condition2', null], ['filter_by_value', null], ['filter_action_bar', null]]);
116
+ _defineProperty(this, "components", new Map([['filter_by_condition', null], ['filter_operators', null], ['filter_by_condition2', null], ['filter_by_value', null], ['filter_action_bar', null]]));
106
117
  /**
107
118
  * Map of skipped rows by plugin.
108
119
  *
109
120
  * @private
110
121
  * @type {null|TrimmingMap}
111
122
  */
112
- this.filtersRowsMap = null;
113
-
114
- // One listener for the enable/disable functionality
123
+ _defineProperty(this, "filtersRowsMap", null);
124
+ /**
125
+ * Menu focus navigator allows switching the focus position through Tab and Shift Tab keys.
126
+ *
127
+ * @type {MenuFocusNavigator|undefined}
128
+ */
129
+ _classPrivateFieldInitSpec(this, _menuFocusNavigator, {
130
+ writable: true,
131
+ value: void 0
132
+ });
115
133
  this.hot.addHook('afterGetColHeader', (col, TH) => this.onAfterGetColHeader(col, TH));
116
134
  }
117
135
 
@@ -191,7 +209,6 @@ export class Filters extends BasePlugin {
191
209
  this.conditionUpdateObserver.addLocalHook('update', conditionState => this.updateComponents(conditionState));
192
210
  }
193
211
  this.components.forEach(component => component.show());
194
- this.addHook('beforeDropdownMenuSetItems', items => this.onBeforeDropdownMenuSetItems(items));
195
212
  this.addHook('afterDropdownMenuDefaultOptions', defaultOptions => this.onAfterDropdownMenuDefaultOptions(defaultOptions));
196
213
  this.addHook('afterDropdownMenuShow', () => this.onAfterDropdownMenuShow());
197
214
  this.addHook('afterDropdownMenuHide', () => this.onAfterDropdownMenuHide());
@@ -202,6 +219,33 @@ export class Filters extends BasePlugin {
202
219
  this.dropdownMenuPlugin.disablePlugin();
203
220
  this.dropdownMenuPlugin.enablePlugin();
204
221
  }
222
+ if (!_classPrivateFieldGet(this, _menuFocusNavigator) && this.dropdownMenuPlugin.enabled) {
223
+ const mainMenu = this.dropdownMenuPlugin.menu;
224
+ const focusableItems = [
225
+ // A fake menu item that once focused allows escaping from the focus navigation (using Tab keys)
226
+ // to the menu navigation using arrow keys.
227
+ {
228
+ focus: () => mainMenu.focus()
229
+ }, ...Array.from(this.components).map(_ref => {
230
+ let [, component] = _ref;
231
+ return component.getElements();
232
+ }).flat()];
233
+ _classPrivateFieldSet(this, _menuFocusNavigator, createMenuFocusController(mainMenu, focusableItems));
234
+ const forwardToFocusNavigation = event => {
235
+ _classPrivateFieldGet(this, _menuFocusNavigator).listen();
236
+ event.preventDefault();
237
+ if (isKey(event.keyCode, 'TAB')) {
238
+ if (event.shiftKey) {
239
+ _classPrivateFieldGet(this, _menuFocusNavigator).toPreviousItem();
240
+ } else {
241
+ _classPrivateFieldGet(this, _menuFocusNavigator).toNextItem();
242
+ }
243
+ }
244
+ };
245
+ this.components.get('filter_by_value').addLocalHook('listTabKeydown', forwardToFocusNavigation);
246
+ this.components.get('filter_by_condition').addLocalHook('selectTabKeydown', forwardToFocusNavigation);
247
+ }
248
+ this.registerShortcuts();
205
249
  super.enablePlugin();
206
250
  }
207
251
 
@@ -222,9 +266,36 @@ export class Filters extends BasePlugin {
222
266
  this.conditionCollection = null;
223
267
  this.hot.rowIndexMapper.unregisterMap(this.pluginName);
224
268
  }
269
+ this.unregisterShortcuts();
225
270
  super.disablePlugin();
226
271
  }
227
272
 
273
+ /**
274
+ * Register shortcuts responsible for clearing the filters.
275
+ *
276
+ * @private
277
+ */
278
+ registerShortcuts() {
279
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
280
+ keys: [['Alt', 'A']],
281
+ stopPropagation: true,
282
+ callback: () => {
283
+ this.clearConditions();
284
+ this.filter();
285
+ },
286
+ group: SHORTCUTS_GROUP
287
+ });
288
+ }
289
+
290
+ /**
291
+ * Unregister shortcuts responsible for clearing the filters.
292
+ *
293
+ * @private
294
+ */
295
+ unregisterShortcuts() {
296
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
297
+ }
298
+
228
299
  /* eslint-disable jsdoc/require-description-complete-sentence */
229
300
  /**
230
301
  * @memberof Filters#
@@ -414,7 +485,6 @@ export class Filters extends BasePlugin {
414
485
  this.hot.runHooks('afterFilter', conditions);
415
486
  this.hot.view.adjustElementsSize(true);
416
487
  this.hot.render();
417
- this.clearColumnSelection();
418
488
  }
419
489
 
420
490
  /**
@@ -436,18 +506,6 @@ export class Filters extends BasePlugin {
436
506
  };
437
507
  }
438
508
 
439
- /**
440
- * Clears column selection.
441
- *
442
- * @private
443
- */
444
- clearColumnSelection() {
445
- const selectedColumn = this.getSelectedColumn();
446
- if (selectedColumn !== null) {
447
- this.hot.selectCell(0, selectedColumn.visualIndex);
448
- }
449
- }
450
-
451
509
  /**
452
510
  * Returns handsontable source data with cell meta based on current selection.
453
511
  *
@@ -554,21 +612,6 @@ export class Filters extends BasePlugin {
554
612
  this.components.get('filter_by_condition2').getSelectElement().closeOptions();
555
613
  }
556
614
 
557
- /**
558
- * Before dropdown menu set menu items listener.
559
- *
560
- * @private
561
- */
562
- onBeforeDropdownMenuSetItems() {
563
- if (this.dropdownMenuPlugin) {
564
- this.dropdownMenuPlugin.menu.addLocalHook('afterOpen', () => {
565
- this.dropdownMenuPlugin.menu.hotMenu.updateSettings({
566
- hiddenRows: true
567
- });
568
- });
569
- }
570
- }
571
-
572
615
  /**
573
616
  * After dropdown menu default options listener.
574
617
  *
@@ -647,6 +690,7 @@ export class Filters extends BasePlugin {
647
690
  this.components.forEach(component => component.saveState(physicalIndex));
648
691
  this.filtersRowsMap.clear();
649
692
  this.filter();
693
+ this.hot.selectCell(0, selectedColumn.visualIndex);
650
694
  }
651
695
  (_this$dropdownMenuPlu3 = this.dropdownMenuPlugin) === null || _this$dropdownMenuPlu3 === void 0 || _this$dropdownMenuPlu3.close();
652
696
  }