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.
@@ -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.bindLoginFormSubmit().then(() => {
357
- resolve();
358
- }).catch((error) => {
359
- reject(error);
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 (form.querySelector("input[type=\"submit\"]") !== null) form.querySelector("input[type=\"submit\"]").disabled = true;
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 (form.querySelector("input[type=\"submit\"]") !== null) form.querySelector("input[type=\"submit\"]").disabled = false;
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(() => {
package/package.json CHANGED
@@ -65,7 +65,7 @@
65
65
  "uuid": "^11.1.1"
66
66
  },
67
67
  "name": "jwtbutler",
68
- "version": "2.0.6",
68
+ "version": "2.0.8",
69
69
  "description": "",
70
70
  "main": "_js/_build/script.js",
71
71
  "files": [