@descope/web-components-ui 3.13.2 → 3.14.0

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.
Files changed (47) hide show
  1. package/dist/cjs/index.cjs.js +1371 -811
  2. package/dist/cjs/index.cjs.js.map +1 -1
  3. package/dist/index.esm.js +1617 -1033
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/umd/8350.js +1 -1
  6. package/dist/umd/8350.js.map +1 -1
  7. package/dist/umd/DescopeDev.js +1 -1
  8. package/dist/umd/DescopeDev.js.map +1 -1
  9. package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js +1 -1
  10. package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js.map +1 -1
  11. package/dist/umd/descope-button.js +1 -1
  12. package/dist/umd/descope-button.js.map +1 -1
  13. package/dist/umd/descope-month-day-field.js +1 -1
  14. package/dist/umd/descope-month-day-field.js.map +1 -1
  15. package/dist/umd/descope-multi-line-mappings.js +1 -1
  16. package/dist/umd/descope-multi-line-mappings.js.map +1 -1
  17. package/dist/umd/descope-multi-sso.js +339 -0
  18. package/dist/umd/descope-multi-sso.js.LICENSE.txt +5 -0
  19. package/dist/umd/descope-multi-sso.js.map +1 -0
  20. package/dist/umd/descope-outbound-app-button.js +1 -1
  21. package/dist/umd/descope-outbound-app-button.js.map +1 -1
  22. package/dist/umd/descope-outbound-apps.js +1 -1
  23. package/dist/umd/descope-outbound-apps.js.map +1 -1
  24. package/dist/umd/descope-timer-button.js +1 -1
  25. package/dist/umd/descope-timer-button.js.map +1 -1
  26. package/dist/umd/descope-upload-file-index-js.js +2 -2
  27. package/dist/umd/descope-upload-file-index-js.js.map +1 -1
  28. package/dist/umd/descope-user-attribute-index-js.js +4 -4
  29. package/dist/umd/descope-user-attribute-index-js.js.map +1 -1
  30. package/dist/umd/descope-user-auth-method-index-js.js +1 -1
  31. package/dist/umd/descope-user-auth-method-index-js.js.map +1 -1
  32. package/dist/umd/descope-user-passkeys.js +1 -1
  33. package/dist/umd/descope-user-passkeys.js.map +1 -1
  34. package/dist/umd/index.js +1 -1
  35. package/dist/umd/index.js.map +1 -1
  36. package/dist/umd/mapping-fields-descope-mappings-field-index-js.js +1 -1
  37. package/dist/umd/mapping-fields-descope-mappings-field-index-js.js.map +1 -1
  38. package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js +1 -1
  39. package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js.map +1 -1
  40. package/dist/umd/phone-fields-descope-phone-field-descope-phone-field-internal-index-js.js +1 -1
  41. package/dist/umd/phone-fields-descope-phone-field-descope-phone-field-internal-index-js.js.map +1 -1
  42. package/dist/umd/phone-fields-descope-phone-field-index-js.js +1 -1
  43. package/dist/umd/phone-fields-descope-phone-field-index-js.js.map +1 -1
  44. package/package.json +40 -39
  45. package/src/components/phone-fields/descope-phone-field/PhoneFieldClass.js +6 -0
  46. package/src/components/phone-fields/descope-phone-field/descope-phone-field-internal/PhoneFieldInternal.js +34 -11
  47. package/src/theme/components/index.js +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@descope/web-components-ui",
3
- "version": "3.13.2",
3
+ "version": "3.14.0",
4
4
  "description": "",
5
5
  "main": "dist/cjs/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -52,10 +52,10 @@
52
52
  "webpack-cli": "^7.0.0",
53
53
  "webpack-dev-server": "^5.0.0",
54
54
  "webpack-subresource-integrity": "5.2.0-rc.1",
55
- "rollup-replace-plugin": "3.13.2",
56
- "test-drivers": "3.13.2",
57
- "webpack-extract-font-loader": "3.13.2",
58
- "webpack-replace-plugin": "3.13.2"
55
+ "test-drivers": "3.14.0",
56
+ "webpack-extract-font-loader": "3.14.0",
57
+ "webpack-replace-plugin": "3.14.0",
58
+ "rollup-replace-plugin": "3.14.0"
59
59
  },
