handsontable 0.0.0-next-7026906-20231107 → 0.0.0-next-7b93b7d-20231107

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 (316) hide show
  1. package/3rdparty/SheetClip/SheetClip.js +2 -2
  2. package/3rdparty/SheetClip/SheetClip.mjs +2 -2
  3. package/3rdparty/autoResize/autoResize.js +2 -2
  4. package/3rdparty/autoResize/autoResize.mjs +2 -2
  5. package/3rdparty/walkontable/src/calculator/viewportColumns.js +108 -85
  6. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +108 -85
  7. package/3rdparty/walkontable/src/calculator/viewportRows.js +60 -52
  8. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +60 -52
  9. package/3rdparty/walkontable/src/core/clone.js +6 -0
  10. package/3rdparty/walkontable/src/core/clone.mjs +6 -0
  11. package/3rdparty/walkontable/src/event.js +125 -74
  12. package/3rdparty/walkontable/src/event.mjs +125 -74
  13. package/3rdparty/walkontable/src/filter/column.js +16 -0
  14. package/3rdparty/walkontable/src/filter/column.mjs +16 -0
  15. package/3rdparty/walkontable/src/filter/row.js +16 -0
  16. package/3rdparty/walkontable/src/filter/row.mjs +16 -0
  17. package/3rdparty/walkontable/src/overlay/bottom.js +1 -1
  18. package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
  19. package/3rdparty/walkontable/src/overlay/top.js +1 -1
  20. package/3rdparty/walkontable/src/overlay/top.mjs +1 -1
  21. package/3rdparty/walkontable/src/renderer/_base.js +12 -5
  22. package/3rdparty/walkontable/src/renderer/_base.mjs +12 -5
  23. package/3rdparty/walkontable/src/renderer/cells.js +6 -2
  24. package/3rdparty/walkontable/src/renderer/cells.mjs +6 -2
  25. package/3rdparty/walkontable/src/renderer/rowHeaders.js +6 -2
  26. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +6 -2
  27. package/3rdparty/walkontable/src/renderer/rows.js +5 -0
  28. package/3rdparty/walkontable/src/renderer/rows.mjs +5 -0
  29. package/3rdparty/walkontable/src/renderer/table.js +24 -17
  30. package/3rdparty/walkontable/src/renderer/table.mjs +24 -17
  31. package/3rdparty/walkontable/src/scroll.js +2 -2
  32. package/3rdparty/walkontable/src/scroll.mjs +2 -2
  33. package/3rdparty/walkontable/src/selection/border/border.js +1 -1
  34. package/3rdparty/walkontable/src/selection/border/border.mjs +1 -1
  35. package/3rdparty/walkontable/src/settings.js +10 -10
  36. package/3rdparty/walkontable/src/settings.mjs +10 -10
  37. package/3rdparty/walkontable/src/table.js +3 -3
  38. package/3rdparty/walkontable/src/table.mjs +3 -3
  39. package/3rdparty/walkontable/src/utils/column.js +19 -4
  40. package/3rdparty/walkontable/src/utils/column.mjs +19 -4
  41. package/3rdparty/walkontable/src/utils/nodesPool.js +5 -0
  42. package/3rdparty/walkontable/src/utils/nodesPool.mjs +5 -0
  43. package/3rdparty/walkontable/src/utils/orderView/view.js +13 -6
  44. package/3rdparty/walkontable/src/utils/orderView/view.mjs +13 -6
  45. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +9 -6
  46. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +9 -6
  47. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +7 -4
  48. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +7 -4
  49. package/3rdparty/walkontable/src/utils/row.js +14 -2
  50. package/3rdparty/walkontable/src/utils/row.mjs +14 -2
  51. package/3rdparty/walkontable/src/viewport.js +9 -9
  52. package/3rdparty/walkontable/src/viewport.mjs +9 -9
  53. package/base.js +2 -2
  54. package/base.mjs +2 -2
  55. package/core.js +25 -25
  56. package/core.mjs +25 -25
  57. package/dataMap/dataMap.js +99 -90
  58. package/dataMap/dataMap.mjs +99 -90
  59. package/dataMap/dataSource.js +14 -8
  60. package/dataMap/dataSource.mjs +14 -8
  61. package/dataMap/metaManager/lazyFactoryMap.js +19 -7
  62. package/dataMap/metaManager/lazyFactoryMap.mjs +19 -7
  63. package/dataMap/metaManager/metaLayers/cellMeta.js +8 -3
  64. package/dataMap/metaManager/metaLayers/cellMeta.mjs +8 -3
  65. package/dataMap/metaManager/metaLayers/columnMeta.js +7 -1
  66. package/dataMap/metaManager/metaLayers/columnMeta.mjs +7 -1
  67. package/dataMap/metaManager/metaLayers/globalMeta.js +6 -1
  68. package/dataMap/metaManager/metaLayers/globalMeta.mjs +6 -1
  69. package/dataMap/metaManager/metaLayers/tableMeta.js +6 -2
  70. package/dataMap/metaManager/metaLayers/tableMeta.mjs +6 -2
  71. package/dataMap/metaManager/metaSchema.js +55 -55
  72. package/dataMap/metaManager/metaSchema.mjs +55 -55
  73. package/dataMap/metaManager/mods/dynamicCellMeta.js +7 -2
  74. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +7 -2
  75. package/dataMap/metaManager/mods/extendMetaProperties.js +8 -4
  76. package/dataMap/metaManager/mods/extendMetaProperties.mjs +8 -4
  77. package/dataMap/metaManager/utils.js +2 -2
  78. package/dataMap/metaManager/utils.mjs +2 -2
  79. package/dist/handsontable.css +2 -2
  80. package/dist/handsontable.full.css +2 -2
  81. package/dist/handsontable.full.js +7244 -6347
  82. package/dist/handsontable.full.min.css +2 -2
  83. package/dist/handsontable.full.min.js +120 -120
  84. package/dist/handsontable.js +7243 -6346
  85. package/dist/handsontable.min.css +2 -2
  86. package/dist/handsontable.min.js +28 -28
  87. package/editorManager.js +105 -95
  88. package/editorManager.mjs +105 -95
  89. package/editors/autocompleteEditor/autocompleteEditor.js +47 -46
  90. package/editors/autocompleteEditor/autocompleteEditor.mjs +46 -45
  91. package/editors/baseEditor/baseEditor.js +23 -26
  92. package/editors/baseEditor/baseEditor.mjs +23 -26
  93. package/editors/dateEditor/dateEditor.js +24 -15
  94. package/editors/dateEditor/dateEditor.mjs +24 -15
  95. package/editors/dropdownEditor/dropdownEditor.js +1 -1
  96. package/editors/dropdownEditor/dropdownEditor.mjs +1 -1
  97. package/editors/handsontableEditor/handsontableEditor.js +4 -4
  98. package/editors/handsontableEditor/handsontableEditor.mjs +4 -4
  99. package/editors/textEditor/textEditor.js +23 -17
  100. package/editors/textEditor/textEditor.mjs +24 -18
  101. package/eventManager.js +8 -0
  102. package/eventManager.mjs +8 -0
  103. package/helpers/array.js +2 -2
  104. package/helpers/array.mjs +2 -2
  105. package/helpers/dom/element.js +7 -7
  106. package/helpers/dom/element.mjs +7 -7
  107. package/helpers/function.js +1 -1
  108. package/helpers/function.mjs +1 -1
  109. package/helpers/mixed.js +1 -1
  110. package/helpers/mixed.mjs +1 -1
  111. package/helpers/object.js +4 -4
  112. package/helpers/object.mjs +4 -4
  113. package/helpers/string.js +1 -1
  114. package/helpers/string.mjs +1 -1
  115. package/package.json +1 -1
  116. package/pluginHooks.d.ts +0 -2
  117. package/pluginHooks.js +12 -3
  118. package/pluginHooks.mjs +12 -3
  119. package/plugins/autoColumnSize/autoColumnSize.js +141 -130
  120. package/plugins/autoColumnSize/autoColumnSize.mjs +140 -129
  121. package/plugins/autoRowSize/autoRowSize.js +112 -125
  122. package/plugins/autoRowSize/autoRowSize.mjs +110 -123
  123. package/plugins/autofill/autofill.js +97 -102
  124. package/plugins/autofill/autofill.mjs +96 -101
  125. package/plugins/base/base.js +57 -22
  126. package/plugins/base/base.mjs +56 -22
  127. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +29 -24
  128. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +28 -23
  129. package/plugins/collapsibleColumns/collapsibleColumns.js +104 -107
  130. package/plugins/collapsibleColumns/collapsibleColumns.mjs +102 -104
  131. package/plugins/columnSorting/columnSorting.js +105 -98
  132. package/plugins/columnSorting/columnSorting.mjs +104 -97
  133. package/plugins/columnSorting/columnStatesManager.js +12 -6
  134. package/plugins/columnSorting/columnStatesManager.mjs +12 -6
  135. package/plugins/columnSummary/columnSummary.js +71 -58
  136. package/plugins/columnSummary/columnSummary.mjs +70 -57
  137. package/plugins/columnSummary/endpoints.js +20 -14
  138. package/plugins/columnSummary/endpoints.mjs +20 -14
  139. package/plugins/comments/commentEditor.js +30 -2
  140. package/plugins/comments/commentEditor.mjs +30 -2
  141. package/plugins/comments/comments.js +158 -169
  142. package/plugins/comments/comments.mjs +157 -168
  143. package/plugins/comments/displaySwitch.js +7 -3
  144. package/plugins/comments/displaySwitch.mjs +7 -3
  145. package/plugins/contextMenu/commandExecutor.js +15 -2
  146. package/plugins/contextMenu/commandExecutor.mjs +15 -2
  147. package/plugins/contextMenu/contextMenu.js +91 -101
  148. package/plugins/contextMenu/contextMenu.mjs +90 -100
  149. package/plugins/contextMenu/itemsFactory.js +19 -4
  150. package/plugins/contextMenu/itemsFactory.mjs +19 -4
  151. package/plugins/contextMenu/menu/cursor.js +36 -0
  152. package/plugins/contextMenu/menu/cursor.mjs +36 -0
  153. package/plugins/contextMenu/menu/menu.js +57 -5
  154. package/plugins/contextMenu/menu/menu.mjs +57 -5
  155. package/plugins/copyPaste/copyPaste.js +74 -75
  156. package/plugins/copyPaste/copyPaste.mjs +74 -75
  157. package/plugins/customBorders/customBorders.js +49 -48
  158. package/plugins/customBorders/customBorders.mjs +48 -47
  159. package/plugins/dragToScroll/dragToScroll.js +50 -54
  160. package/plugins/dragToScroll/dragToScroll.mjs +49 -52
  161. package/plugins/dropdownMenu/dropdownMenu.js +132 -129
  162. package/plugins/dropdownMenu/dropdownMenu.mjs +132 -129
  163. package/plugins/exportFile/dataProvider.js +7 -2
  164. package/plugins/exportFile/dataProvider.mjs +7 -2
  165. package/plugins/exportFile/exportFile.js +1 -1
  166. package/plugins/exportFile/exportFile.mjs +1 -1
  167. package/plugins/exportFile/types/_base.js +14 -6
  168. package/plugins/exportFile/types/_base.mjs +14 -6
  169. package/plugins/filters/component/actionBar.js +9 -0
  170. package/plugins/filters/component/actionBar.mjs +9 -0
  171. package/plugins/filters/component/condition.js +13 -0
  172. package/plugins/filters/component/condition.mjs +13 -0
  173. package/plugins/filters/component/operators.js +9 -0
  174. package/plugins/filters/component/operators.mjs +9 -0
  175. package/plugins/filters/component/value.js +9 -0
  176. package/plugins/filters/component/value.mjs +9 -0
  177. package/plugins/filters/conditionCollection.js +9 -4
  178. package/plugins/filters/conditionCollection.mjs +9 -4
  179. package/plugins/filters/conditionUpdateObserver.js +53 -42
  180. package/plugins/filters/conditionUpdateObserver.mjs +53 -42
  181. package/plugins/filters/dataFilter.js +9 -3
  182. package/plugins/filters/dataFilter.mjs +9 -3
  183. package/plugins/filters/filters.js +184 -189
  184. package/plugins/filters/filters.mjs +182 -187
  185. package/plugins/filters/ui/_base.js +1 -1
  186. package/plugins/filters/ui/_base.mjs +1 -1
  187. package/plugins/filters/utils.js +1 -1
  188. package/plugins/filters/utils.mjs +1 -1
  189. package/plugins/formulas/engine/settings.js +1 -1
  190. package/plugins/formulas/engine/settings.mjs +1 -1
  191. package/plugins/formulas/formulas.js +684 -602
  192. package/plugins/formulas/formulas.mjs +682 -600
  193. package/plugins/hiddenColumns/hiddenColumns.js +174 -169
  194. package/plugins/hiddenColumns/hiddenColumns.mjs +173 -168
  195. package/plugins/hiddenRows/hiddenRows.js +170 -165
  196. package/plugins/hiddenRows/hiddenRows.mjs +169 -164
  197. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  198. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
  199. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  200. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
  201. package/plugins/manualColumnFreeze/manualColumnFreeze.js +67 -54
  202. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +64 -51
  203. package/plugins/manualColumnMove/manualColumnMove.js +287 -232
  204. package/plugins/manualColumnMove/manualColumnMove.mjs +286 -231
  205. package/plugins/manualColumnMove/ui/_base.js +9 -3
  206. package/plugins/manualColumnMove/ui/_base.mjs +9 -3
  207. package/plugins/manualColumnResize/manualColumnResize.js +291 -246
  208. package/plugins/manualColumnResize/manualColumnResize.mjs +290 -244
  209. package/plugins/manualRowMove/manualRowMove.js +223 -208
  210. package/plugins/manualRowMove/manualRowMove.mjs +222 -207
  211. package/plugins/manualRowMove/ui/_base.js +10 -5
  212. package/plugins/manualRowMove/ui/_base.mjs +10 -5
  213. package/plugins/manualRowResize/manualRowResize.js +254 -209
  214. package/plugins/manualRowResize/manualRowResize.mjs +253 -207
  215. package/plugins/mergeCells/calculations/autofill.js +9 -3
  216. package/plugins/mergeCells/calculations/autofill.mjs +9 -3
  217. package/plugins/mergeCells/calculations/selection.js +10 -4
  218. package/plugins/mergeCells/calculations/selection.mjs +10 -4
  219. package/plugins/mergeCells/cellCoords.js +16 -6
  220. package/plugins/mergeCells/cellCoords.mjs +16 -6
  221. package/plugins/mergeCells/cellsCollection.js +10 -4
  222. package/plugins/mergeCells/cellsCollection.mjs +10 -4
  223. package/plugins/mergeCells/mergeCells.js +582 -502
  224. package/plugins/mergeCells/mergeCells.mjs +580 -500
  225. package/plugins/multiColumnSorting/multiColumnSorting.js +13 -10
  226. package/plugins/multiColumnSorting/multiColumnSorting.mjs +13 -10
  227. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +16 -28
  228. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +16 -27
  229. package/plugins/nestedHeaders/nestedHeaders.js +542 -499
  230. package/plugins/nestedHeaders/nestedHeaders.mjs +554 -511
  231. package/plugins/nestedHeaders/stateManager/index.js +1 -1
  232. package/plugins/nestedHeaders/stateManager/index.mjs +1 -1
  233. package/plugins/nestedRows/data/dataManager.js +21 -15
  234. package/plugins/nestedRows/data/dataManager.mjs +21 -15
  235. package/plugins/nestedRows/nestedRows.js +326 -278
  236. package/plugins/nestedRows/nestedRows.mjs +325 -277
  237. package/plugins/nestedRows/ui/_base.js +7 -1
  238. package/plugins/nestedRows/ui/_base.mjs +7 -1
  239. package/plugins/nestedRows/ui/collapsing.js +2 -2
  240. package/plugins/nestedRows/ui/collapsing.mjs +2 -2
  241. package/plugins/nestedRows/ui/contextMenu.js +28 -18
  242. package/plugins/nestedRows/ui/contextMenu.mjs +28 -18
  243. package/plugins/nestedRows/utils/rowMoveController.js +12 -4
  244. package/plugins/nestedRows/utils/rowMoveController.mjs +12 -4
  245. package/plugins/persistentState/persistentState.js +14 -11
  246. package/plugins/persistentState/persistentState.mjs +14 -11
  247. package/plugins/persistentState/storage.js +11 -6
  248. package/plugins/persistentState/storage.mjs +11 -6
  249. package/plugins/registry.js +2 -2
  250. package/plugins/registry.mjs +2 -2
  251. package/plugins/search/search.js +57 -46
  252. package/plugins/search/search.mjs +56 -45
  253. package/plugins/touchScroll/touchScroll.js +102 -100
  254. package/plugins/touchScroll/touchScroll.mjs +100 -98
  255. package/plugins/trimRows/trimRows.js +33 -28
  256. package/plugins/trimRows/trimRows.mjs +32 -27
  257. package/plugins/undoRedo/undoRedo.js +2 -2
  258. package/plugins/undoRedo/undoRedo.mjs +2 -2
  259. package/renderers/autocompleteRenderer/autocompleteRenderer.js +11 -11
  260. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +11 -11
  261. package/renderers/baseRenderer/baseRenderer.js +2 -2
  262. package/renderers/baseRenderer/baseRenderer.mjs +2 -2
  263. package/renderers/checkboxRenderer/checkboxRenderer.js +23 -23
  264. package/renderers/checkboxRenderer/checkboxRenderer.mjs +23 -23
  265. package/renderers/dateRenderer/dateRenderer.js +4 -4
  266. package/renderers/dateRenderer/dateRenderer.mjs +4 -4
  267. package/renderers/handsontableRenderer/handsontableRenderer.js +4 -4
  268. package/renderers/handsontableRenderer/handsontableRenderer.mjs +4 -4
  269. package/renderers/htmlRenderer/htmlRenderer.js +4 -4
  270. package/renderers/htmlRenderer/htmlRenderer.mjs +4 -4
  271. package/renderers/numericRenderer/numericRenderer.js +3 -3
  272. package/renderers/numericRenderer/numericRenderer.mjs +3 -3
  273. package/renderers/passwordRenderer/passwordRenderer.js +3 -3
  274. package/renderers/passwordRenderer/passwordRenderer.mjs +3 -3
  275. package/renderers/selectRenderer/selectRenderer.js +4 -4
  276. package/renderers/selectRenderer/selectRenderer.mjs +4 -4
  277. package/renderers/textRenderer/textRenderer.js +5 -5
  278. package/renderers/textRenderer/textRenderer.mjs +5 -5
  279. package/renderers/timeRenderer/timeRenderer.js +3 -3
  280. package/renderers/timeRenderer/timeRenderer.mjs +3 -3
  281. package/selection/range.js +12 -2
  282. package/selection/range.mjs +12 -2
  283. package/selection/selection.js +3 -3
  284. package/selection/selection.mjs +3 -3
  285. package/tableView.js +208 -200
  286. package/tableView.mjs +208 -200
  287. package/translations/changesObservable/utils.js +2 -2
  288. package/translations/changesObservable/utils.mjs +2 -2
  289. package/translations/indexMapper.js +25 -22
  290. package/translations/indexMapper.mjs +25 -22
  291. package/translations/mapCollections/aggregatedCollection.js +8 -2
  292. package/translations/mapCollections/aggregatedCollection.mjs +8 -2
  293. package/translations/mapCollections/mapCollection.js +5 -2
  294. package/translations/mapCollections/mapCollection.mjs +5 -2
  295. package/translations/maps/indexMap.js +6 -1
  296. package/translations/maps/indexMap.mjs +6 -1
  297. package/translations/maps/utils/physicallyIndexed.js +2 -2
  298. package/translations/maps/utils/physicallyIndexed.mjs +2 -2
  299. package/utils/dataStructures/linkedList.js +10 -6
  300. package/utils/dataStructures/linkedList.mjs +10 -6
  301. package/utils/dataStructures/queue.js +1 -1
  302. package/utils/dataStructures/queue.mjs +1 -1
  303. package/utils/dataStructures/stack.js +1 -1
  304. package/utils/dataStructures/stack.mjs +1 -1
  305. package/utils/ghostTable.js +2 -2
  306. package/utils/ghostTable.mjs +2 -2
  307. package/utils/interval.js +73 -36
  308. package/utils/interval.mjs +73 -36
  309. package/utils/parseTable.js +1 -1
  310. package/utils/parseTable.mjs +1 -1
  311. package/validators/autocompleteValidator/autocompleteValidator.js +1 -1
  312. package/validators/autocompleteValidator/autocompleteValidator.mjs +1 -1
  313. package/validators/dateValidator/dateValidator.js +1 -1
  314. package/validators/dateValidator/dateValidator.mjs +1 -1
  315. package/validators/numericValidator/numericValidator.js +1 -1
  316. package/validators/numericValidator/numericValidator.mjs +1 -1
