@revolist/revogrid 4.22.1 → 4.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{cell-renderer-BQdEGQXP.js → cell-renderer-Dcz022q7.js} +9 -3
- package/dist/cjs/{column.drag.plugin-RDjQhKCH.js → column.drag.plugin-DJueWxN_.js} +391 -256
- package/dist/cjs/{column.service-DXYMehqK.js → column.service-C1Qvcf5l.js} +10 -1
- package/dist/cjs/{dimension.helpers-CiiNnlLa.js → dimension.helpers-B9HgANnM.js} +14 -145
- package/dist/cjs/{edit.utils-CecCfA4E.js → edit.utils-pKeiYFLJ.js} +1 -1
- package/dist/cjs/{header-cell-renderer-DGyBrK8I.js → header-cell-renderer-QrcXXSkF.js} +1 -1
- package/dist/cjs/index-DxaSE5uZ.js +136 -0
- package/dist/cjs/index.cjs.js +37 -32
- package/dist/cjs/revo-grid.cjs.entry.js +124 -18
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +43 -25
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +10 -8
- package/dist/cjs/revogr-data_4.cjs.entry.js +74 -32
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +2 -1
- package/dist/cjs/{text-editor-DnLZW1a-.js → text-editor-B4W-m-r-.js} +3 -3
- package/dist/cjs/{throttle-CfgQFkfR.js → throttle-BCwEuJJq.js} +59 -24
- package/dist/cjs/viewport.helpers-BND76K2j.js +140 -0
- package/dist/cjs/{viewport.store-q6YdR9mg.js → viewport.store-BlKQ4x9H.js} +16 -16
- package/dist/collection/components/data/revogr-data.js +5 -3
- package/dist/collection/components/header/header-group-renderer.js +1 -1
- package/dist/collection/components/header/header-renderer.js +1 -1
- package/dist/collection/components/header/revogr-header-style.css +13 -3
- package/dist/collection/components/header/revogr-header.js +53 -17
- package/dist/collection/components/order/order-row.service.js +6 -5
- package/dist/collection/components/overlay/keyboard.service.js +23 -1
- package/dist/collection/components/overlay/selection.utils.js +8 -6
- package/dist/collection/components/revoGrid/revo-grid.js +69 -5
- package/dist/collection/components/revoGrid/viewport.service.js +2 -1
- package/dist/collection/components/scroll/revogr-viewport-scroll.js +10 -6
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js +4 -10
- package/dist/collection/plugins/filter/filter.panel.js +2 -1
- package/dist/collection/plugins/filter/filter.plugin.js +11 -4
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +25 -1
- package/dist/collection/plugins/groupingRow/grouping.service.js +9 -0
- package/dist/collection/plugins/moveColumn/column.drag.plugin.js +4 -4
- package/dist/collection/plugins/sorting/sorting.func.js +173 -15
- package/dist/collection/plugins/sorting/sorting.plugin.js +167 -84
- package/dist/collection/plugins/sorting/sorting.sign.js +7 -1
- package/dist/collection/serve/controller.js +98 -37
- package/dist/collection/serve/data.js +273 -144
- package/dist/collection/services/dimension.provider.js +16 -1
- package/dist/collection/services/local.scroll.service.js +59 -24
- package/dist/collection/services/scroll.dimension.helpers.js +83 -0
- package/dist/collection/services/selection.store.connector.js +30 -4
- package/dist/collection/store/dimension/dimension.recalculate.plugin.js +22 -9
- package/dist/collection/store/dimension/dimension.store.js +4 -2
- package/dist/collection/store/vp/viewport.helpers.js +9 -0
- package/dist/collection/store/vp/viewport.store.js +5 -16
- package/dist/collection/utils/store.utils.js +3 -3
- package/dist/{revo-grid/cell-renderer-CALsEsnh.js → esm/cell-renderer-BtN-NGCk.js} +9 -3
- package/dist/esm/{column.drag.plugin-Dy5ztusn.js → column.drag.plugin-DCZW62Uc.js} +388 -255
- package/dist/esm/{column.service-CCvAi5l4.js → column.service-CC_SD8W3.js} +10 -1
- package/dist/{revo-grid/debounce-BfO9dz9v.js → esm/debounce-PCRWZliA.js} +1 -1
- package/dist/{revo-grid/dimension.helpers-DmIvjIa7.js → esm/dimension.helpers-CGKwSvw6.js} +7 -128
- package/dist/esm/{edit.utils-DYN6XZh8.js → edit.utils-Dnnbd0xG.js} +1 -1
- package/dist/{revo-grid/header-cell-renderer-DU8wKAbg.js → esm/header-cell-renderer-BsvUQ8GS.js} +1 -1
- package/dist/esm/index-Db3qZoW5.js +127 -0
- package/dist/esm/index.js +11 -10
- package/dist/esm/revo-grid.entry.js +123 -17
- package/dist/esm/revogr-attribution_7.entry.js +42 -24
- package/dist/esm/revogr-clipboard_3.entry.js +11 -9
- package/dist/esm/revogr-data_4.entry.js +75 -33
- package/dist/esm/revogr-filter-panel.entry.js +3 -2
- package/dist/esm/{text-editor-DpCnd6Fq.js → text-editor-C3RUSwH5.js} +2 -2
- package/dist/esm/{throttle-ERvyruXb.js → throttle-CaUDyxyU.js} +60 -25
- package/dist/esm/viewport.helpers-CoCAvmZs.js +133 -0
- package/dist/{revo-grid/viewport.store-CFjDW-3l.js → esm/viewport.store-COAfzAyu.js} +15 -17
- package/dist/{esm/cell-renderer-CALsEsnh.js → revo-grid/cell-renderer-BtN-NGCk.js} +9 -3
- package/dist/revo-grid/{column.drag.plugin-Dy5ztusn.js → column.drag.plugin-DCZW62Uc.js} +388 -255
- package/dist/revo-grid/{column.service-CCvAi5l4.js → column.service-CC_SD8W3.js} +10 -1
- package/dist/{esm/debounce-BfO9dz9v.js → revo-grid/debounce-PCRWZliA.js} +1 -1
- package/dist/{esm/dimension.helpers-DmIvjIa7.js → revo-grid/dimension.helpers-CGKwSvw6.js} +7 -128
- package/dist/revo-grid/{edit.utils-DYN6XZh8.js → edit.utils-Dnnbd0xG.js} +1 -1
- package/dist/{esm/header-cell-renderer-DU8wKAbg.js → revo-grid/header-cell-renderer-BsvUQ8GS.js} +1 -1
- package/dist/revo-grid/index-Db3qZoW5.js +127 -0
- package/dist/revo-grid/index.esm.js +11 -10
- package/dist/revo-grid/revo-grid.entry.js +123 -17
- package/dist/revo-grid/revogr-attribution_7.entry.js +42 -24
- package/dist/revo-grid/revogr-clipboard_3.entry.js +11 -9
- package/dist/revo-grid/revogr-data_4.entry.js +75 -33
- package/dist/revo-grid/revogr-filter-panel.entry.js +3 -2
- package/dist/revo-grid/{text-editor-DpCnd6Fq.js → text-editor-C3RUSwH5.js} +2 -2
- package/dist/revo-grid/{throttle-ERvyruXb.js → throttle-CaUDyxyU.js} +60 -25
- package/dist/revo-grid/viewport.helpers-CoCAvmZs.js +133 -0
- package/dist/{esm/viewport.store-CFjDW-3l.js → revo-grid/viewport.store-COAfzAyu.js} +15 -17
- package/dist/types/components/header/header-group-renderer.d.ts +2 -0
- package/dist/types/components/header/header-renderer.d.ts +1 -0
- package/dist/types/components/header/revogr-header.d.ts +2 -0
- package/dist/types/components/overlay/keyboard.service.d.ts +5 -0
- package/dist/types/components/revoGrid/revo-grid.d.ts +12 -0
- package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +8 -0
- package/dist/types/plugins/sorting/sorting.func.d.ts +25 -2
- package/dist/types/plugins/sorting/sorting.plugin.d.ts +84 -9
- package/dist/types/plugins/sorting/sorting.sign.d.ts +5 -1
- package/dist/types/plugins/sorting/sorting.types.d.ts +46 -1
- package/dist/types/services/local.scroll.service.d.ts +10 -2
- package/dist/types/services/scroll.dimension.helpers.d.ts +20 -0
- package/dist/types/services/selection.store.connector.d.ts +6 -0
- package/dist/types/store/vp/viewport.helpers.d.ts +2 -0
- package/dist/types/types/interfaces.d.ts +11 -0
- package/dist/types/types/selection.d.ts +13 -0
- package/hydrate/index.js +795 -383
- package/hydrate/index.mjs +795 -383
- package/package.json +1 -1
- package/standalone/column.service.js +1 -1
- package/standalone/data.store.js +1 -1
- package/standalone/debounce.js +1 -1
- package/standalone/dimension.helpers.js +1 -1
- package/standalone/index.js +1 -1
- package/standalone/local.scroll.timer.js +1 -1
- package/standalone/revo-grid.js +1 -1
- package/standalone/revogr-data2.js +1 -1
- package/standalone/revogr-filter-panel.js +1 -1
- package/standalone/revogr-header2.js +1 -1
- package/standalone/revogr-order-editor2.js +1 -1
- package/standalone/revogr-overlay-selection2.js +1 -1
- package/standalone/revogr-row-headers.js +1 -1
- package/standalone/revogr-row-headers2.js +1 -1
- package/standalone/revogr-scroll-virtual2.js +1 -1
- package/standalone/revogr-viewport-scroll2.js +1 -1
- package/standalone/selection.utils.js +1 -1
- package/standalone/throttle.js +1 -1
- package/standalone/toNumber.js +1 -1
- package/dist/cjs/viewport.helpers-BAovztDd.js +0 -58
- package/dist/esm/viewport.helpers-VXhsJZtn.js +0 -52
- package/dist/revo-grid/viewport.helpers-VXhsJZtn.js +0 -52
|
@@ -4,16 +4,17 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index = require('./index-Dq8Xzj5l.js');
|
|
7
|
-
var column_service = require('./column.service-
|
|
8
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
7
|
+
var column_service = require('./column.service-C1Qvcf5l.js');
|
|
8
|
+
var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
|
|
9
9
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
10
|
-
var
|
|
11
|
-
var viewport_store = require('./viewport.store-
|
|
10
|
+
var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
|
|
11
|
+
var viewport_store = require('./viewport.store-BlKQ4x9H.js');
|
|
12
|
+
var column_drag_plugin = require('./column.drag.plugin-DJueWxN_.js');
|
|
12
13
|
var theme_service = require('./theme.service-BgnxGIjK.js');
|
|
13
|
-
var
|
|
14
|
+
var index$1 = require('./index-DxaSE5uZ.js');
|
|
14
15
|
var events = require('./events-DeLDyZlb.js');
|
|
15
16
|
require('./filter.button-w6LWnyhi.js');
|
|
16
|
-
require('./header-cell-renderer-
|
|
17
|
+
require('./header-cell-renderer-QrcXXSkF.js');
|
|
17
18
|
|
|
18
19
|
class ColumnDataProvider {
|
|
19
20
|
get stores() {
|
|
@@ -365,6 +366,20 @@ class DimensionProvider {
|
|
|
365
366
|
}
|
|
366
367
|
setViewPortCoordinate({ type, coordinate = this.viewports.stores[type].lastCoordinate, force = false, }) {
|
|
367
368
|
const dimension = this.stores[type].getCurrentState();
|
|
369
|
+
const viewport = this.viewports.stores[type].store;
|
|
370
|
+
const clientSize = viewport.get('clientSize');
|
|
371
|
+
const viewportSize = viewport.get('virtualSize');
|
|
372
|
+
const scrollDimension = viewport_helpers.getScrollDimension({
|
|
373
|
+
contentSize: dimension.realSize,
|
|
374
|
+
clientSize,
|
|
375
|
+
virtualSize: viewportSize,
|
|
376
|
+
});
|
|
377
|
+
const renderCoordinate = viewport_store.clampViewportCoordinate(coordinate, dimension, viewportSize);
|
|
378
|
+
const renderOffset = clientSize && viewportSize
|
|
379
|
+
? scrollDimension.getRenderOffset(renderCoordinate)
|
|
380
|
+
: 0;
|
|
381
|
+
this.stores[type].setStore({ renderOffset });
|
|
382
|
+
this.viewports.stores[type].setViewport({ renderOffset });
|
|
368
383
|
this.viewports.stores[type].setViewPortCoordinate(coordinate, dimension, force);
|
|
369
384
|
}
|
|
370
385
|
getViewPortPos(e) {
|
|
@@ -513,7 +528,8 @@ class ViewportService {
|
|
|
513
528
|
(_a = this.config.dimensionProvider) === null || _a === void 0 ? void 0 : _a.setCustomSizes(type, detail, true);
|
|
514
529
|
// set resize event
|
|
515
530
|
const changedItems = {};
|
|
516
|
-
for (const
|
|
531
|
+
for (const i of Object.keys(detail || {})) {
|
|
532
|
+
const size = detail[i];
|
|
517
533
|
const virtualIndex = parseInt(i, 10);
|
|
518
534
|
const item = dimension_helpers.getSourceItem(store, virtualIndex);
|
|
519
535
|
if (item) {
|
|
@@ -768,13 +784,11 @@ class SelectionStoreConnector {
|
|
|
768
784
|
return (_a = this.focusedStore) === null || _a === void 0 ? void 0 : _a.entity.store.get('range');
|
|
769
785
|
}
|
|
770
786
|
registerColumn(x, type) {
|
|
787
|
+
this.updateColumnTypeMapping(x, type);
|
|
771
788
|
if (this.columnStores[x]) {
|
|
772
789
|
return this.columnStores[x];
|
|
773
790
|
}
|
|
774
791
|
this.columnStores[x] = new column_drag_plugin.SelectionStore();
|
|
775
|
-
// build cross-linking type to position
|
|
776
|
-
this.storesByType[type] = x;
|
|
777
|
-
this.storesXToType[x] = type;
|
|
778
792
|
return this.columnStores[x];
|
|
779
793
|
}
|
|
780
794
|
registerRow(y, type) {
|
|
@@ -916,7 +930,10 @@ class SelectionStoreConnector {
|
|
|
916
930
|
const nextItem = column_service.nextCell(focus, lastCell);
|
|
917
931
|
let nextStore;
|
|
918
932
|
if (nextItem) {
|
|
919
|
-
Object.
|
|
933
|
+
Object.keys(nextItem).forEach((t) => {
|
|
934
|
+
var _a;
|
|
935
|
+
const type = t;
|
|
936
|
+
const nextItemCoord = (_a = nextItem[type]) !== null && _a !== void 0 ? _a : 0;
|
|
920
937
|
let stores;
|
|
921
938
|
switch (type) {
|
|
922
939
|
case 'x':
|
|
@@ -992,6 +1009,31 @@ class SelectionStoreConnector {
|
|
|
992
1009
|
}
|
|
993
1010
|
return stores;
|
|
994
1011
|
}
|
|
1012
|
+
/**
|
|
1013
|
+
* Keep column viewport positions and types in sync across pin/unpin rerenders.
|
|
1014
|
+
* Regression case: when a selected rgCol cell was pinned left, colPinStart
|
|
1015
|
+
* could take over x=0 and render the stale rgCol focus store in the pinned area.
|
|
1016
|
+
*/
|
|
1017
|
+
updateColumnTypeMapping(x, type) {
|
|
1018
|
+
const previousType = this.storesXToType[x];
|
|
1019
|
+
const previousX = this.storesByType[type];
|
|
1020
|
+
let shouldClearFocus = false;
|
|
1021
|
+
this.storesByType[type] = x;
|
|
1022
|
+
this.storesXToType[x] = type;
|
|
1023
|
+
if (previousType && previousType !== type) {
|
|
1024
|
+
shouldClearFocus = true;
|
|
1025
|
+
if (this.storesByType[previousType] === x) {
|
|
1026
|
+
delete this.storesByType[previousType];
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
if (typeof previousX === 'number' && previousX !== x && this.storesXToType[previousX] === type) {
|
|
1030
|
+
delete this.storesXToType[previousX];
|
|
1031
|
+
shouldClearFocus = true;
|
|
1032
|
+
}
|
|
1033
|
+
if (shouldClearFocus) {
|
|
1034
|
+
this.clearAll();
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
995
1037
|
}
|
|
996
1038
|
|
|
997
1039
|
/**
|
|
@@ -1663,7 +1705,7 @@ const RevoGridComponent = class {
|
|
|
1663
1705
|
if (!rgCol) {
|
|
1664
1706
|
return;
|
|
1665
1707
|
}
|
|
1666
|
-
await
|
|
1708
|
+
await index$1.timeout();
|
|
1667
1709
|
const colGroup = rgCol.pin || 'rgCol';
|
|
1668
1710
|
if (!this.columnProvider) {
|
|
1669
1711
|
throw new Error('Not connected');
|
|
@@ -1875,7 +1917,7 @@ const RevoGridComponent = class {
|
|
|
1875
1917
|
async onCellEdit(e) {
|
|
1876
1918
|
var _a;
|
|
1877
1919
|
const { defaultPrevented, detail } = this.beforeedit.emit(e.detail);
|
|
1878
|
-
await
|
|
1920
|
+
await index$1.timeout();
|
|
1879
1921
|
// apply data
|
|
1880
1922
|
if (!defaultPrevented) {
|
|
1881
1923
|
(_a = this.dataProvider) === null || _a === void 0 ? void 0 : _a.setCellData(detail);
|
|
@@ -1941,6 +1983,7 @@ const RevoGridComponent = class {
|
|
|
1941
1983
|
if (!this.dimensionProvider || !this.columnProvider) {
|
|
1942
1984
|
return;
|
|
1943
1985
|
}
|
|
1986
|
+
const focusToRestore = init ? undefined : this.getColumnFocusRestore();
|
|
1944
1987
|
const beforeGatherEvent = this.beforecolumnsgather.emit({
|
|
1945
1988
|
columns: [...newVal],
|
|
1946
1989
|
});
|
|
@@ -1958,14 +2001,76 @@ const RevoGridComponent = class {
|
|
|
1958
2001
|
return;
|
|
1959
2002
|
}
|
|
1960
2003
|
const columns = this.columnProvider.setColumns(beforeApplyEvent.detail);
|
|
2004
|
+
if (focusToRestore) {
|
|
2005
|
+
this.pendingColumnFocusRestore = focusToRestore;
|
|
2006
|
+
}
|
|
2007
|
+
const order = {};
|
|
2008
|
+
for (const prop of Object.keys(beforeApplyEvent.detail.sort)) {
|
|
2009
|
+
order[prop] = beforeApplyEvent.detail.sort[prop].order;
|
|
2010
|
+
}
|
|
1961
2011
|
this.aftercolumnsset.emit({
|
|
1962
2012
|
columns,
|
|
1963
|
-
order
|
|
1964
|
-
acc[prop] = column.order;
|
|
1965
|
-
return acc;
|
|
1966
|
-
}, {}),
|
|
2013
|
+
order,
|
|
1967
2014
|
});
|
|
1968
2015
|
}
|
|
2016
|
+
/**
|
|
2017
|
+
* Capture logical focus before columns are repartitioned by pin state.
|
|
2018
|
+
* Regression case: selecting a regular cell, then pinning that column left,
|
|
2019
|
+
* used to let the new pinned viewport reuse the old rgCol selection store.
|
|
2020
|
+
*/
|
|
2021
|
+
getColumnFocusRestore() {
|
|
2022
|
+
var _a, _b, _c, _d;
|
|
2023
|
+
const focused = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getFocused();
|
|
2024
|
+
const prevStoreX = (_c = (_b = this.selectionStoreConnector) === null || _b === void 0 ? void 0 : _b.focusedStore) === null || _c === void 0 ? void 0 : _c.position.x;
|
|
2025
|
+
const prop = (_d = focused === null || focused === void 0 ? void 0 : focused.column) === null || _d === void 0 ? void 0 : _d.prop;
|
|
2026
|
+
if (!focused || prop === undefined || prevStoreX === undefined) {
|
|
2027
|
+
return;
|
|
2028
|
+
}
|
|
2029
|
+
return {
|
|
2030
|
+
prop,
|
|
2031
|
+
colType: focused.colType,
|
|
2032
|
+
colIndex: focused.cell.x,
|
|
2033
|
+
prevStoreX,
|
|
2034
|
+
rowType: focused.rowType,
|
|
2035
|
+
rowIndex: focused.cell.y,
|
|
2036
|
+
};
|
|
2037
|
+
}
|
|
2038
|
+
/**
|
|
2039
|
+
* Reapply focus by column prop after render, once pinning has moved the
|
|
2040
|
+
* column to its new viewport and virtual index.
|
|
2041
|
+
*/
|
|
2042
|
+
restoreColumnFocusAfterRender() {
|
|
2043
|
+
var _a, _b, _c, _d;
|
|
2044
|
+
const pending = this.pendingColumnFocusRestore;
|
|
2045
|
+
if (!pending) {
|
|
2046
|
+
return;
|
|
2047
|
+
}
|
|
2048
|
+
this.pendingColumnFocusRestore = undefined;
|
|
2049
|
+
if (!this.viewport || !this.columnProvider) {
|
|
2050
|
+
return;
|
|
2051
|
+
}
|
|
2052
|
+
const column = (_b = (_a = this.columnProvider.getColumnByProp(pending.prop)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : column_service.getColumnByProp(this.columns, pending.prop);
|
|
2053
|
+
if (!column) {
|
|
2054
|
+
return;
|
|
2055
|
+
}
|
|
2056
|
+
const colType = column.pin || 'rgCol';
|
|
2057
|
+
const columnIndex = this.columnProvider.getColumnIndexByProp(pending.prop, colType);
|
|
2058
|
+
if (columnIndex < 0) {
|
|
2059
|
+
return;
|
|
2060
|
+
}
|
|
2061
|
+
// Header-only column refreshes should not collapse an existing range.
|
|
2062
|
+
// Replay focus only when pin/unpin or repartitioning moved the logical column.
|
|
2063
|
+
if (colType === pending.colType &&
|
|
2064
|
+
columnIndex === pending.colIndex &&
|
|
2065
|
+
pending.prevStoreX === ((_d = (_c = this.selectionStoreConnector) === null || _c === void 0 ? void 0 : _c.focusedStore) === null || _d === void 0 ? void 0 : _d.position.x)) {
|
|
2066
|
+
return;
|
|
2067
|
+
}
|
|
2068
|
+
const cell = {
|
|
2069
|
+
x: columnIndex,
|
|
2070
|
+
y: pending.rowIndex,
|
|
2071
|
+
};
|
|
2072
|
+
this.viewport.setFocus(colType, pending.rowType, cell, cell);
|
|
2073
|
+
}
|
|
1969
2074
|
disableVirtualXChanged(newVal = false, prevVal = false) {
|
|
1970
2075
|
if (newVal === prevVal) {
|
|
1971
2076
|
return;
|
|
@@ -2252,7 +2357,7 @@ const RevoGridComponent = class {
|
|
|
2252
2357
|
if (Object.keys((_a = this.trimmedRows) !== null && _a !== void 0 ? _a : {}).length > 0) {
|
|
2253
2358
|
this.trimmedRowsChanged(this.trimmedRows);
|
|
2254
2359
|
}
|
|
2255
|
-
this.rowDefChanged(this.rowDefinitions);
|
|
2360
|
+
this.rowDefChanged(this.rowDefinitions, undefined, undefined, false);
|
|
2256
2361
|
// init grouping
|
|
2257
2362
|
if (this.grouping && Object.keys(this.grouping).length > 0) {
|
|
2258
2363
|
this.groupingChanged(this.grouping);
|
|
@@ -2278,6 +2383,7 @@ const RevoGridComponent = class {
|
|
|
2278
2383
|
return Promise.all(this.jobsBeforeRender);
|
|
2279
2384
|
}
|
|
2280
2385
|
componentDidRender() {
|
|
2386
|
+
this.restoreColumnFocusAfterRender();
|
|
2281
2387
|
this.aftergridrender.emit();
|
|
2282
2388
|
}
|
|
2283
2389
|
render() {
|
|
@@ -4,14 +4,15 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index = require('./index-Dq8Xzj5l.js');
|
|
7
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
7
|
+
var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
|
|
8
8
|
var events = require('./events-DeLDyZlb.js');
|
|
9
|
-
var column_service = require('./column.service-
|
|
10
|
-
var edit_utils = require('./edit.utils-
|
|
9
|
+
var column_service = require('./column.service-C1Qvcf5l.js');
|
|
10
|
+
var edit_utils = require('./edit.utils-pKeiYFLJ.js');
|
|
11
|
+
var index$1 = require('./index-DxaSE5uZ.js');
|
|
11
12
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
12
|
-
var viewport_store = require('./viewport.store-
|
|
13
|
-
var viewport_helpers = require('./viewport.helpers-
|
|
14
|
-
var throttle = require('./throttle-
|
|
13
|
+
var viewport_store = require('./viewport.store-BlKQ4x9H.js');
|
|
14
|
+
var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
|
|
15
|
+
var throttle = require('./throttle-BCwEuJJq.js');
|
|
15
16
|
|
|
16
17
|
const Attribution = class {
|
|
17
18
|
constructor(hostRef) {
|
|
@@ -109,8 +110,8 @@ function getCurrentCell({ x, y }, { el, rows, cols }) {
|
|
|
109
110
|
cellX = width - 1;
|
|
110
111
|
}
|
|
111
112
|
// Get the row and column items based on the cell position
|
|
112
|
-
const rgRow = dimension_helpers.getItemByPosition(rows, cellY);
|
|
113
|
-
const rgCol = dimension_helpers.getItemByPosition(cols, cellX);
|
|
113
|
+
const rgRow = dimension_helpers.getItemByPosition(rows, cellY + (rows.renderOffset || 0));
|
|
114
|
+
const rgCol = dimension_helpers.getItemByPosition(cols, cellX + (cols.renderOffset || 0));
|
|
114
115
|
// Set the row and column index to 0 if they are before the first item
|
|
115
116
|
if (rgCol.itemIndex < 0) {
|
|
116
117
|
rgCol.itemIndex = 0;
|
|
@@ -180,10 +181,12 @@ function styleByCellProps(styles) {
|
|
|
180
181
|
};
|
|
181
182
|
}
|
|
182
183
|
function getCell({ x, y, x1, y1 }, dimensionRow, dimensionCol) {
|
|
183
|
-
const
|
|
184
|
-
const
|
|
185
|
-
const
|
|
186
|
-
const
|
|
184
|
+
const rowOffset = dimensionRow.renderOffset || 0;
|
|
185
|
+
const colOffset = dimensionCol.renderOffset || 0;
|
|
186
|
+
const top = dimension_helpers.getItemByIndex(dimensionRow, y).start - rowOffset;
|
|
187
|
+
const left = dimension_helpers.getItemByIndex(dimensionCol, x).start - colOffset;
|
|
188
|
+
const bottom = dimension_helpers.getItemByIndex(dimensionRow, y1).end - rowOffset;
|
|
189
|
+
const right = dimension_helpers.getItemByIndex(dimensionCol, x1).end - colOffset;
|
|
187
190
|
return {
|
|
188
191
|
left,
|
|
189
192
|
right,
|
|
@@ -281,9 +284,29 @@ class KeyboardService {
|
|
|
281
284
|
constructor(sv) {
|
|
282
285
|
this.sv = sv;
|
|
283
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Appends printable key input that arrives after edit mode was requested
|
|
289
|
+
* but before the editor input has mounted or received focus.
|
|
290
|
+
*/
|
|
291
|
+
appendPendingEditValue(e) {
|
|
292
|
+
if (edit_utils.isShortcutModifier(e) ||
|
|
293
|
+
e.key.length !== 1 ||
|
|
294
|
+
(e.target instanceof HTMLElement && edit_utils.isEditInput(e.target))) {
|
|
295
|
+
return false;
|
|
296
|
+
}
|
|
297
|
+
const editCell = this.sv.selectionStore.get('edit');
|
|
298
|
+
if (typeof (editCell === null || editCell === void 0 ? void 0 : editCell.val) !== 'string') {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
this.sv.selectionStore.set('edit', Object.assign(Object.assign({}, editCell), { val: `${editCell.val}${e.key}` }));
|
|
302
|
+
return true;
|
|
303
|
+
}
|
|
284
304
|
async keyDown(e, canRange, isEditMode, { range, focus }) {
|
|
285
305
|
// IF EDIT MODE
|
|
286
306
|
if (isEditMode) {
|
|
307
|
+
if (this.appendPendingEditValue(e)) {
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
287
310
|
switch (e.code) {
|
|
288
311
|
case dimension_helpers.codesLetter.ESCAPE:
|
|
289
312
|
this.sv.cancel();
|
|
@@ -362,7 +385,7 @@ class KeyboardService {
|
|
|
362
385
|
// this interval needed for several cases
|
|
363
386
|
// grid could be resized before next click
|
|
364
387
|
// at this case to avoid screen jump we use this interval
|
|
365
|
-
await
|
|
388
|
+
await index$1.timeout(dimension_helpers.RESIZE_INTERVAL + 30);
|
|
366
389
|
const range = this.sv.selectionStore.get('range');
|
|
367
390
|
const focus = this.sv.selectionStore.get('focus');
|
|
368
391
|
return this.keyPositionChange(data.changes, range, focus, data.isMulti);
|
|
@@ -377,7 +400,8 @@ class KeyboardService {
|
|
|
377
400
|
}
|
|
378
401
|
const eData = this.sv.getData();
|
|
379
402
|
if (isMulti) {
|
|
380
|
-
|
|
403
|
+
const isOutOfBounds = [data.start, data.end].some(cell => isAfterLast(cell, eData.lastCell) || isBeforeFirst(cell));
|
|
404
|
+
if (isOutOfBounds) {
|
|
381
405
|
return false;
|
|
382
406
|
}
|
|
383
407
|
const range = column_service.getRange(data.start, data.end);
|
|
@@ -1288,15 +1312,9 @@ const RevogrScrollVirtual = class {
|
|
|
1288
1312
|
*/
|
|
1289
1313
|
async changeScroll(e) {
|
|
1290
1314
|
if (e.delta) {
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
break;
|
|
1295
|
-
case 'rgRow':
|
|
1296
|
-
e.coordinate = this.element.scrollTop + e.delta;
|
|
1297
|
-
break;
|
|
1298
|
-
}
|
|
1299
|
-
this.setScroll(e);
|
|
1315
|
+
const scrollProperty = e.dimension === 'rgRow' ? 'scrollTop' : 'scrollLeft';
|
|
1316
|
+
const currentPhysicalCoordinate = this.element[scrollProperty];
|
|
1317
|
+
return this.localScrollService.setScrollByDelta(e, currentPhysicalCoordinate);
|
|
1300
1318
|
}
|
|
1301
1319
|
return e;
|
|
1302
1320
|
}
|
|
@@ -1317,7 +1335,7 @@ const RevogrScrollVirtual = class {
|
|
|
1317
1335
|
this.autohideScrollPlugin.clear();
|
|
1318
1336
|
}
|
|
1319
1337
|
componentWillLoad() {
|
|
1320
|
-
this.scrollSize =
|
|
1338
|
+
this.scrollSize = index$1.getScrollbarSize(document);
|
|
1321
1339
|
}
|
|
1322
1340
|
componentDidRender() {
|
|
1323
1341
|
let scrollSize = 0;
|
|
@@ -1359,7 +1377,7 @@ const RevogrScrollVirtual = class {
|
|
|
1359
1377
|
}
|
|
1360
1378
|
render() {
|
|
1361
1379
|
const size = throttle.getContentSize(this.realSize, this.dimension === 'rgRow' ? this.element.clientHeight : this.element.clientWidth, this.clientSize);
|
|
1362
|
-
return (index.h(index.Host, { key: '
|
|
1380
|
+
return (index.h(index.Host, { key: '7213817ef941eee4050b714266598ec0c2961ee9', onScroll: (e) => this.onScroll(e) }, index.h("div", { key: '501da49c63253ab943172494b9dbf5399be56cee', style: {
|
|
1363
1381
|
[this.dimension === 'rgRow' ? 'height' : 'width']: `${size}px`,
|
|
1364
1382
|
} })));
|
|
1365
1383
|
}
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index = require('./index-Dq8Xzj5l.js');
|
|
7
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
8
|
-
var textEditor = require('./text-editor-
|
|
9
|
-
var edit_utils = require('./edit.utils-
|
|
7
|
+
var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
|
|
8
|
+
var textEditor = require('./text-editor-B4W-m-r-.js');
|
|
9
|
+
var edit_utils = require('./edit.utils-pKeiYFLJ.js');
|
|
10
10
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
11
|
+
require('./index-DxaSE5uZ.js');
|
|
11
12
|
|
|
12
13
|
const Clipboard = class {
|
|
13
14
|
constructor(hostRef) {
|
|
@@ -334,11 +335,12 @@ class RowOrderService {
|
|
|
334
335
|
getRow(y, { el, rows }) {
|
|
335
336
|
const { top } = el.getBoundingClientRect();
|
|
336
337
|
const topRelative = y - top;
|
|
337
|
-
const
|
|
338
|
+
const rowOffset = rows.renderOffset || 0;
|
|
339
|
+
const rgRow = dimension_helpers.getItemByPosition(rows, topRelative + rowOffset);
|
|
338
340
|
const absolutePosition = {
|
|
339
341
|
itemIndex: rgRow.itemIndex,
|
|
340
|
-
start: rgRow.start + top,
|
|
341
|
-
end: rgRow.end + top,
|
|
342
|
+
start: rgRow.start - rowOffset + top,
|
|
343
|
+
end: rgRow.end - rowOffset + top,
|
|
342
344
|
};
|
|
343
345
|
return absolutePosition;
|
|
344
346
|
}
|
|
@@ -347,8 +349,8 @@ class RowOrderService {
|
|
|
347
349
|
const { top, left } = el.getBoundingClientRect();
|
|
348
350
|
const topRelative = y - top;
|
|
349
351
|
const leftRelative = x - left;
|
|
350
|
-
const rgRow = dimension_helpers.getItemByPosition(rows, topRelative);
|
|
351
|
-
const rgCol = dimension_helpers.getItemByPosition(cols, leftRelative);
|
|
352
|
+
const rgRow = dimension_helpers.getItemByPosition(rows, topRelative + (rows.renderOffset || 0));
|
|
353
|
+
const rgCol = dimension_helpers.getItemByPosition(cols, leftRelative + (cols.renderOffset || 0));
|
|
352
354
|
return { x: rgCol.itemIndex, y: rgRow.itemIndex };
|
|
353
355
|
}
|
|
354
356
|
}
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index = require('./index-Dq8Xzj5l.js');
|
|
7
|
-
var column_service = require('./column.service-
|
|
8
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
9
|
-
var cellRenderer = require('./cell-renderer-
|
|
7
|
+
var column_service = require('./column.service-C1Qvcf5l.js');
|
|
8
|
+
var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
|
|
9
|
+
var cellRenderer = require('./cell-renderer-Dcz022q7.js');
|
|
10
10
|
var filter_button = require('./filter.button-w6LWnyhi.js');
|
|
11
|
-
var headerCellRenderer = require('./header-cell-renderer-
|
|
12
|
-
var throttle = require('./throttle-
|
|
13
|
-
var viewport_helpers = require('./viewport.helpers-
|
|
11
|
+
var headerCellRenderer = require('./header-cell-renderer-QrcXXSkF.js');
|
|
12
|
+
var throttle = require('./throttle-BCwEuJJq.js');
|
|
13
|
+
var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
|
|
14
14
|
require('./debounce-CcpHiH2p.js');
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -170,11 +170,13 @@ const RevogrData = class {
|
|
|
170
170
|
const depth = this.dataStore.get('groupingDepth');
|
|
171
171
|
const groupingCustomRenderer = this.dataStore.get('groupingCustomRenderer');
|
|
172
172
|
const groupDepth = this.columnService.hasGrouping ? depth : 0;
|
|
173
|
+
const rowRenderOffset = this.viewportRow.get('renderOffset') || 0;
|
|
174
|
+
const colRenderOffset = this.viewportCol.get('renderOffset') || 0;
|
|
173
175
|
for (let rgRow of rows) {
|
|
174
176
|
const dataItem = dimension_helpers.getSourceItem(this.dataStore, rgRow.itemIndex);
|
|
175
177
|
// #region Grouping
|
|
176
178
|
if (column_service.isGrouping(dataItem)) {
|
|
177
|
-
const gmodel = Object.assign(Object.assign({}, rgRow), { index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer,
|
|
179
|
+
const gmodel = Object.assign(Object.assign({}, rgRow), { start: rgRow.start - rowRenderOffset, index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer,
|
|
178
180
|
// Only show expand button if grouping is enabled and not in row headers
|
|
179
181
|
hasExpand: this.columnService.hasGrouping && this.colType !== 'rowHeaders', columnItems: cols, providers: this.providers });
|
|
180
182
|
rowsEls.push(index.h(cellRenderer.GroupingRowRenderer, Object.assign({}, gmodel)));
|
|
@@ -197,7 +199,7 @@ const RevogrData = class {
|
|
|
197
199
|
[dimension_helpers.DATA_ROW]: rowProps.itemIndex,
|
|
198
200
|
style: {
|
|
199
201
|
width: `${columnProps.size}px`,
|
|
200
|
-
transform: `translateX(${columnProps.start}px)`,
|
|
202
|
+
transform: `translateX(${columnProps.start - colRenderOffset}px)`,
|
|
201
203
|
height: rowProps.size ? `${rowProps.size}px` : undefined,
|
|
202
204
|
},
|
|
203
205
|
};
|
|
@@ -225,7 +227,7 @@ const RevogrData = class {
|
|
|
225
227
|
if (this.rowHighlightPlugin.isRowFocused(rgRow.itemIndex)) {
|
|
226
228
|
rowClass += ` ${dimension_helpers.ROW_FOCUSED_CLASS}`;
|
|
227
229
|
}
|
|
228
|
-
const row = (index.h(cellRenderer.RowRenderer, { index: rgRow.itemIndex, rowClass: rowClass, size: rgRow.size, start: rgRow.start, groupingLevel: groupDepth || undefined }, cells));
|
|
230
|
+
const row = (index.h(cellRenderer.RowRenderer, { index: rgRow.itemIndex, rowClass: rowClass, size: rgRow.size, start: rgRow.start - rowRenderOffset, groupingLevel: groupDepth || undefined }, cells));
|
|
229
231
|
this.beforerowrender.emit({
|
|
230
232
|
node: row,
|
|
231
233
|
item: rgRow,
|
|
@@ -280,7 +282,7 @@ const HeaderRenderer = (p) => {
|
|
|
280
282
|
class: cellClass,
|
|
281
283
|
style: {
|
|
282
284
|
width: `${p.column.size}px`,
|
|
283
|
-
transform: `translateX(${p.column.start}px)`,
|
|
285
|
+
transform: `translateX(${p.column.start - (p.renderOffset || 0)}px)`,
|
|
284
286
|
},
|
|
285
287
|
onResize: p.onResize,
|
|
286
288
|
onDblClick(originalEvent) {
|
|
@@ -325,7 +327,7 @@ const HeaderGroupRenderer = (p) => {
|
|
|
325
327
|
[dimension_helpers.HEADER_CLASS]: true,
|
|
326
328
|
},
|
|
327
329
|
style: {
|
|
328
|
-
transform: `translateX(${p.start}px)`,
|
|
330
|
+
transform: `translateX(${p.start - (p.renderOffset || 0)}px)`,
|
|
329
331
|
width: `${p.end - p.start}px`,
|
|
330
332
|
},
|
|
331
333
|
onResize: p.onResize,
|
|
@@ -333,7 +335,7 @@ const HeaderGroupRenderer = (p) => {
|
|
|
333
335
|
return (index.h(headerCellRenderer.HeaderCellRenderer, { data: Object.assign(Object.assign({}, p.group), { prop: '', providers: p.providers, index: p.start }), props: groupProps, additionalData: p.additionalData }));
|
|
334
336
|
};
|
|
335
337
|
|
|
336
|
-
const revogrHeaderStyleCss = () => `@charset "UTF-8";revogr-header{position:relative;z-index:5;display:block}revogr-header .header-rgRow{display:block;position:relative}revogr-header .header-rgRow.group{z-index:0}revogr-header .group-rgRow{position:relative;overflow:hidden}revogr-header .rgHeaderCell{position:absolute;box-sizing:border-box;height:100%;z-index:1;display:flex}revogr-header .rgHeaderCell.align-center{text-align:center}revogr-header .rgHeaderCell.align-left{text-align:left}revogr-header .rgHeaderCell.align-right{text-align:right}revogr-header .rgHeaderCell.sortable{cursor:pointer}revogr-header .rgHeaderCell i.asc:after,revogr-header .rgHeaderCell i.desc:after{font-size:13px}revogr-header .rgHeaderCell i.asc:after{content:"↑"}revogr-header .rgHeaderCell i.desc:after{content:"↓"}revogr-header .rgHeaderCell.active{z-index:10}revogr-header .rgHeaderCell.active .resizable{background-color:deepskyblue}revogr-header .rgHeaderCell .header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}revogr-header .rgHeaderCell .resizable{display:block;position:absolute;z-index:90;touch-action:none;user-select:none}revogr-header .rgHeaderCell .resizable:hover{background-color:deepskyblue}revogr-header .rgHeaderCell>.resizable-r{cursor:ew-resize;width:6px;right:0;top:0;height:100%}revogr-header .rgHeaderCell>.resizable-rb{cursor:se-resize;width:6px;height:6px;right:0;bottom:0}revogr-header .rgHeaderCell>.resizable-b{cursor:s-resize;height:6px;bottom:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-lb{cursor:sw-resize;width:6px;height:6px;left:0;bottom:0}revogr-header .rgHeaderCell>.resizable-l{cursor:w-resize;width:6px;left:0;height:100%;top:0}revogr-header .rgHeaderCell>.resizable-lt{cursor:nw-resize;width:6px;height:6px;left:0;top:0}revogr-header .rgHeaderCell>.resizable-t{cursor:n-resize;height:6px;top:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-rt{cursor:ne-resize;width:6px;height:6px;right:0;top:0}revogr-header .rv-filter{visibility:hidden}`;
|
|
338
|
+
const revogrHeaderStyleCss = () => `@charset "UTF-8";revogr-header{position:relative;z-index:5;display:block}revogr-header .header-rgRow{display:block;position:relative}revogr-header .header-rgRow.group{z-index:0}revogr-header .group-rgRow{position:relative;overflow:hidden}revogr-header .rgHeaderCell{position:absolute;box-sizing:border-box;height:100%;z-index:1;display:flex}revogr-header .rgHeaderCell.align-center{text-align:center}revogr-header .rgHeaderCell.align-left{text-align:left}revogr-header .rgHeaderCell.align-right{text-align:right}revogr-header .rgHeaderCell.sortable{cursor:pointer}revogr-header .rgHeaderCell .sort-indicator{display:inline-flex;align-items:flex-start;gap:1px}revogr-header .rgHeaderCell .sort-indicator i.asc:after,revogr-header .rgHeaderCell .sort-indicator i.desc:after{font-size:13px}revogr-header .rgHeaderCell .sort-indicator i.asc:after{content:"↑"}revogr-header .rgHeaderCell .sort-indicator i.desc:after{content:"↓"}revogr-header .rgHeaderCell .sort-indicator .sort-order-index{font-size:10px;line-height:1;top:0}revogr-header .rgHeaderCell.active{z-index:10}revogr-header .rgHeaderCell.active .resizable{background-color:deepskyblue}revogr-header .rgHeaderCell .header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}revogr-header .rgHeaderCell .resizable{display:block;position:absolute;z-index:90;touch-action:none;user-select:none}revogr-header .rgHeaderCell .resizable:hover{background-color:deepskyblue}revogr-header .rgHeaderCell>.resizable-r{cursor:ew-resize;width:6px;right:0;top:0;height:100%}revogr-header .rgHeaderCell>.resizable-rb{cursor:se-resize;width:6px;height:6px;right:0;bottom:0}revogr-header .rgHeaderCell>.resizable-b{cursor:s-resize;height:6px;bottom:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-lb{cursor:sw-resize;width:6px;height:6px;left:0;bottom:0}revogr-header .rgHeaderCell>.resizable-l{cursor:w-resize;width:6px;left:0;height:100%;top:0}revogr-header .rgHeaderCell>.resizable-lt{cursor:nw-resize;width:6px;height:6px;left:0;top:0}revogr-header .rgHeaderCell>.resizable-t{cursor:n-resize;height:6px;top:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-rt{cursor:ne-resize;width:6px;height:6px;right:0;top:0}revogr-header .rv-filter{visibility:hidden}`;
|
|
337
339
|
|
|
338
340
|
const RevogrHeaderComponent = class {
|
|
339
341
|
constructor(hostRef) {
|
|
@@ -389,6 +391,7 @@ const RevogrHeaderComponent = class {
|
|
|
389
391
|
}
|
|
390
392
|
renderHeaderColumns(cols, range) {
|
|
391
393
|
const columnsToRender = [];
|
|
394
|
+
const renderOffset = this.viewportCol.get('renderOffset') || 0;
|
|
392
395
|
for (let rgCol of cols) {
|
|
393
396
|
const colData = this.colData[rgCol.itemIndex];
|
|
394
397
|
const props = {
|
|
@@ -397,6 +400,7 @@ const RevogrHeaderComponent = class {
|
|
|
397
400
|
data: Object.assign(Object.assign({}, colData), { index: rgCol.itemIndex, providers: this.providers }),
|
|
398
401
|
canFilter: !!this.columnFilter,
|
|
399
402
|
canResize: this.canResize,
|
|
403
|
+
renderOffset,
|
|
400
404
|
active: this.resizeHandler,
|
|
401
405
|
additionalData: this.additionalData,
|
|
402
406
|
onResize: e => this.onResize(e, rgCol.itemIndex),
|
|
@@ -432,37 +436,71 @@ const RevogrHeaderComponent = class {
|
|
|
432
436
|
];
|
|
433
437
|
}
|
|
434
438
|
renderGroupColumn(group, level, visibleGroupRange) {
|
|
435
|
-
|
|
436
|
-
const
|
|
437
|
-
if (groupStartIndex < 0) {
|
|
438
|
-
return;
|
|
439
|
-
}
|
|
440
|
-
const groupEndIndex = groupStartIndex + group.indexes.length - 1;
|
|
441
|
-
if (!visibleGroupRange ||
|
|
442
|
-
!isGroupInVisibleRange(groupStartIndex, groupEndIndex, visibleGroupRange)) {
|
|
443
|
-
return;
|
|
444
|
-
}
|
|
445
|
-
const groupStart = dimension_helpers.getItemByIndex(this.dimensionCol.state, groupStartIndex).start;
|
|
446
|
-
const groupEnd = dimension_helpers.getItemByIndex(this.dimensionCol.state, groupEndIndex).end;
|
|
439
|
+
const groupRange = this.getGroupIndexRange(group);
|
|
440
|
+
const groupBounds = this.getGroupBounds(groupRange);
|
|
447
441
|
const props = {
|
|
442
|
+
level,
|
|
448
443
|
providers: this.providers,
|
|
449
|
-
start:
|
|
450
|
-
end:
|
|
444
|
+
start: groupBounds.start,
|
|
445
|
+
end: groupBounds.end,
|
|
451
446
|
group,
|
|
447
|
+
renderOffset: this.viewportCol.get('renderOffset') || 0,
|
|
452
448
|
active: this.resizeHandler,
|
|
453
449
|
canResize: this.canResize,
|
|
454
450
|
additionalData: this.additionalData,
|
|
455
451
|
onResize: e => {
|
|
456
452
|
var _a;
|
|
457
|
-
return
|
|
453
|
+
return groupRange
|
|
454
|
+
? this.onResizeGroup((_a = e.changedX) !== null && _a !== void 0 ? _a : 0, groupRange.startIndex, groupRange.endIndex)
|
|
455
|
+
: undefined;
|
|
458
456
|
},
|
|
459
457
|
};
|
|
460
458
|
const event = this.beforeGroupHeaderRender.emit(props);
|
|
461
459
|
if (event.defaultPrevented) {
|
|
462
460
|
return;
|
|
463
461
|
}
|
|
462
|
+
const renderRange = this.getGroupIndexRange(event.detail.group);
|
|
463
|
+
if (!renderRange ||
|
|
464
|
+
!visibleGroupRange ||
|
|
465
|
+
!isGroupInVisibleRange(renderRange.startIndex, renderRange.endIndex, visibleGroupRange)) {
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
468
|
+
if (event.detail.onResize === props.onResize) {
|
|
469
|
+
event.detail.onResize = e => {
|
|
470
|
+
var _a;
|
|
471
|
+
return this.onResizeGroup((_a = e.changedX) !== null && _a !== void 0 ? _a : 0, renderRange.startIndex, renderRange.endIndex);
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
const renderBounds = this.getGroupBounds(renderRange);
|
|
475
|
+
if (event.detail.start === props.start) {
|
|
476
|
+
event.detail.start = renderBounds.start;
|
|
477
|
+
}
|
|
478
|
+
if (event.detail.end === props.end) {
|
|
479
|
+
event.detail.end = renderBounds.end;
|
|
480
|
+
}
|
|
464
481
|
return index.h(HeaderGroupRenderer, Object.assign({ key: this.getGroupHeaderCellKey(event.detail.group, level) }, event.detail));
|
|
465
482
|
}
|
|
483
|
+
getGroupIndexRange(group) {
|
|
484
|
+
var _a;
|
|
485
|
+
const startIndex = (_a = group.indexes[0]) !== null && _a !== void 0 ? _a : -1;
|
|
486
|
+
if (startIndex < 0) {
|
|
487
|
+
return;
|
|
488
|
+
}
|
|
489
|
+
const endIndex = group.indexes[group.indexes.length - 1];
|
|
490
|
+
return {
|
|
491
|
+
startIndex,
|
|
492
|
+
endIndex,
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
getGroupBounds(range) {
|
|
496
|
+
if (!range) {
|
|
497
|
+
return { start: 0, end: 0 };
|
|
498
|
+
}
|
|
499
|
+
return {
|
|
500
|
+
start: dimension_helpers.getItemByIndex(this.dimensionCol.state, range.startIndex).start,
|
|
501
|
+
end: dimension_helpers.getItemByIndex(this.dimensionCol.state, range.endIndex).end,
|
|
502
|
+
};
|
|
503
|
+
}
|
|
466
504
|
getVisibleGroupRange() {
|
|
467
505
|
const visibleColumns = this.viewportCol.get('items');
|
|
468
506
|
if (!visibleColumns.length) {
|
|
@@ -603,7 +641,7 @@ const RevogrViewportScroll = class {
|
|
|
603
641
|
* @param e
|
|
604
642
|
*/
|
|
605
643
|
async changeScroll(e, silent = false) {
|
|
606
|
-
var _a, _b;
|
|
644
|
+
var _a, _b, _c, _d;
|
|
607
645
|
if (silent) {
|
|
608
646
|
if (e.coordinate && this.verticalScroll) {
|
|
609
647
|
switch (e.dimension) {
|
|
@@ -616,15 +654,16 @@ const RevogrViewportScroll = class {
|
|
|
616
654
|
return;
|
|
617
655
|
}
|
|
618
656
|
if (e.delta) {
|
|
657
|
+
let currentPhysicalCoordinate = 0;
|
|
619
658
|
switch (e.dimension) {
|
|
620
659
|
case 'rgCol':
|
|
621
|
-
|
|
660
|
+
currentPhysicalCoordinate = this.horizontalScroll.scrollLeft;
|
|
622
661
|
break;
|
|
623
662
|
case 'rgRow':
|
|
624
|
-
|
|
663
|
+
currentPhysicalCoordinate = (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.scrollTop) !== null && _b !== void 0 ? _b : 0;
|
|
625
664
|
break;
|
|
626
665
|
}
|
|
627
|
-
this.
|
|
666
|
+
return (_d = (_c = this.localScrollService) === null || _c === void 0 ? void 0 : _c.setScrollByDelta(e, currentPhysicalCoordinate)) !== null && _d !== void 0 ? _d : e;
|
|
628
667
|
}
|
|
629
668
|
return e;
|
|
630
669
|
}
|
|
@@ -776,7 +815,10 @@ const RevogrViewportScroll = class {
|
|
|
776
815
|
this.setScrollVisibility('rgCol', this.horizontalScroll.clientWidth, this.contentWidth);
|
|
777
816
|
}
|
|
778
817
|
render() {
|
|
779
|
-
|
|
818
|
+
var _a, _b, _c, _d;
|
|
819
|
+
const physicalContentHeight = throttle.getContentSize(this.contentHeight, (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : 0);
|
|
820
|
+
const physicalContentWidth = throttle.getContentSize(this.contentWidth, (_d = (_c = this.horizontalScroll) === null || _c === void 0 ? void 0 : _c.clientWidth) !== null && _d !== void 0 ? _d : 0);
|
|
821
|
+
return (index.h(index.Host, { key: 'a0c47dede9d131dea8c8ca449e8a323f24d9b113', onWheel: this.horizontalMouseWheel, onScroll: (e) => this.applyScroll('rgCol', e) }, index.h("div", { key: '6c960e753ffe522ba4afb1c379264873b6c617f3', class: "inner-content-table", style: { width: `${physicalContentWidth}px` } }, index.h("div", { key: '1a6cbcbd3634e84756b54c8150aebd25c824e14a', class: "header-wrapper", ref: e => (this.header = e) }, index.h("slot", { key: 'e4202c687bc39b4f78f3ed9840e979b032f06af8', name: viewport_helpers.HEADER_SLOT })), index.h("div", { key: '651415b5b32e72735065b183317386a34042bb85', class: "vertical-inner", ref: el => (this.verticalScroll = el), onWheel: this.verticalMouseWheel, onScroll: (e) => this.applyScroll('rgRow', e) }, index.h("div", { key: 'e65623b78d80957d8676adb019618953ef267ec3', class: "content-wrapper", style: { height: `${physicalContentHeight}px` } }, index.h("slot", { key: '5af47b12ef1226587cf774233447b5252d65e836', name: viewport_helpers.CONTENT_SLOT }))), index.h("div", { key: 'cbc0fd64fbfb53d3b18e547bbe34e32b7bb9c043', class: "footer-wrapper", ref: e => (this.footer = e) }, index.h("slot", { key: 'a8e4bfaef400973121090bac3069eb85469a95f3', name: viewport_helpers.FOOTER_SLOT })))));
|
|
780
822
|
}
|
|
781
823
|
/**
|
|
782
824
|
* Extra layer for scroll event monitoring, where MouseWheel event is not passing
|
|
@@ -269,7 +269,8 @@ const FilterPanel = class {
|
|
|
269
269
|
const options = [];
|
|
270
270
|
const prop = this.changes.prop;
|
|
271
271
|
const hidden = new Set();
|
|
272
|
-
Object.
|
|
272
|
+
Object.keys(this.filterItems).forEach((prop) => {
|
|
273
|
+
const values = this.filterItems[prop];
|
|
273
274
|
values.forEach((filter) => {
|
|
274
275
|
if (filter.hidden) {
|
|
275
276
|
hidden.add(filter.type);
|