@revolist/revogrid 4.23.20 → 4.23.22

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 (37) hide show
  1. package/dist/cjs/{column.drag.plugin-ByDJ7Rk3.js → column.drag.plugin-Cz-T4y3M.js} +43 -31
  2. package/dist/cjs/index.cjs.js +2 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/revo-grid.cjs.entry.js +44 -19
  5. package/dist/cjs/revo-grid.cjs.js +1 -1
  6. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +1 -1
  7. package/dist/collection/components/editors/revogr-edit-style.css +2 -1
  8. package/dist/collection/components/revoGrid/revo-grid.js +65 -2
  9. package/dist/collection/components/revoGrid/viewport.service.js +17 -13
  10. package/dist/collection/plugins/base.plugin.js +1 -1
  11. package/dist/collection/plugins/sorting/sorting.plugin.js +42 -30
  12. package/dist/collection/services/dimension.provider.js +8 -4
  13. package/dist/collection/types/events.js +1 -0
  14. package/dist/esm/{column.drag.plugin-BZacA8n_.js → column.drag.plugin-DKkf7Zqb.js} +43 -31
  15. package/dist/esm/index.js +3 -2
  16. package/dist/esm/loader.js +1 -1
  17. package/dist/esm/revo-grid.entry.js +44 -19
  18. package/dist/esm/revo-grid.js +1 -1
  19. package/dist/esm/revogr-clipboard_3.entry.js +1 -1
  20. package/dist/revo-grid/{column.drag.plugin-BZacA8n_.js → column.drag.plugin-DKkf7Zqb.js} +43 -31
  21. package/dist/revo-grid/index.esm.js +3 -2
  22. package/dist/revo-grid/revo-grid.entry.js +44 -19
  23. package/dist/revo-grid/revo-grid.esm.js +1 -1
  24. package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
  25. package/dist/types/components/revoGrid/revo-grid.d.ts +15 -1
  26. package/dist/types/components/revoGrid/viewport.service.d.ts +3 -1
  27. package/dist/types/components.d.ts +17 -2
  28. package/dist/types/plugins/sorting/sorting.plugin.d.ts +3 -1
  29. package/dist/types/plugins/sorting/sorting.types.d.ts +22 -1
  30. package/dist/types/services/dimension.provider.d.ts +4 -1
  31. package/dist/types/types/events.d.ts +1 -1
  32. package/hydrate/index.js +88 -50
  33. package/hydrate/index.mjs +88 -50
  34. package/package.json +1 -1
  35. package/standalone/index.js +1 -1
  36. package/standalone/revo-grid.js +1 -1
  37. package/standalone/revogr-edit2.js +1 -1
@@ -352,7 +352,7 @@ class BasePlugin {
352
352
  },
353
353
  });
354
354
  if (immediate) {
355
- callback(nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.value);
355
+ callback((nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.get) ? nativeValueDesc.get.call(this.revogrid) : nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.value);
356
356
  }
357
357
  }
358
358
  /**
@@ -1877,7 +1877,7 @@ function mergeSortedRowsWithGroups(indexes, source, sortedRows) {
1877
1877
  * 1. @event `beforesorting` - Triggered when sorting just starts. Nothing has happened yet. This can be triggered from a column or from the source. If the type is from rows, the column will be undefined.
1878
1878
  * 2. @event `beforesourcesortingapply` - Triggered before the sorting data is applied to the data source. You can prevent this event, and the data will not be sorted.
1879
1879
  * 3. @event `beforesortingapply` - Triggered before the sorting data is applied to the data source. You can prevent this event, and the data will not be sorted. This event is only called from a column sorting click.
1880
- * 4. @event `aftersortingapply` - Triggered after sorting has been applied and completed. This event occurs for both row and column sorting.
1880
+ * 4. @event `aftersortingapply` - Triggered after sorting has been applied and completed. The event detail includes the final sorting state and sorting column metadata when available.
1881
1881
  *
1882
1882
  * Note: If you prevent an event, it will not proceed to the subsequent steps.
1883
1883
  */
@@ -2019,6 +2019,38 @@ class SortingPlugin extends BasePlugin {
2019
2019
  });
2020
2020
  this.setSortingState(state);
2021
2021
  }
