@revolist/revogrid 4.23.21 → 4.23.23

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.
Files changed (34) hide show
  1. package/dist/cjs/{column.drag.plugin-Bjnv6C0x.js → column.drag.plugin-Cz-T4y3M.js} +1 -1
  2. package/dist/cjs/index.cjs.js +1 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/revo-grid.cjs.entry.js +50 -23
  5. package/dist/cjs/revo-grid.cjs.js +1 -1
  6. package/dist/cjs/revogr-attribution_7.cjs.entry.js +16 -17
  7. package/dist/collection/components/overlay/keyboard.service.js +4 -1
  8. package/dist/collection/components/overlay/revogr-overlay-selection.js +12 -16
  9. package/dist/collection/components/revoGrid/revo-grid.js +50 -6
  10. package/dist/collection/components/revoGrid/viewport.service.js +17 -13
  11. package/dist/collection/plugins/base.plugin.js +1 -1
  12. package/dist/collection/services/dimension.provider.js +8 -4
  13. package/dist/esm/{column.drag.plugin-Bzb8TAwZ.js → column.drag.plugin-DKkf7Zqb.js} +1 -1
  14. package/dist/esm/index.js +2 -2
  15. package/dist/esm/loader.js +1 -1
  16. package/dist/esm/revo-grid.entry.js +50 -23
  17. package/dist/esm/revo-grid.js +1 -1
  18. package/dist/esm/revogr-attribution_7.entry.js +16 -17
  19. package/dist/revo-grid/{column.drag.plugin-Bzb8TAwZ.js → column.drag.plugin-DKkf7Zqb.js} +1 -1
  20. package/dist/revo-grid/index.esm.js +2 -2
  21. package/dist/revo-grid/revo-grid.entry.js +50 -23
  22. package/dist/revo-grid/revo-grid.esm.js +1 -1
  23. package/dist/revo-grid/revogr-attribution_7.entry.js +16 -17
  24. package/dist/types/components/overlay/keyboard.service.d.ts +2 -2
  25. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +3 -3
  26. package/dist/types/components/revoGrid/revo-grid.d.ts +8 -0
  27. package/dist/types/components/revoGrid/viewport.service.d.ts +3 -1
  28. package/dist/types/components.d.ts +10 -0
  29. package/dist/types/services/dimension.provider.d.ts +4 -1
  30. package/hydrate/index.js +67 -40
  31. package/hydrate/index.mjs +67 -40
  32. package/package.json +1 -1
  33. package/standalone/revo-grid.js +1 -1
  34. package/standalone/revogr-overlay-selection2.js +1 -1
