@descope/web-components-ui 3.6.0 → 3.7.1

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 (46) hide show
  1. package/dist/cjs/index.cjs.js +689 -344
  2. package/dist/cjs/index.cjs.js.map +1 -1
  3. package/dist/index.esm.js +791 -445
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/umd/8961.js +1 -1
  6. package/dist/umd/8961.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-anchored.js +2 -0
  12. package/dist/umd/descope-anchored.js.map +1 -0
  13. package/dist/umd/descope-attachment.js +1 -1
  14. package/dist/umd/descope-attachment.js.map +1 -1
  15. package/dist/umd/descope-badge.js +1 -1
  16. package/dist/umd/descope-badge.js.map +1 -1
  17. package/dist/umd/descope-button.js +1 -1
  18. package/dist/umd/descope-button.js.map +1 -1
  19. package/dist/umd/descope-date-field-descope-calendar-index-js.js +1 -1
  20. package/dist/umd/descope-date-field-descope-calendar-index-js.js.map +1 -1
  21. package/dist/umd/descope-outbound-app-button.js +1 -1
  22. package/dist/umd/descope-outbound-app-button.js.map +1 -1
  23. package/dist/umd/descope-outbound-apps.js +1 -1
  24. package/dist/umd/descope-outbound-apps.js.map +1 -1
  25. package/dist/umd/descope-timer-button.js +1 -1
  26. package/dist/umd/descope-timer-button.js.map +1 -1
  27. package/dist/umd/descope-tooltip.js +1 -1
  28. package/dist/umd/descope-tooltip.js.map +1 -1
  29. package/dist/umd/descope-trusted-devices.js +1 -1
  30. package/dist/umd/descope-trusted-devices.js.map +1 -1
  31. package/dist/umd/descope-upload-file-index-js.js +1 -1
  32. package/dist/umd/descope-upload-file-index-js.js.map +1 -1
  33. package/dist/umd/descope-user-attribute-index-js.js +4 -4
  34. package/dist/umd/descope-user-attribute-index-js.js.map +1 -1
  35. package/dist/umd/descope-user-auth-method-index-js.js +4 -4
  36. package/dist/umd/descope-user-auth-method-index-js.js.map +1 -1
  37. package/dist/umd/index.js +1 -1
  38. package/dist/umd/index.js.map +1 -1
  39. package/dist/umd/mapping-fields-descope-mappings-field-index-js.js +1 -1
  40. package/dist/umd/mapping-fields-descope-mappings-field-index-js.js.map +1 -1
  41. package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js +1 -1
  42. package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js.map +1 -1
  43. package/package.json +33 -32
  44. package/src/components/descope-user-attribute/UserAttributeClass.js +58 -7
  45. package/src/theme/components/userAttribute.js +1 -0
  46. package/stories/descope-user-attribute.stories.js +18 -0
package/dist/index.esm.js CHANGED
@@ -145,6 +145,8 @@ const observeAttributes$1 = (
145
145
  });
146
146
 
147
147
  observer.observe(ele, { attributes: true });
148
+
149
+ return { disconnect: () => observer.disconnect() };
148
150
  };
149
151
 
150
152
  // calling the callback with this object: { addedNodes, removedNodes }
@@ -194,13 +196,12 @@ const getComponentName$1 = (name) => kebabCaseJoin$1(DESCOPE_PREFIX$1, name);
194
196
 
195
197
  const getCssVarName$1 = (...args) => `--${kebabCaseJoin$1(...args)}`;
196
198
 
197
- const forwardAttrs$1 = (source, dest, options = {}) => {
199
+ const forwardAttrs$1 = (source, dest, options = {}) =>
198
200
  observeAttributes$1(
199
201
  source,
200
202
  createSyncAttrsCb$1(source, dest, options.mapAttrs),
201
203
  options,
202
204
  );
203
- };
204
205
 
205
206
  const forwardProps$3 = (src, target, props = []) => {
206
207
  if (!props.length) return;
@@ -213,7 +214,6 @@ const forwardProps$3 = (src, target, props = []) => {
213
214
  return src[prop];
214
215
  },
215
216
  set(v) {
216
- // eslint-disable-next-line no-param-reassign
217
217
  src[prop] = v;
218
218
  },
219
219
  },
@@ -228,8 +228,9 @@ const injectStyle = (cssString, ref, { prepend = false } = {}) => {
228
228
  let style;
229
229
 
230
230
  try {
231
+ // eslint-disable-next-line no-undef
231
232
  style = new CSSStyleSheet();
232
- } catch (e) {
233
+ } catch {
233
234
  // fallback for browsers that don't support CSSStyleSheet
234
235
  return generateStyleTagFallback(cssString, ref, { prepend });
235
236
  }
@@ -2092,6 +2093,55 @@ const inputOverrideValidConstraintsMixin$1 = (superclass) =>
2092
2093
  }
2093
2094
  };
2094
2095
 
2096
+ // stretchMixin — manages the `[stretch]` attribute as a pure layout signal.
2097
+ // Consumers own the visual implementation (`:host([stretch])` CSS in their
2098
+ // own init styles, theme rules, etc.).
2099
+ //
2100
+ // triggers — for leaf components that own a "full size" attribute.
2101
+ // Each entry maps an attribute/value pair; when the attribute matches the
2102
+ // value, `[stretch]` is toggled on the host.
2103
+ // Example: stretchMixin({ triggers: [{ attr: 'full-width', value: 'true' }] })
2104
+ // Use on components like descope-button that expose a full-width prop.
2105
+ //
2106
+ // Propagating `[stretch]` from slotted children (e.g. for anchored components)
2107
+ // is the consumer's responsibility. descope-anchored implements this correctly
2108
+ // via per-anchor MutationObservers on assignedElements({ flatten: true }),
2109
+ // which also handles React props set after init.
2110
+
2111
+ const stretchMixin =
2112
+ ({ triggers = [] } = {}) =>
2113
+ (superclass) =>
2114
+ class StretchMixinClass extends superclass {
2115
+ static get observedAttributes() {
2116
+ return [
2117
+ ...(superclass.observedAttributes || []),
2118
+ ...triggers.map(({ attr }) => attr),
2119
+ ];
2120
+ }
2121
+
2122
+ get #shouldStretch() {
2123
+ return triggers.some(
2124
+ ({ attr, value }) => this.getAttribute(attr) === value,
2125
+ );
2126
+ }
2127
+
2128
+ #syncStretch = () => {
2129
+ this.toggleAttribute('stretch', this.#shouldStretch);
2130
+ };
2131
+
2132
+ attributeChangedCallback(name, oldVal, newVal) {
2133
+ super.attributeChangedCallback?.(name, oldVal, newVal);
2134
+ if (oldVal !== newVal) {
2135
+ this.#syncStretch();
2136
+ }
2137
+ }
2138
+
2139
+ init() {
2140
+ super.init?.();
2141
+ this.#syncStretch();
2142
+ }
2143
+ };
2144
+
2095
2145
  const disableRules = [
2096
2146
  'blockquote',
2097
2147
  'list',
@@ -2116,9 +2166,9 @@ const decodeHTML = (html) => {
2116
2166
  /* eslint-disable no-param-reassign */
2117
2167
 
2118
2168
 
2119
- const componentName$1p = getComponentName$1('enriched-text');
2169
+ const componentName$1q = getComponentName$1('enriched-text');
2120
2170
 
2121
- class EnrichedText extends createBaseClass$1({ componentName: componentName$1p, baseSelector: ':host > div' }) {
2171
+ class EnrichedText extends createBaseClass$1({ componentName: componentName$1q, baseSelector: ':host > div' }) {
2122
2172
  #origLinkRenderer;
2123
2173
 
2124
2174
  #origEmRenderer;
@@ -4418,11 +4468,11 @@ const createBaseInputClass = (...args) =>
4418
4468
  inputEventsDispatchingMixin
4419
4469
  )(createBaseClass(...args));
4420
4470
 
4421
- const componentName$1o = getComponentName('boolean-field-internal');
4471
+ const componentName$1p = getComponentName('boolean-field-internal');
4422
4472
 
4423
4473
  const forwardAttributes$1 = ['disabled', 'invalid', 'readonly'];
4424
4474
 
4425
- const BaseInputClass$e = createBaseInputClass({ componentName: componentName$1o, baseSelector: 'div' });
4475
+ const BaseInputClass$e = createBaseInputClass({ componentName: componentName$1p, baseSelector: 'div' });
4426
4476
 
4427
4477
  class BooleanInputInternal extends BaseInputClass$e {
4428
4478
  static get observedAttributes() {
@@ -4521,14 +4571,14 @@ const booleanFieldMixin = (superclass) =>
4521
4571
 
4522
4572
  const template = document.createElement('template');
4523
4573
  template.innerHTML = `
4524
- <${componentName$1o}
4574
+ <${componentName$1p}
4525
4575
  tabindex="-1"
4526
4576
  slot="input"
4527
- ></${componentName$1o}>
4577
+ ></${componentName$1p}>
4528
4578
  `;
4529
4579
 
4530
4580
  this.baseElement.appendChild(template.content.cloneNode(true));
4531
- this.inputElement = this.shadowRoot.querySelector(componentName$1o);
4581
+ this.inputElement = this.shadowRoot.querySelector(componentName$1p);
4532
4582
  this.checkbox = this.inputElement.querySelector('vaadin-checkbox');
4533
4583
 
4534
4584
  forwardAttrs(this, this.inputElement, {
@@ -4606,7 +4656,7 @@ descope-enriched-text {
4606
4656
 
4607
4657
  `;
4608
4658
 
4609
- const componentName$1n = getComponentName('checkbox');
4659
+ const componentName$1o = getComponentName('checkbox');
4610
4660
 
4611
4661
  const {
4612
4662
  host: host$x,
@@ -4742,14 +4792,14 @@ const CheckboxClass = compose(
4742
4792
  }
4743
4793
  `,
4744
4794
  excludeAttrsSync: ['label', 'tabindex', 'style'],
4745
- componentName: componentName$1n,
4795
+ componentName: componentName$1o,
4746
4796
  })
4747
4797
  );
4748
4798
 
4749
- const componentName$1m = getComponentName$1('text');
4799
+ const componentName$1n = getComponentName$1('text');
4750
4800
 
4751
4801
  class RawText extends createBaseClass$1({
4752
- componentName: componentName$1m,
4802
+ componentName: componentName$1n,
4753
4803
  baseSelector: ':host > slot',
4754
4804
  }) {
4755
4805
  constructor() {
@@ -4815,12 +4865,12 @@ const TextClass = compose$1(
4815
4865
  componentNameValidationMixin$1,
4816
4866
  )(RawText);
4817
4867
 
4818
- const componentName$1l = getComponentName$1('link');
4868
+ const componentName$1m = getComponentName$1('link');
4819
4869
 
4820
4870
  const observedAttrs$7 = ['href', 'readonly'];
4821
4871
 
4822
4872
  class RawLink extends createBaseClass$1({
4823
- componentName: componentName$1l,
4873
+ componentName: componentName$1m,
4824
4874
  baseSelector: ':host a',
4825
4875
  }) {
4826
4876
  static get observedAttributes() {
@@ -4919,17 +4969,17 @@ const LinkClass = compose$1(
4919
4969
  componentNameValidationMixin$1,
4920
4970
  )(RawLink);
4921
4971
 
4922
- customElements.define(componentName$1m, TextClass);
4972
+ customElements.define(componentName$1n, TextClass);
4923
4973
 
4924
- customElements.define(componentName$1l, LinkClass);
4974
+ customElements.define(componentName$1m, LinkClass);
4925
4975
 
4926
- customElements.define(componentName$1p, EnrichedTextClass);
4976
+ customElements.define(componentName$1q, EnrichedTextClass);
4927
4977
 
4928
- customElements.define(componentName$1o, BooleanInputInternal);
4978
+ customElements.define(componentName$1p, BooleanInputInternal);
4929
4979
 
4930
- customElements.define(componentName$1n, CheckboxClass);
4980
+ customElements.define(componentName$1o, CheckboxClass);
4931
4981
 
4932
- const componentName$1k = getComponentName('switch-toggle');
4982
+ const componentName$1l = getComponentName('switch-toggle');
4933
4983
 
4934
4984
  const {
4935
4985
  host: host$u,
@@ -5073,17 +5123,17 @@ const SwitchToggleClass = compose(
5073
5123
  }
5074
5124
  `,
5075
5125
  excludeAttrsSync: ['label', 'tabindex', 'style'],
5076
- componentName: componentName$1k,
5126
+ componentName: componentName$1l,
5077
5127
  })
5078
5128
  );
5079
5129
 
5080
- customElements.define(componentName$1k, SwitchToggleClass);
5130
+ customElements.define(componentName$1l, SwitchToggleClass);
5081
5131
 
5082
- const componentName$1j = getComponentName('loader-linear');
5132
+ const componentName$1k = getComponentName('loader-linear');
5083
5133
 
5084
- class RawLoaderLinear extends createBaseClass({ componentName: componentName$1j, baseSelector: ':host > div' }) {
5134
+ class RawLoaderLinear extends createBaseClass({ componentName: componentName$1k, baseSelector: ':host > div' }) {
5085
5135
  static get componentName() {
5086
- return componentName$1j;
5136
+ return componentName$1k;
5087
5137
  }
5088
5138
 
5089
5139
  constructor() {
@@ -5148,11 +5198,11 @@ const LoaderLinearClass = compose(
5148
5198
  componentNameValidationMixin
5149
5199
  )(RawLoaderLinear);
5150
5200
 
5151
- customElements.define(componentName$1j, LoaderLinearClass);
5201
+ customElements.define(componentName$1k, LoaderLinearClass);
5152
5202
 
5153
- const componentName$1i = getComponentName('loader-radial');
5203
+ const componentName$1j = getComponentName('loader-radial');
5154
5204
 
5155
- class RawLoaderRadial extends createBaseClass({ componentName: componentName$1i, baseSelector: ':host > div' }) {
5205
+ class RawLoaderRadial extends createBaseClass({ componentName: componentName$1j, baseSelector: ':host > div' }) {
5156
5206
  constructor() {
5157
5207
  super();
5158
5208
 
@@ -5200,11 +5250,11 @@ const LoaderRadialClass = compose(
5200
5250
  componentNameValidationMixin
5201
5251
  )(RawLoaderRadial);
5202
5252
 
5203
- customElements.define(componentName$1i, LoaderRadialClass);
5253
+ customElements.define(componentName$1j, LoaderRadialClass);
5204
5254
 
5205
- const componentName$1h = getComponentName('container');
5255
+ const componentName$1i = getComponentName('container');
5206
5256
 
5207
- class RawContainer extends createBaseClass({ componentName: componentName$1h, baseSelector: 'slot' }) {
5257
+ class RawContainer extends createBaseClass({ componentName: componentName$1i, baseSelector: 'slot' }) {
5208
5258
  constructor() {
5209
5259
  super();
5210
5260
 
@@ -5267,9 +5317,9 @@ const ContainerClass = compose(
5267
5317
  componentNameValidationMixin
5268
5318
  )(RawContainer);
5269
5319
 
5270
- customElements.define(componentName$1h, ContainerClass);
5320
+ customElements.define(componentName$1i, ContainerClass);
5271
5321
 
5272
- const componentName$1g = getComponentName$1('combo-box');
5322
+ const componentName$1h = getComponentName$1('combo-box');
5273
5323
 
5274
5324
  const ComboBoxMixin = (superclass) =>
5275
5325
  class ComboBoxMixinClass extends superclass {
@@ -5962,12 +6012,12 @@ const ComboBoxClass = compose$1(
5962
6012
  // and reset items to an empty array, and opening the list box with no items
5963
6013
  // to display.
5964
6014
  excludeAttrsSync: ['tabindex', 'size', 'data', 'loading', 'style'],
5965
- componentName: componentName$1g,
6015
+ componentName: componentName$1h,
5966
6016
  includeForwardProps: ['items', 'renderer', 'selectedItem'],
5967
6017
  }),
5968
6018
  );
5969
6019
 
5970
- customElements.define(componentName$1g, ComboBoxClass);
6020
+ customElements.define(componentName$1h, ComboBoxClass);
5971
6021
 
5972
6022
  const getFileExtension = (path) => {
5973
6023
  const match = path.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);
@@ -6030,12 +6080,12 @@ const createImage = async (src, altText) => {
6030
6080
 
6031
6081
  /* eslint-disable no-use-before-define */
6032
6082
 
6033
- const componentName$1f = getComponentName$1('image');
6083
+ const componentName$1g = getComponentName$1('image');
6034
6084
 
6035
6085
  const srcAttrs = ['src', 'src-dark'];
6036
6086
 
6037
6087
  class RawImage extends createBaseClass$1({
6038
- componentName: componentName$1f,
6088
+ componentName: componentName$1g,
6039
6089
  baseSelector: 'slot',
6040
6090
  }) {
6041
6091
  static get observedAttributes() {
@@ -6163,7 +6213,7 @@ const ImageClass = compose$1(
6163
6213
  componentNameValidationMixin$1,
6164
6214
  )(RawImage);
6165
6215
 
6166
- const componentName$1e = getComponentName$1('icon');
6216
+ const componentName$1f = getComponentName$1('icon');
6167
6217
 
6168
6218
  const IconClass = compose$1(
6169
6219
  createStyleMixin$1({
@@ -6184,7 +6234,7 @@ const IconClass = compose$1(
6184
6234
  }
6185
6235
  `,
6186
6236
  excludeAttrsSync: ['tabindex', 'class', 'style'],
6187
- componentName: componentName$1e,
6237
+ componentName: componentName$1f,
6188
6238
  }),
6189
6239
  );
6190
6240
 
@@ -6199,7 +6249,7 @@ const clickableMixin = (superclass) =>
6199
6249
  }
6200
6250
  };
6201
6251
 
6202
- const componentName$1d = getComponentName$1('button');
6252
+ const componentName$1e = getComponentName$1('button');
6203
6253
 
6204
6254
  const resetStyles = `
6205
6255
  :host {
@@ -6246,6 +6296,7 @@ const { host: host$r, label: label$9, slottedIcon } = {
6246
6296
  let loadingIndicatorStyles;
6247
6297
 
6248
6298
  const ButtonClass = compose$1(
6299
+ stretchMixin({ triggers: [{ attr: 'full-width', value: 'true' }] }),
6249
6300
  createStyleMixin$1({
6250
6301
  mappings: {
6251
6302
  hostWidth: { property: 'width' },
@@ -6319,7 +6370,7 @@ const ButtonClass = compose$1(
6319
6370
  }
6320
6371
  `,
6321
6372
  excludeAttrsSync: ['tabindex', 'class', 'style'],
6322
- componentName: componentName$1d,
6373
+ componentName: componentName$1e,
6323
6374
  }),
6324
6375
  );
6325
6376
 
@@ -6356,7 +6407,7 @@ loadingIndicatorStyles = `
6356
6407
  }
6357
6408
  `;
6358
6409
 
6359
- customElements.define(componentName$1d, ButtonClass);
6410
+ customElements.define(componentName$1e, ButtonClass);
6360
6411
 
6361
6412
  const SUPPORTED_FORMATS = ['MM/DD/YYYY', 'DD/MM/YYYY', 'YYYY/MM/DD'];
6362
6413
 
@@ -6712,7 +6763,7 @@ const nextMonth = (epoch) => {
6712
6763
  return date;
6713
6764
  };
6714
6765
 
6715
- const componentName$1c = getComponentName('calendar');
6766
+ const componentName$1d = getComponentName('calendar');
6716
6767
 
6717
6768
  const observedAttrs$6 = [
6718
6769
  'initial-value',
@@ -6729,7 +6780,7 @@ const observedAttrs$6 = [
6729
6780
 
6730
6781
  const calendarUiAttrs = ['calendar-label-submit', 'calendar-label-cancel'];
6731
6782
 
6732
- const BaseInputClass$d = createBaseInputClass({ componentName: componentName$1c, baseSelector: 'div' });
6783
+ const BaseInputClass$d = createBaseInputClass({ componentName: componentName$1d, baseSelector: 'div' });
6733
6784
 
6734
6785
  class RawCalendar extends BaseInputClass$d {
6735
6786
  static get observedAttributes() {
@@ -7350,7 +7401,7 @@ const CalendarClass = compose(
7350
7401
  componentNameValidationMixin
7351
7402
  )(RawCalendar);
7352
7403
 
7353
- customElements.define(componentName$1c, CalendarClass);
7404
+ customElements.define(componentName$1d, CalendarClass);
7354
7405
 
7355
7406
  const {
7356
7407
  host: host$q,
@@ -7522,7 +7573,7 @@ var textFieldMappings = {
7522
7573
  ],
7523
7574
  };
7524
7575
 
7525
- const componentName$1b = getComponentName('text-field');
7576
+ const componentName$1c = getComponentName('text-field');
7526
7577
 
7527
7578
  const observedAttrs$5 = ['type', 'label-type', 'copy-to-clipboard'];
7528
7579
 
@@ -7644,11 +7695,11 @@ const TextFieldClass = compose(
7644
7695
  }
7645
7696
  `,
7646
7697
  excludeAttrsSync: ['tabindex', 'style'],
7647
- componentName: componentName$1b,
7698
+ componentName: componentName$1c,
7648
7699
  })
7649
7700
  );
7650
7701
 
7651
- customElements.define(componentName$1b, TextFieldClass);
7702
+ customElements.define(componentName$1c, TextFieldClass);
7652
7703
 
7653
7704
  // DateCounterClass allows us to add several counters to the input, and use them seperately.
7654
7705
  // For examele, we have a DayCounter, MonthCounter and YearCounter, which can each separately navigate
@@ -7768,12 +7819,12 @@ class DateCounter {
7768
7819
  }
7769
7820
  }
7770
7821
 
7771
- const componentName$1a = getComponentName('date-field');
7822
+ const componentName$1b = getComponentName('date-field');
7772
7823
 
7773
7824
  // we set baseSelector to `vaadin-popover` as a temporary hack, so our portalMixin will
7774
7825
  // be able to process this component's overlay. The whole process needs refactoring as soon as possible.
7775
7826
  const BASE_SELECTOR = 'vaadin-popover';
7776
- const BaseInputClass$c = createBaseInputClass({ componentName: componentName$1a, baseSelector: BASE_SELECTOR });
7827
+ const BaseInputClass$c = createBaseInputClass({ componentName: componentName$1b, baseSelector: BASE_SELECTOR });
7777
7828
 
7778
7829
  const dateFieldAttrs = [
7779
7830
  'format',
@@ -8711,10 +8762,10 @@ const DateFieldClass = compose(
8711
8762
  componentNameValidationMixin
8712
8763
  )(RawDateFieldClass);
8713
8764
 
8714
- customElements.define(componentName$1a, DateFieldClass);
8765
+ customElements.define(componentName$1b, DateFieldClass);
8715
8766
 
8716
- const componentName$19 = getComponentName('divider');
8717
- class RawDivider extends createBaseClass({ componentName: componentName$19, baseSelector: ':host > div' }) {
8767
+ const componentName$1a = getComponentName('divider');
8768
+ class RawDivider extends createBaseClass({ componentName: componentName$1a, baseSelector: ':host > div' }) {
8718
8769
  constructor() {
8719
8770
  super();
8720
8771
 
@@ -8817,9 +8868,9 @@ const DividerClass = compose(
8817
8868
  componentNameValidationMixin
8818
8869
  )(RawDivider);
8819
8870
 
8820
- customElements.define(componentName$19, DividerClass);
8871
+ customElements.define(componentName$1a, DividerClass);
8821
8872
 
8822
- const componentName$18 = getComponentName('email-field');
8873
+ const componentName$19 = getComponentName('email-field');
8823
8874
 
8824
8875
  const defaultPattern = "^[\\w\\.\\%\\+\\-']+@[\\w\\.\\-]+\\.[A-Za-z]{2,}$";
8825
8876
  const defaultAutocomplete = 'username';
@@ -8888,11 +8939,11 @@ const EmailFieldClass = compose(
8888
8939
  }
8889
8940
  `,
8890
8941
  excludeAttrsSync: ['tabindex', 'style'],
8891
- componentName: componentName$18,
8942
+ componentName: componentName$19,
8892
8943
  })
8893
8944
  );
8894
8945
 
8895
- customElements.define(componentName$18, EmailFieldClass);
8946
+ customElements.define(componentName$19, EmailFieldClass);
8896
8947
 
8897
8948
  const createCssVarImageClass = ({ componentName, varName, fallbackVarName }) => {
8898
8949
  let style;
@@ -8948,37 +8999,37 @@ const createCssVarImageClass = ({ componentName, varName, fallbackVarName }) =>
8948
8999
  return CssVarImageClass;
8949
9000
  };
8950
9001
 
8951
- const componentName$17 = getComponentName('logo');
9002
+ const componentName$18 = getComponentName('logo');
8952
9003
 
8953
9004
  const LogoClass = createCssVarImageClass({
8954
- componentName: componentName$17,
9005
+ componentName: componentName$18,
8955
9006
  varName: 'url',
8956
9007
  fallbackVarName: 'fallbackUrl',
8957
9008
  });
8958
9009
 
8959
- customElements.define(componentName$17, LogoClass);
9010
+ customElements.define(componentName$18, LogoClass);
8960
9011
 
8961
- const componentName$16 = getComponentName('totp-image');
9012
+ const componentName$17 = getComponentName('totp-image');
8962
9013
 
8963
9014
  const TotpImageClass = createCssVarImageClass({
8964
- componentName: componentName$16,
9015
+ componentName: componentName$17,
8965
9016
  varName: 'url',
8966
9017
  fallbackVarName: 'fallbackUrl',
8967
9018
  });
8968
9019
 
8969
- customElements.define(componentName$16, TotpImageClass);
9020
+ customElements.define(componentName$17, TotpImageClass);
8970
9021
 
8971
- const componentName$15 = getComponentName('notp-image');
9022
+ const componentName$16 = getComponentName('notp-image');
8972
9023
 
8973
9024
  const NotpImageClass = createCssVarImageClass({
8974
- componentName: componentName$15,
9025
+ componentName: componentName$16,
8975
9026
  varName: 'url',
8976
9027
  fallbackVarName: 'fallbackUrl',
8977
9028
  });
8978
9029
 
8979
- customElements.define(componentName$15, NotpImageClass);
9030
+ customElements.define(componentName$16, NotpImageClass);
8980
9031
 
8981
- const componentName$14 = getComponentName('number-field');
9032
+ const componentName$15 = getComponentName('number-field');
8982
9033
 
8983
9034
  const NumberFieldClass = compose(
8984
9035
  createStyleMixin({
@@ -9012,11 +9063,11 @@ const NumberFieldClass = compose(
9012
9063
  }
9013
9064
  `,
9014
9065
  excludeAttrsSync: ['tabindex', 'style'],
9015
- componentName: componentName$14,
9066
+ componentName: componentName$15,
9016
9067
  })
9017
9068
  );
9018
9069
 
9019
- customElements.define(componentName$14, NumberFieldClass);
9070
+ customElements.define(componentName$15, NumberFieldClass);
9020
9071
 
9021
9072
  const INPUT_MASK_TEXT_PROP = '--descope-input-mask-content';
9022
9073
  const INPUT_MASK_DISPLAY_PROP = '--descope-input-mask-display';
@@ -9039,7 +9090,7 @@ const toggleMaskVisibility = (input, value) => {
9039
9090
  }
9040
9091
  };
9041
9092
 
9042
- const componentName$13 = getComponentName('passcode-internal');
9093
+ const componentName$14 = getComponentName('passcode-internal');
9043
9094
 
9044
9095
  const observedAttributes$6 = ['digits', 'loading'];
9045
9096
 
@@ -9052,7 +9103,7 @@ const forwardAttributes = [
9052
9103
  'aria-labelledby',
9053
9104
  ];
9054
9105
 
9055
- const BaseInputClass$b = createBaseInputClass({ componentName: componentName$13, baseSelector: 'div' });
9106
+ const BaseInputClass$b = createBaseInputClass({ componentName: componentName$14, baseSelector: 'div' });
9056
9107
 
9057
9108
  class PasscodeInternal extends BaseInputClass$b {
9058
9109
  static get observedAttributes() {
@@ -9265,7 +9316,7 @@ class PasscodeInternal extends BaseInputClass$b {
9265
9316
  }
9266
9317
  }
9267
9318
 
9268
- const componentName$12 = getComponentName('passcode');
9319
+ const componentName$13 = getComponentName('passcode');
9269
9320
 
9270
9321
  const observedAttributes$5 = ['digits'];
9271
9322
 
@@ -9310,18 +9361,18 @@ const customMixin$d = (superclass) =>
9310
9361
  const template = document.createElement('template');
9311
9362
 
9312
9363
  template.innerHTML = `
9313
- <${componentName$13}
9364
+ <${componentName$14}
9314
9365
  bordered="true"
9315
9366
  name="code"
9316
9367
  tabindex="-1"
9317
9368
  slot="input"
9318
9369
  role="textbox"
9319
- ><slot></slot></${componentName$13}>
9370
+ ><slot></slot></${componentName$14}>
9320
9371
  `;
9321
9372
 
9322
9373
  this.baseElement.appendChild(template.content.cloneNode(true));
9323
9374
 
9324
- this.inputElement = this.shadowRoot.querySelector(componentName$13);
9375
+ this.inputElement = this.shadowRoot.querySelector(componentName$14);
9325
9376
 
9326
9377
  forwardAttrs(this, this.inputElement, {
9327
9378
  includeAttrs: ['digits', 'size', 'loading', 'disabled'],
@@ -9490,13 +9541,13 @@ const PasscodeClass = compose(
9490
9541
  ${resetInputCursor('vaadin-text-field')}
9491
9542
  `,
9492
9543
  excludeAttrsSync: ['tabindex', 'style'],
9493
- componentName: componentName$12,
9544
+ componentName: componentName$13,
9494
9545
  })
9495
9546
  );
9496
9547
 
9497
- customElements.define(componentName$13, PasscodeInternal);
9548
+ customElements.define(componentName$14, PasscodeInternal);
9498
9549
 
9499
- customElements.define(componentName$12, PasscodeClass);
9550
+ customElements.define(componentName$13, PasscodeClass);
9500
9551
 
9501
9552
  const passwordDraggableMixin = (superclass) =>
9502
9553
  class PasswordDraggableMixinClass extends superclass {
@@ -9537,7 +9588,7 @@ const passwordDraggableMixin = (superclass) =>
9537
9588
  }
9538
9589
  };
9539
9590
 
9540
- const componentName$11 = getComponentName('password');
9591
+ const componentName$12 = getComponentName('password');
9541
9592
 
9542
9593
  const customMixin$c = (superclass) =>
9543
9594
  class PasswordFieldMixinClass extends superclass {
@@ -9831,13 +9882,13 @@ const PasswordClass = compose(
9831
9882
  }
9832
9883
  `,
9833
9884
  excludeAttrsSync: ['tabindex', 'style'],
9834
- componentName: componentName$11,
9885
+ componentName: componentName$12,
9835
9886
  })
9836
9887
  );
9837
9888
 
9838
- customElements.define(componentName$11, PasswordClass);
9889
+ customElements.define(componentName$12, PasswordClass);
9839
9890
 
9840
- const componentName$10 = getComponentName('text-area');
9891
+ const componentName$11 = getComponentName('text-area');
9841
9892
 
9842
9893
  const {
9843
9894
  host: host$l,
@@ -9926,11 +9977,11 @@ const TextAreaClass = compose(
9926
9977
  ${resetInputCursor('vaadin-text-area')}
9927
9978
  `,
9928
9979
  excludeAttrsSync: ['tabindex', 'style'],
9929
- componentName: componentName$10,
9980
+ componentName: componentName$11,
9930
9981
  })
9931
9982
  );
