dash-button-web 0.0.6 → 0.0.7
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.
- package/dist/cjs/dash-button.cjs.entry.js +28 -43
- package/dist/cjs/dash-button.cjs.entry.js.map +1 -1
- package/dist/cjs/{index-991e75df.js → index-065225eb.js} +5 -1
- package/dist/{esm/index-8310c457.js.map → cjs/index-065225eb.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/web-compnont.cjs.js +2 -2
- package/dist/collection/components/my-component/dash-button.css +40 -0
- package/dist/collection/components/my-component/dash-button.js +45 -42
- package/dist/collection/components/my-component/dash-button.js.map +1 -1
- package/dist/components/dash-button.js +30 -43
- package/dist/components/dash-button.js.map +1 -1
- package/dist/esm/dash-button.entry.js +28 -43
- package/dist/esm/dash-button.entry.js.map +1 -1
- package/dist/esm/{index-8310c457.js → index-2b1034cf.js} +5 -1
- package/dist/esm/index-2b1034cf.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/web-compnont.js +3 -3
- package/dist/types/components/my-component/dash-button.d.ts +2 -0
- package/dist/types/components.d.ts +2 -0
- package/dist/web-compnont/p-bdb5725e.js +3 -0
- package/dist/web-compnont/p-bdb5725e.js.map +1 -0
- package/dist/web-compnont/{p-392f1e3f.entry.js → p-e4d4f568.entry.js} +3 -3
- package/dist/web-compnont/p-e4d4f568.entry.js.map +1 -0
- package/dist/web-compnont/web-compnont.esm.js +1 -1
- package/dist/web-compnont/web-compnont.esm.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/index-991e75df.js.map +0 -1
- package/dist/web-compnont/p-392f1e3f.entry.js.map +0 -1
- package/dist/web-compnont/p-4bd42d49.js +0 -3
- package/dist/web-compnont/p-4bd42d49.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-
|
|
5
|
+
const index = require('./index-065225eb.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%}.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}}";
|
|
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}}.lds-ring{color:#fff}.lds-ring{display:flex;justify-content:center;align-items:center;margin:auto;position:relative}.lds-ring div{box-sizing:border-box;display:block;position:absolute;width:30px;height:30px;margin:3px;border:3px solid currentColor;border-radius:50%;animation:lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;border-color:currentColor transparent transparent transparent}.lds-ring div:nth-child(1){animation-delay:-0.45s}.lds-ring div:nth-child(2){animation-delay:-0.3s}.lds-ring div:nth-child(3){animation-delay:-0.15s}@keyframes lds-ring{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}";
|
|
2481
2481
|
const DashButtonStyle0 = dashButtonCss;
|
|
2482
2482
|
|
|
2483
2483
|
const DashButtonComponent = class {
|
|
@@ -2494,6 +2494,7 @@ const DashButtonComponent = class {
|
|
|
2494
2494
|
this.portalUrl = "";
|
|
2495
2495
|
this.marketplaceUrl = "";
|
|
2496
2496
|
this.showUnauthorizedModal = false;
|
|
2497
|
+
this.postTextDelayDuration = undefined;
|
|
2497
2498
|
this.keycloak = new Keycloak({
|
|
2498
2499
|
url: this.keycloakUri,
|
|
2499
2500
|
realm: this.realm,
|
|
@@ -2503,9 +2504,24 @@ const DashButtonComponent = class {
|
|
|
2503
2504
|
this.givenName = "";
|
|
2504
2505
|
this.silentCheckSsoRedirectUri = window.location.origin + '/assets/verificar-sso.html';
|
|
2505
2506
|
this.appList = [];
|
|
2507
|
+
this.showPostLoginLoadingSpinner = false;
|
|
2506
2508
|
}
|
|
2507
2509
|
;
|
|
2508
2510
|
componentWillLoad() {
|
|
2511
|
+
//
|
|
2512
|
+
// User set post-text-delay-duration for displaying loading spinner
|
|
2513
|
+
//
|
|
2514
|
+
if (this.postTextDelayDuration > 0) {
|
|
2515
|
+
// Show loading spinner
|
|
2516
|
+
this.showPostLoginLoadingSpinner = true;
|
|
2517
|
+
// Removing a loading spinner after the delay period ending
|
|
2518
|
+
setTimeout(() => {
|
|
2519
|
+
this.showPostLoginLoadingSpinner = false;
|
|
2520
|
+
}, this.postTextDelayDuration);
|
|
2521
|
+
}
|
|
2522
|
+
//
|
|
2523
|
+
// Init Keycloak
|
|
2524
|
+
//
|
|
2509
2525
|
this.initKeycloak().then(() => {
|
|
2510
2526
|
// Check if the user is authenticated
|
|
2511
2527
|
if (this.isAuth) {
|
|
@@ -2549,43 +2565,6 @@ const DashButtonComponent = class {
|
|
|
2549
2565
|
});
|
|
2550
2566
|
}
|
|
2551
2567
|
});
|
|
2552
|
-
// // Get all application data associated with organization ID
|
|
2553
|
-
// const appIdList = this.appId.replace(/'/g, '').split(',');
|
|
2554
|
-
// var appListIds:Array<string> = []
|
|
2555
|
-
// if(this.appId) {
|
|
2556
|
-
// // const appList:Array<string> = JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.APP_ID;
|
|
2557
|
-
// // Get app ID from marketplace (Compare product_id with app_id)
|
|
2558
|
-
// this.getAppList().then((response: Response) => response.json())
|
|
2559
|
-
// .then(response => {
|
|
2560
|
-
// // Save application data to a global array
|
|
2561
|
-
// if(this.appList.length <= 0 ) {
|
|
2562
|
-
// this.appList = response
|
|
2563
|
-
// }
|
|
2564
|
-
// // Save application IDs to a local array
|
|
2565
|
-
// appListIds.push(...this.appList.map(obj => obj['product_id']))
|
|
2566
|
-
// // Check if the user has permission to access the selected application
|
|
2567
|
-
// if(appIdList.filter(id => appListIds.includes(id)).length == 0) {
|
|
2568
|
-
// // Show modal
|
|
2569
|
-
// const appErrorModal = this.el.shadowRoot.querySelector('#appPermissionErrorModal');
|
|
2570
|
-
// appErrorModal.style.display = "block";
|
|
2571
|
-
// // If a redirect URL is provided, show the loading spinner
|
|
2572
|
-
// if (this.portalUrl) {
|
|
2573
|
-
// var countdownNumberEl = this.el.shadowRoot.getElementById('countdown-number');
|
|
2574
|
-
// var countdown = 6;
|
|
2575
|
-
// countdownNumberEl.textContent = countdown.toString();
|
|
2576
|
-
// setInterval(() => {
|
|
2577
|
-
// countdown = --countdown <= 0 ? 6 : countdown;
|
|
2578
|
-
// countdownNumberEl.textContent = countdown.toString();
|
|
2579
|
-
// // Once the countdown finishes, redirect to the provided URL
|
|
2580
|
-
// if(countdown == 1) {
|
|
2581
|
-
// // appErrorModal.style.display = "none";
|
|
2582
|
-
// window.location.replace(this.portalUrl.toString());
|
|
2583
|
-
// }
|
|
2584
|
-
// }, 1000);
|
|
2585
|
-
// }
|
|
2586
|
-
// }
|
|
2587
|
-
// })
|
|
2588
|
-
// }
|
|
2589
2568
|
}
|
|
2590
2569
|
async initKeycloak() {
|
|
2591
2570
|
// Remove the initiation time permission localstorage object
|
|
@@ -2631,9 +2610,15 @@ const DashButtonComponent = class {
|
|
|
2631
2610
|
appModal.style.display = "none";
|
|
2632
2611
|
}
|
|
2633
2612
|
render() {
|
|
2634
|
-
return index.h("div", { key: '
|
|
2613
|
+
return index.h("div", { key: '2d24aa9842755844cff0091432697b28dbe3719a' }, index.h("div", { key: '99991837185cd9d0cb6785828ce18ec59cdb6659' }, (() => {
|
|
2635
2614
|
if (this.isAuth && this.showPostLoginText) {
|
|
2636
|
-
|
|
2615
|
+
// User set post-text-delay-duration for displaying loading spinner
|
|
2616
|
+
if (this.showPostLoginLoadingSpinner) {
|
|
2617
|
+
return (index.h("a", { id: "login-btn", class: "button button-link" }, index.h("div", { class: "lds-ring" }, index.h("div", null), index.h("div", null), index.h("div", null), index.h("div", null))));
|
|
2618
|
+
}
|
|
2619
|
+
else {
|
|
2620
|
+
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")));
|
|
2621
|
+
}
|
|
2637
2622
|
}
|
|
2638
2623
|
else if (this.isAuth) {
|
|
2639
2624
|
return (index.h("div", { id: "profile-btn", class: "dropdown" }, index.h("button", { type: "button", class: "button" }, index.h("span", { class: "button-profile" }, index.h("img", { src: "https://i.pravatar.cc/100?img=32", alt: "" })), index.h("span", { id: "given-name", class: "button-text" }, this.givenName), index.h("div", { class: "button-icon" }, index.h("span", { class: "gg-menu-grid-r" }))), index.h("div", { class: "dropdown-content" }, index.h("a", { onClick: this.showModal.bind(this), id: "applications-btn" }, "Applications"), index.h("a", { href: this.portalUrl, target: '_blank', id: "applications-btn" }, "Portal"), index.h("a", { href: this.marketplaceUrl, target: '_blank', id: "applications-btn" }, "Marketplace"), index.h("a", { onClick: this.logout.bind(this), id: "logout-btn" }, "Logout"))));
|
|
@@ -2641,9 +2626,9 @@ const DashButtonComponent = class {
|
|
|
2641
2626
|
else {
|
|
2642
2627
|
return (index.h("button", { onClick: this.login.bind(this), id: "login-btn", type: "button", class: "button" }, index.h("span", { class: "button-text" }, "Login")));
|
|
2643
2628
|
}
|
|
2644
|
-
})()), index.h("div", { key: '
|
|
2629
|
+
})()), index.h("div", { key: '38c4054577687e6af7222d5633b4191c8d63efab', id: "appListModal", class: "modal" }, index.h("div", { key: 'aabb2b68614c0897b88a907979419f584388f60a', class: "modal-content" }, index.h("span", { key: '42696988b0954589250e4a6f212bf00954d4e2d0', onClick: this.closeModal.bind(this), class: "close" }, "\u00D7"), index.h("h3", { key: '08eb82158bfe231595c79e131b161b3066553d33' }, "Applications"), index.h("div", { key: 'e838130cfa6cdf222cc7455fb1d4b01ab9105492', class: "modal-body" }, this.appList.length > 0 ? this.appList.map(app => {
|
|
2645
2630
|
return (index.h("a", { class: "external-app-link", target: '_blank', href: "https://" + app.shortname + "-zdzw" + this.portalUrl.replace(/(^\w+:|^)\/\//, '').replace('.portal-frontend-zdzw', '') }, index.h("div", { class: "modal-app" }, index.h("div", null, app.name))));
|
|
2646
|
-
}) : 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: '
|
|
2631
|
+
}) : 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: '6b350ae02d908c7272a87ca967080b5d64ec0590', id: "appPermissionErrorModal", class: "modal" }, index.h("div", { key: 'df481e3196372ab1477503bb53c9a149874cc020', class: "modal-content" }, index.h("img", { key: 'eb31969132393cef988ab6904634617cbd8a7627', src: "data:image/png;base64,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" }), index.h("h2", { key: 'dbc50750de599994e5623a6f8596aae96280ad45', class: "green-text margin-b" }, "You don't have permission to access this application."), index.h("h3", { key: '950f04d0e34e57b99a1cddb5cf2156755572020a', class: "green-text" }, "Please contact the administration."), (this.portalUrl && this.showUnauthorizedModal) ?
|
|
2647
2632
|
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" }))))
|
|
2648
2633
|
: index.h("div", null))));
|
|
2649
2634
|
}
|