handsontable 0.0.0-next-06a64be-20230621 → 0.0.0-next-d1c8e0e-20230621

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 (279) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +61 -12
  3. package/3rdparty/walkontable/src/cell/coords.mjs +61 -12
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +44 -7
  6. package/3rdparty/walkontable/src/cell/range.mjs +44 -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 +7 -7
  14. package/3rdparty/walkontable/src/event.mjs +7 -7
  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 +1 -1
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -4
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -4
  23. package/3rdparty/walkontable/src/overlay/top.js +2 -4
  24. package/3rdparty/walkontable/src/overlay/top.mjs +2 -4
  25. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  26. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  27. package/3rdparty/walkontable/src/selection/border/constants.js +18 -0
  28. package/3rdparty/walkontable/src/selection/border/constants.mjs +13 -0
  29. package/3rdparty/walkontable/src/selection/constants.js +63 -0
  30. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  31. package/3rdparty/walkontable/src/selection/index.js +30 -0
  32. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  33. package/3rdparty/walkontable/src/selection/manager.js +329 -0
  34. package/3rdparty/walkontable/src/selection/manager.mjs +323 -0
  35. package/3rdparty/walkontable/src/selection/scanner.js +364 -0
  36. package/3rdparty/walkontable/src/selection/scanner.mjs +360 -0
  37. package/3rdparty/walkontable/src/selection/selection.js +133 -0
  38. package/3rdparty/walkontable/src/selection/selection.mjs +127 -0
  39. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  40. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  41. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  42. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  43. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  44. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  45. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  46. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  47. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  48. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  49. package/3rdparty/walkontable/src/table.js +7 -79
  50. package/3rdparty/walkontable/src/table.mjs +8 -80
  51. package/base.js +2 -2
  52. package/base.mjs +2 -2
  53. package/core.d.ts +5 -3
  54. package/core.js +127 -309
  55. package/core.mjs +127 -309
  56. package/dataMap/metaManager/metaSchema.js +19 -0
  57. package/dataMap/metaManager/metaSchema.mjs +19 -0
  58. package/dist/handsontable.css +8 -3
  59. package/dist/handsontable.full.css +8 -3
  60. package/dist/handsontable.full.js +13658 -10651
  61. package/dist/handsontable.full.min.css +3 -3
  62. package/dist/handsontable.full.min.js +112 -112
  63. package/dist/handsontable.js +16566 -13559
  64. package/dist/handsontable.min.css +3 -3
  65. package/dist/handsontable.min.js +4 -4
  66. package/editorManager.js +21 -94
  67. package/editorManager.mjs +26 -98
  68. package/editors/textEditor/textEditor.js +3 -11
  69. package/editors/textEditor/textEditor.mjs +4 -12
  70. package/helpers/mixed.js +1 -1
  71. package/helpers/mixed.mjs +1 -1
  72. package/helpers/number.d.ts +1 -0
  73. package/helpers/number.js +18 -0
  74. package/helpers/number.mjs +17 -0
  75. package/package.json +1 -1
  76. package/pluginHooks.d.ts +5 -1
  77. package/pluginHooks.js +89 -1
  78. package/pluginHooks.mjs +89 -1
  79. package/plugins/collapsibleColumns/collapsibleColumns.js +81 -24
  80. package/plugins/collapsibleColumns/collapsibleColumns.mjs +81 -24
  81. package/plugins/columnSorting/columnSorting.js +50 -8
  82. package/plugins/columnSorting/columnSorting.mjs +49 -9
  83. package/plugins/columnSorting/index.js +4 -2
  84. package/plugins/columnSorting/index.mjs +1 -1
  85. package/plugins/comments/comments.js +11 -4
  86. package/plugins/comments/comments.mjs +11 -4
  87. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  88. package/plugins/contextMenu/contextMenu.js +80 -29
  89. package/plugins/contextMenu/contextMenu.mjs +81 -30
  90. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  91. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  92. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  93. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  94. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  95. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  96. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  97. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  98. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  99. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  100. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  101. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  102. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  103. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  104. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  105. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  106. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  107. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  108. package/plugins/contextMenu/utils.js +25 -16
  109. package/plugins/contextMenu/utils.mjs +24 -15
  110. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  111. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  112. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  113. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  114. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  115. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  116. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  117. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  118. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  119. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  120. package/plugins/copyPaste/copyPaste.js +5 -1
  121. package/plugins/copyPaste/copyPaste.mjs +5 -1
  122. package/plugins/customBorders/customBorders.js +25 -53
  123. package/plugins/customBorders/customBorders.mjs +26 -54
  124. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  125. package/plugins/dropdownMenu/dropdownMenu.js +94 -30
  126. package/plugins/dropdownMenu/dropdownMenu.mjs +94 -30
  127. package/plugins/filters/filters.js +62 -42
  128. package/plugins/filters/filters.mjs +61 -41
  129. package/plugins/mergeCells/mergeCells.js +5 -18
  130. package/plugins/mergeCells/mergeCells.mjs +5 -18
  131. package/plugins/multiColumnSorting/multiColumnSorting.js +42 -3
  132. package/plugins/multiColumnSorting/multiColumnSorting.mjs +42 -3
  133. package/plugins/nestedHeaders/nestedHeaders.js +132 -10
  134. package/plugins/nestedHeaders/nestedHeaders.mjs +132 -10
  135. package/plugins/nestedHeaders/stateManager/index.js +37 -0
  136. package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
  137. package/plugins/nestedRows/nestedRows.js +52 -7
  138. package/plugins/nestedRows/nestedRows.mjs +52 -7
  139. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  140. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  141. package/selection/highlight/highlight.js +312 -89
  142. package/selection/highlight/highlight.mjs +302 -85
  143. package/selection/highlight/types/activeHeader.js +10 -9
  144. package/selection/highlight/types/activeHeader.mjs +10 -8
  145. package/selection/highlight/types/area.js +12 -27
  146. package/selection/highlight/types/area.mjs +16 -30
  147. package/selection/highlight/types/areaLayered.js +54 -0
  148. package/selection/highlight/types/areaLayered.mjs +49 -0
  149. package/selection/highlight/types/column.js +50 -0
  150. package/selection/highlight/types/column.mjs +45 -0
  151. package/selection/highlight/types/customSelection.js +7 -10
  152. package/selection/highlight/types/customSelection.mjs +7 -9
  153. package/selection/highlight/types/fill.js +5 -8
  154. package/selection/highlight/types/fill.mjs +5 -7
  155. package/selection/highlight/types/{cell.js → focus.js} +5 -8
  156. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  157. package/selection/highlight/types/header.js +10 -20
  158. package/selection/highlight/types/header.mjs +10 -19
  159. package/selection/highlight/types/{index.js → row.js} +27 -31
  160. package/selection/highlight/types/{index.mjs → row.mjs} +24 -29
  161. package/selection/highlight/visualSelection.js +31 -27
  162. package/selection/highlight/visualSelection.mjs +31 -27
  163. package/selection/index.js +4 -7
  164. package/selection/index.mjs +2 -3
  165. package/selection/mouseEventHandler.js +1 -1
  166. package/selection/mouseEventHandler.mjs +1 -1
  167. package/selection/range.js +8 -8
  168. package/selection/range.mjs +8 -8
  169. package/selection/selection.js +315 -181
  170. package/selection/selection.mjs +310 -180
  171. package/selection/transformation.js +233 -96
  172. package/selection/transformation.mjs +230 -93
  173. package/selection/utils.js +12 -36
  174. package/selection/utils.mjs +13 -36
  175. package/settings.d.ts +1 -0
  176. package/shortcutContexts/commands/editor/closeAndSave.js +15 -0
  177. package/shortcutContexts/commands/editor/closeAndSave.mjs +10 -0
  178. package/shortcutContexts/commands/editor/closeWithoutSaving.js +13 -0
  179. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  180. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  181. package/shortcutContexts/commands/editor/fastOpen.mjs +11 -0
  182. package/shortcutContexts/commands/editor/index.js +16 -0
  183. package/shortcutContexts/commands/editor/index.mjs +12 -0
  184. package/shortcutContexts/commands/editor/open.js +29 -0
  185. package/shortcutContexts/commands/editor/open.mjs +24 -0
  186. package/shortcutContexts/commands/emptySelectedCells.js +12 -0
  187. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  188. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  189. package/shortcutContexts/commands/extendCellsSelection/down.mjs +10 -0
  190. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  191. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +16 -0
  192. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  193. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  194. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  195. package/shortcutContexts/commands/extendCellsSelection/left.mjs +10 -0
  196. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  197. package/shortcutContexts/commands/extendCellsSelection/right.mjs +10 -0
  198. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  199. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +14 -0
  200. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +22 -0
  201. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +17 -0
  202. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +17 -0
  203. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +12 -0
  204. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +17 -0
  205. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +12 -0
  206. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +40 -0
  207. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +35 -0
  208. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +40 -0
  209. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +35 -0
  210. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +22 -0
  211. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +17 -0
  212. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  213. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +14 -0
  214. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  215. package/shortcutContexts/commands/extendCellsSelection/up.mjs +10 -0
  216. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  217. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +16 -0
  218. package/shortcutContexts/commands/index.js +52 -0
  219. package/shortcutContexts/commands/index.mjs +48 -0
  220. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  221. package/shortcutContexts/commands/moveCellSelection/down.mjs +7 -0
  222. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +29 -0
  223. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +24 -0
  224. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  225. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  226. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +13 -0
  227. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  228. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +13 -0
  229. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  230. package/shortcutContexts/commands/moveCellSelection/left.js +11 -0
  231. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  232. package/shortcutContexts/commands/moveCellSelection/right.js +11 -0
  233. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  234. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  235. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +11 -0
  236. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  237. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +12 -0
  238. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  239. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +8 -0
  240. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  241. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +11 -0
  242. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +36 -0
  243. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +31 -0
  244. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +36 -0
  245. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +31 -0
  246. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  247. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +11 -0
  248. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  249. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +13 -0
  250. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  251. package/shortcutContexts/commands/moveCellSelection/up.mjs +7 -0
  252. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +29 -0
  253. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +24 -0
  254. package/shortcutContexts/commands/populateSelectedCellsData.js +35 -0
  255. package/shortcutContexts/commands/populateSelectedCellsData.mjs +30 -0
  256. package/shortcutContexts/commands/selectAll.js +11 -0
  257. package/shortcutContexts/commands/selectAll.mjs +6 -0
  258. package/shortcutContexts/constants.js +19 -0
  259. package/shortcutContexts/constants.mjs +12 -0
  260. package/shortcutContexts/editor.js +29 -0
  261. package/shortcutContexts/editor.mjs +25 -0
  262. package/shortcutContexts/grid.js +247 -0
  263. package/shortcutContexts/grid.mjs +243 -0
  264. package/shortcutContexts/index.js +29 -0
  265. package/shortcutContexts/index.mjs +15 -0
  266. package/shortcuts/manager.js +2 -0
  267. package/shortcuts/manager.mjs +2 -0
  268. package/shortcuts/recorder.js +2 -2
  269. package/shortcuts/recorder.mjs +2 -2
  270. package/shortcuts/utils.js +21 -5
  271. package/shortcuts/utils.mjs +20 -4
  272. package/tableView.js +58 -9
  273. package/tableView.mjs +58 -9
  274. package/translations/indexMapper.js +8 -9
  275. package/translations/indexMapper.mjs +8 -9
  276. package/3rdparty/walkontable/src/selection.js +0 -355
  277. package/3rdparty/walkontable/src/selection.mjs +0 -349
  278. package/selection/highlight/constants.js +0 -16
  279. package/selection/highlight/constants.mjs +0 -6
