handsontable 13.1.0 → 14.0.0-next-e8f87aa-20231030

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 +23133 -15992
  127. package/dist/handsontable.full.min.css +8 -8
  128. package/dist/handsontable.full.min.js +170 -152
  129. package/dist/handsontable.js +21856 -15085
  130. package/dist/handsontable.min.css +7 -7
  131. package/dist/handsontable.min.js +30 -22
  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 +118 -67
  409. package/plugins/filters/filters.mjs +109 -56
  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
@@ -1,32 +1,45 @@
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");
24
- 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
- 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
27
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
- const PLUGIN_KEY = 'filters';
28
- exports.PLUGIN_KEY = PLUGIN_KEY;
29
- const PLUGIN_PRIORITY = 250;
28
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
29
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
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; }
40
+ const PLUGIN_KEY = exports.PLUGIN_KEY = 'filters';
41
+ const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 250;
42
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
30
43
 
31
44
  /**
32
45
  * @plugin Filters
@@ -63,7 +76,7 @@ const PLUGIN_PRIORITY = 250;
63
76
  * ```
64
77
  * :::
65
78
  */
66
- exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
79
+ var _menuFocusNavigator = /*#__PURE__*/new WeakMap();
67
80
  class Filters extends _base.BasePlugin {
68
81
  static get PLUGIN_KEY() {
69
82
  return PLUGIN_KEY;
@@ -74,52 +87,55 @@ class Filters extends _base.BasePlugin {
74
87
  static get PLUGIN_DEPS() {
75
88
  return ['plugin:DropdownMenu', 'plugin:HiddenRows', 'cell-type:checkbox'];
76
89
  }
90
+
91
+ /**
92
+ * Instance of {@link DropdownMenu}.
93
+ *
94
+ * @private
95
+ * @type {DropdownMenu}
96
+ */
97
+
77
98
  constructor(hotInstance) {
78
99
  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;
100
+ // One listener for the enable/disable functionality
101
+ _defineProperty(this, "dropdownMenuPlugin", null);
93
102
  /**
94
103
  * Instance of {@link ConditionCollection}.
95
104
  *
96
105
  * @private
97
106
  * @type {ConditionCollection}
98
107
  */
99
- this.conditionCollection = null;
108
+ _defineProperty(this, "conditionCollection", null);
100
109
  /**
101
110
  * Instance of {@link ConditionUpdateObserver}.
102
111
  *
103
112
  * @private
104
113
  * @type {ConditionUpdateObserver}
105
114
  */
106
- this.conditionUpdateObserver = null;
115
+ _defineProperty(this, "conditionUpdateObserver", null);
107
116
  /**
108
117
  * Map, where key is component identifier and value represent `BaseComponent` element or it derivatives.
109
118
  *
110
119
  * @private
111
120
  * @type {Map}
112
121
  */
113
- this.components = new Map([['filter_by_condition', null], ['filter_operators', null], ['filter_by_condition2', null], ['filter_by_value', null], ['filter_action_bar', null]]);
122
+ _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
123
  /**
115
124
  * Map of skipped rows by plugin.
116
125
  *
117
126
  * @private
118
127
  * @type {null|TrimmingMap}
119
128
  */
120
- this.filtersRowsMap = null;
121
-
122
- // One listener for the enable/disable functionality
129
+ _defineProperty(this, "filtersRowsMap", null);
130
+ /**
131
+ * Menu focus navigator allows switching the focus position through Tab and Shift Tab keys.
132
+ *
133
+ * @type {MenuFocusNavigator|undefined}
134
+ */
135
+ _classPrivateFieldInitSpec(this, _menuFocusNavigator, {
136
+ writable: true,
137
+ value: void 0
138
+ });
123
139
  this.hot.addHook('afterGetColHeader', (col, TH) => this.onAfterGetColHeader(col, TH));
124
140
  }
125
141
 
@@ -154,7 +170,7 @@ class Filters extends _base.BasePlugin {
154
170
  const filterByConditionLabel = () => `${this.hot.getTranslatedPhrase(constants.FILTERS_DIVS_FILTER_BY_CONDITION)}:`;
155
171
  const filterValueLabel = () => `${this.hot.getTranslatedPhrase(constants.FILTERS_DIVS_FILTER_BY_VALUE)}:`;
156
172
  if (!this.components.get('filter_by_condition')) {
157
- const conditionComponent = new _condition.default(this.hot, {
173
+ const conditionComponent = new _condition.ConditionComponent(this.hot, {
158
174
  id: 'filter_by_condition',
159
175
  name: filterByConditionLabel,
160
176
  addSeparator: false,
@@ -164,13 +180,13 @@ class Filters extends _base.BasePlugin {
164
180
  this.components.set('filter_by_condition', addConfirmationHooks(conditionComponent));
165
181
  }
166
182
  if (!this.components.get('filter_operators')) {
167
- this.components.set('filter_operators', new _operators.default(this.hot, {
183
+ this.components.set('filter_operators', new _operators.OperatorsComponent(this.hot, {
168
184
  id: 'filter_operators',
169
185
  name: 'Operators'
170
186
  }));
171
187
  }
172
188
  if (!this.components.get('filter_by_condition2')) {
173
- const conditionComponent = new _condition.default(this.hot, {
189
+ const conditionComponent = new _condition.ConditionComponent(this.hot, {
174
190
  id: 'filter_by_condition2',
175
191
  name: '',
176
192
  addSeparator: true,
@@ -180,13 +196,13 @@ class Filters extends _base.BasePlugin {
180
196
  this.components.set('filter_by_condition2', addConfirmationHooks(conditionComponent));
181
197
  }
182
198
  if (!this.components.get('filter_by_value')) {
183
- this.components.set('filter_by_value', addConfirmationHooks(new _value.default(this.hot, {
199
+ this.components.set('filter_by_value', addConfirmationHooks(new _value.ValueComponent(this.hot, {
184
200
  id: 'filter_by_value',
185
201
  name: filterValueLabel
186
202
  })));
187
203
  }
188
204
  if (!this.components.get('filter_action_bar')) {
189
- this.components.set('filter_action_bar', addConfirmationHooks(new _actionBar.default(this.hot, {
205
+ this.components.set('filter_action_bar', addConfirmationHooks(new _actionBar.ActionBarComponent(this.hot, {
190
206
  id: 'filter_action_bar',
191
207
  name: 'Action bar'
192
208
  })));
@@ -199,7 +215,6 @@ class Filters extends _base.BasePlugin {
199
215
  this.conditionUpdateObserver.addLocalHook('update', conditionState => this.updateComponents(conditionState));
200
216
  }
201
217
  this.components.forEach(component => component.show());
202
- this.addHook('beforeDropdownMenuSetItems', items => this.onBeforeDropdownMenuSetItems(items));
203
218
  this.addHook('afterDropdownMenuDefaultOptions', defaultOptions => this.onAfterDropdownMenuDefaultOptions(defaultOptions));
204
219
  this.addHook('afterDropdownMenuShow', () => this.onAfterDropdownMenuShow());
205
220
  this.addHook('afterDropdownMenuHide', () => this.onAfterDropdownMenuHide());
@@ -210,6 +225,33 @@ class Filters extends _base.BasePlugin {
210
225
  this.dropdownMenuPlugin.disablePlugin();
211
226
  this.dropdownMenuPlugin.enablePlugin();
212
227
  }
228
+ if (!_classPrivateFieldGet(this, _menuFocusNavigator) && this.dropdownMenuPlugin.enabled) {
229
+ const mainMenu = this.dropdownMenuPlugin.menu;
230
+ const focusableItems = [
231
+ // A fake menu item that once focused allows escaping from the focus navigation (using Tab keys)
232
+ // to the menu navigation using arrow keys.
233
+ {
234
+ focus: () => mainMenu.focus()
235
+ }, ...Array.from(this.components).map(_ref => {
236
+ let [, component] = _ref;
237
+ return component.getElements();
238
+ }).flat()];
239
+ _classPrivateFieldSet(this, _menuFocusNavigator, (0, _focusController.createMenuFocusController)(mainMenu, focusableItems));
240
+ const forwardToFocusNavigation = event => {
241
+ _classPrivateFieldGet(this, _menuFocusNavigator).listen();
242
+ event.preventDefault();
243
+ if ((0, _unicode.isKey)(event.keyCode, 'TAB')) {
244
+ if (event.shiftKey) {
245
+ _classPrivateFieldGet(this, _menuFocusNavigator).toPreviousItem();
246
+ } else {
247
+ _classPrivateFieldGet(this, _menuFocusNavigator).toNextItem();
248
+ }
249
+ }
250
+ };
251
+ this.components.get('filter_by_value').addLocalHook('listTabKeydown', forwardToFocusNavigation);
252
+ this.components.get('filter_by_condition').addLocalHook('selectTabKeydown', forwardToFocusNavigation);
253
+ }
254
+ this.registerShortcuts();
213
255
  super.enablePlugin();
214
256
  }
215
257
 
@@ -230,9 +272,40 @@ class Filters extends _base.BasePlugin {
230
272
  this.conditionCollection = null;
231
273
  this.hot.rowIndexMapper.unregisterMap(this.pluginName);
232
274
  }
275
+ this.unregisterShortcuts();
233
276
  super.disablePlugin();
234
277
  }
235
278
 
279
+ /**
280
+ * Register shortcuts responsible for clearing the filters.
281
+ *
282
+ * @private
283
+ */
284
+ registerShortcuts() {
285
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
286
+ keys: [['Alt', 'A']],
287
+ stopPropagation: true,
288
+ callback: () => {
289
+ const selection = this.hot.getSelected();
290
+ this.clearConditions();
291
+ this.filter();
292
+ if (selection) {
293
+ this.hot.selectCells(selection);
294
+ }
295
+ },
296
+ group: SHORTCUTS_GROUP
297
+ });
298
+ }
299
+
300
+ /**
301
+ * Unregister shortcuts responsible for clearing the filters.
302
+ *
303
+ * @private
304
+ */
305
+ unregisterShortcuts() {
306
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
307
+ }
308
+
236
309
  /* eslint-disable jsdoc/require-description-complete-sentence */
237
310
  /**
238
311
  * @memberof Filters#
@@ -391,6 +464,9 @@ class Filters extends _base.BasePlugin {
391
464
  * @fires Hooks#afterFilter
392
465
  */
393
466
  filter() {
467
+ const {
468
+ navigableHeaders
469
+ } = this.hot.getSettings();
394
470
  const dataFilter = this._createDataFilter();
395
471
  const needToFilter = !this.conditionCollection.isEmpty();
396
472
  let visibleVisualRows = [];
@@ -412,7 +488,7 @@ class Filters extends _base.BasePlugin {
412
488
  this.filtersRowsMap.setValueAtIndex(physicalRow, true);
413
489
  });
414
490
  }, true);
415
- if (!visibleVisualRows.length) {
491
+ if (!navigableHeaders && !visibleVisualRows.length) {
416
492
  this.hot.deselectCell();
417
493
  }
418
494
  } else {
@@ -422,7 +498,9 @@ class Filters extends _base.BasePlugin {
422
498
  this.hot.runHooks('afterFilter', conditions);
423
499
  this.hot.view.adjustElementsSize(true);
424
500
  this.hot.render();
425
- this.clearColumnSelection();
501
+ if (this.hot.selection.isSelected()) {
502
+ this.hot.selectCell(navigableHeaders ? -1 : 0, this.hot.getSelectedRangeLast().highlight.col);
503
+ }
426
504
  }
427
505
 
428
506
  /**
@@ -444,18 +522,6 @@ class Filters extends _base.BasePlugin {
444
522
  };
445
523
  }
446
524
 
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
525
  /**
460
526
  * Returns handsontable source data with cell meta based on current selection.
461
527
  *
@@ -562,21 +628,6 @@ class Filters extends _base.BasePlugin {
562
628
  this.components.get('filter_by_condition2').getSelectElement().closeOptions();
563
629
  }
564
630
 
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
631
  /**
581
632
  * After dropdown menu default options listener.
582
633
  *
@@ -668,7 +719,7 @@ class Filters extends _base.BasePlugin {
668
719
  */
669
720
  onComponentChange(component, command) {
670
721
  this.updateDependentComponentsVisibility();
671
- if (component.constructor === _condition.default && !command.inputsCount) {
722
+ if (component.constructor === _condition.ConditionComponent && !command.inputsCount) {
672
723
  this.setListeningDropdownMenu();
673
724
  }
674
725
  }
@@ -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,40 @@ 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
+ const selection = this.hot.getSelected();
284
+ this.clearConditions();
285
+ this.filter();
286
+ if (selection) {
287
+ this.hot.selectCells(selection);
288
+ }
289
+ },
290
+ group: SHORTCUTS_GROUP
291
+ });
292
+ }
293
+
294
+ /**
295
+ * Unregister shortcuts responsible for clearing the filters.
296
+ *
297
+ * @private
298
+ */
299
+ unregisterShortcuts() {
300
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
301
+ }
302
+
228
303
  /* eslint-disable jsdoc/require-description-complete-sentence */
229
304
  /**
230
305
  * @memberof Filters#
@@ -383,6 +458,9 @@ export class Filters extends BasePlugin {
383
458
  * @fires Hooks#afterFilter
384
459
  */
385
460
  filter() {
461
+ const {
462
+ navigableHeaders
463
+ } = this.hot.getSettings();
386
464
  const dataFilter = this._createDataFilter();
387
465
  const needToFilter = !this.conditionCollection.isEmpty();
388
466
  let visibleVisualRows = [];
@@ -404,7 +482,7 @@ export class Filters extends BasePlugin {
404
482
  this.filtersRowsMap.setValueAtIndex(physicalRow, true);
405
483
  });
406
484
  }, true);
407
- if (!visibleVisualRows.length) {
485
+ if (!navigableHeaders && !visibleVisualRows.length) {
408
486
  this.hot.deselectCell();
409
487
  }
410
488
  } else {
@@ -414,7 +492,9 @@ export class Filters extends BasePlugin {
414
492
  this.hot.runHooks('afterFilter', conditions);
415
493
  this.hot.view.adjustElementsSize(true);
416
494
  this.hot.render();
417
- this.clearColumnSelection();
495
+ if (this.hot.selection.isSelected()) {
496
+ this.hot.selectCell(navigableHeaders ? -1 : 0, this.hot.getSelectedRangeLast().highlight.col);
497
+ }
418
498
  }
419
499
 
420
500
  /**
@@ -436,18 +516,6 @@ export class Filters extends BasePlugin {
436
516
  };
437
517
  }
438
518
 
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
519
  /**
452
520
  * Returns handsontable source data with cell meta based on current selection.
453
521
  *
@@ -554,21 +622,6 @@ export class Filters extends BasePlugin {
554
622
  this.components.get('filter_by_condition2').getSelectElement().closeOptions();
555
623
  }
556
624
 
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
625
  /**
573
626
  * After dropdown menu default options listener.
574
627
  *
@@ -5,7 +5,7 @@ exports.getOperationFunc = getOperationFunc;
5
5
  exports.getOperationName = getOperationName;
6
6
  exports.registerOperation = registerOperation;
7
7
  require("core-js/modules/es.error.cause.js");
8
- const operations = {};
8
+ const operations = exports.operations = {};
9
9
 
10
10
  /**
11
11
  * Get operation closure with pre-bound arguments.
@@ -13,7 +13,6 @@ const operations = {};
13
13
  * @param {string} id Operator `id`.
14
14
  * @returns {Function}
15
15
  */
16
- exports.operations = operations;
17
16
  function getOperationFunc(id) {
18
17
  if (!operations[id]) {
19
18
  throw Error(`Operation with id "${id}" does not exist.`);
@@ -4,11 +4,10 @@ exports.__esModule = true;
4
4
  exports.operationResult = operationResult;
5
5
  var C = _interopRequireWildcard(require("../../../i18n/constants"));
6
6
  var _logicalOperationRegisterer = require("../logicalOperationRegisterer");
7
- 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); }
8
- 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; }
9
- const OPERATION_ID = 'conjunction';
10
- exports.OPERATION_ID = OPERATION_ID;
11
- const SHORT_NAME_FOR_COMPONENT = C.FILTERS_LABELS_CONJUNCTION;
7
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
8
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
9
+ const OPERATION_ID = exports.OPERATION_ID = 'conjunction';
10
+ const SHORT_NAME_FOR_COMPONENT = exports.SHORT_NAME_FOR_COMPONENT = C.FILTERS_LABELS_CONJUNCTION;
12
11
  // p AND q AND w AND x AND... === TRUE?
13
12
 
14
13
  /**
@@ -16,7 +15,6 @@ const SHORT_NAME_FOR_COMPONENT = C.FILTERS_LABELS_CONJUNCTION;
16
15
  * @param {*} value The comparable value.
17
16
  * @returns {boolean}
18
17
  */
19
- exports.SHORT_NAME_FOR_COMPONENT = SHORT_NAME_FOR_COMPONENT;
20
18
  function operationResult(conditions, value) {
21
19
  return conditions.every(condition => condition.func(value));
22
20
  }