handsontable 0.0.0-next-5a535ed-20240403 → 0.0.0-next-c2810a1-20240403
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +12 -17
- package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +12 -17
- package/3rdparty/walkontable/src/calculator/viewportRows.js +10 -15
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +10 -15
- package/3rdparty/walkontable/src/cell/coords.js +12 -17
- package/3rdparty/walkontable/src/cell/coords.mjs +12 -17
- package/3rdparty/walkontable/src/cell/range.d.ts +2 -1
- package/3rdparty/walkontable/src/cell/range.js +40 -28
- package/3rdparty/walkontable/src/cell/range.mjs +40 -28
- package/3rdparty/walkontable/src/core/_base.js +1 -1
- package/3rdparty/walkontable/src/core/_base.mjs +1 -1
- package/3rdparty/walkontable/src/event.js +72 -104
- package/3rdparty/walkontable/src/event.mjs +72 -104
- package/3rdparty/walkontable/src/overlay/inlineStart.js +15 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +16 -2
- package/3rdparty/walkontable/src/overlay/top.js +11 -0
- package/3rdparty/walkontable/src/overlay/top.mjs +12 -1
- package/3rdparty/walkontable/src/overlays.js +46 -4
- package/3rdparty/walkontable/src/overlays.mjs +46 -4
- package/3rdparty/walkontable/src/scroll.js +15 -17
- package/3rdparty/walkontable/src/scroll.mjs +15 -17
- package/3rdparty/walkontable/src/selection/manager.js +48 -69
- package/3rdparty/walkontable/src/selection/manager.mjs +48 -69
- package/3rdparty/walkontable/src/selection/scanner.js +33 -42
- package/3rdparty/walkontable/src/selection/scanner.mjs +33 -42
- package/3rdparty/walkontable/src/utils/columnStretching.js +27 -44
- package/3rdparty/walkontable/src/utils/columnStretching.mjs +27 -44
- package/3rdparty/walkontable/src/utils/orderView/view.js +1 -1
- package/3rdparty/walkontable/src/utils/orderView/view.mjs +1 -1
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core/viewportScroll/index.js +4 -1
- package/core/viewportScroll/index.mjs +4 -1
- package/core/viewportScroll/scrollStrategies/focusScroll.js +15 -0
- package/core/viewportScroll/scrollStrategies/focusScroll.mjs +11 -0
- package/core.d.ts +4 -3
- package/core.js +77 -22
- package/core.mjs +77 -22
- package/dataMap/dataSource.js +1 -1
- package/dataMap/dataSource.mjs +1 -1
- package/dataMap/metaManager/metaLayers/cellMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -1
- package/dataMap/metaManager/metaSchema.js +1 -1
- package/dataMap/metaManager/metaSchema.mjs +1 -1
- package/dataMap/replaceData.js +1 -1
- package/dataMap/replaceData.mjs +1 -1
- package/dist/handsontable.css +4 -4
- package/dist/handsontable.full.css +4 -4
- package/dist/handsontable.full.js +9063 -9122
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +292 -292
- package/dist/handsontable.js +6968 -6574
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +25 -25
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/ar-AR.min.js +1 -1
- package/dist/languages/cs-CZ.min.js +1 -1
- package/dist/languages/de-CH.min.js +1 -1
- package/dist/languages/de-DE.min.js +1 -1
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/es-MX.min.js +1 -1
- package/dist/languages/fr-FR.min.js +1 -1
- package/dist/languages/hr-HR.min.js +1 -1
- package/dist/languages/it-IT.min.js +1 -1
- package/dist/languages/ja-JP.min.js +1 -1
- package/dist/languages/ko-KR.min.js +1 -1
- package/dist/languages/lv-LV.min.js +1 -1
- package/dist/languages/nb-NO.min.js +1 -1
- package/dist/languages/nl-NL.min.js +1 -1
- package/dist/languages/pl-PL.min.js +1 -1
- package/dist/languages/pt-BR.min.js +1 -1
- package/dist/languages/ru-RU.min.js +1 -1
- package/dist/languages/sr-SP.min.js +1 -1
- package/dist/languages/zh-CN.min.js +1 -1
- package/dist/languages/zh-TW.min.js +1 -1
- package/editorManager.js +25 -23
- package/editorManager.mjs +25 -23
- package/editors/autocompleteEditor/autocompleteEditor.js +6 -10
- package/editors/autocompleteEditor/autocompleteEditor.mjs +6 -10
- package/editors/selectEditor/selectEditor.js +20 -19
- package/editors/selectEditor/selectEditor.mjs +20 -19
- package/eventManager.js +1 -1
- package/eventManager.mjs +1 -1
- package/focusManager.js +64 -82
- package/focusManager.mjs +64 -82
- package/helpers/dom/element.js +23 -1
- package/helpers/dom/element.mjs +21 -1
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/object.js +2 -2
- package/helpers/object.mjs +2 -2
- package/i18n/languages/ar-AR.d.ts +5 -0
- package/i18n/languages/cs-CZ.d.ts +5 -0
- package/i18n/languages/hr-HR.d.ts +5 -0
- package/i18n/languages/sr-SP.d.ts +5 -0
- package/index.d.ts +10 -0
- package/package.json +7 -2
- package/pluginHooks.d.ts +4 -3
- package/pluginHooks.js +99 -38
- package/pluginHooks.mjs +99 -38
- package/plugins/autoColumnSize/autoColumnSize.js +49 -65
- package/plugins/autoColumnSize/autoColumnSize.mjs +49 -65
- package/plugins/autoRowSize/autoRowSize.js +28 -34
- package/plugins/autoRowSize/autoRowSize.mjs +28 -34
- package/plugins/autofill/autofill.js +30 -38
- package/plugins/autofill/autofill.mjs +30 -38
- package/plugins/base/base.js +12 -17
- package/plugins/base/base.mjs +12 -17
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +5 -5
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +5 -5
- package/plugins/collapsibleColumns/collapsibleColumns.js +59 -50
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +59 -50
- package/plugins/columnSorting/columnSorting.js +49 -45
- package/plugins/columnSorting/columnSorting.mjs +49 -45
- package/plugins/columnSummary/columnSummary.js +22 -26
- package/plugins/columnSummary/columnSummary.mjs +22 -26
- package/plugins/comments/comments.js +116 -158
- package/plugins/comments/comments.mjs +116 -158
- package/plugins/contextMenu/contextMenu.js +20 -26
- package/plugins/contextMenu/contextMenu.mjs +20 -26
- package/plugins/contextMenu/itemsFactory.js +1 -1
- package/plugins/contextMenu/itemsFactory.mjs +1 -1
- package/plugins/contextMenu/menu/defaultShortcutsList.js +26 -10
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +26 -10
- package/plugins/contextMenu/menu/menu.js +13 -21
- package/plugins/contextMenu/menu/menu.mjs +13 -21
- package/plugins/contextMenu/menu/positioner.js +41 -58
- package/plugins/contextMenu/menu/positioner.mjs +41 -58
- package/plugins/copyPaste/copyPaste.js +116 -157
- package/plugins/copyPaste/copyPaste.mjs +116 -157
- package/plugins/copyPaste/copyableRanges.js +43 -66
- package/plugins/copyPaste/copyableRanges.mjs +43 -66
- package/plugins/customBorders/customBorders.js +11 -13
- package/plugins/customBorders/customBorders.mjs +11 -13
- package/plugins/dragToScroll/dragToScroll.js +6 -6
- package/plugins/dragToScroll/dragToScroll.mjs +6 -6
- package/plugins/dropdownMenu/dropdownMenu.js +81 -107
- package/plugins/dropdownMenu/dropdownMenu.mjs +81 -107
- package/plugins/exportFile/dataProvider.js +1 -1
- package/plugins/exportFile/dataProvider.mjs +1 -1
- package/plugins/filters/component/actionBar.js +9 -9
- package/plugins/filters/component/actionBar.mjs +8 -8
- package/plugins/filters/component/condition.js +13 -15
- package/plugins/filters/component/condition.mjs +13 -15
- package/plugins/filters/component/operators.js +6 -6
- package/plugins/filters/component/operators.mjs +6 -6
- package/plugins/filters/component/value.js +24 -28
- package/plugins/filters/component/value.mjs +24 -28
- package/plugins/filters/conditionUpdateObserver.js +22 -24
- package/plugins/filters/conditionUpdateObserver.mjs +22 -24
- package/plugins/filters/dataFilter.js +1 -1
- package/plugins/filters/dataFilter.mjs +1 -1
- package/plugins/filters/filters.js +81 -95
- package/plugins/filters/filters.mjs +81 -95
- package/plugins/filters/ui/input.js +13 -19
- package/plugins/filters/ui/input.mjs +13 -19
- package/plugins/filters/ui/link.js +8 -13
- package/plugins/filters/ui/link.mjs +8 -13
- package/plugins/filters/ui/multipleSelect.js +85 -112
- package/plugins/filters/ui/multipleSelect.mjs +85 -112
- package/plugins/filters/ui/radioInput.js +12 -20
- package/plugins/filters/ui/radioInput.mjs +12 -20
- package/plugins/filters/ui/select.js +50 -72
- package/plugins/filters/ui/select.mjs +49 -71
- package/plugins/formulas/formulas.js +268 -326
- package/plugins/formulas/formulas.mjs +269 -327
- package/plugins/formulas/indexSyncer/axisSyncer.js +38 -61
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +38 -61
- package/plugins/formulas/indexSyncer/index.js +25 -48
- package/plugins/formulas/indexSyncer/index.mjs +25 -48
- package/plugins/hiddenColumns/hiddenColumns.js +64 -83
- package/plugins/hiddenColumns/hiddenColumns.mjs +64 -83
- package/plugins/hiddenRows/hiddenRows.js +63 -82
- package/plugins/hiddenRows/hiddenRows.mjs +63 -82
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +24 -32
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +25 -33
- package/plugins/manualColumnMove/manualColumnMove.js +126 -170
- package/plugins/manualColumnMove/manualColumnMove.mjs +126 -170
- package/plugins/manualColumnResize/manualColumnResize.js +169 -230
- package/plugins/manualColumnResize/manualColumnResize.mjs +169 -230
- package/plugins/manualRowMove/manualRowMove.js +99 -128
- package/plugins/manualRowMove/manualRowMove.mjs +99 -128
- package/plugins/manualRowResize/manualRowResize.js +150 -209
- package/plugins/manualRowResize/manualRowResize.mjs +150 -209
- package/plugins/mergeCells/calculations/selection.js +2 -71
- package/plugins/mergeCells/calculations/selection.mjs +2 -71
- package/plugins/mergeCells/cellsCollection.js +117 -1
- package/plugins/mergeCells/cellsCollection.mjs +117 -1
- package/plugins/mergeCells/contextMenuItem/toggleMerge.js +11 -1
- package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +11 -1
- package/plugins/mergeCells/focusOrder.js +305 -0
- package/plugins/mergeCells/focusOrder.mjs +300 -0
- package/plugins/mergeCells/mergeCells.js +499 -397
- package/plugins/mergeCells/mergeCells.mjs +499 -397
- package/plugins/multiColumnSorting/multiColumnSorting.js +8 -2
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +8 -2
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +1 -1
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +1 -1
- package/plugins/nestedHeaders/nestedHeaders.js +205 -253
- package/plugins/nestedHeaders/nestedHeaders.mjs +206 -254
- package/plugins/nestedHeaders/stateManager/headersTree.js +21 -32
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -32
- package/plugins/nestedHeaders/stateManager/index.js +30 -41
- package/plugins/nestedHeaders/stateManager/index.mjs +30 -41
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +19 -30
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +19 -30
- package/plugins/nestedRows/data/dataManager.js +1 -1
- package/plugins/nestedRows/data/dataManager.mjs +1 -1
- package/plugins/nestedRows/nestedRows.js +151 -182
- package/plugins/nestedRows/nestedRows.mjs +152 -183
- package/plugins/nestedRows/ui/contextMenu.js +11 -15
- package/plugins/nestedRows/ui/contextMenu.mjs +10 -14
- package/plugins/nestedRows/utils/rowMoveController.js +1 -1
- package/plugins/nestedRows/utils/rowMoveController.mjs +1 -1
- package/plugins/persistentState/storage.js +2 -2
- package/plugins/persistentState/storage.mjs +2 -2
- package/plugins/search/search.js +7 -7
- package/plugins/search/search.mjs +7 -7
- package/plugins/touchScroll/touchScroll.js +15 -19
- package/plugins/touchScroll/touchScroll.mjs +16 -20
- package/plugins/trimRows/trimRows.js +6 -6
- package/plugins/trimRows/trimRows.mjs +6 -6
- package/renderers/checkboxRenderer/checkboxRenderer.js +8 -5
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +8 -5
- package/selection/highlight/highlight.js +14 -14
- package/selection/highlight/highlight.mjs +13 -13
- package/selection/highlight/visualSelection.js +2 -0
- package/selection/highlight/visualSelection.mjs +2 -0
- package/selection/selection.js +225 -67
- package/selection/selection.mjs +224 -66
- package/selection/transformation.js +149 -118
- package/selection/transformation.mjs +149 -118
- package/shortcutContexts/commands/editor/closeAndSave.js +2 -2
- package/shortcutContexts/commands/editor/closeAndSave.mjs +2 -2
- package/shortcutContexts/commands/editor/open.js +18 -3
- package/shortcutContexts/commands/editor/open.mjs +18 -3
- package/shortcutContexts/commands/extendCellsSelection/down.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/left.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/right.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +9 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +9 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +10 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +10 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/up.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +1 -1
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +6 -1
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +6 -1
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +6 -1
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +6 -1
- package/shortcutContexts/grid.js +9 -3
- package/shortcutContexts/grid.mjs +9 -3
- package/shortcuts/context.js +2 -1
- package/shortcuts/context.mjs +2 -1
- package/tableView.js +52 -78
- package/tableView.mjs +52 -78
- package/translations/changesObservable/observable.js +21 -38
- package/translations/changesObservable/observable.mjs +21 -38
- package/translations/changesObservable/observer.js +7 -12
- package/translations/changesObservable/observer.mjs +6 -11
- package/translations/mapCollections/aggregatedCollection.js +1 -1
- package/translations/mapCollections/aggregatedCollection.mjs +1 -1
- package/translations/maps/indexMap.js +1 -1
- package/translations/maps/indexMap.mjs +1 -1
- package/utils/dataStructures/linkedList.js +6 -1
- package/utils/dataStructures/linkedList.mjs +6 -1
- package/utils/dataStructures/tree.js +1 -1
- package/utils/dataStructures/tree.mjs +1 -1
- package/utils/interval.js +26 -44
- package/utils/interval.mjs +26 -44
@@ -4,7 +4,7 @@ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollect
|
|
4
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
5
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
6
6
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
7
|
-
function
|
7
|
+
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
8
8
|
import { BasePlugin } from "../base/index.mjs";
|
9
9
|
import { isRightClick } from "../../helpers/dom/event.mjs";
|
10
10
|
import { getParentWindow } from "../../helpers/dom/element.mjs";
|
@@ -21,7 +21,7 @@ export const PLUGIN_PRIORITY = 100;
|
|
21
21
|
* @class DragToScroll
|
22
22
|
* @plugin DragToScroll
|
23
23
|
*/
|
24
|
-
var
|
24
|
+
var _DragToScroll_brand = /*#__PURE__*/new WeakSet();
|
25
25
|
export class DragToScroll extends BasePlugin {
|
26
26
|
constructor() {
|
27
27
|
super(...arguments);
|
@@ -30,7 +30,7 @@ export class DragToScroll extends BasePlugin {
|
|
30
30
|
*
|
31
31
|
* @param {MouseEvent} event The mouse event object.
|
32
32
|
*/
|
33
|
-
_classPrivateMethodInitSpec(this,
|
33
|
+
_classPrivateMethodInitSpec(this, _DragToScroll_brand);
|
34
34
|
/**
|
35
35
|
* Size of an element and its position relative to the viewport,
|
36
36
|
* e.g. {bottom: 449, height: 441, left: 8, right: 814, top: 8, width: 806, x: 8, y:8}.
|
@@ -76,8 +76,8 @@ export class DragToScroll extends BasePlugin {
|
|
76
76
|
if (this.enabled) {
|
77
77
|
return;
|
78
78
|
}
|
79
|
-
this.addHook('afterOnCellMouseDown', event =>
|
80
|
-
this.addHook('afterOnCellCornerMouseDown', event =>
|
79
|
+
this.addHook('afterOnCellMouseDown', event => _assertClassBrand(_DragToScroll_brand, this, _setupListening).call(this, event));
|
80
|
+
this.addHook('afterOnCellCornerMouseDown', event => _assertClassBrand(_DragToScroll_brand, this, _setupListening).call(this, event));
|
81
81
|
this.registerEvents();
|
82
82
|
super.enablePlugin();
|
83
83
|
}
|
@@ -228,7 +228,7 @@ export class DragToScroll extends BasePlugin {
|
|
228
228
|
super.destroy();
|
229
229
|
}
|
230
230
|
}
|
231
|
-
function
|
231
|
+
function _setupListening(event) {
|
232
232
|
if (isRightClick(event)) {
|
233
233
|
return;
|
234
234
|
}
|
@@ -20,12 +20,9 @@ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollect
|
|
20
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
21
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
22
22
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
23
|
-
function _classPrivateFieldGet(
|
24
|
-
function
|
25
|
-
function
|
26
|
-
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
27
|
-
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
28
|
-
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
23
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
24
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
25
|
+
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
29
26
|
_pluginHooks.default.getSingleton().register('afterDropdownMenuDefaultOptions');
|
30
27
|
_pluginHooks.default.getSingleton().register('beforeDropdownMenuShow');
|
31
28
|
_pluginHooks.default.getSingleton().register('afterDropdownMenuShow');
|
@@ -42,15 +39,14 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
|
|
42
39
|
* @class DropdownMenu
|
43
40
|
*
|
44
41
|
* @description
|
45
|
-
* This plugin creates the Handsontable Dropdown Menu. It allows to create a new
|
42
|
+
* This plugin creates the Handsontable Dropdown Menu. It allows to create a new column at any place in the grid
|
46
43
|
* among [other features](@/guides/accessories-and-menus/context-menu/context-menu.md#context-menu-with-specific-options).
|
47
44
|
* Possible values:
|
48
45
|
* * `true` (to enable default options),
|
49
46
|
* * `false` (to disable completely).
|
50
47
|
*
|
51
48
|
* or array of any available strings:
|
52
|
-
* * `["
|
53
|
-
* "remove_row", "remove_col", "---------", "undo", "redo"]`.
|
49
|
+
* * `["col_left", "col_right", "remove_col", "---------", "undo", "redo"]`.
|
54
50
|
*
|
55
51
|
* See [the dropdown menu demo](@/guides/columns/column-menu/column-menu.md) for examples.
|
56
52
|
*
|
@@ -87,15 +83,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
|
|
87
83
|
* :::
|
88
84
|
*/
|
89
85
|
var _isButtonClicked = /*#__PURE__*/new WeakMap();
|
90
|
-
var
|
91
|
-
var _onTableClick = /*#__PURE__*/new WeakSet();
|
92
|
-
var _onAfterGetColHeader = /*#__PURE__*/new WeakSet();
|
93
|
-
var _onMenuBeforeOpen = /*#__PURE__*/new WeakSet();
|
94
|
-
var _onMenuAfterOpen = /*#__PURE__*/new WeakSet();
|
95
|
-
var _onSubMenuAfterOpen = /*#__PURE__*/new WeakSet();
|
96
|
-
var _onMenuAfterClose = /*#__PURE__*/new WeakSet();
|
97
|
-
var _onBeforeViewportScrollHorizontally = /*#__PURE__*/new WeakSet();
|
98
|
-
var _onBeforeOnCellMouseDown = /*#__PURE__*/new WeakSet();
|
86
|
+
var _DropdownMenu_brand = /*#__PURE__*/new WeakSet();
|
99
87
|
class DropdownMenu extends _base.BasePlugin {
|
100
88
|
static get PLUGIN_KEY() {
|
101
89
|
return PLUGIN_KEY;
|
@@ -127,70 +115,12 @@ class DropdownMenu extends _base.BasePlugin {
|
|
127
115
|
super(hotInstance);
|
128
116
|
|
129
117
|
// One listener for enable/disable functionality
|
130
|
-
/**
|
131
|
-
* Hook sets the internal flag to `true` when the button is clicked.
|
132
|
-
*
|
133
|
-
* @param {MouseEvent} event The mouse event object.
|
134
|
-
*/
|
135
|
-
_classPrivateMethodInitSpec(this, _onBeforeOnCellMouseDown);
|
136
|
-
/**
|
137
|
-
* Hook allows blocking horizontal scroll when the menu is opened by clicking on
|
138
|
-
* the column header button. This prevents from scrolling the viewport (jump effect) when
|
139
|
-
* the button is clicked.
|
140
|
-
*
|
141
|
-
* @param {number} visualColumn Visual column index.
|
142
|
-
* @returns {number | null}
|
143
|
-
*/
|
144
|
-
_classPrivateMethodInitSpec(this, _onBeforeViewportScrollHorizontally);
|
145
|
-
/**
|
146
|
-
* On menu after close listener.
|
147
|
-
*
|
148
|
-
* @private
|
149
|
-
* @fires Hooks#afterDropdownMenuHide
|
150
|
-
*/
|
151
|
-
_classPrivateMethodInitSpec(this, _onMenuAfterClose);
|
152
|
-
/**
|
153
|
-
* Listener for the `afterSubmenuOpen` hook.
|
154
|
-
*
|
155
|
-
* @private
|
156
|
-
* @param {Menu} subMenuInstance The opened sub menu instance.
|
157
|
-
*/
|
158
|
-
_classPrivateMethodInitSpec(this, _onSubMenuAfterOpen);
|
159
|
-
/**
|
160
|
-
* On menu after open listener.
|
161
|
-
*
|
162
|
-
* @private
|
163
|
-
* @fires Hooks#afterDropdownMenuShow
|
164
|
-
*/
|
165
|
-
_classPrivateMethodInitSpec(this, _onMenuAfterOpen);
|
166
|
-
/**
|
167
|
-
* On menu before open listener.
|
168
|
-
*
|
169
|
-
* @private
|
170
|
-
* @fires Hooks#beforeDropdownMenuShow
|
171
|
-
*/
|
172
|
-
_classPrivateMethodInitSpec(this, _onMenuBeforeOpen);
|
173
|
-
/**
|
174
|
-
* On after get column header listener.
|
175
|
-
*
|
176
|
-
* @private
|
177
|
-
* @param {number} col Visual column index.
|
178
|
-
* @param {HTMLTableCellElement} TH Header's TH element.
|
179
|
-
*/
|
180
|
-
_classPrivateMethodInitSpec(this, _onAfterGetColHeader);
|
181
|
-
/**
|
182
|
-
* Table click listener.
|
183
|
-
*
|
184
|
-
* @private
|
185
|
-
* @param {Event} event The mouse event object.
|
186
|
-
*/
|
187
|
-
_classPrivateMethodInitSpec(this, _onTableClick);
|
188
118
|
/**
|
189
119
|
* Add custom shortcuts to the provided menu instance.
|
190
120
|
*
|
191
121
|
* @param {Menu} menuInstance The menu instance.
|
192
122
|
*/
|
193
|
-
_classPrivateMethodInitSpec(this,
|
123
|
+
_classPrivateMethodInitSpec(this, _DropdownMenu_brand);
|
194
124
|
_defineProperty(this, "commandExecutor", new _commandExecutor.CommandExecutor(this.hot));
|
195
125
|
/**
|
196
126
|
* Instance of {@link ItemsFactory}.
|
@@ -211,11 +141,8 @@ class DropdownMenu extends _base.BasePlugin {
|
|
211
141
|
*
|
212
142
|
* @type {boolean}
|
213
143
|
*/
|
214
|
-
_classPrivateFieldInitSpec(this, _isButtonClicked,
|
215
|
-
|
216
|
-
value: false
|
217
|
-
});
|
218
|
-
this.hot.addHook('afterGetColHeader', (col, TH) => _classPrivateMethodGet(this, _onAfterGetColHeader, _onAfterGetColHeader2).call(this, col, TH));
|
144
|
+
_classPrivateFieldInitSpec(this, _isButtonClicked, false);
|
145
|
+
this.hot.addHook('afterGetColHeader', (col, TH) => _assertClassBrand(_DropdownMenu_brand, this, _onAfterGetColHeader).call(this, col, TH));
|
219
146
|
}
|
220
147
|
|
221
148
|
/**
|
@@ -244,13 +171,13 @@ class DropdownMenu extends _base.BasePlugin {
|
|
244
171
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
245
172
|
args[_key] = arguments[_key];
|
246
173
|
}
|
247
|
-
return
|
174
|
+
return _assertClassBrand(_DropdownMenu_brand, _this, _onBeforeOnCellMouseDown).call(_this, ...args);
|
248
175
|
});
|
249
176
|
this.addHook('beforeViewportScrollHorizontally', function () {
|
250
177
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
251
178
|
args[_key2] = arguments[_key2];
|
252
179
|
}
|
253
|
-
return
|
180
|
+
return _assertClassBrand(_DropdownMenu_brand, _this, _onBeforeViewportScrollHorizontally).call(_this, ...args);
|
254
181
|
});
|
255
182
|
const settings = this.hot.getSettings()[PLUGIN_KEY];
|
256
183
|
const predefinedItems = {
|
@@ -276,10 +203,10 @@ class DropdownMenu extends _base.BasePlugin {
|
|
276
203
|
});
|
277
204
|
this.hot.runHooks('beforeDropdownMenuSetItems', menuItems);
|
278
205
|
this.menu.setMenuItems(menuItems);
|
279
|
-
this.menu.addLocalHook('beforeOpen', () =>
|
280
|
-
this.menu.addLocalHook('afterOpen', () =>
|
281
|
-
this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance =>
|
282
|
-
this.menu.addLocalHook('afterClose', () =>
|
206
|
+
this.menu.addLocalHook('beforeOpen', () => _assertClassBrand(_DropdownMenu_brand, this, _onMenuBeforeOpen).call(this));
|
207
|
+
this.menu.addLocalHook('afterOpen', () => _assertClassBrand(_DropdownMenu_brand, this, _onMenuAfterOpen).call(this));
|
208
|
+
this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => _assertClassBrand(_DropdownMenu_brand, this, _onSubMenuAfterOpen).call(this, subMenuInstance));
|
209
|
+
this.menu.addLocalHook('afterClose', () => _assertClassBrand(_DropdownMenu_brand, this, _onMenuAfterClose).call(this));
|
283
210
|
this.menu.addLocalHook('executeCommand', function () {
|
284
211
|
for (var _len3 = arguments.length, params = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
285
212
|
params[_key3] = arguments[_key3];
|
@@ -383,7 +310,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
383
310
|
* @private
|
384
311
|
*/
|
385
312
|
registerEvents() {
|
386
|
-
this.eventManager.addEventListener(this.hot.rootElement, 'click', event =>
|
313
|
+
this.eventManager.addEventListener(this.hot.rootElement, 'click', event => _assertClassBrand(_DropdownMenu_brand, this, _onTableClick).call(this, event));
|
387
314
|
}
|
388
315
|
|
389
316
|
/**
|
@@ -432,12 +359,9 @@ class DropdownMenu extends _base.BasePlugin {
|
|
432
359
|
* When no cells are selected, `executeCommand()` doesn't do anything.
|
433
360
|
*
|
434
361
|
* You can execute all predefined commands:
|
435
|
-
* * `'row_above'` - Insert row above
|
436
|
-
* * `'row_below'` - Insert row below
|
437
362
|
* * `'col_left'` - Insert column left
|
438
363
|
* * `'col_right'` - Insert column right
|
439
364
|
* * `'clear_column'` - Clear selected column
|
440
|
-
* * `'remove_row'` - Remove row
|
441
365
|
* * `'remove_col'` - Remove column
|
442
366
|
* * `'undo'` - Undo last action
|
443
367
|
* * `'redo'` - Redo last action
|
@@ -489,18 +413,24 @@ class DropdownMenu extends _base.BasePlugin {
|
|
489
413
|
}
|
490
414
|
}
|
491
415
|
exports.DropdownMenu = DropdownMenu;
|
492
|
-
function
|
416
|
+
function _addCustomShortcuts(menuInstance) {
|
493
417
|
menuInstance.getKeyboardShortcutsCtrl().addCustomShortcuts([{
|
494
418
|
keys: [['Control/Meta', 'A']],
|
495
419
|
callback: () => false
|
496
420
|
}]);
|
497
421
|
}
|
498
|
-
|
499
|
-
|
422
|
+
/**
|
423
|
+
* Table click listener.
|
424
|
+
*
|
425
|
+
* @private
|
426
|
+
* @param {Event} event The mouse event object.
|
427
|
+
*/
|
428
|
+
function _onTableClick(event) {
|
500
429
|
if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
|
501
430
|
const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
|
502
431
|
const rect = event.target.getBoundingClientRect();
|
503
|
-
|
432
|
+
event.stopPropagation();
|
433
|
+
_classPrivateFieldSet(_isButtonClicked, this, false);
|
504
434
|
this.open({
|
505
435
|
left: rect.left + offset.left,
|
506
436
|
top: rect.top + event.target.offsetHeight + 3 + offset.top
|
@@ -509,7 +439,14 @@ function _onTableClick2(event) {
|
|
509
439
|
});
|
510
440
|
}
|
511
441
|
}
|
512
|
-
|
442
|
+
/**
|
443
|
+
* On after get column header listener.
|
444
|
+
*
|
445
|
+
* @private
|
446
|
+
* @param {number} col Visual column index.
|
447
|
+
* @param {HTMLTableCellElement} TH Header's TH element.
|
448
|
+
*/
|
449
|
+
function _onAfterGetColHeader(col, TH) {
|
513
450
|
// Corner or a higher-level header
|
514
451
|
const headerRow = TH.parentNode;
|
515
452
|
if (!headerRow) {
|
@@ -548,26 +485,63 @@ function _onAfterGetColHeader2(col, TH) {
|
|
548
485
|
};
|
549
486
|
TH.firstChild.insertBefore(button, TH.firstChild.firstChild);
|
550
487
|
}
|
551
|
-
|
488
|
+
/**
|
489
|
+
* On menu before open listener.
|
490
|
+
*
|
491
|
+
* @private
|
492
|
+
* @fires Hooks#beforeDropdownMenuShow
|
493
|
+
*/
|
494
|
+
function _onMenuBeforeOpen() {
|
552
495
|
this.hot.runHooks('beforeDropdownMenuShow', this);
|
553
496
|
}
|
554
|
-
|
497
|
+
/**
|
498
|
+
* On menu after open listener.
|
499
|
+
*
|
500
|
+
* @private
|
501
|
+
* @fires Hooks#afterDropdownMenuShow
|
502
|
+
*/
|
503
|
+
function _onMenuAfterOpen() {
|
555
504
|
this.hot.runHooks('afterDropdownMenuShow', this);
|
556
|
-
|
505
|
+
_assertClassBrand(_DropdownMenu_brand, this, _addCustomShortcuts).call(this, this.menu);
|
557
506
|
}
|
558
|
-
|
559
|
-
|
507
|
+
/**
|
508
|
+
* Listener for the `afterSubmenuOpen` hook.
|
509
|
+
*
|
510
|
+
* @private
|
511
|
+
* @param {Menu} subMenuInstance The opened sub menu instance.
|
512
|
+
*/
|
513
|
+
function _onSubMenuAfterOpen(subMenuInstance) {
|
514
|
+
_assertClassBrand(_DropdownMenu_brand, this, _addCustomShortcuts).call(this, subMenuInstance);
|
560
515
|
}
|
561
|
-
|
516
|
+
/**
|
517
|
+
* On menu after close listener.
|
518
|
+
*
|
519
|
+
* @private
|
520
|
+
* @fires Hooks#afterDropdownMenuHide
|
521
|
+
*/
|
522
|
+
function _onMenuAfterClose() {
|
562
523
|
this.hot.listen();
|
563
524
|
this.hot.runHooks('afterDropdownMenuHide', this);
|
564
525
|
}
|
565
|
-
|
566
|
-
|
526
|
+
/**
|
527
|
+
* Hook allows blocking horizontal scroll when the menu is opened by clicking on
|
528
|
+
* the column header button. This prevents from scrolling the viewport (jump effect) when
|
529
|
+
* the button is clicked.
|
530
|
+
*
|
531
|
+
* @param {number} visualColumn Visual column index.
|
532
|
+
* @returns {number | null}
|
533
|
+
*/
|
534
|
+
function _onBeforeViewportScrollHorizontally(visualColumn) {
|
535
|
+
return _classPrivateFieldGet(_isButtonClicked, this) ? null : visualColumn;
|
567
536
|
}
|
568
|
-
|
537
|
+
/**
|
538
|
+
* Hook sets the internal flag to `true` when the button is clicked.
|
539
|
+
*
|
540
|
+
* @param {MouseEvent} event The mouse event object.
|
541
|
+
*/
|
542
|
+
function _onBeforeOnCellMouseDown(event) {
|
569
543
|
if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
|
570
|
-
_classPrivateFieldSet(
|
544
|
+
_classPrivateFieldSet(_isButtonClicked, this, true);
|
571
545
|
}
|
572
546
|
}
|
573
547
|
DropdownMenu.SEPARATOR = {
|
@@ -5,12 +5,9 @@ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollect
|
|
5
5
|
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; }
|
6
6
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
7
7
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
8
|
-
function _classPrivateFieldGet(
|
9
|
-
function
|
10
|
-
function
|
11
|
-
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
12
|
-
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
13
|
-
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
8
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
9
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
10
|
+
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
14
11
|
import { BasePlugin } from "../base/index.mjs";
|
15
12
|
import { arrayEach } from "../../helpers/array.mjs";
|
16
13
|
import { objectEach } from "../../helpers/object.mjs";
|
@@ -38,15 +35,14 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
|
|
38
35
|
* @class DropdownMenu
|
39
36
|
*
|
40
37
|
* @description
|
41
|
-
* This plugin creates the Handsontable Dropdown Menu. It allows to create a new
|
38
|
+
* This plugin creates the Handsontable Dropdown Menu. It allows to create a new column at any place in the grid
|
42
39
|
* among [other features](@/guides/accessories-and-menus/context-menu/context-menu.md#context-menu-with-specific-options).
|
43
40
|
* Possible values:
|
44
41
|
* * `true` (to enable default options),
|
45
42
|
* * `false` (to disable completely).
|
46
43
|
*
|
47
44
|
* or array of any available strings:
|
48
|
-
* * `["
|
49
|
-
* "remove_row", "remove_col", "---------", "undo", "redo"]`.
|
45
|
+
* * `["col_left", "col_right", "remove_col", "---------", "undo", "redo"]`.
|
50
46
|
*
|
51
47
|
* See [the dropdown menu demo](@/guides/columns/column-menu/column-menu.md) for examples.
|
52
48
|
*
|
@@ -83,15 +79,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
|
|
83
79
|
* :::
|
84
80
|
*/
|
85
81
|
var _isButtonClicked = /*#__PURE__*/new WeakMap();
|
86
|
-
var
|
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();
|
93
|
-
var _onBeforeViewportScrollHorizontally = /*#__PURE__*/new WeakSet();
|
94
|
-
var _onBeforeOnCellMouseDown = /*#__PURE__*/new WeakSet();
|
82
|
+
var _DropdownMenu_brand = /*#__PURE__*/new WeakSet();
|
95
83
|
export class DropdownMenu extends BasePlugin {
|
96
84
|
static get PLUGIN_KEY() {
|
97
85
|
return PLUGIN_KEY;
|
@@ -123,70 +111,12 @@ export class DropdownMenu extends BasePlugin {
|
|
123
111
|
super(hotInstance);
|
124
112
|
|
125
113
|
// One listener for enable/disable functionality
|
126
|
-
/**
|
127
|
-
* Hook sets the internal flag to `true` when the button is clicked.
|
128
|
-
*
|
129
|
-
* @param {MouseEvent} event The mouse event object.
|
130
|
-
*/
|
131
|
-
_classPrivateMethodInitSpec(this, _onBeforeOnCellMouseDown);
|
132
|
-
/**
|
133
|
-
* Hook allows blocking horizontal scroll when the menu is opened by clicking on
|
134
|
-
* the column header button. This prevents from scrolling the viewport (jump effect) when
|
135
|
-
* the button is clicked.
|
136
|
-
*
|
137
|
-
* @param {number} visualColumn Visual column index.
|
138
|
-
* @returns {number | null}
|
139
|
-
*/
|
140
|
-
_classPrivateMethodInitSpec(this, _onBeforeViewportScrollHorizontally);
|
141
|
-
/**
|
142
|
-
* On menu after close listener.
|
143
|
-
*
|
144
|
-
* @private
|
145
|
-
* @fires Hooks#afterDropdownMenuHide
|
146
|
-
*/
|
147
|
-
_classPrivateMethodInitSpec(this, _onMenuAfterClose);
|
148
|
-
/**
|
149
|
-
* Listener for the `afterSubmenuOpen` hook.
|
150
|
-
*
|
151
|
-
* @private
|
152
|
-
* @param {Menu} subMenuInstance The opened sub menu instance.
|
153
|
-
*/
|
154
|
-
_classPrivateMethodInitSpec(this, _onSubMenuAfterOpen);
|
155
|
-
/**
|
156
|
-
* On menu after open listener.
|
157
|
-
*
|
158
|
-
* @private
|
159
|
-
* @fires Hooks#afterDropdownMenuShow
|
160
|
-
*/
|
161
|
-
_classPrivateMethodInitSpec(this, _onMenuAfterOpen);
|
162
|
-
/**
|
163
|
-
* On menu before open listener.
|
164
|
-
*
|
165
|
-
* @private
|
166
|
-
* @fires Hooks#beforeDropdownMenuShow
|
167
|
-
*/
|
168
|
-
_classPrivateMethodInitSpec(this, _onMenuBeforeOpen);
|
169
|
-
/**
|
170
|
-
* On after get column header listener.
|
171
|
-
*
|
172
|
-
* @private
|
173
|
-
* @param {number} col Visual column index.
|
174
|
-
* @param {HTMLTableCellElement} TH Header's TH element.
|
175
|
-
*/
|
176
|
-
_classPrivateMethodInitSpec(this, _onAfterGetColHeader);
|
177
|
-
/**
|
178
|
-
* Table click listener.
|
179
|
-
*
|
180
|
-
* @private
|
181
|
-
* @param {Event} event The mouse event object.
|
182
|
-
*/
|
183
|
-
_classPrivateMethodInitSpec(this, _onTableClick);
|
184
114
|
/**
|
185
115
|
* Add custom shortcuts to the provided menu instance.
|
186
116
|
*
|
187
117
|
* @param {Menu} menuInstance The menu instance.
|
188
118
|
*/
|
189
|
-
_classPrivateMethodInitSpec(this,
|
119
|
+
_classPrivateMethodInitSpec(this, _DropdownMenu_brand);
|
190
120
|
_defineProperty(this, "commandExecutor", new CommandExecutor(this.hot));
|
191
121
|
/**
|
192
122
|
* Instance of {@link ItemsFactory}.
|
@@ -207,11 +137,8 @@ export class DropdownMenu extends BasePlugin {
|
|
207
137
|
*
|
208
138
|
* @type {boolean}
|
209
139
|
*/
|
210
|
-
_classPrivateFieldInitSpec(this, _isButtonClicked,
|
211
|
-
|
212
|
-
value: false
|
213
|
-
});
|
214
|
-
this.hot.addHook('afterGetColHeader', (col, TH) => _classPrivateMethodGet(this, _onAfterGetColHeader, _onAfterGetColHeader2).call(this, col, TH));
|
140
|
+
_classPrivateFieldInitSpec(this, _isButtonClicked, false);
|
141
|
+
this.hot.addHook('afterGetColHeader', (col, TH) => _assertClassBrand(_DropdownMenu_brand, this, _onAfterGetColHeader).call(this, col, TH));
|
215
142
|
}
|
216
143
|
|
217
144
|
/**
|
@@ -240,13 +167,13 @@ export class DropdownMenu extends BasePlugin {
|
|
240
167
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
241
168
|
args[_key] = arguments[_key];
|
242
169
|
}
|
243
|
-
return
|
170
|
+
return _assertClassBrand(_DropdownMenu_brand, _this, _onBeforeOnCellMouseDown).call(_this, ...args);
|
244
171
|
});
|
245
172
|
this.addHook('beforeViewportScrollHorizontally', function () {
|
246
173
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
247
174
|
args[_key2] = arguments[_key2];
|
248
175
|
}
|
249
|
-
return
|
176
|
+
return _assertClassBrand(_DropdownMenu_brand, _this, _onBeforeViewportScrollHorizontally).call(_this, ...args);
|
250
177
|
});
|
251
178
|
const settings = this.hot.getSettings()[PLUGIN_KEY];
|
252
179
|
const predefinedItems = {
|
@@ -272,10 +199,10 @@ export class DropdownMenu extends BasePlugin {
|
|
272
199
|
});
|
273
200
|
this.hot.runHooks('beforeDropdownMenuSetItems', menuItems);
|
274
201
|
this.menu.setMenuItems(menuItems);
|
275
|
-
this.menu.addLocalHook('beforeOpen', () =>
|
276
|
-
this.menu.addLocalHook('afterOpen', () =>
|
277
|
-
this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance =>
|
278
|
-
this.menu.addLocalHook('afterClose', () =>
|
202
|
+
this.menu.addLocalHook('beforeOpen', () => _assertClassBrand(_DropdownMenu_brand, this, _onMenuBeforeOpen).call(this));
|
203
|
+
this.menu.addLocalHook('afterOpen', () => _assertClassBrand(_DropdownMenu_brand, this, _onMenuAfterOpen).call(this));
|
204
|
+
this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => _assertClassBrand(_DropdownMenu_brand, this, _onSubMenuAfterOpen).call(this, subMenuInstance));
|
205
|
+
this.menu.addLocalHook('afterClose', () => _assertClassBrand(_DropdownMenu_brand, this, _onMenuAfterClose).call(this));
|
279
206
|
this.menu.addLocalHook('executeCommand', function () {
|
280
207
|
for (var _len3 = arguments.length, params = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
281
208
|
params[_key3] = arguments[_key3];
|
@@ -379,7 +306,7 @@ export class DropdownMenu extends BasePlugin {
|
|
379
306
|
* @private
|
380
307
|
*/
|
381
308
|
registerEvents() {
|
382
|
-
this.eventManager.addEventListener(this.hot.rootElement, 'click', event =>
|
309
|
+
this.eventManager.addEventListener(this.hot.rootElement, 'click', event => _assertClassBrand(_DropdownMenu_brand, this, _onTableClick).call(this, event));
|
383
310
|
}
|
384
311
|
|
385
312
|
/**
|
@@ -428,12 +355,9 @@ export class DropdownMenu extends BasePlugin {
|
|
428
355
|
* When no cells are selected, `executeCommand()` doesn't do anything.
|
429
356
|
*
|
430
357
|
* You can execute all predefined commands:
|
431
|
-
* * `'row_above'` - Insert row above
|
432
|
-
* * `'row_below'` - Insert row below
|
433
358
|
* * `'col_left'` - Insert column left
|
434
359
|
* * `'col_right'` - Insert column right
|
435
360
|
* * `'clear_column'` - Clear selected column
|
436
|
-
* * `'remove_row'` - Remove row
|
437
361
|
* * `'remove_col'` - Remove column
|
438
362
|
* * `'undo'` - Undo last action
|
439
363
|
* * `'redo'` - Redo last action
|
@@ -484,18 +408,24 @@ export class DropdownMenu extends BasePlugin {
|
|
484
408
|
super.destroy();
|
485
409
|
}
|
486
410
|
}
|
487
|
-
function
|
411
|
+
function _addCustomShortcuts(menuInstance) {
|
488
412
|
menuInstance.getKeyboardShortcutsCtrl().addCustomShortcuts([{
|
489
413
|
keys: [['Control/Meta', 'A']],
|
490
414
|
callback: () => false
|
491
415
|
}]);
|
492
416
|
}
|
493
|
-
|
494
|
-
|
417
|
+
/**
|
418
|
+
* Table click listener.
|
419
|
+
*
|
420
|
+
* @private
|
421
|
+
* @param {Event} event The mouse event object.
|
422
|
+
*/
|
423
|
+
function _onTableClick(event) {
|
495
424
|
if (hasClass(event.target, BUTTON_CLASS_NAME)) {
|
496
425
|
const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
|
497
426
|
const rect = event.target.getBoundingClientRect();
|
498
|
-
|
427
|
+
event.stopPropagation();
|
428
|
+
_classPrivateFieldSet(_isButtonClicked, this, false);
|
499
429
|
this.open({
|
500
430
|
left: rect.left + offset.left,
|
501
431
|
top: rect.top + event.target.offsetHeight + 3 + offset.top
|
@@ -504,7 +434,14 @@ function _onTableClick2(event) {
|
|
504
434
|
});
|
505
435
|
}
|
506
436
|
}
|
507
|
-
|
437
|
+
/**
|
438
|
+
* On after get column header listener.
|
439
|
+
*
|
440
|
+
* @private
|
441
|
+
* @param {number} col Visual column index.
|
442
|
+
* @param {HTMLTableCellElement} TH Header's TH element.
|
443
|
+
*/
|
444
|
+
function _onAfterGetColHeader(col, TH) {
|
508
445
|
// Corner or a higher-level header
|
509
446
|
const headerRow = TH.parentNode;
|
510
447
|
if (!headerRow) {
|
@@ -543,26 +480,63 @@ function _onAfterGetColHeader2(col, TH) {
|
|
543
480
|
};
|
544
481
|
TH.firstChild.insertBefore(button, TH.firstChild.firstChild);
|
545
482
|
}
|
546
|
-
|
483
|
+
/**
|
484
|
+
* On menu before open listener.
|
485
|
+
*
|
486
|
+
* @private
|
487
|
+
* @fires Hooks#beforeDropdownMenuShow
|
488
|
+
*/
|
489
|
+
function _onMenuBeforeOpen() {
|
547
490
|
this.hot.runHooks('beforeDropdownMenuShow', this);
|
548
491
|
}
|
549
|
-
|
492
|
+
/**
|
493
|
+
* On menu after open listener.
|
494
|
+
*
|
495
|
+
* @private
|
496
|
+
* @fires Hooks#afterDropdownMenuShow
|
497
|
+
*/
|
498
|
+
function _onMenuAfterOpen() {
|
550
499
|
this.hot.runHooks('afterDropdownMenuShow', this);
|
551
|
-
|
500
|
+
_assertClassBrand(_DropdownMenu_brand, this, _addCustomShortcuts).call(this, this.menu);
|
552
501
|
}
|
553
|
-
|
554
|
-
|
502
|
+
/**
|
503
|
+
* Listener for the `afterSubmenuOpen` hook.
|
504
|
+
*
|
505
|
+
* @private
|
506
|
+
* @param {Menu} subMenuInstance The opened sub menu instance.
|
507
|
+
*/
|
508
|
+
function _onSubMenuAfterOpen(subMenuInstance) {
|
509
|
+
_assertClassBrand(_DropdownMenu_brand, this, _addCustomShortcuts).call(this, subMenuInstance);
|
555
510
|
}
|
556
|
-
|
511
|
+
/**
|
512
|
+
* On menu after close listener.
|
513
|
+
*
|
514
|
+
* @private
|
515
|
+
* @fires Hooks#afterDropdownMenuHide
|
516
|
+
*/
|
517
|
+
function _onMenuAfterClose() {
|
557
518
|
this.hot.listen();
|
558
519
|
this.hot.runHooks('afterDropdownMenuHide', this);
|
559
520
|
}
|
560
|
-
|
561
|
-
|
521
|
+
/**
|
522
|
+
* Hook allows blocking horizontal scroll when the menu is opened by clicking on
|
523
|
+
* the column header button. This prevents from scrolling the viewport (jump effect) when
|
524
|
+
* the button is clicked.
|
525
|
+
*
|
526
|
+
* @param {number} visualColumn Visual column index.
|
527
|
+
* @returns {number | null}
|
528
|
+
*/
|
529
|
+
function _onBeforeViewportScrollHorizontally(visualColumn) {
|
530
|
+
return _classPrivateFieldGet(_isButtonClicked, this) ? null : visualColumn;
|
562
531
|
}
|
563
|
-
|
532
|
+
/**
|
533
|
+
* Hook sets the internal flag to `true` when the button is clicked.
|
534
|
+
*
|
535
|
+
* @param {MouseEvent} event The mouse event object.
|
536
|
+
*/
|
537
|
+
function _onBeforeOnCellMouseDown(event) {
|
564
538
|
if (hasClass(event.target, BUTTON_CLASS_NAME)) {
|
565
|
-
_classPrivateFieldSet(
|
539
|
+
_classPrivateFieldSet(_isButtonClicked, this, true);
|
566
540
|
}
|
567
541
|
}
|
568
542
|
DropdownMenu.SEPARATOR = {
|