@revolist/revogrid 4.0.36 → 4.0.39
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/revo-grid.cjs.entry.js +56 -35
- package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
- package/dist/collection/components/revoGrid/revo-grid.js +56 -35
- package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
- package/dist/esm/revo-grid.entry.js +56 -35
- package/dist/esm/revo-grid.entry.js.map +1 -1
- package/dist/revo-grid/revo-grid.entry.js +1 -1
- package/dist/revo-grid/revo-grid.entry.js.map +1 -1
- package/dist/types/components/revoGrid/revo-grid.d.ts +12 -2
- package/hydrate/index.js +56 -35
- package/hydrate/index.mjs +56 -35
- package/package.json +5 -1
- package/standalone/revo-grid.js +56 -35
- package/standalone/revo-grid.js.map +1 -1
|
@@ -528,6 +528,7 @@ export declare class RevoGridComponent {
|
|
|
528
528
|
viewportProvider: ViewportProvider;
|
|
529
529
|
private themeService;
|
|
530
530
|
private viewport;
|
|
531
|
+
private isInited;
|
|
531
532
|
private orderService;
|
|
532
533
|
private selectionStoreConnector;
|
|
533
534
|
private scrollingService;
|
|
@@ -559,8 +560,17 @@ export declare class RevoGridComponent {
|
|
|
559
560
|
* Register external VNodes
|
|
560
561
|
*/
|
|
561
562
|
registerOutsideVNodes(elements?: VNode[]): void;
|
|
562
|
-
|
|
563
|
+
private setPlugins;
|
|
564
|
+
private removePlugins;
|
|
563
565
|
connectedCallback(): void;
|
|
564
|
-
|
|
566
|
+
/**
|
|
567
|
+
* Called once just after the component is first connected to the DOM.
|
|
568
|
+
* Since this method is only called once, it's a good place to load data asynchronously and to setup the state
|
|
569
|
+
* without triggering extra re-renders.
|
|
570
|
+
* A promise can be returned, that can be used to wait for the first render().
|
|
571
|
+
*/
|
|
572
|
+
componentWillLoad(): void;
|
|
573
|
+
componentWillRender(): false | Promise<any[]>;
|
|
565
574
|
render(): any;
|
|
575
|
+
disconnectedCallback(): void;
|
|
566
576
|
}
|
package/hydrate/index.js
CHANGED
|
@@ -14092,6 +14092,7 @@ class RevoGridComponent {
|
|
|
14092
14092
|
// UUID required to support multiple grids in one page and avoid collision
|
|
14093
14093
|
this.uuid = null;
|
|
14094
14094
|
this.viewport = null;
|
|
14095
|
+
this.isInited = false;
|
|
14095
14096
|
/**
|
|
14096
14097
|
* Plugins
|
|
14097
14098
|
* Define plugins collection
|
|
@@ -14602,30 +14603,11 @@ class RevoGridComponent {
|
|
|
14602
14603
|
this.extraElements = [...this.extraElements, ...elements];
|
|
14603
14604
|
}
|
|
14604
14605
|
// #endregion
|
|
14605
|
-
|
|
14606
|
-
|
|
14607
|
-
|
|
14608
|
-
|
|
14609
|
-
|
|
14610
|
-
return Promise.all(this.jobsBeforeRender);
|
|
14611
|
-
}
|
|
14612
|
-
connectedCallback() {
|
|
14613
|
-
// #region Setup Providers
|
|
14614
|
-
this.viewportProvider = new ViewportProvider();
|
|
14615
|
-
this.themeService = new ThemeService({
|
|
14616
|
-
rowSize: this.rowSize,
|
|
14617
|
-
});
|
|
14618
|
-
this.dimensionProvider = new DimensionProvider(this.viewportProvider, {
|
|
14619
|
-
realSizeChanged: (k) => this.contentsizechanged.emit(k),
|
|
14620
|
-
});
|
|
14621
|
-
this.columnProvider = new ColumnDataProvider();
|
|
14622
|
-
this.selectionStoreConnector = new SelectionStoreConnector();
|
|
14623
|
-
this.dataProvider = new DataProvider(this.dimensionProvider);
|
|
14624
|
-
// #endregion
|
|
14625
|
-
// generate uuid for this grid
|
|
14626
|
-
this.uuid = `${new Date().getTime()}-rvgrid`;
|
|
14627
|
-
this.registerOutsideVNodes(this.registerVNode);
|
|
14628
|
-
// #region Plugins
|
|
14606
|
+
// #region Plugins
|
|
14607
|
+
setPlugins() {
|
|
14608
|
+
var _a;
|
|
14609
|
+
// remove old plugins if any
|
|
14610
|
+
this.removePlugins();
|
|
14629
14611
|
// pass data provider to plugins
|
|
14630
14612
|
const pluginData = {
|
|
14631
14613
|
data: this.dataProvider,
|
|
@@ -14656,12 +14638,43 @@ class RevoGridComponent {
|
|
|
14656
14638
|
this.internalPlugins.push(new ColumnPlugin(this.element, pluginData));
|
|
14657
14639
|
}
|
|
14658
14640
|
// register user plugins
|
|
14659
|
-
|
|
14660
|
-
|
|
14661
|
-
|
|
14662
|
-
|
|
14641
|
+
(_a = this.plugins) === null || _a === void 0 ? void 0 : _a.forEach(p => this.internalPlugins.push(new p(this.element, pluginData)));
|
|
14642
|
+
}
|
|
14643
|
+
removePlugins() {
|
|
14644
|
+
this.internalPlugins.forEach(p => p.destroy());
|
|
14645
|
+
this.internalPlugins = [];
|
|
14646
|
+
}
|
|
14647
|
+
// #endregion
|
|
14648
|
+
// if reconnect to dom we need to set up plugins
|
|
14649
|
+
connectedCallback() {
|
|
14650
|
+
if (this.isInited) {
|
|
14651
|
+
this.setPlugins();
|
|
14663
14652
|
}
|
|
14653
|
+
}
|
|
14654
|
+
/**
|
|
14655
|
+
* Called once just after the component is first connected to the DOM.
|
|
14656
|
+
* Since this method is only called once, it's a good place to load data asynchronously and to setup the state
|
|
14657
|
+
* without triggering extra re-renders.
|
|
14658
|
+
* A promise can be returned, that can be used to wait for the first render().
|
|
14659
|
+
*/
|
|
14660
|
+
componentWillLoad() {
|
|
14661
|
+
// #region Setup Providers
|
|
14662
|
+
this.viewportProvider = new ViewportProvider();
|
|
14663
|
+
this.themeService = new ThemeService({
|
|
14664
|
+
rowSize: this.rowSize,
|
|
14665
|
+
});
|
|
14666
|
+
this.dimensionProvider = new DimensionProvider(this.viewportProvider, {
|
|
14667
|
+
realSizeChanged: (k) => this.contentsizechanged.emit(k),
|
|
14668
|
+
});
|
|
14669
|
+
this.columnProvider = new ColumnDataProvider();
|
|
14670
|
+
this.selectionStoreConnector = new SelectionStoreConnector();
|
|
14671
|
+
this.dataProvider = new DataProvider(this.dimensionProvider);
|
|
14664
14672
|
// #endregion
|
|
14673
|
+
// generate uuid for this grid
|
|
14674
|
+
this.uuid = `rv--${Math.random().toString(36).slice(2, 6)}-${Date.now()}`;
|
|
14675
|
+
this.registerOutsideVNodes(this.registerVNode);
|
|
14676
|
+
// init plugins
|
|
14677
|
+
this.setPlugins();
|
|
14665
14678
|
// set data
|
|
14666
14679
|
this.applyStretch(this.stretch);
|
|
14667
14680
|
this.themeChanged(this.theme, undefined, undefined, true);
|
|
@@ -14681,11 +14694,15 @@ class RevoGridComponent {
|
|
|
14681
14694
|
this.viewportscroll.emit(e);
|
|
14682
14695
|
});
|
|
14683
14696
|
this.aftergridinit.emit();
|
|
14697
|
+
// set inited flag for connectedCallback
|
|
14698
|
+
this.isInited = true;
|
|
14684
14699
|
}
|
|
14685
|
-
|
|
14686
|
-
|
|
14687
|
-
|
|
14688
|
-
|
|
14700
|
+
componentWillRender() {
|
|
14701
|
+
const event = this.beforegridrender.emit();
|
|
14702
|
+
if (event.defaultPrevented) {
|
|
14703
|
+
return false;
|
|
14704
|
+
}
|
|
14705
|
+
return Promise.all(this.jobsBeforeRender);
|
|
14689
14706
|
}
|
|
14690
14707
|
render() {
|
|
14691
14708
|
const contentHeight = this.dimensionProvider.stores['rgRow'].store.get('realSize');
|
|
@@ -14723,7 +14740,7 @@ class RevoGridComponent {
|
|
|
14723
14740
|
const headerProperties = Object.assign(Object.assign({}, view.headerProp), { type: view.type, additionalData: this.additionalData, viewportCol: view.viewportCol, selectionStore: view.columnSelectionStore, canResize: this.resize, readonly: this.readonly, columnFilter: !!this.filter });
|
|
14724
14741
|
// Column headers
|
|
14725
14742
|
const dataViews = [
|
|
14726
|
-
hAsync("revogr-header", Object.assign({ key: '
|
|
14743
|
+
hAsync("revogr-header", Object.assign({ key: '67b0af56acae99e5b999c0b338a279b076022171' }, headerProperties, { slot: HEADER_SLOT })),
|
|
14727
14744
|
];
|
|
14728
14745
|
// Render viewport data (vertical sections)
|
|
14729
14746
|
view.dataPorts.forEach(data => {
|
|
@@ -14745,11 +14762,15 @@ class RevoGridComponent {
|
|
|
14745
14762
|
const typeCol = 'rgCol';
|
|
14746
14763
|
const viewports = this.viewportProvider.stores;
|
|
14747
14764
|
const dimensions = this.dimensionProvider.stores;
|
|
14748
|
-
return (hAsync(Host, { key: '
|
|
14765
|
+
return (hAsync(Host, { key: '3837943944ca3c255083a2fa7fa125291442b98a', [`${UUID}`]: this.uuid }, this.hideAttribution ? null : (hAsync("revogr-attribution", { class: "attribution" })), hAsync("div", { key: '97e0e9cbd158c398945e0d5c0c43a93422c090f9', class: "main-viewport", onClick: (e) => {
|
|
14749
14766
|
if (e.currentTarget === e.target) {
|
|
14750
14767
|
this.viewport.clearEdit();
|
|
14751
14768
|
}
|
|
14752
|
-
} }, hAsync("div", { key: '
|
|
14769
|
+
} }, hAsync("div", { key: '9c77a61499d749aa2e786f593715d8bcacdb3ad0', class: "viewports" }, hAsync("slot", { key: '8af1657ec8ec9b7f56afe957f589d64b55c53bcd', name: "viewport" }), viewportSections, hAsync("revogr-scroll-virtual", { key: '1947f0706d5e9e552822a44a55504ae82c603ce7', class: "vertical", dimension: typeRow, viewportStore: viewports[typeRow].store, dimensionStore: dimensions[typeRow].store, ref: el => this.scrollingService.registerElement(el, 'rowScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), hAsync(OrderRenderer, { key: '6cf863db4b189cf9480d5aca1473832f0ee322b5', ref: e => (this.orderService = e) }))), hAsync("revogr-scroll-virtual", { key: '542cc17558cc0cfa1def201870e0cac8f83ebd36', class: "horizontal", dimension: typeCol, viewportStore: viewports[typeCol].store, dimensionStore: dimensions[typeCol].store, ref: el => this.scrollingService.registerElement(el, 'colScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), this.extraElements));
|
|
14770
|
+
}
|
|
14771
|
+
disconnectedCallback() {
|
|
14772
|
+
// Remove all plugins, to avoid memory leaks and unexpected behaviour when the component is removed
|
|
14773
|
+
this.removePlugins();
|
|
14753
14774
|
}
|
|
14754
14775
|
get element() { return getElement(this); }
|
|
14755
14776
|
static get watchers() { return {
|
package/hydrate/index.mjs
CHANGED
|
@@ -14088,6 +14088,7 @@ class RevoGridComponent {
|
|
|
14088
14088
|
// UUID required to support multiple grids in one page and avoid collision
|
|
14089
14089
|
this.uuid = null;
|
|
14090
14090
|
this.viewport = null;
|
|
14091
|
+
this.isInited = false;
|
|
14091
14092
|
/**
|
|
14092
14093
|
* Plugins
|
|
14093
14094
|
* Define plugins collection
|
|
@@ -14598,30 +14599,11 @@ class RevoGridComponent {
|
|
|
14598
14599
|
this.extraElements = [...this.extraElements, ...elements];
|
|
14599
14600
|
}
|
|
14600
14601
|
// #endregion
|
|
14601
|
-
|
|
14602
|
-
|
|
14603
|
-
|
|
14604
|
-
|
|
14605
|
-
|
|
14606
|
-
return Promise.all(this.jobsBeforeRender);
|
|
14607
|
-
}
|
|
14608
|
-
connectedCallback() {
|
|
14609
|
-
// #region Setup Providers
|
|
14610
|
-
this.viewportProvider = new ViewportProvider();
|
|
14611
|
-
this.themeService = new ThemeService({
|
|
14612
|
-
rowSize: this.rowSize,
|
|
14613
|
-
});
|
|
14614
|
-
this.dimensionProvider = new DimensionProvider(this.viewportProvider, {
|
|
14615
|
-
realSizeChanged: (k) => this.contentsizechanged.emit(k),
|
|
14616
|
-
});
|
|
14617
|
-
this.columnProvider = new ColumnDataProvider();
|
|
14618
|
-
this.selectionStoreConnector = new SelectionStoreConnector();
|
|
14619
|
-
this.dataProvider = new DataProvider(this.dimensionProvider);
|
|
14620
|
-
// #endregion
|
|
14621
|
-
// generate uuid for this grid
|
|
14622
|
-
this.uuid = `${new Date().getTime()}-rvgrid`;
|
|
14623
|
-
this.registerOutsideVNodes(this.registerVNode);
|
|
14624
|
-
// #region Plugins
|
|
14602
|
+
// #region Plugins
|
|
14603
|
+
setPlugins() {
|
|
14604
|
+
var _a;
|
|
14605
|
+
// remove old plugins if any
|
|
14606
|
+
this.removePlugins();
|
|
14625
14607
|
// pass data provider to plugins
|
|
14626
14608
|
const pluginData = {
|
|
14627
14609
|
data: this.dataProvider,
|
|
@@ -14652,12 +14634,43 @@ class RevoGridComponent {
|
|
|
14652
14634
|
this.internalPlugins.push(new ColumnPlugin(this.element, pluginData));
|
|
14653
14635
|
}
|
|
14654
14636
|
// register user plugins
|
|
14655
|
-
|
|
14656
|
-
|
|
14657
|
-
|
|
14658
|
-
|
|
14637
|
+
(_a = this.plugins) === null || _a === void 0 ? void 0 : _a.forEach(p => this.internalPlugins.push(new p(this.element, pluginData)));
|
|
14638
|
+
}
|
|
14639
|
+
removePlugins() {
|
|
14640
|
+
this.internalPlugins.forEach(p => p.destroy());
|
|
14641
|
+
this.internalPlugins = [];
|
|
14642
|
+
}
|
|
14643
|
+
// #endregion
|
|
14644
|
+
// if reconnect to dom we need to set up plugins
|
|
14645
|
+
connectedCallback() {
|
|
14646
|
+
if (this.isInited) {
|
|
14647
|
+
this.setPlugins();
|
|
14659
14648
|
}
|
|
14649
|
+
}
|
|
14650
|
+
/**
|
|
14651
|
+
* Called once just after the component is first connected to the DOM.
|
|
14652
|
+
* Since this method is only called once, it's a good place to load data asynchronously and to setup the state
|
|
14653
|
+
* without triggering extra re-renders.
|
|
14654
|
+
* A promise can be returned, that can be used to wait for the first render().
|
|
14655
|
+
*/
|
|
14656
|
+
componentWillLoad() {
|
|
14657
|
+
// #region Setup Providers
|
|
14658
|
+
this.viewportProvider = new ViewportProvider();
|
|
14659
|
+
this.themeService = new ThemeService({
|
|
14660
|
+
rowSize: this.rowSize,
|
|
14661
|
+
});
|
|
14662
|
+
this.dimensionProvider = new DimensionProvider(this.viewportProvider, {
|
|
14663
|
+
realSizeChanged: (k) => this.contentsizechanged.emit(k),
|
|
14664
|
+
});
|
|
14665
|
+
this.columnProvider = new ColumnDataProvider();
|
|
14666
|
+
this.selectionStoreConnector = new SelectionStoreConnector();
|
|
14667
|
+
this.dataProvider = new DataProvider(this.dimensionProvider);
|
|
14660
14668
|
// #endregion
|
|
14669
|
+
// generate uuid for this grid
|
|
14670
|
+
this.uuid = `rv--${Math.random().toString(36).slice(2, 6)}-${Date.now()}`;
|
|
14671
|
+
this.registerOutsideVNodes(this.registerVNode);
|
|
14672
|
+
// init plugins
|
|
14673
|
+
this.setPlugins();
|
|
14661
14674
|
// set data
|
|
14662
14675
|
this.applyStretch(this.stretch);
|
|
14663
14676
|
this.themeChanged(this.theme, undefined, undefined, true);
|
|
@@ -14677,11 +14690,15 @@ class RevoGridComponent {
|
|
|
14677
14690
|
this.viewportscroll.emit(e);
|
|
14678
14691
|
});
|
|
14679
14692
|
this.aftergridinit.emit();
|
|
14693
|
+
// set inited flag for connectedCallback
|
|
14694
|
+
this.isInited = true;
|
|
14680
14695
|
}
|
|
14681
|
-
|
|
14682
|
-
|
|
14683
|
-
|
|
14684
|
-
|
|
14696
|
+
componentWillRender() {
|
|
14697
|
+
const event = this.beforegridrender.emit();
|
|
14698
|
+
if (event.defaultPrevented) {
|
|
14699
|
+
return false;
|
|
14700
|
+
}
|
|
14701
|
+
return Promise.all(this.jobsBeforeRender);
|
|
14685
14702
|
}
|
|
14686
14703
|
render() {
|
|
14687
14704
|
const contentHeight = this.dimensionProvider.stores['rgRow'].store.get('realSize');
|
|
@@ -14719,7 +14736,7 @@ class RevoGridComponent {
|
|
|
14719
14736
|
const headerProperties = Object.assign(Object.assign({}, view.headerProp), { type: view.type, additionalData: this.additionalData, viewportCol: view.viewportCol, selectionStore: view.columnSelectionStore, canResize: this.resize, readonly: this.readonly, columnFilter: !!this.filter });
|
|
14720
14737
|
// Column headers
|
|
14721
14738
|
const dataViews = [
|
|
14722
|
-
hAsync("revogr-header", Object.assign({ key: '
|
|
14739
|
+
hAsync("revogr-header", Object.assign({ key: '67b0af56acae99e5b999c0b338a279b076022171' }, headerProperties, { slot: HEADER_SLOT })),
|
|
14723
14740
|
];
|
|
14724
14741
|
// Render viewport data (vertical sections)
|
|
14725
14742
|
view.dataPorts.forEach(data => {
|
|
@@ -14741,11 +14758,15 @@ class RevoGridComponent {
|
|
|
14741
14758
|
const typeCol = 'rgCol';
|
|
14742
14759
|
const viewports = this.viewportProvider.stores;
|
|
14743
14760
|
const dimensions = this.dimensionProvider.stores;
|
|
14744
|
-
return (hAsync(Host, { key: '
|
|
14761
|
+
return (hAsync(Host, { key: '3837943944ca3c255083a2fa7fa125291442b98a', [`${UUID}`]: this.uuid }, this.hideAttribution ? null : (hAsync("revogr-attribution", { class: "attribution" })), hAsync("div", { key: '97e0e9cbd158c398945e0d5c0c43a93422c090f9', class: "main-viewport", onClick: (e) => {
|
|
14745
14762
|
if (e.currentTarget === e.target) {
|
|
14746
14763
|
this.viewport.clearEdit();
|
|
14747
14764
|
}
|
|
14748
|
-
} }, hAsync("div", { key: '
|
|
14765
|
+
} }, hAsync("div", { key: '9c77a61499d749aa2e786f593715d8bcacdb3ad0', class: "viewports" }, hAsync("slot", { key: '8af1657ec8ec9b7f56afe957f589d64b55c53bcd', name: "viewport" }), viewportSections, hAsync("revogr-scroll-virtual", { key: '1947f0706d5e9e552822a44a55504ae82c603ce7', class: "vertical", dimension: typeRow, viewportStore: viewports[typeRow].store, dimensionStore: dimensions[typeRow].store, ref: el => this.scrollingService.registerElement(el, 'rowScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), hAsync(OrderRenderer, { key: '6cf863db4b189cf9480d5aca1473832f0ee322b5', ref: e => (this.orderService = e) }))), hAsync("revogr-scroll-virtual", { key: '542cc17558cc0cfa1def201870e0cac8f83ebd36', class: "horizontal", dimension: typeCol, viewportStore: viewports[typeCol].store, dimensionStore: dimensions[typeCol].store, ref: el => this.scrollingService.registerElement(el, 'colScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), this.extraElements));
|
|
14766
|
+
}
|
|
14767
|
+
disconnectedCallback() {
|
|
14768
|
+
// Remove all plugins, to avoid memory leaks and unexpected behaviour when the component is removed
|
|
14769
|
+
this.removePlugins();
|
|
14749
14770
|
}
|
|
14750
14771
|
get element() { return getElement(this); }
|
|
14751
14772
|
static get watchers() { return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revolist/revogrid",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.39",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Virtual reactive data grid spreadsheet component - RevoGrid.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -70,6 +70,10 @@
|
|
|
70
70
|
"import": "./standalone/revo-grid.js",
|
|
71
71
|
"types": "./standalone/revo-grid.d.ts"
|
|
72
72
|
},
|
|
73
|
+
"./standalone/revo-grid.js": {
|
|
74
|
+
"import": "./standalone/revo-grid.js",
|
|
75
|
+
"types": "./standalone/revo-grid.d.ts"
|
|
76
|
+
},
|
|
73
77
|
"./loader": {
|
|
74
78
|
"import": "./loader/index.js",
|
|
75
79
|
"require": "./loader/index.cjs",
|
package/standalone/revo-grid.js
CHANGED
|
@@ -3429,6 +3429,7 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
|
|
|
3429
3429
|
// UUID required to support multiple grids in one page and avoid collision
|
|
3430
3430
|
this.uuid = null;
|
|
3431
3431
|
this.viewport = null;
|
|
3432
|
+
this.isInited = false;
|
|
3432
3433
|
/**
|
|
3433
3434
|
* Plugins
|
|
3434
3435
|
* Define plugins collection
|
|
@@ -3939,30 +3940,11 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
|
|
|
3939
3940
|
this.extraElements = [...this.extraElements, ...elements];
|
|
3940
3941
|
}
|
|
3941
3942
|
// #endregion
|
|
3942
|
-
|
|
3943
|
-
|
|
3944
|
-
|
|
3945
|
-
|
|
3946
|
-
|
|
3947
|
-
return Promise.all(this.jobsBeforeRender);
|
|
3948
|
-
}
|
|
3949
|
-
connectedCallback() {
|
|
3950
|
-
// #region Setup Providers
|
|
3951
|
-
this.viewportProvider = new ViewportProvider();
|
|
3952
|
-
this.themeService = new ThemeService({
|
|
3953
|
-
rowSize: this.rowSize,
|
|
3954
|
-
});
|
|
3955
|
-
this.dimensionProvider = new DimensionProvider(this.viewportProvider, {
|
|
3956
|
-
realSizeChanged: (k) => this.contentsizechanged.emit(k),
|
|
3957
|
-
});
|
|
3958
|
-
this.columnProvider = new ColumnDataProvider();
|
|
3959
|
-
this.selectionStoreConnector = new SelectionStoreConnector();
|
|
3960
|
-
this.dataProvider = new DataProvider(this.dimensionProvider);
|
|
3961
|
-
// #endregion
|
|
3962
|
-
// generate uuid for this grid
|
|
3963
|
-
this.uuid = `${new Date().getTime()}-rvgrid`;
|
|
3964
|
-
this.registerOutsideVNodes(this.registerVNode);
|
|
3965
|
-
// #region Plugins
|
|
3943
|
+
// #region Plugins
|
|
3944
|
+
setPlugins() {
|
|
3945
|
+
var _a;
|
|
3946
|
+
// remove old plugins if any
|
|
3947
|
+
this.removePlugins();
|
|
3966
3948
|
// pass data provider to plugins
|
|
3967
3949
|
const pluginData = {
|
|
3968
3950
|
data: this.dataProvider,
|
|
@@ -3993,12 +3975,43 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
|
|
|
3993
3975
|
this.internalPlugins.push(new ColumnPlugin(this.element, pluginData));
|
|
3994
3976
|
}
|
|
3995
3977
|
// register user plugins
|
|
3996
|
-
|
|
3997
|
-
|
|
3998
|
-
|
|
3999
|
-
|
|
3978
|
+
(_a = this.plugins) === null || _a === void 0 ? void 0 : _a.forEach(p => this.internalPlugins.push(new p(this.element, pluginData)));
|
|
3979
|
+
}
|
|
3980
|
+
removePlugins() {
|
|
3981
|
+
this.internalPlugins.forEach(p => p.destroy());
|
|
3982
|
+
this.internalPlugins = [];
|
|
3983
|
+
}
|
|
3984
|
+
// #endregion
|
|
3985
|
+
// if reconnect to dom we need to set up plugins
|
|
3986
|
+
connectedCallback() {
|
|
3987
|
+
if (this.isInited) {
|
|
3988
|
+
this.setPlugins();
|
|
4000
3989
|
}
|
|
3990
|
+
}
|
|
3991
|
+
/**
|
|
3992
|
+
* Called once just after the component is first connected to the DOM.
|
|
3993
|
+
* Since this method is only called once, it's a good place to load data asynchronously and to setup the state
|
|
3994
|
+
* without triggering extra re-renders.
|
|
3995
|
+
* A promise can be returned, that can be used to wait for the first render().
|
|
3996
|
+
*/
|
|
3997
|
+
componentWillLoad() {
|
|
3998
|
+
// #region Setup Providers
|
|
3999
|
+
this.viewportProvider = new ViewportProvider();
|
|
4000
|
+
this.themeService = new ThemeService({
|
|
4001
|
+
rowSize: this.rowSize,
|
|
4002
|
+
});
|
|
4003
|
+
this.dimensionProvider = new DimensionProvider(this.viewportProvider, {
|
|
4004
|
+
realSizeChanged: (k) => this.contentsizechanged.emit(k),
|
|
4005
|
+
});
|
|
4006
|
+
this.columnProvider = new ColumnDataProvider();
|
|
4007
|
+
this.selectionStoreConnector = new SelectionStoreConnector();
|
|
4008
|
+
this.dataProvider = new DataProvider(this.dimensionProvider);
|
|
4001
4009
|
// #endregion
|
|
4010
|
+
// generate uuid for this grid
|
|
4011
|
+
this.uuid = `rv--${Math.random().toString(36).slice(2, 6)}-${Date.now()}`;
|
|
4012
|
+
this.registerOutsideVNodes(this.registerVNode);
|
|
4013
|
+
// init plugins
|
|
4014
|
+
this.setPlugins();
|
|
4002
4015
|
// set data
|
|
4003
4016
|
this.applyStretch(this.stretch);
|
|
4004
4017
|
this.themeChanged(this.theme, undefined, undefined, true);
|
|
@@ -4018,11 +4031,15 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
|
|
|
4018
4031
|
this.viewportscroll.emit(e);
|
|
4019
4032
|
});
|
|
4020
4033
|
this.aftergridinit.emit();
|
|
4034
|
+
// set inited flag for connectedCallback
|
|
4035
|
+
this.isInited = true;
|
|
4021
4036
|
}
|
|
4022
|
-
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4037
|
+
componentWillRender() {
|
|
4038
|
+
const event = this.beforegridrender.emit();
|
|
4039
|
+
if (event.defaultPrevented) {
|
|
4040
|
+
return false;
|
|
4041
|
+
}
|
|
4042
|
+
return Promise.all(this.jobsBeforeRender);
|
|
4026
4043
|
}
|
|
4027
4044
|
render() {
|
|
4028
4045
|
const contentHeight = this.dimensionProvider.stores['rgRow'].store.get('realSize');
|
|
@@ -4060,7 +4077,7 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
|
|
|
4060
4077
|
const headerProperties = Object.assign(Object.assign({}, view.headerProp), { type: view.type, additionalData: this.additionalData, viewportCol: view.viewportCol, selectionStore: view.columnSelectionStore, canResize: this.resize, readonly: this.readonly, columnFilter: !!this.filter });
|
|
4061
4078
|
// Column headers
|
|
4062
4079
|
const dataViews = [
|
|
4063
|
-
h("revogr-header", Object.assign({ key: '
|
|
4080
|
+
h("revogr-header", Object.assign({ key: '67b0af56acae99e5b999c0b338a279b076022171' }, headerProperties, { slot: HEADER_SLOT })),
|
|
4064
4081
|
];
|
|
4065
4082
|
// Render viewport data (vertical sections)
|
|
4066
4083
|
view.dataPorts.forEach(data => {
|
|
@@ -4082,11 +4099,15 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
|
|
|
4082
4099
|
const typeCol = 'rgCol';
|
|
4083
4100
|
const viewports = this.viewportProvider.stores;
|
|
4084
4101
|
const dimensions = this.dimensionProvider.stores;
|
|
4085
|
-
return (h(Host, { key: '
|
|
4102
|
+
return (h(Host, { key: '3837943944ca3c255083a2fa7fa125291442b98a', [`${UUID}`]: this.uuid }, this.hideAttribution ? null : (h("revogr-attribution", { class: "attribution" })), h("div", { key: '97e0e9cbd158c398945e0d5c0c43a93422c090f9', class: "main-viewport", onClick: (e) => {
|
|
4086
4103
|
if (e.currentTarget === e.target) {
|
|
4087
4104
|
this.viewport.clearEdit();
|
|
4088
4105
|
}
|
|
4089
|
-
} }, h("div", { key: '
|
|
4106
|
+
} }, h("div", { key: '9c77a61499d749aa2e786f593715d8bcacdb3ad0', class: "viewports" }, h("slot", { key: '8af1657ec8ec9b7f56afe957f589d64b55c53bcd', name: "viewport" }), viewportSections, h("revogr-scroll-virtual", { key: '1947f0706d5e9e552822a44a55504ae82c603ce7', class: "vertical", dimension: typeRow, viewportStore: viewports[typeRow].store, dimensionStore: dimensions[typeRow].store, ref: el => this.scrollingService.registerElement(el, 'rowScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), h(OrderRenderer, { key: '6cf863db4b189cf9480d5aca1473832f0ee322b5', ref: e => (this.orderService = e) }))), h("revogr-scroll-virtual", { key: '542cc17558cc0cfa1def201870e0cac8f83ebd36', class: "horizontal", dimension: typeCol, viewportStore: viewports[typeCol].store, dimensionStore: dimensions[typeCol].store, ref: el => this.scrollingService.registerElement(el, 'colScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), this.extraElements));
|
|
4107
|
+
}
|
|
4108
|
+
disconnectedCallback() {
|
|
4109
|
+
// Remove all plugins, to avoid memory leaks and unexpected behaviour when the component is removed
|
|
4110
|
+
this.removePlugins();
|
|
4090
4111
|
}
|
|
4091
4112
|
get element() { return this; }
|
|
4092
4113
|
static get watchers() { return {
|