@@ -22,7 +22,9 @@ require("core-js/modules/es.object.set-prototype-of.js");
22
22
  require("core-js/modules/es.object.get-prototype-of.js");
23
23
  var _base = require("../base");
24
24
  var _array = require("../../helpers/array");
25
+ var _object = require("../../helpers/object");
25
26
  var _commandExecutor = _interopRequireDefault(require("../contextMenu/commandExecutor"));
27
+ var _utils = require("../contextMenu/utils");
26
28
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
27
29
  var _element = require("../../helpers/dom/element");
28
30
  var _itemsFactory = _interopRequireDefault(require("../contextMenu/itemsFactory"));
@@ -54,6 +56,7 @@ exports.PLUGIN_KEY = PLUGIN_KEY;
54
56
  var PLUGIN_PRIORITY = 230;
55
57
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
56
58
  var BUTTON_CLASS_NAME = 'changeType';
59
+ var SHORTCUTS_GROUP = PLUGIN_KEY;
57
60
 
58
61
  /* eslint-disable jsdoc/require-description-complete-sentence */
59
62
  /**
@@ -182,6 +185,7 @@ var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
182
185
  if (typeof settings.callback === 'function') {
183
186
  this.commandExecutor.setCommonCallback(settings.callback);
184
187
  }
188
+ this.registerShortcuts();
185
189
  _get(_getPrototypeOf(DropdownMenu.prototype), "enablePlugin", this).call(this);
186
190
  this.callOnPluginsReady(function () {
187
191
  _this2.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
@@ -245,9 +249,71 @@ var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
245
249
  if (this.menu) {
246
250
  this.menu.destroy();
247
251
  }
252
+ this.unregisterShortcuts();
248
253
  _get(_getPrototypeOf(DropdownMenu.prototype), "disablePlugin", this).call(this);
249
254
  }
250
255
 
256
+ /**
257
+ * Register shortcuts responsible for toggling dropdown menu.
258
+ *
259
+ * @private
260
+ */
261
+ }, {
262
+ key: "registerShortcuts",
263
+ value: function registerShortcuts() {
264
+ var _this3 = this;
265
+ var context = this.hot.getShortcutManager().getContext('grid');
266
+ var callback = function callback() {
267
+ var _this3$hot$getSelecte = _this3.hot.getSelectedRangeLast(),
268
+ highlight = _this3$hot$getSelecte.highlight;
269
+ if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
270
+ _this3.hot.selectColumns(highlight.col, highlight.col, -1);
271
+ var _this3$hot$getSelecte2 = _this3.hot.getSelectedRangeLast(),
272
+ from = _this3$hot$getSelecte2.from;
273
+ var offset = (0, _utils.getDocumentOffsetByElement)(_this3.menu.container, _this3.hot.rootDocument);
274
+ var target = _this3.hot.getCell(-1, from.col, true);
275
+ var rect = target.getBoundingClientRect();
276
+ _this3.open({
277
+ left: rect.left + offset.left,
278
+ top: rect.top + target.offsetHeight + offset.top
279
+ }, {
280
+ left: rect.width
281
+ });
282
+ _this3.hot._registerTimeout(function () {
283
+ _this3.menu.selectFirstCell();
284
+ });
285
+ }
286
+ };
287
+ context.addShortcuts([{
288
+ keys: [['Shift', 'Alt', 'ArrowDown'], ['Shift', 'Enter']],
289
+ callback: callback,
290
+ runOnlyIf: function runOnlyIf() {
291
+ var _this3$hot$getSelecte3;
292
+ return ((_this3$hot$getSelecte3 = _this3.hot.getSelectedRangeLast()) === null || _this3$hot$getSelecte3 === void 0 ? void 0 : _this3$hot$getSelecte3.highlight.isHeader()) && !_this3.menu.isOpened();
293
+ },
294
+ group: SHORTCUTS_GROUP
295
+ }, {
296
+ keys: [['Shift', 'Alt', 'ArrowDown']],
297
+ callback: callback,
298
+ runOnlyIf: function runOnlyIf() {
299
+ var _this3$hot$getSelecte4;
300
+ return ((_this3$hot$getSelecte4 = _this3.hot.getSelectedRangeLast()) === null || _this3$hot$getSelecte4 === void 0 ? void 0 : _this3$hot$getSelecte4.highlight.isCell()) && !_this3.menu.isOpened();
301
+ },
302
+ group: SHORTCUTS_GROUP
303
+ }]);
304
+ }
305
+
306
+ /**
307
+ * Unregister shortcuts responsible for toggling dropdown menu.
308
+ *
309
+ * @private
310
+ */
311
+ }, {
312
+ key: "unregisterShortcuts",
313
+ value: function unregisterShortcuts() {
314
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
315
+ }
316
+
251
317
  /**
252
318
  * Registers the DOM listeners.
253
319
  *
@@ -256,33 +322,42 @@ var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
256
322
  }, {
257
323
  key: "registerEvents",
258
324
  value: function registerEvents() {
259
- var _this3 = this;
325
+ var _this4 = this;
260
326
  this.eventManager.addEventListener(this.hot.rootElement, 'click', function (event) {
261
- return _this3.onTableClick(event);
327
+ return _this4.onTableClick(event);
262
328
  });
263
329
  }
264
330
 
265
331
  /**
266
332
  * Opens menu and re-position it based on the passed coordinates.
267
333
  *
268
- * @param {object|Event} position An object with `pageX` and `pageY` properties which contains values relative to
269
- * the top left of the fully rendered content area in the browser or with `clientX`
270
- * and `clientY` properties which contains values relative to the upper left edge
271
- * of the content area (the viewport) of the browser window. This object is structurally
272
- * compatible with native mouse event so it can be used either.
334
+ * @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
335
+ * which contains coordinates relative to the browsers viewport (without included scroll offsets).
336
+ * Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
337
+ * coordinates.
338
+ * @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
339
+ * the offset to the menu position.
273
340
  * @fires Hooks#beforeDropdownMenuShow
274
341
  * @fires Hooks#afterDropdownMenuShow
275
342
  */
276
343
  }, {
277
344
  key: "open",
278
345
  value: function open(position) {
279
- if (!this.menu) {
346
+ var _this$menu,
347
+ _this5 = this;
348
+ var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
349
+ above: 0,
350
+ below: 0,
351
+ left: 0,
352
+ right: 0
353
+ };
354
+ if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
280
355
  return;
281
356
  }
282
357
  this.menu.open();
283
- if (position.width) {
284
- this.menu.setOffset('left', position.width);
285
- }
358
+ (0, _object.objectEach)(offset, function (value, key) {
359
+ _this5.menu.setOffset(key, value);
360
+ });
286
361
  this.menu.setPosition(position);
287
362
  }
