handsontable 0.0.0-next-85c3085-20230713 → 0.0.0-next-08765b9-20230714
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/walkontable/src/cell/coords.d.ts +6 -1
- package/3rdparty/walkontable/src/cell/coords.js +50 -11
- package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +38 -7
- package/3rdparty/walkontable/src/cell/range.mjs +38 -7
- package/3rdparty/walkontable/src/core/_base.js +9 -3
- package/3rdparty/walkontable/src/core/_base.mjs +9 -3
- package/3rdparty/walkontable/src/core/clone.js +2 -2
- package/3rdparty/walkontable/src/core/clone.mjs +2 -2
- package/3rdparty/walkontable/src/core/core.js +3 -2
- package/3rdparty/walkontable/src/core/core.mjs +3 -2
- package/3rdparty/walkontable/src/event.js +7 -7
- package/3rdparty/walkontable/src/event.mjs +7 -7
- package/3rdparty/walkontable/src/facade/core.js +2 -2
- package/3rdparty/walkontable/src/facade/core.mjs +2 -2
- package/3rdparty/walkontable/src/index.js +10 -2
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +1 -1
- package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
- package/3rdparty/walkontable/src/overlay/top.js +2 -6
- package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
- package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
- package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
- package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
- package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
- package/3rdparty/walkontable/src/selection/constants.js +62 -0
- package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
- package/3rdparty/walkontable/src/selection/index.js +26 -0
- package/3rdparty/walkontable/src/selection/index.mjs +5 -0
- package/3rdparty/walkontable/src/selection/manager.js +259 -0
- package/3rdparty/walkontable/src/selection/manager.mjs +254 -0
- package/3rdparty/walkontable/src/selection/scanner.js +270 -0
- package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
- package/3rdparty/walkontable/src/selection/selection.js +101 -0
- package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
- package/3rdparty/walkontable/src/table.js +6 -78
- package/3rdparty/walkontable/src/table.mjs +7 -79
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core/focusCatcher/focusDetector.js +58 -0
- package/core/focusCatcher/focusDetector.mjs +54 -0
- package/core/focusCatcher/index.js +142 -0
- package/core/focusCatcher/index.mjs +138 -0
- package/core/index.js +9 -0
- package/core/index.mjs +1 -0
- package/core.d.ts +6 -3
- package/core.js +173 -290
- package/core.mjs +173 -290
- package/dataMap/metaManager/metaSchema.js +41 -0
- package/dataMap/metaManager/metaSchema.mjs +41 -0
- package/dist/handsontable.css +19 -3
- package/dist/handsontable.full.css +19 -3
- package/dist/handsontable.full.js +8668 -5366
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +25 -25
- package/dist/handsontable.js +10976 -7674
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +19 -19
- package/editorManager.js +11 -75
- package/editorManager.mjs +11 -74
- package/editors/textEditor/textEditor.js +3 -11
- package/editors/textEditor/textEditor.mjs +4 -12
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +1 -0
- package/helpers/number.js +18 -0
- package/helpers/number.mjs +17 -0
- package/package.json +1 -1
- package/pluginHooks.d.ts +7 -1
- package/pluginHooks.js +106 -1
- package/pluginHooks.mjs +106 -1
- package/plugins/collapsibleColumns/collapsibleColumns.js +58 -4
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +58 -4
- package/plugins/columnSorting/columnSorting.js +38 -0
- package/plugins/columnSorting/columnSorting.mjs +38 -2
- package/plugins/columnSorting/index.js +3 -1
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/comments/commentEditor.js +1 -0
- package/plugins/comments/commentEditor.mjs +1 -0
- package/plugins/comments/comments.js +251 -189
- package/plugins/comments/comments.mjs +250 -190
- package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
- package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
- package/plugins/comments/contextMenuItem/removeComment.js +38 -0
- package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +72 -30
- package/plugins/contextMenu/contextMenu.mjs +73 -31
- package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
- package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
- package/plugins/contextMenu/utils.js +28 -16
- package/plugins/contextMenu/utils.mjs +27 -15
- package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
- package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
- package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
- package/plugins/copyPaste/copyPaste.js +6 -2
- package/plugins/copyPaste/copyPaste.mjs +6 -2
- package/plugins/customBorders/customBorders.js +23 -20
- package/plugins/customBorders/customBorders.mjs +24 -21
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +89 -32
- package/plugins/dropdownMenu/dropdownMenu.mjs +89 -32
- package/plugins/filters/filters.js +31 -14
- package/plugins/filters/filters.mjs +30 -13
- package/plugins/mergeCells/mergeCells.js +5 -16
- package/plugins/mergeCells/mergeCells.mjs +5 -16
- package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
- package/plugins/nestedHeaders/nestedHeaders.js +121 -8
- package/plugins/nestedHeaders/nestedHeaders.mjs +121 -8
- package/plugins/nestedHeaders/stateManager/index.js +37 -0
- package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
- package/plugins/nestedRows/nestedRows.js +41 -0
- package/plugins/nestedRows/nestedRows.mjs +41 -0
- package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
- package/selection/highlight/highlight.js +256 -71
- package/selection/highlight/highlight.mjs +250 -71
- package/selection/highlight/types/activeHeader.js +10 -8
- package/selection/highlight/types/activeHeader.mjs +10 -8
- package/selection/highlight/types/area.js +6 -18
- package/selection/highlight/types/area.mjs +6 -18
- package/selection/highlight/types/areaLayered.js +31 -0
- package/selection/highlight/types/areaLayered.mjs +26 -0
- package/selection/highlight/types/column.js +27 -0
- package/selection/highlight/types/column.mjs +22 -0
- package/selection/highlight/types/customSelection.js +7 -9
- package/selection/highlight/types/customSelection.mjs +7 -9
- package/selection/highlight/types/fill.js +5 -7
- package/selection/highlight/types/fill.mjs +5 -7
- package/selection/highlight/types/{cell.js → focus.js} +5 -7
- package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
- package/selection/highlight/types/header.js +9 -18
- package/selection/highlight/types/header.mjs +9 -18
- package/selection/highlight/types/row.js +27 -0
- package/selection/highlight/types/row.mjs +22 -0
- package/selection/highlight/visualSelection.js +31 -27
- package/selection/highlight/visualSelection.mjs +31 -27
- package/selection/index.js +4 -7
- package/selection/index.mjs +2 -3
- package/selection/mouseEventHandler.js +1 -1
- package/selection/mouseEventHandler.mjs +1 -1
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +290 -154
- package/selection/selection.mjs +287 -153
- package/selection/transformation.js +232 -90
- package/selection/transformation.mjs +232 -90
- package/selection/utils.js +15 -21
- package/selection/utils.mjs +16 -21
- package/settings.d.ts +2 -0
- package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +16 -0
- package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
- package/shortcutContexts/commands/editor/index.js +16 -0
- package/shortcutContexts/commands/editor/index.mjs +12 -0
- package/shortcutContexts/commands/editor/open.js +27 -0
- package/shortcutContexts/commands/editor/open.mjs +23 -0
- package/shortcutContexts/commands/emptySelectedCells.js +11 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +17 -0
- package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
- package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +17 -0
- package/shortcutContexts/commands/index.js +35 -0
- package/shortcutContexts/commands/index.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +31 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +27 -0
- package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
- package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +31 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +27 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +36 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +32 -0
- package/shortcutContexts/commands/selectAll.js +10 -0
- package/shortcutContexts/commands/selectAll.mjs +6 -0
- package/shortcutContexts/constants.js +13 -0
- package/shortcutContexts/constants.mjs +8 -0
- package/shortcutContexts/editor.js +25 -0
- package/shortcutContexts/editor.mjs +21 -0
- package/shortcutContexts/grid.js +163 -0
- package/shortcutContexts/grid.mjs +159 -0
- package/shortcutContexts/index.js +24 -0
- package/shortcutContexts/index.mjs +11 -0
- package/shortcuts/manager.js +2 -0
- package/shortcuts/manager.mjs +2 -0
- package/shortcuts/recorder.js +2 -2
- package/shortcuts/recorder.mjs +2 -2
- package/shortcuts/utils.js +19 -5
- package/shortcuts/utils.mjs +18 -4
- package/tableView.js +67 -13
- package/tableView.mjs +67 -13
- package/3rdparty/walkontable/src/selection.js +0 -295
- package/3rdparty/walkontable/src/selection.mjs +0 -290
- package/selection/highlight/constants.js +0 -15
- package/selection/highlight/constants.mjs +0 -6
- package/selection/highlight/types/index.js +0 -35
- package/selection/highlight/types/index.mjs +0 -31
@@ -431,6 +431,10 @@ class CopyPaste extends _base.BasePlugin {
|
|
431
431
|
if (!selectionRange) {
|
432
432
|
return;
|
433
433
|
}
|
434
|
+
if (selectionRange.isSingleHeader()) {
|
435
|
+
this.copyableRanges = [];
|
436
|
+
return;
|
437
|
+
}
|
434
438
|
_classPrivateFieldGet(this, _copyableRangesFactory).setSelectedRange(selectionRange);
|
435
439
|
const groupedRanges = new Map([['headers', null], ['cells', null]]);
|
436
440
|
if (_classPrivateFieldGet(this, _copyMode) === 'column-headers-only') {
|
@@ -627,7 +631,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
627
631
|
* @private
|
628
632
|
*/
|
629
633
|
onPaste(event) {
|
630
|
-
if (!this.hot.isListening() || this.isEditorOpened()) {
|
634
|
+
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected()) {
|
631
635
|
return;
|
632
636
|
}
|
633
637
|
if (event && event.preventDefault) {
|
@@ -652,7 +656,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
652
656
|
if (typeof pastedData === 'string') {
|
653
657
|
pastedData = (0, _SheetClip.parse)(pastedData);
|
654
658
|
}
|
655
|
-
if (pastedData && pastedData.length === 0) {
|
659
|
+
if (pastedData === void 0 || pastedData && pastedData.length === 0) {
|
656
660
|
return;
|
657
661
|
}
|
658
662
|
if (this.hot.runHooks('beforePaste', pastedData, this.copyableRanges) === false) {
|
@@ -425,6 +425,10 @@ export class CopyPaste extends BasePlugin {
|
|
425
425
|
if (!selectionRange) {
|
426
426
|
return;
|
427
427
|
}
|
428
|
+
if (selectionRange.isSingleHeader()) {
|
429
|
+
this.copyableRanges = [];
|
430
|
+
return;
|
431
|
+
}
|
428
432
|
_classPrivateFieldGet(this, _copyableRangesFactory).setSelectedRange(selectionRange);
|
429
433
|
const groupedRanges = new Map([['headers', null], ['cells', null]]);
|
430
434
|
if (_classPrivateFieldGet(this, _copyMode) === 'column-headers-only') {
|
@@ -621,7 +625,7 @@ export class CopyPaste extends BasePlugin {
|
|
621
625
|
* @private
|
622
626
|
*/
|
623
627
|
onPaste(event) {
|
624
|
-
if (!this.hot.isListening() || this.isEditorOpened()) {
|
628
|
+
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected()) {
|
625
629
|
return;
|
626
630
|
}
|
627
631
|
if (event && event.preventDefault) {
|
@@ -646,7 +650,7 @@ export class CopyPaste extends BasePlugin {
|
|
646
650
|
if (typeof pastedData === 'string') {
|
647
651
|
pastedData = parse(pastedData);
|
648
652
|
}
|
649
|
-
if (pastedData && pastedData.length === 0) {
|
653
|
+
if (pastedData === void 0 || pastedData && pastedData.length === 0) {
|
650
654
|
return;
|
651
655
|
}
|
652
656
|
if (this.hot.runHooks('beforePaste', pastedData, this.copyableRanges) === false) {
|
@@ -167,14 +167,11 @@ class CustomBorders extends _base.BasePlugin {
|
|
167
167
|
const selectionType = (0, _selection.detectSelectionType)(selectionRanges);
|
168
168
|
const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType);
|
169
169
|
(0, _array.arrayEach)(selectionRanges, selection => {
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
});
|
176
|
-
}
|
177
|
-
}
|
170
|
+
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
171
|
+
(0, _array.arrayEach)(borderKeys, borderKey => {
|
172
|
+
this.prepareBorderFromCustomAdded(row, col, normBorder, (0, _utils.toInlinePropName)(borderKey));
|
173
|
+
});
|
174
|
+
});
|
178
175
|
});
|
179
176
|
|
180
177
|
/*
|
@@ -214,16 +211,13 @@ class CustomBorders extends _base.BasePlugin {
|
|
214
211
|
const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType);
|
215
212
|
const selectedBorders = [];
|
216
213
|
(0, _array.arrayEach)(selectionRanges, selection => {
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
});
|
225
|
-
}
|
226
|
-
}
|
214
|
+
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
215
|
+
(0, _array.arrayEach)(this.savedBorders, border => {
|
216
|
+
if (border.row === row && border.col === col) {
|
217
|
+
selectedBorders.push((0, _utils.denormalizeBorder)(border));
|
218
|
+
}
|
219
|
+
});
|
220
|
+
});
|
227
221
|
});
|
228
222
|
return selectedBorders;
|
229
223
|
}
|
@@ -614,7 +608,8 @@ class CustomBorders extends _base.BasePlugin {
|
|
614
608
|
let check = false;
|
615
609
|
(0, _array.arrayEach)(this.hot.selection.highlight.customSelections, customSelection => {
|
616
610
|
if (border.id === customSelection.settings.id) {
|
617
|
-
|
611
|
+
const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
|
612
|
+
(0, _array.arrayEach)(borders, borderObject => {
|
618
613
|
borderObject.toggleHiddenClass(place, remove); // TODO this also bad?
|
619
614
|
});
|
620
615
|
|
@@ -648,7 +643,8 @@ class CustomBorders extends _base.BasePlugin {
|
|
648
643
|
customSelection.visualCellRange = cellRange;
|
649
644
|
customSelection.commit();
|
650
645
|
if (place) {
|
651
|
-
|
646
|
+
const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
|
647
|
+
(0, _array.arrayEach)(borders, borderObject => {
|
652
648
|
borderObject.changeBorderStyle(place, border);
|
653
649
|
});
|
654
650
|
}
|
@@ -716,6 +712,13 @@ class CustomBorders extends _base.BasePlugin {
|
|
716
712
|
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
|
717
713
|
},
|
718
714
|
disabled() {
|
715
|
+
const range = this.getSelectedRangeLast();
|
716
|
+
if (!range) {
|
717
|
+
return true;
|
718
|
+
}
|
719
|
+
if (range.isSingleHeader()) {
|
720
|
+
return true;
|
721
|
+
}
|
719
722
|
return this.selection.isSelectedByCorner();
|
720
723
|
},
|
721
724
|
submenu: {
|
@@ -4,7 +4,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
4
4
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
5
5
|
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); }
|
6
6
|
import { BasePlugin } from "../base/index.mjs";
|
7
|
-
import { hasOwnProperty,
|
7
|
+
import { hasOwnProperty, deepClone } from "../../helpers/object.mjs";
|
8
8
|
import { rangeEach } from "../../helpers/number.mjs";
|
9
9
|
import { arrayEach, arrayReduce, arrayMap } from "../../helpers/array.mjs";
|
10
10
|
import * as C from "../../i18n/constants.mjs";
|
@@ -160,14 +160,11 @@ export class CustomBorders extends BasePlugin {
|
|
160
160
|
const selectionType = detectSelectionType(selectionRanges);
|
161
161
|
const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);
|
162
162
|
arrayEach(selectionRanges, selection => {
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
});
|
169
|
-
}
|
170
|
-
}
|
163
|
+
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
164
|
+
arrayEach(borderKeys, borderKey => {
|
165
|
+
this.prepareBorderFromCustomAdded(row, col, normBorder, toInlinePropName(borderKey));
|
166
|
+
});
|
167
|
+
});
|
171
168
|
});
|
172
169
|
|
173
170
|
/*
|
@@ -207,16 +204,13 @@ export class CustomBorders extends BasePlugin {
|
|
207
204
|
const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);
|
208
205
|
const selectedBorders = [];
|
209
206
|
arrayEach(selectionRanges, selection => {
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
});
|
218
|
-
}
|
219
|
-
}
|
207
|
+
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
208
|
+
arrayEach(this.savedBorders, border => {
|
209
|
+
if (border.row === row && border.col === col) {
|
210
|
+
selectedBorders.push(denormalizeBorder(border));
|
211
|
+
}
|
212
|
+
});
|
213
|
+
});
|
220
214
|
});
|
221
215
|
return selectedBorders;
|
222
216
|
}
|
@@ -607,7 +601,8 @@ export class CustomBorders extends BasePlugin {
|
|
607
601
|
let check = false;
|
608
602
|
arrayEach(this.hot.selection.highlight.customSelections, customSelection => {
|
609
603
|
if (border.id === customSelection.settings.id) {
|
610
|
-
|
604
|
+
const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
|
605
|
+
arrayEach(borders, borderObject => {
|
611
606
|
borderObject.toggleHiddenClass(place, remove); // TODO this also bad?
|
612
607
|
});
|
613
608
|
|
@@ -641,7 +636,8 @@ export class CustomBorders extends BasePlugin {
|
|
641
636
|
customSelection.visualCellRange = cellRange;
|
642
637
|
customSelection.commit();
|
643
638
|
if (place) {
|
644
|
-
|
639
|
+
const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
|
640
|
+
arrayEach(borders, borderObject => {
|
645
641
|
borderObject.changeBorderStyle(place, border);
|
646
642
|
});
|
647
643
|
}
|
@@ -709,6 +705,13 @@ export class CustomBorders extends BasePlugin {
|
|
709
705
|
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
|
710
706
|
},
|
711
707
|
disabled() {
|
708
|
+
const range = this.getSelectedRangeLast();
|
709
|
+
if (!range) {
|
710
|
+
return true;
|
711
|
+
}
|
712
|
+
if (range.isSingleHeader()) {
|
713
|
+
return true;
|
714
|
+
}
|
712
715
|
return this.selection.isSelectedByCorner();
|
713
716
|
},
|
714
717
|
submenu: {
|
@@ -18,7 +18,7 @@ export class DropdownMenu extends BasePlugin {
|
|
18
18
|
|
19
19
|
constructor(hotInstance: Core);
|
20
20
|
isEnabled(): boolean;
|
21
|
-
open(
|
21
|
+
open(position: { left: number, top: number } | Event, offset?: { above?: number, below?: number, left?: number, right?: number }): void;
|
22
22
|
close(): void;
|
23
23
|
executeCommand(commandName: string, ...params: any): void;
|
24
24
|
}
|
@@ -3,7 +3,9 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
var _base = require("../base");
|
5
5
|
var _array = require("../../helpers/array");
|
6
|
+
var _object = require("../../helpers/object");
|
6
7
|
var _commandExecutor = _interopRequireDefault(require("../contextMenu/commandExecutor"));
|
8
|
+
var _utils = require("../contextMenu/utils");
|
7
9
|
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
8
10
|
var _element = require("../../helpers/dom/element");
|
9
11
|
var _itemsFactory = _interopRequireDefault(require("../contextMenu/itemsFactory"));
|
@@ -21,6 +23,7 @@ exports.PLUGIN_KEY = PLUGIN_KEY;
|
|
21
23
|
const PLUGIN_PRIORITY = 230;
|
22
24
|
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
23
25
|
const BUTTON_CLASS_NAME = 'changeType';
|
26
|
+
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
24
27
|
|
25
28
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
26
29
|
/**
|
@@ -157,6 +160,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
157
160
|
if (typeof settings.callback === 'function') {
|
158
161
|
this.commandExecutor.setCommonCallback(settings.callback);
|
159
162
|
}
|
163
|
+
this.registerShortcuts();
|
160
164
|
super.enablePlugin();
|
161
165
|
this.callOnPluginsReady(() => {
|
162
166
|
this.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
|
@@ -207,9 +211,68 @@ class DropdownMenu extends _base.BasePlugin {
|
|
207
211
|
if (this.menu) {
|
208
212
|
this.menu.destroy();
|
209
213
|
}
|
214
|
+
this.unregisterShortcuts();
|
210
215
|
super.disablePlugin();
|
211
216
|
}
|
212
217
|
|
218
|
+
/**
|
219
|
+
* Register shortcuts responsible for toggling dropdown menu.
|
220
|
+
*
|
221
|
+
* @private
|
222
|
+
*/
|
223
|
+
registerShortcuts() {
|
224
|
+
const context = this.hot.getShortcutManager().getContext('grid');
|
225
|
+
const callback = () => {
|
226
|
+
const {
|
227
|
+
highlight
|
228
|
+
} = this.hot.getSelectedRangeLast();
|
229
|
+
if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
|
230
|
+
this.hot.selectColumns(highlight.col, highlight.col, -1);
|
231
|
+
const {
|
232
|
+
from
|
233
|
+
} = this.hot.getSelectedRangeLast();
|
234
|
+
const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
|
235
|
+
const target = this.hot.getCell(-1, from.col, true);
|
236
|
+
const rect = target.getBoundingClientRect();
|
237
|
+
this.open({
|
238
|
+
left: rect.left + offset.left,
|
239
|
+
top: rect.top + target.offsetHeight + offset.top
|
240
|
+
}, {
|
241
|
+
left: rect.width
|
242
|
+
});
|
243
|
+
this.hot._registerTimeout(() => {
|
244
|
+
this.menu.selectFirstCell();
|
245
|
+
});
|
246
|
+
}
|
247
|
+
};
|
248
|
+
context.addShortcuts([{
|
249
|
+
keys: [['Shift', 'Alt', 'ArrowDown'], ['Shift', 'Enter']],
|
250
|
+
callback,
|
251
|
+
runOnlyIf: () => {
|
252
|
+
var _this$hot$getSelected;
|
253
|
+
return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader()) && !this.menu.isOpened();
|
254
|
+
},
|
255
|
+
group: SHORTCUTS_GROUP
|
256
|
+
}, {
|
257
|
+
keys: [['Shift', 'Alt', 'ArrowDown']],
|
258
|
+
callback,
|
259
|
+
runOnlyIf: () => {
|
260
|
+
var _this$hot$getSelected2;
|
261
|
+
return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && !this.menu.isOpened();
|
262
|
+
},
|
263
|
+
group: SHORTCUTS_GROUP
|
264
|
+
}]);
|
265
|
+
}
|
266
|
+
|
267
|
+
/**
|
268
|
+
* Unregister shortcuts responsible for toggling dropdown menu.
|
269
|
+
*
|
270
|
+
* @private
|
271
|
+
*/
|
272
|
+
unregisterShortcuts() {
|
273
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
274
|
+
}
|
275
|
+
|
213
276
|
/**
|
214
277
|
* Registers the DOM listeners.
|
215
278
|
*
|
@@ -222,23 +285,30 @@ class DropdownMenu extends _base.BasePlugin {
|
|
222
285
|
/**
|
223
286
|
* Opens menu and re-position it based on the passed coordinates.
|
224
287
|
*
|
225
|
-
* @param {
|
226
|
-
*
|
227
|
-
*
|
228
|
-
*
|
229
|
-
*
|
288
|
+
* @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
|
289
|
+
* which contains coordinates relative to the browsers viewport (without included scroll offsets).
|
290
|
+
* Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
|
291
|
+
* coordinates.
|
292
|
+
* @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
|
293
|
+
* the offset to the menu position.
|
230
294
|
* @fires Hooks#beforeDropdownMenuShow
|
231
295
|
* @fires Hooks#afterDropdownMenuShow
|
232
296
|
*/
|
233
|
-
|
234
297
|
open(position) {
|
235
|
-
|
298
|
+
var _this$menu;
|
299
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
300
|
+
above: 0,
|
301
|
+
below: 0,
|
302
|
+
left: 0,
|
303
|
+
right: 0
|
304
|
+
};
|
305
|
+
if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
|
236
306
|
return;
|
237
307
|
}
|
238
308
|
this.menu.open();
|
239
|
-
|
240
|
-
this.menu.setOffset(
|
241
|
-
}
|
309
|
+
(0, _object.objectEach)(offset, (value, key) => {
|
310
|
+
this.menu.setOffset(key, value);
|
311
|
+
});
|
242
312
|
this.menu.setPosition(position);
|
243
313
|
}
|
244
314
|
|
@@ -246,10 +316,8 @@ class DropdownMenu extends _base.BasePlugin {
|
|
246
316
|
* Closes dropdown menu.
|
247
317
|
*/
|
248
318
|
close() {
|
249
|
-
|
250
|
-
|
251
|
-
}
|
252
|
-
this.menu.close();
|
319
|
+
var _this$menu2;
|
320
|
+
(_this$menu2 = this.menu) === null || _this$menu2 === void 0 ? void 0 : _this$menu2.close();
|
253
321
|
}
|
254
322
|
|
255
323
|
/**
|
@@ -314,26 +382,14 @@ class DropdownMenu extends _base.BasePlugin {
|
|
314
382
|
*/
|
315
383
|
onTableClick(event) {
|
316
384
|
event.stopPropagation();
|
317
|
-
if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)
|
318
|
-
|
319
|
-
let offsetLeft = 0;
|
320
|
-
if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
|
321
|
-
const {
|
322
|
-
frameElement
|
323
|
-
} = this.hot.rootWindow;
|
324
|
-
const {
|
325
|
-
top,
|
326
|
-
left
|
327
|
-
} = frameElement.getBoundingClientRect();
|
328
|
-
offsetTop = top;
|
329
|
-
offsetLeft = left;
|
330
|
-
}
|
385
|
+
if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
|
386
|
+
const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
|
331
387
|
const rect = event.target.getBoundingClientRect();
|
332
388
|
this.open({
|
333
|
-
left: rect.left +
|
334
|
-
top: rect.top + event.target.offsetHeight + 3 +
|
335
|
-
|
336
|
-
|
389
|
+
left: rect.left + offset.left,
|
390
|
+
top: rect.top + event.target.offsetHeight + 3 + offset.top
|
391
|
+
}, {
|
392
|
+
left: rect.width
|
337
393
|
});
|
338
394
|
}
|
339
395
|
}
|
@@ -372,6 +428,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
372
428
|
const button = this.hot.rootDocument.createElement('button');
|
373
429
|
button.className = BUTTON_CLASS_NAME;
|
374
430
|
button.type = 'button';
|
431
|
+
button.tabIndex = -1;
|
375
432
|
|
376
433
|
// prevent page reload on button click
|
377
434
|
button.onclick = function () {
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import { BasePlugin } from "../base/index.mjs";
|
2
2
|
import { arrayEach } from "../../helpers/array.mjs";
|
3
|
+
import { objectEach } from "../../helpers/object.mjs";
|
3
4
|
import CommandExecutor from "../contextMenu/commandExecutor.mjs";
|
5
|
+
import { getDocumentOffsetByElement } from "../contextMenu/utils.mjs";
|
4
6
|
import EventManager from "../../eventManager.mjs";
|
5
7
|
import { hasClass } from "../../helpers/dom/element.mjs";
|
6
8
|
import ItemsFactory from "../contextMenu/itemsFactory.mjs";
|
@@ -15,6 +17,7 @@ Hooks.getSingleton().register('afterDropdownMenuExecute');
|
|
15
17
|
export const PLUGIN_KEY = 'dropdownMenu';
|
16
18
|
export const PLUGIN_PRIORITY = 230;
|
17
19
|
const BUTTON_CLASS_NAME = 'changeType';
|
20
|
+
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
18
21
|
|
19
22
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
20
23
|
/**
|
@@ -151,6 +154,7 @@ export class DropdownMenu extends BasePlugin {
|
|
151
154
|
if (typeof settings.callback === 'function') {
|
152
155
|
this.commandExecutor.setCommonCallback(settings.callback);
|
153
156
|
}
|
157
|
+
this.registerShortcuts();
|
154
158
|
super.enablePlugin();
|
155
159
|
this.callOnPluginsReady(() => {
|
156
160
|
this.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
|
@@ -201,9 +205,68 @@ export class DropdownMenu extends BasePlugin {
|
|
201
205
|
if (this.menu) {
|
202
206
|
this.menu.destroy();
|
203
207
|
}
|
208
|
+
this.unregisterShortcuts();
|
204
209
|
super.disablePlugin();
|
205
210
|
}
|
206
211
|
|
212
|
+
/**
|
213
|
+
* Register shortcuts responsible for toggling dropdown menu.
|
214
|
+
*
|
215
|
+
* @private
|
216
|
+
*/
|
217
|
+
registerShortcuts() {
|
218
|
+
const context = this.hot.getShortcutManager().getContext('grid');
|
219
|
+
const callback = () => {
|
220
|
+
const {
|
221
|
+
highlight
|
222
|
+
} = this.hot.getSelectedRangeLast();
|
223
|
+
if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
|
224
|
+
this.hot.selectColumns(highlight.col, highlight.col, -1);
|
225
|
+
const {
|
226
|
+
from
|
227
|
+
} = this.hot.getSelectedRangeLast();
|
228
|
+
const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
|
229
|
+
const target = this.hot.getCell(-1, from.col, true);
|
230
|
+
const rect = target.getBoundingClientRect();
|
231
|
+
this.open({
|
232
|
+
left: rect.left + offset.left,
|
233
|
+
top: rect.top + target.offsetHeight + offset.top
|
234
|
+
}, {
|
235
|
+
left: rect.width
|
236
|
+
});
|
237
|
+
this.hot._registerTimeout(() => {
|
238
|
+
this.menu.selectFirstCell();
|
239
|
+
});
|
240
|
+
}
|
241
|
+
};
|
242
|
+
context.addShortcuts([{
|
243
|
+
keys: [['Shift', 'Alt', 'ArrowDown'], ['Shift', 'Enter']],
|
244
|
+
callback,
|
245
|
+
runOnlyIf: () => {
|
246
|
+
var _this$hot$getSelected;
|
247
|
+
return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader()) && !this.menu.isOpened();
|
248
|
+
},
|
249
|
+
group: SHORTCUTS_GROUP
|
250
|
+
}, {
|
251
|
+
keys: [['Shift', 'Alt', 'ArrowDown']],
|
252
|
+
callback,
|
253
|
+
runOnlyIf: () => {
|
254
|
+
var _this$hot$getSelected2;
|
255
|
+
return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && !this.menu.isOpened();
|
256
|
+
},
|
257
|
+
group: SHORTCUTS_GROUP
|
258
|
+
}]);
|
259
|
+
}
|
260
|
+
|
261
|
+
/**
|
262
|
+
* Unregister shortcuts responsible for toggling dropdown menu.
|
263
|
+
*
|
264
|
+
* @private
|
265
|
+
*/
|
266
|
+
unregisterShortcuts() {
|
267
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
268
|
+
}
|
269
|
+
|
207
270
|
/**
|
208
271
|
* Registers the DOM listeners.
|
209
272
|
*
|
@@ -216,23 +279,30 @@ export class DropdownMenu extends BasePlugin {
|
|
216
279
|
/**
|
217
280
|
* Opens menu and re-position it based on the passed coordinates.
|
218
281
|
*
|
219
|
-
* @param {
|
220
|
-
*
|
221
|
-
*
|
222
|
-
*
|
223
|
-
*
|
282
|
+
* @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
|
283
|
+
* which contains coordinates relative to the browsers viewport (without included scroll offsets).
|
284
|
+
* Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
|
285
|
+
* coordinates.
|
286
|
+
* @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
|
287
|
+
* the offset to the menu position.
|
224
288
|
* @fires Hooks#beforeDropdownMenuShow
|
225
289
|
* @fires Hooks#afterDropdownMenuShow
|
226
290
|
*/
|
227
|
-
|
228
291
|
open(position) {
|
229
|
-
|
292
|
+
var _this$menu;
|
293
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
294
|
+
above: 0,
|
295
|
+
below: 0,
|
296
|
+
left: 0,
|
297
|
+
right: 0
|
298
|
+
};
|
299
|
+
if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
|
230
300
|
return;
|
231
301
|
}
|
232
302
|
this.menu.open();
|
233
|
-
|
234
|
-
this.menu.setOffset(
|
235
|
-
}
|
303
|
+
objectEach(offset, (value, key) => {
|
304
|
+
this.menu.setOffset(key, value);
|
305
|
+
});
|
236
306
|
this.menu.setPosition(position);
|
237
307
|
}
|
238
308
|
|
@@ -240,10 +310,8 @@ export class DropdownMenu extends BasePlugin {
|
|
240
310
|
* Closes dropdown menu.
|
241
311
|
*/
|
242
312
|
close() {
|
243
|
-
|
244
|
-
|
245
|
-
}
|
246
|
-
this.menu.close();
|
313
|
+
var _this$menu2;
|
314
|
+
(_this$menu2 = this.menu) === null || _this$menu2 === void 0 ? void 0 : _this$menu2.close();
|
247
315
|
}
|
248
316
|
|
249
317
|
/**
|
@@ -308,26 +376,14 @@ export class DropdownMenu extends BasePlugin {
|
|
308
376
|
*/
|
309
377
|
onTableClick(event) {
|
310
378
|
event.stopPropagation();
|
311
|
-
if (hasClass(event.target, BUTTON_CLASS_NAME)
|
312
|
-
|
313
|
-
let offsetLeft = 0;
|
314
|
-
if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
|
315
|
-
const {
|
316
|
-
frameElement
|
317
|
-
} = this.hot.rootWindow;
|
318
|
-
const {
|
319
|
-
top,
|
320
|
-
left
|
321
|
-
} = frameElement.getBoundingClientRect();
|
322
|
-
offsetTop = top;
|
323
|
-
offsetLeft = left;
|
324
|
-
}
|
379
|
+
if (hasClass(event.target, BUTTON_CLASS_NAME)) {
|
380
|
+
const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
|
325
381
|
const rect = event.target.getBoundingClientRect();
|
326
382
|
this.open({
|
327
|
-
left: rect.left +
|
328
|
-
top: rect.top + event.target.offsetHeight + 3 +
|
329
|
-
|
330
|
-
|
383
|
+
left: rect.left + offset.left,
|
384
|
+
top: rect.top + event.target.offsetHeight + 3 + offset.top
|
385
|
+
}, {
|
386
|
+
left: rect.width
|
331
387
|
});
|
332
388
|
}
|
333
389
|
}
|
@@ -366,6 +422,7 @@ export class DropdownMenu extends BasePlugin {
|
|
366
422
|
const button = this.hot.rootDocument.createElement('button');
|
367
423
|
button.className = BUTTON_CLASS_NAME;
|
368
424
|
button.type = 'button';
|
425
|
+
button.tabIndex = -1;
|
369
426
|
|
370
427
|
// prevent page reload on button click
|
371
428
|
button.onclick = function () {
|