@esfaenza/extensions 15.2.32 → 15.2.34

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.
@@ -7,6 +7,7 @@ import { of, Subject } from 'rxjs';
7
7
  import { ToastrService } from 'ngx-toastr';
8
8
  import swal from 'sweetalert2';
9
9
  import * as i2 from '@angular/router';
10
+ import * as i3 from '@angular/common';
10
11
 
11
12
  /**
12
13
  * Token che indica il prefisso delle searchView che serve per storicizzarle evitando di tirarsi in memoria anche tutti gli oggetti. Se vuoto viene supposto 'Hot'
@@ -1037,23 +1038,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1037
1038
  // Angular
1038
1039
  /* Classe che contiene tutte le informazioni sull'embedding in un unico contenitore per semplicità */
1039
1040
  class AppEmbeddingExtensions {
1040
- constructor(msgService, router) {
1041
+ constructor(msgService, router, location) {
1041
1042
  this.msgService = msgService;
1042
1043
  this.router = router;
1044
+ this.location = location;
1043
1045
  this.sidebarWidth = 230;
1044
1046
  this.Embedded = false;
1045
1047
  this.EmbeddingLevel = 0;
1046
1048
  this.MessageObserver = new Subject();
1049
+ this._reloadAllowed = true;
1047
1050
  this.MainWindow = window;
1048
1051
  while (this.MainWindow.parent != this.MainWindow) {
1049
1052
  this.MainWindow = this.MainWindow.parent;
1050
1053
  this.EmbeddingLevel++;
1051
1054
  this.Embedded = true;
1055
+ this.EmbeddedModule = this.location.path().match(/module=([a-zA-Z_]+)/)[1];
1052
1056
  }
1053
1057
  this.configureEmbeddability();
1054
1058
  if (this.Embedded)
1055
1059
  this.msgService.configureEmbeddability(this.MainWindow, this.MessageObserver);
1056
1060
  }
1061
+ IsReloadAllowed() {
1062
+ let ret = this._reloadAllowed;
1063
+ this._reloadAllowed = true;
1064
+ return ret;
1065
+ }
1057
1066
  configureEmbeddability() {
1058
1067
  window.onmessage = (event) => {
1059
1068
  // Ignoro i miei messaggi dato che mi interessano solo quelli degli altri iframe
@@ -1077,6 +1086,9 @@ class AppEmbeddingExtensions {
1077
1086
  break;
1078
1087
  }
1079
1088
  }
1089
+ else if (event?.data?.type == "replace-state") {
1090
+ this.location.replaceState(event?.data?.url);
1091
+ }
1080
1092
  else if (event?.data?.type == "confirm") {
1081
1093
  console.log(`Window message - confirm -> Level: ${event?.data?.level}, Message: ${event?.data?.text}, Title: ${event?.data?.title}, ID: ${event?.data?.guid}`);
1082
1094
  var sourceWindow = event.source;
@@ -1116,8 +1128,10 @@ class AppEmbeddingExtensions {
1116
1128
  }
1117
1129
  else if (event?.data?.type == "navigate-back") {
1118
1130
  console.log(`Window message - navigate-back -> ${event?.data?.url}`);
1119
- if (history.state._pushed)
1131
+ if (history.state._pushed) {
1132
+ this._reloadAllowed = false;
1120
1133
  history.back();
1134
+ }
1121
1135
  }
1122
1136
  else if (event?.data?.type == "redirect") {
1123
1137
  console.log(`Window message - redirect -> ${event?.data?.url}`);
@@ -1172,6 +1186,15 @@ class AppEmbeddingExtensions {
1172
1186
  if (this.Embedded)
1173
1187
  document.body.style.setProperty("overflow-y", "auto", "important");
1174
1188
  }
1189
+ replaceState(basePath, url) {
1190
+ // Esempio basePath: pages
1191
+ // Esempio url: parties/leads_search
1192
+ // Normalizzazione senza slash prima o dopo
1193
+ basePath = basePath.endsWith("/") ? basePath.substring(0, basePath.length - 2) : basePath;
1194
+ url = url.startsWith("/") ? url.substring(1) : url;
1195
+ this.location.replaceState(`${basePath}/${url}`);
1196
+ this.MainWindow.postMessage({ type: "replace-state", url: `pages/embed/${this.EmbeddedModule}/${url}` }, "*");
1197
+ }
1175
1198
  refreshBoundariesOnMenuCollapse() {
1176
1199
  const wrapper = document.body.getElementsByClassName("main-wrapper")[0];
1177
1200
  let wrapperStyles = window.getComputedStyle(wrapper);
@@ -1187,12 +1210,12 @@ class AppEmbeddingExtensions {
1187
1210
  left.style.setProperty("width", leftSpace + "px");
1188
1211
  }
1189
1212
  }
1190
- AppEmbeddingExtensions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, deps: [{ token: MessageService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1213
+ AppEmbeddingExtensions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, deps: [{ token: MessageService }, { token: i2.Router }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Injectable });
1191
1214
  AppEmbeddingExtensions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, providedIn: "root" });
1192
1215
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, decorators: [{
1193
1216
  type: Injectable,
1194
1217
  args: [{ providedIn: "root" }]
1195
- }], ctorParameters: function () { return [{ type: MessageService }, { type: i2.Router }]; } });
1218
+ }], ctorParameters: function () { return [{ type: MessageService }, { type: i2.Router }, { type: i3.Location }]; } });
1196
1219
 
1197
1220
  // Angular
1198
1221
  /**