288
363
 
@@ -292,10 +367,8 @@ var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
292
367
  }, {
293
368
  key: "close",
294
369
  value: function close() {
295
- if (!this.menu) {
296
- return;
297
- }
298
- this.menu.close();
370
+ var _this$menu2;
371
+ (_this$menu2 = this.menu) === null || _this$menu2 === void 0 ? void 0 : _this$menu2.close();
299
372
  }
300
373
 
301
374
  /**
@@ -367,23 +440,14 @@ var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
367
440
  key: "onTableClick",
368
441
  value: function onTableClick(event) {
369
442
  event.stopPropagation();
370
- if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME) && !this.menu.isOpened()) {
371
- var offsetTop = 0;
372
- var offsetLeft = 0;
373
- if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
374
- var frameElement = this.hot.rootWindow.frameElement;
375
- var _frameElement$getBoun = frameElement.getBoundingClientRect(),
376
- top = _frameElement$getBoun.top,
377
- left = _frameElement$getBoun.left;
378
- offsetTop = top;
379
- offsetLeft = left;
380
- }
443
+ if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
444
+ var offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
381
445
  var rect = event.target.getBoundingClientRect();
382
446
  this.open({
383
- left: rect.left + offsetLeft,
384
- top: rect.top + event.target.offsetHeight + 3 + offsetTop,
385
- width: rect.width,
386
- height: rect.height
447
+ left: rect.left + offset.left,
448
+ top: rect.top + event.target.offsetHeight + 3 + offset.top
449
+ }, {
450
+ left: rect.width
387
451
  });
388
452
  }
389
453
  }
@@ -32,7 +32,9 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
32
32
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
33
33
  import { BasePlugin } from "../base/index.mjs";
34
34
  import { arrayEach } from "../../helpers/array.mjs";
35
+ import { objectEach } from "../../helpers/object.mjs";
35
36
  import CommandExecutor from "../contextMenu/commandExecutor.mjs";
37
+ import { getDocumentOffsetByElement } from "../contextMenu/utils.mjs";
36
38
  import EventManager from "../../eventManager.mjs";
37
39
  import { hasClass } from "../../helpers/dom/element.mjs";
38
40
  import ItemsFactory from "../contextMenu/itemsFactory.mjs";
@@ -47,6 +49,7 @@ Hooks.getSingleton().register('afterDropdownMenuExecute');
47
49
  export var PLUGIN_KEY = 'dropdownMenu';
48
50
  export var PLUGIN_PRIORITY = 230;
49
51
  var BUTTON_CLASS_NAME = 'changeType';
52
+ var SHORTCUTS_GROUP = PLUGIN_KEY;
50
53
 
51
54
  /* eslint-disable jsdoc/require-description-complete-sentence */
52
55
  /**
@@ -176,6 +179,7 @@ export var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
176
179
  if (typeof settings.callback === 'function') {
177
180
  this.commandExecutor.setCommonCallback(settings.callback);
178
181
  }
182
+ this.registerShortcuts();
179
183
  _get(_getPrototypeOf(DropdownMenu.prototype), "enablePlugin", this).call(this);
180
184
  this.callOnPluginsReady(function () {
181
185
  _this2.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
@@ -239,9 +243,71 @@ export var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
239
243
  if (this.menu) {
240
244
  this.menu.destroy();
241
245
  }
246
+ this.unregisterShortcuts();
242
247
  _get(_getPrototypeOf(DropdownMenu.prototype), "disablePlugin", this).call(this);
243
248
  }
244
249
 
250
+ /**
251
+ * Register shortcuts responsible for toggling dropdown menu.
252
+ *
253
+ * @private
254
+ */
255
+ }, {
256
+ key: "registerShortcuts",
257
+ value: function registerShortcuts() {
258
+ var _this3 = this;
259
+ var context = this.hot.getShortcutManager().getContext('grid');
260
+ var callback = function callback() {
261
+ var _this3$hot$getSelecte = _this3.hot.getSelectedRangeLast(),
262
+ highlight = _this3$hot$getSelecte.highlight;
263
+ if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
264
+ _this3.hot.selectColumns(highlight.col, highlight.col, -1);
265
+ var _this3$hot$getSelecte2 = _this3.hot.getSelectedRangeLast(),
266
+ from = _this3$hot$getSelecte2.from;
267
+ var offset = getDocumentOffsetByElement(_this3.menu.container, _this3.hot.rootDocument);
268
+ var target = _this3.hot.getCell(-1, from.col, true);
269
+ var rect = target.getBoundingClientRect();
270
+ _this3.open({
271
+ left: rect.left + offset.left,
272
+ top: rect.top + target.offsetHeight + offset.top
273
+ }, {
274
+ left: rect.width
275
+ });
276
+ _this3.hot._registerTimeout(function () {
277
+ _this3.menu.selectFirstCell();
278
+ });
279
+ }
280
+ };
281
+ context.addShortcuts([{
282
+ keys: [['Shift', 'Alt', 'ArrowDown'], ['Shift', 'Enter']],
283
+ callback: callback,
284
+ runOnlyIf: function runOnlyIf() {
285
+ var _this3$hot$getSelecte3;
286
+ return ((_this3$hot$getSelecte3 = _this3.hot.getSelectedRangeLast()) === null || _this3$hot$getSelecte3 === void 0 ? void 0 : _this3$hot$getSelecte3.highlight.isHeader()) && !_this3.menu.isOpened();
287
+ },
288
+ group: SHORTCUTS_GROUP
289
+ }, {
290
+ keys: [['Shift', 'Alt', 'ArrowDown']],
291
+ callback: callback,
292
+ runOnlyIf: function runOnlyIf() {
293
+ var _this3$hot$getSelecte4;
294
+ return ((_this3$hot$getSelecte4 = _this3.hot.getSelectedRangeLast()) === null || _this3$hot$getSelecte4 === void 0 ? void 0 : _this3$hot$getSelecte4.highlight.isCell()) && !_this3.menu.isOpened();
295
+ },
296
+ group: SHORTCUTS_GROUP
297
+ }]);
298
+ }
299
+
300
+ /**
301
+ * Unregister shortcuts responsible for toggling dropdown menu.
302
+ *
303
+ * @private
304
+ */
305
+ }, {
306
+ key: "unregisterShortcuts",
307
+ value: function unregisterShortcuts() {
308
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
309
+ }
310
+
245
311
  /**
246
312
  * Registers the DOM listeners.
247
313
  *
@@ -250,33 +316,42 @@ export var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
250
316
  }, {
251
317
  key: "registerEvents",
252
318
  value: function registerEvents() {
253
- var _this3 = this;
319
+ var _this4 = this;
254
320
  this.eventManager.addEventListener(this.hot.rootElement, 'click', function (event) {
255
- return _this3.onTableClick(event);
321
+ return _this4.onTableClick(event);
256
322
  });
257
323
  }
258
324
 
259
325
  /**
260
326
  * Opens menu and re-position it based on the passed coordinates.
261
327
  *
262
- * @param {object|Event} position An object with `pageX` and `pageY` properties which contains values relative to
263
- * the top left of the fully rendered content area in the browser or with `clientX`
264
- * and `clientY` properties which contains values relative to the upper left edge
265
- * of the content area (the viewport) of the browser window. This object is structurally
266
- * compatible with native mouse event so it can be used either.
328
+ * @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
329
+ * which contains coordinates relative to the browsers viewport (without included scroll offsets).
330
+ * Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
331
+ * coordinates.
332
+ * @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
333
+ * the offset to the menu position.
267
334
  * @fires Hooks#beforeDropdownMenuShow
268
335
  * @fires Hooks#afterDropdownMenuShow
269
336
  */
270
337
  }, {
271
338
  key: "open",
272
339
  value: function open(position) {
273
- if (!this.menu) {
340
+ var _this$menu,
341
+ _this5 = this;
342
+ var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
343
+ above: 0,
344
+ below: 0,
345
+ left: 0,
346
+ right: 0
347
+ };
348
+ if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
274
349
  return;
275
350
  }
276
351
  this.menu.open();
277
- if (position.width) {
278
- this.menu.setOffset('left', position.width);
279
- }
352
+ objectEach(offset, function (value, key) {
353
+ _this5.menu.setOffset(key, value);
354
+ });
280
355
  this.menu.setPosition(position);
281
356
  }
