jwtbutler 2.0.6 → 2.0.8
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/_js/_build/script.js +35 -9
- package/package.json +1 -1
package/_js/_build/script.js
CHANGED
|
@@ -352,12 +352,17 @@ var jwtbutler = class {
|
|
|
352
352
|
renderLoginFormWithPromise() {
|
|
353
353
|
return new Promise((resolve, reject) => {
|
|
354
354
|
this.buildUpLoginFormHtml();
|
|
355
|
+
this.bindLoginFormSubmit().then(() => {
|
|
356
|
+
resolve();
|
|
357
|
+
}).catch((error) => {
|
|
358
|
+
reject(error);
|
|
359
|
+
});
|
|
355
360
|
this.captchaRender().then(() => {
|
|
356
|
-
this.
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
}
|
|
361
|
+
let submit = document.querySelector("." + this.config.login_form_class + " form")?.querySelector("button[type=\"submit\"], input[type=\"submit\"]");
|
|
362
|
+
if (submit !== null && submit !== void 0) {
|
|
363
|
+
submit.disabled = false;
|
|
364
|
+
submit.removeAttribute("aria-busy");
|
|
365
|
+
}
|
|
361
366
|
this.triggerLoginFormRenderedEvent();
|
|
362
367
|
}).catch((error) => {
|
|
363
368
|
reject(error);
|
|
@@ -392,7 +397,11 @@ var jwtbutler = class {
|
|
|
392
397
|
</div>`;
|
|
393
398
|
let dom = new DOMParser().parseFromString(this.config.login_form, "text/html").body.childNodes[0];
|
|
394
399
|
this.config.login_form_class = dom.getAttribute("class").split(" ")[0];
|
|
395
|
-
let submit = dom.querySelector("input[type=\"submit\"]");
|
|
400
|
+
let submit = dom.querySelector("button[type=\"submit\"], input[type=\"submit\"]");
|
|
401
|
+
if (this.captchaEnabled() && submit !== null) {
|
|
402
|
+
submit.disabled = true;
|
|
403
|
+
submit.setAttribute("aria-busy", "true");
|
|
404
|
+
}
|
|
396
405
|
let submitItem = submit !== null ? submit.closest("." + this.config.login_form_class + "__item") || submit.closest("li") || submit.parentElement : null;
|
|
397
406
|
let itemTag = submitItem !== null && submitItem.tagName.toLowerCase() === "li" ? "li" : "div";
|
|
398
407
|
if (this.captchaEnabled() && dom.querySelector("." + this.config.login_form_class + "__captcha") === null) {
|
|
@@ -510,8 +519,20 @@ var jwtbutler = class {
|
|
|
510
519
|
theme: this.config.captcha.theme || "light"
|
|
511
520
|
};
|
|
512
521
|
if (this.config.language !== "") options[this.captchaVendor().langKey] = this.config.language;
|
|
522
|
+
let widgetLoaded = new Promise((resolveWidget) => {
|
|
523
|
+
let observer = new MutationObserver(() => {
|
|
524
|
+
let iframe = captcha.querySelector("iframe");
|
|
525
|
+
if (iframe === null) return;
|
|
526
|
+
observer.disconnect();
|
|
527
|
+
iframe.addEventListener("load", () => resolveWidget(), { once: true });
|
|
528
|
+
});
|
|
529
|
+
observer.observe(captcha, {
|
|
530
|
+
childList: true,
|
|
531
|
+
subtree: true
|
|
532
|
+
});
|
|
533
|
+
});
|
|
513
534
|
captcha.setAttribute("data-widget-id", this.captchaApi().render(captcha, options));
|
|
514
|
-
resolve();
|
|
535
|
+
widgetLoaded.then(() => resolve());
|
|
515
536
|
}).catch((error) => {
|
|
516
537
|
reject(error);
|
|
517
538
|
});
|
|
@@ -574,8 +595,13 @@ var jwtbutler = class {
|
|
|
574
595
|
return new Promise((resolve, reject) => {
|
|
575
596
|
let dom = document.querySelector("." + this.config.login_form_class), form = dom.querySelector("form");
|
|
576
597
|
form.addEventListener("submit", (e) => {
|
|
598
|
+
let submit = form.querySelector("button[type=\"submit\"], input[type=\"submit\"]");
|
|
599
|
+
if (submit?.getAttribute("aria-busy") === "true") {
|
|
600
|
+
e.preventDefault();
|
|
601
|
+
return;
|
|
602
|
+
}
|
|
577
603
|
this.addLoadingState("logging-in");
|
|
578
|
-
if (
|
|
604
|
+
if (submit !== null) submit.disabled = true;
|
|
579
605
|
helpers.remove(dom.querySelector("." + this.config.login_form_class + "__error"));
|
|
580
606
|
let body = {
|
|
581
607
|
[this.config.auth_login]: form.querySelector("input[name=\"" + this.config.auth_login + "\"]").value,
|
|
@@ -590,7 +616,7 @@ var jwtbutler = class {
|
|
|
590
616
|
cache: "no-cache"
|
|
591
617
|
});
|
|
592
618
|
}).then((res) => res.json()).catch((error) => error).then((response) => {
|
|
593
|
-
if (
|
|
619
|
+
if (submit !== null) submit.disabled = false;
|
|
594
620
|
if (response !== void 0 && response !== null && "success" in response && response.success === true) {
|
|
595
621
|
helpers.remove(document.querySelector("." + this.config.login_form_class));
|
|
596
622
|
this.setCookies(response.data.access_token).then(() => {
|