60
60
  "dependencies": {
61
61
  "@vaadin/checkbox": "24.3.4",
@@ -79,40 +79,41 @@
79
79
  "libphonenumber-js": "^1.11.12",
80
80
  "lodash.debounce": "4.0.8",
81
81
  "lodash.merge": "4.6.2",
82
- "@descope-ui/common": "3.13.2",
83
- "@descope-ui/descope-address-field": "3.13.2",
84
- "@descope-ui/descope-apps-list": "3.13.2",
85
- "@descope-ui/descope-country-subdivision-city-field": "3.13.2",
86
- "@descope-ui/descope-autocomplete-field": "3.13.2",
87
- "@descope-ui/descope-avatar": "3.13.2",
88
- "@descope-ui/descope-badge": "3.13.2",
89
- "@descope-ui/descope-button": "3.13.2",
90
- "@descope-ui/descope-collapsible-container": "3.13.2",
91
- "@descope-ui/descope-combo-box": "3.13.2",
92
- "@descope-ui/descope-enriched-text": "3.13.2",
93
- "@descope-ui/descope-icon": "3.13.2",
94
- "@descope-ui/descope-image": "3.13.2",
95
- "@descope-ui/descope-link": "3.13.2",
96
- "@descope-ui/descope-list": "3.13.2",
97
- "@descope-ui/descope-list-item": "3.13.2",
98
- "@descope-ui/descope-month-day-field": "3.13.2",
99
- "@descope-ui/descope-month-day-field-picker": "3.13.2",
100
- "@descope-ui/descope-multi-line-mappings": "3.13.2",
101
- "@descope-ui/descope-multi-select-combo-box": "3.13.2",
102
- "@descope-ui/descope-outbound-app-button": "3.13.2",
103
- "@descope-ui/descope-outbound-apps": "3.13.2",
104
- "@descope-ui/descope-password-strength": "3.13.2",
105
- "@descope-ui/descope-recovery-codes": "3.13.2",
106
- "@descope-ui/descope-text": "3.13.2",
107
- "@descope-ui/descope-ponyhot": "3.13.2",
108
- "@descope-ui/descope-timer-button": "3.13.2",
109
- "@descope-ui/descope-tooltip": "3.13.2",
110
- "@descope-ui/descope-trusted-devices": "3.13.2",
111
- "@descope-ui/descope-attachment": "3.13.2",
112
- "@descope-ui/descope-timer": "3.13.2",
113
- "@descope-ui/descope-user-passkeys": "3.13.2",
114
- "@descope-ui/descope-anchored": "3.13.2",
115
- "@descope-ui/descope-text-field": "3.13.2"
82
+ "@descope-ui/common": "3.14.0",
83
+ "@descope-ui/descope-address-field": "3.14.0",
84
+ "@descope-ui/descope-country-subdivision-city-field": "3.14.0",
85
+ "@descope-ui/descope-apps-list": "3.14.0",
86
+ "@descope-ui/descope-autocomplete-field": "3.14.0",
87
+ "@descope-ui/descope-badge": "3.14.0",
88
+ "@descope-ui/descope-avatar": "3.14.0",
89
+ "@descope-ui/descope-button": "3.14.0",
90
+ "@descope-ui/descope-collapsible-container": "3.14.0",
91
+ "@descope-ui/descope-combo-box": "3.14.0",
92
+ "@descope-ui/descope-image": "3.14.0",
93
+ "@descope-ui/descope-link": "3.14.0",
94
+ "@descope-ui/descope-list": "3.14.0",
95
+ "@descope-ui/descope-list-item": "3.14.0",
96
+ "@descope-ui/descope-month-day-field-picker": "3.14.0",
97
+ "@descope-ui/descope-month-day-field": "3.14.0",
98
+ "@descope-ui/descope-multi-line-mappings": "3.14.0",
99
+ "@descope-ui/descope-multi-select-combo-box": "3.14.0",
100
+ "@descope-ui/descope-outbound-app-button": "3.14.0",
101
+ "@descope-ui/descope-outbound-apps": "3.14.0",
102
+ "@descope-ui/descope-password-strength": "3.14.0",
103
+ "@descope-ui/descope-ponyhot": "3.14.0",
104
+ "@descope-ui/descope-recovery-codes": "3.14.0",
105
+ "@descope-ui/descope-text": "3.14.0",
106
+ "@descope-ui/descope-text-field": "3.14.0",
107
+ "@descope-ui/descope-timer-button": "3.14.0",
108
+ "@descope-ui/descope-timer": "3.14.0",
109
+ "@descope-ui/descope-tooltip": "3.14.0",
110
+ "@descope-ui/descope-multi-sso": "3.14.0",
111
+ "@descope-ui/descope-trusted-devices": "3.14.0",
112
+ "@descope-ui/descope-attachment": "3.14.0",
113
+ "@descope-ui/descope-user-passkeys": "3.14.0",
114
+ "@descope-ui/descope-enriched-text": "3.14.0",
115
+ "@descope-ui/descope-anchored": "3.14.0",
116
+ "@descope-ui/descope-icon": "3.14.0"
116
117
  },
