dash-button-web 0.0.23-beta.2 → 0.0.23-beta.4

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.
Files changed (49) hide show
  1. package/dist/cjs/app-globals-V2Kpy_OQ.js +5 -0
  2. package/dist/cjs/dash-button_4.cjs.entry.js +10847 -0
  3. package/dist/cjs/{index-BfwSK14n.js → index-DcvBej9f.js} +122 -4
  4. package/dist/cjs/loader.cjs.js +3 -3
  5. package/dist/cjs/web-compnont.cjs.js +3 -3
  6. package/dist/collection/collection-manifest.json +11 -3
  7. package/dist/collection/components/my-component/dash-button.js +76 -87
  8. package/dist/collection/services/config.js +3 -4
  9. package/dist/collection/services/menu.js +3 -4
  10. package/dist/components/dash-button.js +1 -1
  11. package/dist/components/index.js +1 -1
  12. package/dist/components/loading-component.js +1 -0
  13. package/dist/components/loading-component2.js +1 -0
  14. package/dist/components/notification-component.js +1 -0
  15. package/dist/components/notification-component2.js +1 -0
  16. package/dist/components/notification-table.js +1 -0
  17. package/dist/components/notification-table2.js +2 -0
  18. package/dist/esm/app-globals-DQuL1Twl.js +3 -0
  19. package/dist/esm/dash-button_4.entry.js +10842 -0
  20. package/dist/esm/{index-6_Ga3Eox.js → index-p0GxQx6x.js} +122 -4
  21. package/dist/esm/loader.js +4 -4
  22. package/dist/esm/web-compnont.js +4 -4
  23. package/dist/types/components/my-component/dash-button.d.ts +2 -1
  24. package/dist/types/components.d.ts +9 -0
  25. package/dist/web-compnont/p-4944d054.entry.js +3 -0
  26. package/dist/web-compnont/p-p0GxQx6x.js +3 -0
  27. package/dist/web-compnont/web-compnont.esm.js +1 -1
  28. package/package.json +1 -1
  29. package/dist/cjs/app-globals-cd54EKuF.js +0 -15
  30. package/dist/cjs/dash-button.cjs.entry.js +0 -4314
  31. package/dist/collection/assets/ice-notification-component/ice-notification-component.esm.js +0 -1
  32. package/dist/collection/assets/ice-notification-component/index.esm.js +0 -1
  33. package/dist/collection/assets/ice-notification-component/p-CYEcl3gx.js +0 -2
  34. package/dist/collection/assets/ice-notification-component/p-Cd2FMJAb.js +0 -1
  35. package/dist/collection/assets/ice-notification-component/p-cf3fb8a3.entry.js +0 -2
  36. package/dist/collection/global/app.js +0 -7
  37. package/dist/esm/app-globals-B2hgy9FG.js +0 -13
  38. package/dist/esm/dash-button.entry.js +0 -4312
  39. package/dist/types/global/app.d.ts +0 -2
  40. package/dist/web-compnont/assets/ice-notification-component/ice-notification-component.esm.js +0 -1
  41. package/dist/web-compnont/assets/ice-notification-component/index.esm.js +0 -1
  42. package/dist/web-compnont/assets/ice-notification-component/p-CYEcl3gx.js +0 -2
  43. package/dist/web-compnont/assets/ice-notification-component/p-Cd2FMJAb.js +0 -1
  44. package/dist/web-compnont/assets/ice-notification-component/p-DQuL1Twl.js +0 -1
  45. package/dist/web-compnont/assets/ice-notification-component/p-cf3fb8a3.entry.js +0 -2
  46. package/dist/web-compnont/p-6_Ga3Eox.js +0 -3
  47. package/dist/web-compnont/p-7de50cbc.entry.js +0 -1
  48. package/dist/web-compnont/p-DiU1T8CW.js +0 -1
  49. /package/dist/{collection/assets/ice-notification-component → web-compnont}/p-DQuL1Twl.js +0 -0
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const NAMESPACE = 'web-compnont';
4
- const BUILD = /* web-compnont */ { hotModuleReplacement: false, hydratedSelectorName: "hydrated", lazyLoad: true, propChangeCallback: false, state: true, updatable: true};
4
+ const BUILD = /* web-compnont */ { hotModuleReplacement: false, hydratedSelectorName: "hydrated", lazyLoad: true, propChangeCallback: true, state: true, updatable: true};
5
5
 
6
6
  /*
7
7
  Stencil Client Platform v4.45.0 | MIT Licensed | https://stenciljs.com
@@ -200,7 +200,6 @@ var flush = () => {
200
200
  };
201
201
  var nextTick = (cb) => promiseResolve().then(cb);
202
202
  var writeTask = /* @__PURE__ */ queueTask(queueDomWrites, true);
203
- var setAssetPath = (path) => plt.$resourcesUrl$ = path;
204
203
 
205
204
  // src/utils/style.ts