282
357
 
@@ -286,10 +361,8 @@ export var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
286
361
  }, {
287
362
  key: "close",
288
363
  value: function close() {
289
- if (!this.menu) {
290
- return;
291
- }
292
- this.menu.close();
364
+ var _this$menu2;
365
+ (_this$menu2 = this.menu) === null || _this$menu2 === void 0 ? void 0 : _this$menu2.close();
293
366
  }
294
367
 
295
368
  /**
@@ -361,23 +434,14 @@ export var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
361
434
  key: "onTableClick",
362
435
  value: function onTableClick(event) {
363
436
  event.stopPropagation();
364
- if (hasClass(event.target, BUTTON_CLASS_NAME) && !this.menu.isOpened()) {
365
- var offsetTop = 0;
366
- var offsetLeft = 0;
367
- if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
368
- var frameElement = this.hot.rootWindow.frameElement;
369
- var _frameElement$getBoun = frameElement.getBoundingClientRect(),
370
- top = _frameElement$getBoun.top,
371
- left = _frameElement$getBoun.left;
372
- offsetTop = top;
373
- offsetLeft = left;
374
- }
437
+ if (hasClass(event.target, BUTTON_CLASS_NAME)) {
438
+ var offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
375
439
  var rect = event.target.getBoundingClientRect();
376
440
  this.open({
377
- left: rect.left + offsetLeft,
378
- top: rect.top + event.target.offsetHeight + 3 + offsetTop,
379
- width: rect.width,
380
- height: rect.height
441
+ left: rect.left + offset.left,
442
+ top: rect.top + event.target.offsetHeight + 3 + offset.top
443
+ }, {
444
+ left: rect.width
381
445
  });
382
446
  }
383
447
  }
@@ -76,6 +76,8 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
76
76
  var PLUGIN_KEY = 'filters';
77
77
  exports.PLUGIN_KEY = PLUGIN_KEY;
78
78
  var PLUGIN_PRIORITY = 250;
79
+ exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
80
+ var SHORTCUTS_GROUP = PLUGIN_KEY;
79
81
 
80
82
  /**
81
83
  * @plugin Filters
@@ -112,7 +114,6 @@ var PLUGIN_PRIORITY = 250;
112
114
  * ```
113
115
  * :::
114
116
  */
115
- exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
116
117
  var Filters = /*#__PURE__*/function (_BasePlugin) {
117
118
  _inherits(Filters, _BasePlugin);
118
119
  var _super = _createSuper(Filters);
@@ -292,6 +293,7 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
292
293
  this.dropdownMenuPlugin.disablePlugin();
293
294
  this.dropdownMenuPlugin.enablePlugin();
294
295
  }
296
+ this.registerShortcuts();
295
297
  _get(_getPrototypeOf(Filters.prototype), "enablePlugin", this).call(this);
296
298
  }