117
118
  "overrides": {
118
119
  "@vaadin/avatar": "24.3.4",
@@ -44,6 +44,12 @@ const customMixin = (superclass) =>
44
44
 
45
45
  this.baseElement.appendChild(template.content.cloneNode(true));
46
46
 
47
+ // On every input, Vaadin writes its value back into the input element,
48
+ // which re-runs the internal `value` setter and overwrites the combo box
49
+ // and phone fields. PhoneFieldInternal manages those inputs itself, so
50
+ // disable Vaadin's write-back.
51
+ this.baseElement._forwardInputValue = () => {};
52
+
47
53
  this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);
48
54
 
49
55
  forwardAttrs(this.shadowRoot.host, this.inputElement, {
@@ -135,6 +135,14 @@ class PhoneFieldInternal extends BaseInputClass {
135
135
  }
136
136
 
137
137
  set value(val) {
138
+ this.#onValueChange(val);
139
+ }
140
+
141
+ // Handles programmatic value changes only (e.g. `component.value = '...'`).
142
+ // User edits of the inner inputs are handled by #onTextFieldChange /
143
+ // #onComboBoxChange — Vaadin's value write-back is disabled in PhoneFieldClass
144
+ // so it no longer routes inner edits through this setter.
145
+ #onValueChange(val) {
138
146
  // reject empty or digit-free values
139
147
  if (!val || !/\d/.test(val)) {
140
148
  this.#clearValue();
@@ -267,22 +275,37 @@ class PhoneFieldInternal extends BaseInputClass {
267
275
  }
268
276
 
269
277
  #initInputs() {
270
- // Sanitize phone input value to filter everything but digits
271
- this.textField.addEventListener('input', (e) => {
272
- if (!this.allowAlphanumericInput) {
273
- const telDigitsRegExp = /^\d$/;
274
- const sanitizedInput = e.target.value
275
- .split('')
276
- .filter((char) => telDigitsRegExp.test(char))
277
- .join('');
278
- e.target.value = sanitizedInput;
279
- }
280
- });
278
+ // Handle each inner input on its own: the phone field updates the national
279
+ // number, the combo box updates the country/dial code. Neither rewrites the
280
+ // other, so editing one input never clears the other.
281
+ this.textField.addEventListener('input', this.#onTextFieldChange.bind(this));
282
+ this.comboBox.addEventListener('change', this.#onComboBoxChange.bind(this));
281
283
 
282
284
  this.handleFocusEventsDispatching(this.inputs);
283
285
  this.handleInputEventDispatching();
284
286
  }
285
287
 
288
+ // user edited the phone number: sanitize and (optionally) format it, leaving
289
+ // the country code untouched
290
+ #onTextFieldChange() {
291
+ const sanitized = this.allowAlphanumericInput
292
+ ? this.textField.value
293
+ : this.textField.value.replace(/\D+/g, '');
294
+
295
+ this.textField.value = this.isFormatValue ? this.#formatNationalNumber(sanitized) : sanitized;
296
+ }
297
+
298
+ // user changed the country: re-format the existing national number for the
299
+ // new country, leaving the phone number digits untouched
300
+ #onComboBoxChange() {
301
+ if (!this.isFormatValue) {
302
+ return;
303
+ }
304
+
305
+ const nationalNumber = this.textField.value.replace(/\D+/g, '');
306
+ this.textField.value = this.#formatNationalNumber(nationalNumber);
307
+ }
308
+
286
309
  #formatNationalNumber(nationalNumber = '') {
287
310
  // re-initialize AsYouType if country code is outdated
288
311
  if (!this.#ayt || this.#ayt.country !== this.selectedCountryCode) {
@@ -22,6 +22,7 @@ import * as recoveryCodes from '@descope-ui/descope-recovery-codes/theme';
22
22
  import * as outboundApps from '@descope-ui/descope-outbound-apps/theme';
23
23
  import * as outboundAppButton from '@descope-ui/descope-outbound-app-button/theme';
24
24
  import * as trustedDevices from '@descope-ui/descope-trusted-devices/theme';
25
+ import * as multiSso from '@descope-ui/descope-multi-sso/theme';
25
26
  import * as tooltip from '@descope-ui/descope-tooltip/theme';
26
27
  import * as countrySubdivisionCityField from '@descope-ui/descope-country-subdivision-city-field/theme';
27
28
  import * as attachment from '@descope-ui/descope-attachment/theme';
@@ -142,6 +143,7 @@ const components = {
142
143
  outboundApps,
143
144
  outboundAppButton,
144
145
  trustedDevices,
146
+ multiSso,
145
147
  tooltip,
146
148
  attachment,
147
149
  userPasskeys,