@descope/web-components-ui 1.0.339 → 1.0.341

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/index.esm.js CHANGED
@@ -1080,6 +1080,16 @@ const proxyInputMixin =
1080
1080
  }
1081
1081
  };
1082
1082
 
1083
+ // We want to ensure that `input` events properly cross ShadowDOM boundries
1084
+ // e.g. When we autofill a component's input with 1Password, for instance,
1085
+ // the event is fired without `composed: true` and doesn't our component's
1086
+ // ShadowDOM.
1087
+ this.baseElement.addEventListener('input', (e) => {
1088
+ if (!e.composed) {
1089
+ this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));
1090
+ }
1091
+ });
1092
+
1083
1093
  triggerValidationEvents.forEach((e) => {
1084
1094
  this.baseElement?.addEventListener(e, () => {
1085
1095
  this.inputElement?.setCustomValidity('');
@@ -3443,18 +3453,26 @@ const componentName$D = getComponentName('password');
3443
3453
 
3444
3454
  const customMixin$7 = (superclass) =>
3445
3455
  class PasswordFieldMixinClass extends superclass {
3446
- hidePasswordVisibility(input) {
3447
- // handle input element's type
3448
- input.setAttribute('type', 'password');
3449
- // handle vaadin's `password-visible` attribute
3450
- this.setAttribute('password-visible', 'false');
3451
- }
3452
-
3453
- showPasswordVisibility(input) {
3454
- // handle input element's type
3455
- input.setAttribute('type', 'text');
3456
- // handle vaadin's `password-visible` attribute
3457
- this.setAttribute('password-visible', 'true');
3456
+ init() {
3457
+ super.init?.();
3458
+
3459
+ this.handleCaretOnVisibilityChange();
3460
+ }
3461
+
3462
+ get caretPosition() {
3463
+ return this.value?.length || 0;
3464
+ }
3465
+
3466
+ handleCaretOnVisibilityChange() {
3467
+ const origTogglePasswordVisibility = this.baseElement._togglePasswordVisibility.bind(
3468
+ this.baseElement
3469
+ );
3470
+ this.baseElement._togglePasswordVisibility = () => {
3471
+ setTimeout(() => {
3472
+ origTogglePasswordVisibility();
3473
+ this.inputElement.setSelectionRange(this.caretPosition, this.caretPosition);
3474
+ });
3475
+ };
3458
3476
  }
3459
3477
 
3460
3478
  getAutocompleteType() {