@@ -48,5 +48,5 @@ var patchCloneNodeFix = (HTMLElementPrototype) => {
48
48
 
49
49
  patchBrowser().then(async (options) => {
50
50
  await globalScripts();
51
- return bootstrapLazy([["revo-grid",[[260,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyOnClose":[4,"apply-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"sorting":[16],"focusTemplate":[16],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"additionalData":[16],"disableVirtualX":[4,"disable-virtual-x"],"disableVirtualY":[4,"disable-virtual-y"],"hideAttribution":[4,"hide-attribution"],"jobsBeforeRender":[16],"registerVNode":[16],"accessible":[4],"rtl":[4],"canDrag":[4,"can-drag"],"refresh":[64],"setDataAt":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64],"refreshExtraElements":[64],"getProviders":[64]},[[5,"touchstart","mousedownHandle"],[5,"mousedown","mousedownHandle"],[5,"touchend","mouseupHandle"],[5,"mouseup","mouseupHandle"],[0,"rowdragstartinit","onRowDragStarted"],[0,"rowdragendinit","onRowDragEnd"],[0,"roworderchange","onRowOrderChange"],[0,"rowdragmoveinit","onRowDrag"],[0,"rowdragmousemove","onRowMouseMove"],[0,"celleditapply","onCellEdit"],[0,"rangeeditapply","onRangeEdit"],[0,"selectionchangeinit","onRangeChanged"],[0,"rowdropinit","onRowDropped"],[0,"beforeheaderclick","onHeaderClick"],[0,"beforecellfocusinit","onCellFocus"]],{"columnTypes":[{"columnTypesChanged":0}],"columns":[{"columnChanged":0}],"disableVirtualX":[{"disableVirtualXChanged":0}],"rowSize":[{"rowSizeChanged":0}],"theme":[{"themeChanged":0}],"source":[{"dataSourceChanged":0}],"pinnedBottomSource":[{"dataSourceChanged":0}],"pinnedTopSource":[{"dataSourceChanged":0}],"disableVirtualY":[{"disableVirtualYChanged":0}],"rowDefinitions":[{"rowDefChanged":0}],"trimmedRows":[{"trimmedRowsChanged":0}],"grouping":[{"groupingChanged":0}],"stretch":[{"applyStretch":0}],"filter":[{"applyFilter":0}],"sorting":[{"applySorting":0}],"rowHeaders":[{"rowHeadersChange":0}],"registerVNode":[{"registerOutsideVNodes":0}],"additionalData":[{"additionalDataChanged":0}],"rtl":[{"rtlChanged":0}],"plugins":[{"pluginsChanged":0}]}]]],["revogr-filter-panel",[[260,"revogr-filter-panel",{"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"closeOnOutsideClick":[4,"close-on-outside-click"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"filterItems":[32],"draggedFilterId":[32],"dragOverFilterId":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revogr-clipboard_3",[[0,"revogr-clipboard",{"readonly":[4],"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"],[4,"cut","cutStarted"]]],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"additionalData":[8,"additional-data"],"cancelChanges":[64],"beforeDisconnect":[64]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"rowType":[1,"row-type"],"dragStart":[64],"endOrder":[64],"clearOrder":[64]}]]],["revogr-data_4",[[260,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"additionalData":[8,"additional-data"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[513],"colType":[513,"col-type"],"jobsBeforeRender":[16],"providers":[32],"updateCell":[64]},null,{"dataStore":[{"onDataStoreChange":0}],"colData":[{"onColDataChange":0}]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"groups":[16],"groupingDepth":[2,"grouping-depth"],"readonly":[4],"canResize":[4,"can-resize"],"resizeHandler":[16],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1],"additionalData":[8,"additional-data"]}],[260,"revogr-viewport-scroll",{"rowHeader":[4,"row-header"],"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"colType":[1,"col-type"],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"setScroll":[64],"changeScroll":[64],"applyScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]],[0,"vnode-html",{"redraw":[16]}]]],["revogr-attribution_7",[[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16],"additionalData":[8,"additional-data"],"jobsBeforeRender":[16]}],[260,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"],"additionalData":[8,"additional-data"],"isMobileDevice":[4,"is-mobile-device"]},[[5,"touchmove","onMouseMove"],[5,"mousemove","onMouseMove"],[5,"touchend","onMouseUp"],[5,"mouseup","onMouseUp"],[5,"mouseleave","onMouseUp"],[0,"dragstartcell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]],{"selectionStore":[{"selectionServiceSet":0}],"dimensionRow":[{"createAutoFillService":0}],"dimensionCol":[{"createAutoFillService":0}],"dataStore":[{"columnServiceSet":0}],"colData":[{"columnServiceSet":0}]}],[0,"revogr-attribution"],[260,"revogr-focus",{"colType":[1,"col-type"],"rowType":[1,"row-type"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"focusTemplate":[16]}],[0,"revogr-scroll-virtual",{"dimension":[1],"realSize":[2,"real-size"],"virtualSize":[2,"virtual-size"],"clientSize":[2,"client-size"],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-extra",{"nodes":[16],"update":[32],"refresh":[64]}]]]], options);
51
+ return bootstrapLazy([["revo-grid",[[260,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyOnClose":[4,"apply-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"sorting":[16],"focusTemplate":[16],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"additionalData":[16],"disableVirtualX":[4,"disable-virtual-x"],"virtualX":[16],"disableVirtualY":[4,"disable-virtual-y"],"hideAttribution":[4,"hide-attribution"],"jobsBeforeRender":[16],"registerVNode":[16],"accessible":[4],"rtl":[4],"canDrag":[4,"can-drag"],"refresh":[64],"setDataAt":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64],"refreshExtraElements":[64],"getProviders":[64]},[[5,"touchstart","mousedownHandle"],[5,"mousedown","mousedownHandle"],[5,"touchend","mouseupHandle"],[5,"mouseup","mouseupHandle"],[0,"rowdragstartinit","onRowDragStarted"],[0,"rowdragendinit","onRowDragEnd"],[0,"roworderchange","onRowOrderChange"],[0,"rowdragmoveinit","onRowDrag"],[0,"rowdragmousemove","onRowMouseMove"],[0,"celleditapply","onCellEdit"],[0,"rangeeditapply","onRangeEdit"],[0,"selectionchangeinit","onRangeChanged"],[0,"rowdropinit","onRowDropped"],[0,"beforeheaderclick","onHeaderClick"],[0,"beforecellfocusinit","onCellFocus"]],{"columnTypes":[{"columnTypesChanged":0}],"columns":[{"columnChanged":0}],"disableVirtualX":[{"disableVirtualXChanged":0}],"virtualX":[{"virtualXChanged":0}],"rowSize":[{"rowSizeChanged":0}],"theme":[{"themeChanged":0}],"source":[{"dataSourceChanged":0}],"pinnedBottomSource":[{"dataSourceChanged":0}],"pinnedTopSource":[{"dataSourceChanged":0}],"disableVirtualY":[{"disableVirtualYChanged":0}],"rowDefinitions":[{"rowDefChanged":0}],"trimmedRows":[{"trimmedRowsChanged":0}],"grouping":[{"groupingChanged":0}],"stretch":[{"applyStretch":0}],"filter":[{"applyFilter":0}],"sorting":[{"applySorting":0}],"rowHeaders":[{"rowHeadersChange":0}],"registerVNode":[{"registerOutsideVNodes":0}],"additionalData":[{"additionalDataChanged":0}],"rtl":[{"rtlChanged":0}],"plugins":[{"pluginsChanged":0}]}]]],["revogr-filter-panel",[[260,"revogr-filter-panel",{"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"closeOnOutsideClick":[4,"close-on-outside-click"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"filterItems":[32],"draggedFilterId":[32],"dragOverFilterId":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revogr-clipboard_3",[[0,"revogr-clipboard",{"readonly":[4],"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"],[4,"cut","cutStarted"]]],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"additionalData":[8,"additional-data"],"cancelChanges":[64],"beforeDisconnect":[64]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"rowType":[1,"row-type"],"dragStart":[64],"endOrder":[64],"clearOrder":[64]}]]],["revogr-data_4",[[260,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"additionalData":[8,"additional-data"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[513],"colType":[513,"col-type"],"jobsBeforeRender":[16],"providers":[32],"updateCell":[64]},null,{"dataStore":[{"onDataStoreChange":0}],"colData":[{"onColDataChange":0}]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"groups":[16],"groupingDepth":[2,"grouping-depth"],"readonly":[4],"canResize":[4,"can-resize"],"resizeHandler":[16],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1],"additionalData":[8,"additional-data"]}],[260,"revogr-viewport-scroll",{"rowHeader":[4,"row-header"],"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"colType":[1,"col-type"],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"setScroll":[64],"changeScroll":[64],"applyScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]],[0,"vnode-html",{"redraw":[16]}]]],["revogr-attribution_7",[[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16],"additionalData":[8,"additional-data"],"jobsBeforeRender":[16]}],[260,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"],"additionalData":[8,"additional-data"],"isMobileDevice":[4,"is-mobile-device"]},[[5,"touchmove","onMouseMove"],[5,"mousemove","onMouseMove"],[5,"touchend","onMouseUp"],[5,"mouseup","onMouseUp"],[5,"mouseleave","onMouseUp"],[0,"dragstartcell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]],{"selectionStore":[{"selectionServiceSet":0}],"dimensionRow":[{"createAutoFillService":0}],"dimensionCol":[{"createAutoFillService":0}],"dataStore":[{"columnServiceSet":0}],"colData":[{"columnServiceSet":0}]}],[0,"revogr-attribution"],[260,"revogr-focus",{"colType":[1,"col-type"],"rowType":[1,"row-type"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"focusTemplate":[16]}],[0,"revogr-scroll-virtual",{"dimension":[1],"realSize":[2,"real-size"],"virtualSize":[2,"virtual-size"],"clientSize":[2,"client-size"],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-extra",{"nodes":[16],"update":[32],"refresh":[64]}]]]], options);
52
52
  });
@@ -296,6 +296,7 @@ class KeyboardService {
296
296
  if (typeof (editCell === null || editCell === void 0 ? void 0 : editCell.val) !== 'string') {
297
297
  return false;
298
298
  }
299
+ e.preventDefault();
299
300
  this.sv.selectionStore.set('edit', Object.assign(Object.assign({}, editCell), { val: `${editCell.val}${e.key}` }));
300
301
  return true;
301
302
  }
@@ -357,7 +358,9 @@ class KeyboardService {
357
358
  }
358
359
  // pressed letter key
359
360
  if (!isShortcutModifier(e) && e.key.length === 1) {
360
- this.sv.change(e.key);
361
+ if (this.sv.change(e.key)) {
362
+ e.preventDefault();
363
+ }
361
364
  return;
362
365
  }
363
366
  // pressed arrow, change selection position
@@ -786,12 +789,7 @@ const OverlaySelection = class {
786
789
  return this.doFocus(f, f, changes);
787
790
  }
788
791
  },
