dash-button-web 0.0.2 → 0.0.5

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 (31) hide show
  1. package/dist/cjs/dash-button.cjs.entry.js +101 -6
  2. package/dist/cjs/dash-button.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-8282b36b.js → index-991e75df.js} +45 -10
  4. package/dist/cjs/index-991e75df.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/web-compnont.cjs.js +2 -2
  7. package/dist/collection/components/my-component/dash-button.css +61 -0
  8. package/dist/collection/components/my-component/dash-button.js +173 -5
  9. package/dist/collection/components/my-component/dash-button.js.map +1 -1
  10. package/dist/components/dash-button.js +106 -6
  11. package/dist/components/dash-button.js.map +1 -1
  12. package/dist/esm/dash-button.entry.js +101 -6
  13. package/dist/esm/dash-button.entry.js.map +1 -1
  14. package/dist/esm/{index-2b6c17bc.js → index-8310c457.js} +45 -10
  15. package/dist/esm/index-8310c457.js.map +1 -0
  16. package/dist/esm/loader.js +3 -3
  17. package/dist/esm/web-compnont.js +3 -3
  18. package/dist/types/components/my-component/dash-button.d.ts +8 -1
  19. package/dist/types/components.d.ts +8 -0
  20. package/dist/web-compnont/p-4bd42d49.js +3 -0
  21. package/dist/web-compnont/p-4bd42d49.js.map +1 -0
  22. package/dist/web-compnont/{p-4356bec1.entry.js → p-89ceb862.entry.js} +3 -3
  23. package/dist/web-compnont/p-89ceb862.entry.js.map +1 -0
  24. package/dist/web-compnont/web-compnont.esm.js +1 -1
  25. package/dist/web-compnont/web-compnont.esm.js.map +1 -1
  26. package/package.json +1 -1
  27. package/dist/cjs/index-8282b36b.js.map +0 -1
  28. package/dist/esm/index-2b6c17bc.js.map +0 -1
  29. package/dist/web-compnont/p-35259f64.js +0 -3
  30. package/dist/web-compnont/p-35259f64.js.map +0 -1
  31. package/dist/web-compnont/p-4356bec1.entry.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-8282b36b.js');
5
+ const index = require('./index-991e75df.js');
6
6
 
7
7
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
8
8
 
@@ -2477,7 +2477,7 @@ function Keycloak (config) {
2477
2477
  }
2478
2478
  }
2479
2479
 