@@ -7,7 +7,6 @@ var _array = require("../../helpers/array");
7
7
  var _object = require("../../helpers/object");
8
8
  var _commandExecutor = require("../contextMenu/commandExecutor");
9
9
  var _utils = require("../contextMenu/utils");
10
- var _eventManager = _interopRequireDefault(require("../../eventManager"));
11
10
  var _element = require("../../helpers/dom/element");
12
11
  var _itemsFactory = require("../contextMenu/itemsFactory");
13
12
  var _menu = require("../contextMenu/menu");
@@ -18,6 +17,9 @@ var _a11y = require("../../helpers/a11y");
18
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
18
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
20
19
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
20
+ 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; }
21
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
22
+ 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); }
21
23
  function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
22
24
  _pluginHooks.default.getSingleton().register('afterDropdownMenuDefaultOptions');
23
25
  _pluginHooks.default.getSingleton().register('beforeDropdownMenuShow');
@@ -82,6 +84,12 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
82
84
  * :::
83
85
  */
84
86
  var _addCustomShortcuts = /*#__PURE__*/new WeakSet();
87
+ var _onTableClick = /*#__PURE__*/new WeakSet();
88
+ var _onAfterGetColHeader = /*#__PURE__*/new WeakSet();
89
+ var _onMenuBeforeOpen = /*#__PURE__*/new WeakSet();
90
+ var _onMenuAfterOpen = /*#__PURE__*/new WeakSet();
91
+ var _onSubMenuAfterOpen = /*#__PURE__*/new WeakSet();
92
+ var _onMenuAfterClose = /*#__PURE__*/new WeakSet();
85
93
  class DropdownMenu extends _base.BasePlugin {
86
94
  static get PLUGIN_KEY() {
87
95
  return PLUGIN_KEY;
@@ -101,45 +109,83 @@ class DropdownMenu extends _base.BasePlugin {
101
109
  static get DEFAULT_ITEMS() {
102
110
  return [_predefinedItems.COLUMN_LEFT, _predefinedItems.COLUMN_RIGHT, _predefinedItems.SEPARATOR, _predefinedItems.REMOVE_COLUMN, _predefinedItems.SEPARATOR, _predefinedItems.CLEAR_COLUMN, _predefinedItems.SEPARATOR, _predefinedItems.READ_ONLY, _predefinedItems.SEPARATOR, _predefinedItems.ALIGNMENT];
103
111
  }
112
+
113
+ /**
114
+ * Instance of {@link CommandExecutor}.
115
+ *
116
+ * @private
117
+ * @type {CommandExecutor}
118
+ */
119
+
104
120
  constructor(hotInstance) {
105
121
  super(hotInstance);
122
+
123
+ // One listener for enable/disable functionality
106
124
  /**
107
- * Instance of {@link EventManager}.
125
+ * On menu after close listener.
108
126
  *
109
127
  * @private
110
- * @type {EventManager}
128
+ * @fires Hooks#afterDropdownMenuHide
111
129
  */
130
+ _classPrivateMethodInitSpec(this, _onMenuAfterClose);
112
131
  /**
113
- * Add custom shortcuts to the provided menu instance.
132
+ * Listener for the `afterSubmenuOpen` hook.
114
133
  *
115
- * @param {Menu} menuInstance The menu instance.
134
+ * @private
135
+ * @param {Menu} subMenuInstance The opened sub menu instance.
116
136
  */
117
- _classPrivateMethodInitSpec(this, _addCustomShortcuts);
118
- this.eventManager = new _eventManager.default(this);
137
+ _classPrivateMethodInitSpec(this, _onSubMenuAfterOpen);
138
+ /**
139
+ * On menu after open listener.
140
+ *
141
+ * @private
142
+ * @fires Hooks#afterDropdownMenuShow
143
+ */
144
+ _classPrivateMethodInitSpec(this, _onMenuAfterOpen);
145
+ /**
146
+ * On menu before open listener.
147
+ *
148
+ * @private
149
+ * @fires Hooks#beforeDropdownMenuShow
150
+ */
151
+ _classPrivateMethodInitSpec(this, _onMenuBeforeOpen);
119
152
  /**
120
- * Instance of {@link CommandExecutor}.
153
+ * On after get column header listener.
121
154
  *
122
155
  * @private
123
- * @type {CommandExecutor}
156
+ * @param {number} col Visual column index.
157
+ * @param {HTMLTableCellElement} TH Header's TH element.
124
158
  */
125
- this.commandExecutor = new _commandExecutor.CommandExecutor(this.hot);
159
+ _classPrivateMethodInitSpec(this, _onAfterGetColHeader);
160
+ /**
161
+ * Table click listener.
162
+ *
163
+ * @private
164
+ * @param {Event} event The mouse event object.
165
+ */
166
+ _classPrivateMethodInitSpec(this, _onTableClick);
167
+ /**
168
+ * Add custom shortcuts to the provided menu instance.
169
+ *
170
+ * @param {Menu} menuInstance The menu instance.
171
+ */
172
+ _classPrivateMethodInitSpec(this, _addCustomShortcuts);
173
+ _defineProperty(this, "commandExecutor", new _commandExecutor.CommandExecutor(this.hot));
126
174
  /**
127
175
  * Instance of {@link ItemsFactory}.
128
176
  *
129
177
  * @private
130
178
  * @type {ItemsFactory}
131
179
  */
132
- this.itemsFactory = null;
180
+ _defineProperty(this, "itemsFactory", null);
133
181
  /**
134
182
  * Instance of {@link Menu}.
135
183
  *
136
184
  * @private
137
185
  * @type {Menu}
138
186
  */
139
- this.menu = null;
140
-
141
- // One listener for enable/disable functionality
142
- this.hot.addHook('afterGetColHeader', (col, TH) => this.onAfterGetColHeader(col, TH));
187
+ _defineProperty(this, "menu", null);
188
+ this.hot.addHook('afterGetColHeader', (col, TH) => _classPrivateMethodGet(this, _onAfterGetColHeader, _onAfterGetColHeader2).call(this, col, TH));
143
189
  }
144
190
 
145
191
  /**
@@ -188,10 +234,10 @@ class DropdownMenu extends _base.BasePlugin {
188
234
  });
189
235
  this.hot.runHooks('beforeDropdownMenuSetItems', menuItems);
190
236
  this.menu.setMenuItems(menuItems);
191
- this.menu.addLocalHook('beforeOpen', () => this.onMenuBeforeOpen());
192
- this.menu.addLocalHook('afterOpen', () => this.onMenuAfterOpen());
193
- this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => this.onSubMenuAfterOpen(subMenuInstance));
194
- this.menu.addLocalHook('afterClose', () => this.onMenuAfterClose());
237
+ this.menu.addLocalHook('beforeOpen', () => _classPrivateMethodGet(this, _onMenuBeforeOpen, _onMenuBeforeOpen2).call(this));
238
+ this.menu.addLocalHook('afterOpen', () => _classPrivateMethodGet(this, _onMenuAfterOpen, _onMenuAfterOpen2).call(this));
239
+ this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => _classPrivateMethodGet(this, _onSubMenuAfterOpen, _onSubMenuAfterOpen2).call(this, subMenuInstance));
240
+ this.menu.addLocalHook('afterClose', () => _classPrivateMethodGet(this, _onMenuAfterClose, _onMenuAfterClose2).call(this));
195
241
  this.menu.addLocalHook('executeCommand', function () {
196
242
  for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
197
243
  params[_key] = arguments[_key];
@@ -290,7 +336,7 @@ class DropdownMenu extends _base.BasePlugin {
290
336
  * @private
291
337
  */
292
338
  registerEvents() {
293
- this.eventManager.addEventListener(this.hot.rootElement, 'click', event => this.onTableClick(event));
339
+ this.eventManager.addEventListener(this.hot.rootElement, 'click', event => _classPrivateMethodGet(this, _onTableClick, _onTableClick2).call(this, event));
294
340
  }
295
341
 
296
342
  /**
@@ -384,115 +430,6 @@ class DropdownMenu extends _base.BasePlugin {
384
430
  }
385
431
  }
386
432
  }
387
- /**
388
- * Table click listener.
389
- *
390
- * @private
391
- * @param {Event} event The mouse event object.
392
- */
393
- onTableClick(event) {
394
- event.stopPropagation();
395
- if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
396
- const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
397
- const rect = event.target.getBoundingClientRect();
398
- this.open({
399
- left: rect.left + offset.left,
400
- top: rect.top + event.target.offsetHeight + 3 + offset.top
401
- }, {
402
- left: rect.width
403
- });
404
- }
405
- }
406
-
407
- /**
408
- * On after get column header listener.
409
- *
410
- * @private
411
- * @param {number} col Visual column index.
412
- * @param {HTMLTableCellElement} TH Header's TH element.
413
- */
414
- onAfterGetColHeader(col, TH) {
415
- // Corner or a higher-level header
416
- const headerRow = TH.parentNode;
417
- if (!headerRow) {
418
- return;
419
- }
420
- const headerRowList = headerRow.parentNode.childNodes;
421
- const level = Array.prototype.indexOf.call(headerRowList, headerRow);
422
- if (col < 0 || level !== headerRowList.length - 1) {
423
- return;
424
- }
425
- const existingButton = TH.querySelector(`.${BUTTON_CLASS_NAME}`);
426
-
427
- // Plugin enabled and buttons already exists, return.
428
- if (this.enabled && existingButton) {
429
- return;
430
- }
431
- // Plugin disabled and buttons still exists, so remove them.
432
- if (!this.enabled) {
433
- if (existingButton) {
434
- existingButton.parentNode.removeChild(existingButton);
435
- }
436
- return;
437
- }
438
- const button = this.hot.rootDocument.createElement('button');
439
- button.className = BUTTON_CLASS_NAME;
440
- button.type = 'button';
441
- button.tabIndex = -1;
442
- if (this.hot.getSettings().ariaTags) {
443
- (0, _element.setAttribute)(button, [(0, _a11y.A11Y_LABEL)(this.hot.getTranslatedPhrase(_constants.COLUMN_HEADER_LABEL_OPEN_MENU))]);
444
- (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_HASPOPUP)('menu')]);
445
- }
446
-
447
- // prevent page reload on button click
448
- button.onclick = function () {
449
- return false;
450
- };
451
- TH.firstChild.insertBefore(button, TH.firstChild.firstChild);
452
- }
453
-
454
- /**
455
- * On menu before open listener.
456
- *
457
- * @private
458
- * @fires Hooks#beforeDropdownMenuShow
459
- */
460
- onMenuBeforeOpen() {
461
- this.hot.runHooks('beforeDropdownMenuShow', this);
462
- }
463
-
464
- /**
465
- * On menu after open listener.
466
- *
467
- * @private
468
- * @fires Hooks#afterDropdownMenuShow
469
- */
470
- onMenuAfterOpen() {
471
- this.hot.runHooks('afterDropdownMenuShow', this);
472
- _classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, this.menu);
473
- }
474
-
475
- /**
476
- * Listener for the `afterSubmenuOpen` hook.
477
- *
478
- * @private
479
- * @param {Menu} subMenuInstance The opened sub menu instance.
480
- */
481
- onSubMenuAfterOpen(subMenuInstance) {
482
- _classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, subMenuInstance);
483
- }
484
-
485
- /**
486
- * On menu after close listener.
487
- *
488
- * @private
489
- * @fires Hooks#afterDropdownMenuHide
490
- */
491
- onMenuAfterClose() {
492
- this.hot.listen();
493
- this.hot.runHooks('afterDropdownMenuHide', this);
494
- }
495
-
496
433
  /**
497
434
  * Destroys the plugin instance.
498
435
  */