789
- change: val => {
790
- if (this.readonly) {
791
- return;
792
- }
793
- this.doEdit(val);
794
- },
792
+ change: val => this.doEdit(val),
795
793
  cancel: async () => {
796
794
  var _a;
797
795
  await ((_a = this.revogrEdit) === null || _a === void 0 ? void 0 : _a.cancelChanges());
@@ -920,9 +918,9 @@ const OverlaySelection = class {
920
918
  nodes.push(h("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, rowType: this.types.rowType, onRowdragstartinit: e => this.rowDragStart(e) }));
921
919
  }
922
920
  }
923
- return (h(Host, { key: 'ff303c39d59e4ef217421fa11b9a80de07311b07', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true), onCloseedit: (e) => this.closeEdit(e),
921
+ return (h(Host, { key: '2d8dc4fd40a883fe59b24b2cfac1c370b9f0ac16', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true), onCloseedit: (e) => this.closeEdit(e),
924
922
  // it's done to be able to throw events from different levels, not just from editor
925
- onCelledit: (e) => this.onEditCell(e) }, nodes, h("slot", { key: '3cbe4c3ad7d447f779e9e20f73eec2e3107275e0', name: "data" })));
923
+ onCelledit: (e) => this.onEditCell(e) }, nodes, h("slot", { key: '8ad5df55904ca6a8b2fb0e69c5f608ec7264a0f1', name: "data" })));
926
924
  }
