@esfaenza/extensions 15.2.31 → 15.2.33

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.
@@ -1040,9 +1040,11 @@ class AppEmbeddingExtensions {
1040
1040
  constructor(msgService, router) {
1041
1041
  this.msgService = msgService;
1042
1042
  this.router = router;
1043
+ this.sidebarWidth = 230;
1043
1044
  this.Embedded = false;
1044
1045
  this.EmbeddingLevel = 0;
1045
1046
  this.MessageObserver = new Subject();
1047
+ this._reloadAllowed = true;
1046
1048
  this.MainWindow = window;
1047
1049
  while (this.MainWindow.parent != this.MainWindow) {
1048
1050
  this.MainWindow = this.MainWindow.parent;
@@ -1053,6 +1055,11 @@ class AppEmbeddingExtensions {
1053
1055
  if (this.Embedded)
1054
1056
  this.msgService.configureEmbeddability(this.MainWindow, this.MessageObserver);
1055
1057
  }
1058
+ IsReloadAllowed() {
1059
+ let ret = this._reloadAllowed;
1060
+ this._reloadAllowed = true;
1061
+ return ret;
1062
+ }
1056
1063
  configureEmbeddability() {
1057
1064
  window.onmessage = (event) => {
1058
1065
  // Ignoro i miei messaggi dato che mi interessano solo quelli degli altri iframe
@@ -1083,7 +1090,6 @@ class AppEmbeddingExtensions {
1083
1090
  switch (event?.data?.level) {
1084
1091
  case "success":
1085
1092
  this.msgService.simpleSuccessWithChoice(event?.data?.title, event?.data?.text, () => {
1086
- debugger;
1087
1093
  sourceWindow.postMessage({ result: true, ...baseResponse }, "*");
1088
1094
  }, () => {
1089
1095
  sourceWindow.postMessage({ result: false, ...baseResponse }, "*");
@@ -1091,7 +1097,6 @@ class AppEmbeddingExtensions {
1091
1097
  break;
1092
1098
  case "warning":
1093
1099
  this.msgService.simpleWarningWithChoice(event?.data?.title, event?.data?.text, () => {
1094
- debugger;
1095
1100
  sourceWindow.postMessage({ result: true, ...baseResponse }, "*");
1096
1101
  }, () => {
1097
1102
  sourceWindow.postMessage({ result: false, ...baseResponse }, "*");
@@ -1101,7 +1106,26 @@ class AppEmbeddingExtensions {
1101
1106
  }
1102
1107
  else if (event?.data?.type == "navigate") {
1103
1108
  console.log(`Window message - navigate -> ${event?.data?.url}`);
1104
- this.router.navigate([event?.data?.url]);
1109
+ var newTab = event?.data?.newTab;
1110
+ var replaceState = event?.data?.replaceState;
1111
+ if (!window.location.href.includes(this.router.url)) {
1112
+ console.warn("Doppia chiamata di navigazione, ignoro il secondo evento scoordinato dal router");
1113
+ return;
1114
+ }
1115
+ let newRelativeUrl = this.router.createUrlTree([event?.data?.url]);
1116
+ let baseUrl = window.location.href.replace(this.router.url, '');
1117
+ let newUrl = baseUrl + decodeURIComponent(newRelativeUrl.toString());
1118
+ if (replaceState)
1119
+ history.pushState({ _pushed: true }, "", newUrl);
1120
+ else if (newTab)
1121
+ window.open(newUrl, '_blank');
1122
+ }
1123
+ else if (event?.data?.type == "navigate-back") {
1124
+ console.log(`Window message - navigate-back -> ${event?.data?.url}`);
1125
+ if (history.state._pushed) {
1126
+ this._reloadAllowed = false;
1127
+ history.back();
1128
+ }
1105
1129
  }
1106
1130
  else if (event?.data?.type == "redirect") {
1107
1131
  console.log(`Window message - redirect -> ${event?.data?.url}`);
@@ -1119,7 +1143,7 @@ class AppEmbeddingExtensions {
1119
1143
  console.log(`Window message - Modal Open -> Backdrop Height: ${event?.data?.backdropHeight}`);
1120
1144
  var topHeight = 116; // valore fisso, distanza fra il top e l'inizio dell'iframe, non sarà mai diverso
1121
1145
  var rightSpace = wrapperPaddingRight; // valore fisso, distanza fra la fine dell'iframe e il lato sinistro dello schermo, non sarà mai diverso
1122
- var leftSpace = 230 + wrapperPaddingLeft; // 230 è la variabile $sidebar-width
1146
+ var leftSpace = this.sidebarWidth + wrapperPaddingLeft;
1123
1147
  let commonStyles = "position: absolute; z-index: 9999; background-color: #000; opacity: 0.5; ";
1124
1148
  wrapper.style.setProperty("overflow", "hidden", "important");
1125
1149
  const top = document.createElement("div");