@descope/web-components-ui 1.0.159 → 1.0.160

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.esm.js CHANGED
@@ -919,12 +919,14 @@ const proxyInputMixin = (superclass) =>
919
919
  }
920
920
 
921
921
  get inputElement() {
922
+ if (this.#inputElement) return this.#inputElement
923
+
922
924
  this.warnIfInputElementIsMissing();
923
925
 
924
926
  const inputSlot = this.baseElement.shadowRoot?.querySelector('slot[name="input"]');
925
927
  const textAreaSlot = this.baseElement.shadowRoot?.querySelector('slot[name="textarea"]');
926
928
 
927
- this.#inputElement ??= getNestedInput(inputSlot) || getNestedInput(textAreaSlot);
929
+ this.#inputElement = getNestedInput(inputSlot) || getNestedInput(textAreaSlot);
928
930
 
929
931
  return this.#inputElement;
930
932
  }
@@ -951,49 +953,54 @@ const proxyInputMixin = (superclass) =>
951
953
  init() {
952
954
  super.init?.();
953
955
 
954
- this.inputElement.addEventListener('input', (e) => {
955
- if (!this.inputElement.checkValidity()) {
956
- this.inputElement.setCustomValidity('');
957
- // after updating the input validity we want to trigger set validity on the wrapping element
958
- // so we will get the updated validity
959
- this.setCustomValidity('');
960
-
961
- // Vaadin is getting the input event before us,
962
- // so in order to make sure they use the updated validity
963
- // we calling their fn after updating the input validity
964
- this.baseElement.__onInput(e);
956
+ // on some cases the base element is not ready so the inputElement is empty
957
+ // we are deferring this section to make sure the base element is ready
958
+ setTimeout(() => {
959
+ this.inputElement.addEventListener('input', (e) => {
960
+ if (!this.inputElement.checkValidity()) {
961
+ this.inputElement.setCustomValidity('');
962
+ // after updating the input validity we want to trigger set validity on the wrapping element
963
+ // so we will get the updated validity
964
+ this.setCustomValidity('');
965
+
966
+ // Vaadin is getting the input event before us,
967
+ // so in order to make sure they use the updated validity
968
+ // we calling their fn after updating the input validity
969
+ this.baseElement.__onInput(e);
970
+
971
+ this.#handleErrorMessage();
972
+ }
973
+ });
965
974
 
966
- this.#handleErrorMessage();
967
- }
968
- });
975
+ this.baseElement.addEventListener('change', () => {
976
+ this.#dispatchChange();
977
+ });
969
978
 
970
- this.baseElement.addEventListener('change', () => {
971
- this.#dispatchChange();
972
- });
979
+ this.#inputElement.addEventListener('blur', () => {
980
+ if (!this.checkValidity()) {
981
+ this.setAttribute('invalid', 'true');
982
+ this.#handleErrorMessage();
983
+ }
984
+ });
973
985
 
974
- this.#inputElement.addEventListener('blur', () => {
975
- if (!this.checkValidity()) {
976
- this.setAttribute('invalid', 'true');
986
+ this.addEventListener('invalid', () => {
987
+ if (!this.checkValidity()) {
988
+ this.setAttribute('invalid', 'true');
989
+ }
977
990
  this.#handleErrorMessage();
978
- }
979
- });
980
-
981
- this.addEventListener('invalid', () => {
982
- if (!this.checkValidity()) {
983
- this.setAttribute('invalid', 'true');
984
- }
985
- this.#handleErrorMessage();
986
- });
991
+ });
987
992
 
988
- this.handleInternalInputErrorMessage();
993
+ this.handleInternalInputErrorMessage();
989
994
 
990
- // sync properties
991
- propertyObserver(this, this.inputElement, 'value');
992
- propertyObserver(this, this.inputElement, 'selectionStart');
993
- this.setSelectionRange = this.inputElement.setSelectionRange?.bind(this.inputElement);
995
+ // sync properties
996
+ propertyObserver(this, this.inputElement, 'value');
997
+ propertyObserver(this, this.inputElement, 'selectionStart');
998
+ this.setSelectionRange = this.inputElement.setSelectionRange?.bind(this.inputElement);
994
999
 
995
- forwardAttrs(this, this.inputElement, { includeAttrs: ['inputmode'] });
1000
+ forwardAttrs(this, this.inputElement, { includeAttrs: ['inputmode'] });
1001
+ });
996
1002
  }
1003
+
997
1004
  };
998
1005
 
999
1006
  const composedProxyInputMixin = compose(
@@ -4582,7 +4589,7 @@ class PhoneFieldInternal extends BaseInputClass$2 {
4582
4589
  const hasPhone = this.phoneNumberInput.value;
4583
4590
  const emptyValue = !hasCode || !hasPhone;
4584
4591
  const hasMinPhoneLength =
4585
- this.phoneNumberInput.value.length && this.phoneNumberInput.value.length < this.minLength;
4592
+ this.phoneNumberInput.value?.length && this.phoneNumberInput.value.length < this.minLength;
4586
4593
 
4587
4594
  if (this.isRequired && emptyValue) {
4588
4595
  return { valueMissing: true };