927
925
  /**
928
926
  * Executes the focus operation on the specified range of cells.
@@ -1024,15 +1022,16 @@ const OverlaySelection = class {
1024
1022
  * Start cell editing
1025
1023
  */
1026
1024
  doEdit(val = '') {
1027
- var _a;
1028
- if (this.canEdit()) {
1029
- const focus = this.selectionStore.get('focus');
1030
- if (!focus) {
1031
- return;
1032
- }
1033
- const data = this.columnService.getSaveData(focus.y, focus.x);
1034
- (_a = this.setEdit) === null || _a === void 0 ? void 0 : _a.emit(Object.assign(Object.assign({}, data), { val }));
1025
+ if (!this.canEdit()) {
1026
+ return false;
1027
+ }
1028
+ const focus = this.selectionStore.get('focus');
1029
+ if (!focus) {
1030
+ return false;
1035
1031
  }
1032
+ const data = this.columnService.getSaveData(focus.y, focus.x);
1033
+ const event = this.setEdit.emit(Object.assign(Object.assign({}, data), { val }));
1034
+ return !event.defaultPrevented;
1036
1035
  }
1037
1036
  /**
1038
1037
  * Close editor event triggered
@@ -3,7 +3,7 @@ import { EventData } from './selection.utils';
3
3
  import { Cell, Nullable, RangeArea, SelectionStoreState } from "../../types/index";
4
4
  type Config = {
5
5
  selectionStore: Observable<SelectionStoreState>;
6
- change(val?: any): void;
6
+ change(val?: any): boolean;
7
7
  cancel(): void;
8
8
  clearCell(): void;
9
9
  focus(focus: Cell, changes: Partial<Cell>, focusNextViewport?: number): boolean;
@@ -13,7 +13,7 @@ type Config = {
13
13
  selectAll(): void;
14
14
  };
15
15
  export declare class KeyboardService {
16
- private sv;
16
+ private readonly sv;
17
17
  constructor(sv: Config);
18
18
  /**
19
19
  * Appends printable key input that arrives after edit mode was requested
@@ -11,7 +11,7 @@ export declare class OverlaySelection {
11
11
  /**
12
12
  * Readonly mode.
13
13
  */
14
- readonly: boolean;
14
+ readonly readonly: boolean;
15
15
  /**
16
16
  * Range selection allowed.
17
17
  */
@@ -189,7 +189,7 @@ export declare class OverlaySelection {
189
189
  private autoFillService;
190
190
  private orderEditor?;
191
191
  private revogrEdit?;
192
- private unsubscribeSelectionStore;
192
+ private readonly unsubscribeSelectionStore;
193
193
  onMouseMove(e: MouseEvent | TouchEvent): void;
194
194
  /**
195
195
  * Action finished inside the document.
@@ -242,7 +242,7 @@ export declare class OverlaySelection {
242
242
  /**
243
243
  * Start cell editing
244
244
  */
245
- protected doEdit(val?: string): void;
245
+ protected doEdit(val?: string): boolean;
246
246
  /**
247
247
  * Close editor event triggered
248
248
  * @param details - if it requires focus next
@@ -184,6 +184,12 @@ export declare class RevoGridComponent {
184
184
  * Can be used for initial rendering performance improvement.
185
185
  */
186
186
  disableVirtualX: boolean;
187
+ /**
188
+ * Column dimensions that use X axis virtual rendering.
189
+ * Defaults to regular columns only to preserve pinned column behavior.
190
+ * Set to `['rgCol', 'colPinStart', 'colPinEnd']` to virtualize all column areas.
191
+ */
192
+ virtualX: DimensionCols[];
187
193
  /**
188
194
  * Disable lazy rendering mode for the `Y axis`.
189
195
  * Use when not many rows present and you don't need rerenader cells during scroll.
@@ -646,7 +652,9 @@ export declare class RevoGridComponent {
646
652
  * column to its new viewport and virtual index.
647
653
  */
648
654
  private restoreColumnFocusAfterRender;
655
+ private refreshColumnsOnConfigChange;
649
656
  disableVirtualXChanged(newVal?: boolean, prevVal?: boolean): void;
657
+ virtualXChanged(newVal?: DimensionCols[], prevVal?: DimensionCols[]): void;
650
658
  rowSizeChanged(s: number): void;
651
659
  themeChanged(t: Theme, _?: Theme, __?: string, init?: boolean): void;
652
660
  dataSourceChanged<T extends DataType>(newVal: T[] | undefined, _: T[] | undefined, watchName: string): void;
@@ -5,7 +5,7 @@ import { OrdererService } from '../order/order-renderer';
5
5
  import GridScrollingService from './viewport.scrolling.service';
6
6
  import ColumnDataProvider from '../../services/column.data.provider';
7
7
  import { DataProvider } from '../../services/data.provider';
8
- import type { AllDimensionType, Cell, ColumnRegular, DimensionCols, DimensionRows, RangeArea, ViewportProps } from "../../types/index";
8
+ import type { AllDimensionType, Cell, ColumnRegular, DimensionCols, DimensionRows, RangeArea, ViewportProps, ViewPortResizeEvent } from "../../types/index";
9
9
  export type ResizeDetails = {
10
10
  [index: number]: ColumnRegular;
11
11
  };
@@ -19,6 +19,7 @@ type Config = {
19
19
  selectionStoreConnector: SelectionStoreConnector;
20
20
  noHorizontalScrollTransfer?: boolean;
21
21
  disableVirtualX?: boolean;
22
+ virtualX?: DimensionCols[];
22
23
  disableVirtualY?: boolean;
23
24
  resize(r: ResizeDetails): void;
24
25
  };
@@ -29,6 +30,7 @@ export type FocusedData = {
29
30
  rowType: DimensionRows;
30
31
  column?: ColumnRegular;
31
32
  };
33
+ export declare function getViewportResizeDimension(colType: DimensionCols, dimension: ViewPortResizeEvent['dimension']): "rgRow" | DimensionCols;
32
34
  export default class ViewportService {
33
35
  private config;
34
36
  readonly columns: ViewportProps[];
@@ -348,6 +348,11 @@ export namespace Components {
348
348
  * @default true
349
349
  */
350
350
  "useClipboard": boolean | ClipboardConfig;
351
+ /**
352
+ * Column dimensions that use X axis virtual rendering. Defaults to regular columns only to preserve pinned column behavior. Set to `['rgCol', 'colPinStart', 'colPinEnd']` to virtualize all column areas.
353
+ * @default ['rgCol']
354
+ */
355
+ "virtualX": DimensionCols[];
351
356
  }
352
357
  interface RevogrAttribution {
353
358
  }
@@ -1767,6 +1772,11 @@ declare namespace LocalJSX {
1767
1772
  * @default true
1768
1773
  */
1769
1774
  "useClipboard"?: boolean | ClipboardConfig;
1775
+ /**
1776
+ * Column dimensions that use X axis virtual rendering. Defaults to regular columns only to preserve pinned column behavior. Set to `['rgCol', 'colPinStart', 'colPinEnd']` to virtualize all column areas.
1777
+ * @default ['rgCol']
1778
+ */
1779
+ "virtualX"?: DimensionCols[];
1770
1780
  }
1771
1781
  interface RevogrAttribution {
1772
1782
  }
@@ -4,6 +4,8 @@ import type { DimensionCols, DimensionType, MultiDimensionType, ColumnRegular, D
4
4
  export type DimensionConfig = {
5
5
  realSizeChanged(k: MultiDimensionType): void;
6
6
  };
7
+ export declare const DEFAULT_VIRTUAL_X: readonly DimensionCols[];
8
+ export declare function isVirtualXDimension(type: DimensionCols, disableVirtualX?: boolean, virtualX?: readonly DimensionCols[]): boolean;
7
9
  /**
8
10
  * Dimension provider
9
11
  * Stores dimension information and custom sizes
@@ -45,8 +47,9 @@ export default class DimensionProvider {
45
47
  * Applies new columns to the dimension provider
46
48
  * @param columns - new columns data
47
49
  * @param disableVirtualX - disable virtual data for X axis
50
+ * @param virtualX - column dimensions that should use virtual data
48
51
  */
49
- applyNewColumns(columns: Record<DimensionCols, ColumnRegular[]>, disableVirtualX: boolean, keepOld?: boolean): void;
52
+ applyNewColumns(columns: Record<DimensionCols, ColumnRegular[]>, disableVirtualX: boolean, keepOld?: boolean, virtualX?: readonly DimensionCols[]): void;
50
53
  /**
51
54
  * Gets the full size of the grid by summing up the sizes of all dimensions
52
55
  * Goes through all dimensions columnTypes (x) and rowTypes (y) and sums up their sizes
package/hydrate/index.js CHANGED
@@ -13636,6 +13636,7 @@ class KeyboardService {
13636
13636
  if (typeof (editCell === null || editCell === void 0 ? void 0 : editCell.val) !== 'string') {
13637
13637
  return false;
13638
13638
  }
13639
+ e.preventDefault();
13639
13640
  this.sv.selectionStore.set('edit', Object.assign(Object.assign({}, editCell), { val: `${editCell.val}${e.key}` }));
13640
13641
  return true;
13641
13642
  }
@@ -13697,7 +13698,9 @@ class KeyboardService {
13697
13698
  }
13698
13699
  // pressed letter key
13699
13700
  if (!isShortcutModifier(e) && e.key.length === 1) {
13700
- this.sv.change(e.key);
13701
+ if (this.sv.change(e.key)) {
13702
+ e.preventDefault();
13703
+ }
13701
13704
  return;
13702
13705
  }
13703
13706
  // pressed arrow, change selection position
@@ -14129,12 +14132,7 @@ class OverlaySelection {
14129
14132
  return this.doFocus(f, f, changes);
14130
14133
  }
14131
14134
  },
14132
- change: val => {
14133
- if (this.readonly) {
14134
- return;
14135
- }
14136
- this.doEdit(val);
14137
- },
14135
+ change: val => this.doEdit(val),
14138
14136
  cancel: async () => {
14139
14137
  var _a;
14140
14138
  await ((_a = this.revogrEdit) === null || _a === void 0 ? void 0 : _a.cancelChanges());
@@ -14263,9 +14261,9 @@ class OverlaySelection {
14263
14261
  nodes.push(hAsync("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, rowType: this.types.rowType, onRowdragstartinit: e => this.rowDragStart(e) }));
14264
14262
  }
14265
14263
  }
14266
- return (hAsync(Host, { key: 'ff303c39d59e4ef217421fa11b9a80de07311b07', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true), onCloseedit: (e) => this.closeEdit(e),
14264
+ return (hAsync(Host, { key: '2d8dc4fd40a883fe59b24b2cfac1c370b9f0ac16', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true), onCloseedit: (e) => this.closeEdit(e),
14267
14265
  // it's done to be able to throw events from different levels, not just from editor
14268
- onCelledit: (e) => this.onEditCell(e) }, nodes, hAsync("slot", { key: '3cbe4c3ad7d447f779e9e20f73eec2e3107275e0', name: "data" })));
14266
+ onCelledit: (e) => this.onEditCell(e) }, nodes, hAsync("slot", { key: '8ad5df55904ca6a8b2fb0e69c5f608ec7264a0f1', name: "data" })));
14269
14267
  }
14270
14268
  /**
14271
14269
  * Executes the focus operation on the specified range of cells.
@@ -14367,15 +14365,16 @@ class OverlaySelection {
14367
14365
  * Start cell editing
14368
14366
  */
14369
14367
  doEdit(val = '') {
14370
- var _a;
14371
- if (this.canEdit()) {
14372
- const focus = this.selectionStore.get('focus');
14373
- if (!focus) {
14374
- return;
14375
- }
14376
- const data = this.columnService.getSaveData(focus.y, focus.x);
14377
- (_a = this.setEdit) === null || _a === void 0 ? void 0 : _a.emit(Object.assign(Object.assign({}, data), { val }));
14368
+ if (!this.canEdit()) {
14369
+ return false;
14370
+ }
14371
+ const focus = this.selectionStore.get('focus');
14372
+ if (!focus) {
14373
+ return false;
14378
14374
  }
14375
+ const data = this.columnService.getSaveData(focus.y, focus.x);
14376
+ const event = this.setEdit.emit(Object.assign(Object.assign({}, data), { val }));
14377
+ return !event.defaultPrevented;
14379
14378
  }
14380
14379
  /**
14381
14380
  * Close editor event triggered
@@ -15101,6 +15100,10 @@ function getScrollDimension({ contentSize, clientSize, virtualSize = 0, maxScrol
15101
15100
  };
15102
15101
  }
15103
15102
 
15103
+ const DEFAULT_VIRTUAL_X = ['rgCol'];
15104
+ function isVirtualXDimension(type, disableVirtualX = false, virtualX = DEFAULT_VIRTUAL_X) {
15105
+ return !disableVirtualX && virtualX.includes(type);
15106
+ }
15104
15107
  /**
15105
15108
  * Dimension provider
15106
15109
  * Stores dimension information and custom sizes
@@ -15111,7 +15114,7 @@ class DimensionProvider {
15111
15114
  constructor(viewports, config) {
15112
15115
  this.viewports = viewports;
15113
15116
  const sizeChanged = debounce$1((k) => config.realSizeChanged(k), RESIZE_INTERVAL);
15114
- this.stores = reduce([...rowTypes, ...columnTypes], (sources, t) => {
15117
+ this.stores = [...rowTypes, ...columnTypes].reduce((sources, t) => {
15115
15118
  sources[t] = new DimensionStore(t);
15116
15119
  sources[t].store.onChange('realSize', () => sizeChanged(t));
15117
15120
  return sources;
@@ -15187,8 +15190,9 @@ class DimensionProvider {
15187
15190
  * Applies new columns to the dimension provider
15188
15191
  * @param columns - new columns data
15189
15192
  * @param disableVirtualX - disable virtual data for X axis
15193
+ * @param virtualX - column dimensions that should use virtual data
15190
15194
  */
15191
- applyNewColumns(columns, disableVirtualX, keepOld = false) {
15195
+ applyNewColumns(columns, disableVirtualX, keepOld = false, virtualX = DEFAULT_VIRTUAL_X) {
15192
15196
  // Apply new columns to dimension provider
15193
15197
  for (let type of columnTypes) {
15194
15198
  if (!keepOld) {
@@ -15198,7 +15202,7 @@ class DimensionProvider {
15198
15202
  // Get the new columns for the current type
15199
15203
  const items = columns[type];
15200
15204
  // Determine if virtual data should be disabled for the current type
15201
- const noVirtual = type !== 'rgCol' || disableVirtualX;
15205
+ const noVirtual = !isVirtualXDimension(type, disableVirtualX, virtualX);
15202
15206
  // Set the items count in the dimension provider
15203
15207
  this.stores[type].setStore({ count: items.length });
15204
15208
  // Set the custom sizes for the columns
@@ -15424,7 +15428,7 @@ class BasePlugin {
15424
15428
  },
15425
15429
  });
15426
15430
  if (immediate) {
15427
- callback(nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.value);
15431
+ callback((nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.get) ? nativeValueDesc.get.call(this.revogrid) : nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.value);
15428
15432
  }
15429
15433
  }
15430
15434
  /**
@@ -17641,6 +17645,9 @@ function viewportDataPartition(data, type, slot, fixed) {
17641
17645
  };
17642
17646
  }
17643
17647
 
17648
+ function getViewportResizeDimension(colType, dimension) {
17649
+ return dimension === 'rgCol' ? colType : dimension;
17650
+ }
17644
17651
  /** Collect Column data */
17645
17652
  function gatherColumnData(data) {
17646
17653
  const colDimension = data.dimensions[data.colType].store;
@@ -17700,20 +17707,20 @@ class ViewportService {
17700
17707
  colStore,
17701
17708
  onHeaderresize: e => this.onColumnResize(val, e, colStore),
17702
17709
  };
17703
- if (val === 'rgCol') {
17704
- column.onResizeviewport = (e) => {
17705
- var _a;
17706
- const vpState = {
17707
- clientSize: e.detail.size,
17708
- };
17709
- // virtual size will be handled by dimension provider if disabled
17710
- if ((e.detail.dimension === 'rgRow' && !config.disableVirtualY)
17711
- || (e.detail.dimension === 'rgCol' && !config.disableVirtualX)) {
17712
- vpState.virtualSize = e.detail.size;
17713
- }
17714
- (_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(e.detail.dimension, vpState);
17710
+ column.onResizeviewport = (e) => {
17711
+ var _a;
17712
+ const vpState = {
17713
+ clientSize: e.detail.size,
17715
17714
  };
17716
- }
17715
+ const dimension = getViewportResizeDimension(val, e.detail.dimension);
17716
+ const isVirtualColumn = columnTypes.includes(dimension)
17717
+ && isVirtualXDimension(dimension, config.disableVirtualX, config.virtualX);
17718
+ // Keep virtual dimensions in sync with their viewport size.
17719
+ if ((dimension === 'rgRow' && !config.disableVirtualY) || isVirtualColumn) {
17720
+ vpState.virtualSize = e.detail.size;
17721
+ }
17722
+ (_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(dimension, vpState);
17723
+ };
17717
17724
  const colData = gatherColumnData(column);
17718
17725
  const columnSelectionStore = this.registerCol(colData.position.x, val);
17719
17726
  // render per each column data collections vertically
@@ -19427,6 +19434,12 @@ class RevoGridComponent {
19427
19434
  * Can be used for initial rendering performance improvement.
19428
19435
  */
19429
19436
  this.disableVirtualX = false;
19437
+ /**
19438
+ * Column dimensions that use X axis virtual rendering.
19439
+ * Defaults to regular columns only to preserve pinned column behavior.
19440
+ * Set to `['rgCol', 'colPinStart', 'colPinEnd']` to virtualize all column areas.
19441
+ */
19442
+ this.virtualX = ['rgCol'];
19430
19443
  /**
19431
19444
  * Disable lazy rendering mode for the `Y axis`.
19432
19445
  * Use when not many rows present and you don't need rerenader cells during scroll.
@@ -19878,7 +19891,7 @@ class RevoGridComponent {
19878
19891
  if (beforeSetEvent.defaultPrevented) {
19879
19892
  return;
19880
19893
  }
19881
- this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init);
19894
+ this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init, this.virtualX);
19882
19895
  const beforeApplyEvent = this.beforecolumnapplied.emit(columnGather);
19883
19896
  if (beforeApplyEvent.defaultPrevented) {
19884
19897
  return;
@@ -19954,12 +19967,18 @@ class RevoGridComponent {
19954
19967
  };
19955
19968
  this.viewport.setFocus(colType, pending.rowType, cell, cell);
19956
19969
  }
19957
- disableVirtualXChanged(newVal = false, prevVal = false) {
19970
+ refreshColumnsOnConfigChange(newVal, prevVal) {
19958
19971
  if (newVal === prevVal) {
19959
19972
  return;
19960
19973
  }
19961
19974
  this.columnChanged(this.columns);
19962
19975
  }
19976
+ disableVirtualXChanged(newVal = false, prevVal = false) {
19977
+ this.refreshColumnsOnConfigChange(newVal, prevVal);
19978
+ }
19979
+ virtualXChanged(newVal = ['rgCol'], prevVal = ['rgCol']) {
19980
+ this.refreshColumnsOnConfigChange(newVal, prevVal);
19981
+ }
19963
19982
  rowSizeChanged(s) {
19964
19983
  if (!this.dimensionProvider) {
19965
19984
  return;
@@ -20285,6 +20304,7 @@ class RevoGridComponent {
20285
20304
  selectionStoreConnector: this.selectionStoreConnector,
20286
20305
  noHorizontalScrollTransfer: this.noHorizontalScrollTransfer,
20287
20306
  disableVirtualX: this.disableVirtualX,
20307
+ virtualX: this.virtualX,
20288
20308
  disableVirtualY: this.disableVirtualY,
20289
20309
  resize: c => this.aftercolumnresize.emit(c),
20290
20310
  }, contentHeight);
@@ -20314,11 +20334,14 @@ class RevoGridComponent {
20314
20334
  // Render viewport data (vertical sections)
20315
20335
  view.dataPorts.forEach(data => {
20316
20336
  const key = `${data.type}_${view.type}`;
20317
- const dataView = (hAsync("revogr-overlay-selection", Object.assign({}, data, { canDrag: this.canDrag && data.canDrag, isMobileDevice: isMobile, onSelectall: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.selectAll(); }, editors: this.editors, readonly: this.readonly, range: this.range, useClipboard: this.useClipboard, applyChangesOnClose: this.applyOnClose, additionalData: this.additionalData, slot: data.slot, onBeforenextvpfocus: (e) => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.beforeNextFocusCell(e.detail); }, onCanceledit: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(false); }, onSetedit: ({ detail }) => {
20337
+ const dataView = (hAsync("revogr-overlay-selection", Object.assign({}, data, { canDrag: this.canDrag && data.canDrag, isMobileDevice: isMobile, onSelectall: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.selectAll(); }, editors: this.editors, readonly: this.readonly, range: this.range, useClipboard: this.useClipboard, applyChangesOnClose: this.applyOnClose, additionalData: this.additionalData, slot: data.slot, onBeforenextvpfocus: (e) => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.beforeNextFocusCell(e.detail); }, onCanceledit: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(false); }, onSetedit: e => {
20318
20338
  var _a;
20319
- const event = this.beforeeditstart.emit(detail);
20320
- if (!event.defaultPrevented) {
20321
- (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(detail.val);
20339
+ const event = this.beforeeditstart.emit(e.detail);
20340
+ if (event.defaultPrevented) {
20341
+ e.preventDefault();
20342
+ }
20343
+ else {
20344
+ (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(e.detail.val);
20322
20345
  }
20323
20346
  } }), hAsync("revogr-data", Object.assign({}, data, { colType: view.type, key: key, readonly: this.readonly, range: this.range, rowClass: this.rowClass, rowSelectionStore: data.rowSelectionStore, additionalData: this.additionalData, jobsBeforeRender: this.jobsBeforeRender, slot: DATA_SLOT }), hAsync("slot", { name: `data-${view.type}-${data.type}` })), hAsync("revogr-temp-range", { selectionStore: data.selectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }), hAsync("revogr-focus", { colData: data.colData, dataStore: data.dataStore, focusTemplate: this.focusTemplate, rowType: data.type, colType: view.type, selectionStore: data.selectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }, hAsync("slot", { name: `focus-${view.type}-${data.type}` }))));
20324
20347
  dataViews.push(dataView);
@@ -20359,6 +20382,9 @@ class RevoGridComponent {
20359
20382
  "disableVirtualX": [{
20360
20383
  "disableVirtualXChanged": 0
20361
20384
  }],
20385
+ "virtualX": [{
20386
+ "virtualXChanged": 0
20387
+ }],
20362
20388
  "rowSize": [{
20363
20389
  "rowSizeChanged": 0
20364
20390
  }],
@@ -20448,6 +20474,7 @@ class RevoGridComponent {
20448
20474
  "stretch": [8],
20449
20475
  "additionalData": [16],
20450
20476
  "disableVirtualX": [4, "disable-virtual-x"],
20477
+ "virtualX": [16],
20451
20478
  "disableVirtualY": [4, "disable-virtual-y"],
20452
20479
  "hideAttribution": [4, "hide-attribution"],
20453
20480
  "jobsBeforeRender": [16],