@descope/flow-components 3.7.0 → 3.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -79831,6 +79831,8 @@ function requireIndex_cjs () {
79831
79831
  });
79832
79832
 
79833
79833
  observer.observe(ele, { attributes: true });
79834
+
79835
+ return { disconnect: () => observer.disconnect() };
79834
79836
  };
79835
79837
 
79836
79838
  // calling the callback with this object: { addedNodes, removedNodes }
@@ -79880,13 +79882,12 @@ function requireIndex_cjs () {
79880
79882
 
79881
79883
  const getCssVarName = (...args) => `--${kebabCaseJoin(...args)}`;
79882
79884
 
79883
- const forwardAttrs = (source, dest, options = {}) => {
79885
+ const forwardAttrs = (source, dest, options = {}) =>
79884
79886
  observeAttributes(
79885
79887
  source,
79886
79888
  createSyncAttrsCb(source, dest, options.mapAttrs),
79887
79889
  options,
79888
79890
  );
79889
- };
79890
79891
 
79891
79892
  const forwardProps$2 = (src, target, props = []) => {
79892
79893
  if (!props.length) return;
@@ -79899,7 +79900,6 @@ function requireIndex_cjs () {
79899
79900
  return src[prop];
79900
79901
  },
79901
79902
  set(v) {
79902
- // eslint-disable-next-line no-param-reassign
79903
79903
  src[prop] = v;
79904
79904
  },
79905
79905
  },
@@ -79914,8 +79914,9 @@ function requireIndex_cjs () {
79914
79914
  let style;
79915
79915
 
79916
79916
  try {
79917
+ // eslint-disable-next-line no-undef
79917
79918
  style = new CSSStyleSheet();
79918
- } catch (e) {
79919
+ } catch {
79919
79920
  // fallback for browsers that don't support CSSStyleSheet
79920
79921
  return generateStyleTagFallback(cssString, ref, { prepend });
79921
79922
  }
@@ -82599,6 +82600,55 @@ function requireIndex_cjs () {
82599
82600
  }
82600
82601
  };
82601
82602
 
82603
+ // stretchMixin — manages the `[stretch]` attribute as a pure layout signal.
82604
+ // Consumers own the visual implementation (`:host([stretch])` CSS in their
82605
+ // own init styles, theme rules, etc.).
82606
+ //
82607
+ // triggers — for leaf components that own a "full size" attribute.
82608
+ // Each entry maps an attribute/value pair; when the attribute matches the
82609
+ // value, `[stretch]` is toggled on the host.
82610
+ // Example: stretchMixin({ triggers: [{ attr: 'full-width', value: 'true' }] })
82611
+ // Use on components like descope-button that expose a full-width prop.
82612
+ //
82613
+ // Propagating `[stretch]` from slotted children (e.g. for anchored components)
82614
+ // is the consumer's responsibility. descope-anchored implements this correctly
82615
+ // via per-anchor MutationObservers on assignedElements({ flatten: true }),
82616
+ // which also handles React props set after init.
82617
+
82618
+ const stretchMixin =
82619
+ ({ triggers = [] } = {}) =>
82620
+ (superclass) =>
82621
+ class StretchMixinClass extends superclass {
82622
+ static get observedAttributes() {
82623
+ return [
82624
+ ...(superclass.observedAttributes || []),
82625
+ ...triggers.map(({ attr }) => attr),
82626
+ ];
82627
+ }
82628
+
82629
+ get #shouldStretch() {
82630
+ return triggers.some(
82631
+ ({ attr, value }) => this.getAttribute(attr) === value,
82632
+ );
82633
+ }
82634
+
82635
+ #syncStretch = () => {
82636
+ this.toggleAttribute('stretch', this.#shouldStretch);
82637
+ };
82638
+
82639
+ attributeChangedCallback(name, oldVal, newVal) {
82640
+ super.attributeChangedCallback?.(name, oldVal, newVal);
82641
+ if (oldVal !== newVal) {
82642
+ this.#syncStretch();
82643
+ }
82644
+ }
82645
+
82646
+ init() {
82647
+ super.init?.();
82648
+ this.#syncStretch();
82649
+ }
82650
+ };
82651
+
82602
82652
  const getFileExtension = (path) => {
82603
82653
  const match = path.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);
82604
82654
  return match ? match[1] : null;