2480
- const dashButtonCss = ".button{display:flex;height:50px;padding:0;background:#3e7671;border:none;outline:none;border-radius:5px;overflow:hidden;font-size:16px;font-weight:500;cursor:pointer;min-width:220px;max-width:220px}.button:hover{background:#008168}.button:active{background:#3e7671}.button-text{display:block;margin:auto;padding:0 24px;color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;width:80px}.button-icon{margin:auto;padding:10px}.button-profile{display:inline-flex;align-items:center;color:#fff}.button-profile img{height:50px}.button-text-full-width{width:auto!important}.button-link{text-decoration:none!important}.gg-menu-grid-r{color:#fff;box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs,1));width:16px;height:16px}.gg-menu-grid-r::before{content:\"\";display:block;box-sizing:border-box;position:absolute;width:4px;height:4px;background:currentColor;box-shadow:0 6px 0,\n 6px 6px 0,\n 12px 6px 0,\n 6px 12px 0,\n 12px 12px 0,\n 6px 0 0,\n 12px 0 0,\n 0 12px 0}.dropdown{position:relative;display:inline-block}.dropdown-content{display:none;position:absolute;right:0;background-color:#f9f9f9;min-width:180px;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);z-index:1;border-radius:5px}.dropdown-content a{color:#71797E;padding:16px 20px;text-decoration:none;display:block;cursor:pointer}.dropdown-content a:hover{background-color:#f1f1f1;color:#000;opacity:0.7}.dropdown:hover .dropdown-content{display:block}.modal{display:none;position:fixed;z-index:1;padding-top:100px;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4);text-align:center}.modal-content{background-color:#fefefe;margin:auto;padding:20px;border:1px solid #888;width:40%}.close{color:#aaaaaa;float:right;font-size:28px;font-weight:bold}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer}.modal-app{background-color:#c3e9bc;padding:15px;margin:10px;border-radius:5px}";
2480
+ const dashButtonCss = ".button{display:flex;height:50px;padding:0;background:#3e7671;border:none;outline:none;border-radius:5px;overflow:hidden;font-size:16px;font-weight:500;cursor:pointer;min-width:220px;max-width:220px}.button:hover{background:#008168}.button:active{background:#3e7671}.button-text{display:block;margin:auto;padding:0 24px;color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;width:80px}.button-icon{margin:auto;padding:10px}.button-profile{display:inline-flex;align-items:center;color:#fff}.button-profile img{height:50px}.button-text-full-width{width:auto!important}.button-link{text-decoration:none!important}.gg-menu-grid-r{color:#fff;box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs,1));width:16px;height:16px}.gg-menu-grid-r::before{content:\"\";display:block;box-sizing:border-box;position:absolute;width:4px;height:4px;background:currentColor;box-shadow:0 6px 0,\n 6px 6px 0,\n 12px 6px 0,\n 6px 12px 0,\n 12px 12px 0,\n 6px 0 0,\n 12px 0 0,\n 0 12px 0}.dropdown{position:relative;display:inline-block}.dropdown-content{display:none;position:absolute;right:0;background-color:#f9f9f9;min-width:180px;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);z-index:1;border-radius:5px}.dropdown-content a{color:#71797E;padding:16px 20px;text-decoration:none;display:block;cursor:pointer}.dropdown-content a:hover{background-color:#f1f1f1;color:#000;opacity:0.7}.dropdown:hover .dropdown-content{display:block}.modal{display:none;position:fixed;z-index:1;padding-top:100px;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4);text-align:center}.modal-content{background-color:#fefefe;margin:auto;padding:20px;border:1px solid #888;width:40%}.modal-body{max-height:50vh;overflow-y:auto}.close{color:#aaaaaa;float:right;font-size:28px;font-weight:bold}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer}.modal-app{background-color:#c3e9bc;padding:15px;margin:10px;border-radius:5px}.external-app-link{text-decoration:none;color:#000}.gray-text{color:#606060}.green-text{color:#3e7671}#countdown{position:relative;margin:auto;margin-top:30px;height:40px;width:40px;text-align:center}#countdown-number{color:#2e2e2e;display:inline-block;line-height:40px}svg{position:absolute;top:0;right:0;width:40px;height:40px;transform:rotateY(-180deg) rotateZ(-90deg)}svg circle{stroke-dasharray:113px;stroke-dashoffset:0px;stroke-linecap:round;stroke-width:4px;stroke:#008168;fill:none;animation:countdown 6s linear infinite forwards}@keyframes countdown{from{stroke-dashoffset:0px}to{stroke-dashoffset:113px}}";
2481
2481
  const DashButtonStyle0 = dashButtonCss;
2482
2482
 
