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.
- package/3rdparty/SheetClip/SheetClip.js +2 -2
- package/3rdparty/SheetClip/SheetClip.mjs +2 -2
- package/3rdparty/autoResize/autoResize.js +2 -2
- package/3rdparty/autoResize/autoResize.mjs +2 -2
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +108 -85
- package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +108 -85
- package/3rdparty/walkontable/src/calculator/viewportRows.js +60 -52
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +60 -52
- package/3rdparty/walkontable/src/core/clone.js +6 -0
- package/3rdparty/walkontable/src/core/clone.mjs +6 -0
- package/3rdparty/walkontable/src/event.js +125 -74
- package/3rdparty/walkontable/src/event.mjs +125 -74
- package/3rdparty/walkontable/src/filter/column.js +16 -0
- package/3rdparty/walkontable/src/filter/column.mjs +16 -0
- package/3rdparty/walkontable/src/filter/row.js +16 -0
- package/3rdparty/walkontable/src/filter/row.mjs +16 -0
- package/3rdparty/walkontable/src/overlay/bottom.js +1 -1
- package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/top.js +1 -1
- package/3rdparty/walkontable/src/overlay/top.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/_base.js +12 -5
- package/3rdparty/walkontable/src/renderer/_base.mjs +12 -5
- package/3rdparty/walkontable/src/renderer/cells.js +6 -2
- package/3rdparty/walkontable/src/renderer/cells.mjs +6 -2
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +6 -2
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +6 -2
- package/3rdparty/walkontable/src/renderer/rows.js +5 -0
- package/3rdparty/walkontable/src/renderer/rows.mjs +5 -0
- package/3rdparty/walkontable/src/renderer/table.js +24 -17
- package/3rdparty/walkontable/src/renderer/table.mjs +24 -17
- package/3rdparty/walkontable/src/scroll.js +2 -2
- package/3rdparty/walkontable/src/scroll.mjs +2 -2
- package/3rdparty/walkontable/src/selection/border/border.js +1 -1
- package/3rdparty/walkontable/src/selection/border/border.mjs +1 -1
- package/3rdparty/walkontable/src/settings.js +10 -10
- package/3rdparty/walkontable/src/settings.mjs +10 -10
- package/3rdparty/walkontable/src/table.js +3 -3
- package/3rdparty/walkontable/src/table.mjs +3 -3
- package/3rdparty/walkontable/src/utils/column.js +19 -4
- package/3rdparty/walkontable/src/utils/column.mjs +19 -4
- package/3rdparty/walkontable/src/utils/nodesPool.js +5 -0
- package/3rdparty/walkontable/src/utils/nodesPool.mjs +5 -0
- package/3rdparty/walkontable/src/utils/orderView/view.js +13 -6
- package/3rdparty/walkontable/src/utils/orderView/view.mjs +13 -6
- package/3rdparty/walkontable/src/utils/orderView/viewSize.js +9 -6
- package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +9 -6
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +7 -4
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +7 -4
- package/3rdparty/walkontable/src/utils/row.js +14 -2
- package/3rdparty/walkontable/src/utils/row.mjs +14 -2
- package/3rdparty/walkontable/src/viewport.js +9 -9
- package/3rdparty/walkontable/src/viewport.mjs +9 -9
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core.js +25 -25
- package/core.mjs +25 -25
- package/dataMap/dataMap.js +99 -90
- package/dataMap/dataMap.mjs +99 -90
- package/dataMap/dataSource.js +14 -8
- package/dataMap/dataSource.mjs +14 -8
- package/dataMap/metaManager/lazyFactoryMap.js +19 -7
- package/dataMap/metaManager/lazyFactoryMap.mjs +19 -7
- package/dataMap/metaManager/metaLayers/cellMeta.js +8 -3
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +8 -3
- package/dataMap/metaManager/metaLayers/columnMeta.js +7 -1
- package/dataMap/metaManager/metaLayers/columnMeta.mjs +7 -1
- package/dataMap/metaManager/metaLayers/globalMeta.js +6 -1
- package/dataMap/metaManager/metaLayers/globalMeta.mjs +6 -1
- package/dataMap/metaManager/metaLayers/tableMeta.js +6 -2
- package/dataMap/metaManager/metaLayers/tableMeta.mjs +6 -2
- package/dataMap/metaManager/metaSchema.js +55 -55
- package/dataMap/metaManager/metaSchema.mjs +55 -55
- package/dataMap/metaManager/mods/dynamicCellMeta.js +7 -2
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +7 -2
- package/dataMap/metaManager/mods/extendMetaProperties.js +8 -4
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +8 -4
- package/dataMap/metaManager/utils.js +2 -2
- package/dataMap/metaManager/utils.mjs +2 -2
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +7244 -6347
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +120 -120
- package/dist/handsontable.js +7243 -6346
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +28 -28
- package/editorManager.js +105 -95
- package/editorManager.mjs +105 -95
- package/editors/autocompleteEditor/autocompleteEditor.js +47 -46
- package/editors/autocompleteEditor/autocompleteEditor.mjs +46 -45
- package/editors/baseEditor/baseEditor.js +23 -26
- package/editors/baseEditor/baseEditor.mjs +23 -26
- package/editors/dateEditor/dateEditor.js +24 -15
- package/editors/dateEditor/dateEditor.mjs +24 -15
- package/editors/dropdownEditor/dropdownEditor.js +1 -1
- package/editors/dropdownEditor/dropdownEditor.mjs +1 -1
- package/editors/handsontableEditor/handsontableEditor.js +4 -4
- package/editors/handsontableEditor/handsontableEditor.mjs +4 -4
- package/editors/textEditor/textEditor.js +23 -17
- package/editors/textEditor/textEditor.mjs +24 -18
- package/eventManager.js +8 -0
- package/eventManager.mjs +8 -0
- package/helpers/array.js +2 -2
- package/helpers/array.mjs +2 -2
- package/helpers/dom/element.js +7 -7
- package/helpers/dom/element.mjs +7 -7
- package/helpers/function.js +1 -1
- package/helpers/function.mjs +1 -1
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/object.js +4 -4
- package/helpers/object.mjs +4 -4
- package/helpers/string.js +1 -1
- package/helpers/string.mjs +1 -1
- package/package.json +1 -1
- package/pluginHooks.d.ts +0 -2
- package/pluginHooks.js +12 -3
- package/pluginHooks.mjs +12 -3
- package/plugins/autoColumnSize/autoColumnSize.js +141 -130
- package/plugins/autoColumnSize/autoColumnSize.mjs +140 -129
- package/plugins/autoRowSize/autoRowSize.js +112 -125
- package/plugins/autoRowSize/autoRowSize.mjs +110 -123
- package/plugins/autofill/autofill.js +97 -102
- package/plugins/autofill/autofill.mjs +96 -101
- package/plugins/base/base.js +57 -22
- package/plugins/base/base.mjs +56 -22
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +29 -24
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +28 -23
- package/plugins/collapsibleColumns/collapsibleColumns.js +104 -107
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +102 -104
- package/plugins/columnSorting/columnSorting.js +105 -98
- package/plugins/columnSorting/columnSorting.mjs +104 -97
- package/plugins/columnSorting/columnStatesManager.js +12 -6
- package/plugins/columnSorting/columnStatesManager.mjs +12 -6
- package/plugins/columnSummary/columnSummary.js +71 -58
- package/plugins/columnSummary/columnSummary.mjs +70 -57
- package/plugins/columnSummary/endpoints.js +20 -14
- package/plugins/columnSummary/endpoints.mjs +20 -14
- package/plugins/comments/commentEditor.js +30 -2
- package/plugins/comments/commentEditor.mjs +30 -2
- package/plugins/comments/comments.js +158 -169
- package/plugins/comments/comments.mjs +157 -168
- package/plugins/comments/displaySwitch.js +7 -3
- package/plugins/comments/displaySwitch.mjs +7 -3
- package/plugins/contextMenu/commandExecutor.js +15 -2
- package/plugins/contextMenu/commandExecutor.mjs +15 -2
- package/plugins/contextMenu/contextMenu.js +91 -101
- package/plugins/contextMenu/contextMenu.mjs +90 -100
- package/plugins/contextMenu/itemsFactory.js +19 -4
- package/plugins/contextMenu/itemsFactory.mjs +19 -4
- package/plugins/contextMenu/menu/cursor.js +36 -0
- package/plugins/contextMenu/menu/cursor.mjs +36 -0
- package/plugins/contextMenu/menu/menu.js +57 -5
- package/plugins/contextMenu/menu/menu.mjs +57 -5
- package/plugins/copyPaste/copyPaste.js +74 -75
- package/plugins/copyPaste/copyPaste.mjs +74 -75
- package/plugins/customBorders/customBorders.js +49 -48
- package/plugins/customBorders/customBorders.mjs +48 -47
- package/plugins/dragToScroll/dragToScroll.js +50 -54
- package/plugins/dragToScroll/dragToScroll.mjs +49 -52
- package/plugins/dropdownMenu/dropdownMenu.js +132 -129
- package/plugins/dropdownMenu/dropdownMenu.mjs +132 -129
- package/plugins/exportFile/dataProvider.js +7 -2
- package/plugins/exportFile/dataProvider.mjs +7 -2
- package/plugins/exportFile/exportFile.js +1 -1
- package/plugins/exportFile/exportFile.mjs +1 -1
- package/plugins/exportFile/types/_base.js +14 -6
- package/plugins/exportFile/types/_base.mjs +14 -6
- package/plugins/filters/component/actionBar.js +9 -0
- package/plugins/filters/component/actionBar.mjs +9 -0
- package/plugins/filters/component/condition.js +13 -0
- package/plugins/filters/component/condition.mjs +13 -0
- package/plugins/filters/component/operators.js +9 -0
- package/plugins/filters/component/operators.mjs +9 -0
- package/plugins/filters/component/value.js +9 -0
- package/plugins/filters/component/value.mjs +9 -0
- package/plugins/filters/conditionCollection.js +9 -4
- package/plugins/filters/conditionCollection.mjs +9 -4
- package/plugins/filters/conditionUpdateObserver.js +53 -42
- package/plugins/filters/conditionUpdateObserver.mjs +53 -42
- package/plugins/filters/dataFilter.js +9 -3
- package/plugins/filters/dataFilter.mjs +9 -3
- package/plugins/filters/filters.js +184 -189
- package/plugins/filters/filters.mjs +182 -187
- package/plugins/filters/ui/_base.js +1 -1
- package/plugins/filters/ui/_base.mjs +1 -1
- package/plugins/filters/utils.js +1 -1
- package/plugins/filters/utils.mjs +1 -1
- package/plugins/formulas/engine/settings.js +1 -1
- package/plugins/formulas/engine/settings.mjs +1 -1
- package/plugins/formulas/formulas.js +684 -602
- package/plugins/formulas/formulas.mjs +682 -600
- package/plugins/hiddenColumns/hiddenColumns.js +174 -169
- package/plugins/hiddenColumns/hiddenColumns.mjs +173 -168
- package/plugins/hiddenRows/hiddenRows.js +170 -165
- package/plugins/hiddenRows/hiddenRows.mjs +169 -164
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +67 -54
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +64 -51
- package/plugins/manualColumnMove/manualColumnMove.js +287 -232
- package/plugins/manualColumnMove/manualColumnMove.mjs +286 -231
- package/plugins/manualColumnMove/ui/_base.js +9 -3
- package/plugins/manualColumnMove/ui/_base.mjs +9 -3
- package/plugins/manualColumnResize/manualColumnResize.js +291 -246
- package/plugins/manualColumnResize/manualColumnResize.mjs +290 -244
- package/plugins/manualRowMove/manualRowMove.js +223 -208
- package/plugins/manualRowMove/manualRowMove.mjs +222 -207
- package/plugins/manualRowMove/ui/_base.js +10 -5
- package/plugins/manualRowMove/ui/_base.mjs +10 -5
- package/plugins/manualRowResize/manualRowResize.js +254 -209
- package/plugins/manualRowResize/manualRowResize.mjs +253 -207
- package/plugins/mergeCells/calculations/autofill.js +9 -3
- package/plugins/mergeCells/calculations/autofill.mjs +9 -3
- package/plugins/mergeCells/calculations/selection.js +10 -4
- package/plugins/mergeCells/calculations/selection.mjs +10 -4
- package/plugins/mergeCells/cellCoords.js +16 -6
- package/plugins/mergeCells/cellCoords.mjs +16 -6
- package/plugins/mergeCells/cellsCollection.js +10 -4
- package/plugins/mergeCells/cellsCollection.mjs +10 -4
- package/plugins/mergeCells/mergeCells.js +582 -502
- package/plugins/mergeCells/mergeCells.mjs +580 -500
- package/plugins/multiColumnSorting/multiColumnSorting.js +13 -10
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +13 -10
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +16 -28
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +16 -27
- package/plugins/nestedHeaders/nestedHeaders.js +542 -499
- package/plugins/nestedHeaders/nestedHeaders.mjs +554 -511
- package/plugins/nestedHeaders/stateManager/index.js +1 -1
- package/plugins/nestedHeaders/stateManager/index.mjs +1 -1
- package/plugins/nestedRows/data/dataManager.js +21 -15
- package/plugins/nestedRows/data/dataManager.mjs +21 -15
- package/plugins/nestedRows/nestedRows.js +326 -278
- package/plugins/nestedRows/nestedRows.mjs +325 -277
- package/plugins/nestedRows/ui/_base.js +7 -1
- package/plugins/nestedRows/ui/_base.mjs +7 -1
- package/plugins/nestedRows/ui/collapsing.js +2 -2
- package/plugins/nestedRows/ui/collapsing.mjs +2 -2
- package/plugins/nestedRows/ui/contextMenu.js +28 -18
- package/plugins/nestedRows/ui/contextMenu.mjs +28 -18
- package/plugins/nestedRows/utils/rowMoveController.js +12 -4
- package/plugins/nestedRows/utils/rowMoveController.mjs +12 -4
- package/plugins/persistentState/persistentState.js +14 -11
- package/plugins/persistentState/persistentState.mjs +14 -11
- package/plugins/persistentState/storage.js +11 -6
- package/plugins/persistentState/storage.mjs +11 -6
- package/plugins/registry.js +2 -2
- package/plugins/registry.mjs +2 -2
- package/plugins/search/search.js +57 -46
- package/plugins/search/search.mjs +56 -45
- package/plugins/touchScroll/touchScroll.js +102 -100
- package/plugins/touchScroll/touchScroll.mjs +100 -98
- package/plugins/trimRows/trimRows.js +33 -28
- package/plugins/trimRows/trimRows.mjs +32 -27
- package/plugins/undoRedo/undoRedo.js +2 -2
- package/plugins/undoRedo/undoRedo.mjs +2 -2
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +11 -11
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +11 -11
- package/renderers/baseRenderer/baseRenderer.js +2 -2
- package/renderers/baseRenderer/baseRenderer.mjs +2 -2
- package/renderers/checkboxRenderer/checkboxRenderer.js +23 -23
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +23 -23
- package/renderers/dateRenderer/dateRenderer.js +4 -4
- package/renderers/dateRenderer/dateRenderer.mjs +4 -4
- package/renderers/handsontableRenderer/handsontableRenderer.js +4 -4
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +4 -4
- package/renderers/htmlRenderer/htmlRenderer.js +4 -4
- package/renderers/htmlRenderer/htmlRenderer.mjs +4 -4
- package/renderers/numericRenderer/numericRenderer.js +3 -3
- package/renderers/numericRenderer/numericRenderer.mjs +3 -3
- package/renderers/passwordRenderer/passwordRenderer.js +3 -3
- package/renderers/passwordRenderer/passwordRenderer.mjs +3 -3
- package/renderers/selectRenderer/selectRenderer.js +4 -4
- package/renderers/selectRenderer/selectRenderer.mjs +4 -4
- package/renderers/textRenderer/textRenderer.js +5 -5
- package/renderers/textRenderer/textRenderer.mjs +5 -5
- package/renderers/timeRenderer/timeRenderer.js +3 -3
- package/renderers/timeRenderer/timeRenderer.mjs +3 -3
- package/selection/range.js +12 -2
- package/selection/range.mjs +12 -2
- package/selection/selection.js +3 -3
- package/selection/selection.mjs +3 -3
- package/tableView.js +208 -200
- package/tableView.mjs +208 -200
- package/translations/changesObservable/utils.js +2 -2
- package/translations/changesObservable/utils.mjs +2 -2
- package/translations/indexMapper.js +25 -22
- package/translations/indexMapper.mjs +25 -22
- package/translations/mapCollections/aggregatedCollection.js +8 -2
- package/translations/mapCollections/aggregatedCollection.mjs +8 -2
- package/translations/mapCollections/mapCollection.js +5 -2
- package/translations/mapCollections/mapCollection.mjs +5 -2
- package/translations/maps/indexMap.js +6 -1
- package/translations/maps/indexMap.mjs +6 -1
- package/translations/maps/utils/physicallyIndexed.js +2 -2
- package/translations/maps/utils/physicallyIndexed.mjs +2 -2
- package/utils/dataStructures/linkedList.js +10 -6
- package/utils/dataStructures/linkedList.mjs +10 -6
- package/utils/dataStructures/queue.js +1 -1
- package/utils/dataStructures/queue.mjs +1 -1
- package/utils/dataStructures/stack.js +1 -1
- package/utils/dataStructures/stack.mjs +1 -1
- package/utils/ghostTable.js +2 -2
- package/utils/ghostTable.mjs +2 -2
- package/utils/interval.js +73 -36
- package/utils/interval.mjs +73 -36
- package/utils/parseTable.js +1 -1
- package/utils/parseTable.mjs +1 -1
- package/validators/autocompleteValidator/autocompleteValidator.js +1 -1
- package/validators/autocompleteValidator/autocompleteValidator.mjs +1 -1
- package/validators/dateValidator/dateValidator.js +1 -1
- package/validators/dateValidator/dateValidator.mjs +1 -1
- package/validators/numericValidator/numericValidator.js +1 -1
- 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
|
-
*
|
125
|
+
* On menu after close listener.
|
108
126
|
*
|
109
127
|
* @private
|
110
|
-
* @
|
128
|
+
* @fires Hooks#afterDropdownMenuHide
|
111
129
|
*/
|
130
|
+
_classPrivateMethodInitSpec(this, _onMenuAfterClose);
|
112
131
|
/**
|
113
|
-
*
|
132
|
+
* Listener for the `afterSubmenuOpen` hook.
|
114
133
|
*
|
115
|
-
* @
|
134
|
+
* @private
|
135
|
+
* @param {Menu} subMenuInstance The opened sub menu instance.
|
116
136
|
*/
|
117
|
-
_classPrivateMethodInitSpec(this,
|
118
|
-
|
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
|
-
*
|
153
|
+
* On after get column header listener.
|
121
154
|
*
|
122
155
|
* @private
|
123
|
-
* @
|
156
|
+
* @param {number} col Visual column index.
|
157
|
+
* @param {HTMLTableCellElement} TH Header's TH element.
|
124
158
|
*/
|
125
|
-
this
|
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
|
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
|
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.
|
192
|
-
this.menu.addLocalHook('afterOpen', () => this.
|
193
|
-
this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => this.
|
194
|
-
this.menu.addLocalHook('afterClose', () => this.
|
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.
|
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
|
-
*
|
119
|
+
* On menu after close listener.
|
102
120
|
*
|
103
121
|
* @private
|
104
|
-
* @
|
122
|
+
* @fires Hooks#afterDropdownMenuHide
|
105
123
|
*/
|
124
|
+
_classPrivateMethodInitSpec(this, _onMenuAfterClose);
|
106
125
|
/**
|
107
|
-
*
|
126
|
+
* Listener for the `afterSubmenuOpen` hook.
|
108
127
|
*
|
109
|
-
* @
|
128
|
+
* @private
|
129
|
+
* @param {Menu} subMenuInstance The opened sub menu instance.
|
110
130
|
*/
|
111
|
-
_classPrivateMethodInitSpec(this,
|
112
|
-
|
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
|
-
*
|
147
|
+
* On after get column header listener.
|
115
148
|
*
|
116
149
|
* @private
|
117
|
-
* @
|
150
|
+
* @param {number} col Visual column index.
|
151
|
+
* @param {HTMLTableCellElement} TH Header's TH element.
|
118
152
|
*/
|
119
|
-
this
|
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
|
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
|
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.
|
186
|
-
this.menu.addLocalHook('afterOpen', () => this.
|
187
|
-
this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => this.
|
188
|
-
this.menu.addLocalHook('afterClose', () => this.
|
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.
|
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
|
};
|