@@ -82660,12 +82710,12 @@ function requireIndex_cjs () {
82660
82710
 
82661
82711
  /* eslint-disable no-use-before-define */
82662
82712
 
82663
- const componentName$1k = getComponentName('image');
82713
+ const componentName$1l = getComponentName('image');
82664
82714
 
82665
82715
  const srcAttrs = ['src', 'src-dark'];
82666
82716
 
82667
82717
  class RawImage extends createBaseClass$1({
82668
- componentName: componentName$1k,
82718
+ componentName: componentName$1l,
82669
82719
  baseSelector: 'slot',
82670
82720
  }) {
82671
82721
  static get observedAttributes() {
@@ -82793,7 +82843,7 @@ function requireIndex_cjs () {
82793
82843
  componentNameValidationMixin$1,
82794
82844
  )(RawImage);
82795
82845
 
82796
- const componentName$1j = getComponentName('icon');
82846
+ const componentName$1k = getComponentName('icon');
82797
82847
 
82798
82848
  const IconClass = compose(
82799
82849
  createStyleMixin$1({
@@ -82814,7 +82864,7 @@ function requireIndex_cjs () {
82814
82864
  }
82815
82865
  `,
82816
82866
  excludeAttrsSync: ['tabindex', 'class', 'style'],
82817
- componentName: componentName$1j,
82867
+ componentName: componentName$1k,
82818
82868
  }),
82819
82869
  );
82820
82870
 
@@ -82829,7 +82879,7 @@ function requireIndex_cjs () {
82829
82879
  }
82830
82880
  };
82831
82881
 
82832
- const componentName$1i = getComponentName('button');
82882
+ const componentName$1j = getComponentName('button');
82833
82883
 
82834
82884
  const resetStyles = `
82835
82885
  :host {
@@ -82876,6 +82926,7 @@ function requireIndex_cjs () {
82876
82926
  let loadingIndicatorStyles;
82877
82927
 
82878
82928
  const ButtonClass = compose(
82929
+ stretchMixin({ triggers: [{ attr: 'full-width', value: 'true' }] }),
82879
82930
  createStyleMixin$1({
82880
82931
  mappings: {
82881
82932
  hostWidth: { property: 'width' },
@@ -82949,7 +83000,7 @@ function requireIndex_cjs () {
82949
83000
  }
82950
83001
  `,
82951
83002
  excludeAttrsSync: ['tabindex', 'class', 'style'],
82952
- componentName: componentName$1i,
83003
+ componentName: componentName$1j,
82953
83004
  }),
82954
83005
  );
82955
83006
 
@@ -82999,7 +83050,7 @@ function requireIndex_cjs () {
82999
83050
 
83000
83051
  const [helperTheme$7, helperRefs$7, helperVars$6] = createHelperVars$1(
83001
83052
  { mode },
83002
- componentName$1i,
83053
+ componentName$1j,
83003
83054
  );
83004
83055
 
83005
83056
  const button = {
@@ -83124,10 +83175,10 @@ function requireIndex_cjs () {
83124
83175
  vars: vars$15
83125
83176
  });
83126
83177
 
83127
- const componentName$1h = getComponentName('text');
83178
+ const componentName$1i = getComponentName('text');
83128
83179
 
83129
83180
  class RawText extends createBaseClass$1({
83130
- componentName: componentName$1h,
83181
+ componentName: componentName$1i,
83131
83182
  baseSelector: ':host > slot',
83132
83183
  }) {
83133
83184
  constructor() {
@@ -83320,9 +83371,9 @@ function requireIndex_cjs () {
83320
83371
  /* eslint-disable no-param-reassign */
83321
83372
 
83322
83373
 
83323
- const componentName$1g = getComponentName('enriched-text');
83374
+ const componentName$1h = getComponentName('enriched-text');
83324
83375
 
83325
- class EnrichedText extends createBaseClass$1({ componentName: componentName$1g, baseSelector: ':host > div' }) {
83376
+ class EnrichedText extends createBaseClass$1({ componentName: componentName$1h, baseSelector: ':host > div' }) {
83326
83377
  #origLinkRenderer;
83327
83378
 
83328
83379
  #origEmRenderer;
@@ -83527,12 +83578,12 @@ function requireIndex_cjs () {
83527
83578
  componentNameValidationMixin$1
83528
83579
  )(EnrichedText);
83529
83580
 
83530
- const componentName$1f = getComponentName('link');
83581
+ const componentName$1g = getComponentName('link');
83531
83582
 
83532
83583
  const observedAttrs$6 = ['href', 'readonly'];
83533
83584
 
83534
83585
  class RawLink extends createBaseClass$1({
83535
- componentName: componentName$1f,
83586
+ componentName: componentName$1g,
83536
83587
  baseSelector: ':host a',
83537
83588
  }) {
83538
83589
  static get observedAttributes() {
@@ -83705,7 +83756,7 @@ function requireIndex_cjs () {
83705
83756
  vars: vars$12
83706
83757
  });
83707
83758
 
83708
- const componentName$1e = getComponentName('combo-box');
83759
+ const componentName$1f = getComponentName('combo-box');
83709
83760
 
83710
83761
  const ComboBoxMixin = (superclass) =>
83711
83762
  class ComboBoxMixinClass extends superclass {
@@ -84398,12 +84449,12 @@ function requireIndex_cjs () {
84398
84449
  // and reset items to an empty array, and opening the list box with no items
84399
84450
  // to display.
84400
84451
  excludeAttrsSync: ['tabindex', 'size', 'data', 'loading', 'style'],
84401
- componentName: componentName$1e,
84452
+ componentName: componentName$1f,
84402
84453
  includeForwardProps: ['items', 'renderer', 'selectedItem'],
84403
84454
  }),
84404
84455
  );
84405
84456
 
84406
- const componentName$1d = getComponentName('input-wrapper');
84457
+ const componentName$1e = getComponentName('input-wrapper');
84407
84458
  const globalRefs$D = getThemeRefs$1(globals);
84408
84459
 
84409
84460
  const [theme$2, refs$1] = createHelperVars$1(
@@ -84529,7 +84580,7 @@ function requireIndex_cjs () {
84529
84580
  backgroundColor: globalRefs$D.colors.surface.main,
84530
84581
  },
84531
84582
  },
84532
- componentName$1d,
84583
+ componentName$1e,
84533
84584
  );
84534
84585
 
84535
84586
  const globalRefs$C = getThemeRefs$1(globals);
@@ -84640,12 +84691,16 @@ function requireIndex_cjs () {
84640
84691
  vars: vars$11
84641
84692
  });
84642
84693
 
84643
- const componentName$1c = getComponentName('badge');
84694
+ const componentName$1d = getComponentName('badge');
84644
84695
 
84645
84696
  class RawBadge extends createBaseClass$1({
84646
- componentName: componentName$1c,
84697
+ componentName: componentName$1d,
84647
84698
  baseSelector: ':host > div',
84648
84699
  }) {
84700
+ static get observedAttributes() {
84701
+ return ['data-attachment-size', 'shrink-to-indicator-threshold'];
84702
+ }
84703
+
84649
84704
  constructor() {
84650
84705
  super();
84651
84706
 
@@ -84671,6 +84726,24 @@ function requireIndex_cjs () {
84671
84726
  this,
84672
84727
  );
84673
84728
  }
84729
+
84730
+ get shrinkToIndicatorThreshold() {
84731
+ return this.getAttribute('shrink-to-indicator-threshold') || 65;
84732
+ }
84733
+
84734
+ #handleShrinkToIndicator(value) {
84735
+ this.toggleAttribute(
84736
+ 'shrink-to-indicator',
84737
+ parseFloat(value) < this.shrinkToIndicatorThreshold,
84738
+ );
84739
+ }
84740
+
84741
+ attributeChangedCallback(name, oldVal, newVal) {
84742
+ super.attributeChangedCallback?.(name, oldVal, newVal);
84743
+ if (name === 'data-attachment-size' && oldVal !== newVal) {
84744
+ this.#handleShrinkToIndicator(newVal);
84745
+ }
84746
+ }
84674
84747
  }
84675
84748
 
84676
84749
  const BadgeClass = compose(
@@ -84716,7 +84789,7 @@ function requireIndex_cjs () {
84716
84789
  {
84717
84790
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
84718
84791
  },
84719
- componentName$1c,
84792
+ componentName$1d,
84720
84793
  );
84721
84794
 
84722
84795
  const { shadowColor: shadowColor$6 } = helperRefs$6;
@@ -84759,18 +84832,26 @@ function requireIndex_cjs () {
84759
84832
  },
84760
84833
  },
84761
84834
 
84762
- $breakpoints: {
84763
- indicator: '(max-width: 65px)',
84764
- },
84835
+ // Container Query example:
84836
+ // $breakpoints: {
84837
+ // indicator: '(max-width: 65px)',
84838
+ // },
84839
+ // _shrinkToIndicator: {
84840
+ // '$breakpoints.indicator': {
84841
+ // [vars.hostWidth]: '13px',
84842
+ // [vars.hostHeight]: '13px',
84843
+ // [vars.borderRadius]: '50%',
84844
+ // [vars.fontSize]: '0',
84845
+ // [vars.textIndent]: '-9999px',
84846
+ // },
84847
+ // },
84765
84848
 
84766
84849
  _shrinkToIndicator: {
84767
- '$breakpoints.indicator': {
84768
- [vars$10.hostWidth]: '13px',
84769
- [vars$10.hostHeight]: '13px',
84770
- [vars$10.borderRadius]: '50%',
84771
- [vars$10.fontSize]: '0',
84772
- [vars$10.textIndent]: '-9999px',
84773
- },
84850
+ [vars$10.hostWidth]: '13px',
84851
+ [vars$10.hostHeight]: '13px',
84852
+ [vars$10.borderRadius]: '50%',
84853
+ [vars$10.fontSize]: '0',
84854
+ [vars$10.textIndent]: '-9999px',
84774
84855
  },
84775
84856
 
84776
84857
  mode: {
@@ -84828,9 +84909,9 @@ function requireIndex_cjs () {
84828
84909
  vars: vars$10
84829
84910
  });
84830
84911
 
84831
- const componentName$1b = getComponentName('avatar');
84912
+ const componentName$1c = getComponentName('avatar');
84832
84913
  class RawAvatar extends createBaseClass$1({
84833
- componentName: componentName$1b,
84914
+ componentName: componentName$1c,
84834
84915
  baseSelector: ':host > .wrapper',
84835
84916
  }) {
84836
84917
  constructor() {
@@ -85011,7 +85092,7 @@ function requireIndex_cjs () {
85011
85092
  vars: vars$Z
85012
85093
  });
85013
85094
 
85014
- const componentName$1a = getComponentName('list-item');
85095
+ const componentName$1b = getComponentName('list-item');
85015
85096
 
85016
85097
  const customMixin$f = (superclass) =>
85017
85098
  class ListItemMixinClass extends superclass {
@@ -85068,12 +85149,12 @@ function requireIndex_cjs () {
85068
85149
  componentNameValidationMixin$1,
85069
85150
  customMixin$f,
85070
85151
  activeableMixin,
85071
- )(createBaseClass$1({ componentName: componentName$1a, baseSelector: 'slot' }));
85152
+ )(createBaseClass$1({ componentName: componentName$1b, baseSelector: 'slot' }));
85072
85153
 
85073
- const componentName$19 = getComponentName('list');
85154
+ const componentName$1a = getComponentName('list');
85074
85155
 
85075
85156
  class RawList extends createBaseClass$1({
85076
- componentName: componentName$19,
85157
+ componentName: componentName$1a,
85077
85158
  baseSelector: '.wrapper',
85078
85159
  }) {
85079
85160
  static get observedAttributes() {
@@ -85244,7 +85325,7 @@ function requireIndex_cjs () {
85244
85325
  componentNameValidationMixin$1,
85245
85326
  )(RawList);
85246
85327
 
85247
- const componentName$18 = getComponentName('apps-list');
85328
+ const componentName$19 = getComponentName('apps-list');
85248
85329
 
85249
85330
  const itemRenderer$4 = ({ name, icon, url }, _, ref) => `
85250
85331
  <a ${url ? `href="${url}" title="${url}"` : ''} ${ref.openInSameWindow ? '' : 'target="_blank"'}>
@@ -85368,7 +85449,7 @@ function requireIndex_cjs () {
85368
85449
  slots: ['empty-state'],
85369
85450
  wrappedEleName: 'descope-list',
85370
85451
  excludeAttrsSync: ['tabindex', 'class', 'empty', 'style'],
85371
- componentName: componentName$18,
85452
+ componentName: componentName$19,
85372
85453
  style: () => `
85373
85454
  :host {
85374
85455
  width: 100%;
@@ -85473,7 +85554,7 @@ function requireIndex_cjs () {
85473
85554
 
85474
85555
  const [helperTheme$5, helperRefs$5, helperVars$5] = createHelperVars$1(
85475
85556
  { shadowColor: '#00000020' },
85476
- componentName$19,
85557
+ componentName$1a,
85477
85558
  );
85478
85559
 
85479
85560
  const { shadowColor: shadowColor$5 } = helperRefs$5;
@@ -85588,14 +85669,14 @@ function requireIndex_cjs () {
85588
85669
  vars: vars$W
85589
85670
  });
85590
85671
 
85591
- const componentName$17 = getComponentName('autocomplete-field-internal');
85672
+ const componentName$18 = getComponentName('autocomplete-field-internal');
85592
85673
 
85593
85674
  createBaseInputClass$1({
85594
- componentName: componentName$17,
85675
+ componentName: componentName$18,
85595
85676
  baseSelector: '',
85596
85677
  });
85597
85678
 
85598
- const componentName$16 = getComponentName('autocomplete-field');
85679
+ const componentName$17 = getComponentName('autocomplete-field');
85599
85680
 
85600
85681
  const customMixin$d = (superclass) =>
85601
85682
  class AutocompleteFieldMixinClass extends superclass {
@@ -85616,15 +85697,15 @@ function requireIndex_cjs () {
85616
85697
  const template = document.createElement('template');
85617
85698
 
85618
85699
  template.innerHTML = `
85619
- <${componentName$17}
85700
+ <${componentName$18}
85620
85701
  tabindex="-1"
85621
- ></${componentName$17}>
85702
+ ></${componentName$18}>
85622
85703
  `;
85623
85704
 
85624
85705
  this.baseElement.appendChild(template.content.cloneNode(true));
85625
85706
 
85626
85707
  this.inputElement = this.shadowRoot.querySelector(
85627
- componentName$17,
85708
+ componentName$18,
85628
85709
  );
85629
85710
 
85630
85711
  forwardAttrs(this, this.inputElement, {
@@ -85743,7 +85824,7 @@ function requireIndex_cjs () {
85743
85824
  }
85744
85825
  `,
85745
85826
  excludeAttrsSync: ['tabindex', 'error-message', 'label', 'style'],
85746
- componentName: componentName$16,
85827
+ componentName: componentName$17,
85747
85828
  }),
85748
85829
  );
85749
85830
 
@@ -85997,7 +86078,7 @@ function requireIndex_cjs () {
85997
86078
  }
85998
86079
  }
85999
86080
 
86000
- const componentName$15 = getComponentName('address-field-internal');
86081
+ const componentName$16 = getComponentName('address-field-internal');
86001
86082
 
86002
86083
  const GOOGLE_MAPS_CONNECTOR_TEMPLATE = 'google-maps-places';
86003
86084
  const RADAR_CONNECTOR_TEMPLATE = 'radar';
@@ -86008,7 +86089,7 @@ function requireIndex_cjs () {
86008
86089
  };
86009
86090
 
86010
86091
  const BaseInputClass$5 = createBaseInputClass$1({
86011
- componentName: componentName$15,
86092
+ componentName: componentName$16,
86012
86093
  baseSelector: '',
86013
86094
  });
86014
86095
  const initConnectorAttrs = ['public-api-key'];
@@ -86115,7 +86196,7 @@ function requireIndex_cjs () {
86115
86196
  connectorMixin({ connectorClasses: CONNECTOR_CLASSES }),
86116
86197
  )(RawAddressFieldInternal);
86117
86198
 
86118
- const componentName$14 = getComponentName('address-field');
86199
+ const componentName$15 = getComponentName('address-field');
86119
86200
 
86120
86201
  const customMixin$c = (superclass) =>
86121
86202
  class AddressFieldMixinClass extends superclass {
@@ -86144,15 +86225,15 @@ function requireIndex_cjs () {
86144
86225
  const template = document.createElement('template');
86145
86226
 
86146
86227
  template.innerHTML = `
86147
- <${componentName$15}
86228
+ <${componentName$16}
86148
86229
  tabindex="-1"
86149
- ></${componentName$15}>
86230
+ ></${componentName$16}>
86150
86231
  `;
86151
86232
 
86152
86233
  this.baseElement.appendChild(template.content.cloneNode(true));
86153
86234
 
86154
86235
  this.inputElement = this.shadowRoot.querySelector(
86155
- componentName$15,
86236
+ componentName$16,
86156
86237
  );
86157
86238
 
86158
86239
  forwardAttrs(this, this.inputElement, {
@@ -86230,7 +86311,7 @@ function requireIndex_cjs () {
86230
86311
  width: 100%;
86231
86312
  }
86232
86313
 
86233
- ${componentName$15} {
86314
+ ${componentName$16} {
86234
86315
  display: inline-block;
86235
86316
  box-sizing: border-box;
86236
86317
  user-select: none;
@@ -86238,12 +86319,12 @@ function requireIndex_cjs () {
86238
86319
  max-width: 100%;
86239
86320
  }
86240
86321
 
86241
- ${componentName$15} ::slotted {
86322
+ ${componentName$16} ::slotted {
86242
86323
  padding: 0;
86243
86324
  }
86244
86325
  `,
86245
86326
  excludeAttrsSync: ['tabindex', 'error-message', 'label', 'style'],
86246
- componentName: componentName$14,
86327
+ componentName: componentName$15,
86247
86328
  }),
86248
86329
  );
86249
86330
 
@@ -86283,24 +86364,24 @@ function requireIndex_cjs () {
86283
86364
  return timeParts.join(':');
86284
86365
  };
86285
86366
 
86286
- const componentName$13 = getComponentName('timer');
86367
+ const componentName$14 = getComponentName('timer');
86287
86368
 
86288
86369
  const observedAttributes$5 = ['seconds', 'hide-icon', 'paused'];
86289
86370
 
86290
- const BaseClass$7 = createBaseClass$1({
86291
- componentName: componentName$13,
86371
+ const BaseClass$6 = createBaseClass$1({
86372
+ componentName: componentName$14,
86292
86373
  baseSelector: ':host > .wrapper',
86293
86374
  });
86294
86375
 
86295
86376
  const DEFAULT_INTERVAL = 1000;
86296
86377
 
86297
- class RawTimer extends BaseClass$7 {
86378
+ class RawTimer extends BaseClass$6 {
86298
86379
  #timeRemains = 0;
86299
86380
 
86300
86381
  #intervalId;
86301
86382
 
86302
86383
  static get observedAttributes() {
86303
- return observedAttributes$5.concat(BaseClass$7.observedAttributes || []);
86384
+ return observedAttributes$5.concat(BaseClass$6.observedAttributes || []);
86304
86385
  }
86305
86386
 
86306
86387
  constructor() {
@@ -86509,7 +86590,7 @@ function requireIndex_cjs () {
86509
86590
  vars: vars$T
86510
86591
  });
86511
86592
 
86512
- const componentName$12 = getComponentName('timer-button');
86593
+ const componentName$13 = getComponentName('timer-button');
86513
86594
 
86514
86595
  const buttonAttrs = [
86515
86596
  'button-variant',
@@ -86539,12 +86620,12 @@ function requireIndex_cjs () {
86539
86620
  'timer-paused': 'paused',
86540
86621
  };
86541
86622
 
86542
- const BaseClass$6 = createBaseClass$1({
86543
- componentName: componentName$12,
86623
+ const BaseClass$5 = createBaseClass$1({
86624
+ componentName: componentName$13,
86544
86625
  baseSelector: ':host > div',
86545
86626
  });
86546
86627
 
86547
- class RawTimerButton extends BaseClass$6 {
86628
+ class RawTimerButton extends BaseClass$5 {
86548
86629
  constructor() {
86549
86630
  super();
86550
86631
 
@@ -86795,9 +86876,9 @@ function requireIndex_cjs () {
86795
86876
  vars: vars$S
86796
86877
  });
86797
86878
 
86798
- const componentName$11 = getComponentName('password-strength');
86879
+ const componentName$12 = getComponentName('password-strength');
86799
86880
  class RawPasswordStrength extends createBaseClass$1({
86800
- componentName: componentName$11,
86881
+ componentName: componentName$12,
86801
86882
  baseSelector: ':host > .wrapper',
86802
86883
  }) {
86803
86884
  static get observedAttributes() {
@@ -87000,10 +87081,10 @@ function requireIndex_cjs () {
87000
87081
 
87001
87082
  var chevronIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iYmxhY2siIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xNy4yMTkzIDkuMjcyODNDMTcuNjU4NCA4Ljg3OTEyIDE4LjMzMzQgOC45MTU4NyAxOC43MjcyIDkuMzU0OTJDMTkuMTIwOSA5Ljc5Mzk3IDE5LjA4NDEgMTAuNDY5MSAxOC42NDUxIDEwLjg2MjhDMTguNjQ1MSAxMC44NjI4IDEzLjA0NTcgMTYuMDAyMiAxMi42NCAxNi4zNjZDMTIuMjM0MyAxNi43Mjk4IDExLjc2MDggMTYuNzI5OCAxMS4zNTUyIDE2LjM2Nkw1LjM1NDkyIDEwLjg2MjhDNC45MTU4NyAxMC40NjkxIDQuODc5MTIgOS43OTM5NyA1LjI3MjgzIDkuMzU0OTJDNS42NjY1NSA4LjkxNTg3IDYuMzQxNjQgOC44NzkxMiA2Ljc4MDY5IDkuMjcyODNMMTIgMTQuMTM2OEwxNy4yMTkzIDkuMjcyODNaIi8+Cjwvc3ZnPgo=";
87002
87083
 
87003
- const componentName$10 = getComponentName('collapsible-container');
87084
+ const componentName$11 = getComponentName('collapsible-container');
87004
87085
 
87005
87086
  class RawCollapsibleContainer extends createBaseClass$1({
87006
- componentName: componentName$10,
87087
+ componentName: componentName$11,
87007
87088
  baseSelector: 'slot',
87008
87089
  }) {
87009
87090
  static get observedAttributes() {
@@ -87238,7 +87319,7 @@ function requireIndex_cjs () {
87238
87319
  {
87239
87320
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
87240
87321
  },
87241
- componentName$10
87322
+ componentName$11
87242
87323
  );
87243
87324
 
87244
87325
  const { shadowColor: shadowColor$4 } = helperRefs$4;
@@ -87349,7 +87430,7 @@ function requireIndex_cjs () {
87349
87430
  vars: vars$Q
87350
87431
  });
87351
87432
 
87352
- const componentName$$ = getComponentName('recovery-codes');
87433
+ const componentName$10 = getComponentName('recovery-codes');
87353
87434
 
87354
87435
  const itemRenderer$3 = ({ value }, _, ref) => {
87355
87436
  return `
@@ -87360,7 +87441,7 @@ function requireIndex_cjs () {
87360
87441
  };
87361
87442
 
87362
87443
  class RawRecoveryCodes extends createBaseClass$1({
87363
- componentName: componentName$$,
87444
+ componentName: componentName$10,
87364
87445
  baseSelector: ':host > div',
87365
87446
  }) {
87366
87447
  static get observedAttributes() {
@@ -87528,7 +87609,7 @@ function requireIndex_cjs () {
87528
87609
  vars: vars$P
87529
87610
  });
87530
87611
 
87531
- const componentName$_ = getComponentName('outbound-apps');
87612
+ const componentName$$ = getComponentName('outbound-apps');
87532
87613
 
87533
87614
  const itemRenderer$2 = (
87534
87615
  { name, description, logo, appId, isConnected },
@@ -87573,12 +87654,12 @@ function requireIndex_cjs () {
87573
87654
  `;
87574
87655
  };
87575
87656
 
87576
- const BaseClass$5 = createBaseClass$1({
87577
- componentName: componentName$_,
87657
+ const BaseClass$4 = createBaseClass$1({
87658
+ componentName: componentName$$,
87578
87659
  baseSelector: 'descope-list',
87579
87660
  });
87580
87661
 
87581
- class RawOutboundAppsClass extends BaseClass$5 {
87662
+ class RawOutboundAppsClass extends BaseClass$4 {
87582
87663
  constructor() {
87583
87664
  super();
87584
87665
 
@@ -87790,10 +87871,10 @@ function requireIndex_cjs () {
87790
87871
  vars: vars$O
87791
87872
  });
87792
87873
 
87793
- const componentName$Z = getComponentName('outbound-app-button');
87874
+ const componentName$_ = getComponentName('outbound-app-button');
87794
87875
 
87795
87876
  class RawOutboundAppButton extends createBaseClass$1({
87796
- componentName: componentName$Z,
87877
+ componentName: componentName$_,
87797
87878
  baseSelector: ':host > descope-button',
87798
87879
  }) {
87799
87880
  static get observedAttributes() {
@@ -87975,7 +88056,7 @@ function requireIndex_cjs () {
87975
88056
  };
87976
88057
  };
87977
88058
 
87978
- const componentName$Y = getComponentName('trusted-devices');
88059
+ const componentName$Z = getComponentName('trusted-devices');
87979
88060
 
87980
88061
  const itemRenderer$1 = (
87981
88062
  { id, name, lastLoginDate, deviceType, isCurrent },
@@ -88063,12 +88144,12 @@ function requireIndex_cjs () {
88063
88144
  return template;
88064
88145
  };
88065
88146
 
88066
- const BaseClass$4 = createBaseClass$1({
88067
- componentName: componentName$Y,
88147
+ const BaseClass$3 = createBaseClass$1({
88148
+ componentName: componentName$Z,
88068
88149
  baseSelector: ListClass.componentName,
88069
88150
  });
88070
88151
 
88071
- class RawTrustedDevicesClass extends BaseClass$4 {
88152
+ class RawTrustedDevicesClass extends BaseClass$3 {
88072
88153
  constructor() {
88073
88154
  super();
88074
88155
 
@@ -88398,7 +88479,7 @@ function requireIndex_cjs () {
88398
88479
  vars: vars$M
88399
88480
  });
88400
88481
 
88401
- const componentName$X = getComponentName('tooltip');
88482
+ const componentName$Y = getComponentName('tooltip');
88402
88483
 
88403
88484
  const tooltipAttrs = [
88404
88485
  'text',
@@ -88408,14 +88489,26 @@ function requireIndex_cjs () {
88408
88489
  'opened',
88409
88490
  ];
88410
88491
 
88411
- const BaseClass$3 = createBaseClass$1({
88412
- componentName: componentName$X,
88492
+ class RawTooltip extends createBaseClass$1({
88493
+ componentName: componentName$Y,
88413
88494
  baseSelector: 'vaadin-tooltip',
88414
- });
88495
+ }) {
88496
+ constructor() {
88497
+ super();
88498
+
88499
+ this.attachShadow({ mode: 'open' }).innerHTML = `
88500
+ <descope-anchored>
88501
+ <slot></slot>
88502
+ <vaadin-tooltip slot="anchored"></vaadin-tooltip>
88503
+ </descope-anchored>
88504
+ `;
88505
+
88506
+ this.defaultSlot = this.shadowRoot.querySelector('slot:not([name])');
88507
+ this.tooltip = this.shadowRoot.querySelector('vaadin-tooltip');
88508
+ }
88415
88509
 
88416
- class RawTooltip extends BaseClass$3 {
88417
88510
  static get observedAttributes() {
88418
- return tooltipAttrs.concat(BaseClass$3.observedAttributes || []);
88511
+ return tooltipAttrs.concat(super.observedAttributes || []);
88419
88512
  }
88420
88513
 
88421
88514
  get isOpened() {
@@ -88438,51 +88531,81 @@ function requireIndex_cjs () {
88438
88531
  return this.getAttribute('static-display') === 'true';
88439
88532
  }
88440
88533
 
88534
+ get srLabel() {
88535
+ return this.tooltip?.querySelector('[slot="sr-label"]');
88536
+ }
88537
+
88441
88538
  // We use `static-display` for presentation purposes, to show the tooltip content.
88442
88539
  // This should be used only when `opened` is `true`. Once `static-display` is set,
88443
- // the overlay would become a `static` element, and will have layout in the presenting page.
88444
- // This is mainly aimed to solve the presentation problem on our Styles Page in the Console.
88540
+ // the overlay flows in-line and has layout in the presenting page. Mainly aimed
88541
+ // to solve the presentation problem on our Styles Page in the Console.
88445
88542
  #handleStaticDisplay() {
88446
88543
  if (this.isStaticDisplay) {
88447
- this.#revealWrappedParts();
88544
+ this.#revealOverlay();
88448
88545
  this.setAttribute('inert', 'true');
88449
88546
  } else {
88450
- this.#hideWrappedParts();
88451
88547
  this.removeAttribute('inert');
88452
88548
  }
88453
88549
  }
88454
88550
 
88455
- init() {
88456
- super.init();
88551
+ #revealOverlay() {
88552
+ if (!this.overlay) return;
88553
+ // Keep the overlay in vaadin-tooltip.shadowRoot so adopted stylesheets from
88554
+ // portalMixin continue to apply (they are scoped to that shadow root).
88555
+ // Layout is handled via CSS: anchored-root becomes a column, vaadin-tooltip
88556
+ // becomes a visible block below the anchor, and the sr-label is hidden.
88557
+ this.overlay.style.display = 'block';
88558
+ this.overlay.style.position = 'static';
88559
+ }
88457
88560
 
88458
- // Create the vaadin-tooltip here instead of constructor (for React compatibility)
88459
- this.style.display = 'contents';
88460
- this.insertAdjacentHTML('beforeend', '<vaadin-tooltip></vaadin-tooltip>');
88461
- this.tooltip = this.querySelector('vaadin-tooltip');
88561
+ init() {
88562
+ super.init?.();
88462
88563
 
88463
- this.#hideWrappedParts();
88564
+ injectStyle(
88565
+ `
88566
+ :host {
88567
+ display: inline-block;
88568
+ }
88569
+ vaadin-tooltip {
88570
+ display: block;
88571
+ position: absolute;
88572
+ width: 0;
88573
+ height: 0;
88574
+ overflow: hidden;
88575
+ }
88576
+ /* Stack anchor above the anchored element so the tooltip flows below it inline. */
88577
+ :host([static-display="true"]) descope-anchored::part(root) {
88578
+ flex-direction: column;
88579
+ }
88580
+ :host([static-display="true"]) descope-anchored::part(anchored) {
88581
+ position: static;
88582
+ inset: unset;
88583
+ }
88584
+ :host([static-display="true"]) vaadin-tooltip {
88585
+ position: static;
88586
+ width: auto;
88587
+ height: auto;
88588
+ overflow: visible;
88589
+ }
88590
+ :host([static-display="true"]) vaadin-tooltip [slot="sr-label"] {
88591
+ display: none;
88592
+ }
88593
+ `,
88594
+ this,
88595
+ );
88464
88596
 
88597
+ this.defaultSlot.addEventListener('slotchange', () =>
88598
+ this.#setTooltipTarget(),
88599
+ );
88465
88600
  this.#setTooltipTarget();
88466
88601
 
88467
88602
  setTimeout(() => this.#onOverlayReady());
88468
88603
  }
88469
88604
 
88470
- #hideWrappedParts() {
88471
- this.tooltip.style.width = '0';
88472
- this.tooltip.style.height = '0';
88473
- this.tooltip.style.display = 'block';
88474
- this.tooltip.style.overflow = 'hidden';
88475
- this.tooltip.style.position = 'absolute';
88476
- }
88477
-
88478
- #revealWrappedParts() {
88479
- this.tooltip.style.width = '100%';
88480
- this.tooltip.style.height = '100%';
88481
- this.tooltip.style.position = 'static';
88482
- this.tooltip.style.overflow = 'visible';
88483
- this.tooltip.textContent = '';
88484
- this.overlay.style.display = 'block';
88485
- this.overlay.style.position = 'static';
88605
+ #setTooltipTarget() {
88606
+ const target = this.defaultSlot?.assignedElements()?.[0];
88607
+ if (!target) return;
88608
+ this.tooltip.target = target;
88486
88609
  }
88487
88610
 
88488
88611
  #onOverlayReady() {
@@ -88496,16 +88619,6 @@ function requireIndex_cjs () {
88496
88619
  this.#handleTooltipVisibility();
88497
88620
  }
88498
88621
 
88499
- #setTooltipTarget() {
88500
- if (!this.children?.length) return;
88501
-
88502
- let ele = Array.from(this.children).find((child) => child !== this.tooltip);
88503
-
88504
- if (!ele) return;
88505
-
88506
- this.tooltip.target = ele;
88507
- }
88508
-
88509
88622
  #clearOverlayContentNode() {
88510
88623
  this.overlayContentNode.innerHTML = '';
88511
88624
  }
@@ -88519,10 +88632,6 @@ function requireIndex_cjs () {
88519
88632
  return enrichedText;
88520
88633
  }
88521
88634
 
88522
- get srLabel() {
88523
- return this.tooltip?.querySelector('[slot="sr-label"]');
88524
- }
88525
-
88526
88635
  #initTooltipTextComponent() {
88527
88636
  if (!this.overlayContentNode) return;
88528
88637
 
@@ -88545,25 +88654,35 @@ function requireIndex_cjs () {
88545
88654
  });
88546
88655
  }
88547
88656
 
88548
- // the default vaadin behavior is to attach the overlay to the body when opened
88549
- // we do not want that because it's difficult to style the overlay in this way
88550
- // so we override it to open inside the shadow DOM
88657
+ // The default vaadin behavior is to attach the overlay to the body when opened,
88658
+ // which makes it hard to style. We move the overlay into our shadow root instead.
88659
+ // Critical: vaadin computes position against the overlay's offsetParent moving
88660
+ // it changes that context, so we must call `_updatePosition()` afterwards.
88661
+ // That's vaadin's own position-recompute method (the same one its resize/scroll
88662
+ // listeners use internally), so we get the right reposition without dispatching
88663
+ // global events.
88551
88664
  #overrideAttachOverlay() {
88552
88665
  if (!this.overlay) return;
88553
88666
 
88554
- if (this.isOpened) {
88555
- // When `opened` attr is used, vaadin doesn't execute `_attachOverlay`,
88556
- // and the overlay element is rendered outside the component, on the top
88557
- // level. We need to move it back to the local component's DOM.
88667
+ const originalAttach = this.overlay._attachOverlay?.bind(this.overlay);
88668
+
88669
+ this.overlay._detachOverlay = () => {};
88670
+ this.overlay._attachOverlay = () => {
88671
+ originalAttach?.();
88558
88672
  setTimeout(() => {
88559
88673
  this.tooltip.shadowRoot.appendChild(this.overlay);
88560
- this.#handleStaticDisplay();
88674
+ this.overlay._updatePosition?.();
88561
88675
  });
88562
- } else {
88563
- this.overlay._detachOverlay = () => {};
88676
+ };
88564
88677
 
88565
- this.overlay._attachOverlay = () =>
88678
+ if (this.isOpened) {
88679
+ // When `opened` attr is set at init, vaadin renders the overlay at the top
88680
+ // level without calling `_attachOverlay`. Move it back into our shadow root.
88681
+ setTimeout(() => {
88566
88682
  this.tooltip.shadowRoot.appendChild(this.overlay);
88683
+ this.#handleStaticDisplay();
88684
+ this.overlay._updatePosition?.();
88685
+ });
88567
88686
  }
88568
88687
  }
88569
88688
 
@@ -88605,11 +88724,6 @@ function requireIndex_cjs () {
88605
88724
  content: { selector: () => 'vaadin-tooltip-overlay::part(content)' },
88606
88725
  };
88607
88726
 
88608
- /**
88609
- * This component has no Shadow DOM of its own, so we can't add styles to it
88610
- * (otherwise it would affect the rest of the DOM).
88611
- * Note that all styles are within PortalMixin.
88612
- */
88613
88727
  const TooltipClass = compose(
88614
88728
  componentNameValidationMixin$1,
88615
88729
  portalMixin$1({
@@ -88664,7 +88778,7 @@ function requireIndex_cjs () {
88664
88778
  {
88665
88779
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
88666
88780
  },
88667
- componentName$X
88781
+ componentName$Y
88668
88782
  );
88669
88783
 
88670
88784
  const { shadowColor: shadowColor$3 } = helperRefs$3;
@@ -88762,7 +88876,7 @@ function requireIndex_cjs () {
88762
88876
  const fetchCitiesForCountry = async (countryIso2, baseUrl) =>
88763
88877
  fetchJson(`${baseUrl}/countries/${countryIso2}/cities.json`);
88764
88878
 
88765
- const componentName$W = getComponentName(
88879
+ const componentName$X = getComponentName(
88766
88880
  'country-subdivision-city-field-internal',
88767
88881
  );
88768
88882
 
@@ -88822,7 +88936,7 @@ function requireIndex_cjs () {
88822
88936
  // --- Base class ---
88823
88937
 
88824
88938
  const BaseInputClass$4 = createBaseInputClass$1({
88825
- componentName: componentName$W,
88939
+ componentName: componentName$X,
88826
88940
  baseSelector: '',
88827
88941
  });
88828
88942
 
@@ -88998,7 +89112,7 @@ function requireIndex_cjs () {
88998
89112
  if (e.isTrusted) {
88999
89113
  const firstInvalidCombo = this.#allCombos.find(
89000
89114
  (combo) =>
89001
- !combo.classList.contains(`${componentName$W}-hidden`) &&
89115
+ !combo.classList.contains(`${componentName$X}-hidden`) &&
89002
89116
  !combo.checkValidity(),
89003
89117
  );
89004
89118
  (firstInvalidCombo || this.#getFirstVisibleCombo())?.focus();
@@ -89095,7 +89209,7 @@ function requireIndex_cjs () {
89095
89209
  // Iterate in reverse so reportValidity's focus() lands on the first invalid combo last.
89096
89210
  #handleInvalidCombos() {
89097
89211
  for (const combo of [...this.#allCombos].reverse()) {
89098
- if (combo.classList.contains(`${componentName$W}-hidden`)) continue;
89212
+ if (combo.classList.contains(`${componentName$X}-hidden`)) continue;
89099
89213
  if (!combo.checkValidity()) combo.reportValidity();
89100
89214
  }
89101
89215
  }
@@ -89368,7 +89482,7 @@ function requireIndex_cjs () {
89368
89482
  if (!this.#pendingValue && this.#defaultCountry)
89369
89483
  this.#onCountrySelected(this.#defaultCountry);
89370
89484
  } catch (e) {
89371
- console.error(`[${componentName$W}] Failed to load countries`, e);
89485
+ console.error(`[${componentName$X}] Failed to load countries`, e);
89372
89486
  } finally {
89373
89487
  this.#countryComboBox.removeAttribute('loading');
89374
89488
  }
@@ -89393,7 +89507,7 @@ function requireIndex_cjs () {
89393
89507
  }
89394
89508
  } catch (e) {
89395
89509
  console.error(
89396
- `[${componentName$W}] Failed to load subdivisions for ${countryIso2}`,
89510
+ `[${componentName$X}] Failed to load subdivisions for ${countryIso2}`,
89397
89511
  e,
89398
89512
  );
89399
89513
  this.#subdivisionVisible = false;
@@ -89421,7 +89535,7 @@ function requireIndex_cjs () {
89421
89535
  }
89422
89536
  } catch (e) {
89423
89537
  console.error(
89424
- `[${componentName$W}] Failed to load cities for ${countryIso2}${stateCode ? `/${stateCode}` : ''}`,
89538
+ `[${componentName$X}] Failed to load cities for ${countryIso2}${stateCode ? `/${stateCode}` : ''}`,
89425
89539
  e,
89426
89540
  );
89427
89541
  } finally {
@@ -89513,7 +89627,7 @@ function requireIndex_cjs () {
89513
89627
  }
89514
89628
 
89515
89629
  #setVisible(el, visible) {
89516
- el?.classList.toggle(`${componentName$W}-hidden`, !visible);
89630
+ el?.classList.toggle(`${componentName$X}-hidden`, !visible);
89517
89631
  }
89518
89632
 
89519
89633
  #updateRequiredOnCombos() {
@@ -89583,7 +89697,7 @@ function requireIndex_cjs () {
89583
89697
 
89584
89698
  #getFirstVisibleCombo() {
89585
89699
  return this.#allCombos.find(
89586
- (combo) => !combo.classList.contains(`${componentName$W}-hidden`),
89700
+ (combo) => !combo.classList.contains(`${componentName$X}-hidden`),
89587
89701
  );
89588
89702
  }
89589
89703
 
@@ -89600,7 +89714,7 @@ function requireIndex_cjs () {
89600
89714
  RawCountrySubdivisionCityFieldInternal,
89601
89715
  );
89602
89716
 
89603
- const componentName$V = getComponentName('country-subdivision-city-field');
89717
+ const componentName$W = getComponentName('country-subdivision-city-field');
89604
89718
 
89605
89719
  const customMixin$b = (superclass) =>
89606
89720
  class CountrySubdivisionCityFieldMixinClass extends superclass {
@@ -89610,15 +89724,15 @@ function requireIndex_cjs () {
89610
89724
  const template = document.createElement('template');
89611
89725
 
89612
89726
  template.innerHTML = `
89613
- <${componentName$W}
89727
+ <${componentName$X}
89614
89728
  tabindex="-1"
89615
- ></${componentName$W}>
89729
+ ></${componentName$X}>
89616
89730
  `;
89617
89731
 
89618
89732
  this.baseElement.appendChild(template.content.cloneNode(true));
89619
89733
 
89620
89734
  this.inputElement = this.shadowRoot.querySelector(
89621
- componentName$W,
89735
+ componentName$X,
89622
89736
  );
89623
89737
 
89624
89738
  forwardAttrs(this, this.inputElement, {
@@ -89655,11 +89769,11 @@ function requireIndex_cjs () {
89655
89769
  const host$l = { selector: () => ':host' };
89656
89770
 
89657
89771
  const internalWrapper$2 = {
89658
- selector: `${componentName$W} > .wrapper`,
89772
+ selector: `${componentName$X} > .wrapper`,
89659
89773
  };
89660
89774
 
89661
89775
  const internalComboBoxes = {
89662
- selector: `${componentName$W} > .wrapper > descope-combo-box`,
89776
+ selector: `${componentName$X} > .wrapper > descope-combo-box`,
89663
89777
  };
89664
89778
 
89665
89779
  const CountrySubdivisionCityFieldClass = compose(
@@ -89709,7 +89823,7 @@ function requireIndex_cjs () {
89709
89823
  width: 100%;
89710
89824
  }
89711
89825
 
89712
- ${componentName$W} {
89826
+ ${componentName$X} {
89713
89827
  display: inline-block;
89714
89828
  box-sizing: border-box;
89715
89829
  user-select: none;
@@ -89717,19 +89831,19 @@ function requireIndex_cjs () {
89717
89831
  max-width: 100%;
89718
89832
  }
89719
89833
 
89720
- ${componentName$W} > .wrapper {
89834
+ ${componentName$X} > .wrapper {
89721
89835
  display: flex;
89722
89836
  width: 100%;
89723
89837
  flex-wrap: wrap;
89724
89838
  }
89725
89839
 
89726
- .${componentName$W}-hidden {
89840
+ .${componentName$X}-hidden {
89727
89841
  display: none;
89728
89842
  }
89729
89843
 
89730
89844
  `,
89731
89845
  excludeAttrsSync: ['tabindex', 'style', 'error-message'],
89732
- componentName: componentName$V,
89846
+ componentName: componentName$W,
89733
89847
  }),
89734
89848
  );
89735
89849
 
@@ -89760,7 +89874,7 @@ function requireIndex_cjs () {
89760
89874
  vars: vars$K
89761
89875
  });
89762
89876
 
89763
- const componentName$U = getComponentName('attachment');
89877
+ const componentName$V = getComponentName('attachment');
89764
89878
 
89765
89879
  const ATTACHMENT_POSITIONS = [
89766
89880
  'top-end',
@@ -89774,19 +89888,19 @@ function requireIndex_cjs () {
89774
89888
  const DEFAULT_POSITION = ATTACHMENT_POSITIONS[0];
89775
89889
 
89776
89890
  class RawAttachment extends createBaseClass$1({
89777
- componentName: componentName$U,
89778
- baseSelector: ':host > .wrapper',
89891
+ componentName: componentName$V,
89892
+ baseSelector: 'descope-anchored',
89779
89893
  }) {
89780
89894
  constructor() {
89781
89895
  super();
89782
89896
 
89783
89897
  this.attachShadow({ mode: 'open' }).innerHTML = `
89784
- <div class="wrapper">
89898
+ <descope-anchored>
89785
89899
  <slot></slot>
89786
- <div class="attachment-container">
89900
+ <div slot="anchored" class="attachment-container">
89787
89901
  <slot name="attachment"></slot>
89788
89902
  </div>
89789
- </div>
89903
+ </descope-anchored>
89790
89904
  `;
89791
89905
 
89792
89906
  this.defaultSlot = this.shadowRoot.querySelector('slot:not([name])');
@@ -89795,6 +89909,10 @@ function requireIndex_cjs () {
89795
89909
  );
89796
89910
  }
89797
89911
 
89912
+ get #attachment() {
89913
+ return this.attachmentSlot?.assignedElements()[0];
89914
+ }
89915
+
89798
89916
  static get observedAttributes() {
89799
89917
  return [...(super.observedAttributes || []), 'position'];
89800
89918
  }
@@ -89814,9 +89932,8 @@ function requireIndex_cjs () {
89814
89932
  :host {
89815
89933
  display: inline-block;
89816
89934
  }
89817
- .wrapper {
89818
- position: relative;
89819
- display: inline-flex;
89935
+ :host(.hidden) {
89936
+ display: none;
89820
89937
  }
89821
89938
  .attachment-container {
89822
89939
  position: absolute;
@@ -89827,24 +89944,43 @@ function requireIndex_cjs () {
89827
89944
  align-items: center;
89828
89945
  container-type: inline-size;
89829
89946
  }
89830
- :host(.hidden) {
89831
- display: none;
89832
- }
89833
- `,
89947
+ `,
89834
89948
  this,
89835
89949
  );
89836
89950
 
89837
89951
  this.#handlePositionChange();
89838
89952
 
89839
- this.defaultSlot.addEventListener('slotchange', () => {
89840
- this.#setVisibility();
89841
- this.#syncDirection();
89953
+ // When descope-anchored forwards st-host-direction from the anchor to this container,
89954
+ // propagate it to the attachment elements.
89955
+ const container = this.shadowRoot.querySelector('.attachment-container');
89956
+ observeAttributes(container, () => this.#syncDirection(), {
89957
+ includeAttrs: ['st-host-direction'],
89842
89958
  });
89843
89959
 
89844
- window.requestAnimationFrame(() => {
89960
+ // Re-sync direction when new elements are slotted into the attachment slot.
89961
+ this.attachmentSlot.addEventListener('slotchange', () =>
89962
+ this.#syncDirection(),
89963
+ );
89964
+
89965
+ this.defaultSlot.addEventListener('slotchange', () => {
89845
89966
  this.#setVisibility();
89846
- this.#syncDirection();
89967
+ window.requestAnimationFrame(() => this.#syncAvailableSizeAttr());
89847
89968
  });
89969
+
89970
+ window.requestAnimationFrame(() => this.#setVisibility());
89971
+ }
89972
+
89973
+ #syncAvailableSizeAttr() {
89974
+ const anchor = this.defaultSlot?.assignedElements()?.[0];
89975
+
89976
+ const anchorRect = anchor?.getBoundingClientRect();
89977
+ if (anchorRect) {
89978
+ const availableWidth = anchorRect.width;
89979
+ this.#attachment?.setAttribute(
89980
+ 'data-attachment-size',
89981
+ Number(availableWidth),
89982
+ );
89983
+ }
89848
89984
  }
89849
89985
 
89850
89986
  #setVisibility() {
@@ -89853,16 +89989,14 @@ function requireIndex_cjs () {
89853
89989
  }
89854
89990
 
89855
89991
  #syncDirection() {
89856
- const child = this.defaultSlot?.assignedElements()?.[0];
89857
- if (!child) return;
89858
-
89859
- const { direction } = window.getComputedStyle(child);
89992
+ const direction = this.shadowRoot
89993
+ .querySelector('.attachment-container')
89994
+ ?.getAttribute('st-host-direction');
89860
89995
 
89996
+ if (!direction) return;
89861
89997
  // currently we support direction sync only for web-components-ui
89862
89998
  // elements, which support st-host-direction attribute.
89863
- this.attachmentSlot?.assignedElements().forEach((el) => {
89864
- el.setAttribute('st-host-direction', direction);
89865
- });
89999
+ this.#attachment?.setAttribute('st-host-direction', direction);
89866
90000
  }
89867
90001
 
89868
90002
  get offsetX() {
@@ -91590,7 +91724,7 @@ function requireIndex_cjs () {
91590
91724
  ],
91591
91725
  };
91592
91726
 
91593
- const componentName$T = getComponentName$1('text-field');
91727
+ const componentName$U = getComponentName$1('text-field');
91594
91728
 
91595
91729
  const observedAttrs$3 = ['type', 'label-type', 'copy-to-clipboard'];
91596
91730
 
@@ -91712,11 +91846,11 @@ function requireIndex_cjs () {
91712
91846
  }
91713
91847
  `,
91714
91848
  excludeAttrsSync: ['tabindex', 'style'],
91715
- componentName: componentName$T,
91849
+ componentName: componentName$U,
91716
91850
  })
91717
91851
  );
91718
91852
 
91719
- const componentName$S = getComponentName$1('input-wrapper');
91853
+ const componentName$T = getComponentName$1('input-wrapper');
91720
91854
  const globalRefs$p = getThemeRefs(globals$1);
91721
91855
 
91722
91856
  const [theme$1, refs, vars$I] = createHelperVars(
@@ -91846,7 +91980,7 @@ function requireIndex_cjs () {
91846
91980
  inputTextSecurity: 'disc',
91847
91981
  },
91848
91982
  },
91849
- componentName$S
91983
+ componentName$T
91850
91984
  );
91851
91985
 
91852
91986
  var inputWrapper = /*#__PURE__*/Object.freeze({
@@ -91966,7 +92100,7 @@ function requireIndex_cjs () {
91966
92100
  }
91967
92101
  };
91968
92102
 
91969
- const componentName$R = getComponentName$1('password');
92103
+ const componentName$S = getComponentName$1('password');
91970
92104
 
91971
92105
  const customMixin$9 = (superclass) =>
91972
92106
  class PasswordFieldMixinClass extends superclass {
@@ -92260,7 +92394,7 @@ function requireIndex_cjs () {
92260
92394
  }
92261
92395
  `,
92262
92396
  excludeAttrsSync: ['tabindex', 'style'],
92263
- componentName: componentName$R,
92397
+ componentName: componentName$S,
92264
92398
  })
92265
92399
  );
92266
92400
 
@@ -92323,7 +92457,7 @@ function requireIndex_cjs () {
92323
92457
  vars: vars$G
92324
92458
  });
92325
92459
 
92326
- const componentName$Q = getComponentName$1('number-field');
92460
+ const componentName$R = getComponentName$1('number-field');
92327
92461
 
92328
92462
  const NumberFieldClass = compose$1(
92329
92463
  createStyleMixin({
@@ -92357,7 +92491,7 @@ function requireIndex_cjs () {
92357
92491
  }
92358
92492
  `,
92359
92493
  excludeAttrsSync: ['tabindex', 'style'],
92360
- componentName: componentName$Q,
92494
+ componentName: componentName$R,
92361
92495
  })
92362
92496
  );
92363
92497
 
@@ -92417,7 +92551,7 @@ function requireIndex_cjs () {
92417
92551
  vars: vars$F
92418
92552
  });
92419
92553
 
92420
- const componentName$P = getComponentName$1('email-field');
92554
+ const componentName$Q = getComponentName$1('email-field');
92421
92555
 
92422
92556
  const defaultPattern = "^[\\w\\.\\%\\+\\-']+@[\\w\\.\\-]+\\.[A-Za-z]{2,}$";
92423
92557
  const defaultAutocomplete = 'username';
@@ -92486,7 +92620,7 @@ function requireIndex_cjs () {
92486
92620
  }
92487
92621
  `,
92488
92622
  excludeAttrsSync: ['tabindex', 'style'],
92489
- componentName: componentName$P,
92623
+ componentName: componentName$Q,
92490
92624
  })
92491
92625
  );
92492
92626
 
@@ -92546,7 +92680,7 @@ function requireIndex_cjs () {
92546
92680
  vars: vars$E
92547
92681
  });
92548
92682
 
92549
- const componentName$O = getComponentName$1('text-area');
92683
+ const componentName$P = getComponentName$1('text-area');
92550
92684
 
92551
92685
  const {
92552
92686
  host: host$i,
@@ -92635,7 +92769,7 @@ function requireIndex_cjs () {
92635
92769
  ${resetInputCursor('vaadin-text-area')}
92636
92770
  `,
92637
92771
  excludeAttrsSync: ['tabindex', 'style'],
92638
- componentName: componentName$O,
92772
+ componentName: componentName$P,
92639
92773
  })
92640
92774
  );
92641
92775
 
@@ -92703,9 +92837,9 @@ function requireIndex_cjs () {
92703
92837
  inputEventsDispatchingMixin
92704
92838
  )(createBaseClass(...args));
92705
92839
 
92706
- const componentName$N = getComponentName$1('boolean-field-internal');
92840
+ const componentName$O = getComponentName$1('boolean-field-internal');
92707
92841
 
92708
- createBaseInputClass({ componentName: componentName$N, baseSelector: 'div' });
92842
+ createBaseInputClass({ componentName: componentName$O, baseSelector: 'div' });
92709
92843
 
92710
92844
  const booleanFieldMixin = (superclass) =>
92711
92845
  class BooleanFieldMixinClass extends superclass {
@@ -92714,14 +92848,14 @@ function requireIndex_cjs () {
92714
92848
 
92715
92849
  const template = document.createElement('template');
92716
92850
  template.innerHTML = `
92717
- <${componentName$N}
92851
+ <${componentName$O}
92718
92852
  tabindex="-1"
92719
92853
  slot="input"
92720
- ></${componentName$N}>
92854
+ ></${componentName$O}>
92721
92855
  `;
92722
92856
 
92723
92857
  this.baseElement.appendChild(template.content.cloneNode(true));
92724
- this.inputElement = this.shadowRoot.querySelector(componentName$N);
92858
+ this.inputElement = this.shadowRoot.querySelector(componentName$O);
92725
92859
  this.checkbox = this.inputElement.querySelector('vaadin-checkbox');
92726
92860
 
92727
92861
  forwardAttrs$1(this, this.inputElement, {
@@ -92799,7 +92933,7 @@ descope-enriched-text {
92799
92933
 
92800
92934
  `;
92801
92935
 
92802
- const componentName$M = getComponentName$1('checkbox');
92936
+ const componentName$N = getComponentName$1('checkbox');
92803
92937
 
92804
92938
  const {
92805
92939
  host: host$h,
@@ -92935,7 +93069,7 @@ descope-enriched-text {
92935
93069
  }
92936
93070
  `,
92937
93071
  excludeAttrsSync: ['label', 'tabindex', 'style'],
92938
- componentName: componentName$M,
93072
+ componentName: componentName$N,
92939
93073
  })
92940
93074
  );
92941
93075
 
@@ -92980,7 +93114,7 @@ descope-enriched-text {
92980
93114
  vars: vars$C
92981
93115
  });
92982
93116
 
92983
- const componentName$L = getComponentName$1('switch-toggle');
93117
+ const componentName$M = getComponentName$1('switch-toggle');
92984
93118
 
92985
93119
  const {
92986
93120
  host: host$g,
@@ -93124,7 +93258,7 @@ descope-enriched-text {
93124
93258
  }
93125
93259
  `,
93126
93260
  excludeAttrsSync: ['label', 'tabindex', 'style'],
93127
- componentName: componentName$L,
93261
+ componentName: componentName$M,
93128
93262
  })
93129
93263
  );
93130
93264
 
@@ -93205,9 +93339,9 @@ descope-enriched-text {
93205
93339
  vars: vars$B
93206
93340
  });
93207
93341
 
93208
- const componentName$K = getComponentName$1('container');
93342
+ const componentName$L = getComponentName$1('container');
93209
93343
 
93210
- class RawContainer extends createBaseClass({ componentName: componentName$K, baseSelector: 'slot' }) {
93344
+ class RawContainer extends createBaseClass({ componentName: componentName$L, baseSelector: 'slot' }) {
93211
93345
  constructor() {
93212
93346
  super();
93213
93347
 
@@ -93292,7 +93426,7 @@ descope-enriched-text {
93292
93426
  horizontalAlignment,
93293
93427
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
93294
93428
  },
93295
- componentName$K
93429
+ componentName$L
93296
93430
  );
93297
93431
 
93298
93432
  const { shadowColor: shadowColor$2 } = helperRefs$2;
@@ -93458,10 +93592,10 @@ descope-enriched-text {
93458
93592
  return CssVarImageClass;
93459
93593
  };
93460
93594
 
93461
- const componentName$J = getComponentName$1('logo');
93595
+ const componentName$K = getComponentName$1('logo');
93462
93596
 
93463
93597
  const LogoClass = createCssVarImageClass({
93464
- componentName: componentName$J,
93598
+ componentName: componentName$K,
93465
93599
  varName: 'url',
93466
93600
  fallbackVarName: 'fallbackUrl',
93467
93601
  });
@@ -93478,10 +93612,10 @@ descope-enriched-text {
93478
93612
  vars: vars$z
93479
93613
  });
93480
93614
 
93481
- const componentName$I = getComponentName$1('totp-image');
93615
+ const componentName$J = getComponentName$1('totp-image');
93482
93616
 
93483
93617
  const TotpImageClass = createCssVarImageClass({
93484
- componentName: componentName$I,
93618
+ componentName: componentName$J,
93485
93619
  varName: 'url',
93486
93620
  fallbackVarName: 'fallbackUrl',
93487
93621
  });
@@ -93498,10 +93632,10 @@ descope-enriched-text {
93498
93632
  vars: vars$y
93499
93633
  });
93500
93634
 
93501
- const componentName$H = getComponentName$1('notp-image');
93635
+ const componentName$I = getComponentName$1('notp-image');
93502
93636
 
93503
93637
  const NotpImageClass = createCssVarImageClass({
93504
- componentName: componentName$H,
93638
+ componentName: componentName$I,
93505
93639
  varName: 'url',
93506
93640
  fallbackVarName: 'fallbackUrl',
93507
93641
  });
@@ -93518,8 +93652,8 @@ descope-enriched-text {
93518
93652
  vars: vars$x
93519
93653
  });
93520
93654
 
93521
- const componentName$G = getComponentName$1('divider');
93522
- class RawDivider extends createBaseClass({ componentName: componentName$G, baseSelector: ':host > div' }) {
93655
+ const componentName$H = getComponentName$1('divider');
93656
+ class RawDivider extends createBaseClass({ componentName: componentName$H, baseSelector: ':host > div' }) {
93523
93657
  constructor() {
93524
93658
  super();
93525
93659
 
@@ -93630,7 +93764,7 @@ descope-enriched-text {
93630
93764
  thickness: '2px',
93631
93765
  spacing: '10px',
93632
93766
  },
93633
- componentName$G
93767
+ componentName$H
93634
93768
  );
93635
93769
 
93636
93770
  const divider = {
@@ -93672,13 +93806,13 @@ descope-enriched-text {
93672
93806
  vars: vars$w
93673
93807
  });
93674
93808
 
93675
- const componentName$F = getComponentName$1('passcode-internal');
93809
+ const componentName$G = getComponentName$1('passcode-internal');
93676
93810
 
93677
- createBaseInputClass({ componentName: componentName$F, baseSelector: 'div' });
93811
+ createBaseInputClass({ componentName: componentName$G, baseSelector: 'div' });
93678
93812
 
93679
- const componentName$E = getComponentName$1('loader-radial');
93813
+ const componentName$F = getComponentName$1('loader-radial');
93680
93814
 
93681
- class RawLoaderRadial extends createBaseClass({ componentName: componentName$E, baseSelector: ':host > div' }) {
93815
+ class RawLoaderRadial extends createBaseClass({ componentName: componentName$F, baseSelector: ':host > div' }) {
93682
93816
  constructor() {
93683
93817
  super();
93684
93818
 
@@ -93726,7 +93860,7 @@ descope-enriched-text {
93726
93860
  componentNameValidationMixin
93727
93861
  )(RawLoaderRadial);
93728
93862
 
93729
- const componentName$D = getComponentName$1('passcode');
93863
+ const componentName$E = getComponentName$1('passcode');
93730
93864
 
93731
93865
  const observedAttributes$3 = ['digits'];
93732
93866
 
@@ -93771,18 +93905,18 @@ descope-enriched-text {
93771
93905
  const template = document.createElement('template');
93772
93906
 
93773
93907
  template.innerHTML = `
93774
- <${componentName$F}
93908
+ <${componentName$G}
93775
93909
  bordered="true"
93776
93910
  name="code"
93777
93911
  tabindex="-1"
93778
93912
  slot="input"
93779
93913
  role="textbox"
93780
- ><slot></slot></${componentName$F}>
93914
+ ><slot></slot></${componentName$G}>
93781
93915
  `;
93782
93916
 
93783
93917
  this.baseElement.appendChild(template.content.cloneNode(true));
93784
93918
 
93785
- this.inputElement = this.shadowRoot.querySelector(componentName$F);
93919
+ this.inputElement = this.shadowRoot.querySelector(componentName$G);
93786
93920
 
93787
93921
  forwardAttrs$1(this, this.inputElement, {
93788
93922
  includeAttrs: ['digits', 'size', 'loading', 'disabled'],
@@ -93951,7 +94085,7 @@ descope-enriched-text {
93951
94085
  ${resetInputCursor('vaadin-text-field')}
93952
94086
  `,
93953
94087
  excludeAttrsSync: ['tabindex', 'style'],
93954
- componentName: componentName$D,
94088
+ componentName: componentName$E,
93955
94089
  })
93956
94090
  );
93957
94091
 
@@ -94007,11 +94141,11 @@ descope-enriched-text {
94007
94141
  vars: vars$v
94008
94142
  });
94009
94143
 
94010
- const componentName$C = getComponentName$1('loader-linear');
94144
+ const componentName$D = getComponentName$1('loader-linear');
94011
94145
 
94012
- class RawLoaderLinear extends createBaseClass({ componentName: componentName$C, baseSelector: ':host > div' }) {
94146
+ class RawLoaderLinear extends createBaseClass({ componentName: componentName$D, baseSelector: ':host > div' }) {
94013
94147
  static get componentName() {
94014
- return componentName$C;
94148
+ return componentName$D;
94015
94149
  }
94016
94150
 
94017
94151
  constructor() {
@@ -94136,7 +94270,7 @@ descope-enriched-text {
94136
94270
  },
94137
94271
  },
94138
94272
  },
94139
- componentName$E
94273
+ componentName$F
94140
94274
  );
94141
94275
 
94142
94276
  const loaderRadial = {
@@ -95387,14 +95521,14 @@ descope-enriched-text {
95387
95521
  ].sort((a, b) => (a.name < b.name ? -1 : 1)),
95388
95522
  ];
95389
95523
 
95390
- const componentName$B = getComponentName$1('phone-field-internal');
95524
+ const componentName$C = getComponentName$1('phone-field-internal');
95391
95525
 
95392
- createBaseInputClass({ componentName: componentName$B, baseSelector: 'div' });
95526
+ createBaseInputClass({ componentName: componentName$C, baseSelector: 'div' });
95393
95527
 
95394
95528
  const textVars$2 = TextFieldClass.cssVarList;
95395
95529
  const comboVars = ComboBoxClass.cssVarList;
95396
95530
 
95397
- const componentName$A = getComponentName$1('phone-field');
95531
+ const componentName$B = getComponentName$1('phone-field');
95398
95532
 
95399
95533
  const customMixin$6 = (superclass) =>
95400
95534
  class PhoneFieldMixinClass extends superclass {
@@ -95408,15 +95542,15 @@ descope-enriched-text {
95408
95542
  const template = document.createElement('template');
95409
95543
 
95410
95544
  template.innerHTML = `
95411
- <${componentName$B}
95545
+ <${componentName$C}
95412
95546
  tabindex="-1"
95413
95547
  slot="input"
95414
- ></${componentName$B}>
95548
+ ></${componentName$C}>
95415
95549
  `;
95416
95550
 
95417
95551
  this.baseElement.appendChild(template.content.cloneNode(true));
95418
95552
 
95419
- this.inputElement = this.shadowRoot.querySelector(componentName$B);
95553
+ this.inputElement = this.shadowRoot.querySelector(componentName$C);
95420
95554
 
95421
95555
  forwardAttrs$1(this.shadowRoot.host, this.inputElement, {
95422
95556
  includeAttrs: [
@@ -95699,7 +95833,7 @@ descope-enriched-text {
95699
95833
  ${resetInputLabelPosition('vaadin-text-field')}
95700
95834
  `,
95701
95835
  excludeAttrsSync: ['tabindex', 'style'],
95702
- componentName: componentName$A,
95836
+ componentName: componentName$B,
95703
95837
  })
95704
95838
  );
95705
95839
 
@@ -95751,13 +95885,13 @@ descope-enriched-text {
95751
95885
  vars: vars$s
95752
95886
  });
95753
95887
 
95754
- const componentName$z = getComponentName$1('phone-field-internal-input-box');
95888
+ const componentName$A = getComponentName$1('phone-field-internal-input-box');
95755
95889
 
95756
- createBaseInputClass({ componentName: componentName$z, baseSelector: 'div' });
95890
+ createBaseInputClass({ componentName: componentName$A, baseSelector: 'div' });
95757
95891
 
95758
95892
  const textVars$1 = TextFieldClass.cssVarList;
95759
95893
 
95760
- const componentName$y = getComponentName$1('phone-input-box-field');
95894
+ const componentName$z = getComponentName$1('phone-input-box-field');
95761
95895
 
95762
95896
  const customMixin$5 = (superclass) =>
95763
95897
  class PhoneFieldInputBoxMixinClass extends superclass {
@@ -95771,15 +95905,15 @@ descope-enriched-text {
95771
95905
  const template = document.createElement('template');
95772
95906
 
95773
95907
  template.innerHTML = `
95774
- <${componentName$z}
95908
+ <${componentName$A}
95775
95909
  tabindex="-1"
95776
95910
  slot="input"
95777
- ></${componentName$z}>
95911
+ ></${componentName$A}>
95778
95912
  `;
95779
95913
 
95780
95914
  this.baseElement.appendChild(template.content.cloneNode(true));
95781
95915
 
95782
- this.inputElement = this.shadowRoot.querySelector(componentName$z);
95916
+ this.inputElement = this.shadowRoot.querySelector(componentName$A);
95783
95917
 
95784
95918
  syncAttrs(this, this.inputElement, { includeAttrs: ['has-value'] });
95785
95919
 
@@ -95991,7 +96125,7 @@ descope-enriched-text {
95991
96125
  ${inputFloatingLabelStyle()}
95992
96126
  `,
95993
96127
  excludeAttrsSync: ['tabindex', 'style'],
95994
- componentName: componentName$y,
96128
+ componentName: componentName$z,
95995
96129
  })
95996
96130
  );
95997
96131
 
@@ -96051,12 +96185,12 @@ descope-enriched-text {
96051
96185
  vars: vars$r
96052
96186
  });
96053
96187
 
96054
- const componentName$x = getComponentName$1('new-password-internal');
96188
+ const componentName$y = getComponentName$1('new-password-internal');
96055
96189
 
96056
96190
  const interpolateString = (template, values) =>
96057
96191
  template.replace(/{{(\w+)+}}/g, (match, key) => values?.[key] || match);
96058
96192
 
96059
- const componentName$w = getComponentName$1('policy-validation');
96193
+ const componentName$x = getComponentName$1('policy-validation');
96060
96194
 
96061
96195
  const overrideAttrs = [
96062
96196
  'data-password-policy-value-minlength',
@@ -96066,7 +96200,7 @@ descope-enriched-text {
96066
96200
  const dataAttrs = ['data', 'active-policies', 'overrides', ...overrideAttrs];
96067
96201
  const policyAttrs = ['label', 'value', ...dataAttrs];
96068
96202
 
96069
- class RawPolicyValidation extends createBaseClass({ componentName: componentName$w, baseSelector: ':host > div' }) {
96203
+ class RawPolicyValidation extends createBaseClass({ componentName: componentName$x, baseSelector: ':host > div' }) {
96070
96204
  #availablePolicies;
96071
96205
 
96072
96206
  #activePolicies = [];
@@ -96338,7 +96472,7 @@ descope-enriched-text {
96338
96472
  componentNameValidationMixin
96339
96473
  )(RawPolicyValidation);
96340
96474
 
96341
- const componentName$v = getComponentName$1('new-password');
96475
+ const componentName$w = getComponentName$1('new-password');
96342
96476
 
96343
96477
  const policyPreviewVars = PolicyValidationClass.cssVarList;
96344
96478
 
@@ -96352,18 +96486,18 @@ descope-enriched-text {
96352
96486
  const externalInputAttr = this.getAttribute('external-input');
96353
96487
 
96354
96488
  template.innerHTML = `
96355
- <${componentName$x}
96489
+ <${componentName$y}
96356
96490
  name="new-password"
96357
96491
  tabindex="-1"
96358
96492
  slot="input"
96359
96493
  external-input="${externalInputAttr}"
96360
96494
  >
96361
- </${componentName$x}>
96495
+ </${componentName$y}>
96362
96496
  `;
96363
96497
 
96364
96498
  this.baseElement.appendChild(template.content.cloneNode(true));
96365
96499
 
96366
- this.inputElement = this.shadowRoot.querySelector(componentName$x);
96500
+ this.inputElement = this.shadowRoot.querySelector(componentName$y);
96367
96501
 
96368
96502
  if (this.getAttribute('external-input') === 'true') {
96369
96503
  this.initExternalInput();
@@ -96558,7 +96692,7 @@ descope-enriched-text {
96558
96692
  }
96559
96693
  `,
96560
96694
  excludeAttrsSync: ['tabindex', 'style'],
96561
- componentName: componentName$v,
96695
+ componentName: componentName$w,
96562
96696
  })
96563
96697
  );
96564
96698
 
@@ -96615,7 +96749,7 @@ descope-enriched-text {
96615
96749
 
96616
96750
  const getFilename = (fileObj) => fileObj.name.replace(/^.*\\/, '');
96617
96751
 
96618
- const componentName$u = getComponentName$1('upload-file');
96752
+ const componentName$v = getComponentName$1('upload-file');
96619
96753
 
96620
96754
  const observedAttributes$2 = [
96621
96755
  'title',
@@ -96630,7 +96764,7 @@ descope-enriched-text {
96630
96764
  'icon',
96631
96765
  ];
96632
96766
 
96633
- const BaseInputClass$3 = createBaseInputClass({ componentName: componentName$u, baseSelector: ':host > div' });
96767
+ const BaseInputClass$3 = createBaseInputClass({ componentName: componentName$v, baseSelector: ':host > div' });
96634
96768
 
96635
96769
  class RawUploadFile extends BaseInputClass$3 {
96636
96770
  static get observedAttributes() {
@@ -96916,10 +97050,10 @@ descope-enriched-text {
96916
97050
  vars: vars$p
96917
97051
  });
96918
97052
 
96919
- const componentName$t = getComponentName$1('button-selection-group-item');
97053
+ const componentName$u = getComponentName$1('button-selection-group-item');
96920
97054
 
96921
97055
  class RawSelectItem extends createBaseClass({
96922
- componentName: componentName$t,
97056
+ componentName: componentName$u,
96923
97057
  baseSelector: ':host > descope-button',
96924
97058
  }) {
96925
97059
  get size() {
@@ -97151,10 +97285,10 @@ descope-enriched-text {
97151
97285
  return BaseButtonSelectionGroupInternalClass;
97152
97286
  };
97153
97287
 
97154
- const componentName$s = getComponentName$1('button-selection-group-internal');
97288
+ const componentName$t = getComponentName$1('button-selection-group-internal');
97155
97289
 
97156
97290
  class ButtonSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(
97157
- componentName$s
97291
+ componentName$t
97158
97292
  ) {
97159
97293
  getSelectedNode() {
97160
97294
  return this.items.find((item) => item.hasAttribute('selected'));
@@ -97397,7 +97531,7 @@ descope-enriched-text {
97397
97531
  ${resetInputCursor('vaadin-text-field')}
97398
97532
  `;
97399
97533
 
97400
- const componentName$r = getComponentName$1('button-selection-group');
97534
+ const componentName$s = getComponentName$1('button-selection-group');
97401
97535
 
97402
97536
  const buttonSelectionGroupMixin = (superclass) =>
97403
97537
  class ButtonMultiSelectionGroupMixinClass extends superclass {
@@ -97406,19 +97540,19 @@ descope-enriched-text {
97406
97540
  const template = document.createElement('template');
97407
97541
 
97408
97542
  template.innerHTML = `
97409
- <${componentName$s}
97543
+ <${componentName$t}
97410
97544
  name="button-selection-group"
97411
97545
  slot="input"
97412
97546
  tabindex="-1"
97413
97547
  part="internal-component"
97414
97548
  >
97415
97549
  <slot></slot>
97416
- </${componentName$s}>
97550
+ </${componentName$t}>
97417
97551
  `;
97418
97552
 
97419
97553
  this.baseElement.appendChild(template.content.cloneNode(true));
97420
97554
 
97421
- this.inputElement = this.shadowRoot.querySelector(componentName$s);
97555
+ this.inputElement = this.shadowRoot.querySelector(componentName$t);
97422
97556
 
97423
97557
  forwardAttrs$1(this, this.inputElement, {
97424
97558
  includeAttrs: ['size', 'default-value', 'allow-deselect'],
@@ -97443,7 +97577,7 @@ descope-enriched-text {
97443
97577
  wrappedEleName: 'vaadin-text-field',
97444
97578
  style: () => buttonSelectionGroupStyles,
97445
97579
  excludeAttrsSync: ['tabindex', 'style'],
97446
- componentName: componentName$r,
97580
+ componentName: componentName$s,
97447
97581
  })
97448
97582
  );
97449
97583
 
@@ -97480,10 +97614,10 @@ descope-enriched-text {
97480
97614
  vars: vars$n
97481
97615
  });
97482
97616
 
97483
- const componentName$q = getComponentName$1('button-multi-selection-group-internal');
97617
+ const componentName$r = getComponentName$1('button-multi-selection-group-internal');
97484
97618
 
97485
97619
  class ButtonMultiSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(
97486
- componentName$q
97620
+ componentName$r
97487
97621
  ) {
97488
97622
  #getSelectedNodes() {
97489
97623
  return this.items.filter((item) => item.hasAttribute('selected'));
@@ -97585,7 +97719,7 @@ descope-enriched-text {
97585
97719
  }
97586
97720
  }
97587
97721
 
97588
- const componentName$p = getComponentName$1('button-multi-selection-group');
97722
+ const componentName$q = getComponentName$1('button-multi-selection-group');
97589
97723
 
97590
97724
  const buttonMultiSelectionGroupMixin = (superclass) =>
97591
97725
  class ButtonMultiSelectionGroupMixinClass extends superclass {
@@ -97594,19 +97728,19 @@ descope-enriched-text {
97594
97728
  const template = document.createElement('template');
97595
97729
 
97596
97730
  template.innerHTML = `
97597
- <${componentName$q}
97731
+ <${componentName$r}
97598
97732
  name="button-selection-group"
97599
97733
  slot="input"
97600
97734
  tabindex="-1"
97601
97735
  part="internal-component"
97602
97736
  >
97603
97737
  <slot></slot>
97604
- </${componentName$q}>
97738
+ </${componentName$r}>
97605
97739
  `;
97606
97740
 
97607
97741
  this.baseElement.appendChild(template.content.cloneNode(true));
97608
97742
 
97609
- this.inputElement = this.shadowRoot.querySelector(componentName$q);
97743
+ this.inputElement = this.shadowRoot.querySelector(componentName$r);
97610
97744
 
97611
97745
  forwardAttrs$1(this, this.inputElement, {
97612
97746
  includeAttrs: ['size', 'default-values', 'min-items-selection', 'max-items-selection'],
@@ -97631,7 +97765,7 @@ descope-enriched-text {
97631
97765
  wrappedEleName: 'vaadin-text-field',
97632
97766
  style: () => buttonSelectionGroupStyles,
97633
97767
  excludeAttrsSync: ['tabindex', 'style'],
97634
- componentName: componentName$p,
97768
+ componentName: componentName$q,
97635
97769
  })
97636
97770
  );
97637
97771
 
@@ -97647,7 +97781,7 @@ descope-enriched-text {
97647
97781
  vars: vars$m
97648
97782
  });
97649
97783
 
97650
- const componentName$o = getComponentName$1('modal');
97784
+ const componentName$p = getComponentName$1('modal');
97651
97785
 
97652
97786
  const observedAttrs$2 = ['opened'];
97653
97787
 
@@ -97796,7 +97930,7 @@ descope-enriched-text {
97796
97930
  }
97797
97931
  `,
97798
97932
  excludeAttrsSync: ['tabindex', 'opened', 'style'],
97799
- componentName: componentName$o,
97933
+ componentName: componentName$p,
97800
97934
  })
97801
97935
  );
97802
97936
 
@@ -97907,7 +98041,7 @@ descope-enriched-text {
97907
98041
  </div>
97908
98042
  `;
97909
98043
 
97910
- const componentName$n = getComponentName$1('grid');
98044
+ const componentName$o = getComponentName$1('grid');
97911
98045
 
97912
98046
  const GridMixin = (superclass) =>
97913
98047
  class GridMixinClass extends superclass {
@@ -98276,7 +98410,7 @@ descope-enriched-text {
98276
98410
  /*!css*/
98277
98411
  `,
98278
98412
  excludeAttrsSync: ['columns', 'tabindex', 'style'],
98279
- componentName: componentName$n,
98413
+ componentName: componentName$o,
98280
98414
  })
98281
98415
  );
98282
98416
 
@@ -98332,7 +98466,7 @@ descope-enriched-text {
98332
98466
  vars: vars$k
98333
98467
  });
98334
98468
 
98335
- const componentName$m = getComponentName$1('notification-card');
98469
+ const componentName$n = getComponentName$1('notification-card');
98336
98470
 
98337
98471
  const notificationCardMixin = (superclass) =>
98338
98472
  class NotificationCardMixinClass extends superclass {
@@ -98440,7 +98574,7 @@ descope-enriched-text {
98440
98574
  }
98441
98575
  `,
98442
98576
  excludeAttrsSync: ['tabindex', 'style'],
98443
- componentName: componentName$m,
98577
+ componentName: componentName$n,
98444
98578
  })
98445
98579
  );
98446
98580
 
@@ -98498,7 +98632,7 @@ descope-enriched-text {
98498
98632
  vars: vars$j
98499
98633
  });
98500
98634
 
98501
- const componentName$l = getComponentName$1('multi-select-combo-box');
98635
+ const componentName$m = getComponentName$1('multi-select-combo-box');
98502
98636
 
98503
98637
  const multiSelectComboBoxMixin = (superclass) =>
98504
98638
  class MultiSelectComboBoxMixinClass extends superclass {
@@ -99153,7 +99287,7 @@ descope-enriched-text {
99153
99287
  // Note: we exclude `placeholder` because the vaadin component observes it and
99154
99288
  // tries to override it, causing us to lose the user set placeholder.
99155
99289
  excludeAttrsSync: ['tabindex', 'size', 'data', 'placeholder', 'style'],
99156
- componentName: componentName$l,
99290
+ componentName: componentName$m,
99157
99291
  includeForwardProps: ['items', 'renderer', 'selectedItems'],
99158
99292
  })
99159
99293
  );
@@ -99249,11 +99383,11 @@ descope-enriched-text {
99249
99383
  vars: vars$i
99250
99384
  });
99251
99385
 
99252
- const componentName$k = getComponentName$1('mappings-field-internal');
99386
+ const componentName$l = getComponentName$1('mappings-field-internal');
99253
99387
 
99254
- createBaseInputClass({ componentName: componentName$k, baseSelector: 'div' });
99388
+ createBaseInputClass({ componentName: componentName$l, baseSelector: 'div' });
99255
99389
 
99256
- const componentName$j = getComponentName$1('mappings-field');
99390
+ const componentName$k = getComponentName$1('mappings-field');
99257
99391
 
99258
99392
  const customMixin$2 = (superclass) =>
99259
99393
  class MappingsFieldMixinClass extends superclass {
@@ -99282,14 +99416,14 @@ descope-enriched-text {
99282
99416
  const template = document.createElement('template');
99283
99417
 
99284
99418
  template.innerHTML = `
99285
- <${componentName$k}
99419
+ <${componentName$l}
99286
99420
  tabindex="-1"
99287
- ></${componentName$k}>
99421
+ ></${componentName$l}>
99288
99422
  `;
99289
99423
 
99290
99424
  this.baseElement.appendChild(template.content.cloneNode(true));
99291
99425
 
99292
- this.inputElement = this.shadowRoot.querySelector(componentName$k);
99426
+ this.inputElement = this.shadowRoot.querySelector(componentName$l);
99293
99427
 
99294
99428
  forwardAttrs$1(this, this.inputElement, {
99295
99429
  includeAttrs: [
@@ -99425,7 +99559,7 @@ descope-enriched-text {
99425
99559
  'error-message',
99426
99560
  'style',
99427
99561
  ],
99428
- componentName: componentName$j,
99562
+ componentName: componentName$k,
99429
99563
  })
99430
99564
  );
99431
99565
 
@@ -99463,9 +99597,9 @@ descope-enriched-text {
99463
99597
 
99464
99598
  var editIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxNSAxNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBkPSJNMTAuMDAwMiAwLjk5MjE0OUMxMC4wMDAyIDEuMDE2MTUgMTAuMDAwMiAxLjAxNjE1IDEwLjAwMDIgMS4wMTYxNUw4LjIyNDE5IDMuMDA4MTVIMi45OTIxOUMyLjQ2NDE5IDMuMDA4MTUgMi4wMDgxOSAzLjQ0MDE1IDIuMDA4MTkgMy45OTIxNVYxMi4wMDgyQzIuMDA4MTkgMTIuNTM2MiAyLjQ0MDE5IDEyLjk5MjIgMi45OTIxOSAxMi45OTIySDUuNTM2MTlDNS44NDgxOSAxMy4wNDAyIDYuMTYwMTkgMTMuMDQwMiA2LjQ3MjE5IDEyLjk5MjJIMTEuMDA4MkMxMS41MzYyIDEyLjk5MjIgMTEuOTkyMiAxMi41NjAyIDExLjk5MjIgMTIuMDA4MlY3Ljc4NDE2TDEzLjkzNjIgNS42MjQxNUwxNC4wMDgyIDUuNjcyMTVWMTEuOTg0MkMxNC4wMDgyIDEzLjY2NDIgMTIuNjY0MiAxNS4wMDgyIDExLjAwODIgMTUuMDA4MkgzLjAxNjE5QzEuMzM2MTkgMTUuMDA4MiAtMC4wMDc4MTI1IDEzLjY2NDIgLTAuMDA3ODEyNSAxMS45ODQyVjMuOTkyMTVDLTAuMDA3ODEyNSAyLjMzNjE1IDEuMzM2MTkgMC45OTIxNDkgMy4wMTYxOSAwLjk5MjE0OUgxMC4wMDAyWk0xMS4yNzIyIDIuNjI0MTVMMTIuNjE2MiA0LjExMjE1TDcuNzIwMTkgOS42ODAxNkM3LjUwNDE5IDkuOTIwMTYgNi44MzIxOSAxMC4yMzIyIDUuNjgwMTkgMTAuNjE2MkM1LjY1NjE5IDEwLjY0MDIgNS42MDgxOSAxMC42NDAyIDUuNTYwMTkgMTAuNjE2MkM1LjQ2NDE5IDEwLjU5MjIgNS4zOTIxOSAxMC40NzIyIDUuNDQwMTkgMTAuMzc2MkM1Ljc1MjE5IDkuMjQ4MTYgNi4wNDAxOSA4LjU1MjE2IDYuMjU2MTkgOC4zMTIxNkwxMS4yNzIyIDIuNjI0MTVaTTExLjkyMDIgMS44NTYxNUwxMy4yODgyIDAuMzIwMTQ5QzEzLjY0ODIgLTAuMDg3ODUxNiAxNC4yNzIyIC0wLjExMTg1MiAxNC42ODAyIDAuMjcyMTQ5QzE1LjA4ODIgMC42MzIxNDkgMTUuMTEyMiAxLjI4MDE1IDE0Ljc1MjIgMS42ODgxNUwxMy4yNjQyIDMuMzY4MTVMMTEuOTIwMiAxLjg1NjE1WiIgZmlsbD0iY3VycmVudGNvbG9yIi8+Cjwvc3ZnPgo=";
99465
99599
 
99466
- const componentName$i = getComponentName$1('user-attribute');
99600
+ const componentName$j = getComponentName$1('user-attribute');
99467
99601
  class RawUserAttribute extends createBaseClass({
99468
- componentName: componentName$i,
99602
+ componentName: componentName$j,
99469
99603
  baseSelector: ':host > .root',
99470
99604
  }) {
99471
99605
  constructor() {
@@ -99813,9 +99947,9 @@ descope-enriched-text {
99813
99947
 
99814
99948
  var greenVIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTggMEMzLjYgMCAwIDMuNiAwIDhDMCAxMi40IDMuNiAxNiA4IDE2QzEyLjQgMTYgMTYgMTIuNCAxNiA4QzE2IDMuNiAxMi40IDAgOCAwWk03LjEgMTEuN0wyLjkgNy42TDQuMyA2LjJMNyA4LjlMMTIgNEwxMy40IDUuNEw3LjEgMTEuN1oiIGZpbGw9IiM0Q0FGNTAiLz4KPC9zdmc+Cg==";
99815
99949
 
99816
- const componentName$h = getComponentName$1('user-auth-method');
99950
+ const componentName$i = getComponentName$1('user-auth-method');
99817
99951
  class RawUserAuthMethod extends createBaseClass({
99818
- componentName: componentName$h,
99952
+ componentName: componentName$i,
99819
99953
  baseSelector: ':host > .root',
99820
99954
  }) {
99821
99955
  constructor() {
@@ -100088,11 +100222,11 @@ descope-enriched-text {
100088
100222
  vars: vars$f
100089
100223
  });
100090
100224
 
100091
- const componentName$g = getComponentName$1('saml-group-mappings-internal');
100225
+ const componentName$h = getComponentName$1('saml-group-mappings-internal');
100092
100226
 
100093
- createBaseInputClass({ componentName: componentName$g, baseSelector: '' });
100227
+ createBaseInputClass({ componentName: componentName$h, baseSelector: '' });
100094
100228
 
100095
- const componentName$f = getComponentName$1('saml-group-mappings');
100229
+ const componentName$g = getComponentName$1('saml-group-mappings');
100096
100230
 
100097
100231
  const customMixin$1 = (superclass) =>
100098
100232
  class SamlGroupMappingsMixinClass extends superclass {
@@ -100102,14 +100236,14 @@ descope-enriched-text {
100102
100236
  const template = document.createElement('template');
100103
100237
 
100104
100238
  template.innerHTML = `
100105
- <${componentName$g}
100239
+ <${componentName$h}
100106
100240
  tabindex="-1"
100107
- ></${componentName$g}>
100241
+ ></${componentName$h}>
100108
100242
  `;
100109
100243
 
100110
100244
  this.baseElement.appendChild(template.content.cloneNode(true));
100111
100245
 
100112
- this.inputElement = this.shadowRoot.querySelector(componentName$g);
100246
+ this.inputElement = this.shadowRoot.querySelector(componentName$h);
100113
100247
 
100114
100248
  forwardAttrs$1(this, this.inputElement, {
100115
100249
  includeAttrs: [
@@ -100194,7 +100328,7 @@ descope-enriched-text {
100194
100328
  'error-message',
100195
100329
  'style',
100196
100330
  ],
100197
- componentName: componentName$f,
100331
+ componentName: componentName$g,
100198
100332
  })
100199
100333
  );
100200
100334
 
@@ -100261,9 +100395,9 @@ descope-enriched-text {
100261
100395
 
100262
100396
  var checkIconSrc = "data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iY2hlY2staWNvbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICA8cG9seWxpbmUgcG9pbnRzPSIyMCA2IDkgMTcgNCAxMiI+PC9wb2x5bGluZT4KPC9zdmc+Cg==";
100263
100397
 
100264
- const componentName$e = getComponentName$1('code-snippet');
100398
+ const componentName$f = getComponentName$1('code-snippet');
100265
100399
 
100266
- let CodeSnippet$1 = class CodeSnippet extends createBaseClass({ componentName: componentName$e, baseSelector: ':host > .wrapper' }) {
100400
+ let CodeSnippet$1 = class CodeSnippet extends createBaseClass({ componentName: componentName$f, baseSelector: ':host > .wrapper' }) {
100267
100401
  static get observedAttributes() {
100268
100402
  return ['lang', 'inline', 'copy-button'];
100269
100403
  }
@@ -100746,7 +100880,7 @@ descope-enriched-text {
100746
100880
  vars: vars$c
100747
100881
  });
100748
100882
 
100749
- const componentName$d = getComponentName$1('radio-button');
100883
+ const componentName$e = getComponentName$1('radio-button');
100750
100884
 
100751
100885
  const customMixin = (superclass) =>
100752
100886
  class CustomMixin extends superclass {
@@ -100811,11 +100945,11 @@ descope-enriched-text {
100811
100945
  wrappedEleName: 'vaadin-radio-button',
100812
100946
  excludeAttrsSync: ['tabindex', 'data', 'style'],
100813
100947
  includeForwardProps: ['checked', 'name', 'disabled'],
100814
- componentName: componentName$d,
100948
+ componentName: componentName$e,
100815
100949
  })
100816
100950
  );
100817
100951
 
100818
- const componentName$c = getComponentName$1('radio-group');
100952
+ const componentName$d = getComponentName$1('radio-group');
100819
100953
 
100820
100954
  const RadioGroupMixin = (superclass) =>
100821
100955
  class RadioGroupMixinClass extends superclass {
@@ -100829,12 +100963,12 @@ descope-enriched-text {
100829
100963
 
100830
100964
  // we are overriding vaadin children getter so it will run on our custom elements
100831
100965
  Object.defineProperty(this.baseElement, 'children', {
100832
- get: () => this.querySelectorAll(componentName$d),
100966
+ get: () => this.querySelectorAll(componentName$e),
100833
100967
  });
100834
100968
 
100835
100969
  // we are overriding vaadin __filterRadioButtons so it will run on our custom elements
100836
100970
  this.baseElement.__filterRadioButtons = (nodes) =>
100837
- nodes.filter((node) => node.localName === componentName$d);
100971
+ nodes.filter((node) => node.localName === componentName$e);
100838
100972
 
100839
100973
  // vaadin radio group missing some input properties
100840
100974
  this.baseElement.setCustomValidity = () => {};
@@ -100980,7 +101114,7 @@ descope-enriched-text {
100980
101114
  `,
100981
101115
 
100982
101116
  excludeAttrsSync: ['tabindex', 'size', 'data', 'direction', 'style'],
100983
- componentName: componentName$c,
101117
+ componentName: componentName$d,
100984
101118
  includeForwardProps: ['value'],
100985
101119
  })
100986
101120
  );
@@ -101426,7 +101560,7 @@ descope-enriched-text {
101426
101560
  return date;
101427
101561
  };
101428
101562
 
101429
- const componentName$b = getComponentName$1('calendar');
101563
+ const componentName$c = getComponentName$1('calendar');
101430
101564
 
101431
101565
  const observedAttrs$1 = [
101432
101566
  'initial-value',
@@ -101443,7 +101577,7 @@ descope-enriched-text {
101443
101577
 
101444
101578
  const calendarUiAttrs = ['calendar-label-submit', 'calendar-label-cancel'];
101445
101579
 
101446
- const BaseInputClass$2 = createBaseInputClass({ componentName: componentName$b, baseSelector: 'div' });
101580
+ const BaseInputClass$2 = createBaseInputClass({ componentName: componentName$c, baseSelector: 'div' });
101447
101581
 
101448
101582
  class RawCalendar extends BaseInputClass$2 {
101449
101583
  static get observedAttributes() {
@@ -102272,12 +102406,12 @@ descope-enriched-text {
102272
102406
  }
102273
102407
  }
102274
102408
 
102275
- const componentName$a = getComponentName$1('date-field');
102409
+ const componentName$b = getComponentName$1('date-field');
102276
102410
 
102277
102411
  // we set baseSelector to `vaadin-popover` as a temporary hack, so our portalMixin will
102278
102412
  // be able to process this component's overlay. The whole process needs refactoring as soon as possible.
102279
102413
  const BASE_SELECTOR = 'vaadin-popover';
102280
- const BaseInputClass$1 = createBaseInputClass({ componentName: componentName$a, baseSelector: BASE_SELECTOR });
102414
+ const BaseInputClass$1 = createBaseInputClass({ componentName: componentName$b, baseSelector: BASE_SELECTOR });
102281
102415
 
102282
102416
  const dateFieldAttrs = [
102283
102417
  'format',
@@ -103357,7 +103491,7 @@ descope-enriched-text {
103357
103491
  }
103358
103492
  };
103359
103493
 
103360
- const componentName$9 = getComponentName$1('scopes-list');
103494
+ const componentName$a = getComponentName$1('scopes-list');
103361
103495
  const variants = ['checkbox', 'switch'];
103362
103496
 
103363
103497
  const itemRenderer = ({ id, desc, required = false }, _, ref) => {
@@ -103376,7 +103510,7 @@ descope-enriched-text {
103376
103510
  `;
103377
103511
  };
103378
103512
 
103379
- class RawScopesList extends createBaseClass({ componentName: componentName$9, baseSelector: 'div' }) {
103513
+ class RawScopesList extends createBaseClass({ componentName: componentName$a, baseSelector: 'div' }) {
103380
103514
  constructor() {
103381
103515
  super();
103382
103516
 
@@ -103500,9 +103634,9 @@ descope-enriched-text {
103500
103634
 
103501
103635
  var arrowsImg = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOSAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTkuMTQ0OTIgMTUuNjQ1TDcuNDk5OTIgMTRMMi44MzMyNSAxOC42NjY3TDcuNDk5OTIgMjMuMzMzM0w5LjE0NDkyIDIxLjY4ODNMNy4zMDE1OSAxOS44MzMzSDI0Ljk5OTlWMTcuNUg3LjMwMTU5TDkuMTQ0OTIgMTUuNjQ1WiIgZmlsbD0iIzYzNkM3NCIvPgo8cGF0aCBkPSJNMTkuODU1IDEyLjM1NTNMMjEuNSAxNC4wMDAzTDI2LjE2NjcgOS4zMzM2NkwyMS41IDQuNjY2OTlMMTkuODU1IDYuMzExOTlMMjEuNjk4MyA4LjE2Njk5SDRWMTAuNTAwM0gyMS42OTgzTDE5Ljg1NSAxMi4zNTUzWiIgZmlsbD0iIzYzNkM3NCIvPgo8L3N2Zz4K";
103502
103636
 
103503
- const componentName$8 = getComponentName$1('third-party-app-logo');
103637
+ const componentName$9 = getComponentName$1('third-party-app-logo');
103504
103638
  class RawThirdPartyAppLogoClass extends createBaseClass({
103505
- componentName: componentName$8,
103639
+ componentName: componentName$9,
103506
103640
  baseSelector: '.wrapper',
103507
103641
  }) {
103508
103642
  constructor() {
@@ -103635,7 +103769,7 @@ descope-enriched-text {
103635
103769
  vars: vars$6
103636
103770
  });
103637
103771
 
103638
- const componentName$7 = getComponentName$1('security-questions-setup');
103772
+ const componentName$8 = getComponentName$1('security-questions-setup');
103639
103773
 
103640
103774
  const attrsToSync$1 = [
103641
103775
  'full-width',
@@ -103654,7 +103788,7 @@ descope-enriched-text {
103654
103788
  ];
103655
103789
 
103656
103790
  const attrsToReRender$1 = ['count', 'questions'];
103657
- class RawSecurityQuestionsSetup extends createBaseClass({ componentName: componentName$7, baseSelector: 'div' }) {
103791
+ class RawSecurityQuestionsSetup extends createBaseClass({ componentName: componentName$8, baseSelector: 'div' }) {
103658
103792
  constructor() {
103659
103793
  super();
103660
103794
 
@@ -103762,7 +103896,7 @@ descope-enriched-text {
103762
103896
  return JSON.parse(this.getAttribute('questions')) || [];
103763
103897
  } catch (e) {
103764
103898
  // eslint-disable-next-line no-console
103765
- console.error(componentName$7, 'Error parsing questions attribute', e);
103899
+ console.error(componentName$8, 'Error parsing questions attribute', e);
103766
103900
  return [];
103767
103901
  }
103768
103902
  }
@@ -103884,7 +104018,7 @@ descope-enriched-text {
103884
104018
  vars: vars$5
103885
104019
  });
103886
104020
 
103887
- const componentName$6 = getComponentName$1('security-questions-verify');
104021
+ const componentName$7 = getComponentName$1('security-questions-verify');
103888
104022
 
103889
104023
  const textFieldsAttrs = [
103890
104024
  'full-width',
@@ -103908,7 +104042,7 @@ descope-enriched-text {
103908
104042
  const attrsToSync = [...textFieldsAttrs, ...textsAttrs];
103909
104043
 
103910
104044
  const attrsToReRender = ['questions'];
103911
- class RawSecurityQuestionsVerify extends createBaseClass({ componentName: componentName$6, baseSelector: 'div' }) {
104045
+ class RawSecurityQuestionsVerify extends createBaseClass({ componentName: componentName$7, baseSelector: 'div' }) {
103912
104046
  constructor() {
103913
104047
  super();
103914
104048
 
@@ -103982,7 +104116,7 @@ descope-enriched-text {
103982
104116
  return JSON.parse(this.getAttribute('questions')) || [];
103983
104117
  } catch (e) {
103984
104118
  // eslint-disable-next-line no-console
103985
- console.error(componentName$6, 'Error parsing questions attribute', e);
104119
+ console.error(componentName$7, 'Error parsing questions attribute', e);
103986
104120
  return [];
103987
104121
  }
103988
104122
  }
@@ -104141,7 +104275,7 @@ descope-enriched-text {
104141
104275
 
104142
104276
  const sanitizeCountryCodePrefix = (val) => val.replace(/\+\d+-/, '');
104143
104277
 
104144
- const componentName$5 = getComponentName$1('hybrid-field');
104278
+ const componentName$6 = getComponentName$1('hybrid-field');
104145
104279
 
104146
104280
  const attrs = {
104147
104281
  shared: [
@@ -104208,7 +104342,7 @@ descope-enriched-text {
104208
104342
  const PHONE_INPUT_BOX_FIELD = 'descope-phone-input-box-field';
104209
104343
 
104210
104344
  const BaseClass$2 = createBaseClass({
104211
- componentName: componentName$5,
104345
+ componentName: componentName$6,
104212
104346
  baseSelector: 'div',
104213
104347
  });
104214
104348
 
@@ -104619,9 +104753,9 @@ descope-enriched-text {
104619
104753
  vars: vars$3
104620
104754
  });
104621
104755
 
104622
- const componentName$4 = getComponentName$1('alert');
104756
+ const componentName$5 = getComponentName$1('alert');
104623
104757
 
104624
- class RawAlert extends createBaseClass({ componentName: componentName$4, baseSelector: ':host > div' }) {
104758
+ class RawAlert extends createBaseClass({ componentName: componentName$5, baseSelector: ':host > div' }) {
104625
104759
  constructor() {
104626
104760
  super();
104627
104761
 
@@ -104829,11 +104963,11 @@ descope-enriched-text {
104829
104963
  vars: vars$2
104830
104964
  });
104831
104965
 
104832
- const componentName$3 = getComponentName$1('hcaptcha');
104966
+ const componentName$4 = getComponentName$1('hcaptcha');
104833
104967
 
104834
104968
  const observedAttributes$1 = ['enabled', 'site-key'];
104835
104969
 
104836
- const BaseInputClass = createBaseInputClass({ componentName: componentName$3, baseSelector: ':host > div' });
104970
+ const BaseInputClass = createBaseInputClass({ componentName: componentName$4, baseSelector: ':host > div' });
104837
104971
  class RawHcaptcha extends BaseInputClass {
104838
104972
  static get observedAttributes() {
104839
104973
  return observedAttributes$1.concat(BaseInputClass.observedAttributes || []);
@@ -105115,12 +105249,12 @@ descope-enriched-text {
105115
105249
  },
105116
105250
  });
105117
105251
 
105118
- const componentName$2 = getComponentName$1('recaptcha');
105252
+ const componentName$3 = getComponentName$1('recaptcha');
105119
105253
 
105120
105254
  const observedAttributes = ['enabled', 'site-key', 'action', 'enterprise', 'variant'];
105121
105255
 
105122
105256
  const BaseClass$1 = createBaseClass({
105123
- componentName: componentName$2,
105257
+ componentName: componentName$3,
105124
105258
  baseSelector: ':host > div',
105125
105259
  });
105126
105260
  class RawRecaptcha extends BaseClass$1 {
@@ -105418,7 +105552,7 @@ descope-enriched-text {
105418
105552
 
105419
105553
  const RecaptchaClass = compose$1(draggableMixin)(RawRecaptcha);
105420
105554
 
105421
- const componentName$1 = getComponentName$1('notification');
105555
+ const componentName$2 = getComponentName$1('notification');
105422
105556
 
105423
105557
  const NotificationMixin = (superclass) =>
105424
105558
  class NotificationMixinClass extends superclass {
@@ -105511,10 +105645,169 @@ descope-enriched-text {
105511
105645
  createProxy({
105512
105646
  wrappedEleName: 'vaadin-notification',
105513
105647
  excludeAttrsSync: ['tabindex', 'style'],
105514
- componentName: componentName$1,
105648
+ componentName: componentName$2,
105515
105649
  })
105516
105650
  );
105517
105651
 
105652
+ const componentName$1 = getComponentName('anchored');
105653
+
105654
+ class RawAnchored extends createBaseClass$1({
105655
+ componentName: componentName$1,
105656
+ baseSelector: '.anchored-root',
105657
+ }) {
105658
+ #stretchObserver = null;
105659
+
105660
+ #directionObserver = null;
105661
+
105662
+ #hostStretchSheet = null;
105663
+
105664
+ get #anchor() {
105665
+ return this.defaultSlot.assignedElements({ flatten: true })[0];
105666
+ }
105667
+
105668
+ get #anchored() {
105669
+ return this.shadowRoot
105670
+ .querySelector('slot[name="anchored"]')
105671
+ ?.assignedElements()[0];
105672
+ }
105673
+
105674
+ get #outerHost() {
105675
+ return this.getRootNode().host;
105676
+ }
105677
+
105678
+ constructor() {
105679
+ super();
105680
+
105681
+ this.attachShadow({ mode: 'open' }).innerHTML = `
105682
+ <div class="anchored-root" part="root">
105683
+ <slot></slot>
105684
+ <div class="anchored-host" part="anchored">
105685
+ <slot name="anchored"></slot>
105686
+ </div>
105687
+ </div>
105688
+ `;
105689
+
105690
+ this.defaultSlot = this.shadowRoot.querySelector('slot:not([name])');
105691
+ }
105692
+
105693
+ init() {
105694
+ super.init?.();
105695
+
105696
+ injectStyle(
105697
+ `
105698
+ :host {
105699
+ display: inline-flex;
105700
+ position: relative;
105701
+ box-sizing: border-box;
105702
+ }
105703
+
105704
+ :host(:not([has-anchor])) {
105705
+ display: none;
105706
+ }
105707
+
105708
+ .anchored-root {
105709
+ position: relative;
105710
+ display: flex;
105711
+ width: 100%;
105712
+ min-width: 0;
105713
+ }
105714
+
105715
+ /* Make anchor fill the flex row and allow it to shrink. */
105716
+ ::slotted(*:not([slot])) {
105717
+ flex-grow: 1; /* fill the flex row */
105718
+ flex-shrink: 1; /* compress when constrained */
105719
+ flex-basis: auto; /* start from the anchor's natural size */
105720
+ min-width: 0; /* flex items won't shrink below content size without this */
105721
+ }
105722
+
105723
+ /* Anchored container covers the anchor but is invisible to pointer events. */
105724
+ .anchored-host {
105725
+ position: absolute;
105726
+ inset: 0;
105727
+ pointer-events: none;
105728
+ }
105729
+
105730
+ /* Restore interactivity for actual anchored content. */
105731
+ ::slotted([slot="anchored"]) {
105732
+ pointer-events: auto;
105733
+ }
105734
+ `,
105735
+ this,
105736
+ );
105737
+
105738
+ this.#syncStretchCSS();
105739
+
105740
+ this.defaultSlot.addEventListener('slotchange', () => this.#syncAnchor());
105741
+
105742
+ this.#syncAnchor();
105743
+ }
105744
+
105745
+ #syncAnchor() {
105746
+ this.#onAnchorChanged();
105747
+
105748
+ this.#stretchObserver = this.#forwardAttr(
105749
+ this.#stretchObserver,
105750
+ this.#outerHost,
105751
+ 'stretch',
105752
+ );
105753
+
105754
+ this.#directionObserver = this.#forwardAttr(
105755
+ this.#directionObserver,
105756
+ this.#anchored,
105757
+ 'st-host-direction',
105758
+ );
105759
+ }
105760
+
105761
+ // Injects [stretch] layout rules into the containing component's shadow root (e.g. descope-attachment)
105762
+ // so it stretches when the anchor has [stretch]. Replaces the existing rules on subsequent calls.
105763
+ #syncStretchCSS() {
105764
+ const css = `
105765
+ descope-anchored {
105766
+ width: 100%; /* fill the outer host so the anchored element spans the full anchor width */
105767
+ }
105768
+ :host([stretch]) {
105769
+ display: inline-flex; /* switch from inline-block so internal children are flex items */
105770
+ width: 100%; /* fill non-flex parents */
105771
+ flex-grow: 1; /* absorb extra space in flex parents */
105772
+ flex-shrink: 0; /* hold full width — shrink:1 would let siblings squeeze it below 100% */
105773
+ flex-basis: auto; /* defer to width:100% on the main axis; avoids forcing 100% height in column-flex parents */
105774
+ min-width: 0; /* prevent overflow when the outer host is itself inside a constrained flex row */
105775
+ }
105776
+ `;
105777
+
105778
+ if (this.#hostStretchSheet) {
105779
+ this.#hostStretchSheet.replaceSync(css);
105780
+ } else if (this.#outerHost) {
105781
+ this.#hostStretchSheet = injectStyle(css, this.#outerHost);
105782
+ }
105783
+ }
105784
+
105785
+ // Reconnects forwarding to the current anchor. Disconnects the old observer and
105786
+ // removes the stale attr from target first — forwardAttrs only sets attrs present
105787
+ // on the source, so absent attrs won't be removed automatically.
105788
+ #forwardAttr(observer, target, attr) {
105789
+ observer?.disconnect();
105790
+ target?.removeAttribute(attr);
105791
+ if (!this.#anchor || !target) return null;
105792
+ return forwardAttrs(this.#anchor, target, { includeAttrs: [attr] });
105793
+ }
105794
+
105795
+ // Prevent stale callbacks from firing on a detached anchor after removal.
105796
+ disconnectedCallback() {
105797
+ super.disconnectedCallback?.();
105798
+ this.#stretchObserver?.disconnect();
105799
+ this.#directionObserver?.disconnect();
105800
+ }
105801
+
105802
+ // Track whether anything is slotted, so the host display rule can hide an
105803
+ // empty host rather than reserving its layout box.
105804
+ #onAnchorChanged() {
105805
+ this.toggleAttribute('has-anchor', !!this.#anchor);
105806
+ }
105807
+ }
105808
+
105809
+ const AnchoredClass = compose(componentNameValidationMixin$1)(RawAnchored);
105810
+
105518
105811
  // NOTICE: This component registers with a DIFFERENT name than its file name
105519
105812
  const componentName = getComponentName('ponyhot');
105520
105813
 
@@ -105635,6 +105928,7 @@ descope-enriched-text {
105635
105928
 
105636
105929
  index_cjs$4.AddressFieldClass = AddressFieldClass;
105637
105930
  index_cjs$4.AlertClass = AlertClass;
105931
+ index_cjs$4.AnchoredClass = AnchoredClass;
105638
105932
  index_cjs$4.AppsListClass = AppsListClass;
105639
105933
  index_cjs$4.AttachmentClass = AttachmentClass;
105640
105934
  index_cjs$4.AutocompleteFieldClass = AutocompleteFieldClass;