handsontable 11.1.0 → 12.1.0
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.
- package/3rdparty/walkontable/src/border.js +120 -98
- package/3rdparty/walkontable/src/border.mjs +120 -94
- package/3rdparty/walkontable/src/cell/coords.js +59 -17
- package/3rdparty/walkontable/src/cell/coords.mjs +55 -17
- package/3rdparty/walkontable/src/cell/range.d.ts +10 -2
- package/3rdparty/walkontable/src/cell/range.js +278 -99
- package/3rdparty/walkontable/src/cell/range.mjs +273 -99
- package/3rdparty/walkontable/src/core/_base.js +452 -0
- package/3rdparty/walkontable/src/core/_base.mjs +440 -0
- package/3rdparty/walkontable/src/core/clone.js +97 -0
- package/3rdparty/walkontable/src/core/clone.mjs +80 -0
- package/3rdparty/walkontable/src/core/core.js +183 -0
- package/3rdparty/walkontable/src/core/core.mjs +160 -0
- package/3rdparty/walkontable/src/event.js +99 -66
- package/3rdparty/walkontable/src/event.mjs +99 -63
- package/3rdparty/walkontable/src/facade/core.js +251 -0
- package/3rdparty/walkontable/src/facade/core.mjs +243 -0
- package/3rdparty/walkontable/src/index.js +2 -46
- package/3rdparty/walkontable/src/index.mjs +3 -13
- package/3rdparty/walkontable/src/overlay/_base.js +124 -57
- package/3rdparty/walkontable/src/overlay/_base.mjs +124 -57
- package/3rdparty/walkontable/src/overlay/bottom.js +96 -80
- package/3rdparty/walkontable/src/overlay/bottom.mjs +96 -80
- package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.js → bottomInlineStartCorner.js} +45 -62
- package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +44 -61
- package/3rdparty/walkontable/src/overlay/constants.js +25 -9
- package/3rdparty/walkontable/src/overlay/constants.mjs +14 -4
- package/3rdparty/walkontable/src/overlay/index.js +10 -19
- package/3rdparty/walkontable/src/overlay/index.mjs +4 -5
- package/3rdparty/walkontable/src/overlay/{left.js → inlineStart.js} +113 -82
- package/3rdparty/walkontable/src/overlay/{left.mjs → inlineStart.mjs} +112 -81
- package/3rdparty/walkontable/src/overlay/top.js +93 -68
- package/3rdparty/walkontable/src/overlay/top.mjs +93 -68
- package/3rdparty/walkontable/src/overlay/{topLeftCorner.js → topInlineStartCorner.js} +56 -57
- package/3rdparty/walkontable/src/overlay/{topLeftCorner.mjs → topInlineStartCorner.mjs} +51 -52
- package/3rdparty/walkontable/src/overlays.js +225 -156
- package/3rdparty/walkontable/src/overlays.mjs +224 -154
- package/3rdparty/walkontable/src/renderer/cells.js +4 -3
- package/3rdparty/walkontable/src/renderer/cells.mjs +4 -3
- package/3rdparty/walkontable/src/renderer/colGroup.js +2 -2
- package/3rdparty/walkontable/src/renderer/colGroup.mjs +2 -2
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +2 -2
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +2 -2
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +2 -2
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +2 -2
- package/3rdparty/walkontable/src/renderer/rows.js +2 -2
- package/3rdparty/walkontable/src/renderer/rows.mjs +2 -2
- package/3rdparty/walkontable/src/scroll.js +125 -104
- package/3rdparty/walkontable/src/scroll.mjs +124 -104
- package/3rdparty/walkontable/src/selection.js +10 -14
- package/3rdparty/walkontable/src/selection.mjs +10 -12
- package/3rdparty/walkontable/src/settings.js +235 -126
- package/3rdparty/walkontable/src/settings.mjs +235 -125
- package/3rdparty/walkontable/src/table/bottom.js +16 -5
- package/3rdparty/walkontable/src/table/bottom.mjs +15 -5
- package/3rdparty/walkontable/src/table/{bottomLeftCorner.js → bottomInlineStartCorner.js} +27 -15
- package/3rdparty/walkontable/src/table/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +26 -15
- package/3rdparty/walkontable/src/table/{left.js → inlineStart.js} +23 -15
- package/3rdparty/walkontable/src/table/{left.mjs → inlineStart.mjs} +22 -15
- package/3rdparty/walkontable/src/table/master.js +22 -12
- package/3rdparty/walkontable/src/table/master.mjs +22 -12
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +12 -6
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +12 -6
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +12 -6
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +12 -6
- package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.js → stickyColumnsStart.js} +13 -7
- package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.mjs → stickyColumnsStart.mjs} +13 -7
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +11 -5
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +11 -5
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -3
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -3
- package/3rdparty/walkontable/src/table/top.js +16 -5
- package/3rdparty/walkontable/src/table/top.mjs +15 -5
- package/3rdparty/walkontable/src/table/{topLeftCorner.js → topInlineStartCorner.js} +27 -15
- package/3rdparty/walkontable/src/table/{topLeftCorner.mjs → topInlineStartCorner.mjs} +26 -15
- package/3rdparty/walkontable/src/table.js +235 -140
- package/3rdparty/walkontable/src/table.mjs +231 -134
- package/3rdparty/walkontable/src/types.js +103 -0
- package/3rdparty/walkontable/src/types.mjs +102 -0
- package/3rdparty/walkontable/src/utils/column.js +22 -33
- package/3rdparty/walkontable/src/utils/column.mjs +22 -30
- package/3rdparty/walkontable/src/utils/orderView/sharedView.js +2 -2
- package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +2 -2
- package/3rdparty/walkontable/src/utils/row.js +9 -4
- package/3rdparty/walkontable/src/utils/row.mjs +9 -4
- package/3rdparty/walkontable/src/viewport.js +89 -100
- package/3rdparty/walkontable/src/viewport.mjs +89 -97
- package/CHANGELOG.md +92 -0
- package/LICENSE.txt +1 -1
- package/README.md +0 -1
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/timeType/timeType.d.ts +6 -6
- package/cellTypes/timeType/timeType.js +4 -5
- package/cellTypes/timeType/timeType.mjs +4 -5
- package/core.d.ts +6 -1
- package/core.js +508 -80
- package/core.mjs +517 -92
- package/dataMap/index.js +4 -0
- package/dataMap/index.mjs +2 -1
- package/dataMap/metaManager/index.js +2 -2
- package/dataMap/metaManager/index.mjs +2 -2
- package/dataMap/metaManager/metaLayers/globalMeta.js +4 -0
- package/dataMap/metaManager/metaLayers/globalMeta.mjs +4 -0
- package/dataMap/metaManager/metaLayers/tableMeta.js +2 -2
- package/dataMap/metaManager/metaLayers/tableMeta.mjs +2 -2
- package/dataMap/metaManager/metaSchema.js +282 -187
- package/dataMap/metaManager/metaSchema.mjs +282 -187
- package/dataMap/metaManager/mods/extendMetaProperties.js +126 -0
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +113 -0
- package/dataMap/replaceData.js +3 -17
- package/dataMap/replaceData.mjs +3 -17
- package/dist/handsontable.css +268 -92
- package/dist/handsontable.full.css +269 -103
- package/dist/handsontable.full.js +41990 -35658
- package/dist/handsontable.full.min.css +9 -9
- package/dist/handsontable.full.min.js +144 -144
- package/dist/handsontable.js +29561 -25597
- package/dist/handsontable.min.css +8 -8
- package/dist/handsontable.min.js +4 -4
- package/dist/languages/all.js +131 -34
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/ar-AR.js +167 -0
- package/dist/languages/ar-AR.min.js +1 -0
- package/dist/languages/cs-CZ.js +167 -0
- package/dist/languages/cs-CZ.min.js +1 -0
- package/dist/languages/de-CH.js +31 -29
- package/dist/languages/de-CH.min.js +1 -1
- package/dist/languages/de-DE.js +4 -2
- package/dist/languages/de-DE.min.js +1 -1
- package/dist/languages/en-US.js +4 -2
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/es-MX.js +4 -2
- package/dist/languages/es-MX.min.js +1 -1
- package/dist/languages/fr-FR.js +4 -2
- package/dist/languages/fr-FR.min.js +1 -1
- package/dist/languages/it-IT.js +4 -2
- package/dist/languages/it-IT.min.js +1 -1
- package/dist/languages/ja-JP.js +36 -38
- package/dist/languages/ja-JP.min.js +1 -1
- package/dist/languages/ko-KR.js +36 -39
- package/dist/languages/ko-KR.min.js +1 -1
- package/dist/languages/lv-LV.js +2 -2
- package/dist/languages/lv-LV.min.js +1 -1
- package/dist/languages/nb-NO.js +2 -2
- package/dist/languages/nb-NO.min.js +1 -1
- package/dist/languages/nl-NL.js +2 -2
- package/dist/languages/nl-NL.min.js +1 -1
- package/dist/languages/pl-PL.js +2 -2
- package/dist/languages/pl-PL.min.js +1 -1
- package/dist/languages/pt-BR.js +2 -2
- package/dist/languages/pt-BR.min.js +1 -1
- package/dist/languages/ru-RU.js +2 -2
- package/dist/languages/ru-RU.min.js +1 -1
- package/dist/languages/sr-SP.js +171 -0
- package/dist/languages/sr-SP.min.js +1 -0
- package/dist/languages/zh-CN.js +24 -24
- package/dist/languages/zh-CN.min.js +1 -1
- package/dist/languages/zh-TW.js +24 -24
- package/dist/languages/zh-TW.min.js +1 -1
- package/editorManager.js +120 -267
- package/editorManager.mjs +128 -278
- package/editors/autocompleteEditor/autocompleteEditor.js +22 -25
- package/editors/autocompleteEditor/autocompleteEditor.mjs +22 -25
- package/editors/baseEditor/baseEditor.js +205 -34
- package/editors/baseEditor/baseEditor.mjs +200 -32
- package/editors/checkboxEditor/checkboxEditor.js +2 -2
- package/editors/checkboxEditor/checkboxEditor.mjs +2 -2
- package/editors/dateEditor/dateEditor.js +21 -8
- package/editors/dateEditor/dateEditor.mjs +22 -9
- package/editors/dropdownEditor/dropdownEditor.js +3 -3
- package/editors/dropdownEditor/dropdownEditor.mjs +3 -3
- package/editors/handsontableEditor/handsontableEditor.js +106 -55
- package/editors/handsontableEditor/handsontableEditor.mjs +106 -55
- package/editors/index.d.ts +3 -0
- package/editors/index.js +6 -0
- package/editors/index.mjs +3 -1
- package/editors/numericEditor/numericEditor.js +2 -2
- package/editors/numericEditor/numericEditor.mjs +2 -2
- package/editors/passwordEditor/passwordEditor.js +3 -3
- package/editors/passwordEditor/passwordEditor.mjs +3 -3
- package/editors/selectEditor/selectEditor.js +65 -110
- package/editors/selectEditor/selectEditor.mjs +66 -109
- package/editors/textEditor/caretPositioner.js +49 -0
- package/editors/textEditor/caretPositioner.mjs +42 -0
- package/editors/textEditor/textEditor.js +205 -181
- package/editors/textEditor/textEditor.mjs +199 -179
- package/editors/timeEditor/index.d.ts +1 -0
- package/editors/timeEditor/index.js +9 -0
- package/editors/timeEditor/index.mjs +1 -0
- package/editors/timeEditor/timeEditor.d.ts +7 -0
- package/editors/timeEditor/timeEditor.js +105 -0
- package/editors/timeEditor/timeEditor.mjs +84 -0
- package/eventManager.js +4 -2
- package/eventManager.mjs +4 -2
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/i18n/languages/ar-AR.js +41 -0
- package/i18n/languages/ar-AR.mjs +17 -0
- package/i18n/languages/cs-CZ.js +40 -0
- package/i18n/languages/cs-CZ.mjs +16 -0
- package/i18n/languages/index.js +12 -0
- package/i18n/languages/index.mjs +4 -1
- package/i18n/languages/sr-SP.js +40 -0
- package/i18n/languages/sr-SP.mjs +16 -0
- package/index.d.ts +4 -0
- package/languages/all.js +131 -34
- package/languages/ar-AR.js +167 -0
- package/languages/ar-AR.mjs +19 -0
- package/languages/cs-CZ.js +167 -0
- package/languages/cs-CZ.mjs +18 -0
- package/languages/de-CH.js +31 -29
- package/languages/de-DE.js +4 -2
- package/languages/en-US.js +4 -2
- package/languages/es-MX.js +4 -2
- package/languages/fr-FR.js +4 -2
- package/languages/index.js +131 -34
- package/languages/index.mjs +4 -1
- package/languages/it-IT.js +4 -2
- package/languages/ja-JP.js +36 -38
- package/languages/ko-KR.js +36 -39
- package/languages/lv-LV.js +2 -2
- package/languages/nb-NO.js +2 -2
- package/languages/nl-NL.js +2 -2
- package/languages/pl-PL.js +2 -2
- package/languages/pt-BR.js +2 -2
- package/languages/ru-RU.js +2 -2
- package/languages/sr-SP.js +171 -0
- package/languages/sr-SP.mjs +18 -0
- package/languages/zh-CN.js +24 -24
- package/languages/zh-TW.js +24 -24
- package/package.json +44 -4
- package/pluginHooks.js +49 -13
- package/pluginHooks.mjs +49 -13
- package/plugins/autoColumnSize/autoColumnSize.js +15 -10
- package/plugins/autoColumnSize/autoColumnSize.mjs +15 -10
- package/plugins/autoRowSize/autoRowSize.js +14 -9
- package/plugins/autoRowSize/autoRowSize.mjs +14 -9
- package/plugins/autofill/autofill.js +49 -33
- package/plugins/autofill/autofill.mjs +49 -32
- package/plugins/autofill/utils.js +10 -11
- package/plugins/autofill/utils.mjs +10 -10
- package/plugins/base/base.d.ts +8 -2
- package/plugins/base/base.js +67 -4
- package/plugins/base/base.mjs +66 -4
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +3 -3
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +3 -3
- package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +3 -3
- package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +3 -3
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +3 -3
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +3 -3
- package/plugins/collapsibleColumns/collapsibleColumns.js +27 -9
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +27 -9
- package/plugins/columnSorting/columnSorting.js +5 -7
- package/plugins/columnSorting/columnSorting.mjs +5 -6
- package/plugins/columnSummary/columnSummary.js +3 -3
- package/plugins/columnSummary/columnSummary.mjs +3 -3
- package/plugins/comments/commentEditor.js +18 -2
- package/plugins/comments/commentEditor.mjs +19 -3
- package/plugins/comments/comments.js +57 -46
- package/plugins/comments/comments.mjs +58 -46
- package/plugins/contextMenu/contextMenu.js +10 -6
- package/plugins/contextMenu/contextMenu.mjs +10 -6
- package/plugins/contextMenu/menu.js +222 -110
- package/plugins/contextMenu/menu.mjs +219 -111
- package/plugins/contextMenu/predefinedItems/columnLeft.js +12 -4
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +11 -4
- package/plugins/contextMenu/predefinedItems/columnRight.js +9 -9
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +9 -9
- package/plugins/contextMenu/utils.js +2 -2
- package/plugins/contextMenu/utils.mjs +2 -2
- package/plugins/copyPaste/copyPaste.js +31 -21
- package/plugins/copyPaste/copyPaste.mjs +30 -21
- package/plugins/customBorders/contextMenuItem/left.js +4 -3
- package/plugins/customBorders/contextMenuItem/left.mjs +4 -3
- package/plugins/customBorders/contextMenuItem/right.js +4 -3
- package/plugins/customBorders/contextMenuItem/right.mjs +4 -3
- package/plugins/customBorders/customBorders.js +144 -87
- package/plugins/customBorders/customBorders.mjs +143 -85
- package/plugins/customBorders/utils.js +131 -27
- package/plugins/customBorders/utils.mjs +115 -27
- package/plugins/dragToScroll/dragToScroll.js +10 -5
- package/plugins/dragToScroll/dragToScroll.mjs +10 -5
- package/plugins/dropdownMenu/dropdownMenu.js +9 -7
- package/plugins/dropdownMenu/dropdownMenu.mjs +9 -7
- package/plugins/exportFile/exportFile.js +2 -2
- package/plugins/exportFile/exportFile.mjs +2 -2
- package/plugins/exportFile/types/csv.js +2 -2
- package/plugins/exportFile/types/csv.mjs +2 -2
- package/plugins/filters/component/actionBar.js +2 -2
- package/plugins/filters/component/actionBar.mjs +2 -2
- package/plugins/filters/component/condition.js +3 -3
- package/plugins/filters/component/condition.mjs +3 -3
- package/plugins/filters/component/operators.js +2 -2
- package/plugins/filters/component/operators.mjs +2 -2
- package/plugins/filters/component/value.js +3 -3
- package/plugins/filters/component/value.mjs +3 -3
- package/plugins/filters/filters.js +11 -8
- package/plugins/filters/filters.mjs +11 -8
- package/plugins/filters/ui/input.js +3 -3
- package/plugins/filters/ui/input.mjs +3 -3
- package/plugins/filters/ui/link.js +3 -3
- package/plugins/filters/ui/link.mjs +3 -3
- package/plugins/filters/ui/multipleSelect.js +18 -31
- package/plugins/filters/ui/multipleSelect.mjs +18 -31
- package/plugins/filters/ui/radioInput.js +3 -3
- package/plugins/filters/ui/radioInput.mjs +3 -3
- package/plugins/filters/ui/select.js +4 -4
- package/plugins/filters/ui/select.mjs +4 -4
- package/plugins/formulas/formulas.js +14 -9
- package/plugins/formulas/formulas.mjs +14 -9
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -4
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +2 -4
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +5 -5
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +5 -5
- package/plugins/hiddenColumns/hiddenColumns.js +9 -4
- package/plugins/hiddenColumns/hiddenColumns.mjs +9 -4
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -4
- package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +2 -4
- package/plugins/hiddenRows/contextMenuItem/showRow.js +5 -5
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +5 -5
- package/plugins/hiddenRows/hiddenRows.js +9 -4
- package/plugins/hiddenRows/hiddenRows.mjs +9 -4
- 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 +54 -15
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +49 -15
- package/plugins/manualColumnMove/manualColumnMove.js +70 -70
- package/plugins/manualColumnMove/manualColumnMove.mjs +71 -71
- package/plugins/manualColumnMove/ui/_base.js +25 -12
- package/plugins/manualColumnMove/ui/_base.mjs +24 -12
- package/plugins/manualColumnMove/ui/backlight.js +3 -3
- package/plugins/manualColumnMove/ui/backlight.mjs +3 -3
- package/plugins/manualColumnMove/ui/guideline.js +3 -3
- package/plugins/manualColumnMove/ui/guideline.mjs +3 -3
- package/plugins/manualColumnResize/manualColumnResize.js +37 -21
- package/plugins/manualColumnResize/manualColumnResize.mjs +37 -21
- package/plugins/manualRowMove/manualRowMove.js +26 -34
- package/plugins/manualRowMove/manualRowMove.mjs +26 -34
- package/plugins/manualRowMove/ui/backlight.js +3 -3
- package/plugins/manualRowMove/ui/backlight.mjs +3 -3
- package/plugins/manualRowMove/ui/guideline.js +3 -3
- package/plugins/manualRowMove/ui/guideline.mjs +3 -3
- package/plugins/manualRowResize/manualRowResize.js +34 -19
- package/plugins/manualRowResize/manualRowResize.mjs +34 -19
- package/plugins/mergeCells/calculations/autofill.js +6 -5
- package/plugins/mergeCells/calculations/autofill.mjs +6 -4
- package/plugins/mergeCells/calculations/selection.js +9 -4
- package/plugins/mergeCells/calculations/selection.mjs +9 -4
- package/plugins/mergeCells/cellCoords.js +16 -4
- package/plugins/mergeCells/cellCoords.mjs +16 -3
- package/plugins/mergeCells/cellsCollection.js +30 -23
- package/plugins/mergeCells/cellsCollection.mjs +30 -22
- package/plugins/mergeCells/mergeCells.js +94 -61
- package/plugins/mergeCells/mergeCells.mjs +94 -59
- package/plugins/multiColumnSorting/multiColumnSorting.js +4 -6
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +4 -5
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +51 -57
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +52 -57
- package/plugins/nestedHeaders/nestedHeaders.js +31 -20
- package/plugins/nestedHeaders/nestedHeaders.mjs +31 -20
- package/plugins/nestedHeaders/stateManager/utils.js +3 -4
- package/plugins/nestedHeaders/stateManager/utils.mjs +3 -4
- package/plugins/nestedHeaders/utils/ghostTable.js +114 -75
- package/plugins/nestedHeaders/utils/ghostTable.mjs +114 -74
- package/plugins/nestedRows/nestedRows.js +9 -4
- package/plugins/nestedRows/nestedRows.mjs +9 -4
- package/plugins/nestedRows/ui/collapsing.js +2 -2
- package/plugins/nestedRows/ui/collapsing.mjs +2 -2
- package/plugins/nestedRows/ui/contextMenu.js +2 -2
- package/plugins/nestedRows/ui/contextMenu.mjs +2 -2
- package/plugins/nestedRows/ui/headers.js +2 -2
- package/plugins/nestedRows/ui/headers.mjs +2 -2
- package/plugins/nestedRows/utils/rowMoveController.js +2 -4
- package/plugins/nestedRows/utils/rowMoveController.mjs +2 -3
- package/plugins/persistentState/persistentState.js +9 -4
- package/plugins/persistentState/persistentState.mjs +9 -4
- package/plugins/search/search.js +9 -4
- package/plugins/search/search.mjs +9 -4
- package/plugins/touchScroll/touchScroll.js +27 -21
- package/plugins/touchScroll/touchScroll.mjs +27 -21
- package/plugins/trimRows/trimRows.js +9 -4
- package/plugins/trimRows/trimRows.mjs +9 -4
- package/plugins/undoRedo/undoRedo.js +53 -47
- package/plugins/undoRedo/undoRedo.mjs +53 -46
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -3
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +1 -2
- package/renderers/checkboxRenderer/checkboxRenderer.js +48 -43
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +48 -41
- package/renderers/index.d.ts +4 -1
- package/renderers/index.js +6 -0
- package/renderers/index.mjs +3 -1
- package/renderers/numericRenderer/numericRenderer.js +1 -0
- package/renderers/numericRenderer/numericRenderer.mjs +1 -0
- package/renderers/timeRenderer/index.d.ts +1 -0
- package/renderers/timeRenderer/index.js +9 -0
- package/renderers/timeRenderer/index.mjs +1 -0
- package/renderers/timeRenderer/timeRenderer.d.ts +5 -0
- package/renderers/timeRenderer/timeRenderer.js +31 -0
- package/renderers/timeRenderer/timeRenderer.mjs +20 -0
- package/selection/highlight/visualSelection.js +94 -220
- package/selection/highlight/visualSelection.mjs +91 -213
- package/selection/mouseEventHandler.js +15 -10
- package/selection/mouseEventHandler.mjs +15 -9
- package/selection/range.js +4 -5
- package/selection/range.mjs +4 -5
- package/selection/selection.js +35 -22
- package/selection/selection.mjs +35 -20
- package/selection/transformation.js +4 -6
- package/selection/transformation.mjs +4 -5
- package/settings.d.ts +3 -1
- package/shortcuts/context.d.ts +20 -0
- package/shortcuts/context.js +296 -0
- package/shortcuts/context.mjs +268 -0
- package/shortcuts/index.d.ts +1 -0
- package/shortcuts/index.js +8 -0
- package/shortcuts/index.mjs +1 -0
- package/shortcuts/keyObserver.js +67 -0
- package/shortcuts/keyObserver.mjs +58 -0
- package/shortcuts/manager.d.ts +10 -0
- package/shortcuts/manager.js +185 -0
- package/shortcuts/manager.mjs +176 -0
- package/shortcuts/recorder.js +192 -0
- package/shortcuts/recorder.mjs +180 -0
- package/shortcuts/utils.js +77 -0
- package/shortcuts/utils.mjs +54 -0
- package/tableView.js +164 -84
- package/tableView.mjs +164 -74
- package/translations/changesObservable/observer.js +0 -1
- package/translations/changesObservable/observer.mjs +0 -1
- package/translations/indexMapper.d.ts +3 -1
- package/translations/indexMapper.js +89 -11
- package/translations/indexMapper.mjs +91 -20
- package/translations/mapCollections/aggregatedCollection.js +2 -2
- package/translations/mapCollections/aggregatedCollection.mjs +2 -2
- package/translations/maps/hidingMap.js +4 -2
- package/translations/maps/hidingMap.mjs +4 -2
- package/translations/maps/indexMap.js +2 -0
- package/translations/maps/indexMap.mjs +2 -0
- package/translations/maps/indexesSequence.js +5 -3
- package/translations/maps/indexesSequence.mjs +5 -3
- package/translations/maps/linkedPhysicalIndexToValueMap.js +5 -3
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +5 -3
- package/translations/maps/physicalIndexToValueMap.js +5 -3
- package/translations/maps/physicalIndexToValueMap.mjs +5 -3
- package/translations/maps/trimmingMap.js +4 -2
- package/translations/maps/trimmingMap.mjs +4 -2
- package/utils/dataStructures/uniqueMap.js +14 -1
- package/utils/dataStructures/uniqueMap.mjs +14 -1
- package/utils/dataStructures/uniqueSet.js +9 -0
- package/utils/dataStructures/uniqueSet.mjs +9 -0
- package/utils/ghostTable.js +1 -1
- package/utils/ghostTable.mjs +1 -1
- package/3rdparty/walkontable/src/core.js +0 -309
- package/3rdparty/walkontable/src/core.mjs +0 -293
- package/3rdparty/walkontable/src/overlay/registerer.js +0 -70
- package/3rdparty/walkontable/src/overlay/registerer.mjs +0 -57
- package/utils/keyStateObserver.js +0 -121
- package/utils/keyStateObserver.mjs +0 -103
@@ -69,13 +69,13 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
|
|
69
69
|
|
70
70
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
71
71
|
|
72
|
-
function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
|
72
|
+
function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
|
73
73
|
|
74
74
|
function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
|
75
75
|
|
76
76
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
77
77
|
|
78
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf
|
78
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
79
79
|
|
80
80
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
81
81
|
|
@@ -85,7 +85,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
|
|
85
85
|
|
86
86
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
87
87
|
|
88
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
88
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
89
89
|
|
90
90
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
91
91
|
|
@@ -106,6 +106,8 @@ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) {
|
|
106
106
|
var PLUGIN_KEY = 'nestedHeaders';
|
107
107
|
exports.PLUGIN_KEY = PLUGIN_KEY;
|
108
108
|
var PLUGIN_PRIORITY = 280;
|
109
|
+
/* eslint-disable jsdoc/require-description-complete-sentence */
|
110
|
+
|
109
111
|
/**
|
110
112
|
* @plugin NestedHeaders
|
111
113
|
* @class NestedHeaders
|
@@ -166,7 +168,9 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
166
168
|
value: null
|
167
169
|
});
|
168
170
|
|
169
|
-
_defineProperty(_assertThisInitialized(_this), "ghostTable", new _ghostTable.default(
|
171
|
+
_defineProperty(_assertThisInitialized(_this), "ghostTable", new _ghostTable.default(_this.hot, function (row, column) {
|
172
|
+
return _this.getHeaderSettings(row, column);
|
173
|
+
}));
|
170
174
|
|
171
175
|
_defineProperty(_assertThisInitialized(_this), "detectedOverlappedHeaders", false);
|
172
176
|
|
@@ -237,7 +241,10 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
237
241
|
this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
|
238
242
|
}
|
239
243
|
/**
|
240
|
-
* Updates the plugin state.
|
244
|
+
* Updates the plugin's state.
|
245
|
+
*
|
246
|
+
* This method is executed when [`updateSettings()`](@/api/core.md#updatesettings) is invoked with any of the following configuration options:
|
247
|
+
* - [`nestedHeaders`](@/api/options.md#nestedheaders)
|
241
248
|
*/
|
242
249
|
|
243
250
|
}, {
|
@@ -287,10 +294,12 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
287
294
|
_classPrivateFieldGet(_this3, _stateManager).triggerColumnModification(actionName, columnIndex);
|
288
295
|
}
|
289
296
|
});
|
297
|
+
|
298
|
+
_this3.ghostTable.buildWidthsMap();
|
290
299
|
}));
|
291
300
|
}
|
292
301
|
|
293
|
-
this.ghostTable.
|
302
|
+
this.ghostTable.setLayersCount(this.getLayersCount()).buildWidthsMap();
|
294
303
|
|
295
304
|
_get(_getPrototypeOf(NestedHeaders.prototype), "updatePlugin", this).call(this);
|
296
305
|
}
|
@@ -366,11 +375,11 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
366
375
|
return;
|
367
376
|
}
|
368
377
|
|
369
|
-
var wt = this.hot.view.
|
378
|
+
var wt = this.hot.view._wt;
|
370
379
|
var headerLevels = wt.getSetting('columnHeaders').length;
|
371
380
|
var mainHeaders = wt.wtTable.THEAD;
|
372
381
|
var topHeaders = wt.wtOverlays.topOverlay.clone.wtTable.THEAD;
|
373
|
-
var topLeftCornerHeaders = wt.wtOverlays.
|
382
|
+
var topLeftCornerHeaders = wt.wtOverlays.topInlineStartCornerOverlay ? wt.wtOverlays.topInlineStartCornerOverlay.clone.wtTable.THEAD : null;
|
374
383
|
|
375
384
|
for (var i = 0; i < headerLevels; i++) {
|
376
385
|
var masterLevel = mainHeaders.childNodes[i];
|
@@ -413,7 +422,8 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
413
422
|
value: function headerRendererFactory(headerLevel) {
|
414
423
|
var _this4 = this;
|
415
424
|
|
416
|
-
var
|
425
|
+
var fixedColumnsStart = this.hot.view._wt.getSetting('fixedColumnsStart');
|
426
|
+
|
417
427
|
return function (renderedColumnIndex, TH) {
|
418
428
|
var _classPrivateFieldGet2;
|
419
429
|
|
@@ -441,12 +451,13 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
441
451
|
if (isPlaceholder || isHidden) {
|
442
452
|
(0, _element.addClass)(TH, 'hiddenHeader');
|
443
453
|
} else if (colspan > 1) {
|
444
|
-
var
|
454
|
+
var _wtOverlays$topInline, _wtOverlays$inlineSta;
|
445
455
|
|
446
|
-
var
|
447
|
-
var
|
456
|
+
var wtOverlays = view._wt.wtOverlays;
|
457
|
+
var isTopInlineStartOverlay = (_wtOverlays$topInline = wtOverlays.topInlineStartCornerOverlay) === null || _wtOverlays$topInline === void 0 ? void 0 : _wtOverlays$topInline.clone.wtTable.THEAD.contains(TH);
|
458
|
+
var isInlineStartOverlay = (_wtOverlays$inlineSta = wtOverlays.inlineStartOverlay) === null || _wtOverlays$inlineSta === void 0 ? void 0 : _wtOverlays$inlineSta.clone.wtTable.THEAD.contains(TH); // Check if there is a fixed column enabled, if so then reduce colspan to fixed column width.
|
448
459
|
|
449
|
-
var correctedColspan =
|
460
|
+
var correctedColspan = isTopInlineStartOverlay || isInlineStartOverlay ? Math.min(colspan, fixedColumnsStart - renderedColumnIndex) : colspan;
|
450
461
|
|
451
462
|
if (correctedColspan > 1) {
|
452
463
|
TH.setAttribute('colspan', correctedColspan);
|
@@ -558,9 +569,9 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
558
569
|
|
559
570
|
if (event.shiftKey && currentSelection) {
|
560
571
|
if (coords.col < currentSelection.from.col) {
|
561
|
-
columnsToSelect.push(currentSelection.
|
572
|
+
columnsToSelect.push(currentSelection.getTopEndCorner().col, columnIndex, coords.row);
|
562
573
|
} else if (coords.col > currentSelection.from.col) {
|
563
|
-
columnsToSelect.push(currentSelection.
|
574
|
+
columnsToSelect.push(currentSelection.getTopStartCorner().col, columnIndex + origColspan - 1, coords.row);
|
564
575
|
} else {
|
565
576
|
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1, coords.row);
|
566
577
|
}
|
@@ -600,8 +611,8 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
600
611
|
var columnIndex = headerNodeData.columnIndex,
|
601
612
|
origColspan = headerNodeData.origColspan;
|
602
613
|
var selectedRange = this.hot.getSelectedRangeLast();
|
603
|
-
var
|
604
|
-
var
|
614
|
+
var topStartCoords = selectedRange.getTopStartCorner();
|
615
|
+
var bottomEndCoords = selectedRange.getBottomEndCorner();
|
605
616
|
var from = selectedRange.from; // Block the Selection module in controlling how the columns and cells are selected.
|
606
617
|
// From now on, the plugin is responsible for the selection.
|
607
618
|
|
@@ -610,9 +621,9 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
610
621
|
var columnsToSelect = [];
|
611
622
|
|
612
623
|
if (coords.col < from.col) {
|
613
|
-
columnsToSelect.push(
|
624
|
+
columnsToSelect.push(bottomEndCoords.col, columnIndex);
|
614
625
|
} else if (coords.col > from.col) {
|
615
|
-
columnsToSelect.push(
|
626
|
+
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
|
616
627
|
} else {
|
617
628
|
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
|
618
629
|
}
|
@@ -686,7 +697,7 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
686
697
|
}, {
|
687
698
|
key: "onModifyColWidth",
|
688
699
|
value: function onModifyColWidth(width, column) {
|
689
|
-
var cachedWidth = this.ghostTable.
|
700
|
+
var cachedWidth = this.ghostTable.getWidth(column);
|
690
701
|
return width > cachedWidth ? width : cachedWidth;
|
691
702
|
}
|
692
703
|
/**
|
@@ -29,13 +29,13 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
|
|
29
29
|
|
30
30
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
31
31
|
|
32
|
-
function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
|
32
|
+
function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
|
33
33
|
|
34
34
|
function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
|
35
35
|
|
36
36
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
37
37
|
|
38
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf
|
38
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
39
39
|
|
40
40
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
41
41
|
|
@@ -45,7 +45,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
|
|
45
45
|
|
46
46
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
47
47
|
|
48
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
48
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
49
49
|
|
50
50
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
51
51
|
|
@@ -74,6 +74,8 @@ import StateManager from "./stateManager/index.mjs";
|
|
74
74
|
import GhostTable from "./utils/ghostTable.mjs";
|
75
75
|
export var PLUGIN_KEY = 'nestedHeaders';
|
76
76
|
export var PLUGIN_PRIORITY = 280;
|
77
|
+
/* eslint-disable jsdoc/require-description-complete-sentence */
|
78
|
+
|
77
79
|
/**
|
78
80
|
* @plugin NestedHeaders
|
79
81
|
* @class NestedHeaders
|
@@ -132,7 +134,9 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
132
134
|
value: null
|
133
135
|
});
|
134
136
|
|
135
|
-
_defineProperty(_assertThisInitialized(_this), "ghostTable", new GhostTable(
|
137
|
+
_defineProperty(_assertThisInitialized(_this), "ghostTable", new GhostTable(_this.hot, function (row, column) {
|
138
|
+
return _this.getHeaderSettings(row, column);
|
139
|
+
}));
|
136
140
|
|
137
141
|
_defineProperty(_assertThisInitialized(_this), "detectedOverlappedHeaders", false);
|
138
142
|
|
@@ -203,7 +207,10 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
203
207
|
this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
|
204
208
|
}
|
205
209
|
/**
|
206
|
-
* Updates the plugin state.
|
210
|
+
* Updates the plugin's state.
|
211
|
+
*
|
212
|
+
* This method is executed when [`updateSettings()`](@/api/core.md#updatesettings) is invoked with any of the following configuration options:
|
213
|
+
* - [`nestedHeaders`](@/api/options.md#nestedheaders)
|
207
214
|
*/
|
208
215
|
|
209
216
|
}, {
|
@@ -253,10 +260,12 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
253
260
|
_classPrivateFieldGet(_this3, _stateManager).triggerColumnModification(actionName, columnIndex);
|
254
261
|
}
|
255
262
|
});
|
263
|
+
|
264
|
+
_this3.ghostTable.buildWidthsMap();
|
256
265
|
}));
|
257
266
|
}
|
258
267
|
|
259
|
-
this.ghostTable.
|
268
|
+
this.ghostTable.setLayersCount(this.getLayersCount()).buildWidthsMap();
|
260
269
|
|
261
270
|
_get(_getPrototypeOf(NestedHeaders.prototype), "updatePlugin", this).call(this);
|
262
271
|
}
|
@@ -332,11 +341,11 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
332
341
|
return;
|
333
342
|
}
|
334
343
|
|
335
|
-
var wt = this.hot.view.
|
344
|
+
var wt = this.hot.view._wt;
|
336
345
|
var headerLevels = wt.getSetting('columnHeaders').length;
|
337
346
|
var mainHeaders = wt.wtTable.THEAD;
|
338
347
|
var topHeaders = wt.wtOverlays.topOverlay.clone.wtTable.THEAD;
|
339
|
-
var topLeftCornerHeaders = wt.wtOverlays.
|
348
|
+
var topLeftCornerHeaders = wt.wtOverlays.topInlineStartCornerOverlay ? wt.wtOverlays.topInlineStartCornerOverlay.clone.wtTable.THEAD : null;
|
340
349
|
|
341
350
|
for (var i = 0; i < headerLevels; i++) {
|
342
351
|
var masterLevel = mainHeaders.childNodes[i];
|
@@ -379,7 +388,8 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
379
388
|
value: function headerRendererFactory(headerLevel) {
|
380
389
|
var _this4 = this;
|
381
390
|
|
382
|
-
var
|
391
|
+
var fixedColumnsStart = this.hot.view._wt.getSetting('fixedColumnsStart');
|
392
|
+
|
383
393
|
return function (renderedColumnIndex, TH) {
|
384
394
|
var _classPrivateFieldGet2;
|
385
395
|
|
@@ -407,12 +417,13 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
407
417
|
if (isPlaceholder || isHidden) {
|
408
418
|
addClass(TH, 'hiddenHeader');
|
409
419
|
} else if (colspan > 1) {
|
410
|
-
var
|
420
|
+
var _wtOverlays$topInline, _wtOverlays$inlineSta;
|
411
421
|
|
412
|
-
var
|
413
|
-
var
|
422
|
+
var wtOverlays = view._wt.wtOverlays;
|
423
|
+
var isTopInlineStartOverlay = (_wtOverlays$topInline = wtOverlays.topInlineStartCornerOverlay) === null || _wtOverlays$topInline === void 0 ? void 0 : _wtOverlays$topInline.clone.wtTable.THEAD.contains(TH);
|
424
|
+
var isInlineStartOverlay = (_wtOverlays$inlineSta = wtOverlays.inlineStartOverlay) === null || _wtOverlays$inlineSta === void 0 ? void 0 : _wtOverlays$inlineSta.clone.wtTable.THEAD.contains(TH); // Check if there is a fixed column enabled, if so then reduce colspan to fixed column width.
|
414
425
|
|
415
|
-
var correctedColspan =
|
426
|
+
var correctedColspan = isTopInlineStartOverlay || isInlineStartOverlay ? Math.min(colspan, fixedColumnsStart - renderedColumnIndex) : colspan;
|
416
427
|
|
417
428
|
if (correctedColspan > 1) {
|
418
429
|
TH.setAttribute('colspan', correctedColspan);
|
@@ -524,9 +535,9 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
524
535
|
|
525
536
|
if (event.shiftKey && currentSelection) {
|
526
537
|
if (coords.col < currentSelection.from.col) {
|
527
|
-
columnsToSelect.push(currentSelection.
|
538
|
+
columnsToSelect.push(currentSelection.getTopEndCorner().col, columnIndex, coords.row);
|
528
539
|
} else if (coords.col > currentSelection.from.col) {
|
529
|
-
columnsToSelect.push(currentSelection.
|
540
|
+
columnsToSelect.push(currentSelection.getTopStartCorner().col, columnIndex + origColspan - 1, coords.row);
|
530
541
|
} else {
|
531
542
|
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1, coords.row);
|
532
543
|
}
|
@@ -566,8 +577,8 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
566
577
|
var columnIndex = headerNodeData.columnIndex,
|
567
578
|
origColspan = headerNodeData.origColspan;
|
568
579
|
var selectedRange = this.hot.getSelectedRangeLast();
|
569
|
-
var
|
570
|
-
var
|
580
|
+
var topStartCoords = selectedRange.getTopStartCorner();
|
581
|
+
var bottomEndCoords = selectedRange.getBottomEndCorner();
|
571
582
|
var from = selectedRange.from; // Block the Selection module in controlling how the columns and cells are selected.
|
572
583
|
// From now on, the plugin is responsible for the selection.
|
573
584
|
|
@@ -576,9 +587,9 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
576
587
|
var columnsToSelect = [];
|
577
588
|
|
578
589
|
if (coords.col < from.col) {
|
579
|
-
columnsToSelect.push(
|
590
|
+
columnsToSelect.push(bottomEndCoords.col, columnIndex);
|
580
591
|
} else if (coords.col > from.col) {
|
581
|
-
columnsToSelect.push(
|
592
|
+
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
|
582
593
|
} else {
|
583
594
|
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
|
584
595
|
}
|
@@ -652,7 +663,7 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
652
663
|
}, {
|
653
664
|
key: "onModifyColWidth",
|
654
665
|
value: function onModifyColWidth(width, column) {
|
655
|
-
var cachedWidth = this.ghostTable.
|
666
|
+
var cachedWidth = this.ghostTable.getWidth(column);
|
656
667
|
return width > cachedWidth ? width : cachedWidth;
|
657
668
|
}
|
658
669
|
/**
|
@@ -9,15 +9,14 @@ exports.createPlaceholderHeaderSettings = createPlaceholderHeaderSettings;
|
|
9
9
|
* @property {string} label The name/label of the column header.
|
10
10
|
* @property {number} colspan Current calculated colspan value of the rendered column header element.
|
11
11
|
* @property {number} origColspan Original colspan value, set once while parsing user-defined nested header settings.
|
12
|
-
* @property {boolean} collapsible The flag determines whether the node is collapsible (can be
|
12
|
+
* @property {boolean} collapsible The flag determines whether the node is collapsible (can be collapsed/expanded).
|
13
13
|
* @property {number[]} crossHiddenColumns The list of visual column indexes which indicates that the specified columns within
|
14
14
|
* the header settings are hidden.
|
15
15
|
* @property {boolean} isCollapsed The flag determines whether the node is collapsed.
|
16
16
|
* @property {boolean} isHidden The flag determines whether the column header at specified index is hidden. If true
|
17
17
|
* the TH element will be rendered as hidden (display: none).
|
18
|
-
* @property {boolean} isRoot The flag which determines whether the column header settings is
|
18
|
+
* @property {boolean} isRoot The flag which determines whether the column header settings is actually not renderable. That kind
|
19
19
|
* of objects are generated after colspaned header to fill an array to correct size.
|
20
|
-
*
|
21
20
|
* For example for header with colspan = 8 the 7 blank objects are generated to fill the array settings
|
22
21
|
* to length = 8.
|
23
22
|
* @property {boolean} isPlaceholder The flag determines whether the column header at the specified index is non-renderable.
|
@@ -63,7 +62,7 @@ function createDefaultHeaderSettings() {
|
|
63
62
|
};
|
64
63
|
}
|
65
64
|
/**
|
66
|
-
* Creates the header settings
|
65
|
+
* Creates the placeholder header settings object. Those settings tell the header renderers
|
67
66
|
* that this TH element should not be rendered (the node will be overlapped by the previously
|
68
67
|
* created node with colspan bigger than 1).
|
69
68
|
*
|
@@ -3,15 +3,14 @@
|
|
3
3
|
* @property {string} label The name/label of the column header.
|
4
4
|
* @property {number} colspan Current calculated colspan value of the rendered column header element.
|
5
5
|
* @property {number} origColspan Original colspan value, set once while parsing user-defined nested header settings.
|
6
|
-
* @property {boolean} collapsible The flag determines whether the node is collapsible (can be
|
6
|
+
* @property {boolean} collapsible The flag determines whether the node is collapsible (can be collapsed/expanded).
|
7
7
|
* @property {number[]} crossHiddenColumns The list of visual column indexes which indicates that the specified columns within
|
8
8
|
* the header settings are hidden.
|
9
9
|
* @property {boolean} isCollapsed The flag determines whether the node is collapsed.
|
10
10
|
* @property {boolean} isHidden The flag determines whether the column header at specified index is hidden. If true
|
11
11
|
* the TH element will be rendered as hidden (display: none).
|
12
|
-
* @property {boolean} isRoot The flag which determines whether the column header settings is
|
12
|
+
* @property {boolean} isRoot The flag which determines whether the column header settings is actually not renderable. That kind
|
13
13
|
* of objects are generated after colspaned header to fill an array to correct size.
|
14
|
-
*
|
15
14
|
* For example for header with colspan = 8 the 7 blank objects are generated to fill the array settings
|
16
15
|
* to length = 8.
|
17
16
|
* @property {boolean} isPlaceholder The flag determines whether the column header at the specified index is non-renderable.
|
@@ -57,7 +56,7 @@ export function createDefaultHeaderSettings() {
|
|
57
56
|
};
|
58
57
|
}
|
59
58
|
/**
|
60
|
-
* Creates the header settings
|
59
|
+
* Creates the placeholder header settings object. Those settings tell the header renderers
|
61
60
|
* that this TH element should not be rendered (the node will be overlapped by the previously
|
62
61
|
* created node with colspan bigger than 1).
|
63
62
|
*
|
@@ -5,66 +5,125 @@ exports.default = void 0;
|
|
5
5
|
|
6
6
|
var _element = require("../../../helpers/dom/element");
|
7
7
|
|
8
|
-
var _object = require("../../../helpers/object");
|
9
|
-
|
10
8
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
11
9
|
|
12
10
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
13
11
|
|
14
12
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
15
13
|
|
14
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
15
|
+
|
16
16
|
/**
|
17
|
+
* The class generates the nested headers structure in the DOM and reads the column width for
|
18
|
+
* each column. The hierarchy is built only for visible, non-hidden columns. Each time the
|
19
|
+
* column is shown or hidden, the structure is rebuilt, and the width of the columns in the
|
20
|
+
* map updated.
|
21
|
+
*
|
17
22
|
* @private
|
18
23
|
*/
|
19
24
|
var GhostTable = /*#__PURE__*/function () {
|
20
|
-
|
25
|
+
/**
|
26
|
+
* Reference to the Handsontable instance.
|
27
|
+
*
|
28
|
+
* @private
|
29
|
+
* @type {Handsontable}
|
30
|
+
*/
|
31
|
+
|
32
|
+
/**
|
33
|
+
* The function for retrieving the nested headers settings.
|
34
|
+
*
|
35
|
+
* @private
|
36
|
+
* @type {Function}
|
37
|
+
*/
|
38
|
+
|
39
|
+
/**
|
40
|
+
* The value that holds information about the number of the nested header layers (header rows).
|
41
|
+
*
|
42
|
+
* @private
|
43
|
+
* @type {number}
|
44
|
+
*/
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Temporary element created to get minimal headers widths.
|
48
|
+
*
|
49
|
+
* @private
|
50
|
+
* @type {*}
|
51
|
+
*/
|
52
|
+
|
53
|
+
/**
|
54
|
+
* PhysicalIndexToValueMap to keep and track of the columns' widths.
|
55
|
+
*
|
56
|
+
* @private
|
57
|
+
* @type {PhysicalIndexToValueMap}
|
58
|
+
*/
|
59
|
+
function GhostTable(hot, nestedHeaderSettingsGetter) {
|
21
60
|
_classCallCheck(this, GhostTable);
|
22
61
|
|
23
|
-
|
24
|
-
* Reference to NestedHeaders plugin.
|
25
|
-
*
|
26
|
-
* @type {NestedHeaders}
|
27
|
-
*/
|
28
|
-
this.nestedHeaders = plugin;
|
29
|
-
/**
|
30
|
-
* Temporary element created to get minimal headers widths.
|
31
|
-
*
|
32
|
-
* @type {*}
|
33
|
-
*/
|
62
|
+
_defineProperty(this, "hot", void 0);
|
34
63
|
|
35
|
-
this
|
36
|
-
/**
|
37
|
-
* Cached the headers widths.
|
38
|
-
*
|
39
|
-
* @type {Array}
|
40
|
-
*/
|
64
|
+
_defineProperty(this, "nestedHeaderSettingsGetter", void 0);
|
41
65
|
|
42
|
-
this
|
66
|
+
_defineProperty(this, "layersCount", 0);
|
67
|
+
|
68
|
+
_defineProperty(this, "container", void 0);
|
69
|
+
|
70
|
+
_defineProperty(this, "widthsMap", void 0);
|
71
|
+
|
72
|
+
this.hot = hot;
|
73
|
+
this.nestedHeaderSettingsGetter = nestedHeaderSettingsGetter;
|
74
|
+
this.widthsMap = this.hot.columnIndexMapper.createAndRegisterIndexMap('nestedHeaders.widthsMap', 'physicalIndexToValue');
|
43
75
|
}
|
44
76
|
/**
|
45
|
-
*
|
77
|
+
* Sets the number of nested headers layers count.
|
46
78
|
*
|
47
|
-
* @
|
79
|
+
* @param {number} layersCount Total number of headers levels.
|
80
|
+
* @returns {GhostTable}
|
48
81
|
*/
|
49
82
|
|
50
83
|
|
51
84
|
_createClass(GhostTable, [{
|
52
|
-
key: "
|
53
|
-
value: function
|
54
|
-
this.
|
55
|
-
this
|
56
|
-
|
85
|
+
key: "setLayersCount",
|
86
|
+
value: function setLayersCount(layersCount) {
|
87
|
+
this.layersCount = layersCount;
|
88
|
+
return this;
|
89
|
+
}
|
90
|
+
/**
|
91
|
+
* Gets the column width based on the visual column index.
|
92
|
+
*
|
93
|
+
* @param {number} visualColumn Visual column index.
|
94
|
+
* @returns {number|null}
|
95
|
+
*/
|
96
|
+
|
97
|
+
}, {
|
98
|
+
key: "getWidth",
|
99
|
+
value: function getWidth(visualColumn) {
|
100
|
+
return this.widthsMap.getValueAtIndex(this.hot.toPhysicalColumn(visualColumn));
|
101
|
+
}
|
102
|
+
/**
|
103
|
+
* Build cache of the headers widths.
|
104
|
+
*/
|
105
|
+
|
106
|
+
}, {
|
107
|
+
key: "buildWidthsMap",
|
108
|
+
value: function buildWidthsMap() {
|
109
|
+
this.container = this.hot.rootDocument.createElement('div');
|
110
|
+
this.container.classList.add('handsontable', 'htGhostTable', 'htAutoSize');
|
111
|
+
|
112
|
+
this._buildGhostTable(this.container);
|
113
|
+
|
114
|
+
this.hot.rootDocument.body.appendChild(this.container);
|
57
115
|
var columns = this.container.querySelectorAll('tr:last-of-type th');
|
58
116
|
var maxColumns = columns.length;
|
59
|
-
this.
|
117
|
+
this.widthsMap.clear();
|
60
118
|
|
61
|
-
for (var
|
62
|
-
this.
|
119
|
+
for (var column = 0; column < maxColumns; column++) {
|
120
|
+
var visualColumnsIndex = this.hot.columnIndexMapper.getVisualFromRenderableIndex(column);
|
121
|
+
var physicalColumnIndex = this.hot.toPhysicalColumn(visualColumnsIndex);
|
122
|
+
this.widthsMap.setValueAtIndex(physicalColumnIndex, columns[column].offsetWidth);
|
63
123
|
}
|
64
124
|
|
65
125
|
this.container.parentNode.removeChild(this.container);
|
66
126
|
this.container = null;
|
67
|
-
this.nestedHeaders.hot.render();
|
68
127
|
}
|
69
128
|
/**
|
70
129
|
* Build temporary table for getting minimal columns widths.
|
@@ -74,63 +133,43 @@ var GhostTable = /*#__PURE__*/function () {
|
|
74
133
|
*/
|
75
134
|
|
76
135
|
}, {
|
77
|
-
key: "
|
78
|
-
value: function
|
79
|
-
var
|
136
|
+
key: "_buildGhostTable",
|
137
|
+
value: function _buildGhostTable(container) {
|
138
|
+
var _this$hot = this.hot,
|
139
|
+
rootDocument = _this$hot.rootDocument,
|
140
|
+
columnIndexMapper = _this$hot.columnIndexMapper;
|
80
141
|
var fragment = rootDocument.createDocumentFragment();
|
81
142
|
var table = rootDocument.createElement('table');
|
82
|
-
var
|
83
|
-
var
|
84
|
-
var maxRows = this.nestedHeaders.getLayersCount();
|
85
|
-
var maxCols = this.nestedHeaders.hot.countCols();
|
86
|
-
var lastRowIndex = maxRows - 1;
|
143
|
+
var isDropdownEnabled = !!this.hot.getSettings().dropdownMenu;
|
144
|
+
var maxRenderedCols = columnIndexMapper.getRenderableIndexesLength();
|
87
145
|
|
88
|
-
for (var row = 0; row <
|
146
|
+
for (var row = 0; row < this.layersCount; row++) {
|
89
147
|
var tr = rootDocument.createElement('tr');
|
90
|
-
lastRowColspan = false;
|
91
148
|
|
92
|
-
for (var col = 0; col <
|
93
|
-
var
|
94
|
-
var headerObj = (0, _object.clone)(this.nestedHeaders.getHeaderSettings(row, col));
|
149
|
+
for (var col = 0; col < maxRenderedCols; col++) {
|
150
|
+
var visualColumnsIndex = columnIndexMapper.getVisualFromRenderableIndex(col);
|
95
151
|
|
96
|
-
if (
|
97
|
-
|
98
|
-
|
99
|
-
lastRowColspan = true;
|
100
|
-
}
|
152
|
+
if (visualColumnsIndex === null) {
|
153
|
+
visualColumnsIndex = col;
|
154
|
+
}
|
101
155
|
|
102
|
-
|
103
|
-
|
104
|
-
}
|
105
|
-
}
|
156
|
+
var th = rootDocument.createElement('th');
|
157
|
+
var headerSettings = this.nestedHeaderSettingsGetter(row, visualColumnsIndex);
|
106
158
|
|
107
|
-
|
108
|
-
|
159
|
+
if (headerSettings && (!headerSettings.isPlaceholder || headerSettings.isHidden)) {
|
160
|
+
var label = headerSettings.label;
|
109
161
|
|
110
|
-
if (
|
111
|
-
|
162
|
+
if (isDropdownEnabled) {
|
163
|
+
label += '<button class="changeType"></button>';
|
112
164
|
}
|
113
165
|
|
114
|
-
|
166
|
+
(0, _element.fastInnerHTML)(th, label);
|
167
|
+
th.colSpan = headerSettings.colspan;
|
168
|
+
tr.appendChild(th);
|
115
169
|
}
|
116
170
|
}
|
117
171
|
|
118
172
|
table.appendChild(tr);
|
119
|
-
} // We have to be sure the last row contains only the single columns.
|
120
|
-
|
121
|
-
|
122
|
-
if (lastRowColspan) {
|
123
|
-
{
|
124
|
-
var _tr = rootDocument.createElement('tr');
|
125
|
-
|
126
|
-
for (var _col = 0; _col < maxCols; _col++) {
|
127
|
-
var _td = rootDocument.createElement('th');
|
128
|
-
|
129
|
-
_tr.appendChild(_td);
|
130
|
-
}
|
131
|
-
|
132
|
-
table.appendChild(_tr);
|
133
|
-
}
|
134
173
|
}
|
135
174
|
|
136
175
|
fragment.appendChild(table);
|
@@ -143,8 +182,8 @@ var GhostTable = /*#__PURE__*/function () {
|
|
143
182
|
}, {
|
144
183
|
key: "clear",
|
145
184
|
value: function clear() {
|
185
|
+
this.widthsMap.clear();
|
146
186
|
this.container = null;
|
147
|
-
this.widthsCache.length = 0;
|
148
187
|
}
|
149
188
|
}]);
|
150
189
|
|