2483
2483
  const DashButtonComponent = class {
@@ -2490,6 +2490,10 @@ const DashButtonComponent = class {
2490
2490
  this.keycloakUri = "http://localhost:8080";
2491
2491
  this.realm = "";
2492
2492
  this.clientId = "";
2493
+ this.appId = "";
2494
+ this.portalUrl = "";
2495
+ this.marketplaceUrl = "";
2496
+ this.showUnauthorizedModal = false;
2493
2497
  this.keycloak = new Keycloak({
2494
2498
  url: this.keycloakUri,
2495
2499
  realm: this.realm,
@@ -2498,10 +2502,86 @@ const DashButtonComponent = class {
2498
2502
  this.isAuth = false;
2499
2503
  this.givenName = "";
2500
2504
  this.silentCheckSsoRedirectUri = window.location.origin + '/assets/verificar-sso.html';
2505
+ this.appList = [];
2501
2506
  }
2502
2507
  ;
2503
- connectedCallback() {
2504
- this.keycloak.init({
2508
+ componentWillLoad() {
2509
+ this.initKeycloak().then(() => {
2510
+ // Check if the user is authenticated
2511
+ if (this.isAuth) {
2512
+ this.getAppList().then(res => {
2513
+ this.appList = res;
2514
+ // If the user has set an app ID, check if they have permission to access
2515
+ if (this.appId) {
2516
+ // Retrieve the list of buttons that are configured to set the app ID
2517
+ const appIdList = this.appId.replace(/'/g, '').split(',');
2518
+ // Remote appID list parsed from object
2519
+ const tempAppList = this.appList.map(obj => obj['shortname']);
2520
+ // Check if the user has permission to access the selected application
2521
+ if (appIdList.filter(id => tempAppList.includes(id)).length == 0) {
2522
+ // Show modal
2523
+ const appErrorModal = this.el.shadowRoot.querySelector('#appPermissionErrorModal');
2524
+ appErrorModal.style.display = "block";
2525
+ // If a redirect URL is provided, show the loading spinner
2526
+ if (this.portalUrl && this.showUnauthorizedModal) {
2527
+ var countdownNumberEl = this.el.shadowRoot.getElementById('countdown-number');
2528
+ var countdown = 6;
2529
+ countdownNumberEl.textContent = countdown.toString();
2530
+ setInterval(() => {
2531
+ countdown = --countdown <= 0 ? 6 : countdown;
2532
+ countdownNumberEl.textContent = countdown.toString();
2533
+ // Once the countdown finishes, redirect to the provided URL
2534
+ if (countdown == 1) {
2535
+ // appErrorModal.style.display = "none";
2536
+ window.location.replace(this.portalUrl.toString());
2537
+ }
2538
+ }, 1000);
2539
+ }
2540
+ }
2541
+ }
2542
+ });
2543
+ }
2544
+ });
2545
+ // // Get all application data associated with organization ID
2546
+ // const appIdList = this.appId.replace(/'/g, '').split(',');
2547
+ // var appListIds:Array<string> = []
2548
+ // if(this.appId) {
2549
+ // // const appList:Array<string> = JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.APP_ID;
2550
+ // // Get app ID from marketplace (Compare product_id with app_id)
2551
+ // this.getAppList().then((response: Response) => response.json())
2552
+ // .then(response => {
2553
+ // // Save application data to a global array
2554
+ // if(this.appList.length <= 0 ) {
2555
+ // this.appList = response
2556
+ // }
2557
+ // // Save application IDs to a local array
2558
+ // appListIds.push(...this.appList.map(obj => obj['product_id']))
2559
+ // // Check if the user has permission to access the selected application
2560
+ // if(appIdList.filter(id => appListIds.includes(id)).length == 0) {
2561
+ // // Show modal
2562
+ // const appErrorModal = this.el.shadowRoot.querySelector('#appPermissionErrorModal');
2563
+ // appErrorModal.style.display = "block";
2564
+ // // If a redirect URL is provided, show the loading spinner
2565
+ // if (this.portalUrl) {
2566
+ // var countdownNumberEl = this.el.shadowRoot.getElementById('countdown-number');
2567
+ // var countdown = 6;
2568
+ // countdownNumberEl.textContent = countdown.toString();
2569
+ // setInterval(() => {
2570
+ // countdown = --countdown <= 0 ? 6 : countdown;
2571
+ // countdownNumberEl.textContent = countdown.toString();
2572
+ // // Once the countdown finishes, redirect to the provided URL
2573
+ // if(countdown == 1) {
2574
+ // // appErrorModal.style.display = "none";
2575
+ // window.location.replace(this.portalUrl.toString());
2576
+ // }
2577
+ // }, 1000);
2578
+ // }
2579
+ // }
2580
+ // })
2581
+ // }
2582
+ }
2583
+ async initKeycloak() {
2584
+ await this.keycloak.init({
2505
2585
  onLoad: this.authMethod,
2506
2586
  checkLoginIframe: false,
2507
2587
  silentCheckSsoRedirectUri: this.silentCheckSso ? this.silentCheckSsoRedirectUri : '',
@@ -2514,6 +2594,17 @@ const DashButtonComponent = class {
2514
2594
  }
2515
2595
  });
2516
2596
  }
2597
+ async getAppList() {
2598
+ // const token = await JSON.parse(localStorage.getItem('keycloak')).token;
2599
+ // const response = await fetch(this.marketplaceUrl + '/api/v1/product/nameAndShortName', {
2600
+ // headers: new Headers({
2601
+ // 'Authorization': 'Bearer ' + token,
2602
+ // }),
2603
+ // })
2604
+ const response = await fetch(this.marketplaceUrl + '/api/v1/product/nameAndShortName');
2605
+ const jsonObj = await response.json();
2606
+ return jsonObj;
2607
+ }
2517
2608
  login() {
2518
2609
  this.keycloak.login();
2519
2610
  }
@@ -2531,7 +2622,7 @@ const DashButtonComponent = class {
2531
2622
  appModal.style.display = "none";
2532
2623
  }
2533
2624
  render() {
2534
- return index.h("div", { key: '46065686f61e27894acf13494d479f8e14ae440a' }, index.h("div", { key: 'fb795b6cab0e9a57ee9ddfc6a6ab69796de02d94' }, (() => {
2625
+ return index.h("div", { key: '518e0da154542073e372b6befd2a8e7e174af702' }, index.h("div", { key: '97353368ee021f8a2343f12950287978ba4af8c9' }, (() => {
2535
2626
  if (this.isAuth && this.showPostLoginText) {
2536
2627
  return (index.h("a", { href: this.redirectUri, id: "login-btn", class: "button button-link" }, index.h("span", { class: "button-text button-text-full-width" }, "Go to Dashboard")));
2537
2628
  }
@@ -2541,7 +2632,11 @@ const DashButtonComponent = class {
2541
2632
  else {
2542
2633
  return (index.h("button", { onClick: this.login.bind(this), id: "login-btn", type: "button", class: "button" }, index.h("span", { class: "button-text" }, "Login")));
2543
2634
  }
2544
- })()), index.h("div", { key: 'f64fc2082e07f576df4cff7d71453c8f18a4347e', id: "appListModal", class: "modal" }, index.h("div", { key: '9753fff951bd9719bb39db00cf99861dc1caeb2e', class: "modal-content" }, index.h("span", { key: 'f1a1ba93614473a498cf7f43d1ed1d2814a77df3', onClick: this.closeModal.bind(this), class: "close" }, "\u00D7"), index.h("h3", { key: '14a85f33052086fb9597a507789d145bec9cd076' }, "Applications"), index.h("div", { key: 'd323ba9ca8504ac36668c78c6c23c53dd695a6ac', class: "modal-app" }, "App 1"), index.h("div", { key: 'c1391a3b447aec37d81a723821ea28922a2cbaa4', class: "modal-app" }, "App 2"))));
2635
+ })()), index.h("div", { key: 'f0171bcfecf92c61280a7e5af8bac5a89b29c997', id: "appListModal", class: "modal" }, index.h("div", { key: '29db22476317b8c76e09769eda047ada47a8ddee', class: "modal-content" }, index.h("span", { key: '1632ec033b67f1fc059027739022b64077e5f651', onClick: this.closeModal.bind(this), class: "close" }, "\u00D7"), index.h("h3", { key: '9d5e4048ac0ea51a4fef045c5546aec65822990e' }, "Applications"), index.h("div", { key: 'c983f0617428ec20581d6d69ad2df492a213f366', class: "modal-body" }, this.appList.length > 0 ? this.appList.map(app => {
2636
+ return (index.h("a", { class: "external-app-link", target: '_blank', href: "https://" + app.shortname + "-zdzw." + this.portalUrl.replace(/(^\w+:|^)\/\//, '') }, index.h("div", { class: "modal-app" }, index.h("div", null, app.name))));
2637
+ }) : index.h("div", null, index.h("h3", { class: "gray-text" }, "Not installed application found."), " ", index.h("p", { class: "gray-text" }, "Please contact administration."))))), index.h("div", { key: 'fb01669525955798b4aaf2b9e88d35efe78693da', id: "appPermissionErrorModal", class: "modal" }, index.h("div", { key: '6e06bc1824b0a1641795f69d30f6c68dad1930a6', class: "modal-content" }, index.h("img", { key: '5cb3d79f1abcc875188586e720b0ce5135fa80d1', src: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGD0lEQVR4nO2cbU8TWRTH/W5WEAmF4nNiieFFoeBjYhQUWzUWYkpbDfGFCR9CoolvQF9aWgG3kMCG8LACC1ikuCuUh7bH/M/MmW131S2ZqTDjPcmkdub2tvPj3HP/55yJR44oU6ZMmTJlyg7YOsL9pI7+shkogGFzDqMAhhVAOsiQozwwrACS8sCwfXd+tYTDCiApDwwf/FJUSzisAJKjNhFlPzYF0KQpgCZNATRpCqBJUwBNmgJo0hRAk6YAmjQF0KkAs4uLtPz8OU2HQpRqaaFkQwPFq6v5SHo8fA7XVgYGKLu0dGC/81ABLORylB4cpInLl+nt0aP7OiauXKH00BAV8vlfE2AmkaCxpiYDSKK6mqaammjx+nX6FAzS348e0VYkwgf+jXO4Nun18lj53PuLF2kjmfx1AOa3t2mmt9cAkDxxghauXaPN3l7KxmJlHRgLmKNutzHPTCTCczsa4G4mQ6nWVr7h4WPHaL6trQTc+r17NOf30/iZMzTmdtNwVRWPA2Scm/H56FMgQNlolMfDO/9ob+cxmDPl99PuxoYzAe5mMrzcxOvWAALgolFauXmTxurry45/gPvnjRsG+LW7d3lOWdKVhHggAPPb24bnvW9ooL96evjGP4dC9NvJkwaY0fPnaa6vjzLJJG19+ED5bJY/u5NOUyYep/lnz2jk3Ll/4p/Hw/B4ru5unls8Mb+z4xyAM3rMg5cIvHRXFyVqavg8oKy+elXWjooxqy9f0luXy5gTm4xAFE+cjcWcATCTSGgxr6rKWLaAF9fj1u+BAOW2tsqeL7+7S5OdnRq8mhpaf/CA5xSI8EiJiRsjI/YGWMjlDKmCDUOWrXje3NOnRIWCaXh45biqL+f59nYjHlqtE38qwPTgoLHMeLeNRo2YB8+zEp7ExK1olI+Rujo+t/b6tX0BTugZBnQebha7rcQ8K5Ytw9O9WWKi7M7QiZKx2BJgdnHRyDDE+0SqYMOwEt7k7dvaxqJLHHwXvpMzFpeLtpeX7QdwZWCAbwjpmYhkkSrlxqVy4WEc4q1IHBbbsRhNXrjA71devLAfwOlQiH88lhJuBhkGbxx9fZbDE4NO5LTO5+OxCB14P93dbT+AKZ9P84ZgkG8GqRjeQ9ZUAh4MYhvXxs+e5fHwRBbWra32A5j0ePjHf9H1mST+2YWFisCDba+u8vV3tbWGNuT3jY32AxjXS06QFLgZKUH9aPct7O3RVFfXf+BlHj6kZG2tBq+j47tpGs5LoYKrNpGI9v74cfsDHNazg+/dvFl4sNzmprHz2x5g8l9LWMTuzsePli7bYkMBgqVMfb39l3CqpeXbm0g8XhF439xEgkGjOmN7GTOjA4XU2Be8zs6y4MFmnzzRpJLfXypjenrsK6Qnvd4SSQGxCyFtNbxiIb1+/74mpL1e+wrp7NISp1ElqZwuZZB2WQkPZqRyevz7Eg5zCc22qVxxMUGWMRL94sTfKnjYfd+dPq15261bpcWEq1fJvuWsoSEt/3W7tRZlNMolJylxWQEPJTGRP6lTpwz5YpSz3ryxcUE1nzcaSeieFTeArIKH3Fq8GSX9koJqc7O9C6owNL0lO5CKsZTfzS7bqTt3+LPxornxKu2Cz6Oj5IymUkTLCOB54iWAKOIaMRE7JXbS/zOMwYYhMQ9/gOLOnPxBZh8/dlhb06+Vs9B6FIi4cYmJInGgEyGIkbHgc8idkWHgHHRecVsTMU/mwuuY3tYcv3TJWW1NGJrdJY113WtkdxaJU84BqSK7rRFXdc/Dd+w5rbFeDHG8rc2IiQj2UmwQsY1iKFIxlKSg46AjARfnkGGISOZHO6JRnkNiHjzPsY92iGFZoultLNu6OtZs+3m4CCIZnxGpIjGvUsv2UAEUQ9NblrSUoNDDQP4KT+TH2/QWJT/eFgjwNaRnnGHI4x3NzRXZbQ89QBg0GsQ2Wo+SnZR1uFycYbBI3kdv2XEAiw35KqQMGkDoYaCeaDzi29jIuziuYYyVua1jANrFFECTpgCaNAXQpCmAJk0BNGkKoElTACsNUB39ZTFQAMMW/78xypQpU6ZMmbIjP9e+AkAlsBlIjsPOAAAAAElFTkSuQmCC" }), index.h("h2", { key: '7698274b668f8681cbc232dcab0c6ae93b8b2be5', class: "green-text margin-b" }, "You don't have permission to access this application."), index.h("h3", { key: 'dbafa7836eb959c051af3acb6883955f66ea64d7', class: "green-text" }, "Please contact the administration."), (this.portalUrl && this.showUnauthorizedModal) ?
2638
+ index.h("div", null, index.h("h4", { class: "gray-text" }, "You will be automatically redirected to the portal."), index.h("div", { id: "countdown" }, index.h("div", { id: "countdown-number" }), index.h("svg", null, index.h("circle", { r: "18", cx: "20", cy: "20" }))))
2639
+ : index.h("div", null))));
2545
2640
  }
2546
2641
  get el() { return index.getElement(this); }
2547
2642
  };