@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.
@@ -3216,6 +3216,7 @@ const RevoGridComponent = class {
3216
3216
  // UUID required to support multiple grids in one page and avoid collision
3217
3217
  this.uuid = null;
3218
3218
  this.viewport = null;
3219
+ this.isInited = false;
3219
3220
  /**
3220
3221
  * Plugins
3221
3222
  * Define plugins collection
@@ -3726,30 +3727,11 @@ const RevoGridComponent = class {
3726
3727
  this.extraElements = [...this.extraElements, ...elements];
3727
3728
  }
3728
3729
  // #endregion
3729
- componentWillRender() {
3730
- const event = this.beforegridrender.emit();
3731
- if (event.defaultPrevented) {
3732
- return false;
3733
- }
3734
- return Promise.all(this.jobsBeforeRender);
3735
- }
3736
- connectedCallback() {
3737
- // #region Setup Providers
3738
- this.viewportProvider = new ViewportProvider();
3739
- this.themeService = new ThemeService({
3740
- rowSize: this.rowSize,
3741
- });
3742
- this.dimensionProvider = new DimensionProvider(this.viewportProvider, {
3743
- realSizeChanged: (k) => this.contentsizechanged.emit(k),
3744
- });
3745
- this.columnProvider = new ColumnDataProvider();
3746
- this.selectionStoreConnector = new selection_helpers.SelectionStoreConnector();
3747
- this.dataProvider = new DataProvider(this.dimensionProvider);
3748
- // #endregion
3749
- // generate uuid for this grid
3750
- this.uuid = `${new Date().getTime()}-rvgrid`;
3751
- this.registerOutsideVNodes(this.registerVNode);
3752
- // #region Plugins
3730
+ // #region Plugins
3731
+ setPlugins() {
3732
+ var _a;
3733
+ // remove old plugins if any
3734
+ this.removePlugins();
3753
3735
  // pass data provider to plugins
3754
3736
  const pluginData = {
3755
3737
  data: this.dataProvider,
@@ -3780,12 +3762,43 @@ const RevoGridComponent = class {
3780
3762
  this.internalPlugins.push(new ColumnPlugin(this.element, pluginData));
3781
3763
  }
3782
3764
  // register user plugins
3783
- if (this.plugins) {
3784
- this.plugins.forEach(p => {
3785
- this.internalPlugins.push(new p(this.element, pluginData));
3786
- });
3765
+ (_a = this.plugins) === null || _a === void 0 ? void 0 : _a.forEach(p => this.internalPlugins.push(new p(this.element, pluginData)));
3766
+ }
3767
+ removePlugins() {
3768
+ this.internalPlugins.forEach(p => p.destroy());
3769
+ this.internalPlugins = [];
3770
+ }
3771
+ // #endregion
3772
+ // if reconnect to dom we need to set up plugins
3773
+ connectedCallback() {
3774
+ if (this.isInited) {
3775
+ this.setPlugins();
3787
3776
  }
3777
+ }
3778
+ /**
3779
+ * Called once just after the component is first connected to the DOM.
3780
+ * Since this method is only called once, it's a good place to load data asynchronously and to setup the state
3781
+ * without triggering extra re-renders.
3782
+ * A promise can be returned, that can be used to wait for the first render().
3783
+ */
3784
+ componentWillLoad() {
3785
+ // #region Setup Providers
3786
+ this.viewportProvider = new ViewportProvider();
3787
+ this.themeService = new ThemeService({
3788
+ rowSize: this.rowSize,
3789
+ });
3790
+ this.dimensionProvider = new DimensionProvider(this.viewportProvider, {
3791
+ realSizeChanged: (k) => this.contentsizechanged.emit(k),
3792
+ });
3793
+ this.columnProvider = new ColumnDataProvider();
3794
+ this.selectionStoreConnector = new selection_helpers.SelectionStoreConnector();
3795
+ this.dataProvider = new DataProvider(this.dimensionProvider);
3788
3796
  // #endregion
3797
+ // generate uuid for this grid
3798
+ this.uuid = `rv--${Math.random().toString(36).slice(2, 6)}-${Date.now()}`;
3799
+ this.registerOutsideVNodes(this.registerVNode);
3800
+ // init plugins
3801
+ this.setPlugins();
3789
3802
  // set data
3790
3803
  this.applyStretch(this.stretch);
3791
3804
  this.themeChanged(this.theme, undefined, undefined, true);
@@ -3805,11 +3818,15 @@ const RevoGridComponent = class {
3805
3818
  this.viewportscroll.emit(e);
3806
3819
  });
3807
3820
  this.aftergridinit.emit();
3821
+ // set inited flag for connectedCallback
3822
+ this.isInited = true;
3808
3823
  }