@@ -511,6 +448,72 @@ function _addCustomShortcuts2(menuInstance) {
511
448
  callback: () => false
512
449
  }]);
513
450
  }
451
+ function _onTableClick2(event) {
452
+ event.stopPropagation();
453
+ if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
454
+ const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
455
+ const rect = event.target.getBoundingClientRect();
456
+ this.open({
457
+ left: rect.left + offset.left,
458
+ top: rect.top + event.target.offsetHeight + 3 + offset.top
459
+ }, {
460
+ left: rect.width
461
+ });
462
+ }
463
+ }
464
+ function _onAfterGetColHeader2(col, TH) {
465
+ // Corner or a higher-level header
466
+ const headerRow = TH.parentNode;
467
+ if (!headerRow) {
468
+ return;
469
+ }
470
+ const headerRowList = headerRow.parentNode.childNodes;
471
+ const level = Array.prototype.indexOf.call(headerRowList, headerRow);
472
+ if (col < 0 || level !== headerRowList.length - 1) {
473
+ return;
474
+ }
475
+ const existingButton = TH.querySelector(`.${BUTTON_CLASS_NAME}`);
476
+
477
+ // Plugin enabled and buttons already exists, return.
478
+ if (this.enabled && existingButton) {
479
+ return;
480
+ }
481
+ // Plugin disabled and buttons still exists, so remove them.
482
+ if (!this.enabled) {
483
+ if (existingButton) {
484
+ existingButton.parentNode.removeChild(existingButton);
485
+ }
486
+ return;
487
+ }
488
+ const button = this.hot.rootDocument.createElement('button');
489
+ button.className = BUTTON_CLASS_NAME;
490
+ button.type = 'button';
491
+ button.tabIndex = -1;
492
+ if (this.hot.getSettings().ariaTags) {
493
+ (0, _element.setAttribute)(button, [(0, _a11y.A11Y_LABEL)(this.hot.getTranslatedPhrase(_constants.COLUMN_HEADER_LABEL_OPEN_MENU))]);
494
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_HASPOPUP)('menu')]);
495
+ }
496
+
497
+ // prevent page reload on button click
498
+ button.onclick = function () {
499
+ return false;
500
+ };
501
+ TH.firstChild.insertBefore(button, TH.firstChild.firstChild);
502
+ }
503
+ function _onMenuBeforeOpen2() {
504
+ this.hot.runHooks('beforeDropdownMenuShow', this);
505
+ }
506
+ function _onMenuAfterOpen2() {
507
+ this.hot.runHooks('afterDropdownMenuShow', this);
508
+ _classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, this.menu);
509
+ }
510
+ function _onSubMenuAfterOpen2(subMenuInstance) {
511
+ _classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, subMenuInstance);
512
+ }
513
+ function _onMenuAfterClose2() {
514
+ this.hot.listen();
515
+ this.hot.runHooks('afterDropdownMenuHide', this);
516
+ }
514
517
  DropdownMenu.SEPARATOR = {
515
518
  name: _predefinedItems.SEPARATOR
516
519
  };
