@revolist/revogrid 4.21.2 → 4.21.3
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-EyG5RkCf.js → cell-renderer-BLcxDHzP.js} +2 -2
- package/dist/cjs/{column.drag.plugin-DuMzh_Cm.js → column.drag.plugin-DfTAC5Qc.js} +4 -4
- package/dist/cjs/{column.service-BNgb1GSr.js → column.service-BmT2HOnj.js} +1 -1
- package/dist/cjs/{dimension.helpers-DLLC6uO6.js → dimension.helpers-BOxHtX5T.js} +13 -3
- package/dist/cjs/{edit.utils-BWpSdGmj.js → edit.utils-DnvQVP4H.js} +1 -1
- package/dist/cjs/{header-cell-renderer-BReLylCk.js → header-cell-renderer-7DgGThjq.js} +1 -1
- package/dist/cjs/index.cjs.js +9 -8
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/revo-grid.cjs.entry.js +43 -11
- package/dist/cjs/revo-grid.cjs.js +1 -1
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +5 -5
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +5 -3
- package/dist/cjs/revogr-data_4.cjs.entry.js +8 -7
- package/dist/cjs/{text-editor-tI8PMl7r.js → text-editor-B9ibcdrl.js} +2 -2
- package/dist/cjs/{throttle-Rub9czPz.js → throttle-DkuCcmB0.js} +1 -1
- package/dist/cjs/{viewport.store-Bkhj0ZmO.js → viewport.store-DG-4bWqg.js} +1 -1
- package/dist/collection/components/clipboard/revogr-clipboard.js +6 -4
- package/dist/collection/components/revoGrid/revo-grid.js +63 -2
- package/dist/collection/components/revoGrid/viewport.scrolling.service.js +2 -2
- package/dist/collection/components/revoGrid/viewport.service.js +2 -0
- package/dist/collection/components/scroll/revogr-viewport-scroll.js +23 -2
- package/dist/collection/services/data.provider.js +18 -2
- package/dist/collection/store/dataSource/data.store.js +14 -4
- package/dist/collection/types/events.js +1 -0
- package/dist/{revo-grid/cell-renderer-BDmepZJO.js → esm/cell-renderer-BNeaYjy6.js} +2 -2
- package/dist/esm/{column.drag.plugin-B98azH0j.js → column.drag.plugin-C9lvlTfl.js} +4 -4
- package/dist/esm/{column.service-BghHOZP8.js → column.service-8pPNyrKn.js} +1 -1
- package/dist/{revo-grid/dimension.helpers-C2F2Cuh8.js → esm/dimension.helpers-B-5OBYes.js} +13 -3
- package/dist/esm/{edit.utils-Cdhf8P7e.js → edit.utils-CQjRmx5n.js} +1 -1
- package/dist/{revo-grid/header-cell-renderer-DO0jvvbw.js → esm/header-cell-renderer-WkTbrmr7.js} +1 -1
- package/dist/esm/index.js +10 -9
- package/dist/esm/loader.js +1 -1
- package/dist/esm/revo-grid.entry.js +43 -11
- package/dist/esm/revo-grid.js +1 -1
- package/dist/esm/revogr-attribution_7.entry.js +5 -5
- package/dist/esm/revogr-clipboard_3.entry.js +5 -3
- package/dist/esm/revogr-data_4.entry.js +8 -7
- package/dist/{revo-grid/text-editor-BylR9oxh.js → esm/text-editor-DZSx2pWr.js} +2 -2
- package/dist/esm/{throttle-BEccmfmt.js → throttle-CYM0qC3v.js} +1 -1
- package/dist/{revo-grid/viewport.store-C3ajQgRm.js → esm/viewport.store-BGWR3XfI.js} +1 -1
- package/dist/{esm/cell-renderer-BDmepZJO.js → revo-grid/cell-renderer-BNeaYjy6.js} +2 -2
- package/dist/revo-grid/{column.drag.plugin-B98azH0j.js → column.drag.plugin-C9lvlTfl.js} +4 -4
- package/dist/revo-grid/{column.service-BghHOZP8.js → column.service-8pPNyrKn.js} +1 -1
- package/dist/{esm/dimension.helpers-C2F2Cuh8.js → revo-grid/dimension.helpers-B-5OBYes.js} +13 -3
- package/dist/revo-grid/{edit.utils-Cdhf8P7e.js → edit.utils-CQjRmx5n.js} +1 -1
- package/dist/{esm/header-cell-renderer-DO0jvvbw.js → revo-grid/header-cell-renderer-WkTbrmr7.js} +1 -1
- package/dist/revo-grid/index.esm.js +10 -9
- package/dist/revo-grid/revo-grid.entry.js +43 -11
- package/dist/revo-grid/revo-grid.esm.js +1 -1
- package/dist/revo-grid/revogr-attribution_7.entry.js +5 -5
- package/dist/revo-grid/revogr-clipboard_3.entry.js +5 -3
- package/dist/revo-grid/revogr-data_4.entry.js +8 -7
- package/dist/{esm/text-editor-BylR9oxh.js → revo-grid/text-editor-DZSx2pWr.js} +2 -2
- package/dist/revo-grid/{throttle-BEccmfmt.js → throttle-CYM0qC3v.js} +1 -1
- package/dist/{esm/viewport.store-C3ajQgRm.js → revo-grid/viewport.store-BGWR3XfI.js} +1 -1
- package/dist/types/components/clipboard/revogr-clipboard.d.ts +2 -0
- package/dist/types/components/revoGrid/revo-grid.d.ts +11 -0
- package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +1 -1
- package/dist/types/components/revoGrid/viewport.service.d.ts +1 -0
- package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +1 -0
- package/dist/types/components.d.ts +33 -0
- package/dist/types/services/data.provider.d.ts +15 -1
- package/dist/types/store/dataSource/data.store.d.ts +3 -1
- package/dist/types/types/events.d.ts +1 -1
- package/dist/types/types/viewport.interfaces.d.ts +7 -2
- package/hydrate/index.js +58 -11
- package/hydrate/index.mjs +58 -11
- package/package.json +1 -1
- package/readme.md +2 -0
- package/standalone/data.store.js +1 -1
- package/standalone/index.js +1 -1
- package/standalone/revo-grid.js +1 -1
- package/standalone/revogr-clipboard2.js +1 -1
- package/standalone/revogr-viewport-scroll2.js +1 -1
|
@@ -70,6 +70,10 @@ export class RevoGridComponent {
|
|
|
70
70
|
this.readonly = false;
|
|
71
71
|
/** When true, columns are resizable. */
|
|
72
72
|
this.resize = false;
|
|
73
|
+
/**
|
|
74
|
+
* Prevents horizontal scroll state from being mirrored across viewport sections.
|
|
75
|
+
*/
|
|
76
|
+
this.noHorizontalScrollTransfer = false;
|
|
73
77
|
/** When true cell focus appear. */
|
|
74
78
|
this.canFocus = true;
|
|
75
79
|
/** When true enable clipboard. */
|
|
@@ -605,7 +609,13 @@ export class RevoGridComponent {
|
|
|
605
609
|
if (!this.dimensionProvider || !this.columnProvider) {
|
|
606
610
|
return;
|
|
607
611
|
}
|
|
608
|
-
const
|
|
612
|
+
const beforeGatherEvent = this.beforecolumnsgather.emit({
|
|
613
|
+
columns: [...newVal],
|
|
614
|
+
});
|
|
615
|
+
if (beforeGatherEvent.defaultPrevented) {
|
|
616
|
+
return;
|
|
617
|
+
}
|
|
618
|
+
const columnGather = getColumns(beforeGatherEvent.detail.columns, 0, this.columnTypes);
|
|
609
619
|
const beforeSetEvent = this.beforecolumnsset.emit(columnGather);
|
|
610
620
|
if (beforeSetEvent.defaultPrevented) {
|
|
611
621
|
return;
|
|
@@ -952,6 +962,7 @@ export class RevoGridComponent {
|
|
|
952
962
|
scrollingService: this.scrollingService,
|
|
953
963
|
orderService: this.orderService,
|
|
954
964
|
selectionStoreConnector: this.selectionStoreConnector,
|
|
965
|
+
noHorizontalScrollTransfer: this.noHorizontalScrollTransfer,
|
|
955
966
|
disableVirtualX: this.disableVirtualX,
|
|
956
967
|
disableVirtualY: this.disableVirtualY,
|
|
957
968
|
resize: c => this.aftercolumnresize.emit(c),
|
|
@@ -992,7 +1003,9 @@ export class RevoGridComponent {
|
|
|
992
1003
|
dataViews.push(dataView);
|
|
993
1004
|
});
|
|
994
1005
|
// Add viewport scroll in the end
|
|
995
|
-
viewPortHtml.push(h("revogr-viewport-scroll", Object.assign({}, view.prop, { ref: el => this.scrollingService.registerElement(el, `${view.prop.key}`), onScrollviewport: e =>
|
|
1006
|
+
viewPortHtml.push(h("revogr-viewport-scroll", Object.assign({}, view.prop, { ref: el => this.scrollingService.registerElement(el, `${view.prop.key}`), onScrollviewport: e => {
|
|
1007
|
+
this.scrollingService.proxyScroll(e.detail, `${view.prop.key}`, this.noHorizontalScrollTransfer && e.detail.dimension === 'rgCol');
|
|
1008
|
+
}, onScrollviewportsilent: e => this.scrollingService.scrollSilentService(e.detail, `${view.prop.key}`) }), dataViews));
|
|
996
1009
|
}
|
|
997
1010
|
viewportSections.push(viewPortHtml);
|
|
998
1011
|
// #endregion
|
|
@@ -1173,6 +1186,26 @@ export class RevoGridComponent {
|
|
|
1173
1186
|
"attribute": "resize",
|
|
1174
1187
|
"defaultValue": "false"
|
|
1175
1188
|
},
|
|
1189
|
+
"noHorizontalScrollTransfer": {
|
|
1190
|
+
"type": "boolean",
|
|
1191
|
+
"mutable": false,
|
|
1192
|
+
"complexType": {
|
|
1193
|
+
"original": "boolean",
|
|
1194
|
+
"resolved": "boolean",
|
|
1195
|
+
"references": {}
|
|
1196
|
+
},
|
|
1197
|
+
"required": false,
|
|
1198
|
+
"optional": false,
|
|
1199
|
+
"docs": {
|
|
1200
|
+
"tags": [],
|
|
1201
|
+
"text": "Prevents horizontal scroll state from being mirrored across viewport sections."
|
|
1202
|
+
},
|
|
1203
|
+
"getter": false,
|
|
1204
|
+
"setter": false,
|
|
1205
|
+
"reflect": false,
|
|
1206
|
+
"attribute": "no-horizontal-scroll-transfer",
|
|
1207
|
+
"defaultValue": "false"
|
|
1208
|
+
},
|
|
1176
1209
|
"canFocus": {
|
|
1177
1210
|
"type": "boolean",
|
|
1178
1211
|
"mutable": false,
|
|
@@ -2344,6 +2377,34 @@ export class RevoGridComponent {
|
|
|
2344
2377
|
}
|
|
2345
2378
|
}
|
|
2346
2379
|
}
|
|
2380
|
+
}, {
|
|
2381
|
+
"method": "beforecolumnsgather",
|
|
2382
|
+
"name": "beforecolumnsgather",
|
|
2383
|
+
"bubbles": true,
|
|
2384
|
+
"cancelable": true,
|
|
2385
|
+
"composed": true,
|
|
2386
|
+
"docs": {
|
|
2387
|
+
"tags": [],
|
|
2388
|
+
"text": "Emitted before user column definitions are gathered into the internal column collection.\nListeners can replace `detail.columns` to rewrite the raw column set before RevoGrid normalizes it."
|
|
2389
|
+
},
|
|
2390
|
+
"complexType": {
|
|
2391
|
+
"original": "{\n columns: (ColumnGrouping | ColumnRegular)[];\n }",
|
|
2392
|
+
"resolved": "{ columns: (ColumnRegular | ColumnGrouping<any>)[]; }",
|
|
2393
|
+
"references": {
|
|
2394
|
+
"ColumnGrouping": {
|
|
2395
|
+
"location": "import",
|
|
2396
|
+
"path": "@type",
|
|
2397
|
+
"id": "src/types/index.ts::ColumnGrouping",
|
|
2398
|
+
"referenceLocation": "ColumnGrouping"
|
|
2399
|
+
},
|
|
2400
|
+
"ColumnRegular": {
|
|
2401
|
+
"location": "import",
|
|
2402
|
+
"path": "@type",
|
|
2403
|
+
"id": "src/types/index.ts::ColumnRegular",
|
|
2404
|
+
"referenceLocation": "ColumnRegular"
|
|
2405
|
+
}
|
|
2406
|
+
}
|
|
2407
|
+
}
|
|
2347
2408
|
}, {
|
|
2348
2409
|
"method": "beforecolumnsset",
|
|
2349
2410
|
"name": "beforecolumnsset",
|
|
@@ -7,11 +7,11 @@ export default class GridScrollingService {
|
|
|
7
7
|
this.setViewport = setViewport;
|
|
8
8
|
this.elements = {};
|
|
9
9
|
}
|
|
10
|
-
async proxyScroll(e, key) {
|
|
10
|
+
async proxyScroll(e, key, skipEvent) {
|
|
11
11
|
var _a;
|
|
12
12
|
let newEventPromise;
|
|
13
13
|
let event = e;
|
|
14
|
-
for (let elKey in this.elements) {
|
|
14
|
+
for (let elKey in (skipEvent ? {} : this.elements)) {
|
|
15
15
|
// skip
|
|
16
16
|
if (e.dimension === 'rgCol' && elKey === 'headerRow') {
|
|
17
17
|
continue;
|
|
@@ -13,6 +13,7 @@ function gatherColumnData(data) {
|
|
|
13
13
|
contentHeight: data.contentHeight,
|
|
14
14
|
key: data.colType,
|
|
15
15
|
colType: data.colType,
|
|
16
|
+
noHorizontalScrollTransfer: data.noHorizontalScrollTransfer,
|
|
16
17
|
onResizeviewport: data.onResizeviewport,
|
|
17
18
|
// set viewport size to real size
|
|
18
19
|
style: data.fixWidth ? { minWidth: `${realWidth}px` } : undefined,
|
|
@@ -57,6 +58,7 @@ export default class ViewportService {
|
|
|
57
58
|
viewports: config.viewportProvider.stores,
|
|
58
59
|
dimensions: config.dimensionProvider.stores,
|
|
59
60
|
rowStores: config.dataProvider.stores,
|
|
61
|
+
noHorizontalScrollTransfer: config.noHorizontalScrollTransfer,
|
|
60
62
|
colStore,
|
|
61
63
|
onHeaderresize: e => this.onColumnResize(val, e, colStore),
|
|
62
64
|
};
|
|
@@ -22,6 +22,7 @@ export class RevogrViewportScroll {
|
|
|
22
22
|
* Height of inner content
|
|
23
23
|
*/
|
|
24
24
|
this.contentHeight = 0;
|
|
25
|
+
this.noHorizontalScrollTransfer = false;
|
|
25
26
|
}
|
|
26
27
|
async setScroll(e) {
|
|
27
28
|
var _a;
|
|
@@ -206,7 +207,7 @@ export class RevogrViewportScroll {
|
|
|
206
207
|
this.setScrollVisibility('rgCol', this.horizontalScroll.clientWidth, this.contentWidth);
|
|
207
208
|
}
|
|
208
209
|
render() {
|
|
209
|
-
return (h(Host, { key: '
|
|
210
|
+
return (h(Host, { key: 'adc7378dba1794ca2ec263d52b09abefe50bcbfd', onWheel: this.horizontalMouseWheel, onScroll: (e) => this.applyScroll('rgCol', e) }, h("div", { key: '7b57a8a0ea44629fefcfe4d2cd77bf0f048d8e06', class: "inner-content-table", style: { width: `${this.contentWidth}px` } }, h("div", { key: 'cca3de158bc2a7f0651f578a281819be5698b257', class: "header-wrapper", ref: e => (this.header = e) }, h("slot", { key: '1d170147dabe034f2c35481a8e2fedd6de2b6aed', name: HEADER_SLOT })), h("div", { key: 'b6dd29a91bb1f380a83a035dfdb749ca669936f2', class: "vertical-inner", ref: el => (this.verticalScroll = el), onWheel: this.verticalMouseWheel, onScroll: (e) => this.applyScroll('rgRow', e) }, h("div", { key: '9bce27bf8ec4d3b679aa9a34eb6379a8c2d46cac', class: "content-wrapper", style: { height: `${this.contentHeight}px` } }, h("slot", { key: 'b44a082c9fbb948fd87bd235b4cd4356fd4a3536', name: CONTENT_SLOT }))), h("div", { key: '28c305ff6bc664f1d1bbb117e8b8565c8d4bb6b2', class: "footer-wrapper", ref: e => (this.footer = e) }, h("slot", { key: '96312fb7f18198fd1feb9dcc00c79cde74ba9c9f', name: FOOTER_SLOT })))));
|
|
210
211
|
}
|
|
211
212
|
/**
|
|
212
213
|
* Extra layer for scroll event monitoring, where MouseWheel event is not passing
|
|
@@ -285,7 +286,7 @@ export class RevogrViewportScroll {
|
|
|
285
286
|
const atRight = scrollLeft + clientWidth >= scrollWidth && e.deltaX > 0;
|
|
286
287
|
// Detect if the user has reached the left end
|
|
287
288
|
const atLeft = scrollLeft === 0 && e.deltaX < 0;
|
|
288
|
-
if (!atRight && !atLeft) {
|
|
289
|
+
if (!atRight && !atLeft && !this.noHorizontalScrollTransfer) {
|
|
289
290
|
(_a = e.preventDefault) === null || _a === void 0 ? void 0 : _a.call(e);
|
|
290
291
|
}
|
|
291
292
|
const pos = scrollLeft + e[delta];
|
|
@@ -389,6 +390,26 @@ export class RevogrViewportScroll {
|
|
|
389
390
|
"setter": false,
|
|
390
391
|
"reflect": false,
|
|
391
392
|
"attribute": "col-type"
|
|
393
|
+
},
|
|
394
|
+
"noHorizontalScrollTransfer": {
|
|
395
|
+
"type": "boolean",
|
|
396
|
+
"mutable": false,
|
|
397
|
+
"complexType": {
|
|
398
|
+
"original": "boolean",
|
|
399
|
+
"resolved": "boolean",
|
|
400
|
+
"references": {}
|
|
401
|
+
},
|
|
402
|
+
"required": false,
|
|
403
|
+
"optional": false,
|
|
404
|
+
"docs": {
|
|
405
|
+
"tags": [],
|
|
406
|
+
"text": ""
|
|
407
|
+
},
|
|
408
|
+
"getter": false,
|
|
409
|
+
"setter": false,
|
|
410
|
+
"reflect": false,
|
|
411
|
+
"attribute": "no-horizontal-scroll-transfer",
|
|
412
|
+
"defaultValue": "false"
|
|
392
413
|
}
|
|
393
414
|
};
|
|
394
415
|
}
|
|
@@ -16,9 +16,25 @@ export class DataProvider {
|
|
|
16
16
|
return sources;
|
|
17
17
|
}, {});
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Replaces the data source for a row type and synchronizes the related dimension metadata.
|
|
21
|
+
*
|
|
22
|
+
* `rgRow` updates also refresh the virtual row model unless `disableVirtualRows` is set.
|
|
23
|
+
* Pinned row types skip virtual row recalculation because they are rendered directly.
|
|
24
|
+
*
|
|
25
|
+
* @param data Full source data assigned to the target row store.
|
|
26
|
+
* @param type Row collection to update. Defaults to the main body rows.
|
|
27
|
+
* @param disableVirtualRows Prevents recalculating virtual rows for the main row store.
|
|
28
|
+
* @param grouping Optional grouping metadata applied together with the new data set.
|
|
29
|
+
* @param silent Preserves the current trimmed state instead of resetting it during the update.
|
|
30
|
+
* @param preserveTrimmed Re-applies current trimmed indexes after a silent update.
|
|
31
|
+
* @returns The same `data` array that was provided to the method.
|
|
32
|
+
*/
|
|
33
|
+
setData(data, type = 'rgRow', disableVirtualRows = false, grouping,
|
|
34
|
+
// if true, store will be updated without resetting trimmed state
|
|
35
|
+
silent = false, preserveTrimmed = false) {
|
|
20
36
|
// set rgRow data
|
|
21
|
-
this.stores[type].updateData([...data], grouping, silent);
|
|
37
|
+
this.stores[type].updateData([...data], grouping, silent, preserveTrimmed);
|
|
22
38
|
// for pinned row no need virtual data
|
|
23
39
|
const noVirtual = type !== 'rgRow' || disableVirtualRows;
|
|
24
40
|
this.dimensionProvider.setData(data.length, type, noVirtual);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import findIndex from "lodash/findIndex";
|
|
5
5
|
import range from "lodash/range";
|
|
6
6
|
import { createStore } from "@stencil/store";
|
|
7
|
-
import { trimmedPlugin } from "./trimmed.plugin";
|
|
7
|
+
import { gatherTrimmedItems, trimmedPlugin } from "./trimmed.plugin";
|
|
8
8
|
import { setStore } from "../../utils";
|
|
9
9
|
import { proxyPlugin } from "./data.proxy";
|
|
10
10
|
/**
|
|
@@ -24,8 +24,16 @@ export class DataStore {
|
|
|
24
24
|
* full data source update
|
|
25
25
|
* @param source - data column/rgRow source
|
|
26
26
|
* @param grouping - grouping information if present
|
|
27
|
+
* @param silent - if true, store will be updated without resetting trimmed state
|
|
28
|
+
* @param preserveTrimmed - if true, current trimmed indexes will be re-applied to the new source, use with caution because physical indexes may change across full data refreshes
|
|
27
29
|
*/
|
|
28
|
-
updateData(source, grouping,
|
|
30
|
+
updateData(source, grouping,
|
|
31
|
+
// if true, store will be updated without resetting trimmed state
|
|
32
|
+
silent = false,
|
|
33
|
+
// if true, current trimmed indexes will be re-applied to the new source
|
|
34
|
+
preserveTrimmed = false) {
|
|
35
|
+
const trimmed = this.store.get('trimmed');
|
|
36
|
+
const trimmedItems = silent && preserveTrimmed ? gatherTrimmedItems(trimmed) : null;
|
|
29
37
|
// during full update we do drop trim
|
|
30
38
|
if (!silent) {
|
|
31
39
|
this.store.set('trimmed', {});
|
|
@@ -38,12 +46,14 @@ export class DataStore {
|
|
|
38
46
|
source,
|
|
39
47
|
proxyItems: [...items],
|
|
40
48
|
});
|
|
41
|
-
//
|
|
42
|
-
|
|
49
|
+
// Explicit trim preservation is opt-in because physical indexes may change
|
|
50
|
+
// across full data refreshes.
|
|
51
|
+
this.store.set('items', trimmedItems ? items.filter(i => !trimmedItems[i]) : items);
|
|
43
52
|
// apply grouping if present
|
|
44
53
|
if (grouping) {
|
|
45
54
|
setStore(this.store, {
|
|
46
55
|
groupingDepth: grouping.depth,
|
|
56
|
+
// if groups are not provided, we will consider that there is only one group with all items
|
|
47
57
|
groups: grouping.groups,
|
|
48
58
|
groupingCustomRenderer: grouping.customRenderer,
|
|
49
59
|
});
|
|
@@ -21,6 +21,7 @@ export const REVOGRID_EVENTS = new Map([
|
|
|
21
21
|
['beforeanysource', 'beforeanysource'],
|
|
22
22
|
['aftersourceset', 'aftersourceset'],
|
|
23
23
|
['afteranysource', 'afteranysource'],
|
|
24
|
+
['beforecolumnsgather', 'beforecolumnsgather'],
|
|
24
25
|
['beforecolumnsset', 'beforecolumnsset'],
|
|
25
26
|
['beforecolumnapplied', 'beforecolumnapplied'],
|
|
26
27
|
['aftercolumnsset', 'aftercolumnsset'],
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
4
|
import { h, f as Build } from './index-Chp_81rd.js';
|
|
5
|
-
import { y as DATA_ROW, G as DRAG_ICON_CLASS, I as DRAGGABLE_CLASS } from './dimension.helpers-
|
|
6
|
-
import { l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, G as GROUP_DEPTH, h as GROUP_EXPANDED, P as PSEUDO_GROUP_ITEM, O as isRowDragService, B as getCellDataParsed } from './column.service-
|
|
5
|
+
import { y as DATA_ROW, G as DRAG_ICON_CLASS, I as DRAGGABLE_CLASS } from './dimension.helpers-B-5OBYes.js';
|
|
6
|
+
import { l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, G as GROUP_DEPTH, h as GROUP_EXPANDED, P as PSEUDO_GROUP_ITEM, O as isRowDragService, B as getCellDataParsed } from './column.service-8pPNyrKn.js';
|
|
7
7
|
|
|
8
8
|
const SortingSign = ({ column }) => {
|
|
9
9
|
var _a;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
import { J as reduce, g as getRange, K as baseEach, C as getColumnType, c as columnTypes, L as toInteger, u as isGrouping, t as getGroupingName, r as rowTypes, B as getCellDataParsed, A as getCellRaw, I as getColumnByProp, h as GROUP_EXPANDED, x as getParsedGroup, y as isSameGroup, G as GROUP_DEPTH, e as PSEUDO_GROUP_ITEM_VALUE, d as PSEUDO_GROUP_ITEM_ID, o as GROUPING_ROW_TYPE, p as getSource, f as PSEUDO_GROUP_COLUMN, s as gatherGrouping, m as GROUP_EXPAND_EVENT, v as isGroupingColumn, q as getExpanded, E as isColGrouping } from './column.service-
|
|
5
|
-
import { W as createStore, w as setStore, i as calculateDimensionData, X as identity, Y as isArray, b as getSourceItem, o as getScrollbarSize, u as timeout, Z as baseProperty, _ as isArrayLike, $ as getTag, a0 as baseKeys, g as getPhysical, e as setItems, j as getItemByPosition } from './dimension.helpers-
|
|
6
|
-
import { f as calculateRowHeaderSize } from './viewport.store-
|
|
4
|
+
import { J as reduce, g as getRange, K as baseEach, C as getColumnType, c as columnTypes, L as toInteger, u as isGrouping, t as getGroupingName, r as rowTypes, B as getCellDataParsed, A as getCellRaw, I as getColumnByProp, h as GROUP_EXPANDED, x as getParsedGroup, y as isSameGroup, G as GROUP_DEPTH, e as PSEUDO_GROUP_ITEM_VALUE, d as PSEUDO_GROUP_ITEM_ID, o as GROUPING_ROW_TYPE, p as getSource, f as PSEUDO_GROUP_COLUMN, s as gatherGrouping, m as GROUP_EXPAND_EVENT, v as isGroupingColumn, q as getExpanded, E as isColGrouping } from './column.service-8pPNyrKn.js';
|
|
5
|
+
import { W as createStore, w as setStore, i as calculateDimensionData, X as identity, Y as isArray, b as getSourceItem, o as getScrollbarSize, u as timeout, Z as baseProperty, _ as isArrayLike, $ as getTag, a0 as baseKeys, g as getPhysical, e as setItems, j as getItemByPosition } from './dimension.helpers-B-5OBYes.js';
|
|
6
|
+
import { f as calculateRowHeaderSize } from './viewport.store-BGWR3XfI.js';
|
|
7
7
|
import { h } from './index-Chp_81rd.js';
|
|
8
8
|
import { b as FILTER_PROP, i as isFilterBtn } from './filter.button-C8XTWPU2.js';
|
|
9
9
|
import { i as isObjectLike, b as baseGetTag, d as debounce } from './debounce-BfO9dz9v.js';
|
|
10
|
-
import { O as ON_COLUMN_CLICK, d as dispatch } from './header-cell-renderer-
|
|
10
|
+
import { O as ON_COLUMN_CLICK, d as dispatch } from './header-cell-renderer-WkTbrmr7.js';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Plugin which recalculates realSize on changes of sizes, originItemSize and count
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
import { a5 as toFinite, a6 as keys, _ as isArrayLike, a4 as baseIteratee, Y as isArray, P as GRID_INTERNALS, a7 as isIterateeCall, a as getVisibleSourceItem, z as DISABLED_CLASS, C as CELL_CLASS, b as getSourceItem } from './dimension.helpers-
|
|
4
|
+
import { a5 as toFinite, a6 as keys, _ as isArrayLike, a4 as baseIteratee, Y as isArray, P as GRID_INTERNALS, a7 as isIterateeCall, a as getVisibleSourceItem, z as DISABLED_CLASS, C as CELL_CLASS, b as getSourceItem } from './dimension.helpers-B-5OBYes.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Converts `value` to an integer.
|
|
@@ -3270,8 +3270,16 @@ class DataStore {
|
|
|
3270
3270
|
* full data source update
|
|
3271
3271
|
* @param source - data column/rgRow source
|
|
3272
3272
|
* @param grouping - grouping information if present
|
|
3273
|
+
* @param silent - if true, store will be updated without resetting trimmed state
|
|
3274
|
+
* @param preserveTrimmed - if true, current trimmed indexes will be re-applied to the new source, use with caution because physical indexes may change across full data refreshes
|
|
3273
3275
|
*/
|
|
3274
|
-
updateData(source, grouping,
|
|
3276
|
+
updateData(source, grouping,
|
|
3277
|
+
// if true, store will be updated without resetting trimmed state
|
|
3278
|
+
silent = false,
|
|
3279
|
+
// if true, current trimmed indexes will be re-applied to the new source
|
|
3280
|
+
preserveTrimmed = false) {
|
|
3281
|
+
const trimmed = this.store.get('trimmed');
|
|
3282
|
+
const trimmedItems = silent && preserveTrimmed ? gatherTrimmedItems(trimmed) : null;
|
|
3275
3283
|
// during full update we do drop trim
|
|
3276
3284
|
if (!silent) {
|
|
3277
3285
|
this.store.set('trimmed', {});
|
|
@@ -3284,12 +3292,14 @@ class DataStore {
|
|
|
3284
3292
|
source,
|
|
3285
3293
|
proxyItems: [...items],
|
|
3286
3294
|
});
|
|
3287
|
-
//
|
|
3288
|
-
|
|
3295
|
+
// Explicit trim preservation is opt-in because physical indexes may change
|
|
3296
|
+
// across full data refreshes.
|
|
3297
|
+
this.store.set('items', trimmedItems ? items.filter(i => !trimmedItems[i]) : items);
|
|
3289
3298
|
// apply grouping if present
|
|
3290
3299
|
if (grouping) {
|
|
3291
3300
|
setStore(this.store, {
|
|
3292
3301
|
groupingDepth: grouping.depth,
|
|
3302
|
+
// if groups are not provided, we will consider that there is only one group with all items
|
|
3293
3303
|
groups: grouping.groups,
|
|
3294
3304
|
groupingCustomRenderer: grouping.customRenderer,
|
|
3295
3305
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
import { a1 as KeyCodesEnum, a2 as OsPlatform, U as codesLetter, V as keyValues, N as EDIT_INPUT_WR } from './dimension.helpers-
|
|
4
|
+
import { a1 as KeyCodesEnum, a2 as OsPlatform, U as codesLetter, V as keyValues, N as EDIT_INPUT_WR } from './dimension.helpers-B-5OBYes.js';
|
|
5
5
|
|
|
6
6
|
function isMetaKey(code) {
|
|
7
7
|
const keys = [
|
package/dist/{revo-grid/header-cell-renderer-DO0jvvbw.js → esm/header-cell-renderer-WkTbrmr7.js}
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
4
|
import { h } from './index-Chp_81rd.js';
|
|
5
|
-
import { Q as doPropMerge } from './column.service-
|
|
5
|
+
import { Q as doPropMerge } from './column.service-8pPNyrKn.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Dispatches a custom event to a specified target element.
|
package/dist/esm/index.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
export { o as GROUPING_ROW_TYPE, j as GROUP_COLUMN_PROP, G as GROUP_DEPTH, h as GROUP_EXPANDED, l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, k as GROUP_ORIGINAL_INDEX, f as PSEUDO_GROUP_COLUMN, P as PSEUDO_GROUP_ITEM, d as PSEUDO_GROUP_ITEM_ID, e as PSEUDO_GROUP_ITEM_VALUE, c as columnTypes, a as cropCellToMax, H as gatherGroup, s as gatherGrouping, z as getCellData, B as getCellDataParsed, A as getCellRaw, I as getColumnByProp, D as getColumnSizes, C as getColumnType, F as getColumns, q as getExpanded, t as getGroupingName, x as getParsedGroup, g as getRange, p as getSource, E as isColGrouping, u as isGrouping, v as isGroupingColumn, b as isRangeSingleCell, i as isRowType, y as isSameGroup, w as measureEqualDepth, n as nextCell, r as rowTypes } from './column.service-
|
|
5
|
-
import { B as BasePlugin } from './column.drag.plugin-
|
|
6
|
-
export { A as AutoSizeColumnPlugin, C as ColumnMovePlugin, D as DimensionStore, b as ExportCsv, E as ExportFilePlugin, c as FILTER_CONFIG_CHANGED_EVENT, F as FILTER_TRIMMED_TYPE, d as FILTE_PANEL, e as FilterPlugin, G as GroupingRowPlugin, S as SelectionStore, m as SortingPlugin, a as StretchColumn, n as defaultCellCompare, o as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, q as getComparer, l as getLeftRelative, p as getNextOrder, i as isStretchPlugin, s as sortIndexByItems } from './column.drag.plugin-
|
|
7
|
-
export { d as dispatch, a as dispatchByEvent } from './header-cell-renderer-
|
|
8
|
-
export { C as CellRenderer, G as GroupingRowRenderer, S as SortingSign, e as expandEvent, a as expandSvgIconVNode } from './cell-renderer-
|
|
9
|
-
export { C as CELL_CLASS, L as CELL_HANDLER_CLASS, x as DATA_COL, y as DATA_ROW, z as DISABLED_CLASS, I as DRAGGABLE_CLASS, O as DRAGG_TEXT, G as DRAG_ICON_CLASS, D as DataStore, N as EDIT_INPUT_WR, J as FOCUS_CLASS, P as GRID_INTERNALS, F as HEADER_ACTUAL_ROW_CLASS, H as HEADER_CLASS, E as HEADER_ROW_CLASS, B as HEADER_SORTABLE_CLASS, M as MIN_COL_SIZE, K as MOBILE_CLASS, R as RESIZE_INTERVAL, Q as ROW_FOCUSED_CLASS, A as ROW_HEADER_TYPE, S as SELECTION_BORDER_CLASS, T as TMP_SELECTION_BG_CLASS, v as applyMixins, i as calculateDimensionData, U as codesLetter, l as findPositionInArray, h as gatherTrimmedItems, k as getItemByIndex, j as getItemByPosition, g as getPhysical, o as getScrollbarSize, b as getSourceItem, f as getSourceItemVirtualIndexByProp, c as getSourcePhysicalIndex, a as getVisibleSourceItem, V as keyValues, n as mergeSortedArray, p as proxyPlugin, m as pushSorted, r as range, q as scaleValue, e as setItems, d as setSourceByPhysicalIndex, s as setSourceByVirtualIndex, w as setStore, u as timeout, t as trimmedPlugin } from './dimension.helpers-
|
|
10
|
-
export { T as TextEditor } from './text-editor-
|
|
11
|
-
export { k as isAll, c as isClear, h as isCopy, a as isCtrlKey, b as isCtrlMetaKey, g as isCut, l as isEditInput, m as isEditorCtrConstructible, f as isEnterKeyValue, i as isMetaKey, j as isPaste, d as isTab, e as isTabKeyValue } from './edit.utils-
|
|
4
|
+
export { o as GROUPING_ROW_TYPE, j as GROUP_COLUMN_PROP, G as GROUP_DEPTH, h as GROUP_EXPANDED, l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, k as GROUP_ORIGINAL_INDEX, f as PSEUDO_GROUP_COLUMN, P as PSEUDO_GROUP_ITEM, d as PSEUDO_GROUP_ITEM_ID, e as PSEUDO_GROUP_ITEM_VALUE, c as columnTypes, a as cropCellToMax, H as gatherGroup, s as gatherGrouping, z as getCellData, B as getCellDataParsed, A as getCellRaw, I as getColumnByProp, D as getColumnSizes, C as getColumnType, F as getColumns, q as getExpanded, t as getGroupingName, x as getParsedGroup, g as getRange, p as getSource, E as isColGrouping, u as isGrouping, v as isGroupingColumn, b as isRangeSingleCell, i as isRowType, y as isSameGroup, w as measureEqualDepth, n as nextCell, r as rowTypes } from './column.service-8pPNyrKn.js';
|
|
5
|
+
import { B as BasePlugin } from './column.drag.plugin-C9lvlTfl.js';
|
|
6
|
+
export { A as AutoSizeColumnPlugin, C as ColumnMovePlugin, D as DimensionStore, b as ExportCsv, E as ExportFilePlugin, c as FILTER_CONFIG_CHANGED_EVENT, F as FILTER_TRIMMED_TYPE, d as FILTE_PANEL, e as FilterPlugin, G as GroupingRowPlugin, S as SelectionStore, m as SortingPlugin, a as StretchColumn, n as defaultCellCompare, o as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, q as getComparer, l as getLeftRelative, p as getNextOrder, i as isStretchPlugin, s as sortIndexByItems } from './column.drag.plugin-C9lvlTfl.js';
|
|
7
|
+
export { d as dispatch, a as dispatchByEvent } from './header-cell-renderer-WkTbrmr7.js';
|
|
8
|
+
export { C as CellRenderer, G as GroupingRowRenderer, S as SortingSign, e as expandEvent, a as expandSvgIconVNode } from './cell-renderer-BNeaYjy6.js';
|
|
9
|
+
export { C as CELL_CLASS, L as CELL_HANDLER_CLASS, x as DATA_COL, y as DATA_ROW, z as DISABLED_CLASS, I as DRAGGABLE_CLASS, O as DRAGG_TEXT, G as DRAG_ICON_CLASS, D as DataStore, N as EDIT_INPUT_WR, J as FOCUS_CLASS, P as GRID_INTERNALS, F as HEADER_ACTUAL_ROW_CLASS, H as HEADER_CLASS, E as HEADER_ROW_CLASS, B as HEADER_SORTABLE_CLASS, M as MIN_COL_SIZE, K as MOBILE_CLASS, R as RESIZE_INTERVAL, Q as ROW_FOCUSED_CLASS, A as ROW_HEADER_TYPE, S as SELECTION_BORDER_CLASS, T as TMP_SELECTION_BG_CLASS, v as applyMixins, i as calculateDimensionData, U as codesLetter, l as findPositionInArray, h as gatherTrimmedItems, k as getItemByIndex, j as getItemByPosition, g as getPhysical, o as getScrollbarSize, b as getSourceItem, f as getSourceItemVirtualIndexByProp, c as getSourcePhysicalIndex, a as getVisibleSourceItem, V as keyValues, n as mergeSortedArray, p as proxyPlugin, m as pushSorted, r as range, q as scaleValue, e as setItems, d as setSourceByPhysicalIndex, s as setSourceByVirtualIndex, w as setStore, u as timeout, t as trimmedPlugin } from './dimension.helpers-B-5OBYes.js';
|
|
10
|
+
export { T as TextEditor } from './text-editor-DZSx2pWr.js';
|
|
11
|
+
export { k as isAll, c as isClear, h as isCopy, a as isCtrlKey, b as isCtrlMetaKey, g as isCut, l as isEditInput, m as isEditorCtrConstructible, f as isEnterKeyValue, i as isMetaKey, j as isPaste, d as isTab, e as isTabKeyValue } from './edit.utils-CQjRmx5n.js';
|
|
12
12
|
export { h } from './index-Chp_81rd.js';
|
|
13
|
-
export { V as ViewportStore, a as addMissingItems, f as calculateRowHeaderSize, d as getFirstItem, b as getItems, e as getLastItem, g as getUpdatedItemsByPosition, i as isActiveRange, c as isActiveRangeOutsideLastItem, r as recombineByOffset, s as setItemSizes, u as updateMissingAndRange } from './viewport.store-
|
|
13
|
+
export { V as ViewportStore, a as addMissingItems, f as calculateRowHeaderSize, d as getFirstItem, b as getItems, e as getLastItem, g as getUpdatedItemsByPosition, i as isActiveRange, c as isActiveRangeOutsideLastItem, r as recombineByOffset, s as setItemSizes, u as updateMissingAndRange } from './viewport.store-BGWR3XfI.js';
|
|
14
14
|
export { A as AND_OR_BUTTON, e as AndOrButton, a as FILTER_BUTTON_ACTIVE, F as FILTER_BUTTON_CLASS, b as FILTER_PROP, c as FilterButton, T as TRASH_BUTTON, d as TrashButton, i as isFilterBtn } from './filter.button-C8XTWPU2.js';
|
|
15
15
|
import './debounce-BfO9dz9v.js';
|
|
16
16
|
|
|
@@ -34,6 +34,7 @@ const REVOGRID_EVENTS = new Map([
|
|
|
34
34
|
['beforeanysource', 'beforeanysource'],
|
|
35
35
|
['aftersourceset', 'aftersourceset'],
|
|
36
36
|
['afteranysource', 'afteranysource'],
|
|
37
|
+
['beforecolumnsgather', 'beforecolumnsgather'],
|
|
37
38
|
['beforecolumnsset', 'beforecolumnsset'],
|
|
38
39
|
['beforecolumnapplied', 'beforecolumnapplied'],
|
|
39
40
|
['aftercolumnsset', 'aftercolumnsset'],
|
package/dist/esm/loader.js
CHANGED
|
@@ -9,7 +9,7 @@ import './theme.service-BmnDvr6P.js';
|
|
|
9
9
|
const defineCustomElements = async (win, options) => {
|
|
10
10
|
if (typeof window === 'undefined') return undefined;
|
|
11
11
|
await globalScripts();
|
|
12
|
-
return bootstrapLazy([["revo-grid",[[260,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyOnClose":[4,"apply-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"sorting":[16],"focusTemplate":[16],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"additionalData":[16],"disableVirtualX":[4,"disable-virtual-x"],"disableVirtualY":[4,"disable-virtual-y"],"hideAttribution":[4,"hide-attribution"],"jobsBeforeRender":[16],"registerVNode":[16],"accessible":[4],"rtl":[4],"canDrag":[4,"can-drag"],"refresh":[64],"setDataAt":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64],"refreshExtraElements":[64],"getProviders":[64]},[[5,"touchstart","mousedownHandle"],[5,"mousedown","mousedownHandle"],[5,"touchend","mouseupHandle"],[5,"mouseup","mouseupHandle"],[0,"rowdragstartinit","onRowDragStarted"],[0,"rowdragendinit","onRowDragEnd"],[0,"roworderchange","onRowOrderChange"],[0,"rowdragmoveinit","onRowDrag"],[0,"rowdragmousemove","onRowMouseMove"],[0,"celleditapply","onCellEdit"],[0,"rangeeditapply","onRangeEdit"],[0,"selectionchangeinit","onRangeChanged"],[0,"rowdropinit","onRowDropped"],[0,"beforeheaderclick","onHeaderClick"],[0,"beforecellfocusinit","onCellFocus"]],{"columnTypes":[{"columnTypesChanged":0}],"columns":[{"columnChanged":0}],"disableVirtualX":[{"disableVirtualXChanged":0}],"rowSize":[{"rowSizeChanged":0}],"theme":[{"themeChanged":0}],"source":[{"dataSourceChanged":0}],"pinnedBottomSource":[{"dataSourceChanged":0}],"pinnedTopSource":[{"dataSourceChanged":0}],"disableVirtualY":[{"disableVirtualYChanged":0}],"rowDefinitions":[{"rowDefChanged":0}],"trimmedRows":[{"trimmedRowsChanged":0}],"grouping":[{"groupingChanged":0}],"stretch":[{"applyStretch":0}],"filter":[{"applyFilter":0}],"sorting":[{"applySorting":0}],"rowHeaders":[{"rowHeadersChange":0}],"registerVNode":[{"registerOutsideVNodes":0}],"additionalData":[{"additionalDataChanged":0}],"rtl":[{"rtlChanged":0}],"plugins":[{"pluginsChanged":0}]}]]],["revogr-filter-panel",[[260,"revogr-filter-panel",{"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"closeOnOutsideClick":[4,"close-on-outside-click"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"filterItems":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revogr-clipboard_3",[[0,"revogr-clipboard",{"readonly":[4],"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"],[4,"cut","cutStarted"]]],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"additionalData":[8,"additional-data"],"cancelChanges":[64],"beforeDisconnect":[64]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"rowType":[1,"row-type"],"dragStart":[64],"endOrder":[64],"clearOrder":[64]}]]],["revogr-data_4",[[260,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"additionalData":[8,"additional-data"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[513],"colType":[513,"col-type"],"jobsBeforeRender":[16],"providers":[32],"updateCell":[64]},null,{"dataStore":[{"onDataStoreChange":0}],"colData":[{"onColDataChange":0}]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"groups":[16],"groupingDepth":[2,"grouping-depth"],"readonly":[4],"canResize":[4,"can-resize"],"resizeHandler":[16],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1],"additionalData":[8,"additional-data"]}],[260,"revogr-viewport-scroll",{"rowHeader":[4,"row-header"],"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"colType":[1,"col-type"],"setScroll":[64],"changeScroll":[64],"applyScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]],[0,"vnode-html",{"redraw":[16]}]]],["revogr-attribution_7",[[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16],"additionalData":[8,"additional-data"],"jobsBeforeRender":[16]}],[260,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"],"additionalData":[8,"additional-data"],"isMobileDevice":[4,"is-mobile-device"]},[[5,"touchmove","onMouseMove"],[5,"mousemove","onMouseMove"],[5,"touchend","onMouseUp"],[5,"mouseup","onMouseUp"],[5,"mouseleave","onMouseUp"],[0,"dragstartcell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]],{"selectionStore":[{"selectionServiceSet":0}],"dimensionRow":[{"createAutoFillService":0}],"dimensionCol":[{"createAutoFillService":0}],"dataStore":[{"columnServiceSet":0}],"colData":[{"columnServiceSet":0}]}],[0,"revogr-attribution"],[260,"revogr-focus",{"colType":[1,"col-type"],"rowType":[1,"row-type"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"focusTemplate":[16]}],[0,"revogr-scroll-virtual",{"dimension":[1],"realSize":[2,"real-size"],"virtualSize":[2,"virtual-size"],"clientSize":[2,"client-size"],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-extra",{"nodes":[16],"update":[32],"refresh":[64]}]]]], options);
|
|
12
|
+
return bootstrapLazy([["revo-grid",[[260,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyOnClose":[4,"apply-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"sorting":[16],"focusTemplate":[16],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"additionalData":[16],"disableVirtualX":[4,"disable-virtual-x"],"disableVirtualY":[4,"disable-virtual-y"],"hideAttribution":[4,"hide-attribution"],"jobsBeforeRender":[16],"registerVNode":[16],"accessible":[4],"rtl":[4],"canDrag":[4,"can-drag"],"refresh":[64],"setDataAt":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64],"refreshExtraElements":[64],"getProviders":[64]},[[5,"touchstart","mousedownHandle"],[5,"mousedown","mousedownHandle"],[5,"touchend","mouseupHandle"],[5,"mouseup","mouseupHandle"],[0,"rowdragstartinit","onRowDragStarted"],[0,"rowdragendinit","onRowDragEnd"],[0,"roworderchange","onRowOrderChange"],[0,"rowdragmoveinit","onRowDrag"],[0,"rowdragmousemove","onRowMouseMove"],[0,"celleditapply","onCellEdit"],[0,"rangeeditapply","onRangeEdit"],[0,"selectionchangeinit","onRangeChanged"],[0,"rowdropinit","onRowDropped"],[0,"beforeheaderclick","onHeaderClick"],[0,"beforecellfocusinit","onCellFocus"]],{"columnTypes":[{"columnTypesChanged":0}],"columns":[{"columnChanged":0}],"disableVirtualX":[{"disableVirtualXChanged":0}],"rowSize":[{"rowSizeChanged":0}],"theme":[{"themeChanged":0}],"source":[{"dataSourceChanged":0}],"pinnedBottomSource":[{"dataSourceChanged":0}],"pinnedTopSource":[{"dataSourceChanged":0}],"disableVirtualY":[{"disableVirtualYChanged":0}],"rowDefinitions":[{"rowDefChanged":0}],"trimmedRows":[{"trimmedRowsChanged":0}],"grouping":[{"groupingChanged":0}],"stretch":[{"applyStretch":0}],"filter":[{"applyFilter":0}],"sorting":[{"applySorting":0}],"rowHeaders":[{"rowHeadersChange":0}],"registerVNode":[{"registerOutsideVNodes":0}],"additionalData":[{"additionalDataChanged":0}],"rtl":[{"rtlChanged":0}],"plugins":[{"pluginsChanged":0}]}]]],["revogr-filter-panel",[[260,"revogr-filter-panel",{"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"closeOnOutsideClick":[4,"close-on-outside-click"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"filterItems":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revogr-clipboard_3",[[0,"revogr-clipboard",{"readonly":[4],"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"],[4,"cut","cutStarted"]]],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"additionalData":[8,"additional-data"],"cancelChanges":[64],"beforeDisconnect":[64]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"rowType":[1,"row-type"],"dragStart":[64],"endOrder":[64],"clearOrder":[64]}]]],["revogr-data_4",[[260,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"additionalData":[8,"additional-data"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[513],"colType":[513,"col-type"],"jobsBeforeRender":[16],"providers":[32],"updateCell":[64]},null,{"dataStore":[{"onDataStoreChange":0}],"colData":[{"onColDataChange":0}]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"groups":[16],"groupingDepth":[2,"grouping-depth"],"readonly":[4],"canResize":[4,"can-resize"],"resizeHandler":[16],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1],"additionalData":[8,"additional-data"]}],[260,"revogr-viewport-scroll",{"rowHeader":[4,"row-header"],"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"colType":[1,"col-type"],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"setScroll":[64],"changeScroll":[64],"applyScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]],[0,"vnode-html",{"redraw":[16]}]]],["revogr-attribution_7",[[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16],"additionalData":[8,"additional-data"],"jobsBeforeRender":[16]}],[260,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"],"additionalData":[8,"additional-data"],"isMobileDevice":[4,"is-mobile-device"]},[[5,"touchmove","onMouseMove"],[5,"mousemove","onMouseMove"],[5,"touchend","onMouseUp"],[5,"mouseup","onMouseUp"],[5,"mouseleave","onMouseUp"],[0,"dragstartcell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]],{"selectionStore":[{"selectionServiceSet":0}],"dimensionRow":[{"createAutoFillService":0}],"dimensionCol":[{"createAutoFillService":0}],"dataStore":[{"columnServiceSet":0}],"colData":[{"columnServiceSet":0}]}],[0,"revogr-attribution"],[260,"revogr-focus",{"colType":[1,"col-type"],"rowType":[1,"row-type"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"focusTemplate":[16]}],[0,"revogr-scroll-virtual",{"dimension":[1],"realSize":[2,"real-size"],"virtualSize":[2,"virtual-size"],"clientSize":[2,"client-size"],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-extra",{"nodes":[16],"update":[32],"refresh":[64]}]]]], options);
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
export { defineCustomElements };
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
4
|
import { h, r as registerInstance, d as createEvent, e as Host, g as getElement } from './index-Chp_81rd.js';
|
|
5
|
-
import { c as columnTypes, J as reduce, C as getColumnType, r as rowTypes, i as isRowType, D as getColumnSizes, a as cropCellToMax, n as nextCell, I as getColumnByProp, F as getColumns } from './column.service-
|
|
6
|
-
import { D as DataStore, b as getSourceItem, f as getSourceItemVirtualIndexByProp, d as setSourceByPhysicalIndex, s as setSourceByVirtualIndex, a as getVisibleSourceItem, h as gatherTrimmedItems, k as getItemByIndex, R as RESIZE_INTERVAL, u as timeout } from './dimension.helpers-
|
|
5
|
+
import { c as columnTypes, J as reduce, C as getColumnType, r as rowTypes, i as isRowType, D as getColumnSizes, a as cropCellToMax, n as nextCell, I as getColumnByProp, F as getColumns } from './column.service-8pPNyrKn.js';
|
|
6
|
+
import { D as DataStore, b as getSourceItem, f as getSourceItemVirtualIndexByProp, d as setSourceByPhysicalIndex, s as setSourceByVirtualIndex, a as getVisibleSourceItem, h as gatherTrimmedItems, k as getItemByIndex, R as RESIZE_INTERVAL, u as timeout } from './dimension.helpers-B-5OBYes.js';
|
|
7
7
|
import { d as debounce } from './debounce-BfO9dz9v.js';
|
|
8
|
-
import { D as DimensionStore, S as SelectionStore, B as BasePlugin, G as GroupingRowPlugin, a as StretchColumn, i as isStretchPlugin, A as AutoSizeColumnPlugin, e as FilterPlugin, E as ExportFilePlugin, m as SortingPlugin, C as ColumnMovePlugin } from './column.drag.plugin-
|
|
9
|
-
import { V as ViewportStore } from './viewport.store-
|
|
8
|
+
import { D as DimensionStore, S as SelectionStore, B as BasePlugin, G as GroupingRowPlugin, a as StretchColumn, i as isStretchPlugin, A as AutoSizeColumnPlugin, e as FilterPlugin, E as ExportFilePlugin, m as SortingPlugin, C as ColumnMovePlugin } from './column.drag.plugin-C9lvlTfl.js';
|
|
9
|
+
import { V as ViewportStore } from './viewport.store-BGWR3XfI.js';
|
|
10
10
|
import { T as ThemeService } from './theme.service-BmnDvr6P.js';
|
|
11
11
|
import { v as viewportDataPartition, F as FOOTER_SLOT, C as CONTENT_SLOT, H as HEADER_SLOT, D as DATA_SLOT } from './viewport.helpers-VXhsJZtn.js';
|
|
12
12
|
import { g as getPropertyFromEvent } from './events-BvSmBueA.js';
|
|
13
13
|
import './filter.button-C8XTWPU2.js';
|
|
14
|
-
import './header-cell-renderer-
|
|
14
|
+
import './header-cell-renderer-WkTbrmr7.js';
|
|
15
15
|
|
|
16
16
|
class ColumnDataProvider {
|
|
17
17
|
get stores() {
|
|
@@ -139,9 +139,25 @@ class DataProvider {
|
|
|
139
139
|
return sources;
|
|
140
140
|
}, {});
|
|
141
141
|
}
|
|
142
|
-
|
|
142
|
+
/**
|
|
143
|
+
* Replaces the data source for a row type and synchronizes the related dimension metadata.
|
|
144
|
+
*
|
|
145
|
+
* `rgRow` updates also refresh the virtual row model unless `disableVirtualRows` is set.
|
|
146
|
+
* Pinned row types skip virtual row recalculation because they are rendered directly.
|
|
147
|
+
*
|
|
148
|
+
* @param data Full source data assigned to the target row store.
|
|
149
|
+
* @param type Row collection to update. Defaults to the main body rows.
|
|
150
|
+
* @param disableVirtualRows Prevents recalculating virtual rows for the main row store.
|
|
151
|
+
* @param grouping Optional grouping metadata applied together with the new data set.
|
|
152
|
+
* @param silent Preserves the current trimmed state instead of resetting it during the update.
|
|
153
|
+
* @param preserveTrimmed Re-applies current trimmed indexes after a silent update.
|
|
154
|
+
* @returns The same `data` array that was provided to the method.
|
|
155
|
+
*/
|
|
156
|
+
setData(data, type = 'rgRow', disableVirtualRows = false, grouping,
|
|
157
|
+
// if true, store will be updated without resetting trimmed state
|
|
158
|
+
silent = false, preserveTrimmed = false) {
|
|
143
159
|
// set rgRow data
|
|
144
|
-
this.stores[type].updateData([...data], grouping, silent);
|
|
160
|
+
this.stores[type].updateData([...data], grouping, silent, preserveTrimmed);
|
|
145
161
|
// for pinned row no need virtual data
|
|
146
162
|
const noVirtual = type !== 'rgRow' || disableVirtualRows;
|
|
147
163
|
this.dimensionProvider.setData(data.length, type, noVirtual);
|
|
@@ -400,6 +416,7 @@ function gatherColumnData(data) {
|
|
|
400
416
|
contentHeight: data.contentHeight,
|
|
401
417
|
key: data.colType,
|
|
402
418
|
colType: data.colType,
|
|
419
|
+
noHorizontalScrollTransfer: data.noHorizontalScrollTransfer,
|
|
403
420
|
onResizeviewport: data.onResizeviewport,
|
|
404
421
|
// set viewport size to real size
|
|
405
422
|
style: data.fixWidth ? { minWidth: `${realWidth}px` } : undefined,
|
|
@@ -444,6 +461,7 @@ class ViewportService {
|
|
|
444
461
|
viewports: config.viewportProvider.stores,
|
|
445
462
|
dimensions: config.dimensionProvider.stores,
|
|
446
463
|
rowStores: config.dataProvider.stores,
|
|
464
|
+
noHorizontalScrollTransfer: config.noHorizontalScrollTransfer,
|
|
447
465
|
colStore,
|
|
448
466
|
onHeaderresize: e => this.onColumnResize(val, e, colStore),
|
|
449
467
|
};
|
|
@@ -622,11 +640,11 @@ class GridScrollingService {
|
|
|
622
640
|
this.setViewport = setViewport;
|
|
623
641
|
this.elements = {};
|
|
624
642
|
}
|
|
625
|
-
async proxyScroll(e, key) {
|
|
643
|
+
async proxyScroll(e, key, skipEvent) {
|
|
626
644
|
var _a;
|
|
627
645
|
let newEventPromise;
|
|
628
646
|
let event = e;
|
|
629
|
-
for (let elKey in this.elements) {
|
|
647
|
+
for (let elKey in (skipEvent ? {} : this.elements)) {
|
|
630
648
|
// skip
|
|
631
649
|
if (e.dimension === 'rgCol' && elKey === 'headerRow') {
|
|
632
650
|
continue;
|
|
@@ -1340,6 +1358,7 @@ const RevoGridComponent = class {
|
|
|
1340
1358
|
this.beforeanysource = createEvent(this, "beforeanysource", 7);
|
|
1341
1359
|
this.aftersourceset = createEvent(this, "aftersourceset", 7);
|
|
1342
1360
|
this.afteranysource = createEvent(this, "afteranysource", 7);
|
|
1361
|
+
this.beforecolumnsgather = createEvent(this, "beforecolumnsgather", 7);
|
|
1343
1362
|
this.beforecolumnsset = createEvent(this, "beforecolumnsset", 7);
|
|
1344
1363
|
this.beforecolumnapplied = createEvent(this, "beforecolumnapplied", 7);
|
|
1345
1364
|
this.aftercolumnsset = createEvent(this, "aftercolumnsset", 7);
|
|
@@ -1380,6 +1399,10 @@ const RevoGridComponent = class {
|
|
|
1380
1399
|
this.readonly = false;
|
|
1381
1400
|
/** When true, columns are resizable. */
|
|
1382
1401
|
this.resize = false;
|
|
1402
|
+
/**
|
|
1403
|
+
* Prevents horizontal scroll state from being mirrored across viewport sections.
|
|
1404
|
+
*/
|
|
1405
|
+
this.noHorizontalScrollTransfer = false;
|
|
1383
1406
|
/** When true cell focus appear. */
|
|
1384
1407
|
this.canFocus = true;
|
|
1385
1408
|
/** When true enable clipboard. */
|
|
@@ -1915,7 +1938,13 @@ const RevoGridComponent = class {
|
|
|
1915
1938
|
if (!this.dimensionProvider || !this.columnProvider) {
|
|
1916
1939
|
return;
|
|
1917
1940
|
}
|
|
1918
|
-
const
|
|
1941
|
+
const beforeGatherEvent = this.beforecolumnsgather.emit({
|
|
1942
|
+
columns: [...newVal],
|
|
1943
|
+
});
|
|
1944
|
+
if (beforeGatherEvent.defaultPrevented) {
|
|
1945
|
+
return;
|
|
1946
|
+
}
|
|
1947
|
+
const columnGather = getColumns(beforeGatherEvent.detail.columns, 0, this.columnTypes);
|
|
1919
1948
|
const beforeSetEvent = this.beforecolumnsset.emit(columnGather);
|
|
1920
1949
|
if (beforeSetEvent.defaultPrevented) {
|
|
1921
1950
|
return;
|
|
@@ -2262,6 +2291,7 @@ const RevoGridComponent = class {
|
|
|
2262
2291
|
scrollingService: this.scrollingService,
|
|
2263
2292
|
orderService: this.orderService,
|
|
2264
2293
|
selectionStoreConnector: this.selectionStoreConnector,
|
|
2294
|
+
noHorizontalScrollTransfer: this.noHorizontalScrollTransfer,
|
|
2265
2295
|
disableVirtualX: this.disableVirtualX,
|
|
2266
2296
|
disableVirtualY: this.disableVirtualY,
|
|
2267
2297
|
resize: c => this.aftercolumnresize.emit(c),
|
|
@@ -2302,7 +2332,9 @@ const RevoGridComponent = class {
|
|
|
2302
2332
|
dataViews.push(dataView);
|
|
2303
2333
|
});
|
|
2304
2334
|
// Add viewport scroll in the end
|
|
2305
|
-
viewPortHtml.push(h("revogr-viewport-scroll", Object.assign({}, view.prop, { ref: el => this.scrollingService.registerElement(el, `${view.prop.key}`), onScrollviewport: e =>
|
|
2335
|
+
viewPortHtml.push(h("revogr-viewport-scroll", Object.assign({}, view.prop, { ref: el => this.scrollingService.registerElement(el, `${view.prop.key}`), onScrollviewport: e => {
|
|
2336
|
+
this.scrollingService.proxyScroll(e.detail, `${view.prop.key}`, this.noHorizontalScrollTransfer && e.detail.dimension === 'rgCol');
|
|
2337
|
+
}, onScrollviewportsilent: e => this.scrollingService.scrollSilentService(e.detail, `${view.prop.key}`) }), dataViews));
|
|
2306
2338
|
}
|
|
2307
2339
|
viewportSections.push(viewPortHtml);
|
|
2308
2340
|
// #endregion
|