3809
- disconnectedCallback() {
3810
- // destroy plugins on element disconnect
3811
- this.internalPlugins.forEach(p => p.destroy());
3812
- this.internalPlugins = [];
3824
+ componentWillRender() {
3825
+ const event = this.beforegridrender.emit();
3826
+ if (event.defaultPrevented) {
3827
+ return false;
3828
+ }
3829
+ return Promise.all(this.jobsBeforeRender);
3813
3830
  }
3814
3831
  render() {
3815
3832
  const contentHeight = this.dimensionProvider.stores['rgRow'].store.get('realSize');
@@ -3847,7 +3864,7 @@ const RevoGridComponent = class {
3847
3864
  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 });
3848
3865
  // Column headers
3849
3866
  const dataViews = [
3850
- index$1.h("revogr-header", Object.assign({ key: 'b3c3ccd088d6a01511b07f66f7dc937617a4786d' }, headerProperties, { slot: column_service.HEADER_SLOT })),
3867
+ index$1.h("revogr-header", Object.assign({ key: '67b0af56acae99e5b999c0b338a279b076022171' }, headerProperties, { slot: column_service.HEADER_SLOT })),
3851
3868
  ];
3852
3869
  // Render viewport data (vertical sections)
3853
3870
  view.dataPorts.forEach(data => {
@@ -3869,11 +3886,15 @@ const RevoGridComponent = class {
3869
3886
  const typeCol = 'rgCol';
3870
3887
  const viewports = this.viewportProvider.stores;
3871
3888
  const dimensions = this.dimensionProvider.stores;
3872
- return (index$1.h(index$1.Host, { key: '6c36df93ae796fbfeee95cb5ab789a1f9b0c42f1', [`${index.UUID}`]: this.uuid }, this.hideAttribution ? null : (index$1.h("revogr-attribution", { class: "attribution" })), index$1.h("div", { key: 'e5cd68158497d79d98ce4f92f1e816b60acbf6ac', class: "main-viewport", onClick: (e) => {
3889
+ return (index$1.h(index$1.Host, { key: '3837943944ca3c255083a2fa7fa125291442b98a', [`${index.UUID}`]: this.uuid }, this.hideAttribution ? null : (index$1.h("revogr-attribution", { class: "attribution" })), index$1.h("div", { key: '97e0e9cbd158c398945e0d5c0c43a93422c090f9', class: "main-viewport", onClick: (e) => {
3873
3890
  if (e.currentTarget === e.target) {
3874
3891
  this.viewport.clearEdit();
3875
3892
  }
3876
- } }, index$1.h("div", { key: '9f121f8e4184f38ad0f086eeabb287434dbae101', class: "viewports" }, index$1.h("slot", { key: 'e234abc3d5a6b1ddbe1fb1da4e415e754444057d', name: "viewport" }), viewportSections, index$1.h("revogr-scroll-virtual", { key: 'c7b915c6117a822cea1fadce5111cd665f5a43d9', 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) }), index$1.h(OrderRenderer, { key: '5e6c259216474164247f2120eb9a16786ce03e6f', ref: e => (this.orderService = e) }))), index$1.h("revogr-scroll-virtual", { key: 'ce8e46b6e7913e798b8d1bd094a4c61a54b73a0a', 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));
3893
+ } }, index$1.h("div", { key: '9c77a61499d749aa2e786f593715d8bcacdb3ad0', class: "viewports" }, index$1.h("slot", { key: '8af1657ec8ec9b7f56afe957f589d64b55c53bcd', name: "viewport" }), viewportSections, index$1.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) }), index$1.h(OrderRenderer, { key: '6cf863db4b189cf9480d5aca1473832f0ee322b5', ref: e => (this.orderService = e) }))), index$1.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));
3894
+ }
3895
+ disconnectedCallback() {
3896
+ // Remove all plugins, to avoid memory leaks and unexpected behaviour when the component is removed
3897
+ this.removePlugins();
3877
3898
  }
3878
3899
  get element() { return index$1.getElement(this); }
3879
3900
  static get watchers() { return {