@@ -1,13 +1,15 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
3
3
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
4
+ 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; }
5
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
6
+ 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); }
4
7
  function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
5
8
  import { BasePlugin } from "../base/index.mjs";
6
9
  import { arrayEach } from "../../helpers/array.mjs";
7
10
  import { objectEach } from "../../helpers/object.mjs";
8
11
  import { CommandExecutor } from "../contextMenu/commandExecutor.mjs";
9
12
  import { getDocumentOffsetByElement } from "../contextMenu/utils.mjs";
10
- import EventManager from "../../eventManager.mjs";
11
13
  import { hasClass, setAttribute } from "../../helpers/dom/element.mjs";
12
14
  import { ItemsFactory } from "../contextMenu/itemsFactory.mjs";
13
15
  import { Menu } from "../contextMenu/menu/index.mjs";
@@ -76,6 +78,12 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
76
78
  * :::
77
79
  */
78
80
  var _addCustomShortcuts = /*#__PURE__*/new WeakSet();
81
+ var _onTableClick = /*#__PURE__*/new WeakSet();
82
+ var _onAfterGetColHeader = /*#__PURE__*/new WeakSet();
83
+ var _onMenuBeforeOpen = /*#__PURE__*/new WeakSet();
84
+ var _onMenuAfterOpen = /*#__PURE__*/new WeakSet();
85
+ var _onSubMenuAfterOpen = /*#__PURE__*/new WeakSet();
86
+ var _onMenuAfterClose = /*#__PURE__*/new WeakSet();
79
87
  export class DropdownMenu extends BasePlugin {
80
88
  static get PLUGIN_KEY() {
81
89
  return PLUGIN_KEY;
@@ -95,45 +103,83 @@ export class DropdownMenu extends BasePlugin {
95
103
  static get DEFAULT_ITEMS() {
96
104
  return [COLUMN_LEFT, COLUMN_RIGHT, SEPARATOR, REMOVE_COLUMN, SEPARATOR, CLEAR_COLUMN, SEPARATOR, READ_ONLY, SEPARATOR, ALIGNMENT];
97
105
  }
106
+
107
+ /**
108
+ * Instance of {@link CommandExecutor}.
109
+ *
110
+ * @private
111
+ * @type {CommandExecutor}
112
+ */
113
+
98
114
  constructor(hotInstance) {
99
115
  super(hotInstance);
116
+
117
+ // One listener for enable/disable functionality
100
118
  /**
101
- * Instance of {@link EventManager}.
119
+ * On menu after close listener.
102
120
  *
103
121
  * @private
104
- * @type {EventManager}
122
+ * @fires Hooks#afterDropdownMenuHide
105
123
  */
124
+ _classPrivateMethodInitSpec(this, _onMenuAfterClose);
106
125
  /**
107
- * Add custom shortcuts to the provided menu instance.
126
+ * Listener for the `afterSubmenuOpen` hook.
108
127
  *
109
- * @param {Menu} menuInstance The menu instance.
128
+ * @private
129
+ * @param {Menu} subMenuInstance The opened sub menu instance.
110
130
  */
111
- _classPrivateMethodInitSpec(this, _addCustomShortcuts);
112
- this.eventManager = new EventManager(this);
131
+ _classPrivateMethodInitSpec(this, _onSubMenuAfterOpen);
132
+ /**
133
+ * On menu after open listener.
134
+ *
135
+ * @private
136
+ * @fires Hooks#afterDropdownMenuShow
137
+ */
138
+ _classPrivateMethodInitSpec(this, _onMenuAfterOpen);
139
+ /**
140
+ * On menu before open listener.
141
+ *
142
+ * @private
143
+ * @fires Hooks#beforeDropdownMenuShow
144
+ */
145
+ _classPrivateMethodInitSpec(this, _onMenuBeforeOpen);
113
146
  /**
114
- * Instance of {@link CommandExecutor}.
147
+ * On after get column header listener.
115
148
  *
116
149
  * @private
117
- * @type {CommandExecutor}
150
+ * @param {number} col Visual column index.
151
+ * @param {HTMLTableCellElement} TH Header's TH element.
118
152
  */
119
- this.commandExecutor = new CommandExecutor(this.hot);
153
+ _classPrivateMethodInitSpec(this, _onAfterGetColHeader);
154
+ /**
155
+ * Table click listener.
156
+ *
157
+ * @private
158
+ * @param {Event} event The mouse event object.
159
+ */
160
+ _classPrivateMethodInitSpec(this, _onTableClick);
161
+ /**
162
+ * Add custom shortcuts to the provided menu instance.
163
+ *
164
+ * @param {Menu} menuInstance The menu instance.
165
+ */
166
+ _classPrivateMethodInitSpec(this, _addCustomShortcuts);
167
+ _defineProperty(this, "commandExecutor", new CommandExecutor(this.hot));
120
168
  /**
121
169
  * Instance of {@link ItemsFactory}.
122
170
  *
123
171
  * @private
124
172
  * @type {ItemsFactory}
125
173
  */
126
- this.itemsFactory = null;
174
+ _defineProperty(this, "itemsFactory", null);
127
175
  /**
128
176
  * Instance of {@link Menu}.
129
177
  *
130
178
  * @private
131
179
  * @type {Menu}
132
180
  */
133
- this.menu = null;
134
-
135
- // One listener for enable/disable functionality
136
- this.hot.addHook('afterGetColHeader', (col, TH) => this.onAfterGetColHeader(col, TH));
181
+ _defineProperty(this, "menu", null);
182
+ this.hot.addHook('afterGetColHeader', (col, TH) => _classPrivateMethodGet(this, _onAfterGetColHeader, _onAfterGetColHeader2).call(this, col, TH));
137
183
  }
138
184
 
139
185
  /**
@@ -182,10 +228,10 @@ export class DropdownMenu extends BasePlugin {
182
228
  });
183
229
  this.hot.runHooks('beforeDropdownMenuSetItems', menuItems);
184
230
  this.menu.setMenuItems(menuItems);
185
- this.menu.addLocalHook('beforeOpen', () => this.onMenuBeforeOpen());
186
- this.menu.addLocalHook('afterOpen', () => this.onMenuAfterOpen());
187
- this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => this.onSubMenuAfterOpen(subMenuInstance));
188
- this.menu.addLocalHook('afterClose', () => this.onMenuAfterClose());
231
+ this.menu.addLocalHook('beforeOpen', () => _classPrivateMethodGet(this, _onMenuBeforeOpen, _onMenuBeforeOpen2).call(this));
232
+ this.menu.addLocalHook('afterOpen', () => _classPrivateMethodGet(this, _onMenuAfterOpen, _onMenuAfterOpen2).call(this));
233
+ this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => _classPrivateMethodGet(this, _onSubMenuAfterOpen, _onSubMenuAfterOpen2).call(this, subMenuInstance));
234
+ this.menu.addLocalHook('afterClose', () => _classPrivateMethodGet(this, _onMenuAfterClose, _onMenuAfterClose2).call(this));
189
235
  this.menu.addLocalHook('executeCommand', function () {
190
236
  for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
191
237
  params[_key] = arguments[_key];
@@ -284,7 +330,7 @@ export class DropdownMenu extends BasePlugin {
284
330
  * @private
285
331
  */
286
332
  registerEvents() {
287
- this.eventManager.addEventListener(this.hot.rootElement, 'click', event => this.onTableClick(event));
333
+ this.eventManager.addEventListener(this.hot.rootElement, 'click', event => _classPrivateMethodGet(this, _onTableClick, _onTableClick2).call(this, event));
288
334
  }
289
335
 
290
336
  /**
@@ -378,115 +424,6 @@ export class DropdownMenu extends BasePlugin {
378
424
  }
379
425
  }
380
426
  }
381
- /**
382
- * Table click listener.
383
- *
384
- * @private
385
- * @param {Event} event The mouse event object.
386
- */
387
- onTableClick(event) {
388
- event.stopPropagation();
389
- if (hasClass(event.target, BUTTON_CLASS_NAME)) {
390
- const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
391
- const rect = event.target.getBoundingClientRect();
392
- this.open({
393
- left: rect.left + offset.left,
394
- top: rect.top + event.target.offsetHeight + 3 + offset.top
395
- }, {
396
- left: rect.width
397
- });
398
- }
399
- }
400
-
401
- /**
402
- * On after get column header listener.
403
- *
404
- * @private
405
- * @param {number} col Visual column index.
406
- * @param {HTMLTableCellElement} TH Header's TH element.
407
- */
408
- onAfterGetColHeader(col, TH) {
409
- // Corner or a higher-level header
410
- const headerRow = TH.parentNode;
411
- if (!headerRow) {
412
- return;
413
- }
414
- const headerRowList = headerRow.parentNode.childNodes;
415
- const level = Array.prototype.indexOf.call(headerRowList, headerRow);
416
- if (col < 0 || level !== headerRowList.length - 1) {
417
- return;
418
- }
419
- const existingButton = TH.querySelector(`.${BUTTON_CLASS_NAME}`);
420
-
421
- // Plugin enabled and buttons already exists, return.
422
- if (this.enabled && existingButton) {
423
- return;
424
- }
425
- // Plugin disabled and buttons still exists, so remove them.
426
- if (!this.enabled) {
427
- if (existingButton) {
428
- existingButton.parentNode.removeChild(existingButton);
429
- }
430
- return;
431
- }
432
- const button = this.hot.rootDocument.createElement('button');
433
- button.className = BUTTON_CLASS_NAME;
434
- button.type = 'button';
435
- button.tabIndex = -1;
436
- if (this.hot.getSettings().ariaTags) {
437
- setAttribute(button, [A11Y_LABEL(this.hot.getTranslatedPhrase(COLUMN_HEADER_LABEL_OPEN_MENU))]);
438
- setAttribute(TH, [A11Y_HASPOPUP('menu')]);
439
- }
440
-
441
- // prevent page reload on button click
442
- button.onclick = function () {
443
- return false;
444
- };
445
- TH.firstChild.insertBefore(button, TH.firstChild.firstChild);
446
- }
447
-
448
- /**
449
- * On menu before open listener.
450
- *
451
- * @private
452
- * @fires Hooks#beforeDropdownMenuShow
453
- */
454
- onMenuBeforeOpen() {
455
- this.hot.runHooks('beforeDropdownMenuShow', this);
456
- }
457
-
458
- /**
459
- * On menu after open listener.
460
- *
461
- * @private
462
- * @fires Hooks#afterDropdownMenuShow
463
- */
464
- onMenuAfterOpen() {
465
- this.hot.runHooks('afterDropdownMenuShow', this);
466
- _classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, this.menu);
467
- }
468
-
469
- /**
470
- * Listener for the `afterSubmenuOpen` hook.
471
- *
472
- * @private
473
- * @param {Menu} subMenuInstance The opened sub menu instance.
474
- */
475
- onSubMenuAfterOpen(subMenuInstance) {
476
- _classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, subMenuInstance);
477
- }
478
-
479
- /**
480
- * On menu after close listener.
481
- *
482
- * @private
483
- * @fires Hooks#afterDropdownMenuHide
484
- */
485
- onMenuAfterClose() {
486
- this.hot.listen();
487
- this.hot.runHooks('afterDropdownMenuHide', this);
488
- }
489
-
490
427
  /**
491
428
  * Destroys the plugin instance.
492
429
  */
@@ -504,6 +441,72 @@ function _addCustomShortcuts2(menuInstance) {
504
441
  callback: () => false
505
442
  }]);