297
299
 
@@ -315,9 +317,41 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
315
317
  this.conditionCollection = null;
316
318
  this.hot.rowIndexMapper.unregisterMap(this.pluginName);
317
319
  }
320
+ this.unregisterShortcuts();
318
321
  _get(_getPrototypeOf(Filters.prototype), "disablePlugin", this).call(this);
319
322
  }
320
323
 
324
+ /**
325
+ * Register shortcuts responsible for clearing the filters.
326
+ *
327
+ * @private
328
+ */
329
+ }, {
330
+ key: "registerShortcuts",
331
+ value: function registerShortcuts() {
332
+ var _this4 = this;
333
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
334
+ keys: [['Alt', 'A']],
335
+ stopPropagation: true,
336
+ callback: function callback() {
337
+ _this4.clearConditions();
338
+ _this4.filter();
339
+ },
340
+ group: SHORTCUTS_GROUP
341
+ });
342
+ }
343
+
344
+ /**
345
+ * Unregister shortcuts responsible for clearing the filters.
346
+ *
347
+ * @private
348
+ */
349
+ }, {
350
+ key: "unregisterShortcuts",
351
+ value: function unregisterShortcuts() {
352
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
353
+ }
354
+
321
355
  /* eslint-disable jsdoc/require-description-complete-sentence */
322
356
  /**
323
357
  * @memberof Filters#
@@ -484,7 +518,7 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
484
518
  }, {
485
519
  key: "filter",
486
520
  value: function filter() {
487
- var _this4 = this;
521
+ var _this5 = this;
488
522
  var dataFilter = this._createDataFilter();
489
523
  var needToFilter = !this.conditionCollection.isEmpty();
490
524
  var visibleVisualRows = [];
@@ -494,18 +528,18 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
494
528
  if (needToFilter) {
495
529
  var trimmedRows = [];
496
530
  this.hot.batchExecution(function () {
497
- _this4.filtersRowsMap.clear();
531
+ _this5.filtersRowsMap.clear();
498
532
  visibleVisualRows = (0, _array.arrayMap)(dataFilter.filter(), function (rowData) {
499
533
  return rowData.meta.visualRow;
500
534
  });
501
535
  var visibleVisualRowsAssertion = (0, _utils.createArrayAssertion)(visibleVisualRows);
502
- (0, _number.rangeEach)(_this4.hot.countSourceRows() - 1, function (row) {
536
+ (0, _number.rangeEach)(_this5.hot.countSourceRows() - 1, function (row) {
503
537
  if (!visibleVisualRowsAssertion(row)) {
504
538
  trimmedRows.push(row);
505
539
  }
506
540
  });
507
541
  (0, _array.arrayEach)(trimmedRows, function (physicalRow) {
508
- _this4.filtersRowsMap.setValueAtIndex(physicalRow, true);
542
+ _this5.filtersRowsMap.setValueAtIndex(physicalRow, true);
509
543
  });
510
544
  }, true);
511
545
  if (!visibleVisualRows.length) {
@@ -518,7 +552,6 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
518
552
  this.hot.runHooks('afterFilter', conditions);
519
553
  this.hot.view.adjustElementsSize(true);
520
554
  this.hot.render();
521
- this.clearColumnSelection();
522
555
  }
523
556
 
524
557
  /**
@@ -542,20 +575,6 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
542
575
  };
543
576
  }
544
577
 
545
- /**
546
- * Clears column selection.
547
- *
548
- * @private
549
- */
550
- }, {
551
- key: "clearColumnSelection",
552
- value: function clearColumnSelection() {
553
- var selectedColumn = this.getSelectedColumn();
554
- if (selectedColumn !== null) {
555
- this.hot.selectCell(0, selectedColumn.visualIndex);
556
- }
557
- }
558
-
559
578
  /**
560
579
  * Returns handsontable source data with cell meta based on current selection.
561
580
  *
@@ -565,21 +584,21 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
565
584
  }, {
566
585
  key: "getDataMapAtColumn",
567
586
  value: function getDataMapAtColumn(column) {
568
- var _this5 = this;
587
+ var _this6 = this;
569
588
  var visualColumn = this.hot.toVisualColumn(column);
570
589
  var data = [];
571
590
  (0, _array.arrayEach)(this.hot.getSourceDataAtCol(visualColumn), function (value, rowIndex) {
572
- var _this5$hot$getDataAtC;
573
- var _this5$hot$getCellMet = _this5.hot.getCellMeta(rowIndex, visualColumn),
574
- row = _this5$hot$getCellMet.row,
575
- col = _this5$hot$getCellMet.col,
576
- visualCol = _this5$hot$getCellMet.visualCol,
577
- visualRow = _this5$hot$getCellMet.visualRow,
578
- type = _this5$hot$getCellMet.type,
579
- instance = _this5$hot$getCellMet.instance,
580
- dateFormat = _this5$hot$getCellMet.dateFormat,
581
- locale = _this5$hot$getCellMet.locale;
582
- var dataValue = (_this5$hot$getDataAtC = _this5.hot.getDataAtCell(_this5.hot.toVisualRow(rowIndex), visualColumn)) !== null && _this5$hot$getDataAtC !== void 0 ? _this5$hot$getDataAtC : value;
591
+ var _this6$hot$getDataAtC;
592
+ var _this6$hot$getCellMet = _this6.hot.getCellMeta(rowIndex, visualColumn),
593
+ row = _this6$hot$getCellMet.row,
594
+ col = _this6$hot$getCellMet.col,
595
+ visualCol = _this6$hot$getCellMet.visualCol,
596
+ visualRow = _this6$hot$getCellMet.visualRow,
597
+ type = _this6$hot$getCellMet.type,
598
+ instance = _this6$hot$getCellMet.instance,
599
+ dateFormat = _this6$hot$getCellMet.dateFormat,
600
+ locale = _this6$hot$getCellMet.locale;
601
+ var dataValue = (_this6$hot$getDataAtC = _this6.hot.getDataAtCell(_this6.hot.toVisualRow(rowIndex), visualColumn)) !== null && _this6$hot$getDataAtC !== void 0 ? _this6$hot$getDataAtC : value;
583
602
  data.push({
584
603
  meta: {
585
604
  row: row,
@@ -606,14 +625,14 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
606
625
  }, {
607
626
  key: "onAfterChange",
608
627
  value: function onAfterChange(changes) {
609
- var _this6 = this;
628
+ var _this7 = this;
610
629
  if (changes) {
611
630
  (0, _array.arrayEach)(changes, function (change) {
612
631
  var _change = _slicedToArray(change, 2),
613
632
  prop = _change[1];
614
- var columnIndex = _this6.hot.propToCol(prop);
615
- if (_this6.conditionCollection.hasConditions(columnIndex)) {
616
- _this6.updateValueComponentCondition(columnIndex);
633
+ var columnIndex = _this7.hot.propToCol(prop);
634
+ if (_this7.conditionCollection.hasConditions(columnIndex)) {
635
+ _this7.updateValueComponentCondition(columnIndex);
617
636
  }
618
637
  });
619
638
  }
@@ -684,10 +703,10 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
684
703
  }, {
685
704
  key: "onBeforeDropdownMenuSetItems",
686
705
  value: function onBeforeDropdownMenuSetItems() {
687
- var _this7 = this;
706
+ var _this8 = this;
688
707
  if (this.dropdownMenuPlugin) {
689
708
  this.dropdownMenuPlugin.menu.addLocalHook('afterOpen', function () {
690
- _this7.dropdownMenuPlugin.menu.hotMenu.updateSettings({
709
+ _this8.dropdownMenuPlugin.menu.hotMenu.updateSettings({
691
710
  hiddenRows: true
692
711
  });
693
712
  });
@@ -778,6 +797,7 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
778
797
  });
779
798
  this.filtersRowsMap.clear();
780
799
  this.filter();
800
+ this.hot.selectCell(0, selectedColumn.visualIndex);
781
801
  }
782
802
  (_this$dropdownMenuPlu3 = this.dropdownMenuPlugin) === null || _this$dropdownMenuPlu3 === void 0 ? void 0 : _this$dropdownMenuPlu3.close();
783
803
  }
@@ -870,10 +890,10 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
870
890
  }, {
871
891
  key: "_createDataFilter",
872
892
  value: function _createDataFilter() {
873
- var _this8 = this;
893
+ var _this9 = this;
874
894
  var conditionCollection = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.conditionCollection;
875
895
  return new _dataFilter.default(conditionCollection, function (physicalColumn) {
876
- return _this8.getDataMapAtColumn(physicalColumn);
896
+ return _this9.getDataMapAtColumn(physicalColumn);
877
897
  });
878
898
  }
879
899
 
@@ -1005,12 +1025,12 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
1005
1025
  }, {
1006
1026
  key: "destroy",
1007
1027
  value: function destroy() {
1008
- var _this9 = this;
1028
+ var _this10 = this;
1009
1029
  if (this.enabled) {
1010
1030
  this.components.forEach(function (component, key) {
1011
1031
  if (component !== null) {
1012
1032
  component.destroy();
1013
- _this9.components.set(key, null);
1033
+ _this10.components.set(key, null);
1014
1034
  }
1015
1035
  });
1016
1036
  this.conditionCollection.destroy();