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
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, h, g as getElement } from './index-2b6c17bc.js';
1
+ import { r as registerInstance, h, g as getElement } from './index-8310c457.js';
2
2
 
3
3
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
4
4
 
@@ -2473,7 +2473,7 @@ function Keycloak (config) {
2473
2473
  }
2474
2474
  }
2475
2475
 
2476
- 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}";
2476
+ 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}}";
2477
2477
  const DashButtonStyle0 = dashButtonCss;
2478
2478
 
2479
2479
  const DashButtonComponent = class {
@@ -2486,6 +2486,10 @@ const DashButtonComponent = class {
2486
2486
  this.keycloakUri = "http://localhost:8080";
2487
2487
  this.realm = "";
2488
2488
  this.clientId = "";
2489
+ this.appId = "";
2490
+ this.portalUrl = "";
2491
+ this.marketplaceUrl = "";
2492
+ this.showUnauthorizedModal = false;
2489
2493
  this.keycloak = new Keycloak({
2490
2494
  url: this.keycloakUri,
2491
2495
  realm: this.realm,
@@ -2494,10 +2498,86 @@ const DashButtonComponent = class {
2494
2498
  this.isAuth = false;
2495
2499
  this.givenName = "";
2496
2500
  this.silentCheckSsoRedirectUri = window.location.origin + '/assets/verificar-sso.html';
2501
+ this.appList = [];
2497
2502
  }
2498
2503
  ;
2499
- connectedCallback() {
2500
- this.keycloak.init({
2504
+ componentWillLoad() {
2505
+ this.initKeycloak().then(() => {
2506
+ // Check if the user is authenticated
2507
+ if (this.isAuth) {
2508
+ this.getAppList().then(res => {
2509
+ this.appList = res;
2510
+ // If the user has set an app ID, check if they have permission to access
2511
+ if (this.appId) {
2512
+ // Retrieve the list of buttons that are configured to set the app ID
2513
+ const appIdList = this.appId.replace(/'/g, '').split(',');
2514
+ // Remote appID list parsed from object
2515
+ const tempAppList = this.appList.map(obj => obj['shortname']);
2516
+ // Check if the user has permission to access the selected application
2517
+ if (appIdList.filter(id => tempAppList.includes(id)).length == 0) {
2518
+ // Show modal
2519
+ const appErrorModal = this.el.shadowRoot.querySelector('#appPermissionErrorModal');
2520
+ appErrorModal.style.display = "block";
2521
+ // If a redirect URL is provided, show the loading spinner
2522
+ if (this.portalUrl && this.showUnauthorizedModal) {
2523
+ var countdownNumberEl = this.el.shadowRoot.getElementById('countdown-number');
2524
+ var countdown = 6;
2525
+ countdownNumberEl.textContent = countdown.toString();
2526
+ setInterval(() => {
2527
+ countdown = --countdown <= 0 ? 6 : countdown;
2528
+ countdownNumberEl.textContent = countdown.toString();
2529
+ // Once the countdown finishes, redirect to the provided URL
2530
+ if (countdown == 1) {
2531
+ // appErrorModal.style.display = "none";
2532
+ window.location.replace(this.portalUrl.toString());
2533
+ }
2534
+ }, 1000);
2535
+ }
2536
+ }
2537
+ }
2538
+ });
2539
+ }
2540
+ });
2541
+ // // Get all application data associated with organization ID
2542
+ // const appIdList = this.appId.replace(/'/g, '').split(',');
2543
+ // var appListIds:Array<string> = []
2544
+ // if(this.appId) {
2545
+ // // const appList:Array<string> = JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.APP_ID;
2546
+ // // Get app ID from marketplace (Compare product_id with app_id)
2547
+ // this.getAppList().then((response: Response) => response.json())
2548
+ // .then(response => {
2549
+ // // Save application data to a global array
2550
+ // if(this.appList.length <= 0 ) {
2551
+ // this.appList = response
2552
+ // }
2553
+ // // Save application IDs to a local array
2554
+ // appListIds.push(...this.appList.map(obj => obj['product_id']))
2555
+ // // Check if the user has permission to access the selected application
2556
+ // if(appIdList.filter(id => appListIds.includes(id)).length == 0) {
2557
+ // // Show modal
2558
+ // const appErrorModal = this.el.shadowRoot.querySelector('#appPermissionErrorModal');
2559
+ // appErrorModal.style.display = "block";
2560
+ // // If a redirect URL is provided, show the loading spinner
2561
+ // if (this.portalUrl) {
2562
+ // var countdownNumberEl = this.el.shadowRoot.getElementById('countdown-number');
2563
+ // var countdown = 6;
2564
+ // countdownNumberEl.textContent = countdown.toString();
2565
+ // setInterval(() => {
2566
+ // countdown = --countdown <= 0 ? 6 : countdown;
2567
+ // countdownNumberEl.textContent = countdown.toString();
2568
+ // // Once the countdown finishes, redirect to the provided URL
2569
+ // if(countdown == 1) {
2570
+ // // appErrorModal.style.display = "none";
2571
+ // window.location.replace(this.portalUrl.toString());
2572
+ // }
2573
+ // }, 1000);
2574
+ // }
2575
+ // }
2576
+ // })
2577
+ // }
2578
+ }
2579
+ async initKeycloak() {
2580
+ await this.keycloak.init({
2501
2581
  onLoad: this.authMethod,
2502
2582
  checkLoginIframe: false,
2503
2583
  silentCheckSsoRedirectUri: this.silentCheckSso ? this.silentCheckSsoRedirectUri : '',
@@ -2510,6 +2590,17 @@ const DashButtonComponent = class {
2510
2590
  }
2511
2591
  });
2512
2592
  }
2593
+ async getAppList() {
2594
+ // const token = await JSON.parse(localStorage.getItem('keycloak')).token;
2595
+ // const response = await fetch(this.marketplaceUrl + '/api/v1/product/nameAndShortName', {
2596
+ // headers: new Headers({
2597
+ // 'Authorization': 'Bearer ' + token,
2598
+ // }),
2599
+ // })
2600
+ const response = await fetch(this.marketplaceUrl + '/api/v1/product/nameAndShortName');
2601
+ const jsonObj = await response.json();
2602
+ return jsonObj;
2603
+ }
2513
2604
  login() {
2514
2605
  this.keycloak.login();
2515
2606
  }
@@ -2527,7 +2618,7 @@ const DashButtonComponent = class {
2527
2618
  appModal.style.display = "none";
2528
2619
  }
2529
2620
  render() {
2530
- return h("div", { key: '46065686f61e27894acf13494d479f8e14ae440a' }, h("div", { key: 'fb795b6cab0e9a57ee9ddfc6a6ab69796de02d94' }, (() => {
2621
+ return h("div", { key: '518e0da154542073e372b6befd2a8e7e174af702' }, h("div", { key: '97353368ee021f8a2343f12950287978ba4af8c9' }, (() => {
2531
2622
  if (this.isAuth && this.showPostLoginText) {
2532
2623
  return (h("a", { href: this.redirectUri, id: "login-btn", class: "button button-link" }, h("span", { class: "button-text button-text-full-width" }, "Go to Dashboard")));
2533
2624
  }
@@ -2537,7 +2628,11 @@ const DashButtonComponent = class {
2537
2628
  else {
2538
2629
  return (h("button", { onClick: this.login.bind(this), id: "login-btn", type: "button", class: "button" }, h("span", { class: "button-text" }, "Login")));
2539
2630
  }
2540
- })()), h("div", { key: 'f64fc2082e07f576df4cff7d71453c8f18a4347e', id: "appListModal", class: "modal" }, h("div", { key: '9753fff951bd9719bb39db00cf99861dc1caeb2e', class: "modal-content" }, h("span", { key: 'f1a1ba93614473a498cf7f43d1ed1d2814a77df3', onClick: this.closeModal.bind(this), class: "close" }, "\u00D7"), h("h3", { key: '14a85f33052086fb9597a507789d145bec9cd076' }, "Applications"), h("div", { key: 'd323ba9ca8504ac36668c78c6c23c53dd695a6ac', class: "modal-app" }, "App 1"), h("div", { key: 'c1391a3b447aec37d81a723821ea28922a2cbaa4', class: "modal-app" }, "App 2"))));
2631
+ })()), h("div", { key: 'f0171bcfecf92c61280a7e5af8bac5a89b29c997', id: "appListModal", class: "modal" }, h("div", { key: '29db22476317b8c76e09769eda047ada47a8ddee', class: "modal-content" }, h("span", { key: '1632ec033b67f1fc059027739022b64077e5f651', onClick: this.closeModal.bind(this), class: "close" }, "\u00D7"), h("h3", { key: '9d5e4048ac0ea51a4fef045c5546aec65822990e' }, "Applications"), h("div", { key: 'c983f0617428ec20581d6d69ad2df492a213f366', class: "modal-body" }, this.appList.length > 0 ? this.appList.map(app => {
2632
+ return (h("a", { class: "external-app-link", target: '_blank', href: "https://" + app.shortname + "-zdzw." + this.portalUrl.replace(/(^\w+:|^)\/\//, '') }, h("div", { class: "modal-app" }, h("div", null, app.name))));
2633
+ }) : h("div", null, h("h3", { class: "gray-text" }, "Not installed application found."), " ", h("p", { class: "gray-text" }, "Please contact administration."))))), h("div", { key: 'fb01669525955798b4aaf2b9e88d35efe78693da', id: "appPermissionErrorModal", class: "modal" }, h("div", { key: '6e06bc1824b0a1641795f69d30f6c68dad1930a6', class: "modal-content" }, h("img", { key: '5cb3d79f1abcc875188586e720b0ce5135fa80d1', src: "data:image/png;base64,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" }), h("h2", { key: '7698274b668f8681cbc232dcab0c6ae93b8b2be5', class: "green-text margin-b" }, "You don't have permission to access this application."), h("h3", { key: 'dbafa7836eb959c051af3acb6883955f66ea64d7', class: "green-text" }, "Please contact the administration."), (this.portalUrl && this.showUnauthorizedModal) ?
2634
+ 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" }))))
2635
+ : h("div", null))));
2541
2636
  }
2542
2637
  get el() { return getElement(this); }
2543
2638
  };