2022
+ resetSortingForStore(type) {
2023
+ const storeService = this.providers.data.stores[type];
2024
+ // row data
2025
+ const source = storeService.store.get('source');
2026
+ // row indexes
2027
+ const proxyItems = storeService.store.get('proxyItems');
2028
+ // row indexes
2029
+ const newItemsOrder = Array.from({ length: source.length }, (_, i) => i); // recover indexes range(0, source.length)
2030
+ this.providers.dimension.updateSizesPositionByNewDataIndexes(type, newItemsOrder, proxyItems);
2031
+ storeService.setData({ proxyItems: newItemsOrder });
2032
+ }
2033
+ applySortingForStore(type, sorting, sortingFunc, sortingColumns, sortingOrder, ignoreViewportUpdate) {
2034
+ const storeService = this.providers.data.stores[type];
2035
+ // row data
2036
+ const source = storeService.store.get('source');
2037
+ // row indexes
2038
+ const proxyItems = storeService.store.get('proxyItems');
2039
+ const sortItems = getSortableRowIndexes(proxyItems, source);
2040
+ const sortedItems = sortIndexByItems([...sortItems], source, sortingFunc, sorting, sortingColumns, sortingOrder);
2041
+ const newItemsOrder = mergeSortedRowsWithGroups(proxyItems, source, sortedItems);
2042
+ // take row indexes before trim applied and proxy items
2043
+ const prevItems = storeService.store.get('items');
2044
+ storeService.setData({
2045
+ proxyItems: newItemsOrder,
2046
+ });
2047
+ // take currently visible row indexes
2048
+ const newItems = storeService.store.get('items');
2049
+ if (!ignoreViewportUpdate) {
2050
+ this.providers.dimension
2051
+ .updateSizesPositionByNewDataIndexes(type, newItems, prevItems);
2052
+ }
2053
+ }
2022
2054
  startSorting(order, sortingFunc, sortingColumns, sortingOrder, ignoreViewportUpdate) {
2023
2055
  if (!this.sortingPromise) {
2024
2056
  // add job before render
@@ -2110,45 +2142,25 @@ class SortingPlugin extends BasePlugin {
2110
2142
  // if no sorting - reset
2111
2143
  if (!Object.keys(sorting || {}).length) {
2112
2144
  for (let type of activeTypes) {
2113
- const storeService = this.providers.data.stores[type];
2114
- // row data
2115
- const source = storeService.store.get('source');
2116
- // row indexes
2117
- const proxyItems = storeService.store.get('proxyItems');
2118
- // row indexes
2119
- const newItemsOrder = Array.from({ length: source.length }, (_, i) => i); // recover indexes range(0, source.length)
2120
- this.providers.dimension.updateSizesPositionByNewDataIndexes(type, newItemsOrder, proxyItems);
2121
- storeService.setData({ proxyItems: newItemsOrder });
2145
+ this.resetSortingForStore(type);
2122
2146
  }
2123
2147
  }
2124
2148
  else {
2125
2149
  for (let type of activeTypes) {
2126
- const storeService = this.providers.data.stores[type];
2127
- // row data
2128
- const source = storeService.store.get('source');
2129
- // row indexes
2130
- const proxyItems = storeService.store.get('proxyItems');
2131
- const sortItems = getSortableRowIndexes(proxyItems, source);
2132
- const sortedItems = sortIndexByItems([...sortItems], source, sortingFunc, sorting, activeSortingColumns, activeSortingOrder);
2133
- const newItemsOrder = mergeSortedRowsWithGroups(proxyItems, source, sortedItems);
2134
- // take row indexes before trim applied and proxy items
2135
- const prevItems = storeService.store.get('items');
2136
- storeService.setData({
2137
- proxyItems: newItemsOrder,
2138
- });
2139
- // take currently visible row indexes
2140
- const newItems = storeService.store.get('items');
2141
- if (!activeIgnoreViewportUpdate) {
2142
- this.providers.dimension
2143
- .updateSizesPositionByNewDataIndexes(type, newItems, prevItems);
2144
- }
2150
+ this.applySortingForStore(type, sorting, sortingFunc, activeSortingColumns, activeSortingOrder, activeIgnoreViewportUpdate);
2145
2151
  }
2146
2152
  }
2147
2153
  // refresh columns to redraw column headers and show correct icon
2148
2154
  column_service.columnTypes.forEach((type) => {
2149
2155
  this.providers.column.dataSources[type].refresh();
2150
2156
  });
2151
- this.emit('aftersortingapply');
2157
+ const afterSortingDetail = {
2158
+ sorting: hasActiveSorting(sorting) ? sorting : undefined,
2159
+ sortingColumns: activeSortingColumns,
2160
+ sortingOrder: activeSortingOrder,
2161
+ types: activeTypes,
2162
+ };
2163
+ this.emit('aftersortingapply', afterSortingDetail);
2152
2164
  }
2153
2165
  }
2154
2166
 
@@ -4,7 +4,7 @@
4
4
  'use strict';
5
5
 
6
6
  var column_service = require('./column.service-BNWNiJW3.js');
7
- var column_drag_plugin = require('./column.drag.plugin-ByDJ7Rk3.js');
7
+ var column_drag_plugin = require('./column.drag.plugin-Cz-T4y3M.js');
8
8
  var headerCellRenderer = require('./header-cell-renderer-DyjOxArm.js');
9
9
  var cellRenderer = require('./cell-renderer-DfUCisis.js');
10
10
  var index$1 = require('./index-DxaSE5uZ.js');
@@ -28,6 +28,7 @@ const REVOGRID_EVENTS = new Map([
28
28
  ['beforesorting', 'beforesorting'],
29
29
  ['beforesourcesortingapply', 'beforesourcesortingapply'],
30
30
  ['beforesortingapply', 'beforesortingapply'],
31
+ ['aftersortingapply', 'aftersortingapply'],
31
32
  ['rowdragstart', 'rowdragstart'],
32
33
  ['headerclick', 'headerclick'],
33
34
  ['beforecellfocus', 'beforecellfocus'],
@@ -10,7 +10,7 @@ require('./theme.service-BgnxGIjK.js');
10
10
  const defineCustomElements = async (win, options) => {
11
11
  if (typeof window === 'undefined') return undefined;
12
12
  await appGlobals.globalScripts();
13
- return index.bootstrapLazy([["revo-grid.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[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);
13
+ return index.bootstrapLazy([["revo-grid.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[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);
14
14
  };
15
15
 
16
16
  exports.setNonce = index.setNonce;
@@ -8,7 +8,7 @@ var column_service = require('./column.service-BNWNiJW3.js');
8
8
  var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
9
9
  var debounce = require('./debounce-CcpHiH2p.js');
10
10
  var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
11
- var column_drag_plugin = require('./column.drag.plugin-ByDJ7Rk3.js');
11
+ var column_drag_plugin = require('./column.drag.plugin-Cz-T4y3M.js');
12
12
  var viewport_store = require('./viewport.store-BscUCiUk.js');
13
13
  var theme_service = require('./theme.service-BgnxGIjK.js');
14
14
  var index$1 = require('./index-DxaSE5uZ.js');
@@ -232,6 +232,10 @@ class DataProvider {
232
232
  }
233
233
  }
234
234
 
235
+ const DEFAULT_VIRTUAL_X = ['rgCol'];
236
+ function isVirtualXDimension(type, disableVirtualX = false, virtualX = DEFAULT_VIRTUAL_X) {
237
+ return !disableVirtualX && virtualX.includes(type);
238
+ }
235
239
  /**
236
240
  * Dimension provider
237
241
  * Stores dimension information and custom sizes
@@ -242,7 +246,7 @@ class DimensionProvider {
242
246
  constructor(viewports, config) {
243
247
  this.viewports = viewports;
244
248
  const sizeChanged = debounce.debounce((k) => config.realSizeChanged(k), dimension_helpers.RESIZE_INTERVAL);
245
- this.stores = column_service.reduce([...column_service.rowTypes, ...column_service.columnTypes], (sources, t) => {
249
+ this.stores = [...column_service.rowTypes, ...column_service.columnTypes].reduce((sources, t) => {
246
250
  sources[t] = new column_drag_plugin.DimensionStore(t);
247
251
  sources[t].store.onChange('realSize', () => sizeChanged(t));
248
252
  return sources;
@@ -318,8 +322,9 @@ class DimensionProvider {
318
322
  * Applies new columns to the dimension provider
319
323
  * @param columns - new columns data
320
324
  * @param disableVirtualX - disable virtual data for X axis
325
+ * @param virtualX - column dimensions that should use virtual data
321
326
  */
322
- applyNewColumns(columns, disableVirtualX, keepOld = false) {
327
+ applyNewColumns(columns, disableVirtualX, keepOld = false, virtualX = DEFAULT_VIRTUAL_X) {
323
328
  // Apply new columns to dimension provider
324
329
  for (let type of column_service.columnTypes) {
325
330
  if (!keepOld) {
@@ -329,7 +334,7 @@ class DimensionProvider {
329
334
  // Get the new columns for the current type
330
335
  const items = columns[type];
331
336
  // Determine if virtual data should be disabled for the current type
332
- const noVirtual = type !== 'rgCol' || disableVirtualX;
337
+ const noVirtual = !isVirtualXDimension(type, disableVirtualX, virtualX);
333
338
  // Set the items count in the dimension provider
334
339
  this.stores[type].setStore({ count: items.length });
335
340
  // Set the custom sizes for the columns
@@ -435,6 +440,9 @@ class ViewportProvider {
435
440
  }
436
441
  }
437
442
 
443
+ function getViewportResizeDimension(colType, dimension) {
444
+ return dimension === 'rgCol' ? colType : dimension;
445
+ }
438
446
  /** Collect Column data */
439
447
  function gatherColumnData(data) {
440
448
  const colDimension = data.dimensions[data.colType].store;
@@ -494,20 +502,20 @@ class ViewportService {
494
502
  colStore,
495
503
  onHeaderresize: e => this.onColumnResize(val, e, colStore),
496
504
  };
497
- if (val === 'rgCol') {
498
- column.onResizeviewport = (e) => {
499
- var _a;
500
- const vpState = {
501
- clientSize: e.detail.size,
502
- };
503
- // virtual size will be handled by dimension provider if disabled
504
- if ((e.detail.dimension === 'rgRow' && !config.disableVirtualY)
505
- || (e.detail.dimension === 'rgCol' && !config.disableVirtualX)) {
506
- vpState.virtualSize = e.detail.size;
507
- }
508
- (_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(e.detail.dimension, vpState);
505
+ column.onResizeviewport = (e) => {
506
+ var _a;
507
+ const vpState = {
508
+ clientSize: e.detail.size,
509
509
  };
510
- }
510
+ const dimension = getViewportResizeDimension(val, e.detail.dimension);
511
+ const isVirtualColumn = column_service.columnTypes.includes(dimension)
512
+ && isVirtualXDimension(dimension, config.disableVirtualX, config.virtualX);
513
+ // Keep virtual dimensions in sync with their viewport size.
514
+ if ((dimension === 'rgRow' && !config.disableVirtualY) || isVirtualColumn) {
515
+ vpState.virtualSize = e.detail.size;
516
+ }
517
+ (_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(dimension, vpState);
518
+ };
511
519
  const colData = gatherColumnData(column);
512
520
  const columnSelectionStore = this.registerCol(colData.position.x, val);
513
521
  // render per each column data collections vertically
@@ -1407,6 +1415,7 @@ const RevoGridComponent = class {
1407
1415
  this.beforesorting = index.createEvent(this, "beforesorting", 7);
1408
1416
  this.beforesourcesortingapply = index.createEvent(this, "beforesourcesortingapply", 7);
1409
1417
  this.beforesortingapply = index.createEvent(this, "beforesortingapply", 7);
1418
+ this.aftersortingapply = index.createEvent(this, "aftersortingapply", 7);
1410
1419
  this.rowdragstart = index.createEvent(this, "rowdragstart", 7);
1411
1420
  this.headerclick = index.createEvent(this, "headerclick", 7);
1412
1421
  this.beforecellfocus = index.createEvent(this, "beforecellfocus", 7);
@@ -1556,6 +1565,12 @@ const RevoGridComponent = class {
1556
1565
  * Can be used for initial rendering performance improvement.
1557
1566
  */
1558
1567
  this.disableVirtualX = false;
1568
+ /**
1569
+ * Column dimensions that use X axis virtual rendering.
1570
+ * Defaults to regular columns only to preserve pinned column behavior.
1571
+ * Set to `['rgCol', 'colPinStart', 'colPinEnd']` to virtualize all column areas.
1572
+ */
1573
+ this.virtualX = ['rgCol'];
1559
1574
  /**
1560
1575
  * Disable lazy rendering mode for the `Y axis`.
1561
1576
  * Use when not many rows present and you don't need rerenader cells during scroll.
@@ -2007,7 +2022,7 @@ const RevoGridComponent = class {
2007
2022
  if (beforeSetEvent.defaultPrevented) {
2008
2023
  return;
2009
2024
  }
2010
- this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init);
2025
+ this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init, this.virtualX);
2011
2026
  const beforeApplyEvent = this.beforecolumnapplied.emit(columnGather);
2012
2027
  if (beforeApplyEvent.defaultPrevented) {
2013
2028
  return;
@@ -2083,12 +2098,18 @@ const RevoGridComponent = class {
2083
2098
  };
2084
2099
  this.viewport.setFocus(colType, pending.rowType, cell, cell);
2085
2100
  }
2086
- disableVirtualXChanged(newVal = false, prevVal = false) {
2101
+ refreshColumnsOnConfigChange(newVal, prevVal) {
2087
2102
  if (newVal === prevVal) {
2088
2103
  return;
2089
2104
  }
2090
2105
  this.columnChanged(this.columns);
2091
2106
  }
2107
+ disableVirtualXChanged(newVal = false, prevVal = false) {
2108
+ this.refreshColumnsOnConfigChange(newVal, prevVal);
2109
+ }
2110
+ virtualXChanged(newVal = ['rgCol'], prevVal = ['rgCol']) {
2111
+ this.refreshColumnsOnConfigChange(newVal, prevVal);
2112
+ }
2092
2113
  rowSizeChanged(s) {
2093
2114
  if (!this.dimensionProvider) {
2094
2115
  return;
@@ -2414,6 +2435,7 @@ const RevoGridComponent = class {
2414
2435
  selectionStoreConnector: this.selectionStoreConnector,
2415
2436
  noHorizontalScrollTransfer: this.noHorizontalScrollTransfer,
2416
2437
  disableVirtualX: this.disableVirtualX,
2438
+ virtualX: this.virtualX,
2417
2439
  disableVirtualY: this.disableVirtualY,
2418
2440
  resize: c => this.aftercolumnresize.emit(c),
2419
2441
  }, contentHeight);
@@ -2488,6 +2510,9 @@ const RevoGridComponent = class {
2488
2510
  "disableVirtualX": [{
2489
2511
  "disableVirtualXChanged": 0
2490
2512
  }],
2513
+ "virtualX": [{
2514
+ "virtualXChanged": 0
2515
+ }],
2491
2516
  "rowSize": [{
2492
2517
  "rowSizeChanged": 0
2493
2518
  }],
@@ -50,7 +50,7 @@ var patchCloneNodeFix = (HTMLElementPrototype) => {
50
50
 
51
51
  patchBrowser().then(async (options) => {
52
52
  await appGlobals.globalScripts();
53
- return index.bootstrapLazy([["revo-grid.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[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);
53
+ return index.bootstrapLazy([["revo-grid.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[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);
54
54
  });
55
55
 
56
56
  exports.setNonce = index.setNonce;
@@ -149,7 +149,7 @@ const Clipboard = class {
149
149
  }
150
150
  };
151
151
 
152
- const revogrEditStyleCss = () => `revogr-edit{display:block;position:absolute;background-color:#fff}revogr-edit input{height:100%;width:100%;box-sizing:border-box}revogr-edit revo-dropdown{height:100%}revogr-edit revo-dropdown.shrink fieldset legend>span{display:none}`;
152
+ const revogrEditStyleCss = () => `revogr-edit{display:block;position:absolute;background-color:var(--revo-grid-background, #fff)}revogr-edit input{height:100%;width:100%;box-sizing:border-box;background-color:var(--revo-grid-background, transparent)}revogr-edit revo-dropdown{height:100%}revogr-edit revo-dropdown.shrink fieldset legend>span{display:none}`;
153
153
 
154
154
  const RevoEdit = class {
155
155
  constructor(hostRef) {
@@ -1,12 +1,13 @@
1
1
  revogr-edit {
2
2
  display: block;
3
3
  position: absolute;
4
- background-color: #fff;
4
+ background-color: var(--revo-grid-background, #fff);
5
5
  }
6
6
  revogr-edit input {
7
7
  height: 100%;
8
8
  width: 100%;
9
9
  box-sizing: border-box;
10
+ background-color: var(--revo-grid-background, transparent);
10
11
  }
11
12
  revogr-edit revo-dropdown {
12
13
  height: 100%;
@@ -170,6 +170,12 @@ export class RevoGridComponent {
170
170
  * Can be used for initial rendering performance improvement.
171
171
  */
172
172
  this.disableVirtualX = false;
173
+ /**
174
+ * Column dimensions that use X axis virtual rendering.
175
+ * Defaults to regular columns only to preserve pinned column behavior.
176
+ * Set to `['rgCol', 'colPinStart', 'colPinEnd']` to virtualize all column areas.
177
+ */
178
+ this.virtualX = ['rgCol'];
173
179
  /**
174
180
  * Disable lazy rendering mode for the `Y axis`.
175
181
  * Use when not many rows present and you don't need rerenader cells during scroll.
@@ -621,7 +627,7 @@ export class RevoGridComponent {
621
627
  if (beforeSetEvent.defaultPrevented) {
622
628
  return;
623
629
  }
624
- this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init);
630
+ this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init, this.virtualX);
625
631
  const beforeApplyEvent = this.beforecolumnapplied.emit(columnGather);
626
632
  if (beforeApplyEvent.defaultPrevented) {
627
633
  return;
@@ -697,12 +703,18 @@ export class RevoGridComponent {
697
703
  };
698
704
  this.viewport.setFocus(colType, pending.rowType, cell, cell);
699
705
  }
700
- disableVirtualXChanged(newVal = false, prevVal = false) {
706
+ refreshColumnsOnConfigChange(newVal, prevVal) {
701
707
  if (newVal === prevVal) {
702
708
  return;
703
709
  }
704
710
  this.columnChanged(this.columns);
705
711
  }
712
+ disableVirtualXChanged(newVal = false, prevVal = false) {
713
+ this.refreshColumnsOnConfigChange(newVal, prevVal);
714
+ }
715
+ virtualXChanged(newVal = ['rgCol'], prevVal = ['rgCol']) {
716
+ this.refreshColumnsOnConfigChange(newVal, prevVal);
717
+ }
706
718
  rowSizeChanged(s) {
707
719
  if (!this.dimensionProvider) {
708
720
  return;
@@ -1028,6 +1040,7 @@ export class RevoGridComponent {
1028
1040
  selectionStoreConnector: this.selectionStoreConnector,
1029
1041
  noHorizontalScrollTransfer: this.noHorizontalScrollTransfer,
1030
1042
  disableVirtualX: this.disableVirtualX,
1043
+ virtualX: this.virtualX,
1031
1044
  disableVirtualY: this.disableVirtualY,
1032
1045
  resize: c => this.aftercolumnresize.emit(c),
1033
1046
  }, contentHeight);
@@ -1844,6 +1857,31 @@ export class RevoGridComponent {
1844
1857
  "attribute": "disable-virtual-x",
1845
1858
  "defaultValue": "false"
1846
1859
  },
1860
+ "virtualX": {
1861
+ "type": "unknown",
1862
+ "mutable": false,
1863
+ "complexType": {
1864
+ "original": "DimensionCols[]",
1865
+ "resolved": "DimensionCols[]",
1866
+ "references": {
1867
+ "DimensionCols": {
1868
+ "location": "import",
1869
+ "path": "@type",
1870
+ "id": "src/types/index.ts::DimensionCols",
1871
+ "referenceLocation": "DimensionCols"
1872
+ }
1873
+ }
1874
+ },
1875
+ "required": false,
1876
+ "optional": false,
1877
+ "docs": {
1878
+ "tags": [],
1879
+ "text": "Column dimensions that use X axis virtual rendering.\nDefaults to regular columns only to preserve pinned column behavior.\nSet to `['rgCol', 'colPinStart', 'colPinEnd']` to virtualize all column areas."
1880
+ },
1881
+ "getter": false,
1882
+ "setter": false,
1883
+ "defaultValue": "['rgCol']"
1884
+ },
1847
1885
  "disableVirtualY": {
1848
1886
  "type": "boolean",
1849
1887
  "mutable": false,
@@ -2248,6 +2286,28 @@ export class RevoGridComponent {
2248
2286
  }
2249
2287
  }
2250
2288
  }
2289
+ }, {
2290
+ "method": "aftersortingapply",
2291
+ "name": "aftersortingapply",
2292
+ "bubbles": true,
2293
+ "cancelable": true,
2294
+ "composed": true,
2295
+ "docs": {
2296
+ "tags": [],
2297
+ "text": "By `SortingPlugin`\n<br>Triggered after sorting has been applied and completed.\n<br>Provides final sorting state and sorting column metadata when available."
2298
+ },
2299
+ "complexType": {
2300
+ "original": "AfterSortingApplyEvent",
2301
+ "resolved": "{ sorting?: SortingOrder | undefined; sortingColumns?: SortingColumnMap | undefined; sortingOrder?: SortingColumnOrder | undefined; types: DimensionRows[]; }",
2302
+ "references": {
2303
+ "AfterSortingApplyEvent": {
2304
+ "location": "import",
2305
+ "path": "../../plugins",
2306
+ "id": "src/plugins/index.ts::AfterSortingApplyEvent",
2307
+ "referenceLocation": "AfterSortingApplyEvent"
2308
+ }
2309
+ }
2310
+ }
2251
2311
  }, {
2252
2312
  "method": "rowdragstart",
2253
2313
  "name": "rowdragstart",
@@ -3663,6 +3723,9 @@ export class RevoGridComponent {
3663
3723
  }, {
3664
3724
  "propName": "disableVirtualX",
3665
3725
  "methodName": "disableVirtualXChanged"
3726
+ }, {
3727
+ "propName": "virtualX",
3728
+ "methodName": "virtualXChanged"
3666
3729
  }, {
3667
3730
  "propName": "rowSize",
3668
3731
  "methodName": "rowSizeChanged"
@@ -1,8 +1,12 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
+ import { isVirtualXDimension } from "../../services/dimension.provider";
4
5
  import { columnTypes, getSourceItem, getVisibleSourceItem, rowTypes } from "../../store/index";
5
6
  import { CONTENT_SLOT, FOOTER_SLOT, HEADER_SLOT, viewportDataPartition } from "./viewport.helpers";
7
+ export function getViewportResizeDimension(colType, dimension) {
8
+ return dimension === 'rgCol' ? colType : dimension;
9
+ }
6
10
  /** Collect Column data */
7
11
  function gatherColumnData(data) {
8
12
  const colDimension = data.dimensions[data.colType].store;
@@ -62,20 +66,20 @@ export default class ViewportService {
62
66
  colStore,
63
67
  onHeaderresize: e => this.onColumnResize(val, e, colStore),
64
68
  };
65
- if (val === 'rgCol') {
66
- column.onResizeviewport = (e) => {
67
- var _a;
68
- const vpState = {
69
- clientSize: e.detail.size,
70
- };
71
- // virtual size will be handled by dimension provider if disabled
72
- if ((e.detail.dimension === 'rgRow' && !config.disableVirtualY)
73
- || (e.detail.dimension === 'rgCol' && !config.disableVirtualX)) {
74
- vpState.virtualSize = e.detail.size;
75
- }
76
- (_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(e.detail.dimension, vpState);
69
+ column.onResizeviewport = (e) => {
70
+ var _a;
71
+ const vpState = {
72
+ clientSize: e.detail.size,
77
73
  };
78
- }
74
+ const dimension = getViewportResizeDimension(val, e.detail.dimension);
75
+ const isVirtualColumn = columnTypes.includes(dimension)
76
+ && isVirtualXDimension(dimension, config.disableVirtualX, config.virtualX);
77
+ // Keep virtual dimensions in sync with their viewport size.
78
+ if ((dimension === 'rgRow' && !config.disableVirtualY) || isVirtualColumn) {
79
+ vpState.virtualSize = e.detail.size;
80
+ }
81
+ (_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(dimension, vpState);
82
+ };
79
83
  const colData = gatherColumnData(column);
80
84
  const columnSelectionStore = this.registerCol(colData.position.x, val);
81
85
  // render per each column data collections vertically
@@ -55,7 +55,7 @@ export class BasePlugin {
55
55
  },
56
56
  });
57
57
  if (immediate) {
58
- callback(nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.value);
58
+ callback((nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.get) ? nativeValueDesc.get.call(this.revogrid) : nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.value);
59
59
  }
60
60
  }
61
61
  /**