506
443
  }
444
+ function _onTableClick2(event) {
445
+ event.stopPropagation();
446
+ if (hasClass(event.target, BUTTON_CLASS_NAME)) {
447
+ const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
448
+ const rect = event.target.getBoundingClientRect();
449
+ this.open({
450
+ left: rect.left + offset.left,
451
+ top: rect.top + event.target.offsetHeight + 3 + offset.top
452
+ }, {
453
+ left: rect.width
454
+ });
455
+ }
456
+ }
457
+ function _onAfterGetColHeader2(col, TH) {
458
+ // Corner or a higher-level header
459
+ const headerRow = TH.parentNode;
460
+ if (!headerRow) {
461
+ return;
462
+ }
463
+ const headerRowList = headerRow.parentNode.childNodes;
464
+ const level = Array.prototype.indexOf.call(headerRowList, headerRow);
465
+ if (col < 0 || level !== headerRowList.length - 1) {
466
+ return;
467
+ }
468
+ const existingButton = TH.querySelector(`.${BUTTON_CLASS_NAME}`);
469
+
470
+ // Plugin enabled and buttons already exists, return.
471
+ if (this.enabled && existingButton) {
472
+ return;
473
+ }
474
+ // Plugin disabled and buttons still exists, so remove them.
475
+ if (!this.enabled) {
476
+ if (existingButton) {
477
+ existingButton.parentNode.removeChild(existingButton);
478
+ }
479
+ return;
480
+ }
481
+ const button = this.hot.rootDocument.createElement('button');
482
+ button.className = BUTTON_CLASS_NAME;
483
+ button.type = 'button';
484
+ button.tabIndex = -1;
485
+ if (this.hot.getSettings().ariaTags) {
486
+ setAttribute(button, [A11Y_LABEL(this.hot.getTranslatedPhrase(COLUMN_HEADER_LABEL_OPEN_MENU))]);
487
+ setAttribute(TH, [A11Y_HASPOPUP('menu')]);
488
+ }
489
+
490
+ // prevent page reload on button click
491
+ button.onclick = function () {
492
+ return false;
493
+ };
494
+ TH.firstChild.insertBefore(button, TH.firstChild.firstChild);
495
+ }
496
+ function _onMenuBeforeOpen2() {
497
+ this.hot.runHooks('beforeDropdownMenuShow', this);
498
+ }
499
+ function _onMenuAfterOpen2() {
500
+ this.hot.runHooks('afterDropdownMenuShow', this);
501
+ _classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, this.menu);
502
+ }
503
+ function _onSubMenuAfterOpen2(subMenuInstance) {
504
+ _classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, subMenuInstance);
505
+ }
506
+ function _onMenuAfterClose2() {
507
+ this.hot.listen();
508
+ this.hot.runHooks('afterDropdownMenuHide', this);
509
+ }
507
510
  DropdownMenu.SEPARATOR = {
508
511
  name: SEPARATOR
509
512
  };