9932
9983
 
9933
- customElements.define(componentName$10, TextAreaClass);
9984
+ customElements.define(componentName$11, TextAreaClass);
9934
9985
 
9935
9986
  var CountryCodes = [
9936
9987
  // United States should be the first option
@@ -11167,7 +11218,7 @@ const comboBoxItem = ({ code, dialCode, name: country }) => `
11167
11218
  </div>
11168
11219
  `;
11169
11220
 
11170
- const componentName$$ = getComponentName('phone-field-internal');
11221
+ const componentName$10 = getComponentName('phone-field-internal');
11171
11222
 
11172
11223
  const commonAttrs$2 = ['disabled', 'size', 'bordered', 'readonly'];
11173
11224
  const countryAttrs = ['country-input-placeholder', 'default-code', 'restrict-countries'];
@@ -11188,7 +11239,7 @@ const mapAttrs$1 = {
11188
11239
 
11189
11240
  const inputRelatedAttrs$1 = [].concat(commonAttrs$2, countryAttrs, phoneAttrs, labelTypeAttrs$1);
11190
11241
 
11191
- const BaseInputClass$a = createBaseInputClass({ componentName: componentName$$, baseSelector: 'div' });
11242
+ const BaseInputClass$a = createBaseInputClass({ componentName: componentName$10, baseSelector: 'div' });
11192
11243
 
11193
11244
  let PhoneFieldInternal$1 = class PhoneFieldInternal extends BaseInputClass$a {
11194
11245
  static get observedAttributes() {
@@ -11545,12 +11596,12 @@ let PhoneFieldInternal$1 = class PhoneFieldInternal extends BaseInputClass$a {
11545
11596
  }
11546
11597
  };
11547
11598
 
11548
- customElements.define(componentName$$, PhoneFieldInternal$1);
11599
+ customElements.define(componentName$10, PhoneFieldInternal$1);
11549
11600
 
11550
11601
  const textVars$2 = TextFieldClass.cssVarList;
11551
11602
  const comboVars = ComboBoxClass.cssVarList;
11552
11603
 
11553
- const componentName$_ = getComponentName('phone-field');
11604
+ const componentName$$ = getComponentName('phone-field');
11554
11605
 
11555
11606
  const customMixin$b = (superclass) =>
11556
11607
  class PhoneFieldMixinClass extends superclass {
@@ -11564,15 +11615,15 @@ const customMixin$b = (superclass) =>
11564
11615
  const template = document.createElement('template');
11565
11616
 
11566
11617
  template.innerHTML = `
11567
- <${componentName$$}
11618
+ <${componentName$10}
11568
11619
  tabindex="-1"
11569
11620
  slot="input"
11570
- ></${componentName$$}>
11621
+ ></${componentName$10}>
11571
11622
  `;
11572
11623
 
11573
11624
  this.baseElement.appendChild(template.content.cloneNode(true));
11574
11625
 
11575
- this.inputElement = this.shadowRoot.querySelector(componentName$$);
11626
+ this.inputElement = this.shadowRoot.querySelector(componentName$10);
11576
11627
 
11577
11628
  forwardAttrs(this.shadowRoot.host, this.inputElement, {
11578
11629
  includeAttrs: [
@@ -11855,11 +11906,11 @@ const PhoneFieldClass = compose(
11855
11906
  ${resetInputLabelPosition('vaadin-text-field')}
11856
11907
  `,
11857
11908
  excludeAttrsSync: ['tabindex', 'style'],
11858
- componentName: componentName$_,
11909
+ componentName: componentName$$,
11859
11910
  })
11860
11911
  );
11861
11912
 
11862
- customElements.define(componentName$_, PhoneFieldClass);
11913
+ customElements.define(componentName$$, PhoneFieldClass);
11863
11914
 
11864
11915
  const getCountryByCodeId = (countryCode) =>
11865
11916
  CountryCodes.find((c) => c.code === countryCode)?.dialCode;
@@ -11870,7 +11921,7 @@ const matchingParenthesis = (val) => {
11870
11921
  return openParenMatches?.length === closeParenMatches?.length;
11871
11922
  };
11872
11923
 
11873
- const componentName$Z = getComponentName('phone-field-internal-input-box');
11924
+ const componentName$_ = getComponentName('phone-field-internal-input-box');
11874
11925
 
11875
11926
  const observedAttributes$4 = [
11876
11927
  'disabled',
@@ -11888,7 +11939,7 @@ const mapAttrs = {
11888
11939
  'phone-input-type': 'type',
11889
11940
  };
11890
11941
 
11891
- const BaseInputClass$9 = createBaseInputClass({ componentName: componentName$Z, baseSelector: 'div' });
11942
+ const BaseInputClass$9 = createBaseInputClass({ componentName: componentName$_, baseSelector: 'div' });
11892
11943
 
11893
11944
  class PhoneFieldInternal extends BaseInputClass$9 {
11894
11945
  static get observedAttributes() {
@@ -12141,11 +12192,11 @@ class PhoneFieldInternal extends BaseInputClass$9 {
12141
12192
  }
12142
12193
  }
12143
12194
 
12144
- customElements.define(componentName$Z, PhoneFieldInternal);
12195
+ customElements.define(componentName$_, PhoneFieldInternal);
12145
12196
 
12146
12197
  const textVars$1 = TextFieldClass.cssVarList;
12147
12198
 
12148
- const componentName$Y = getComponentName('phone-input-box-field');
12199
+ const componentName$Z = getComponentName('phone-input-box-field');
12149
12200
 
12150
12201
  const customMixin$a = (superclass) =>
12151
12202
  class PhoneFieldInputBoxMixinClass extends superclass {
@@ -12159,15 +12210,15 @@ const customMixin$a = (superclass) =>
12159
12210
  const template = document.createElement('template');
12160
12211
 
12161
12212
  template.innerHTML = `
12162
- <${componentName$Z}
12213
+ <${componentName$_}
12163
12214
  tabindex="-1"
12164
12215
  slot="input"
12165
- ></${componentName$Z}>
12216
+ ></${componentName$_}>
12166
12217
  `;
12167
12218
 
12168
12219
  this.baseElement.appendChild(template.content.cloneNode(true));
12169
12220
 
12170
- this.inputElement = this.shadowRoot.querySelector(componentName$Z);
12221
+ this.inputElement = this.shadowRoot.querySelector(componentName$_);
12171
12222
 
12172
12223
  syncAttrs$1(this, this.inputElement, { includeAttrs: ['has-value'] });
12173
12224
 
@@ -12379,18 +12430,18 @@ const PhoneFieldInputBoxClass = compose(
12379
12430
  ${inputFloatingLabelStyle()}
12380
12431
  `,
12381
12432
  excludeAttrsSync: ['tabindex', 'style'],
12382
- componentName: componentName$Y,
12433
+ componentName: componentName$Z,
12383
12434
  })
12384
12435
  );
12385
12436
 
12386
- customElements.define(componentName$Y, PhoneFieldInputBoxClass);
12437
+ customElements.define(componentName$Z, PhoneFieldInputBoxClass);
12387
12438
 
12388
- const componentName$X = getComponentName('new-password-internal');
12439
+ const componentName$Y = getComponentName('new-password-internal');
12389
12440
 
12390
12441
  const interpolateString = (template, values) =>
12391
12442
  template.replace(/{{(\w+)+}}/g, (match, key) => values?.[key] || match);
12392
12443
 
12393
- const componentName$W = getComponentName('policy-validation');
12444
+ const componentName$X = getComponentName('policy-validation');
12394
12445
 
12395
12446
  const overrideAttrs = [
12396
12447
  'data-password-policy-value-minlength',
@@ -12400,7 +12451,7 @@ const overrideAttrs = [
12400
12451
  const dataAttrs = ['data', 'active-policies', 'overrides', ...overrideAttrs];
12401
12452
  const policyAttrs = ['label', 'value', ...dataAttrs];
12402
12453
 
12403
- class RawPolicyValidation extends createBaseClass({ componentName: componentName$W, baseSelector: ':host > div' }) {
12454
+ class RawPolicyValidation extends createBaseClass({ componentName: componentName$X, baseSelector: ':host > div' }) {
12404
12455
  #availablePolicies;
12405
12456
 
12406
12457
  #activePolicies = [];
@@ -12672,7 +12723,7 @@ const PolicyValidationClass = compose(
12672
12723
  componentNameValidationMixin
12673
12724
  )(RawPolicyValidation);
12674
12725
 
12675
- const componentName$V = getComponentName('new-password');
12726
+ const componentName$W = getComponentName('new-password');
12676
12727
 
12677
12728
  const policyPreviewVars = PolicyValidationClass.cssVarList;
12678
12729
 
@@ -12686,18 +12737,18 @@ const customMixin$9 = (superclass) =>
12686
12737
  const externalInputAttr = this.getAttribute('external-input');
12687
12738
 
12688
12739
  template.innerHTML = `
12689
- <${componentName$X}
12740
+ <${componentName$Y}
12690
12741
  name="new-password"
12691
12742
  tabindex="-1"
12692
12743
  slot="input"
12693
12744
  external-input="${externalInputAttr}"
12694
12745
  >
12695
- </${componentName$X}>
12746
+ </${componentName$Y}>
12696
12747
  `;
12697
12748
 
12698
12749
  this.baseElement.appendChild(template.content.cloneNode(true));
12699
12750
 
12700
- this.inputElement = this.shadowRoot.querySelector(componentName$X);
12751
+ this.inputElement = this.shadowRoot.querySelector(componentName$Y);
12701
12752
 
12702
12753
  if (this.getAttribute('external-input') === 'true') {
12703
12754
  this.initExternalInput();
@@ -12892,11 +12943,11 @@ const NewPasswordClass = compose(
12892
12943
  }
12893
12944
  `,
12894
12945
  excludeAttrsSync: ['tabindex', 'style'],
12895
- componentName: componentName$V,
12946
+ componentName: componentName$W,
12896
12947
  })
12897
12948
  );
12898
12949
 
12899
- customElements.define(componentName$W, PolicyValidationClass);
12950
+ customElements.define(componentName$X, PolicyValidationClass);
12900
12951
 
12901
12952
  const passwordAttrPrefixRegex = /^password-/;
12902
12953
  const confirmAttrPrefixRegex = /^confirm-/;
@@ -12936,7 +12987,7 @@ const inputRelatedAttrs = [].concat(
12936
12987
  policyPanelAttrs
12937
12988
  );
12938
12989
 
12939
- const BaseInputClass$8 = createBaseInputClass({ componentName: componentName$X, baseSelector: 'div' });
12990
+ const BaseInputClass$8 = createBaseInputClass({ componentName: componentName$Y, baseSelector: 'div' });
12940
12991
 
12941
12992
  class NewPasswordInternal extends BaseInputClass$8 {
12942
12993
  static get observedAttributes() {
@@ -13179,21 +13230,21 @@ class NewPasswordInternal extends BaseInputClass$8 {
13179
13230
  }
13180
13231
  }
13181
13232
 
13182
- customElements.define(componentName$X, NewPasswordInternal);
13233
+ customElements.define(componentName$Y, NewPasswordInternal);
13183
13234
 
13184
- customElements.define(componentName$V, NewPasswordClass);
13235
+ customElements.define(componentName$W, NewPasswordClass);
13185
13236
 
13186
- const componentName$U = getComponentName('recaptcha');
13237
+ const componentName$V = getComponentName('recaptcha');
13187
13238
 
13188
13239
  const observedAttributes$3 = ['enabled', 'site-key', 'action', 'enterprise', 'variant'];
13189
13240
 
13190
- const BaseClass$7 = createBaseClass({
13191
- componentName: componentName$U,
13241
+ const BaseClass$6 = createBaseClass({
13242
+ componentName: componentName$V,
13192
13243
  baseSelector: ':host > div',
13193
13244
  });
13194
- class RawRecaptcha extends BaseClass$7 {
13245
+ class RawRecaptcha extends BaseClass$6 {
13195
13246
  static get observedAttributes() {
13196
- return observedAttributes$3.concat(BaseClass$7.observedAttributes || []);
13247
+ return observedAttributes$3.concat(BaseClass$6.observedAttributes || []);
13197
13248
  }
13198
13249
 
13199
13250
  attributeChangedCallback(attrName, oldValue, newValue) {
@@ -13486,7 +13537,7 @@ class RawRecaptcha extends BaseClass$7 {
13486
13537
 
13487
13538
  const RecaptchaClass = compose(draggableMixin)(RawRecaptcha);
13488
13539
 
13489
- customElements.define(componentName$U, RecaptchaClass);
13540
+ customElements.define(componentName$V, RecaptchaClass);
13490
13541
 
13491
13542
  const getFileBase64 = (fileObj) =>
13492
13543
  new Promise((resolve) => {
@@ -13497,7 +13548,7 @@ const getFileBase64 = (fileObj) =>
13497
13548
 
13498
13549
  const getFilename = (fileObj) => fileObj.name.replace(/^.*\\/, '');
13499
13550
 
13500
- const componentName$T = getComponentName('upload-file');
13551
+ const componentName$U = getComponentName('upload-file');
13501
13552
 
13502
13553
  const observedAttributes$2 = [
13503
13554
  'title',
@@ -13512,7 +13563,7 @@ const observedAttributes$2 = [
13512
13563
  'icon',
13513
13564
  ];
13514
13565
 
13515
- const BaseInputClass$7 = createBaseInputClass({ componentName: componentName$T, baseSelector: ':host > div' });
13566
+ const BaseInputClass$7 = createBaseInputClass({ componentName: componentName$U, baseSelector: ':host > div' });
13516
13567
 
13517
13568
  class RawUploadFile extends BaseInputClass$7 {
13518
13569
  static get observedAttributes() {
@@ -13731,7 +13782,7 @@ const UploadFileClass = compose(
13731
13782
  componentNameValidationMixin
13732
13783
  )(RawUploadFile);
13733
13784
 
13734
- customElements.define(componentName$T, UploadFileClass);
13785
+ customElements.define(componentName$U, UploadFileClass);
13735
13786
 
13736
13787
  const createBaseButtonSelectionGroupInternalClass = (componentName) => {
13737
13788
  class BaseButtonSelectionGroupInternalClass extends createBaseInputClass({
@@ -13819,10 +13870,10 @@ const createBaseButtonSelectionGroupInternalClass = (componentName) => {
13819
13870
  return BaseButtonSelectionGroupInternalClass;
13820
13871
  };
13821
13872
 
13822
- const componentName$S = getComponentName('button-selection-group-internal');
13873
+ const componentName$T = getComponentName('button-selection-group-internal');
13823
13874
 
13824
13875
  class ButtonSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(
13825
- componentName$S
13876
+ componentName$T
13826
13877
  ) {
13827
13878
  getSelectedNode() {
13828
13879
  return this.items.find((item) => item.hasAttribute('selected'));
@@ -14065,7 +14116,7 @@ const buttonSelectionGroupStyles = `
14065
14116
  ${resetInputCursor('vaadin-text-field')}
14066
14117
  `;
14067
14118
 
14068
- const componentName$R = getComponentName('button-selection-group');
14119
+ const componentName$S = getComponentName('button-selection-group');
14069
14120
 
14070
14121
  const buttonSelectionGroupMixin = (superclass) =>
14071
14122
  class ButtonMultiSelectionGroupMixinClass extends superclass {
@@ -14074,19 +14125,19 @@ const buttonSelectionGroupMixin = (superclass) =>
14074
14125
  const template = document.createElement('template');
14075
14126
 
14076
14127
  template.innerHTML = `
14077
- <${componentName$S}
14128
+ <${componentName$T}
14078
14129
  name="button-selection-group"
14079
14130
  slot="input"
14080
14131
  tabindex="-1"
14081
14132
  part="internal-component"
14082
14133
  >
14083
14134
  <slot></slot>
14084
- </${componentName$S}>
14135
+ </${componentName$T}>
14085
14136
  `;
14086
14137
 
14087
14138
  this.baseElement.appendChild(template.content.cloneNode(true));
14088
14139
 
14089
- this.inputElement = this.shadowRoot.querySelector(componentName$S);
14140
+ this.inputElement = this.shadowRoot.querySelector(componentName$T);
14090
14141
 
14091
14142
  forwardAttrs(this, this.inputElement, {
14092
14143
  includeAttrs: ['size', 'default-value', 'allow-deselect'],
@@ -14111,16 +14162,16 @@ const ButtonSelectionGroupClass = compose(
14111
14162
  wrappedEleName: 'vaadin-text-field',
14112
14163
  style: () => buttonSelectionGroupStyles,
14113
14164
  excludeAttrsSync: ['tabindex', 'style'],
14114
- componentName: componentName$R,
14165
+ componentName: componentName$S,
14115
14166
  })
14116
14167
  );
14117
14168
 
14118
- customElements.define(componentName$S, ButtonSelectionGroupInternalClass);
14169
+ customElements.define(componentName$T, ButtonSelectionGroupInternalClass);
14119
14170
 
14120
- const componentName$Q = getComponentName('button-selection-group-item');
14171
+ const componentName$R = getComponentName('button-selection-group-item');
14121
14172
 
14122
14173
  class RawSelectItem extends createBaseClass({
14123
- componentName: componentName$Q,
14174
+ componentName: componentName$R,
14124
14175
  baseSelector: ':host > descope-button',
14125
14176
  }) {
14126
14177
  get size() {
@@ -14231,14 +14282,14 @@ const ButtonSelectionGroupItemClass = compose(
14231
14282
  componentNameValidationMixin
14232
14283
  )(RawSelectItem);
14233
14284
 
14234
- customElements.define(componentName$Q, ButtonSelectionGroupItemClass);
14285
+ customElements.define(componentName$R, ButtonSelectionGroupItemClass);
14235
14286
 
14236
- customElements.define(componentName$R, ButtonSelectionGroupClass);
14287
+ customElements.define(componentName$S, ButtonSelectionGroupClass);
14237
14288
 
14238
- const componentName$P = getComponentName('button-multi-selection-group-internal');
14289
+ const componentName$Q = getComponentName('button-multi-selection-group-internal');
14239
14290
 
14240
14291
  class ButtonMultiSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(
14241
- componentName$P
14292
+ componentName$Q
14242
14293
  ) {
14243
14294
  #getSelectedNodes() {
14244
14295
  return this.items.filter((item) => item.hasAttribute('selected'));
@@ -14340,7 +14391,7 @@ class ButtonMultiSelectionGroupInternalClass extends createBaseButtonSelectionGr
14340
14391
  }
14341
14392
  }
14342
14393
 
14343
- const componentName$O = getComponentName('button-multi-selection-group');
14394
+ const componentName$P = getComponentName('button-multi-selection-group');
14344
14395
 
14345
14396
  const buttonMultiSelectionGroupMixin = (superclass) =>
14346
14397
  class ButtonMultiSelectionGroupMixinClass extends superclass {
@@ -14349,19 +14400,19 @@ const buttonMultiSelectionGroupMixin = (superclass) =>
14349
14400
  const template = document.createElement('template');
14350
14401
 
14351
14402
  template.innerHTML = `
14352
- <${componentName$P}
14403
+ <${componentName$Q}
14353
14404
  name="button-selection-group"
14354
14405
  slot="input"
14355
14406
  tabindex="-1"
14356
14407
  part="internal-component"
14357
14408
  >
14358
14409
  <slot></slot>
14359
- </${componentName$P}>
14410
+ </${componentName$Q}>
14360
14411
  `;
14361
14412
 
14362
14413
  this.baseElement.appendChild(template.content.cloneNode(true));
14363
14414
 
14364
- this.inputElement = this.shadowRoot.querySelector(componentName$P);
14415
+ this.inputElement = this.shadowRoot.querySelector(componentName$Q);
14365
14416
 
14366
14417
  forwardAttrs(this, this.inputElement, {
14367
14418
  includeAttrs: ['size', 'default-values', 'min-items-selection', 'max-items-selection'],
@@ -14386,13 +14437,13 @@ const ButtonMultiSelectionGroupClass = compose(
14386
14437
  wrappedEleName: 'vaadin-text-field',
14387
14438
  style: () => buttonSelectionGroupStyles,
14388
14439
  excludeAttrsSync: ['tabindex', 'style'],
14389
- componentName: componentName$O,
14440
+ componentName: componentName$P,
14390
14441
  })
14391
14442
  );
14392
14443
 
14393
- customElements.define(componentName$P, ButtonMultiSelectionGroupInternalClass);
14444
+ customElements.define(componentName$Q, ButtonMultiSelectionGroupInternalClass);
14394
14445
 
14395
- customElements.define(componentName$O, ButtonMultiSelectionGroupClass);
14446
+ customElements.define(componentName$P, ButtonMultiSelectionGroupClass);
14396
14447
 
14397
14448
  class GridTextColumnClass extends GridSortColumn {
14398
14449
  get sortable() {
@@ -14418,9 +14469,9 @@ class GridTextColumnClass extends GridSortColumn {
14418
14469
  }
14419
14470
  }
14420
14471
 
14421
- const componentName$N = getComponentName('grid-text-column');
14472
+ const componentName$O = getComponentName('grid-text-column');
14422
14473
 
14423
- customElements.define(componentName$N, GridTextColumnClass);
14474
+ customElements.define(componentName$O, GridTextColumnClass);
14424
14475
 
14425
14476
  class GridCustomColumnClass extends GridTextColumnClass {
14426
14477
  _defaultRenderer(cell, _col, model) {
@@ -14451,9 +14502,9 @@ class GridCustomColumnClass extends GridTextColumnClass {
14451
14502
  }
14452
14503
  }
14453
14504
 
14454
- const componentName$M = getComponentName('grid-custom-column');
14505
+ const componentName$N = getComponentName('grid-custom-column');
14455
14506
 
14456
- customElements.define(componentName$M, GridCustomColumnClass);
14507
+ customElements.define(componentName$N, GridCustomColumnClass);
14457
14508
 
14458
14509
  const createCheckboxEle = () => {
14459
14510
  const checkbox = document.createElement('descope-checkbox');
@@ -14509,9 +14560,9 @@ class GridSelectionColumnClass extends GridSelectionColumn {
14509
14560
  }
14510
14561
  }
14511
14562
 
14512
- const componentName$L = getComponentName('grid-selection-column');
14563
+ const componentName$M = getComponentName('grid-selection-column');
14513
14564
 
14514
- customElements.define(componentName$L, GridSelectionColumnClass);
14565
+ customElements.define(componentName$M, GridSelectionColumnClass);
14515
14566
 
14516
14567
  class GridItemDetailsColumnClass extends GridSortColumn {
14517
14568
  get sortable() {
@@ -14547,13 +14598,13 @@ class GridItemDetailsColumnClass extends GridSortColumn {
14547
14598
  }
14548
14599
  }
14549
14600
 
14550
- const componentName$K = getComponentName('grid-item-details-column');
14601
+ const componentName$L = getComponentName('grid-item-details-column');
14551
14602
 
14552
- customElements.define(componentName$K, GridItemDetailsColumnClass);
14603
+ customElements.define(componentName$L, GridItemDetailsColumnClass);
14553
14604
 
14554
- customElements.define(componentName$1f, ImageClass);
14605
+ customElements.define(componentName$1g, ImageClass);
14555
14606
 
14556
- customElements.define(componentName$1e, IconClass);
14607
+ customElements.define(componentName$1f, IconClass);
14557
14608
 
14558
14609
  const decode = (input) => {
14559
14610
  const txt = document.createElement('textarea');
@@ -14567,9 +14618,9 @@ var copyIconSrc = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5
14567
14618
 
14568
14619
  var checkIconSrc = "data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iY2hlY2staWNvbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICA8cG9seWxpbmUgcG9pbnRzPSIyMCA2IDkgMTcgNCAxMiI+PC9wb2x5bGluZT4KPC9zdmc+Cg==";
14569
14620
 
14570
- const componentName$J = getComponentName('code-snippet');
14621
+ const componentName$K = getComponentName('code-snippet');
14571
14622
 
14572
- let CodeSnippet$1 = class CodeSnippet extends createBaseClass({ componentName: componentName$J, baseSelector: ':host > .wrapper' }) {
14623
+ let CodeSnippet$1 = class CodeSnippet extends createBaseClass({ componentName: componentName$K, baseSelector: ':host > .wrapper' }) {
14573
14624
  static get observedAttributes() {
14574
14625
  return ['lang', 'inline', 'copy-button'];
14575
14626
  }
@@ -14905,7 +14956,7 @@ const CodeSnippetClass = compose(
14905
14956
  componentNameValidationMixin
14906
14957
  )(CodeSnippet$1);
14907
14958
 
14908
- customElements.define(componentName$J, CodeSnippetClass);
14959
+ customElements.define(componentName$K, CodeSnippetClass);
14909
14960
 
14910
14961
  const isValidDataType = (data) => {
14911
14962
  const isValid = Array.isArray(data);
@@ -14993,7 +15044,7 @@ const defaultRowDetailsRenderer = (item, itemLabelsMapping) => `
14993
15044
  </div>
14994
15045
  `;
14995
15046
 
14996
- const componentName$I = getComponentName('grid');
15047
+ const componentName$J = getComponentName('grid');
14997
15048
 
14998
15049
  const GridMixin = (superclass) =>
14999
15050
  class GridMixinClass extends superclass {
@@ -15362,13 +15413,13 @@ const GridClass = compose(
15362
15413
  /*!css*/
15363
15414
  `,
15364
15415
  excludeAttrsSync: ['columns', 'tabindex', 'style'],
15365
- componentName: componentName$I,
15416
+ componentName: componentName$J,
15366
15417
  })
15367
15418
  );
15368
15419
 
15369
- customElements.define(componentName$I, GridClass);
15420
+ customElements.define(componentName$J, GridClass);
15370
15421
 
15371
- const componentName$H = getComponentName('multi-select-combo-box');
15422
+ const componentName$I = getComponentName('multi-select-combo-box');
15372
15423
 
15373
15424
  const multiSelectComboBoxMixin = (superclass) =>
15374
15425
  class MultiSelectComboBoxMixinClass extends superclass {
@@ -16023,14 +16074,14 @@ const MultiSelectComboBoxClass = compose(
16023
16074
  // Note: we exclude `placeholder` because the vaadin component observes it and
16024
16075
  // tries to override it, causing us to lose the user set placeholder.
16025
16076
  excludeAttrsSync: ['tabindex', 'size', 'data', 'placeholder', 'style'],
16026
- componentName: componentName$H,
16077
+ componentName: componentName$I,
16027
16078
  includeForwardProps: ['items', 'renderer', 'selectedItems'],
16028
16079
  })
16029
16080
  );
16030
16081
 
16031
- customElements.define(componentName$H, MultiSelectComboBoxClass);
16082
+ customElements.define(componentName$I, MultiSelectComboBoxClass);
16032
16083
 
16033
- const componentName$G = getComponentName('modal');
16084
+ const componentName$H = getComponentName('modal');
16034
16085
 
16035
16086
  const observedAttrs$3 = ['opened'];
16036
16087
 
@@ -16179,11 +16230,11 @@ const ModalClass = compose(
16179
16230
  }
16180
16231
  `,
16181
16232
  excludeAttrsSync: ['tabindex', 'opened', 'style'],
16182
- componentName: componentName$G,
16233
+ componentName: componentName$H,
16183
16234
  })
16184
16235
  );
16185
16236
 
16186
- customElements.define(componentName$G, ModalClass);
16237
+ customElements.define(componentName$H, ModalClass);
16187
16238
 
16188
16239
  const vaadinContainerClass = window.customElements.get('vaadin-notification-container');
16189
16240
 
@@ -16194,7 +16245,7 @@ if (!vaadinContainerClass) {
16194
16245
  class NotificationContainerClass extends vaadinContainerClass {}
16195
16246
  customElements.define(getComponentName('notification-container'), NotificationContainerClass);
16196
16247
 
16197
- const componentName$F = getComponentName('notification-card');
16248
+ const componentName$G = getComponentName('notification-card');
16198
16249
 
16199
16250
  const notificationCardMixin = (superclass) =>
16200
16251
  class NotificationCardMixinClass extends superclass {
@@ -16302,13 +16353,13 @@ const NotificationCardClass = compose(
16302
16353
  }
16303
16354
  `,
16304
16355
  excludeAttrsSync: ['tabindex', 'style'],
16305
- componentName: componentName$F,
16356
+ componentName: componentName$G,
16306
16357
  })
16307
16358
  );
16308
16359
 
16309
- customElements.define(componentName$F, NotificationCardClass);
16360
+ customElements.define(componentName$G, NotificationCardClass);
16310
16361
 
16311
- const componentName$E = getComponentName('notification');
16362
+ const componentName$F = getComponentName('notification');
16312
16363
 
16313
16364
  const NotificationMixin = (superclass) =>
16314
16365
  class NotificationMixinClass extends superclass {
@@ -16401,15 +16452,15 @@ const NotificationClass = compose(
16401
16452
  createProxy({
16402
16453
  wrappedEleName: 'vaadin-notification',
16403
16454
  excludeAttrsSync: ['tabindex', 'style'],
16404
- componentName: componentName$E,
16455
+ componentName: componentName$F,
16405
16456
  })
16406
16457
  );
16407
16458
 
16408
- customElements.define(componentName$E, NotificationClass);
16459
+ customElements.define(componentName$F, NotificationClass);
16409
16460
 
16410
- const componentName$D = getComponentName('mappings-field-internal');
16461
+ const componentName$E = getComponentName('mappings-field-internal');
16411
16462
 
16412
- const BaseInputClass$6 = createBaseInputClass({ componentName: componentName$D, baseSelector: 'div' });
16463
+ const BaseInputClass$6 = createBaseInputClass({ componentName: componentName$E, baseSelector: 'div' });
16413
16464
 
16414
16465
  class MappingsFieldInternal extends BaseInputClass$6 {
16415
16466
  #errorItem;
@@ -16655,7 +16706,7 @@ class MappingsFieldInternal extends BaseInputClass$6 {
16655
16706
  }
16656
16707
  }
16657
16708
 
16658
- const componentName$C = getComponentName('mappings-field');
16709
+ const componentName$D = getComponentName('mappings-field');
16659
16710
 
16660
16711
  const customMixin$7 = (superclass) =>
16661
16712
  class MappingsFieldMixinClass extends superclass {
@@ -16684,14 +16735,14 @@ const customMixin$7 = (superclass) =>
16684
16735
  const template = document.createElement('template');
16685
16736
 
16686
16737
  template.innerHTML = `
16687
- <${componentName$D}
16738
+ <${componentName$E}
16688
16739
  tabindex="-1"
16689
- ></${componentName$D}>
16740
+ ></${componentName$E}>
16690
16741
  `;
16691
16742
 
16692
16743
  this.baseElement.appendChild(template.content.cloneNode(true));
16693
16744
 
16694
- this.inputElement = this.shadowRoot.querySelector(componentName$D);
16745
+ this.inputElement = this.shadowRoot.querySelector(componentName$E);
16695
16746
 
16696
16747
  forwardAttrs(this, this.inputElement, {
16697
16748
  includeAttrs: [
@@ -16827,13 +16878,13 @@ const MappingsFieldClass = compose(
16827
16878
  'error-message',
16828
16879
  'style',
16829
16880
  ],
16830
- componentName: componentName$C,
16881
+ componentName: componentName$D,
16831
16882
  })
16832
16883
  );
16833
16884
 
16834
- customElements.define(componentName$D, MappingsFieldInternal);
16885
+ customElements.define(componentName$E, MappingsFieldInternal);
16835
16886
 
16836
- const componentName$B = getComponentName('mapping-item');
16887
+ const componentName$C = getComponentName('mapping-item');
16837
16888
 
16838
16889
  const inputAttrs = [
16839
16890
  'size',
@@ -16846,7 +16897,7 @@ const inputAttrs = [
16846
16897
  'st-error-message-icon-padding',
16847
16898
  ];
16848
16899
 
16849
- const BaseInputClass$5 = createBaseInputClass({ componentName: componentName$B, baseSelector: 'div' });
16900
+ const BaseInputClass$5 = createBaseInputClass({ componentName: componentName$C, baseSelector: 'div' });
16850
16901
 
16851
16902
  class MappingItem extends BaseInputClass$5 {
16852
16903
  static get observedAttributes() {
@@ -17001,16 +17052,20 @@ class MappingItem extends BaseInputClass$5 {
17001
17052
  }
17002
17053
  }
17003
17054
 
17004
- customElements.define(componentName$B, MappingItem);
17055
+ customElements.define(componentName$C, MappingItem);
17005
17056
 
17006
- customElements.define(componentName$C, MappingsFieldClass);
17057
+ customElements.define(componentName$D, MappingsFieldClass);
17007
17058
 
17008
- const componentName$A = getComponentName$1('badge');
17059
+ const componentName$B = getComponentName$1('badge');
17009
17060
 
17010
17061
  class RawBadge extends createBaseClass$1({
17011
- componentName: componentName$A,
17062
+ componentName: componentName$B,
17012
17063
  baseSelector: ':host > div',
17013
17064
  }) {
17065
+ static get observedAttributes() {
17066
+ return ['data-attachment-size', 'shrink-to-indicator-threshold'];
17067
+ }
17068
+
17014
17069
  constructor() {
17015
17070
  super();
17016
17071
 
@@ -17036,6 +17091,24 @@ class RawBadge extends createBaseClass$1({
17036
17091
  this,
17037
17092
  );
17038
17093
  }
17094
+
17095
+ get shrinkToIndicatorThreshold() {
17096
+ return this.getAttribute('shrink-to-indicator-threshold') || 65;
17097
+ }
17098
+
17099
+ #handleShrinkToIndicator(value) {
17100
+ this.toggleAttribute(
17101
+ 'shrink-to-indicator',
17102
+ parseFloat(value) < this.shrinkToIndicatorThreshold,
17103
+ );
17104
+ }
17105
+
17106
+ attributeChangedCallback(name, oldVal, newVal) {
17107
+ super.attributeChangedCallback?.(name, oldVal, newVal);
17108
+ if (name === 'data-attachment-size' && oldVal !== newVal) {
17109
+ this.#handleShrinkToIndicator(newVal);
17110
+ }
17111
+ }
17039
17112
  }
17040
17113
 
17041
17114
  const BadgeClass = compose$1(
@@ -17079,9 +17152,9 @@ var deleteIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTgi
17079
17152
 
17080
17153
  var editIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxNSAxNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBkPSJNMTAuMDAwMiAwLjk5MjE0OUMxMC4wMDAyIDEuMDE2MTUgMTAuMDAwMiAxLjAxNjE1IDEwLjAwMDIgMS4wMTYxNUw4LjIyNDE5IDMuMDA4MTVIMi45OTIxOUMyLjQ2NDE5IDMuMDA4MTUgMi4wMDgxOSAzLjQ0MDE1IDIuMDA4MTkgMy45OTIxNVYxMi4wMDgyQzIuMDA4MTkgMTIuNTM2MiAyLjQ0MDE5IDEyLjk5MjIgMi45OTIxOSAxMi45OTIySDUuNTM2MTlDNS44NDgxOSAxMy4wNDAyIDYuMTYwMTkgMTMuMDQwMiA2LjQ3MjE5IDEyLjk5MjJIMTEuMDA4MkMxMS41MzYyIDEyLjk5MjIgMTEuOTkyMiAxMi41NjAyIDExLjk5MjIgMTIuMDA4MlY3Ljc4NDE2TDEzLjkzNjIgNS42MjQxNUwxNC4wMDgyIDUuNjcyMTVWMTEuOTg0MkMxNC4wMDgyIDEzLjY2NDIgMTIuNjY0MiAxNS4wMDgyIDExLjAwODIgMTUuMDA4MkgzLjAxNjE5QzEuMzM2MTkgMTUuMDA4MiAtMC4wMDc4MTI1IDEzLjY2NDIgLTAuMDA3ODEyNSAxMS45ODQyVjMuOTkyMTVDLTAuMDA3ODEyNSAyLjMzNjE1IDEuMzM2MTkgMC45OTIxNDkgMy4wMTYxOSAwLjk5MjE0OUgxMC4wMDAyWk0xMS4yNzIyIDIuNjI0MTVMMTIuNjE2MiA0LjExMjE1TDcuNzIwMTkgOS42ODAxNkM3LjUwNDE5IDkuOTIwMTYgNi44MzIxOSAxMC4yMzIyIDUuNjgwMTkgMTAuNjE2MkM1LjY1NjE5IDEwLjY0MDIgNS42MDgxOSAxMC42NDAyIDUuNTYwMTkgMTAuNjE2MkM1LjQ2NDE5IDEwLjU5MjIgNS4zOTIxOSAxMC40NzIyIDUuNDQwMTkgMTAuMzc2MkM1Ljc1MjE5IDkuMjQ4MTYgNi4wNDAxOSA4LjU1MjE2IDYuMjU2MTkgOC4zMTIxNkwxMS4yNzIyIDIuNjI0MTVaTTExLjkyMDIgMS44NTYxNUwxMy4yODgyIDAuMzIwMTQ5QzEzLjY0ODIgLTAuMDg3ODUxNiAxNC4yNzIyIC0wLjExMTg1MiAxNC42ODAyIDAuMjcyMTQ5QzE1LjA4ODIgMC42MzIxNDkgMTUuMTEyMiAxLjI4MDE1IDE0Ljc1MjIgMS42ODgxNUwxMy4yNjQyIDMuMzY4MTVMMTEuOTIwMiAxLjg1NjE1WiIgZmlsbD0iY3VycmVudGNvbG9yIi8+Cjwvc3ZnPgo=";
17081
17154
 
17082
- const componentName$z = getComponentName('user-attribute');
17155
+ const componentName$A = getComponentName('user-attribute');
17083
17156
  class RawUserAttribute extends createBaseClass({
17084
- componentName: componentName$z,
17157
+ componentName: componentName$A,
17085
17158
  baseSelector: ':host > .root',
17086
17159
  }) {
17087
17160
  constructor() {
@@ -17094,12 +17167,12 @@ class RawUserAttribute extends createBaseClass({
17094
17167
  <descope-text st-text-align="auto" data-id="value-text" variant="body1" mode="primary" class="value"></descope-text>
17095
17168
  <div class="btn-wrapper">
17096
17169
  <descope-badge mode="default" bordered="true" size="xs"></descope-badge>
17097
- <descope-button size="xs" data-id="edit-btn" square="true" variant="link" mode="primary">
17098
- <slot name="edit-icon"></slot>
17099
- </descope-button>
17100
- <descope-button size="xs" data-id="delete-btn" square="true" variant="link" mode="primary">
17170
+ <descope-button size="sm" data-id="delete-btn" variant="link" mode="primary">
17101
17171
  <slot name="delete-icon"></slot>
17102
17172
  </descope-button>
17173
+ <descope-button size="sm" data-id="edit-btn" variant="link" mode="primary">
17174
+ <slot name="edit-icon"></slot>
17175
+ </descope-button>
17103
17176
  </div>
17104
17177
  </div>
17105
17178
  </div>
@@ -17118,7 +17191,7 @@ class RawUserAttribute extends createBaseClass({
17118
17191
  height: 100%;
17119
17192
  align-items: center;
17120
17193
  }
17121
-
17194
+
17122
17195
  ::slotted(*) {
17123
17196
  display: flex;
17124
17197
  align-items: center;
@@ -17136,6 +17209,14 @@ class RawUserAttribute extends createBaseClass({
17136
17209
  justify-content: space-between;
17137
17210
  align-items: center;
17138
17211
  flex-grow: 0;
17212
+ flex-shrink: 0;
17213
+ }
17214
+
17215
+ slot[name="edit-icon"],
17216
+ slot[name="delete-icon"] {
17217
+ display: inline-flex;
17218
+ flex-shrink: 0;
17219
+ align-items: center;
17139
17220
  }
17140
17221
 
17141
17222
  .content-wrapper {
@@ -17172,6 +17253,7 @@ class RawUserAttribute extends createBaseClass({
17172
17253
 
17173
17254
  .hidden {
17174
17255
  visibility: hidden;
17256
+ width: 0;
17175
17257
  }
17176
17258
 
17177
17259
  descope-text[data-id="label-text"].required:after {
@@ -17181,6 +17263,7 @@ class RawUserAttribute extends createBaseClass({
17181
17263
 
17182
17264
  :host([readonly="true"]) descope-button {
17183
17265
  visibility: hidden;
17266
+ width: 0;
17184
17267
  }
17185
17268
  `,
17186
17269
  this
@@ -17220,6 +17303,21 @@ class RawUserAttribute extends createBaseClass({
17220
17303
  this.badge.setAttribute('title', this.badgeTooltipText || this.badgeLabel);
17221
17304
  }
17222
17305
 
17306
+ updateButtonLabel(btnRef, label) {
17307
+ let textSpanEle = btnRef.querySelector('span.btn-label');
17308
+
17309
+ if (label) {
17310
+ if (!textSpanEle) {
17311
+ textSpanEle = document.createElement('span');
17312
+ textSpanEle.classList.add('btn-label');
17313
+ btnRef.appendChild(textSpanEle);
17314
+ }
17315
+ textSpanEle.innerText = label;
17316
+ } else {
17317
+ textSpanEle?.remove();
17318
+ }
17319
+ }
17320
+
17223
17321
  onIsRequiredChange() {
17224
17322
  this.labelText.classList.toggle('required', this.isRequired);
17225
17323
  }
@@ -17248,12 +17346,26 @@ class RawUserAttribute extends createBaseClass({
17248
17346
  return this.getAttribute('badge-tooltip-text') || '';
17249
17347
  }
17250
17348
 
17349
+ get editButtonLabel() {
17350
+ return this.getAttribute('edit-button-label') || '';
17351
+ }
17352
+
17353
+ get deleteButtonLabel() {
17354
+ return this.getAttribute('delete-button-label') || '';
17355
+ }
17356
+
17357
+ get isDeleteHidden() {
17358
+ return this.getAttribute('hide-delete') === 'true';
17359
+ }
17360
+
17251
17361
  init() {
17252
17362
  this.onLabelChange();
17253
17363
  this.onValueOrPlaceholderChange();
17254
17364
  this.onIsRequiredChange();
17255
17365
  this.onBadgeLabelChange();
17256
17366
  this.onBadgeTooltipTextChange();
17367
+ this.updateButtonLabel(this.editButton, this.editButtonLabel);
17368
+ this.updateButtonLabel(this.deleteButton, this.deleteButtonLabel);
17257
17369
  this.handleDeleteButtonVisibility();
17258
17370
 
17259
17371
  this.deleteButton.addEventListener('click', () =>
@@ -17289,11 +17401,17 @@ class RawUserAttribute extends createBaseClass({
17289
17401
  'required',
17290
17402
  'badge-label',
17291
17403
  'badge-tooltip-text',
17404
+ 'edit-button-label',
17405
+ 'delete-button-label',
17406
+ 'hide-delete',
17292
17407
  ].concat(super.observedAttributes);
17293
17408
  }
17294
17409
 
17295
17410
  handleDeleteButtonVisibility() {
17296
- this.deleteButton.classList.toggle('hidden', this.isRequired || !this.value);
17411
+ this.deleteButton.classList.toggle(
17412
+ 'hidden',
17413
+ this.isRequired || !this.value || this.isDeleteHidden
17414
+ );
17297
17415
  }
17298
17416
 
17299
17417
  attributeChangedCallback(name, oldValue, newValue) {
@@ -17313,9 +17431,13 @@ class RawUserAttribute extends createBaseClass({
17313
17431
  this.onBadgeLabelChange();
17314
17432
  } else if (name === 'badge-tooltip-text') {
17315
17433
  this.onBadgeTooltipTextChange();
17434
+ } else if (name === 'edit-button-label') {
17435
+ this.updateButtonLabel(this.editButton, this.editButtonLabel);
17436
+ } else if (name === 'delete-button-label') {
17437
+ this.updateButtonLabel(this.deleteButton, this.deleteButtonLabel);
17316
17438
  }
17317
17439
 
17318
- if (name === 'value' || name === 'required') {
17440
+ if (name === 'value' || name === 'required' || name === 'hide-delete') {
17319
17441
  this.handleDeleteButtonVisibility();
17320
17442
  }
17321
17443
  }
@@ -17346,21 +17468,22 @@ const UserAttributeClass = compose(
17346
17468
  contentMinWidth: { ...contentWrapper, property: 'min-width' },
17347
17469
  badgeMaxWidth: { ...badge$3, property: 'max-width' },
17348
17470
  itemsGap: [{ property: 'gap' }, { ...contentWrapper, property: 'gap' }],
17471
+ iconColor: [{ selector: () => '::slotted(*)', property: IconClass.cssVarList.fill }],
17349
17472
  },
17350
17473
  }),
17351
17474
  draggableMixin,
17352
17475
  componentNameValidationMixin
17353
17476
  )(RawUserAttribute);
17354
17477
 
17355
- customElements.define(componentName$A, BadgeClass);
17478
+ customElements.define(componentName$B, BadgeClass);
17356
17479
 
17357
- customElements.define(componentName$z, UserAttributeClass);
17480
+ customElements.define(componentName$A, UserAttributeClass);
17358
17481
 
17359
17482
  var greenVIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTggMEMzLjYgMCAwIDMuNiAwIDhDMCAxMi40IDMuNiAxNiA4IDE2QzEyLjQgMTYgMTYgMTIuNCAxNiA4QzE2IDMuNiAxMi40IDAgOCAwWk03LjEgMTEuN0wyLjkgNy42TDQuMyA2LjJMNyA4LjlMMTIgNEwxMy40IDUuNEw3LjEgMTEuN1oiIGZpbGw9IiM0Q0FGNTAiLz4KPC9zdmc+Cg==";
17360
17483
 
17361
- const componentName$y = getComponentName('user-auth-method');
17484
+ const componentName$z = getComponentName('user-auth-method');
17362
17485
  class RawUserAuthMethod extends createBaseClass({
17363
- componentName: componentName$y,
17486
+ componentName: componentName$z,
17364
17487
  baseSelector: ':host > .root',
17365
17488
  }) {
17366
17489
  constructor() {
@@ -17611,11 +17734,11 @@ const UserAuthMethodClass = compose(
17611
17734
  componentNameValidationMixin
17612
17735
  )(RawUserAuthMethod);
17613
17736
 
17614
- customElements.define(componentName$y, UserAuthMethodClass);
17737
+ customElements.define(componentName$z, UserAuthMethodClass);
17615
17738
 
17616
- const componentName$x = getComponentName('saml-group-mappings-internal');
17739
+ const componentName$y = getComponentName('saml-group-mappings-internal');
17617
17740
 
17618
- const BaseInputClass$4 = createBaseInputClass({ componentName: componentName$x, baseSelector: '' });
17741
+ const BaseInputClass$4 = createBaseInputClass({ componentName: componentName$y, baseSelector: '' });
17619
17742
 
17620
17743
  class SamlGroupMappingsInternal extends BaseInputClass$4 {
17621
17744
  static get observedAttributes() {
@@ -17741,7 +17864,7 @@ class SamlGroupMappingsInternal extends BaseInputClass$4 {
17741
17864
  }
17742
17865
  }
17743
17866
 
17744
- const componentName$w = getComponentName('saml-group-mappings');
17867
+ const componentName$x = getComponentName('saml-group-mappings');
17745
17868
 
17746
17869
  const customMixin$6 = (superclass) =>
17747
17870
  class SamlGroupMappingsMixinClass extends superclass {
@@ -17751,14 +17874,14 @@ const customMixin$6 = (superclass) =>
17751
17874
  const template = document.createElement('template');
17752
17875
 
17753
17876
  template.innerHTML = `
17754
- <${componentName$x}
17877
+ <${componentName$y}
17755
17878
  tabindex="-1"
17756
- ></${componentName$x}>
17879
+ ></${componentName$y}>
17757
17880
  `;
17758
17881
 
17759
17882
  this.baseElement.appendChild(template.content.cloneNode(true));
17760
17883
 
17761
- this.inputElement = this.shadowRoot.querySelector(componentName$x);
17884
+ this.inputElement = this.shadowRoot.querySelector(componentName$y);
17762
17885
 
17763
17886
  forwardAttrs(this, this.inputElement, {
17764
17887
  includeAttrs: [
@@ -17843,15 +17966,15 @@ const SamlGroupMappingsClass = compose(
17843
17966
  'error-message',
17844
17967
  'style',
17845
17968
  ],
17846
- componentName: componentName$w,
17969
+ componentName: componentName$x,
17847
17970
  })
17848
17971
  );
17849
17972
 
17850
- customElements.define(componentName$x, SamlGroupMappingsInternal);
17973
+ customElements.define(componentName$y, SamlGroupMappingsInternal);
17851
17974
 
17852
- customElements.define(componentName$w, SamlGroupMappingsClass);
17975
+ customElements.define(componentName$x, SamlGroupMappingsClass);
17853
17976
 
17854
- const componentName$v = getComponentName('radio-button');
17977
+ const componentName$w = getComponentName('radio-button');
17855
17978
 
17856
17979
  const customMixin$5 = (superclass) =>
17857
17980
  class CustomMixin extends superclass {
@@ -17916,11 +18039,11 @@ const RadioButtonClass = compose(
17916
18039
  wrappedEleName: 'vaadin-radio-button',
17917
18040
  excludeAttrsSync: ['tabindex', 'data', 'style'],
17918
18041
  includeForwardProps: ['checked', 'name', 'disabled'],
17919
- componentName: componentName$v,
18042
+ componentName: componentName$w,
17920
18043
  })
17921
18044
  );
17922
18045
 
17923
- const componentName$u = getComponentName('radio-group');
18046
+ const componentName$v = getComponentName('radio-group');
17924
18047
 
17925
18048
  const RadioGroupMixin = (superclass) =>
17926
18049
  class RadioGroupMixinClass extends superclass {
@@ -17934,12 +18057,12 @@ const RadioGroupMixin = (superclass) =>
17934
18057
 
17935
18058
  // we are overriding vaadin children getter so it will run on our custom elements
17936
18059
  Object.defineProperty(this.baseElement, 'children', {
17937
- get: () => this.querySelectorAll(componentName$v),
18060
+ get: () => this.querySelectorAll(componentName$w),
17938
18061
  });
17939
18062
 
17940
18063
  // we are overriding vaadin __filterRadioButtons so it will run on our custom elements
17941
18064
  this.baseElement.__filterRadioButtons = (nodes) =>
17942
- nodes.filter((node) => node.localName === componentName$v);
18065
+ nodes.filter((node) => node.localName === componentName$w);
17943
18066
 
17944
18067
  // vaadin radio group missing some input properties
17945
18068
  this.baseElement.setCustomValidity = () => {};
@@ -18085,13 +18208,13 @@ const RadioGroupClass = compose(
18085
18208
  `,
18086
18209
 
18087
18210
  excludeAttrsSync: ['tabindex', 'size', 'data', 'direction', 'style'],
18088
- componentName: componentName$u,
18211
+ componentName: componentName$v,
18089
18212
  includeForwardProps: ['value'],
18090
18213
  })
18091
18214
  );
18092
18215
 
18093
- customElements.define(componentName$u, RadioGroupClass);
18094
- customElements.define(componentName$v, RadioButtonClass);
18216
+ customElements.define(componentName$v, RadioGroupClass);
18217
+ customElements.define(componentName$w, RadioButtonClass);
18095
18218
 
18096
18219
  const defaultValidateSchema = () => true;
18097
18220
  const defaultItemRenderer = (item) => `<pre>${JSON.stringify(item, null, 4)}</pre>`;
@@ -18191,7 +18314,7 @@ const createDynamicDataMixin =
18191
18314
  }
18192
18315
  };
18193
18316
 
18194
- const componentName$t = getComponentName('scopes-list');
18317
+ const componentName$u = getComponentName('scopes-list');
18195
18318
  const variants = ['checkbox', 'switch'];
18196
18319
 
18197
18320
  const itemRenderer$4 = ({ id, desc, required = false }, _, ref) => {
@@ -18210,7 +18333,7 @@ const itemRenderer$4 = ({ id, desc, required = false }, _, ref) => {
18210
18333
  `;
18211
18334
  };
18212
18335
 
18213
- class RawScopesList extends createBaseClass({ componentName: componentName$t, baseSelector: 'div' }) {
18336
+ class RawScopesList extends createBaseClass({ componentName: componentName$u, baseSelector: 'div' }) {
18214
18337
  constructor() {
18215
18338
  super();
18216
18339
 
@@ -18315,7 +18438,7 @@ const ScopesListClass = compose(
18315
18438
  componentNameValidationMixin
18316
18439
  )(RawScopesList);
18317
18440
 
18318
- const componentName$s = getComponentName$1('list-item');
18441
+ const componentName$t = getComponentName$1('list-item');
18319
18442
 
18320
18443
  const customMixin$4 = (superclass) =>
18321
18444
  class ListItemMixinClass extends superclass {
@@ -18372,14 +18495,14 @@ const ListItemClass = compose$1(
18372
18495
  componentNameValidationMixin$1,
18373
18496
  customMixin$4,
18374
18497
  activeableMixin,
18375
- )(createBaseClass$1({ componentName: componentName$s, baseSelector: 'slot' }));
18498
+ )(createBaseClass$1({ componentName: componentName$t, baseSelector: 'slot' }));
18376
18499
 
18377
- customElements.define(componentName$s, ListItemClass);
18500
+ customElements.define(componentName$t, ListItemClass);
18378
18501
 
18379
- const componentName$r = getComponentName$1('list');
18502
+ const componentName$s = getComponentName$1('list');
18380
18503
 
18381
18504
  class RawList extends createBaseClass$1({
18382
- componentName: componentName$r,
18505
+ componentName: componentName$s,
18383
18506
  baseSelector: '.wrapper',
18384
18507
  }) {
18385
18508
  static get observedAttributes() {
@@ -18550,15 +18673,15 @@ const ListClass = compose$1(
18550
18673
  componentNameValidationMixin$1,
18551
18674
  )(RawList);
18552
18675
 
18553
- customElements.define(componentName$r, ListClass);
18676
+ customElements.define(componentName$s, ListClass);
18554
18677
 
18555
- customElements.define(componentName$t, ScopesListClass);
18678
+ customElements.define(componentName$u, ScopesListClass);
18556
18679
 
18557
18680
  var arrowsImg = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOSAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTkuMTQ0OTIgMTUuNjQ1TDcuNDk5OTIgMTRMMi44MzMyNSAxOC42NjY3TDcuNDk5OTIgMjMuMzMzM0w5LjE0NDkyIDIxLjY4ODNMNy4zMDE1OSAxOS44MzMzSDI0Ljk5OTlWMTcuNUg3LjMwMTU5TDkuMTQ0OTIgMTUuNjQ1WiIgZmlsbD0iIzYzNkM3NCIvPgo8cGF0aCBkPSJNMTkuODU1IDEyLjM1NTNMMjEuNSAxNC4wMDAzTDI2LjE2NjcgOS4zMzM2NkwyMS41IDQuNjY2OTlMMTkuODU1IDYuMzExOTlMMjEuNjk4MyA4LjE2Njk5SDRWMTAuNTAwM0gyMS42OTgzTDE5Ljg1NSAxMi4zNTUzWiIgZmlsbD0iIzYzNkM3NCIvPgo8L3N2Zz4K";
18558
18681
 
18559
- const componentName$q = getComponentName('third-party-app-logo');
18682
+ const componentName$r = getComponentName('third-party-app-logo');
18560
18683
  class RawThirdPartyAppLogoClass extends createBaseClass({
18561
- componentName: componentName$q,
18684
+ componentName: componentName$r,
18562
18685
  baseSelector: '.wrapper',
18563
18686
  }) {
18564
18687
  constructor() {
@@ -18655,9 +18778,9 @@ const ThirdPartyAppLogoClass = compose(
18655
18778
  componentNameValidationMixin
18656
18779
  )(RawThirdPartyAppLogoClass);
18657
18780
 
18658
- customElements.define(componentName$q, ThirdPartyAppLogoClass);
18781
+ customElements.define(componentName$r, ThirdPartyAppLogoClass);
18659
18782
 
18660
- const componentName$p = getComponentName('security-questions-setup');
18783
+ const componentName$q = getComponentName('security-questions-setup');
18661
18784
 
18662
18785
  const attrsToSync$1 = [
18663
18786
  'full-width',
@@ -18676,7 +18799,7 @@ const attrsToSync$1 = [
18676
18799
  ];
18677
18800
 
18678
18801
  const attrsToReRender$1 = ['count', 'questions'];
18679
- class RawSecurityQuestionsSetup extends createBaseClass({ componentName: componentName$p, baseSelector: 'div' }) {
18802
+ class RawSecurityQuestionsSetup extends createBaseClass({ componentName: componentName$q, baseSelector: 'div' }) {
18680
18803
  constructor() {
18681
18804
  super();
18682
18805
 
@@ -18784,7 +18907,7 @@ class RawSecurityQuestionsSetup extends createBaseClass({ componentName: compone
18784
18907
  return JSON.parse(this.getAttribute('questions')) || [];
18785
18908
  } catch (e) {
18786
18909
  // eslint-disable-next-line no-console
18787
- console.error(componentName$p, 'Error parsing questions attribute', e);
18910
+ console.error(componentName$q, 'Error parsing questions attribute', e);
18788
18911
  return [];
18789
18912
  }
18790
18913
  }
@@ -18891,9 +19014,9 @@ const SecurityQuestionsSetupClass = compose(
18891
19014
  componentNameValidationMixin
18892
19015
  )(RawSecurityQuestionsSetup);
18893
19016
 
18894
- customElements.define(componentName$p, SecurityQuestionsSetupClass);
19017
+ customElements.define(componentName$q, SecurityQuestionsSetupClass);
18895
19018
 
18896
- const componentName$o = getComponentName('security-questions-verify');
19019
+ const componentName$p = getComponentName('security-questions-verify');
18897
19020
 
18898
19021
  const textFieldsAttrs = [
18899
19022
  'full-width',
@@ -18917,7 +19040,7 @@ const attrMappings = {
18917
19040
  const attrsToSync = [...textFieldsAttrs, ...textsAttrs];
18918
19041
 
18919
19042
  const attrsToReRender = ['questions'];
18920
- class RawSecurityQuestionsVerify extends createBaseClass({ componentName: componentName$o, baseSelector: 'div' }) {
19043
+ class RawSecurityQuestionsVerify extends createBaseClass({ componentName: componentName$p, baseSelector: 'div' }) {
18921
19044
  constructor() {
18922
19045
  super();
18923
19046
 
@@ -18991,7 +19114,7 @@ class RawSecurityQuestionsVerify extends createBaseClass({ componentName: compon
18991
19114
  return JSON.parse(this.getAttribute('questions')) || [];
18992
19115
  } catch (e) {
18993
19116
  // eslint-disable-next-line no-console
18994
- console.error(componentName$o, 'Error parsing questions attribute', e);
19117
+ console.error(componentName$p, 'Error parsing questions attribute', e);
18995
19118
  return [];
18996
19119
  }
18997
19120
  }
@@ -19125,7 +19248,7 @@ const SecurityQuestionsVerifyClass = compose(
19125
19248
  componentNameValidationMixin
19126
19249
  )(RawSecurityQuestionsVerify);
19127
19250
 
19128
- customElements.define(componentName$o, SecurityQuestionsVerifyClass);
19251
+ customElements.define(componentName$p, SecurityQuestionsVerifyClass);
19129
19252
 
19130
19253
  // Matches any character that is not a digit, whitespace, or phone formatting character (+, -, (, ))
19131
19254
  const INVALID_PHONE_CHARS_RE = /[^\d\s+\-()]/;
@@ -19134,7 +19257,7 @@ const isNumericValue = (val) => !!val && !INVALID_PHONE_CHARS_RE.test(val);
19134
19257
 
19135
19258
  const sanitizeCountryCodePrefix = (val) => val.replace(/\+\d+-/, '');
19136
19259
 
19137
- const componentName$n = getComponentName('hybrid-field');
19260
+ const componentName$o = getComponentName('hybrid-field');
19138
19261
 
19139
19262
  const attrs = {
19140
19263
  shared: [
@@ -19200,12 +19323,12 @@ const EMAIL_FIELD = 'descope-email-field';
19200
19323
  const PHONE_FIELD = 'descope-phone-field';
19201
19324
  const PHONE_INPUT_BOX_FIELD = 'descope-phone-input-box-field';
19202
19325
 
19203
- const BaseClass$6 = createBaseClass({
19204
- componentName: componentName$n,
19326
+ const BaseClass$5 = createBaseClass({
19327
+ componentName: componentName$o,
19205
19328
  baseSelector: 'div',
19206
19329
  });
19207
19330
 
19208
- class RawHybridField extends BaseClass$6 {
19331
+ class RawHybridField extends BaseClass$5 {
19209
19332
  #isReportedValidity = false;
19210
19333
 
19211
19334
  #selectionStart;
@@ -19583,11 +19706,11 @@ const HybridFieldClass = compose(
19583
19706
  componentNameValidationMixin
19584
19707
  )(RawHybridField);
19585
19708
 
19586
- customElements.define(componentName$n, HybridFieldClass);
19709
+ customElements.define(componentName$o, HybridFieldClass);
19587
19710
 
19588
- const componentName$m = getComponentName('alert');
19711
+ const componentName$n = getComponentName('alert');
19589
19712
 
19590
- class RawAlert extends createBaseClass({ componentName: componentName$m, baseSelector: ':host > div' }) {
19713
+ class RawAlert extends createBaseClass({ componentName: componentName$n, baseSelector: ':host > div' }) {
19591
19714
  constructor() {
19592
19715
  super();
19593
19716
 
@@ -19708,13 +19831,13 @@ const AlertClass = compose(
19708
19831
  componentNameValidationMixin
19709
19832
  )(RawAlert);
19710
19833
 
19711
- customElements.define(componentName$m, AlertClass);
19834
+ customElements.define(componentName$n, AlertClass);
19712
19835
 
19713
- const componentName$l = getComponentName('hcaptcha');
19836
+ const componentName$m = getComponentName('hcaptcha');
19714
19837
 
19715
19838
  const observedAttributes$1 = ['enabled', 'site-key'];
19716
19839
 
19717
- const BaseInputClass$3 = createBaseInputClass({ componentName: componentName$l, baseSelector: ':host > div' });
19840
+ const BaseInputClass$3 = createBaseInputClass({ componentName: componentName$m, baseSelector: ':host > div' });
19718
19841
  class RawHcaptcha extends BaseInputClass$3 {
19719
19842
  static get observedAttributes() {
19720
19843
  return observedAttributes$1.concat(BaseInputClass$3.observedAttributes || []);
@@ -19842,7 +19965,7 @@ const HcaptchaClass = compose(
19842
19965
  componentNameValidationMixin
19843
19966
  )(RawHcaptcha);
19844
19967
 
19845
- customElements.define(componentName$l, HcaptchaClass);
19968
+ customElements.define(componentName$m, HcaptchaClass);
19846
19969
 
19847
19970
  const direction$1 = 'ltr';
19848
19971
 
@@ -20225,7 +20348,7 @@ const mode = {
20225
20348
 
20226
20349
  const [helperTheme$7, helperRefs$7, helperVars$6] = createHelperVars$1(
20227
20350
  { mode },
20228
- componentName$1d,
20351
+ componentName$1e,
20229
20352
  );
20230
20353
 
20231
20354
  const button = {
@@ -20527,7 +20650,7 @@ var enrichedText$1 = /*#__PURE__*/Object.freeze({
20527
20650
  vars: vars$12
20528
20651
  });
20529
20652
 
20530
- const componentName$k = getComponentName$1('input-wrapper');
20653
+ const componentName$l = getComponentName$1('input-wrapper');
20531
20654
  const globalRefs$D = getThemeRefs$1(globals);
20532
20655
 
20533
20656
  const [theme$2, refs$1] = createHelperVars$1(
@@ -20653,7 +20776,7 @@ const [theme$2, refs$1] = createHelperVars$1(
20653
20776
  backgroundColor: globalRefs$D.colors.surface.main,
20654
20777
  },
20655
20778
  },
20656
- componentName$k,
20779
+ componentName$l,
20657
20780
  );
20658
20781
 
20659
20782
  const globalRefs$C = getThemeRefs$1(globals);
@@ -20770,7 +20893,7 @@ const [helperTheme$6, helperRefs$6] = createHelperVars$1(
20770
20893
  {
20771
20894
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
20772
20895
  },
20773
- componentName$A,
20896
+ componentName$B,
20774
20897
  );
20775
20898
 
20776
20899
  const { shadowColor: shadowColor$6 } = helperRefs$6;
@@ -20813,18 +20936,26 @@ const badge = {
20813
20936
  },
20814
20937
  },
20815
20938
 
20816
- $breakpoints: {
20817
- indicator: '(max-width: 65px)',
20818
- },
20939
+ // Container Query example:
20940
+ // $breakpoints: {
20941
+ // indicator: '(max-width: 65px)',
20942
+ // },
20943
+ // _shrinkToIndicator: {
20944
+ // '$breakpoints.indicator': {
20945
+ // [vars.hostWidth]: '13px',
20946
+ // [vars.hostHeight]: '13px',
20947
+ // [vars.borderRadius]: '50%',
20948
+ // [vars.fontSize]: '0',
20949
+ // [vars.textIndent]: '-9999px',
20950
+ // },
20951
+ // },
20819
20952
 
20820
20953
  _shrinkToIndicator: {
20821
- '$breakpoints.indicator': {
20822
- [vars$10.hostWidth]: '13px',
20823
- [vars$10.hostHeight]: '13px',
20824
- [vars$10.borderRadius]: '50%',
20825
- [vars$10.fontSize]: '0',
20826
- [vars$10.textIndent]: '-9999px',
20827
- },
20954
+ [vars$10.hostWidth]: '13px',
20955
+ [vars$10.hostHeight]: '13px',
20956
+ [vars$10.borderRadius]: '50%',
20957
+ [vars$10.fontSize]: '0',
20958
+ [vars$10.textIndent]: '-9999px',
20828
20959
  },
20829
20960
 
20830
20961
  mode: {
@@ -20882,9 +21013,9 @@ var badge$1 = /*#__PURE__*/Object.freeze({
20882
21013
  vars: vars$10
20883
21014
  });
20884
21015
 
20885
- const componentName$j = getComponentName$1('avatar');
21016
+ const componentName$k = getComponentName$1('avatar');
20886
21017
  class RawAvatar extends createBaseClass$1({
20887
- componentName: componentName$j,
21018
+ componentName: componentName$k,
20888
21019
  baseSelector: ':host > .wrapper',
20889
21020
  }) {
20890
21021
  constructor() {
@@ -21065,7 +21196,7 @@ var image$1 = /*#__PURE__*/Object.freeze({
21065
21196
  vars: vars$Z
21066
21197
  });
21067
21198
 
21068
- const componentName$i = getComponentName$1('apps-list');
21199
+ const componentName$j = getComponentName$1('apps-list');
21069
21200
 
21070
21201
  const itemRenderer$3 = ({ name, icon, url }, _, ref) => `
21071
21202
  <a ${url ? `href="${url}" title="${url}"` : ''} ${ref.openInSameWindow ? '' : 'target="_blank"'}>
@@ -21189,7 +21320,7 @@ const AppsListClass = compose$1(
21189
21320
  slots: ['empty-state'],
21190
21321
  wrappedEleName: 'descope-list',
21191
21322
  excludeAttrsSync: ['tabindex', 'class', 'empty', 'style'],
21192
- componentName: componentName$i,
21323
+ componentName: componentName$j,
21193
21324
  style: () => `
21194
21325
  :host {
21195
21326
  width: 100%;
@@ -21294,7 +21425,7 @@ const compVars$7 = ListClass.cssVarList;
21294
21425
 
21295
21426
  const [helperTheme$5, helperRefs$5, helperVars$5] = createHelperVars$1(
21296
21427
  { shadowColor: '#00000020' },
21297
- componentName$r,
21428
+ componentName$s,
21298
21429
  );
21299
21430
 
21300
21431
  const { shadowColor: shadowColor$5 } = helperRefs$5;
@@ -21409,10 +21540,10 @@ var listItem$1 = /*#__PURE__*/Object.freeze({
21409
21540
  vars: vars$W
21410
21541
  });
21411
21542
 
21412
- const componentName$h = getComponentName$1('autocomplete-field-internal');
21543
+ const componentName$i = getComponentName$1('autocomplete-field-internal');
21413
21544
 
21414
21545
  const BaseInputClass$2 = createBaseInputClass$1({
21415
- componentName: componentName$h,
21546
+ componentName: componentName$i,
21416
21547
  baseSelector: '',
21417
21548
  });
21418
21549
  const observedAttrs$2 = [];
@@ -21617,7 +21748,7 @@ class AutocompleteFieldInternal extends BaseInputClass$2 {
21617
21748
  }
21618
21749
  }
21619
21750
 
21620
- const componentName$g = getComponentName$1('autocomplete-field');
21751
+ const componentName$h = getComponentName$1('autocomplete-field');
21621
21752
 
21622
21753
  const customMixin$2 = (superclass) =>
21623
21754
  class AutocompleteFieldMixinClass extends superclass {
@@ -21638,15 +21769,15 @@ const customMixin$2 = (superclass) =>
21638
21769
  const template = document.createElement('template');
21639
21770
 
21640
21771
  template.innerHTML = `
21641
- <${componentName$h}
21772
+ <${componentName$i}
21642
21773
  tabindex="-1"
21643
- ></${componentName$h}>
21774
+ ></${componentName$i}>
21644
21775
  `;
21645
21776
 
21646
21777
  this.baseElement.appendChild(template.content.cloneNode(true));
21647
21778
 
21648
21779
  this.inputElement = this.shadowRoot.querySelector(
21649
- componentName$h,
21780
+ componentName$i,
21650
21781
  );
21651
21782
 
21652
21783
  forwardAttrs$1(this, this.inputElement, {
@@ -21765,7 +21896,7 @@ const AutocompleteFieldClass = compose$1(
21765
21896
  }
21766
21897
  `,
21767
21898
  excludeAttrsSync: ['tabindex', 'error-message', 'label', 'style'],
21768
- componentName: componentName$g,
21899
+ componentName: componentName$h,
21769
21900
  }),
21770
21901
  );
21771
21902
 
@@ -22019,7 +22150,7 @@ class RadarConnector extends createBaseConnectorClass() {
22019
22150
  }
22020
22151
  }
22021
22152
 
22022
- const componentName$f = getComponentName$1('address-field-internal');
22153
+ const componentName$g = getComponentName$1('address-field-internal');
22023
22154
 
22024
22155
  const GOOGLE_MAPS_CONNECTOR_TEMPLATE = 'google-maps-places';
22025
22156
  const RADAR_CONNECTOR_TEMPLATE = 'radar';
@@ -22030,7 +22161,7 @@ const CONNECTOR_CLASSES = {
22030
22161
  };
22031
22162
 
22032
22163
  const BaseInputClass$1 = createBaseInputClass$1({
22033
- componentName: componentName$f,
22164
+ componentName: componentName$g,
22034
22165
  baseSelector: '',
22035
22166
  });
22036
22167
  const initConnectorAttrs = ['public-api-key'];
@@ -22137,7 +22268,7 @@ const AddressFieldInternal = compose$1(
22137
22268
  connectorMixin({ connectorClasses: CONNECTOR_CLASSES }),
22138
22269
  )(RawAddressFieldInternal);
22139
22270
 
22140
- const componentName$e = getComponentName$1('address-field');
22271
+ const componentName$f = getComponentName$1('address-field');
22141
22272
 
22142
22273
  const customMixin$1 = (superclass) =>
22143
22274
  class AddressFieldMixinClass extends superclass {
@@ -22166,15 +22297,15 @@ const customMixin$1 = (superclass) =>
22166
22297
  const template = document.createElement('template');
22167
22298
 
22168
22299
  template.innerHTML = `
22169
- <${componentName$f}
22300
+ <${componentName$g}
22170
22301
  tabindex="-1"
22171
- ></${componentName$f}>
22302
+ ></${componentName$g}>
22172
22303
  `;
22173
22304
 
22174
22305
  this.baseElement.appendChild(template.content.cloneNode(true));
22175
22306
 
22176
22307
  this.inputElement = this.shadowRoot.querySelector(
22177
- componentName$f,
22308
+ componentName$g,
22178
22309
  );
22179
22310
 
22180
22311
  forwardAttrs$1(this, this.inputElement, {
@@ -22252,7 +22383,7 @@ const AddressFieldClass = compose$1(
22252
22383
  width: 100%;
22253
22384
  }
22254
22385
 
22255
- ${componentName$f} {
22386
+ ${componentName$g} {
22256
22387
  display: inline-block;
22257
22388
  box-sizing: border-box;
22258
22389
  user-select: none;
@@ -22260,12 +22391,12 @@ const AddressFieldClass = compose$1(
22260
22391
  max-width: 100%;
22261
22392
  }
22262
22393
 
22263
- ${componentName$f} ::slotted {
22394
+ ${componentName$g} ::slotted {
22264
22395
  padding: 0;
22265
22396
  }
22266
22397
  `,
22267
22398
  excludeAttrsSync: ['tabindex', 'error-message', 'label', 'style'],
22268
- componentName: componentName$e,
22399
+ componentName: componentName$f,
22269
22400
  }),
22270
22401
  );
22271
22402
 
@@ -22305,24 +22436,24 @@ const formatTime = (ms = 0) => {
22305
22436
  return timeParts.join(':');
22306
22437
  };
22307
22438
 
22308
- const componentName$d = getComponentName$1('timer');
22439
+ const componentName$e = getComponentName$1('timer');
22309
22440
 
22310
22441
  const observedAttributes = ['seconds', 'hide-icon', 'paused'];
22311
22442
 
22312
- const BaseClass$5 = createBaseClass$1({
22313
- componentName: componentName$d,
22443
+ const BaseClass$4 = createBaseClass$1({
22444
+ componentName: componentName$e,
22314
22445
  baseSelector: ':host > .wrapper',
22315
22446
  });
22316
22447
 
22317
22448
  const DEFAULT_INTERVAL = 1000;
22318
22449
 
22319
- class RawTimer extends BaseClass$5 {
22450
+ class RawTimer extends BaseClass$4 {
22320
22451
  #timeRemains = 0;
22321
22452
 
22322
22453
  #intervalId;
22323
22454
 
22324
22455
  static get observedAttributes() {
22325
- return observedAttributes.concat(BaseClass$5.observedAttributes || []);
22456
+ return observedAttributes.concat(BaseClass$4.observedAttributes || []);
22326
22457
  }
22327
22458
 
22328
22459
  constructor() {
@@ -22531,7 +22662,7 @@ var timer$1 = /*#__PURE__*/Object.freeze({
22531
22662
  vars: vars$T
22532
22663
  });
22533
22664
 
22534
- const componentName$c = getComponentName$1('timer-button');
22665
+ const componentName$d = getComponentName$1('timer-button');
22535
22666
 
22536
22667
  const buttonAttrs = [
22537
22668
  'button-variant',
@@ -22561,12 +22692,12 @@ const mapTimerAttrs = {
22561
22692
  'timer-paused': 'paused',
22562
22693
  };
22563
22694
 
22564
- const BaseClass$4 = createBaseClass$1({
22565
- componentName: componentName$c,
22695
+ const BaseClass$3 = createBaseClass$1({
22696
+ componentName: componentName$d,
22566
22697
  baseSelector: ':host > div',
22567
22698
  });
22568
22699
 
22569
- class RawTimerButton extends BaseClass$4 {
22700
+ class RawTimerButton extends BaseClass$3 {
22570
22701
  constructor() {
22571
22702
  super();
22572
22703
 
@@ -22817,9 +22948,9 @@ var timerButton$1 = /*#__PURE__*/Object.freeze({
22817
22948
  vars: vars$S
22818
22949
  });
22819
22950
 
22820
- const componentName$b = getComponentName$1('password-strength');
22951
+ const componentName$c = getComponentName$1('password-strength');
22821
22952
  class RawPasswordStrength extends createBaseClass$1({
22822
- componentName: componentName$b,
22953
+ componentName: componentName$c,
22823
22954
  baseSelector: ':host > .wrapper',
22824
22955
  }) {
22825
22956
  static get observedAttributes() {
@@ -23022,10 +23153,10 @@ var passwordStrength$1 = /*#__PURE__*/Object.freeze({
23022
23153
 
23023
23154
  var chevronIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iYmxhY2siIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xNy4yMTkzIDkuMjcyODNDMTcuNjU4NCA4Ljg3OTEyIDE4LjMzMzQgOC45MTU4NyAxOC43MjcyIDkuMzU0OTJDMTkuMTIwOSA5Ljc5Mzk3IDE5LjA4NDEgMTAuNDY5MSAxOC42NDUxIDEwLjg2MjhDMTguNjQ1MSAxMC44NjI4IDEzLjA0NTcgMTYuMDAyMiAxMi42NCAxNi4zNjZDMTIuMjM0MyAxNi43Mjk4IDExLjc2MDggMTYuNzI5OCAxMS4zNTUyIDE2LjM2Nkw1LjM1NDkyIDEwLjg2MjhDNC45MTU4NyAxMC40NjkxIDQuODc5MTIgOS43OTM5NyA1LjI3MjgzIDkuMzU0OTJDNS42NjY1NSA4LjkxNTg3IDYuMzQxNjQgOC44NzkxMiA2Ljc4MDY5IDkuMjcyODNMMTIgMTQuMTM2OEwxNy4yMTkzIDkuMjcyODNaIi8+Cjwvc3ZnPgo=";
23024
23155
 
23025
- const componentName$a = getComponentName$1('collapsible-container');
23156
+ const componentName$b = getComponentName$1('collapsible-container');
23026
23157
 
23027
23158
  class RawCollapsibleContainer extends createBaseClass$1({
23028
- componentName: componentName$a,
23159
+ componentName: componentName$b,
23029
23160
  baseSelector: 'slot',
23030
23161
  }) {
23031
23162
  static get observedAttributes() {
@@ -23260,7 +23391,7 @@ const [helperTheme$4, helperRefs$4, helperVars$4] = createHelperVars$1(
23260
23391
  {
23261
23392
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
23262
23393
  },
23263
- componentName$a
23394
+ componentName$b
23264
23395
  );
23265
23396
 
23266
23397
  const { shadowColor: shadowColor$4 } = helperRefs$4;
@@ -23371,7 +23502,7 @@ var collapsibleContainer$1 = /*#__PURE__*/Object.freeze({
23371
23502
  vars: vars$Q
23372
23503
  });
23373
23504
 
23374
- const componentName$9 = getComponentName$1('recovery-codes');
23505
+ const componentName$a = getComponentName$1('recovery-codes');
23375
23506
 
23376
23507
  const itemRenderer$2 = ({ value }, _, ref) => {
23377
23508
  return `
@@ -23382,7 +23513,7 @@ const itemRenderer$2 = ({ value }, _, ref) => {
23382
23513
  };
23383
23514
 
23384
23515
  class RawRecoveryCodes extends createBaseClass$1({
23385
- componentName: componentName$9,
23516
+ componentName: componentName$a,
23386
23517
  baseSelector: ':host > div',
23387
23518
  }) {
23388
23519
  static get observedAttributes() {
@@ -23550,7 +23681,7 @@ var recoveryCodes$1 = /*#__PURE__*/Object.freeze({
23550
23681
  vars: vars$P
23551
23682
  });
23552
23683
 
23553
- const componentName$8 = getComponentName$1('outbound-apps');
23684
+ const componentName$9 = getComponentName$1('outbound-apps');
23554
23685
 
23555
23686
  const itemRenderer$1 = (
23556
23687
  { name, description, logo, appId, isConnected },
@@ -23595,12 +23726,12 @@ const itemRenderer$1 = (
23595
23726
  `;
23596
23727
  };
23597
23728
 
23598
- const BaseClass$3 = createBaseClass$1({
23599
- componentName: componentName$8,
23729
+ const BaseClass$2 = createBaseClass$1({
23730
+ componentName: componentName$9,
23600
23731
  baseSelector: 'descope-list',
23601
23732
  });
23602
23733
 
23603
- class RawOutboundAppsClass extends BaseClass$3 {
23734
+ class RawOutboundAppsClass extends BaseClass$2 {
23604
23735
  constructor() {
23605
23736
  super();
23606
23737
 
@@ -23812,10 +23943,10 @@ var outboundApps$1 = /*#__PURE__*/Object.freeze({
23812
23943
  vars: vars$O
23813
23944
  });
23814
23945
 
23815
- const componentName$7 = getComponentName$1('outbound-app-button');
23946
+ const componentName$8 = getComponentName$1('outbound-app-button');
23816
23947
 
23817
23948
  class RawOutboundAppButton extends createBaseClass$1({
23818
- componentName: componentName$7,
23949
+ componentName: componentName$8,
23819
23950
  baseSelector: ':host > descope-button',
23820
23951
  }) {
23821
23952
  static get observedAttributes() {
@@ -23997,7 +24128,7 @@ const getDeviceIcon = (deviceType) => {
23997
24128
  };
23998
24129
  };
23999
24130
 
24000
- const componentName$6 = getComponentName$1('trusted-devices');
24131
+ const componentName$7 = getComponentName$1('trusted-devices');
24001
24132
 
24002
24133
  const itemRenderer = (
24003
24134
  { id, name, lastLoginDate, deviceType, isCurrent },
@@ -24085,12 +24216,12 @@ const itemRenderer = (
24085
24216
  return template;
24086
24217
  };
24087
24218
 
24088
- const BaseClass$2 = createBaseClass$1({
24089
- componentName: componentName$6,
24219
+ const BaseClass$1 = createBaseClass$1({
24220
+ componentName: componentName$7,
24090
24221
  baseSelector: ListClass.componentName,
24091
24222
  });
24092
24223
 
24093
- class RawTrustedDevicesClass extends BaseClass$2 {
24224
+ class RawTrustedDevicesClass extends BaseClass$1 {
24094
24225
  constructor() {
24095
24226
  super();
24096
24227
 
@@ -24420,7 +24551,7 @@ var trustedDevices = /*#__PURE__*/Object.freeze({
24420
24551
  vars: vars$M
24421
24552
  });
24422
24553
 
24423
- const componentName$5 = getComponentName$1('tooltip');
24554
+ const componentName$6 = getComponentName$1('tooltip');
24424
24555
 
24425
24556
  const tooltipAttrs = [
24426
24557
  'text',
@@ -24430,14 +24561,26 @@ const tooltipAttrs = [
24430
24561
  'opened',
24431
24562
  ];
24432
24563
 
24433
- const BaseClass$1 = createBaseClass$1({
24434
- componentName: componentName$5,
24564
+ class RawTooltip extends createBaseClass$1({
24565
+ componentName: componentName$6,
24435
24566
  baseSelector: 'vaadin-tooltip',
24436
- });
24567
+ }) {
24568
+ constructor() {
24569
+ super();
24570
+
24571
+ this.attachShadow({ mode: 'open' }).innerHTML = `
24572
+ <descope-anchored>
24573
+ <slot></slot>
24574
+ <vaadin-tooltip slot="anchored"></vaadin-tooltip>
24575
+ </descope-anchored>
24576
+ `;
24577
+
24578
+ this.defaultSlot = this.shadowRoot.querySelector('slot:not([name])');
24579
+ this.tooltip = this.shadowRoot.querySelector('vaadin-tooltip');
24580
+ }
24437
24581
 
24438
- class RawTooltip extends BaseClass$1 {
24439
24582
  static get observedAttributes() {
24440
- return tooltipAttrs.concat(BaseClass$1.observedAttributes || []);
24583
+ return tooltipAttrs.concat(super.observedAttributes || []);
24441
24584
  }
24442
24585
 
24443
24586
  get isOpened() {
@@ -24460,51 +24603,81 @@ class RawTooltip extends BaseClass$1 {
24460
24603
  return this.getAttribute('static-display') === 'true';
24461
24604
  }
24462
24605
 
24606
+ get srLabel() {
24607
+ return this.tooltip?.querySelector('[slot="sr-label"]');
24608
+ }
24609
+
24463
24610
  // We use `static-display` for presentation purposes, to show the tooltip content.
24464
24611
  // This should be used only when `opened` is `true`. Once `static-display` is set,
24465
- // the overlay would become a `static` element, and will have layout in the presenting page.
24466
- // This is mainly aimed to solve the presentation problem on our Styles Page in the Console.
24612
+ // the overlay flows in-line and has layout in the presenting page. Mainly aimed
24613
+ // to solve the presentation problem on our Styles Page in the Console.
24467
24614
  #handleStaticDisplay() {
24468
24615
  if (this.isStaticDisplay) {
24469
- this.#revealWrappedParts();
24616
+ this.#revealOverlay();
24470
24617
  this.setAttribute('inert', 'true');
24471
24618
  } else {
24472
- this.#hideWrappedParts();
24473
24619
  this.removeAttribute('inert');
24474
24620
  }
24475
24621
  }
24476
24622
 
24477
- init() {
24478
- super.init();
24623
+ #revealOverlay() {
24624
+ if (!this.overlay) return;
24625
+ // Keep the overlay in vaadin-tooltip.shadowRoot so adopted stylesheets from
24626
+ // portalMixin continue to apply (they are scoped to that shadow root).
24627
+ // Layout is handled via CSS: anchored-root becomes a column, vaadin-tooltip
24628
+ // becomes a visible block below the anchor, and the sr-label is hidden.
24629
+ this.overlay.style.display = 'block';
24630
+ this.overlay.style.position = 'static';
24631
+ }
24479
24632
 
24480
- // Create the vaadin-tooltip here instead of constructor (for React compatibility)
24481
- this.style.display = 'contents';
24482
- this.insertAdjacentHTML('beforeend', '<vaadin-tooltip></vaadin-tooltip>');
24483
- this.tooltip = this.querySelector('vaadin-tooltip');
24633
+ init() {
24634
+ super.init?.();
24484
24635
 
24485
- this.#hideWrappedParts();
24636
+ injectStyle(
24637
+ `
24638
+ :host {
24639
+ display: inline-block;
24640
+ }
24641
+ vaadin-tooltip {
24642
+ display: block;
24643
+ position: absolute;
24644
+ width: 0;
24645
+ height: 0;
24646
+ overflow: hidden;
24647
+ }
24648
+ /* Stack anchor above the anchored element so the tooltip flows below it inline. */
24649
+ :host([static-display="true"]) descope-anchored::part(root) {
24650
+ flex-direction: column;
24651
+ }
24652
+ :host([static-display="true"]) descope-anchored::part(anchored) {
24653
+ position: static;
24654
+ inset: unset;
24655
+ }
24656
+ :host([static-display="true"]) vaadin-tooltip {
24657
+ position: static;
24658
+ width: auto;
24659
+ height: auto;
24660
+ overflow: visible;
24661
+ }
24662
+ :host([static-display="true"]) vaadin-tooltip [slot="sr-label"] {
24663
+ display: none;
24664
+ }
24665
+ `,
24666
+ this,
24667
+ );
24486
24668
 
24669
+ this.defaultSlot.addEventListener('slotchange', () =>
24670
+ this.#setTooltipTarget(),
24671
+ );
24487
24672
  this.#setTooltipTarget();
24488
24673
 
24489
24674
  setTimeout(() => this.#onOverlayReady());
24490
24675
  }
24491
24676
 
24492
- #hideWrappedParts() {
24493
- this.tooltip.style.width = '0';
24494
- this.tooltip.style.height = '0';
24495
- this.tooltip.style.display = 'block';
24496
- this.tooltip.style.overflow = 'hidden';
24497
- this.tooltip.style.position = 'absolute';
24498
- }
24499
-
24500
- #revealWrappedParts() {
24501
- this.tooltip.style.width = '100%';
24502
- this.tooltip.style.height = '100%';
24503
- this.tooltip.style.position = 'static';
24504
- this.tooltip.style.overflow = 'visible';
24505
- this.tooltip.textContent = '';
24506
- this.overlay.style.display = 'block';
24507
- this.overlay.style.position = 'static';
24677
+ #setTooltipTarget() {
24678
+ const target = this.defaultSlot?.assignedElements()?.[0];
24679
+ if (!target) return;
24680
+ this.tooltip.target = target;
24508
24681
  }
24509
24682
 
24510
24683
  #onOverlayReady() {
@@ -24518,16 +24691,6 @@ class RawTooltip extends BaseClass$1 {
24518
24691
  this.#handleTooltipVisibility();
24519
24692
  }
24520
24693
 
24521
- #setTooltipTarget() {
24522
- if (!this.children?.length) return;
24523
-
24524
- let ele = Array.from(this.children).find((child) => child !== this.tooltip);
24525
-
24526
- if (!ele) return;
24527
-
24528
- this.tooltip.target = ele;
24529
- }
24530
-
24531
24694
  #clearOverlayContentNode() {
24532
24695
  this.overlayContentNode.innerHTML = '';
24533
24696
  }
@@ -24541,10 +24704,6 @@ class RawTooltip extends BaseClass$1 {
24541
24704
  return enrichedText;
24542
24705
  }
24543
24706
 
24544
- get srLabel() {
24545
- return this.tooltip?.querySelector('[slot="sr-label"]');
24546
- }
24547
-
24548
24707
  #initTooltipTextComponent() {
24549
24708
  if (!this.overlayContentNode) return;
24550
24709
 
@@ -24567,25 +24726,35 @@ class RawTooltip extends BaseClass$1 {
24567
24726
  });
24568
24727
  }
24569
24728
 
24570
- // the default vaadin behavior is to attach the overlay to the body when opened
24571
- // we do not want that because it's difficult to style the overlay in this way
24572
- // so we override it to open inside the shadow DOM
24729
+ // The default vaadin behavior is to attach the overlay to the body when opened,
24730
+ // which makes it hard to style. We move the overlay into our shadow root instead.
24731
+ // Critical: vaadin computes position against the overlay's offsetParent moving
24732
+ // it changes that context, so we must call `_updatePosition()` afterwards.
24733
+ // That's vaadin's own position-recompute method (the same one its resize/scroll
24734
+ // listeners use internally), so we get the right reposition without dispatching
24735
+ // global events.
24573
24736
  #overrideAttachOverlay() {
24574
24737
  if (!this.overlay) return;
24575
24738
 
24576
- if (this.isOpened) {
24577
- // When `opened` attr is used, vaadin doesn't execute `_attachOverlay`,
24578
- // and the overlay element is rendered outside the component, on the top
24579
- // level. We need to move it back to the local component's DOM.
24739
+ const originalAttach = this.overlay._attachOverlay?.bind(this.overlay);
24740
+
24741
+ this.overlay._detachOverlay = () => {};
24742
+ this.overlay._attachOverlay = () => {
24743
+ originalAttach?.();
24580
24744
  setTimeout(() => {
24581
24745
  this.tooltip.shadowRoot.appendChild(this.overlay);
24582
- this.#handleStaticDisplay();
24746
+ this.overlay._updatePosition?.();
24583
24747
  });
24584
- } else {
24585
- this.overlay._detachOverlay = () => {};
24748
+ };
24586
24749
 
24587
- this.overlay._attachOverlay = () =>
24750
+ if (this.isOpened) {
24751
+ // When `opened` attr is set at init, vaadin renders the overlay at the top
24752
+ // level without calling `_attachOverlay`. Move it back into our shadow root.
24753
+ setTimeout(() => {
24588
24754
  this.tooltip.shadowRoot.appendChild(this.overlay);
24755
+ this.#handleStaticDisplay();
24756
+ this.overlay._updatePosition?.();
24757
+ });
24589
24758
  }
24590
24759
  }
24591
24760
 
@@ -24627,11 +24796,6 @@ const { overlay, content } = {
24627
24796
  content: { selector: () => 'vaadin-tooltip-overlay::part(content)' },
24628
24797
  };
24629
24798
 
24630
- /**
24631
- * This component has no Shadow DOM of its own, so we can't add styles to it
24632
- * (otherwise it would affect the rest of the DOM).
24633
- * Note that all styles are within PortalMixin.
24634
- */
24635
24799
  const TooltipClass = compose$1(
24636
24800
  componentNameValidationMixin$1,
24637
24801
  portalMixin$1({
@@ -24686,7 +24850,7 @@ const [helperTheme$3, helperRefs$3, helperVars$3] = createHelperVars$1(
24686
24850
  {
24687
24851
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
24688
24852
  },
24689
- componentName$5
24853
+ componentName$6
24690
24854
  );
24691
24855
 
24692
24856
  const { shadowColor: shadowColor$3 } = helperRefs$3;
@@ -24784,7 +24948,7 @@ const fetchLabels = async (baseUrl) => {
24784
24948
  const fetchCitiesForCountry = async (countryIso2, baseUrl) =>
24785
24949
  fetchJson(`${baseUrl}/countries/${countryIso2}/cities.json`);
24786
24950
 
24787
- const componentName$4 = getComponentName$1(
24951
+ const componentName$5 = getComponentName$1(
24788
24952
  'country-subdivision-city-field-internal',
24789
24953
  );
24790
24954
 
@@ -24844,7 +25008,7 @@ const comboBoxHTML = (id) =>
24844
25008
  // --- Base class ---
24845
25009
 
24846
25010
  const BaseInputClass = createBaseInputClass$1({
24847
- componentName: componentName$4,
25011
+ componentName: componentName$5,
24848
25012
  baseSelector: '',
24849
25013
  });
24850
25014
 
@@ -25020,7 +25184,7 @@ class RawCountrySubdivisionCityFieldInternal extends BaseInputClass {
25020
25184
  if (e.isTrusted) {
25021
25185
  const firstInvalidCombo = this.#allCombos.find(
25022
25186
  (combo) =>
25023
- !combo.classList.contains(`${componentName$4}-hidden`) &&
25187
+ !combo.classList.contains(`${componentName$5}-hidden`) &&
25024
25188
  !combo.checkValidity(),
25025
25189
  );
25026
25190
  (firstInvalidCombo || this.#getFirstVisibleCombo())?.focus();
@@ -25117,7 +25281,7 @@ class RawCountrySubdivisionCityFieldInternal extends BaseInputClass {
25117
25281
  // Iterate in reverse so reportValidity's focus() lands on the first invalid combo last.
25118
25282
  #handleInvalidCombos() {
25119
25283
  for (const combo of [...this.#allCombos].reverse()) {
25120
- if (combo.classList.contains(`${componentName$4}-hidden`)) continue;
25284
+ if (combo.classList.contains(`${componentName$5}-hidden`)) continue;
25121
25285
  if (!combo.checkValidity()) combo.reportValidity();
25122
25286
  }
25123
25287
  }
@@ -25390,7 +25554,7 @@ class RawCountrySubdivisionCityFieldInternal extends BaseInputClass {
25390
25554
  if (!this.#pendingValue && this.#defaultCountry)
25391
25555
  this.#onCountrySelected(this.#defaultCountry);
25392
25556
  } catch (e) {
25393
- console.error(`[${componentName$4}] Failed to load countries`, e);
25557
+ console.error(`[${componentName$5}] Failed to load countries`, e);
25394
25558
  } finally {
25395
25559
  this.#countryComboBox.removeAttribute('loading');
25396
25560
  }
@@ -25415,7 +25579,7 @@ class RawCountrySubdivisionCityFieldInternal extends BaseInputClass {
25415
25579
  }
25416
25580
  } catch (e) {
25417
25581
  console.error(
25418
- `[${componentName$4}] Failed to load subdivisions for ${countryIso2}`,
25582
+ `[${componentName$5}] Failed to load subdivisions for ${countryIso2}`,
25419
25583
  e,
25420
25584
  );
25421
25585
  this.#subdivisionVisible = false;
@@ -25443,7 +25607,7 @@ class RawCountrySubdivisionCityFieldInternal extends BaseInputClass {
25443
25607
  }
25444
25608
  } catch (e) {
25445
25609
  console.error(
25446
- `[${componentName$4}] Failed to load cities for ${countryIso2}${stateCode ? `/${stateCode}` : ''}`,
25610
+ `[${componentName$5}] Failed to load cities for ${countryIso2}${stateCode ? `/${stateCode}` : ''}`,
25447
25611
  e,
25448
25612
  );
25449
25613
  } finally {
@@ -25535,7 +25699,7 @@ class RawCountrySubdivisionCityFieldInternal extends BaseInputClass {
25535
25699
  }
25536
25700
 
25537
25701
  #setVisible(el, visible) {
25538
- el?.classList.toggle(`${componentName$4}-hidden`, !visible);
25702
+ el?.classList.toggle(`${componentName$5}-hidden`, !visible);
25539
25703
  }
25540
25704
 
25541
25705
  #updateRequiredOnCombos() {
@@ -25605,7 +25769,7 @@ class RawCountrySubdivisionCityFieldInternal extends BaseInputClass {
25605
25769
 
25606
25770
  #getFirstVisibleCombo() {
25607
25771
  return this.#allCombos.find(
25608
- (combo) => !combo.classList.contains(`${componentName$4}-hidden`),
25772
+ (combo) => !combo.classList.contains(`${componentName$5}-hidden`),
25609
25773
  );
25610
25774
  }
25611
25775
 
@@ -25622,7 +25786,7 @@ const CountrySubdivisionCityFieldInternal = compose$1()(
25622
25786
  RawCountrySubdivisionCityFieldInternal,
25623
25787
  );
25624
25788
 
25625
- const componentName$3 = getComponentName$1('country-subdivision-city-field');
25789
+ const componentName$4 = getComponentName$1('country-subdivision-city-field');
25626
25790
 
25627
25791
  const customMixin = (superclass) =>
25628
25792
  class CountrySubdivisionCityFieldMixinClass extends superclass {
@@ -25632,15 +25796,15 @@ const customMixin = (superclass) =>
25632
25796
  const template = document.createElement('template');
25633
25797
 
25634
25798
  template.innerHTML = `
25635
- <${componentName$4}
25799
+ <${componentName$5}
25636
25800
  tabindex="-1"
25637
- ></${componentName$4}>
25801
+ ></${componentName$5}>
25638
25802
  `;
25639
25803
 
25640
25804
  this.baseElement.appendChild(template.content.cloneNode(true));
25641
25805
 
25642
25806
  this.inputElement = this.shadowRoot.querySelector(
25643
- componentName$4,
25807
+ componentName$5,
25644
25808
  );
25645
25809
 
25646
25810
  forwardAttrs$1(this, this.inputElement, {
@@ -25677,11 +25841,11 @@ const customMixin = (superclass) =>
25677
25841
  const host = { selector: () => ':host' };
25678
25842
 
25679
25843
  const internalWrapper = {
25680
- selector: `${componentName$4} > .wrapper`,
25844
+ selector: `${componentName$5} > .wrapper`,
25681
25845
  };
25682
25846
 
25683
25847
  const internalComboBoxes = {
25684
- selector: `${componentName$4} > .wrapper > descope-combo-box`,
25848
+ selector: `${componentName$5} > .wrapper > descope-combo-box`,
25685
25849
  };
25686
25850
 
25687
25851
  const CountrySubdivisionCityFieldClass = compose$1(
@@ -25731,7 +25895,7 @@ const CountrySubdivisionCityFieldClass = compose$1(
25731
25895
  width: 100%;
25732
25896
  }
25733
25897
 
25734
- ${componentName$4} {
25898
+ ${componentName$5} {
25735
25899
  display: inline-block;
25736
25900
  box-sizing: border-box;
25737
25901
  user-select: none;
@@ -25739,19 +25903,19 @@ const CountrySubdivisionCityFieldClass = compose$1(
25739
25903
  max-width: 100%;
25740
25904
  }
25741
25905
 
25742
- ${componentName$4} > .wrapper {
25906
+ ${componentName$5} > .wrapper {
25743
25907
  display: flex;
25744
25908
  width: 100%;
25745
25909
  flex-wrap: wrap;
25746
25910
  }
25747
25911
 
25748
- .${componentName$4}-hidden {
25912
+ .${componentName$5}-hidden {
25749
25913
  display: none;
25750
25914
  }
25751
25915
 
25752
25916
  `,
25753
25917
  excludeAttrsSync: ['tabindex', 'style', 'error-message'],
25754
- componentName: componentName$3,
25918
+ componentName: componentName$4,
25755
25919
  }),
25756
25920
  );
25757
25921
 
@@ -25782,7 +25946,7 @@ var countrySubdivisionCityField$1 = /*#__PURE__*/Object.freeze({
25782
25946
  vars: vars$K
25783
25947
  });
25784
25948
 
25785
- const componentName$2 = getComponentName$1('attachment');
25949
+ const componentName$3 = getComponentName$1('attachment');
25786
25950
 
25787
25951
  const ATTACHMENT_POSITIONS = [
25788
25952
  'top-end',
@@ -25796,19 +25960,19 @@ const ATTACHMENT_POSITIONS = [
25796
25960
  const DEFAULT_POSITION = ATTACHMENT_POSITIONS[0];
25797
25961
 
25798
25962
  class RawAttachment extends createBaseClass$1({
25799
- componentName: componentName$2,
25800
- baseSelector: ':host > .wrapper',
25963
+ componentName: componentName$3,
25964
+ baseSelector: 'descope-anchored',
25801
25965
  }) {
25802
25966
  constructor() {
25803
25967
  super();
25804
25968
 
25805
25969
  this.attachShadow({ mode: 'open' }).innerHTML = `
25806
- <div class="wrapper">
25970
+ <descope-anchored>
25807
25971
  <slot></slot>
25808
- <div class="attachment-container">
25972
+ <div slot="anchored" class="attachment-container">
25809
25973
  <slot name="attachment"></slot>
25810
25974
  </div>
25811
- </div>
25975
+ </descope-anchored>
25812
25976
  `;
25813
25977
 
25814
25978
  this.defaultSlot = this.shadowRoot.querySelector('slot:not([name])');
@@ -25817,6 +25981,10 @@ class RawAttachment extends createBaseClass$1({
25817
25981
  );
25818
25982
  }
25819
25983
 
25984
+ get #attachment() {
25985
+ return this.attachmentSlot?.assignedElements()[0];
25986
+ }
25987
+
25820
25988
  static get observedAttributes() {
25821
25989
  return [...(super.observedAttributes || []), 'position'];
25822
25990
  }
@@ -25836,9 +26004,8 @@ class RawAttachment extends createBaseClass$1({
25836
26004
  :host {
25837
26005
  display: inline-block;
25838
26006
  }
25839
- .wrapper {
25840
- position: relative;
25841
- display: inline-flex;
26007
+ :host(.hidden) {
26008
+ display: none;
25842
26009
  }
25843
26010
  .attachment-container {
25844
26011
  position: absolute;
@@ -25849,24 +26016,43 @@ class RawAttachment extends createBaseClass$1({
25849
26016
  align-items: center;
25850
26017
  container-type: inline-size;
25851
26018
  }
25852
- :host(.hidden) {
25853
- display: none;
25854
- }
25855
- `,
26019
+ `,
25856
26020
  this,
25857
26021
  );
25858
26022
 
25859
26023
  this.#handlePositionChange();
25860
26024
 
25861
- this.defaultSlot.addEventListener('slotchange', () => {
25862
- this.#setVisibility();
25863
- this.#syncDirection();
26025
+ // When descope-anchored forwards st-host-direction from the anchor to this container,
26026
+ // propagate it to the attachment elements.
26027
+ const container = this.shadowRoot.querySelector('.attachment-container');
26028
+ observeAttributes$1(container, () => this.#syncDirection(), {
26029
+ includeAttrs: ['st-host-direction'],
25864
26030
  });
25865
26031
 
25866
- window.requestAnimationFrame(() => {
26032
+ // Re-sync direction when new elements are slotted into the attachment slot.
26033
+ this.attachmentSlot.addEventListener('slotchange', () =>
26034
+ this.#syncDirection(),
26035
+ );
26036
+
26037
+ this.defaultSlot.addEventListener('slotchange', () => {
25867
26038
  this.#setVisibility();
25868
- this.#syncDirection();
26039
+ window.requestAnimationFrame(() => this.#syncAvailableSizeAttr());
25869
26040
  });
26041
+
26042
+ window.requestAnimationFrame(() => this.#setVisibility());
26043
+ }
26044
+
26045
+ #syncAvailableSizeAttr() {
26046
+ const anchor = this.defaultSlot?.assignedElements()?.[0];
26047
+
26048
+ const anchorRect = anchor?.getBoundingClientRect();
26049
+ if (anchorRect) {
26050
+ const availableWidth = anchorRect.width;
26051
+ this.#attachment?.setAttribute(
26052
+ 'data-attachment-size',
26053
+ Number(availableWidth),
26054
+ );
26055
+ }
25870
26056
  }
25871
26057
 
25872
26058
  #setVisibility() {
@@ -25875,16 +26061,14 @@ class RawAttachment extends createBaseClass$1({
25875
26061
  }
25876
26062
 
25877
26063
  #syncDirection() {
25878
- const child = this.defaultSlot?.assignedElements()?.[0];
25879
- if (!child) return;
25880
-
25881
- const { direction } = window.getComputedStyle(child);
26064
+ const direction = this.shadowRoot
26065
+ .querySelector('.attachment-container')
26066
+ ?.getAttribute('st-host-direction');
25882
26067
 
26068
+ if (!direction) return;
25883
26069
  // currently we support direction sync only for web-components-ui
25884
26070
  // elements, which support st-host-direction attribute.
25885
- this.attachmentSlot?.assignedElements().forEach((el) => {
25886
- el.setAttribute('st-host-direction', direction);
25887
- });
26071
+ this.#attachment?.setAttribute('st-host-direction', direction);
25888
26072
  }
25889
26073
 
25890
26074
  get offsetX() {
@@ -25976,7 +26160,7 @@ var attachment$1 = /*#__PURE__*/Object.freeze({
25976
26160
  default: attachment
25977
26161
  });
25978
26162
 
25979
- const componentName$1 = getComponentName('input-wrapper');
26163
+ const componentName$2 = getComponentName('input-wrapper');
25980
26164
  const globalRefs$p = getThemeRefs(globals$1);
25981
26165
 
25982
26166
  const [theme$1, refs, vars$I] = createHelperVars(
@@ -26106,7 +26290,7 @@ const [theme$1, refs, vars$I] = createHelperVars(
26106
26290
  inputTextSecurity: 'disc',
26107
26291
  },
26108
26292
  },
26109
- componentName$1
26293
+ componentName$2
26110
26294
  );
26111
26295
 
26112
26296
  var inputWrapper = /*#__PURE__*/Object.freeze({
@@ -26554,7 +26738,7 @@ const [helperTheme$2, helperRefs$2, helperVars$2] = createHelperVars(
26554
26738
  horizontalAlignment,
26555
26739
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
26556
26740
  },
26557
- componentName$1h
26741
+ componentName$1i
26558
26742
  );
26559
26743
 
26560
26744
  const { shadowColor: shadowColor$2 } = helperRefs$2;
@@ -26710,7 +26894,7 @@ const [helperTheme$1, helperRefs$1, helperVars$1] = createHelperVars(
26710
26894
  thickness: '2px',
26711
26895
  spacing: '10px',
26712
26896
  },
26713
- componentName$19
26897
+ componentName$1a
26714
26898
  );
26715
26899
 
26716
26900
  const divider = {
@@ -26864,7 +27048,7 @@ const [helperTheme, helperRefs, helperVars] = createHelperVars(
26864
27048
  },
26865
27049
  },
26866
27050
  },
26867
- componentName$1i
27051
+ componentName$1j
26868
27052
  );
26869
27053
 
26870
27054
  const loaderRadial = {
@@ -27459,6 +27643,7 @@ const userAttribute = {
27459
27643
  [vars$g.hostMinWidth]: '310px',
27460
27644
  [vars$g.hostWidth]: '530px',
27461
27645
  [vars$g.hostMaxWidth]: '100%',
27646
+ [vars$g.iconColor]: 'currentcolor',
27462
27647
 
27463
27648
  _fullWidth: {
27464
27649
  [vars$g.hostWidth]: '100%',
@@ -28268,36 +28453,197 @@ const darkTheme = merge({}, defaultTheme, {
28268
28453
  },
28269
28454
  });
28270
28455
 
28271
- customElements.define(componentName$h, AutocompleteFieldInternal);
28456
+ customElements.define(componentName$i, AutocompleteFieldInternal);
28457
+
28458
+ customElements.define(componentName$h, AutocompleteFieldClass);
28459
+
28460
+ customElements.define(componentName$g, AddressFieldInternal);
28272
28461
 
28273
- customElements.define(componentName$g, AutocompleteFieldClass);
28462
+ customElements.define(componentName$f, AddressFieldClass);
28463
+
28464
+ const componentName$1 = getComponentName$1('anchored');
28465
+
28466
+ class RawAnchored extends createBaseClass$1({
28467
+ componentName: componentName$1,
28468
+ baseSelector: '.anchored-root',
28469
+ }) {
28470
+ #stretchObserver = null;
28471
+
28472
+ #directionObserver = null;
28473
+
28474
+ #hostStretchSheet = null;
28475
+
28476
+ get #anchor() {
28477
+ return this.defaultSlot.assignedElements({ flatten: true })[0];
28478
+ }
28479
+
28480
+ get #anchored() {
28481
+ return this.shadowRoot
28482
+ .querySelector('slot[name="anchored"]')
28483
+ ?.assignedElements()[0];
28484
+ }
28485
+
28486
+ get #outerHost() {
28487
+ return this.getRootNode().host;
28488
+ }
28489
+
28490
+ constructor() {
28491
+ super();
28492
+
28493
+ this.attachShadow({ mode: 'open' }).innerHTML = `
28494
+ <div class="anchored-root" part="root">
28495
+ <slot></slot>
28496
+ <div class="anchored-host" part="anchored">
28497
+ <slot name="anchored"></slot>
28498
+ </div>
28499
+ </div>
28500
+ `;
28501
+
28502
+ this.defaultSlot = this.shadowRoot.querySelector('slot:not([name])');
28503
+ }
28504
+
28505
+ init() {
28506
+ super.init?.();
28507
+
28508
+ injectStyle(
28509
+ `
28510
+ :host {
28511
+ display: inline-flex;
28512
+ position: relative;
28513
+ box-sizing: border-box;
28514
+ }
28515
+
28516
+ :host(:not([has-anchor])) {
28517
+ display: none;
28518
+ }
28519
+
28520
+ .anchored-root {
28521
+ position: relative;
28522
+ display: flex;
28523
+ width: 100%;
28524
+ min-width: 0;
28525
+ }
28526
+
28527
+ /* Make anchor fill the flex row and allow it to shrink. */
28528
+ ::slotted(*:not([slot])) {
28529
+ flex-grow: 1; /* fill the flex row */
28530
+ flex-shrink: 1; /* compress when constrained */
28531
+ flex-basis: auto; /* start from the anchor's natural size */
28532
+ min-width: 0; /* flex items won't shrink below content size without this */
28533
+ }
28534
+
28535
+ /* Anchored container covers the anchor but is invisible to pointer events. */
28536
+ .anchored-host {
28537
+ position: absolute;
28538
+ inset: 0;
28539
+ pointer-events: none;
28540
+ }
28541
+
28542
+ /* Restore interactivity for actual anchored content. */
28543
+ ::slotted([slot="anchored"]) {
28544
+ pointer-events: auto;
28545
+ }
28546
+ `,
28547
+ this,
28548
+ );
28549
+
28550
+ this.#syncStretchCSS();
28551
+
28552
+ this.defaultSlot.addEventListener('slotchange', () => this.#syncAnchor());
28553
+
28554
+ this.#syncAnchor();
28555
+ }
28556
+
28557
+ #syncAnchor() {
28558
+ this.#onAnchorChanged();
28559
+
28560
+ this.#stretchObserver = this.#forwardAttr(
28561
+ this.#stretchObserver,
28562
+ this.#outerHost,
28563
+ 'stretch',
28564
+ );
28565
+
28566
+ this.#directionObserver = this.#forwardAttr(
28567
+ this.#directionObserver,
28568
+ this.#anchored,
28569
+ 'st-host-direction',
28570
+ );
28571
+ }
28572
+
28573
+ // Injects [stretch] layout rules into the containing component's shadow root (e.g. descope-attachment)
28574
+ // so it stretches when the anchor has [stretch]. Replaces the existing rules on subsequent calls.
28575
+ #syncStretchCSS() {
28576
+ const css = `
28577
+ descope-anchored {
28578
+ width: 100%; /* fill the outer host so the anchored element spans the full anchor width */
28579
+ }
28580
+ :host([stretch]) {
28581
+ display: inline-flex; /* switch from inline-block so internal children are flex items */
28582
+ width: 100%; /* fill non-flex parents */
28583
+ flex-grow: 1; /* absorb extra space in flex parents */
28584
+ flex-shrink: 0; /* hold full width — shrink:1 would let siblings squeeze it below 100% */
28585
+ flex-basis: 100%; /* start at full width before grow/shrink */
28586
+ min-width: 0; /* prevent overflow when the outer host is itself inside a constrained flex row */
28587
+ }
28588
+ `;
28589
+
28590
+ if (this.#hostStretchSheet) {
28591
+ this.#hostStretchSheet.replaceSync(css);
28592
+ } else if (this.#outerHost) {
28593
+ this.#hostStretchSheet = injectStyle(css, this.#outerHost);
28594
+ }
28595
+ }
28596
+
28597
+ // Reconnects forwarding to the current anchor. Disconnects the old observer and
28598
+ // removes the stale attr from target first — forwardAttrs only sets attrs present
28599
+ // on the source, so absent attrs won't be removed automatically.
28600
+ #forwardAttr(observer, target, attr) {
28601
+ observer?.disconnect();
28602
+ target?.removeAttribute(attr);
28603
+ if (!this.#anchor || !target) return null;
28604
+ return forwardAttrs$1(this.#anchor, target, { includeAttrs: [attr] });
28605
+ }
28606
+
28607
+ // Prevent stale callbacks from firing on a detached anchor after removal.
28608
+ disconnectedCallback() {
28609
+ super.disconnectedCallback?.();
28610
+ this.#stretchObserver?.disconnect();
28611
+ this.#directionObserver?.disconnect();
28612
+ }
28613
+
28614
+ // Track whether anything is slotted, so the host display rule can hide an
28615
+ // empty host rather than reserving its layout box.
28616
+ #onAnchorChanged() {
28617
+ this.toggleAttribute('has-anchor', !!this.#anchor);
28618
+ }
28619
+ }
28274
28620
 
28275
- customElements.define(componentName$f, AddressFieldInternal);
28621
+ const AnchoredClass = compose$1(componentNameValidationMixin$1)(RawAnchored);
28276
28622
 
28277
- customElements.define(componentName$e, AddressFieldClass);
28623
+ customElements.define(componentName$1, AnchoredClass);
28278
28624
 
28279
- customElements.define(componentName$j, AvatarClass);
28625
+ customElements.define(componentName$k, AvatarClass);
28280
28626
 
28281
- customElements.define(componentName$i, AppsListClass);
28627
+ customElements.define(componentName$j, AppsListClass);
28282
28628
 
28283
- customElements.define(componentName$2, AttachmentClass);
28629
+ customElements.define(componentName$3, AttachmentClass);
28284
28630
 
28285
- customElements.define(componentName$a, CollapsibleContainerClass);
28631
+ customElements.define(componentName$b, CollapsibleContainerClass);
28286
28632
 
28287
- customElements.define(componentName$4, CountrySubdivisionCityFieldInternal);
28633
+ customElements.define(componentName$5, CountrySubdivisionCityFieldInternal);
28288
28634
 
28289
- customElements.define(componentName$3, CountrySubdivisionCityFieldClass);
28635
+ customElements.define(componentName$4, CountrySubdivisionCityFieldClass);
28290
28636
 
28291
- customElements.define(componentName$7, OutboundAppButtonClass);
28637
+ customElements.define(componentName$8, OutboundAppButtonClass);
28292
28638
 
28293
- customElements.define(componentName$8, OutboundAppsClass);
28639
+ customElements.define(componentName$9, OutboundAppsClass);
28294
28640
 
28295
- customElements.define(componentName$b, PasswordStrengthClass);
28641
+ customElements.define(componentName$c, PasswordStrengthClass);
28296
28642
 
28297
28643
  var index = /*#__PURE__*/Object.freeze({
28298
28644
  __proto__: null,
28299
28645
  PasswordStrengthClass: PasswordStrengthClass,
28300
- componentName: componentName$b
28646
+ componentName: componentName$c
28301
28647
  });
28302
28648
 
28303
28649
  // NOTICE: This component registers with a DIFFERENT name than its file name
@@ -28404,15 +28750,15 @@ const HoneypotClass = compose$1(componentNameValidationMixin$1)(RawHoneypot);
28404
28750
 
28405
28751
  customElements.define(componentName, HoneypotClass);
28406
28752
 
28407
- customElements.define(componentName$9, RecoveryCodesClass);
28753
+ customElements.define(componentName$a, RecoveryCodesClass);
28408
28754
 
28409
- customElements.define(componentName$d, TimerClass);
28755
+ customElements.define(componentName$e, TimerClass);
28410
28756
 
28411
- customElements.define(componentName$c, TimerButtonClass);
28757
+ customElements.define(componentName$d, TimerButtonClass);
28412
28758
 
28413
- customElements.define(componentName$5, TooltipClass);
28759
+ customElements.define(componentName$6, TooltipClass);
28414
28760
 
28415
- customElements.define(componentName$6, TrustedDevicesClass);
28761
+ customElements.define(componentName$7, TrustedDevicesClass);
28416
28762
 
28417
28763
  const options = {
28418
28764
  translations: zxcvbnEnPackage.translations,
@@ -28430,5 +28776,5 @@ var calcScore = /*#__PURE__*/Object.freeze({
28430
28776
  options: options
28431
28777
  });
28432
28778
 
28433
- export { AddressFieldClass, AlertClass, AppsListClass, AttachmentClass, AutocompleteFieldClass, AvatarClass, BadgeClass, ButtonClass, ButtonMultiSelectionGroupClass, ButtonSelectionGroupClass, CalendarClass, CheckboxClass, CodeSnippetClass, CollapsibleContainerClass, ComboBoxClass, ContainerClass, CountrySubdivisionCityFieldClass, DateFieldClass, DividerClass, EmailFieldClass, EnrichedTextClass, GridClass, HcaptchaClass, HoneypotClass, HybridFieldClass, IconClass, ImageClass, LinkClass, ListClass, ListItemClass, LoaderLinearClass, LoaderRadialClass, LogoClass, MappingsFieldClass, ModalClass, MultiSelectComboBoxClass, NewPasswordClass, NotificationClass, NotpImageClass, NumberFieldClass, OutboundAppButtonClass, OutboundAppsClass, PasscodeClass, PasswordClass, PasswordStrengthClass, PhoneFieldClass, PhoneFieldInputBoxClass, PolicyValidationClass, RadioGroupClass, RecaptchaClass, RecoveryCodesClass, SamlGroupMappingsClass, ScopesListClass, SecurityQuestionsSetupClass, SecurityQuestionsVerifyClass, SwitchToggleClass, TextAreaClass, TextClass, TextFieldClass, ThirdPartyAppLogoClass, TimerButtonClass, TimerClass, TooltipClass, TotpImageClass, TrustedDevicesClass, UploadFileClass, UserAttributeClass, UserAuthMethodClass, componentsThemeManager, createComponentsTheme, darkTheme, defaultTheme, genColor, globalsThemeToStyle, themeToStyle, themeVars };
28779
+ export { AddressFieldClass, AlertClass, AnchoredClass, AppsListClass, AttachmentClass, AutocompleteFieldClass, AvatarClass, BadgeClass, ButtonClass, ButtonMultiSelectionGroupClass, ButtonSelectionGroupClass, CalendarClass, CheckboxClass, CodeSnippetClass, CollapsibleContainerClass, ComboBoxClass, ContainerClass, CountrySubdivisionCityFieldClass, DateFieldClass, DividerClass, EmailFieldClass, EnrichedTextClass, GridClass, HcaptchaClass, HoneypotClass, HybridFieldClass, IconClass, ImageClass, LinkClass, ListClass, ListItemClass, LoaderLinearClass, LoaderRadialClass, LogoClass, MappingsFieldClass, ModalClass, MultiSelectComboBoxClass, NewPasswordClass, NotificationClass, NotpImageClass, NumberFieldClass, OutboundAppButtonClass, OutboundAppsClass, PasscodeClass, PasswordClass, PasswordStrengthClass, PhoneFieldClass, PhoneFieldInputBoxClass, PolicyValidationClass, RadioGroupClass, RecaptchaClass, RecoveryCodesClass, SamlGroupMappingsClass, ScopesListClass, SecurityQuestionsSetupClass, SecurityQuestionsVerifyClass, SwitchToggleClass, TextAreaClass, TextClass, TextFieldClass, ThirdPartyAppLogoClass, TimerButtonClass, TimerClass, TooltipClass, TotpImageClass, TrustedDevicesClass, UploadFileClass, UserAttributeClass, UserAuthMethodClass, componentsThemeManager, createComponentsTheme, darkTheme, defaultTheme, genColor, globalsThemeToStyle, themeToStyle, themeVars };
28434
28780
  //# sourceMappingURL=index.esm.js.map