206
205
  function createStyleSheetIfNeededAndSupported(styles2) {
@@ -444,6 +443,31 @@ var newVNode = (tag, text) => {
444
443
  var Host = {};
445
444
  var isHost = (node) => node && node.$tag$ === Host;
446
445
 
446
+ // src/runtime/normalize-watchers.ts
447
+ var normalizeWatchers = (raw) => {
448
+ if (!raw) return void 0;
449
+ const keys = Object.keys(raw);
450
+ if (keys.length === 0) return void 0;
451
+ let hasLegacy = false;
452
+ for (const propName of keys) {
453
+ if (hasLegacy) break;
454
+ for (const h2 of raw[propName]) {
455
+ if (typeof h2 === "string") {
456
+ hasLegacy = true;
457
+ break;
458
+ }
459
+ }
460
+ }
461
+ if (!hasLegacy) return raw;
462
+ const out = {};
463
+ for (const propName of keys) {
464
+ out[propName] = raw[propName].map(
465
+ (h2) => typeof h2 === "string" ? { [h2]: 0 } : h2
466
+ );
467
+ }
468
+ return out;
469
+ };
470
+
447
471
  // src/runtime/parse-property-value.ts
448
472
  var parsePropertyValue = (propValue, propType, isFormAssociated) => {
449
473
  if (propValue != null && !isComplexType(propValue)) {
@@ -452,6 +476,9 @@ var parsePropertyValue = (propValue, propType, isFormAssociated) => {
452
476
  return propValue === "false" ? false : propValue === "" || !!propValue;
453
477
  }
454
478
  }
479
+ if (propType & 2 /* Number */) {
480
+ return typeof propValue === "string" ? parseFloat(propValue) : typeof propValue === "number" ? propValue : NaN;
481
+ }
455
482
  if (propType & 1 /* String */) {
456
483
  return String(propValue);
457
484
  }
@@ -463,6 +490,21 @@ var getElement = (ref) => {
463
490
  var _a;
464
491
  return (_a = getHostRef(ref)) == null ? void 0 : _a.$hostElement$ ;
465
492
  };
493
+
494
+ // src/runtime/event-emitter.ts
495
+ var createEvent = (ref, name, flags) => {
496
+ const elm = getElement(ref);
497
+ return {
498
+ emit: (detail) => {
499
+ return emitEvent(elm, name, {
500
+ bubbles: true,
501
+ composed: true,
502
+ cancelable: true,
503
+ detail
504
+ });
505
+ }
506
+ };
507
+ };
466
508
  var emitEvent = (elm, name, opts) => {
467
509
  const ev = plt.ce(name, opts);
468
510
  elm.dispatchEvent(ev);
@@ -503,7 +545,11 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRen
503
545
  }
504
546
  }
505
547
  }
506
- } else if (memberName === "key") ; else if ((!isProp ) && memberName[0] === "o" && memberName[1] === "n") {
548
+ } else if (memberName === "key") ; else if (memberName === "ref") {
549
+ if (newValue) {
550
+ queueRefAttachment(newValue, elm);
551
+ }
552
+ } else if ((!isProp ) && memberName[0] === "o" && memberName[1] === "n") {
507
553
  if (memberName[2] === "-") {
508
554
  memberName = memberName.slice(3);
509
555
  } else if (isMemberInElement(win, ln)) {
@@ -640,6 +686,8 @@ function sortedAttrNames(attrNames) {
640
686
  }
641
687
  var hostTagName;
642
688
  var isSvgMode = false;
689
+ var refCallbacksToRemove = [];
690
+ var refCallbacksToAttach = [];
643
691
  var createElm = (oldParentVNode, newParentVNode, childIndex) => {
644
692
  const newVNode2 = newParentVNode.$children$[childIndex];
645
693
  let i2 = 0;
@@ -708,6 +756,7 @@ var removeVnodes = (vnodes, startIdx, endIdx) => {
708
756
  const vnode = vnodes[index];
709
757
  if (vnode) {
710
758
  const elm = vnode.$elm$;
759
+ nullifyVNodeRefs(vnode);
711
760
  if (elm) {
712
761
  elm.remove();
713
762
  }
@@ -844,6 +893,27 @@ var patch = (oldVNode, newVNode2, isInitialRender = false) => {
844
893
  elm.data = text;
845
894
  }
846
895
  };
896
+ var nullifyVNodeRefs = (vNode) => {
897
+ {
898
+ if (vNode.$attrs$ && vNode.$attrs$.ref) {
899
+ refCallbacksToRemove.push(() => vNode.$attrs$.ref(null));
900
+ }
901
+ vNode.$children$ && vNode.$children$.map(nullifyVNodeRefs);
902
+ }
903
+ };
904
+ var queueRefAttachment = (refCallback, elm) => {
905
+ {
906
+ refCallbacksToAttach.push(() => refCallback(elm));
907
+ }
908
+ };
909
+ var flushQueuedRefCallbacks = () => {
910
+ {
911
+ refCallbacksToRemove.forEach((cb) => cb());
912
+ refCallbacksToRemove.length = 0;
913
+ refCallbacksToAttach.forEach((cb) => cb());
914
+ refCallbacksToAttach.length = 0;
915
+ }
916
+ };
847
917
  var insertBefore = (parent, newNode, reference, isInitialLoad) => {
848
918
  {
849
919
  return parent == null ? void 0 : parent.insertBefore(newNode, reference);
@@ -867,6 +937,7 @@ var renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
867
937
  hostRef.$vnode$ = rootVnode;
868
938
  rootVnode.$elm$ = oldVNode.$elm$ = hostElm.shadowRoot || hostElm ;
869
939
  patch(oldVNode, rootVnode, isInitialLoad);
940
+ flushQueuedRefCallbacks();
870
941
  };
871
942
 
872
943
  // src/runtime/update-component.ts
@@ -1045,6 +1116,7 @@ var setValue = (ref, propName, newVal, cmpMeta) => {
1045
1116
  `Couldn't find host element for "${cmpMeta.$tagName$}" as it is unknown to this Stencil runtime. This usually happens when integrating a 3rd party Stencil component with another Stencil component or application. Please reach out to the maintainers of the 3rd party Stencil component or report this on the Stencil Discord server (https://chat.stenciljs.com) or comment on this similar [GitHub issue](https://github.com/stenciljs/core/issues/5457).`
1046
1117
  );
1047
1118
  }
1119
+ const elm = hostRef.$hostElement$ ;
1048
1120
  const oldVal = hostRef.$instanceValues$.get(propName);
1049
1121
  const flags = hostRef.$flags$;
1050
1122
  const instance = hostRef.$lazyInstance$ ;
@@ -1055,6 +1127,27 @@ var setValue = (ref, propName, newVal, cmpMeta) => {
1055
1127
  const didValueChange = newVal !== oldVal && !areBothNaN;
1056
1128
  if ((!(flags & 8 /* isConstructingInstance */) || oldVal === void 0) && didValueChange) {
1057
1129
  hostRef.$instanceValues$.set(propName, newVal);
1130
+ if (cmpMeta.$watchers$) {
1131
+ const watchMethods = cmpMeta.$watchers$[propName];
1132
+ if (watchMethods) {
1133
+ watchMethods.map((watcher) => {
1134
+ try {
1135
+ const [[watchMethodName, watcherFlags]] = Object.entries(watcher);
1136
+ if (flags & 128 /* isWatchReady */ || watcherFlags & 1 /* Immediate */) {
1137
+ if (!instance) {
1138
+ hostRef.$fetchedCbList$.push(() => {
1139
+ hostRef.$lazyInstance$[watchMethodName](newVal, oldVal, propName);
1140
+ });
1141
+ } else {
1142
+ instance[watchMethodName](newVal, oldVal, propName);
1143
+ }
1144
+ }
1145
+ } catch (e) {
1146
+ consoleError(e, elm);
1147
+ }
1148
+ });
1149
+ }
1150
+ }
1058
1151
  if (flags & 2 /* hasRendered */) {
1059
1152
  if (instance.componentShouldUpdate) {
1060
1153
  const shouldUpdate = instance.componentShouldUpdate(newVal, oldVal, propName);
@@ -1072,6 +1165,17 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
1072
1165
  var _a, _b;
1073
1166
  const prototype = Cstr.prototype;
1074
1167
  if (cmpMeta.$members$ || BUILD.propChangeCallback) {
1168
+ {
1169
+ if (Cstr.watchers && !cmpMeta.$watchers$) {
1170
+ cmpMeta.$watchers$ = normalizeWatchers(Cstr.watchers);
1171
+ }
1172
+ if (Cstr.deserializers && !cmpMeta.$deserializers$) {
1173
+ cmpMeta.$deserializers$ = Cstr.deserializers;
1174
+ }
1175
+ if (Cstr.serializers && !cmpMeta.$serializers$) {
1176
+ cmpMeta.$serializers$ = Cstr.serializers;
1177
+ }
1178
+ }
1075
1179
  const members = Object.entries((_a = cmpMeta.$members$) != null ? _a : {});
1076
1180
  members.map(([memberName, [memberFlags]]) => {
1077
1181
  if ((memberFlags & 31 /* Prop */ || (flags & 2 /* proxyState */) && memberFlags & 32 /* State */)) {
@@ -1237,6 +1341,11 @@ var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
1237
1341
  throw new Error(`Constructor for "${cmpMeta.$tagName$}#${hostRef.$modeName$}" was not found`);
1238
1342
  }
1239
1343
  if (!Cstr.isProxied) {
1344
+ {
1345
+ cmpMeta.$watchers$ = normalizeWatchers(Cstr.watchers);
1346
+ cmpMeta.$serializers$ = Cstr.serializers;
1347
+ cmpMeta.$deserializers$ = Cstr.deserializers;
1348
+ }
1240
1349
  proxyComponent(Cstr, cmpMeta, 2 /* proxyState */);
1241
1350
  Cstr.isProxied = true;
1242
1351
  }
@@ -1252,6 +1361,9 @@ var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
1252
1361
  {
1253
1362
  hostRef.$flags$ &= -9 /* isConstructingInstance */;
1254
1363
  }
1364
+ {
1365
+ hostRef.$flags$ |= 128 /* isWatchReady */;
1366
+ }
1255
1367
  endNewInstance();
1256
1368
  {
1257
1369
  fireConnectedCallback(hostRef.$lazyInstance$, elm);
@@ -1385,6 +1497,7 @@ var bootstrapLazy = (lazyBundles, options = {}) => {
1385
1497
  plt.$resourcesUrl$ = new URL(options.resourcesUrl || "./", win.document.baseURI).href;
1386
1498
  lazyBundles.map((lazyBundle) => {
1387
1499
  lazyBundle[1].map((compactMeta) => {
1500
+ var _a2, _b;
1388
1501
  const cmpMeta = {
1389
1502
  $flags$: compactMeta[0],
1390
1503
  $tagName$: compactMeta[1],
@@ -1394,6 +1507,11 @@ var bootstrapLazy = (lazyBundles, options = {}) => {
1394
1507
  {
1395
1508
  cmpMeta.$members$ = compactMeta[2];
1396
1509
  }
1510
+ {
1511
+ cmpMeta.$watchers$ = normalizeWatchers(compactMeta[4]);
1512
+ cmpMeta.$serializers$ = (_a2 = compactMeta[5]) != null ? _a2 : {};
1513
+ cmpMeta.$deserializers$ = (_b = compactMeta[6]) != null ? _b : {};
1514
+ }
1397
1515
  const tagName = transformTag(cmpMeta.$tagName$);
1398
1516
  const HostElement = class extends HTMLElement {
1399
1517
  ["s-p"];
@@ -1499,9 +1617,9 @@ function transformTag(tag) {
1499
1617
  }
1500
1618
 
1501
1619
  exports.bootstrapLazy = bootstrapLazy;
1620
+ exports.createEvent = createEvent;
1502
1621
  exports.getElement = getElement;
1503
1622
  exports.h = h;
1504
1623
  exports.promiseResolve = promiseResolve;
1505
1624
  exports.registerInstance = registerInstance;
1506
- exports.setAssetPath = setAssetPath;
1507
1625
  exports.setNonce = setNonce;
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BfwSK14n.js');
4
- var appGlobals = require('./app-globals-cd54EKuF.js');
3
+ var index = require('./index-DcvBej9f.js');
4
+ var appGlobals = require('./app-globals-V2Kpy_OQ.js');
5
5
 
6
6
  const defineCustomElements = async (win, options) => {
7
7
  if (typeof window === 'undefined') return undefined;
8
8
  await appGlobals.globalScripts();
9
- return index.bootstrapLazy([["dash-button.cjs",[[1,"dash-button",{"showPostLoginText":[4,"show-post-login-text"],"silentCheckSso":[4,"silent-check-sso"],"redirectUri":[1,"redirect-uri"],"authMethod":[1,"auth-method"],"portalApiUrl":[1,"portal-api-url"],"plmUrl":[1,"plm-url"],"showUnauthorizedModal":[4,"show-unauthorized-modal"],"primaryColor":[1,"primary-color"],"accentColor":[1,"accent-color"],"notificationPosition":[1,"notification-position"],"keycloak":[32],"isAuth":[32],"givenUserName":[32],"silentCheckSsoRedirectUri":[32],"appList":[32],"avatarSvg":[32],"isLoading":[32],"config":[32],"localMenuLinks":[32],"organizationUrl":[32],"isRestricted":[32]}]]]], options);
9
+ return index.bootstrapLazy([["dash-button_4.cjs",[[513,"dash-button",{"showPostLoginText":[4,"show-post-login-text"],"silentCheckSso":[4,"silent-check-sso"],"redirectUri":[1,"redirect-uri"],"authMethod":[1,"auth-method"],"portalApiUrl":[1,"portal-api-url"],"plmUrl":[1,"plm-url"],"showUnauthorizedModal":[4,"show-unauthorized-modal"],"primaryColor":[1,"primary-color"],"accentColor":[1,"accent-color"],"showNotification":[4,"show-notification"],"notificationPosition":[1,"notification-position"],"keycloak":[32],"isAuth":[32],"givenUserName":[32],"silentCheckSsoRedirectUri":[32],"appList":[32],"avatarSvg":[32],"isLoading":[32],"config":[32],"localMenuLinks":[32],"organizationUrl":[32],"isRestricted":[32]}],[513,"notification-component",{"owner":[1],"applicationId":[1,"application-id"],"maxRecords":[2,"max-records"],"listUrl":[1,"list-url"],"displayType":[1,"display-type"],"notificationUrl":[1,"notification-url"],"socketConnect":[4,"socket-connect"],"socketUrl":[1,"socket-url"],"showModal":[32]},null,{"showModal":[{"ownerChanged":0}]}],[513,"notification-table",{"owner":[1],"applicationId":[1,"application-id"],"maxRecords":[2,"max-records"],"listUrl":[1,"list-url"],"displayType":[1,"display-type"],"notificationUrl":[1,"notification-url"],"socketConnect":[4,"socket-connect"],"socketUrl":[1,"socket-url"],"showTable":[32],"loading":[32],"newCount":[32],"notificationList":[32],"markingRead":[32],"pageNumber":[32],"totalRecords":[32],"search":[32],"searching":[32],"showSearchBar":[32],"categoryList":[32],"statusList":[32]},null,{"owner":[{"ownerChanged":0}]}],[513,"loading-component",{"show":[4],"size":[1]}]]]], options);
10
10
  };
11
11
 
12
12
  exports.setNonce = index.setNonce;
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BfwSK14n.js');
4
- var appGlobals = require('./app-globals-cd54EKuF.js');
3
+ var index = require('./index-DcvBej9f.js');
4
+ var appGlobals = require('./app-globals-V2Kpy_OQ.js');
5
5
 
6
6
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
7
7
  /*
@@ -19,7 +19,7 @@ var patchBrowser = () => {
19
19
 
20
20
  patchBrowser().then(async (options) => {
21
21
  await appGlobals.globalScripts();
22
- return index.bootstrapLazy([["dash-button.cjs",[[1,"dash-button",{"showPostLoginText":[4,"show-post-login-text"],"silentCheckSso":[4,"silent-check-sso"],"redirectUri":[1,"redirect-uri"],"authMethod":[1,"auth-method"],"portalApiUrl":[1,"portal-api-url"],"plmUrl":[1,"plm-url"],"showUnauthorizedModal":[4,"show-unauthorized-modal"],"primaryColor":[1,"primary-color"],"accentColor":[1,"accent-color"],"notificationPosition":[1,"notification-position"],"keycloak":[32],"isAuth":[32],"givenUserName":[32],"silentCheckSsoRedirectUri":[32],"appList":[32],"avatarSvg":[32],"isLoading":[32],"config":[32],"localMenuLinks":[32],"organizationUrl":[32],"isRestricted":[32]}]]]], options);
22
+ return index.bootstrapLazy([["dash-button_4.cjs",[[513,"dash-button",{"showPostLoginText":[4,"show-post-login-text"],"silentCheckSso":[4,"silent-check-sso"],"redirectUri":[1,"redirect-uri"],"authMethod":[1,"auth-method"],"portalApiUrl":[1,"portal-api-url"],"plmUrl":[1,"plm-url"],"showUnauthorizedModal":[4,"show-unauthorized-modal"],"primaryColor":[1,"primary-color"],"accentColor":[1,"accent-color"],"showNotification":[4,"show-notification"],"notificationPosition":[1,"notification-position"],"keycloak":[32],"isAuth":[32],"givenUserName":[32],"silentCheckSsoRedirectUri":[32],"appList":[32],"avatarSvg":[32],"isLoading":[32],"config":[32],"localMenuLinks":[32],"organizationUrl":[32],"isRestricted":[32]}],[513,"notification-component",{"owner":[1],"applicationId":[1,"application-id"],"maxRecords":[2,"max-records"],"listUrl":[1,"list-url"],"displayType":[1,"display-type"],"notificationUrl":[1,"notification-url"],"socketConnect":[4,"socket-connect"],"socketUrl":[1,"socket-url"],"showModal":[32]},null,{"showModal":[{"ownerChanged":0}]}],[513,"notification-table",{"owner":[1],"applicationId":[1,"application-id"],"maxRecords":[2,"max-records"],"listUrl":[1,"list-url"],"displayType":[1,"display-type"],"notificationUrl":[1,"notification-url"],"socketConnect":[4,"socket-connect"],"socketUrl":[1,"socket-url"],"showTable":[32],"loading":[32],"newCount":[32],"notificationList":[32],"markingRead":[32],"pageNumber":[32],"totalRecords":[32],"search":[32],"searching":[32],"showSearchBar":[32],"categoryList":[32],"statusList":[32]},null,{"owner":[{"ownerChanged":0}]}],[513,"loading-component",{"show":[4],"size":[1]}]]]], options);
23
23
  });
24
24
 
25
25
  exports.setNonce = index.setNonce;
@@ -8,7 +8,15 @@
8
8
  "version": "4.45.0",
9
9
  "typescriptVersion": "5.8.3"
10
10
  },
11
- "collections": [],
12
- "bundles": [],
13
- "global": "global/app.js"
11
+ "collections": [
12
+ {
13
+ "name": "ice-notification-component",
14
+ "tags": [
15
+ "loading-component",
16
+ "notification-component",
17
+ "notification-table"
18
+ ]
19
+ }
20
+ ],
21
+ "bundles": []
14
22
  }
@@ -3,72 +3,43 @@ import Keycloak from "keycloak-js";
3
3
  import { toSvg } from "jdenticon";
4
4
  import { configService } from "../../services/config";
5
5
  import { menuService } from "../../services/menu";
6
+ import "ice-notification-component";
6
7
  export class DashButtonComponent {
7
- constructor() {
8
- this.showPostLoginText = false;
9
- this.silentCheckSso = false;
10
- this.authMethod = "check-sso";
11
- this.portalApiUrl = "";
12
- this.plmUrl = "https://productlicensemanager-zdzw.cloud.zdzw-project.com";
13
- this.showUnauthorizedModal = false;
14
- this.primaryColor = "";
15
- this.accentColor = "";
16
- this.notificationPosition = "left";
17
- this.keycloak = null;
18
- this.isAuth = false;
19
- this.givenUserName = "";
20
- this.silentCheckSsoRedirectUri = window.location.origin + '/assets/verificar-sso.html';
21
- this.appList = [];
22
- this.avatarSvg = toSvg("init-avatar", 40);
23
- this.isLoading = false;
24
- this.isRestricted = false;
25
- }
26
- componentDidLoad() {
27
- console.log("New version!!!");
28
- // Add a click listener to this specific component instance
29
- this.el.addEventListener('click', (event) => {
30
- const path = event.composedPath();
31
- // Ensure this click originated from inside the notification module
32
- const isInsideNotification = path.some((target) => target && target.tagName === 'NOTIFICATION-COMPONENT');
33
- // If the click is outside the notification module (e.g., somewhere else in dash-button), exit early
34
- if (!isInsideNotification) {
35
- return;
36
- }
37
- // 2. Identify the specific link element inside the path array
38
- const clickedLink = path.find((target) => target && (target.tagName === 'A' || (typeof target.hasAttribute === 'function' && target.hasAttribute('href'))));
39
- if (clickedLink) {
40
- const destinationUrl = clickedLink.getAttribute('href');
41
- if (destinationUrl) {
42
- // Prevent the default behavior ONLY for the notification component links
43
- event.preventDefault();
44
- event.stopPropagation();
45
- // Check if the link contains the unique class name
46
- const isHomeIconLink = clickedLink.classList.contains('button-link');
47
- if (isHomeIconLink) {
48
- console.log('Notification module home link intercepted. Opening in new tab:', destinationUrl);
49
- window.open(destinationUrl, '_blank', 'noopener,noreferrer');
50
- }
51
- else {
52
- console.log('Notification module standard link intercepted. Navigating in current view:', destinationUrl);
53
- window.location.href = destinationUrl;
54
- }
55
- }
56
- }
57
- });
58
- }
8
+ el;
9
+ showPostLoginText = false;
10
+ silentCheckSso = false;
11
+ redirectUri;
12
+ authMethod = "check-sso";
13
+ portalApiUrl = "";
14
+ plmUrl = "https://productlicensemanager-zdzw.cloud.zdzw-project.com";
15
+ showUnauthorizedModal = false;
16
+ primaryColor = "";
17
+ accentColor = "";
18
+ showNotification = true;
19
+ notificationPosition = "left";
20
+ keycloak = null;
21
+ isAuth = false;
22
+ givenUserName = "";
23
+ silentCheckSsoRedirectUri = window.location.origin + '/assets/verificar-sso.html';
24
+ appList = [];
25
+ avatarSvg = toSvg("init-avatar", 40);
26
+ isLoading = false;
27
+ config;
28
+ localMenuLinks;
29
+ organizationUrl;
30
+ isRestricted = false;
59
31
  async componentWillLoad() {
60
- var _a, _b, _c, _d;
61
32
  // Fetch config from API
62
33
  this.config = await configService.fetchConfig(this.portalApiUrl);
63
34
  console.log(this.config);
64
35
  if (!this.config)
65
36
  return; // prevent Keycloak init if fetch failed
66
37
  // render will show spinner
67
- if ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.loading) === null || _b === void 0 ? void 0 : _b.isLoading) {
38
+ if (this.config?.loading?.isLoading) {
68
39
  this.isLoading = true;
69
40
  setTimeout(() => {
70
41
  this.isLoading = false;
71
- }, (_d = (_c = this.config) === null || _c === void 0 ? void 0 : _c.loading) === null || _d === void 0 ? void 0 : _d.duration);
42
+ }, this.config?.loading?.duration);
72
43
  }
73
44
  // Initialize Keycloak
74
45
  this.keycloak = new Keycloak({
@@ -99,34 +70,32 @@ export class DashButtonComponent {
99
70
  checkLoginIframe: false,
100
71
  silentCheckSsoRedirectUri: this.silentCheckSso ? this.silentCheckSsoRedirectUri : '',
101
72
  }).then((res) => {
102
- var _a, _b, _c;
103
73
  if (res) {
104
74
  this.isAuth = true;
105
75
  localStorage.setItem("keycloak", JSON.stringify(this.keycloak));
106
76
  // document.cookie = "DASH_BTN=" + JSON.parse(localStorage.getItem('keycloak')).token;
107
- document.cookie = this.config.cookieName + "=" + JSON.parse((_a = localStorage.getItem('keycloak')) !== null && _a !== void 0 ? _a : '{}').token;
77
+ document.cookie = this.config.cookieName + "=" + JSON.parse(localStorage.getItem('keycloak') ?? '{}').token;
108
78
  // Set userName
109
- this.givenUserName = JSON.parse((_b = localStorage.getItem('keycloak')) !== null && _b !== void 0 ? _b : '{}').idTokenParsed.preferred_username;
79
+ this.givenUserName = JSON.parse(localStorage.getItem('keycloak') ?? '{}').idTokenParsed.preferred_username;
110
80
  // Set user avatar
111
- this.avatarSvg = toSvg(JSON.parse((_c = localStorage.getItem('keycloak')) !== null && _c !== void 0 ? _c : '{}').idTokenParsed.sub, 40);
81
+ this.avatarSvg = toSvg(JSON.parse(localStorage.getItem('keycloak') ?? '{}').idTokenParsed.sub, 40);
112
82
  }
113
83
  });
114
84
  }
115
85
  async loadOrganizationUrlAndLinks() {
116
- var _a, _b, _c;
117
86
  // Read org URL safely
118
87
  try {
119
88
  const kc = JSON.parse(localStorage.getItem("keycloak") || "{}");
120
- this.organizationUrl = ((_a = kc === null || kc === void 0 ? void 0 : kc.idTokenParsed) === null || _a === void 0 ? void 0 : _a.organizationUrl) || null;
89
+ this.organizationUrl = kc?.idTokenParsed?.organizationUrl || null;
121
90
  }
122
- catch (_d) {
91
+ catch {
123
92
  this.organizationUrl = null;
124
93
  }
125
94
  // If no organization, do nothing
126
95
  if (!this.organizationUrl)
127
96
  return;
128
97
  // If config or menu not ready, skip
129
- if (!((_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.menu) === null || _c === void 0 ? void 0 : _c.local))
98
+ if (!this.config?.menu?.local)
130
99
  return;
131
100
  // Only load when custom menu is NOT enabled
132
101
  if (!this.config.menu.local.enableCustomLocalMenu) {
@@ -143,26 +112,25 @@ export class DashButtonComponent {
143
112
  // Then, check the token's organization URL
144
113
  // Finally, check against dashbutton configuration: allowedGlobalDomain and whitelistedUrls
145
114
  validateAppAccessByUrl() {
146
- var _a, _b, _c, _d, _e, _f;
147
115
  const normalizeUrl = (url) => url.replace(/\/+$/, '');
148
116
  const currentUrl = normalizeUrl(window.location.href);
149
117
  const currentOrigin = normalizeUrl(window.location.origin);
150
- const globalLinks = ((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.menu) === null || _b === void 0 ? void 0 : _b.global) === null || _c === void 0 ? void 0 : _c.links) || [];
151
- const allowedGlobalDomain = ((_d = this.config) === null || _d === void 0 ? void 0 : _d.allowedGlobalDomain) || '';
152
- const whitelistedUrls = ((_e = this.config) === null || _e === void 0 ? void 0 : _e.whitelistedUrls) || '';
118
+ const globalLinks = this.config?.menu?.global?.links || [];
119
+ const allowedGlobalDomain = this.config?.allowedGlobalDomain || '';
120
+ const whitelistedUrls = this.config?.whitelistedUrls || '';
153
121
  // First, check global links
154
122
  const matchGlobal = globalLinks.some(link => {
155
123
  try {
156
124
  const linkOrigin = normalizeUrl(new URL(link.url).origin);
157
125
  return currentOrigin === linkOrigin;
158
126
  }
159
- catch (_a) {
127
+ catch {
160
128
  return false;
161
129
  }
162
130
  });
163
131
  // Then check the token organization URL
164
- const tokenParsed = (_f = this.keycloak) === null || _f === void 0 ? void 0 : _f.tokenParsed;
165
- const allowedOrg = tokenParsed === null || tokenParsed === void 0 ? void 0 : tokenParsed.organizationUrl;
132
+ const tokenParsed = this.keycloak?.tokenParsed;
133
+ const allowedOrg = tokenParsed?.organizationUrl;
166
134
  const matchOrganization = allowedOrg && currentUrl.includes(normalizeUrl(allowedOrg));
167
135
  // Check allowedGlobalDomain (single domain)
168
136
  const matchAllowedDomain = allowedGlobalDomain &&
@@ -197,34 +165,33 @@ export class DashButtonComponent {
197
165
  appModal.style.display = "none";
198
166
  }
199
167
  renderNotificationComponent() {
200
- var _a;
201
- const token = (_a = this.keycloak) === null || _a === void 0 ? void 0 : _a.idTokenParsed;
202
- const owner = (token === null || token === void 0 ? void 0 : token.preferred_username) || (token === null || token === void 0 ? void 0 : token.sub) || '';
203
- const orgUrlRaw = (token === null || token === void 0 ? void 0 : token.organizationUrl) || '';
168
+ const token = this.keycloak?.idTokenParsed;
169
+ const owner = token?.preferred_username || token?.sub || '';
170
+ const orgUrlRaw = token?.organizationUrl || '';
204
171
  const orgHost = orgUrlRaw
205
172
  ? new URL(orgUrlRaw.startsWith('http') ? orgUrlRaw : `https://${orgUrlRaw}`).hostname
206
173
  : '';
207
174
  return orgHost && owner ? (h("notification-component", { owner: owner, "max-records": 10, "display-type": "icon", "notification-url": `https://notifications.${orgHost}/notifications-api`, "socket-connect": true, "socket-url": `wss://repository.${orgHost}/socket`, "list-url": `https://notifications.${orgHost}/notifications` })) : null;
208
175
  }
209
176
  render() {
210
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
211
- return h("div", { key: 'a2d1650d96fcbbfa5128da4315e70dc0c2682dfd' }, h("div", { key: '975ab012c618442f627f00a9ee29773c08d55824' }, (() => {
212
- var _a, _b, _c, _d, _e, _f, _g, _h;
177
+ return h("div", { key: '5392d18f5e9bb3f0da2d3bbe825a5ebcdccde248' }, h("div", { key: 'dd8eba2ec617565792ae1f7cd2730856ca246ef4' }, (() => {
213
178
  // GLOBAL LOADING SPINNER
214
179
  if (this.isLoading) {
215
180
  return (h("a", { id: "login-btn", class: "button button-link" }, h("div", { class: "lds-ring" }, h("div", null), h("div", null), h("div", null), h("div", null))));
216
181
  }
217
182
  if (this.isRestricted) {
218
- return (h("div", { class: "restricted-overlay" }, h("div", { class: "restricted-card" }, h("div", { class: "restricted-icon" }, h("i", { class: "fa-solid fa-shield-halved" })), h("h2", null, "Access Restricted"), h("p", { class: "restricted-message" }, "You do not have permission to access this application. Please contact your administrator if you believe this is an error."), ((_d = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.menu) === null || _b === void 0 ? void 0 : _b.global) === null || _c === void 0 ? void 0 : _c.links) === null || _d === void 0 ? void 0 : _d.length) > 0 && (h("div", { class: "restricted-links" }, h("h4", null, "Publicly Available Modules"), h("div", { class: "link-grid" }, this.config.menu.global.links.map(item => (h("a", { href: item.url, target: "_blank", class: "restricted-link" }, h("i", { class: item.icon }), h("span", null, item.name))))))), h("div", { class: "restricted-actions" }, ((_f = (_e = this.config) === null || _e === void 0 ? void 0 : _e.defaultLink) === null || _f === void 0 ? void 0 : _f.url) && (h("a", { href: this.config.defaultLink.url, target: "_blank", class: "btn-primary" }, "Go to Portal")), h("button", { class: "btn-danger", onClick: this.logout.bind(this) }, "Logout")))));
183
+ return (h("div", { class: "restricted-overlay" }, h("div", { class: "restricted-card" }, h("div", { class: "restricted-icon" }, h("i", { class: "fa-solid fa-shield-halved" })), h("h2", null, "Access Restricted"), h("p", { class: "restricted-message" }, "You do not have permission to access this application. Please contact your administrator if you believe this is an error."), this.config?.menu?.global?.links?.length > 0 && (h("div", { class: "restricted-links" }, h("h4", null, "Publicly Available Modules"), h("div", { class: "link-grid" }, this.config.menu.global.links.map(item => (h("a", { href: item.url, target: "_blank", class: "restricted-link" }, h("i", { class: item.icon }), h("span", null, item.name))))))), h("div", { class: "restricted-actions" }, this.config?.defaultLink?.url && (h("a", { href: this.config.defaultLink.url, target: "_blank", class: "btn-primary" }, "Go to Portal")), h("button", { class: "btn-danger", onClick: this.logout.bind(this) }, "Logout")))));
219
184
  }
220
185
  if (this.isAuth && this.showPostLoginText) {
221
186
  return (h("a", { style: { background: this.primaryColor != undefined ? this.primaryColor : "" }, href: this.redirectUri, id: "login-btn", class: "button button-link" }, h("span", { style: { color: this.accentColor != undefined ? this.accentColor : "" }, class: "button-text button-text-full-width" }, "Go to Dashboard")));
222
187
  }
223
188
  else if (this.isAuth) {
224
- return (h("div", { class: "profile-actions", style: { display: "inline-flex", alignItems: "center", gap: "15px" } }, this.notificationPosition !== "right" && this.renderNotificationComponent(), h("div", { id: "profile-btn", class: "dropdown" }, h("button", { style: { background: this.primaryColor != undefined ? this.primaryColor : "" }, type: "button", class: "button" }, h("span", { class: "button-profile" }, JSON.parse((_g = localStorage.getItem('keycloak')) !== null && _g !== void 0 ? _g : '{}').idTokenParsed.imageUrl ?
189
+ return (h("div", { class: "profile-actions", style: { display: "inline-flex", alignItems: "center", gap: "15px" } }, this.showNotification &&
190
+ this.notificationPosition !== "right" &&
191
+ this.renderNotificationComponent(), h("div", { id: "profile-btn", class: "dropdown" }, h("button", { style: { background: this.primaryColor != undefined ? this.primaryColor : "" }, type: "button", class: "button" }, h("span", { class: "button-profile" }, JSON.parse(localStorage.getItem('keycloak') ?? '{}').idTokenParsed.imageUrl ?
225
192
  h("img", { class: "profile-image", src: "https://s-damith.github.io/test-avatar/images/e24da9c5-0b1f-46fa-82cd-7c711c77b5c7.png" })
226
193
  :
227
- h("div", { innerHTML: this.avatarSvg })), h("span", { style: { color: this.accentColor != undefined ? this.accentColor : "" }, id: "given-name", class: "button-text" }, this.givenUserName), h("div", { class: "button-icon" }, (this.config.menuViewType == "grid") ? h("i", { class: "fa-solid fa-grip-vertical" }) : h("i", { class: "fa-solid fa-bars" }))), h("div", { class: "dropdown-content" }, h("div", { class: "dropdown-user-profile" }, h("div", { class: "username" }, "@", this.givenUserName), h("div", { class: "first-last-name" }, JSON.parse((_h = localStorage.getItem('keycloak')) !== null && _h !== void 0 ? _h : '{}').idTokenParsed.name)), (this.config.menuViewType == "grid") ? (h("div", null, h("div", { class: "grid-view-menu" }, this.config.menu.global.links.map(item => {
194
+ h("div", { innerHTML: this.avatarSvg })), h("span", { style: { color: this.accentColor != undefined ? this.accentColor : "" }, id: "given-name", class: "button-text" }, this.givenUserName), h("div", { class: "button-icon" }, (this.config.menuViewType == "grid") ? h("i", { class: "fa-solid fa-grip-vertical" }) : h("i", { class: "fa-solid fa-bars" }))), h("div", { class: "dropdown-content" }, h("div", { class: "dropdown-user-profile" }, h("div", { class: "username" }, "@", this.givenUserName), h("div", { class: "first-last-name" }, JSON.parse(localStorage.getItem('keycloak') ?? '{}').idTokenParsed.name)), (this.config.menuViewType == "grid") ? (h("div", null, h("div", { class: "grid-view-menu" }, this.config.menu.global.links.map(item => {
228
195
  return (h("a", { href: item.url, target: '_blank', class: "grid-view-link" }, h("i", { class: item.icon + " fa-2x" }), h("div", { class: "grid-view-link-text" }, item.name)));
229
196
  })), this.config.menu.global.links.length != 0 && h("hr", { class: "solid" }), h("div", { class: "grid-view-menu", style: this.config.menu.global.links.length === 0
230
197
  ? { marginBottom: '12px' }
@@ -232,20 +199,22 @@ export class DashButtonComponent {
232
199
  // List View
233
200
  h("div", { class: "dropdown-content-link" }, this.config.menu.global.links.map(item => {
234
201
  return (h("a", { href: item.url, target: '_blank', id: "applications-btn" }, h("i", { class: item.icon + " menu-bar-icons" }), item.name));
235
- }), h("a", { onClick: this.showModal.bind(this), id: "applications-btn" }, h("i", { class: "fa-regular fa-window-restore menu-bar-icons" }), "Modules"), h("a", { href: this.config.defaultLink.url, target: '_blank', id: "applications-btn" }, h("i", { class: "fa-solid fa-globe menu-bar-icons" }), this.config.defaultLink.name), h("a", { onClick: this.logout.bind(this), id: "logout-btn" }, h("i", { class: "fa-solid fa-right-from-bracket menu-bar-icons" }), "Logout"))))), this.notificationPosition === "right" && this.renderNotificationComponent()));
202
+ }), h("a", { onClick: this.showModal.bind(this), id: "applications-btn" }, h("i", { class: "fa-regular fa-window-restore menu-bar-icons" }), "Modules"), h("a", { href: this.config.defaultLink.url, target: '_blank', id: "applications-btn" }, h("i", { class: "fa-solid fa-globe menu-bar-icons" }), this.config.defaultLink.name), h("a", { onClick: this.logout.bind(this), id: "logout-btn" }, h("i", { class: "fa-solid fa-right-from-bracket menu-bar-icons" }), "Logout"))))), this.showNotification &&
203
+ this.notificationPosition === "right" &&
204
+ this.renderNotificationComponent()));
236
205
  }
237
206
  else {
238
207
  return (h("button", { style: { background: this.primaryColor != undefined ? this.primaryColor : "" }, onClick: this.login.bind(this), id: "login-btn", type: "button", class: "button" }, h("span", { style: { color: this.accentColor != undefined ? this.accentColor : "" }, class: "button-text" }, "Login")));
239
208
  }
240
- })()), h("div", { key: '3a9e8bd2730ba8d71f1e8416bab4d745a68dda9a', id: "appListModal", class: "modal" }, h("div", { key: '8f85ebe690af26900e003755e68fa5cd1401b502', class: "modal-content" }, h("span", { key: '445d67c3803859bbec76177291fd71389ccf5917', onClick: this.closeModal.bind(this), class: "close" }, "\u00D7"), h("div", { key: '0a0df9bb6fc5258568fb9363353f58486a30f744', class: "box" }, h("input", { key: 'eec587753688b1ac0bd1a3b87975f0b9692d7719', type: "radio", class: "tab-toggle", name: "tab-toggle", id: "tab1", checked: true }), h("ul", { key: '4db9fff924d2f38e3e42b83bd96fe2589dc2c701', class: "tab-list" }, h("li", { key: '99e9a21d90012e521aa10d21194f44013dbd5931', class: "tab-item" }, h("label", { key: 'c4fadd0b70b3e944860056a37e9d5f52b7c625b5', class: "tab-trigger", htmlFor: "tab1" }, h("i", { key: '5252821523386c869725b0e13bf662ec03f24d81', class: "fa-solid fa-table-list menu-bar-icons" }), " ", this.config.menu.local.name))), h("div", { key: '2da9e2383580f6d5130883051c4b0d1cba1354a7', class: "tab-container" }, h("div", { key: 'a51f2e9b923836b63b9ff2453d08dc3ee93213e6', class: "tab-content" }, h("div", { key: '9c7146fa59070eace7bcb1b76fb2b59468e23b5c', class: "modal-body" }, !((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.menu) === null || _b === void 0 ? void 0 : _b.local) === null || _c === void 0 ? void 0 : _c.enableCustomLocalMenu) ? (
209
+ })()), h("div", { key: '911c2410357a5b9fdca6ecac4410ebd2d1dea6a0', id: "appListModal", class: "modal" }, h("div", { key: 'e4632e2880737a55d32bd5182e0ab4a6c4872308', class: "modal-content" }, h("span", { key: '3359530f1025b26458722383162e3518d08addf3', onClick: this.closeModal.bind(this), class: "close" }, "\u00D7"), h("div", { key: 'c10e1945b9da4659ce0db7d50bc8abd9958d99f7', class: "box" }, h("input", { key: '30c89d437922ca3d12f317251b6bb70bdaeb4e29', type: "radio", class: "tab-toggle", name: "tab-toggle", id: "tab1", checked: true }), h("ul", { key: '3d1b9f617ac830649a4aa02b3b9f1dc316ee37e2', class: "tab-list" }, h("li", { key: '6a35788848f0d7230b20496216eaa1592a217a6f', class: "tab-item" }, h("label", { key: '1bbfb40306554cac6c0cce67e68ff431100d09f2', class: "tab-trigger", htmlFor: "tab1" }, h("i", { key: 'f2d8c926954757117e38d53c5168fa43ebcadb86', class: "fa-solid fa-table-list menu-bar-icons" }), " ", this.config.menu.local.name))), h("div", { key: '1c70c602c899a82599a5979b386eb7a21492232c', class: "tab-container" }, h("div", { key: '78a7980c56844ad275b5c76f5610382791a10b86', class: "tab-content" }, h("div", { key: 'ea005145b48c03956ff477fc81a681e4b9fd123d', class: "modal-body" }, !this.config?.menu?.local?.enableCustomLocalMenu ? (
241
210
  // <div>{this.localMenuLinks}</div>
242
- (_d = this.localMenuLinks) === null || _d === void 0 ? void 0 : _d.map((app, index) => {
211
+ this.localMenuLinks?.map((app, index) => {
243
212
  const isDisabled = !app.url;
244
213
  return (h("a", { key: index, class: "external-app-link", href: isDisabled ? undefined : app.url, target: isDisabled ? undefined : "_blank", rel: isDisabled ? undefined : "noopener noreferrer", onClick: isDisabled ? (e) => e.preventDefault() : undefined }, h("div", { class: "modal-app" }, h("div", null, app.name))));
245
- })) : ((_e = this.config.menu.local.links) === null || _e === void 0 ? void 0 : _e.map((app, index) => (h("a", { key: index, class: "external-app-link", target: "_blank", rel: "noopener noreferrer", href: app.url }, h("div", { class: "modal-app" }, h("div", null, app.name)))))), !this.organizationUrl ? (h("div", null, h("h3", { class: "gray-text" }, "Organization Domain URL not set"), h("p", { class: "gray-text" }, "Please set your Organization Domain URL on the Portal profile page."))) : (((!((_h = (_g = (_f = this.config) === null || _f === void 0 ? void 0 : _f.menu) === null || _g === void 0 ? void 0 : _g.local) === null || _h === void 0 ? void 0 : _h.enableCustomLocalMenu) &&
246
- ((_k = (_j = this.localMenuLinks) === null || _j === void 0 ? void 0 : _j.length) !== null && _k !== void 0 ? _k : 0) === 0) ||
247
- (((_o = (_m = (_l = this.config) === null || _l === void 0 ? void 0 : _l.menu) === null || _m === void 0 ? void 0 : _m.local) === null || _o === void 0 ? void 0 : _o.enableCustomLocalMenu) &&
248
- ((_t = (_s = (_r = (_q = (_p = this.config) === null || _p === void 0 ? void 0 : _p.menu) === null || _q === void 0 ? void 0 : _q.local) === null || _r === void 0 ? void 0 : _r.links) === null || _s === void 0 ? void 0 : _s.length) !== null && _t !== void 0 ? _t : 0) === 0)) && (h("div", null, h("h3", { class: "gray-text" }, "No installed ", ((_w = (_v = (_u = this.config) === null || _u === void 0 ? void 0 : _u.menu) === null || _v === void 0 ? void 0 : _v.local) === null || _w === void 0 ? void 0 : _w.name) || "menu", " found."), h("p", { class: "gray-text" }, "Please contact administration.")))))))))), h("div", { key: '2a36c585f0f83380bc08b30141df91c1532b4a28', id: "appPermissionErrorModal", class: "modal" }, h("div", { key: '8fbbb80e22591c105c5010689d2f91909652ed8c', class: "modal-content" }, h("img", { key: '1621c2b97802968da0e6429e1b1571eb4080ef68', src: "data:image/png;base64,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" }), h("h2", { key: 'f9a6ba63c8d9ca116ad61a1eae25fca676b88767', class: "green-text margin-b" }, "You don't have permission to access this application."), h("h3", { key: '12783289a6b8ef86c096457555f3371cbbde39dc', class: "green-text" }, "Please contact the administration."), (this.config.defaultLink.url && this.showUnauthorizedModal) ?
214
+ })) : (this.config.menu.local.links?.map((app, index) => (h("a", { key: index, class: "external-app-link", target: "_blank", rel: "noopener noreferrer", href: app.url }, h("div", { class: "modal-app" }, h("div", null, app.name)))))), !this.organizationUrl ? (h("div", null, h("h3", { class: "gray-text" }, "Organization Domain URL not set"), h("p", { class: "gray-text" }, "Please set your Organization Domain URL on the Portal profile page."))) : (((!this.config?.menu?.local?.enableCustomLocalMenu &&
215
+ (this.localMenuLinks?.length ?? 0) === 0) ||
216
+ (this.config?.menu?.local?.enableCustomLocalMenu &&
217
+ (this.config?.menu?.local?.links?.length ?? 0) === 0)) && (h("div", null, h("h3", { class: "gray-text" }, "No installed ", this.config?.menu?.local?.name || "menu", " found."), h("p", { class: "gray-text" }, "Please contact administration.")))))))))), h("div", { key: 'd2c499ba4bd4d09e17960b170e36baac18b807ae', id: "appPermissionErrorModal", class: "modal" }, h("div", { key: '834c6c3a8ef38367d50edb86c87eea6926813929', class: "modal-content" }, h("img", { key: 'ac28c1c69c57dac9fbf5fb87923f71afc3c8253e', src: "data:image/png;base64,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" }), h("h2", { key: '404c7eb189b4ad09885e01bc8b98a483a50a2fd4', class: "green-text margin-b" }, "You don't have permission to access this application."), h("h3", { key: 'f06e629f3832ea7b5e73f8daeb40900b0342fa07', class: "green-text" }, "Please contact the administration."), (this.config.defaultLink.url && this.showUnauthorizedModal) ?
249
218
  h("div", null, h("h4", { class: "gray-text" }, "You will be automatically redirected to the portal."), h("div", { id: "countdown" }, h("div", { id: "countdown-number" }), h("svg", null, h("circle", { r: "18", cx: "20", cy: "20" }))))
250
219
  : h("div", null))));
251
220
  }
@@ -442,6 +411,26 @@ export class DashButtonComponent {
442
411
  "attribute": "accent-color",
443
412
  "defaultValue": "\"\""
444
413
  },
414
+ "showNotification": {
415
+ "type": "boolean",
416
+ "mutable": false,
417
+ "complexType": {
418
+ "original": "boolean",
419
+ "resolved": "boolean",
420
+ "references": {}
421
+ },
422
+ "required": false,
423
+ "optional": false,
424
+ "docs": {
425
+ "tags": [],
426
+ "text": ""
427
+ },
428
+ "getter": false,
429
+ "setter": false,
430
+ "reflect": false,
431
+ "attribute": "show-notification",
432
+ "defaultValue": "true"
433
+ },
445
434
  "notificationPosition": {
446
435
  "type": "string",
447
436
  "mutable": false,