@descope/web-components-ui 1.0.347 → 1.0.349

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. package/dist/cjs/index.cjs.js +208 -13
  2. package/dist/cjs/index.cjs.js.map +1 -1
  3. package/dist/index.esm.js +393 -159
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/umd/1000.js +1 -0
  6. package/dist/umd/1612.js +116 -4
  7. package/dist/umd/1765.js +1 -0
  8. package/dist/umd/3227.js +17 -0
  9. package/dist/umd/4024.js +116 -4
  10. package/dist/umd/4028.js +121 -9
  11. package/dist/umd/4052.js +116 -4
  12. package/dist/umd/4392.js +1 -1
  13. package/dist/umd/5135.js +2 -2
  14. package/dist/umd/602.js +114 -2
  15. package/dist/umd/9562.js +116 -4
  16. package/dist/umd/DescopeDev.js +1 -1
  17. package/dist/umd/boolean-fields-descope-boolean-field-internal-index-js.js +1 -1
  18. package/dist/umd/boolean-fields-descope-checkbox-index-js.js +1 -1
  19. package/dist/umd/boolean-fields-descope-switch-toggle-index-js.js +1 -1
  20. package/dist/umd/button-selection-group-fields-descope-button-multi-selection-group-index-js.js +1 -1
  21. package/dist/umd/button-selection-group-fields-descope-button-multi-selection-group-internal-index-js.js +1 -1
  22. package/dist/umd/button-selection-group-fields-descope-button-selection-group-index-js.js +1 -1
  23. package/dist/umd/button-selection-group-fields-descope-button-selection-group-internal-index-js.js +1 -1
  24. package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js +1 -1
  25. package/dist/umd/descope-avatar-index-js.js +1 -1
  26. package/dist/umd/descope-badge-index-js.js +1 -1
  27. package/dist/umd/descope-button-index-js.js +116 -4
  28. package/dist/umd/descope-code-snippet-index-js.js +1 -1
  29. package/dist/umd/descope-combo-box-index-js.js +1 -1
  30. package/dist/umd/descope-container-index-js.js +1 -1
  31. package/dist/umd/descope-date-picker-index-js.js +1 -1
  32. package/dist/umd/descope-divider-index-js.js +1 -1
  33. package/dist/umd/descope-email-field-index-js.js +1 -1
  34. package/dist/umd/descope-enriched-text-index-js.js +1 -1
  35. package/dist/umd/descope-grid-descope-grid-custom-column-index-js.js +3 -3
  36. package/dist/umd/descope-grid-descope-grid-item-details-column-index-js.js +90 -0
  37. package/dist/umd/descope-grid-descope-grid-item-details-column-index-js.js.LICENSE.txt +17 -0
  38. package/dist/umd/descope-grid-descope-grid-selection-column-index-js.js +1 -1
  39. package/dist/umd/descope-grid-descope-grid-text-column-index-js.js +1 -1
  40. package/dist/umd/descope-grid-index-js.js +1 -1
  41. package/dist/umd/descope-icon-index-js.js +1 -1
  42. package/dist/umd/descope-image-index-js.js +1 -1
  43. package/dist/umd/descope-link-index-js.js +1 -1
  44. package/dist/umd/descope-loader-linear-index-js.js +1 -1
  45. package/dist/umd/descope-loader-radial-index-js.js +1 -1
  46. package/dist/umd/descope-logo-index-js.js +1 -1
  47. package/dist/umd/descope-modal-index-js.js +1 -1
  48. package/dist/umd/descope-multi-select-combo-box-index-js.js +1 -1
  49. package/dist/umd/descope-new-password-descope-new-password-internal-index-js.js +1 -1
  50. package/dist/umd/descope-new-password-index-js.js +1 -1
  51. package/dist/umd/descope-notification-descope-notification-card-index-js.js +1 -1
  52. package/dist/umd/descope-notification-index-js.js +1 -1
  53. package/dist/umd/descope-notp-image-index-js.js +1 -1
  54. package/dist/umd/descope-number-field-index-js.js +1 -1
  55. package/dist/umd/descope-passcode-descope-passcode-internal-index-js.js +1 -1
  56. package/dist/umd/descope-passcode-index-js.js +1 -1
  57. package/dist/umd/descope-password-index-js.js +1 -1
  58. package/dist/umd/descope-policy-validation-index-js.js +1 -1
  59. package/dist/umd/descope-radio-group-index-js.js +1 -1
  60. package/dist/umd/descope-recaptcha-index-js.js +1 -1
  61. package/dist/umd/descope-text-area-index-js.js +1 -1
  62. package/dist/umd/descope-text-field-index-js.js +1 -1
  63. package/dist/umd/descope-text-index-js.js +1 -1
  64. package/dist/umd/descope-totp-image-index-js.js +1 -1
  65. package/dist/umd/descope-upload-file-index-js.js +1 -1
  66. package/dist/umd/descope-user-attribute-index-js.js +1 -1
  67. package/dist/umd/descope-user-auth-method-index-js.js +1 -1
  68. package/dist/umd/index.js +1 -1
  69. package/dist/umd/mapping-fields-descope-mappings-field-descope-mapping-item-index-js.js +1 -1
  70. package/dist/umd/mapping-fields-descope-mappings-field-descope-mappings-field-internal-index-js.js +1 -1
  71. package/dist/umd/mapping-fields-descope-mappings-field-index-js.js +1 -1
  72. package/dist/umd/mapping-fields-descope-saml-group-mappings-descope-saml-group-mappings-internal-index-js.js +1 -1
  73. package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js +1 -1
  74. package/dist/umd/phone-fields-descope-phone-field-descope-phone-field-internal-index-js.js +1 -1
  75. package/dist/umd/phone-fields-descope-phone-field-index-js.js +1 -1
  76. package/dist/umd/phone-fields-descope-phone-input-box-field-index-js.js +1 -1
  77. package/package.json +1 -1
  78. package/src/components/descope-enriched-text/EnrichedTextClass.js +2 -4
  79. package/src/components/descope-grid/GridClass.js +116 -6
  80. package/src/components/descope-grid/descope-grid-item-details-column/GridItemDetailsColumnClass.js +37 -0
  81. package/src/components/descope-grid/descope-grid-item-details-column/index.js +8 -0
  82. package/src/components/descope-grid/helpers.js +54 -0
  83. package/src/components/descope-grid/index.js +1 -0
  84. package/src/components/descope-link/LinkClass.js +3 -5
  85. package/src/components/descope-radio-group/RadioButtonClass.js +3 -0
  86. package/src/helpers/index.js +8 -0
  87. package/src/mixins/createProxy.js +1 -1
  88. package/src/theme/components/enrichedText.js +2 -0
  89. package/src/theme/components/grid.js +11 -0
  90. package/src/theme/components/link.js +4 -0
  91. package/src/theme/components/radioGroup/radioButton.js +2 -0
  92. package/dist/umd/2362.js +0 -129
  93. package/dist/umd/4978.js +0 -1
  94. /package/dist/umd/{2362.js.LICENSE.txt → 3227.js.LICENSE.txt} +0 -0
package/dist/index.esm.js CHANGED
@@ -76,6 +76,14 @@ const compareArraysUnordered = (arr1, arr2) => {
76
76
  return true;
77
77
  };
78
78
 
79
+ const toTitle = (str) =>
80
+ str
81
+ .replace(/([A-Z])/g, ' $1')
82
+ .trim()
83
+ .split(' ')
84
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
85
+ .join(' ');
86
+
79
87
  const DESCOPE_PREFIX = 'descope';
80
88
  const CSS_SELECTOR_SPECIFIER_MULTIPLY = 3;
81
89
  const BASE_THEME_SECTION = 'host';
@@ -719,7 +727,7 @@ const createProxy = ({
719
727
 
720
728
  constructor() {
721
729
  super().attachShadow({ mode: 'open', delegatesFocus }).innerHTML = `
722
- <style id="create-proxy">${isFunction(style) ? style() : style}</style>
730
+ <style id="create-proxy">${(isFunction(style) ? style() : style) || ''}</style>
723
731
  <${wrappedEleName}>
724
732
  ${slots
725
733
  .map(
@@ -1376,9 +1384,9 @@ const inputEventsDispatchingMixin = (superclass) =>
1376
1384
 
1377
1385
  /* eslint-disable no-use-before-define */
1378
1386
 
1379
- const componentName$W = getComponentName('icon');
1387
+ const componentName$X = getComponentName('icon');
1380
1388
 
1381
- class RawIcon extends createBaseClass({ componentName: componentName$W, baseSelector: 'slot' }) {
1389
+ class RawIcon extends createBaseClass({ componentName: componentName$X, baseSelector: 'slot' }) {
1382
1390
  constructor() {
1383
1391
  super();
1384
1392
 
@@ -1447,7 +1455,7 @@ const clickableMixin = (superclass) =>
1447
1455
  }
1448
1456
  };
1449
1457
 
1450
- const componentName$V = getComponentName('button');
1458
+ const componentName$W = getComponentName('button');
1451
1459
 
1452
1460
  const resetStyles = `
1453
1461
  :host {
@@ -1557,7 +1565,7 @@ const ButtonClass = compose(
1557
1565
  }
1558
1566
  `,
1559
1567
  excludeAttrsSync: ['tabindex'],
1560
- componentName: componentName$V,
1568
+ componentName: componentName$W,
1561
1569
  })
1562
1570
  );
1563
1571
 
@@ -1594,7 +1602,7 @@ loadingIndicatorStyles = `
1594
1602
  }
1595
1603
  `;
1596
1604
 
1597
- customElements.define(componentName$V, ButtonClass);
1605
+ customElements.define(componentName$W, ButtonClass);
1598
1606
 
1599
1607
  const createBaseInputClass = (...args) =>
1600
1608
  compose(
@@ -1604,11 +1612,11 @@ const createBaseInputClass = (...args) =>
1604
1612
  inputEventsDispatchingMixin
1605
1613
  )(createBaseClass(...args));
1606
1614
 
1607
- const componentName$U = getComponentName('boolean-field-internal');
1615
+ const componentName$V = getComponentName('boolean-field-internal');
1608
1616
 
1609
1617
  const forwardAttributes$1 = ['disabled', 'label', 'invalid', 'readonly'];
1610
1618
 
1611
- const BaseInputClass$8 = createBaseInputClass({ componentName: componentName$U, baseSelector: 'div' });
1619
+ const BaseInputClass$8 = createBaseInputClass({ componentName: componentName$V, baseSelector: 'div' });
1612
1620
 
1613
1621
  class BooleanInputInternal extends BaseInputClass$8 {
1614
1622
  static get observedAttributes() {
@@ -1684,14 +1692,14 @@ const booleanFieldMixin = (superclass) =>
1684
1692
 
1685
1693
  const template = document.createElement('template');
1686
1694
  template.innerHTML = `
1687
- <${componentName$U}
1695
+ <${componentName$V}
1688
1696
  tabindex="-1"
1689
1697
  slot="input"
1690
- ></${componentName$U}>
1698
+ ></${componentName$V}>
1691
1699
  `;
1692
1700
 
1693
1701
  this.baseElement.appendChild(template.content.cloneNode(true));
1694
- this.inputElement = this.shadowRoot.querySelector(componentName$U);
1702
+ this.inputElement = this.shadowRoot.querySelector(componentName$V);
1695
1703
  this.checkbox = this.inputElement.querySelector('vaadin-checkbox');
1696
1704
 
1697
1705
  forwardAttrs(this, this.inputElement, {
@@ -1906,7 +1914,7 @@ descope-boolean-field-internal {
1906
1914
  }
1907
1915
  `;
1908
1916
 
1909
- const componentName$T = getComponentName('checkbox');
1917
+ const componentName$U = getComponentName('checkbox');
1910
1918
 
1911
1919
  const {
1912
1920
  host: host$m,
@@ -2012,15 +2020,15 @@ const CheckboxClass = compose(
2012
2020
  }
2013
2021
  `,
2014
2022
  excludeAttrsSync: ['label', 'tabindex'],
2015
- componentName: componentName$T,
2023
+ componentName: componentName$U,
2016
2024
  })
2017
2025
  );
2018
2026
 
2019
- customElements.define(componentName$U, BooleanInputInternal);
2027
+ customElements.define(componentName$V, BooleanInputInternal);
2020
2028
 
2021
- customElements.define(componentName$T, CheckboxClass);
2029
+ customElements.define(componentName$U, CheckboxClass);
2022
2030
 
2023
- const componentName$S = getComponentName('switch-toggle');
2031
+ const componentName$T = getComponentName('switch-toggle');
2024
2032
 
2025
2033
  const {
2026
2034
  host: host$l,
@@ -2152,17 +2160,17 @@ const SwitchToggleClass = compose(
2152
2160
  }
2153
2161
  `,
2154
2162
  excludeAttrsSync: ['label', 'tabindex'],
2155
- componentName: componentName$S,
2163
+ componentName: componentName$T,
2156
2164
  })
2157
2165
  );
2158
2166
 
2159
- customElements.define(componentName$S, SwitchToggleClass);
2167
+ customElements.define(componentName$T, SwitchToggleClass);
2160
2168
 
2161
- const componentName$R = getComponentName('loader-linear');
2169
+ const componentName$S = getComponentName('loader-linear');
2162
2170
 
2163
- class RawLoaderLinear extends createBaseClass({ componentName: componentName$R, baseSelector: ':host > div' }) {
2171
+ class RawLoaderLinear extends createBaseClass({ componentName: componentName$S, baseSelector: ':host > div' }) {
2164
2172
  static get componentName() {
2165
- return componentName$R;
2173
+ return componentName$S;
2166
2174
  }
2167
2175
 
2168
2176
  constructor() {
@@ -2223,11 +2231,11 @@ const LoaderLinearClass = compose(
2223
2231
  componentNameValidationMixin
2224
2232
  )(RawLoaderLinear);
2225
2233
 
2226
- customElements.define(componentName$R, LoaderLinearClass);
2234
+ customElements.define(componentName$S, LoaderLinearClass);
2227
2235
 
2228
- const componentName$Q = getComponentName('loader-radial');
2236
+ const componentName$R = getComponentName('loader-radial');
2229
2237
 
2230
- class RawLoaderRadial extends createBaseClass({ componentName: componentName$Q, baseSelector: ':host > div' }) {
2238
+ class RawLoaderRadial extends createBaseClass({ componentName: componentName$R, baseSelector: ':host > div' }) {
2231
2239
  constructor() {
2232
2240
  super();
2233
2241
 
@@ -2271,11 +2279,11 @@ const LoaderRadialClass = compose(
2271
2279
  componentNameValidationMixin
2272
2280
  )(RawLoaderRadial);
2273
2281
 
2274
- customElements.define(componentName$Q, LoaderRadialClass);
2282
+ customElements.define(componentName$R, LoaderRadialClass);
2275
2283
 
2276
- const componentName$P = getComponentName('container');
2284
+ const componentName$Q = getComponentName('container');
2277
2285
 
2278
- class RawContainer extends createBaseClass({ componentName: componentName$P, baseSelector: 'slot' }) {
2286
+ class RawContainer extends createBaseClass({ componentName: componentName$Q, baseSelector: 'slot' }) {
2279
2287
  constructor() {
2280
2288
  super();
2281
2289
 
@@ -2328,11 +2336,11 @@ const ContainerClass = compose(
2328
2336
  componentNameValidationMixin
2329
2337
  )(RawContainer);
2330
2338
 
2331
- customElements.define(componentName$P, ContainerClass);
2339
+ customElements.define(componentName$Q, ContainerClass);
2332
2340
 
2333
- const componentName$O = getComponentName('text');
2341
+ const componentName$P = getComponentName('text');
2334
2342
 
2335
- class RawText extends createBaseClass({ componentName: componentName$O, baseSelector: ':host > slot' }) {
2343
+ class RawText extends createBaseClass({ componentName: componentName$P, baseSelector: ':host > slot' }) {
2336
2344
  constructor() {
2337
2345
  super();
2338
2346
 
@@ -2389,8 +2397,8 @@ const TextClass = compose(
2389
2397
  componentNameValidationMixin
2390
2398
  )(RawText);
2391
2399
 
2392
- const componentName$N = getComponentName('divider');
2393
- class RawDivider extends createBaseClass({ componentName: componentName$N, baseSelector: ':host > div' }) {
2400
+ const componentName$O = getComponentName('divider');
2401
+ class RawDivider extends createBaseClass({ componentName: componentName$O, baseSelector: ':host > div' }) {
2394
2402
  constructor() {
2395
2403
  super();
2396
2404
 
@@ -2489,9 +2497,9 @@ const DividerClass = compose(
2489
2497
  componentNameValidationMixin
2490
2498
  )(RawDivider);
2491
2499
 
2492
- customElements.define(componentName$O, TextClass);
2500
+ customElements.define(componentName$P, TextClass);
2493
2501
 
2494
- customElements.define(componentName$N, DividerClass);
2502
+ customElements.define(componentName$O, DividerClass);
2495
2503
 
2496
2504
  const {
2497
2505
  host: host$i,
@@ -2600,7 +2608,7 @@ var textFieldMappings = {
2600
2608
  inputIconColor: { ...inputIcon, property: 'color' },
2601
2609
  };
2602
2610
 
2603
- const componentName$M = getComponentName('email-field');
2611
+ const componentName$N = getComponentName('email-field');
2604
2612
 
2605
2613
  const customMixin$a = (superclass) =>
2606
2614
  class EmailFieldMixinClass extends superclass {
@@ -2655,15 +2663,15 @@ const EmailFieldClass = compose(
2655
2663
  }
2656
2664
  `,
2657
2665
  excludeAttrsSync: ['tabindex'],
2658
- componentName: componentName$M,
2666
+ componentName: componentName$N,
2659
2667
  })
2660
2668
  );
2661
2669
 
2662
- customElements.define(componentName$M, EmailFieldClass);
2670
+ customElements.define(componentName$N, EmailFieldClass);
2663
2671
 
2664
- const componentName$L = getComponentName('link');
2672
+ const componentName$M = getComponentName('link');
2665
2673
 
2666
- class RawLink extends createBaseClass({ componentName: componentName$L, baseSelector: ':host a' }) {
2674
+ class RawLink extends createBaseClass({ componentName: componentName$M, baseSelector: ':host a' }) {
2667
2675
  constructor() {
2668
2676
  super();
2669
2677
 
@@ -2675,10 +2683,6 @@ class RawLink extends createBaseClass({ componentName: componentName$L, baseSele
2675
2683
  }
2676
2684
  :host a {
2677
2685
  display: inline;
2678
- text-decoration: none;
2679
- }
2680
- :host a:hover {
2681
- text-decoration: underline;
2682
2686
  }
2683
2687
  </style>
2684
2688
  <div>
@@ -2705,12 +2709,13 @@ class RawLink extends createBaseClass({ componentName: componentName$L, baseSele
2705
2709
 
2706
2710
  const selectors$1 = {
2707
2711
  host: { selector: () => ':host' },
2712
+ link: { selector: () => ':host a' },
2708
2713
  anchor: {},
2709
2714
  wrapper: { selector: () => ':host > div' },
2710
2715
  text: { selector: () => TextClass.componentName },
2711
2716
  };
2712
2717
 
2713
- const { anchor, text: text$2, host: host$h, wrapper: wrapper$1 } = selectors$1;
2718
+ const { anchor, text: text$2, host: host$h, wrapper: wrapper$1, link: link$3 } = selectors$1;
2714
2719
 
2715
2720
  const LinkClass = compose(
2716
2721
  createStyleMixin({
@@ -2718,6 +2723,7 @@ const LinkClass = compose(
2718
2723
  hostWidth: { ...host$h, property: 'width' },
2719
2724
  hostDirection: { ...text$2, property: 'direction' },
2720
2725
  textAlign: wrapper$1,
2726
+ textDecoration: { ...link$3, property: 'text-decoration', fallback: 'none' },
2721
2727
  textColor: [
2722
2728
  { ...anchor, property: 'color' },
2723
2729
  { ...text$2, property: TextClass.cssVarList.textColor },
@@ -2729,7 +2735,7 @@ const LinkClass = compose(
2729
2735
  componentNameValidationMixin
2730
2736
  )(RawLink);
2731
2737
 
2732
- customElements.define(componentName$L, LinkClass);
2738
+ customElements.define(componentName$M, LinkClass);
2733
2739
 
2734
2740
  const createCssVarImageClass = ({ componentName, varName, fallbackVarName }) => {
2735
2741
  let style;
@@ -2781,37 +2787,37 @@ const createCssVarImageClass = ({ componentName, varName, fallbackVarName }) =>
2781
2787
  return CssVarImageClass;
2782
2788
  };
2783
2789
 
2784
- const componentName$K = getComponentName('logo');
2790
+ const componentName$L = getComponentName('logo');
2785
2791
 
2786
2792
  const LogoClass = createCssVarImageClass({
2787
- componentName: componentName$K,
2793
+ componentName: componentName$L,
2788
2794
  varName: 'url',
2789
2795
  fallbackVarName: 'fallbackUrl',
2790
2796
  });
2791
2797
 
2792
- customElements.define(componentName$K, LogoClass);
2798
+ customElements.define(componentName$L, LogoClass);
2793
2799
 
2794
- const componentName$J = getComponentName('totp-image');
2800
+ const componentName$K = getComponentName('totp-image');
2795
2801
 
2796
2802
  const TotpImageClass = createCssVarImageClass({
2797
- componentName: componentName$J,
2803
+ componentName: componentName$K,
2798
2804
  varName: 'url',
2799
2805
  fallbackVarName: 'fallbackUrl',
2800
2806
  });
2801
2807
 
2802
- customElements.define(componentName$J, TotpImageClass);
2808
+ customElements.define(componentName$K, TotpImageClass);
2803
2809
 
2804
- const componentName$I = getComponentName('notp-image');
2810
+ const componentName$J = getComponentName('notp-image');
2805
2811
 
2806
2812
  const NotpImageClass = createCssVarImageClass({
2807
- componentName: componentName$I,
2813
+ componentName: componentName$J,
2808
2814
  varName: 'url',
2809
2815
  fallbackVarName: 'fallbackUrl',
2810
2816
  });
2811
2817
 
2812
- customElements.define(componentName$I, NotpImageClass);
2818
+ customElements.define(componentName$J, NotpImageClass);
2813
2819
 
2814
- const componentName$H = getComponentName('number-field');
2820
+ const componentName$I = getComponentName('number-field');
2815
2821
 
2816
2822
  const NumberFieldClass = compose(
2817
2823
  createStyleMixin({
@@ -2845,11 +2851,11 @@ const NumberFieldClass = compose(
2845
2851
  }
2846
2852
  `,
2847
2853
  excludeAttrsSync: ['tabindex'],
2848
- componentName: componentName$H,
2854
+ componentName: componentName$I,
2849
2855
  })
2850
2856
  );
2851
2857
 
2852
- customElements.define(componentName$H, NumberFieldClass);
2858
+ customElements.define(componentName$I, NumberFieldClass);
2853
2859
 
2854
2860
  const focusElement = (ele) => {
2855
2861
  ele?.focus();
@@ -2867,13 +2873,13 @@ const getSanitizedCharacters = (str) => {
2867
2873
 
2868
2874
  /* eslint-disable no-param-reassign */
2869
2875
 
2870
- const componentName$G = getComponentName('passcode-internal');
2876
+ const componentName$H = getComponentName('passcode-internal');
2871
2877
 
2872
2878
  const observedAttributes$5 = ['digits', 'loading'];
2873
2879
 
2874
2880
  const forwardAttributes = ['disabled', 'bordered', 'size', 'invalid', 'readonly'];
2875
2881
 
2876
- const BaseInputClass$7 = createBaseInputClass({ componentName: componentName$G, baseSelector: 'div' });
2882
+ const BaseInputClass$7 = createBaseInputClass({ componentName: componentName$H, baseSelector: 'div' });
2877
2883
 
2878
2884
  class PasscodeInternal extends BaseInputClass$7 {
2879
2885
  static get observedAttributes() {
@@ -3099,7 +3105,7 @@ class PasscodeInternal extends BaseInputClass$7 {
3099
3105
  }
3100
3106
  }
3101
3107
 
3102
- const componentName$F = getComponentName('text-field');
3108
+ const componentName$G = getComponentName('text-field');
3103
3109
 
3104
3110
  const observedAttrs = ['type', 'label-type', 'copy-to-clipboard'];
3105
3111
 
@@ -3221,11 +3227,11 @@ const TextFieldClass = compose(
3221
3227
  }
3222
3228
  `,
3223
3229
  excludeAttrsSync: ['tabindex'],
3224
- componentName: componentName$F,
3230
+ componentName: componentName$G,
3225
3231
  })
3226
3232
  );
3227
3233
 
3228
- const componentName$E = getComponentName('passcode');
3234
+ const componentName$F = getComponentName('passcode');
3229
3235
 
3230
3236
  const observedAttributes$4 = ['digits'];
3231
3237
 
@@ -3244,17 +3250,17 @@ const customMixin$8 = (superclass) =>
3244
3250
  const template = document.createElement('template');
3245
3251
 
3246
3252
  template.innerHTML = `
3247
- <${componentName$G}
3253
+ <${componentName$H}
3248
3254
  bordered="true"
3249
3255
  name="code"
3250
3256
  tabindex="-1"
3251
3257
  slot="input"
3252
- ><slot></slot></${componentName$G}>
3258
+ ><slot></slot></${componentName$H}>
3253
3259
  `;
3254
3260
 
3255
3261
  this.baseElement.appendChild(template.content.cloneNode(true));
3256
3262
 
3257
- this.inputElement = this.shadowRoot.querySelector(componentName$G);
3263
+ this.inputElement = this.shadowRoot.querySelector(componentName$H);
3258
3264
 
3259
3265
  forwardAttrs(this, this.inputElement, { includeAttrs: ['digits', 'size', 'loading'] });
3260
3266
  }
@@ -3401,15 +3407,15 @@ const PasscodeClass = compose(
3401
3407
  ${resetInputCursor('vaadin-text-field')}
3402
3408
  `,
3403
3409
  excludeAttrsSync: ['tabindex'],
3404
- componentName: componentName$E,
3410
+ componentName: componentName$F,
3405
3411
  })
3406
3412
  );
3407
3413
 
3408
- customElements.define(componentName$F, TextFieldClass);
3414
+ customElements.define(componentName$G, TextFieldClass);
3409
3415
 
3410
- customElements.define(componentName$G, PasscodeInternal);
3416
+ customElements.define(componentName$H, PasscodeInternal);
3411
3417
 
3412
- customElements.define(componentName$E, PasscodeClass);
3418
+ customElements.define(componentName$F, PasscodeClass);
3413
3419
 
3414
3420
  const passwordDraggableMixin = (superclass) =>
3415
3421
  class PasswordDraggableMixinClass extends superclass {
@@ -3450,7 +3456,7 @@ const passwordDraggableMixin = (superclass) =>
3450
3456
  }
3451
3457
  };
3452
3458
 
3453
- const componentName$D = getComponentName('password');
3459
+ const componentName$E = getComponentName('password');
3454
3460
 
3455
3461
  const customMixin$7 = (superclass) =>
3456
3462
  class PasswordFieldMixinClass extends superclass {
@@ -3639,11 +3645,11 @@ const PasswordClass = compose(
3639
3645
  }
3640
3646
  `,
3641
3647
  excludeAttrsSync: ['tabindex'],
3642
- componentName: componentName$D,
3648
+ componentName: componentName$E,
3643
3649
  })
3644
3650
  );
3645
3651
 
3646
- customElements.define(componentName$D, PasswordClass);
3652
+ customElements.define(componentName$E, PasswordClass);
3647
3653
 
3648
3654
  const disableRules = [
3649
3655
  'blockquote',
@@ -3668,9 +3674,9 @@ const decodeHTML = (html) => {
3668
3674
 
3669
3675
  /* eslint-disable no-param-reassign */
3670
3676
 
3671
- const componentName$C = getComponentName('enriched-text');
3677
+ const componentName$D = getComponentName('enriched-text');
3672
3678
 
3673
- let EnrichedText$2 = class EnrichedText extends createBaseClass({ componentName: componentName$C, baseSelector: ':host > div' }) {
3679
+ let EnrichedText$2 = class EnrichedText extends createBaseClass({ componentName: componentName$D, baseSelector: ':host > div' }) {
3674
3680
  #origLinkRenderer;
3675
3681
 
3676
3682
  #origEmRenderer;
@@ -3702,12 +3708,8 @@ let EnrichedText$2 = class EnrichedText extends createBaseClass({ componentName:
3702
3708
  margin-bottom: 1em;
3703
3709
  }
3704
3710
  a {
3705
- text-decoration: none;
3706
3711
  cursor: pointer;
3707
3712
  }
3708
- a:hover {
3709
- text-decoration: underline;
3710
- }
3711
3713
  blockquote {
3712
3714
  padding: 0 2em;
3713
3715
  }
@@ -3852,6 +3854,8 @@ const EnrichedTextClass = compose(
3852
3854
  textLineHeight: { property: 'line-height' },
3853
3855
  textAlign: {},
3854
3856
  linkColor: { selector: 'a', property: 'color' },
3857
+ linkTextDecoration: { selector: 'a', property: 'text-decoration' },
3858
+ linkHoverTextDecoration: { selector: 'a:hover', property: 'text-decoration' },
3855
3859
  minHeight: {},
3856
3860
  minWidth: {},
3857
3861
  },
@@ -3861,9 +3865,9 @@ const EnrichedTextClass = compose(
3861
3865
  componentNameValidationMixin
3862
3866
  )(EnrichedText$2);
3863
3867
 
3864
- customElements.define(componentName$C, EnrichedTextClass);
3868
+ customElements.define(componentName$D, EnrichedTextClass);
3865
3869
 
3866
- const componentName$B = getComponentName('text-area');
3870
+ const componentName$C = getComponentName('text-area');
3867
3871
 
3868
3872
  const {
3869
3873
  host: host$e,
@@ -3939,17 +3943,17 @@ const TextAreaClass = compose(
3939
3943
  ${resetInputCursor('vaadin-text-area')}
3940
3944
  `,
3941
3945
  excludeAttrsSync: ['tabindex'],
3942
- componentName: componentName$B,
3946
+ componentName: componentName$C,
3943
3947
  })
3944
3948
  );
3945
3949
 
3946
- customElements.define(componentName$B, TextAreaClass);
3950
+ customElements.define(componentName$C, TextAreaClass);
3947
3951
 
3948
3952
  const observedAttributes$3 = ['src', 'alt'];
3949
3953
 
3950
- const componentName$A = getComponentName('image');
3954
+ const componentName$B = getComponentName('image');
3951
3955
 
3952
- const BaseClass$1 = createBaseClass({ componentName: componentName$A, baseSelector: ':host > img' });
3956
+ const BaseClass$1 = createBaseClass({ componentName: componentName$B, baseSelector: ':host > img' });
3953
3957
  class RawImage extends BaseClass$1 {
3954
3958
  static get observedAttributes() {
3955
3959
  return observedAttributes$3.concat(BaseClass$1.observedAttributes || []);
@@ -3989,9 +3993,9 @@ const ImageClass = compose(
3989
3993
  draggableMixin
3990
3994
  )(RawImage);
3991
3995
 
3992
- customElements.define(componentName$A, ImageClass);
3996
+ customElements.define(componentName$B, ImageClass);
3993
3997
 
3994
- const componentName$z = getComponentName('combo-box');
3998
+ const componentName$A = getComponentName('combo-box');
3995
3999
 
3996
4000
  const ComboBoxMixin = (superclass) =>
3997
4001
  class ComboBoxMixinClass extends superclass {
@@ -4430,12 +4434,12 @@ const ComboBoxClass = compose(
4430
4434
  // and reset items to an empty array, and opening the list box with no items
4431
4435
  // to display.
4432
4436
  excludeAttrsSync: ['tabindex', 'size', 'data'],
4433
- componentName: componentName$z,
4437
+ componentName: componentName$A,
4434
4438
  includeForwardProps: ['items', 'renderer', 'selectedItem'],
4435
4439
  })
4436
4440
  );
4437
4441
 
4438
- customElements.define(componentName$z, ComboBoxClass);
4442
+ customElements.define(componentName$A, ComboBoxClass);
4439
4443
 
4440
4444
  var CountryCodes = [
4441
4445
  // United States should be the first option
@@ -5678,7 +5682,7 @@ const comboBoxItem = ({ code, dialCode, name: country }) => `
5678
5682
  </div>
5679
5683
  `;
5680
5684
 
5681
- const componentName$y = getComponentName('phone-field-internal');
5685
+ const componentName$z = getComponentName('phone-field-internal');
5682
5686
 
5683
5687
  const commonAttrs$1 = ['disabled', 'size', 'bordered', 'invalid', 'readonly'];
5684
5688
  const countryAttrs = ['country-input-placeholder', 'default-code', 'restrict-countries'];
@@ -5692,7 +5696,7 @@ const mapAttrs$1 = {
5692
5696
 
5693
5697
  const inputRelatedAttrs$1 = [].concat(commonAttrs$1, countryAttrs, phoneAttrs, labelTypeAttrs);
5694
5698
 
5695
- const BaseInputClass$6 = createBaseInputClass({ componentName: componentName$y, baseSelector: 'div' });
5699
+ const BaseInputClass$6 = createBaseInputClass({ componentName: componentName$z, baseSelector: 'div' });
5696
5700
 
5697
5701
  let PhoneFieldInternal$1 = class PhoneFieldInternal extends BaseInputClass$6 {
5698
5702
  static get observedAttributes() {
@@ -5909,12 +5913,12 @@ let PhoneFieldInternal$1 = class PhoneFieldInternal extends BaseInputClass$6 {
5909
5913
  }
5910
5914
  };
5911
5915
 
5912
- customElements.define(componentName$y, PhoneFieldInternal$1);
5916
+ customElements.define(componentName$z, PhoneFieldInternal$1);
5913
5917
 
5914
5918
  const textVars$1 = TextFieldClass.cssVarList;
5915
5919
  const comboVars = ComboBoxClass.cssVarList;
5916
5920
 
5917
- const componentName$x = getComponentName('phone-field');
5921
+ const componentName$y = getComponentName('phone-field');
5918
5922
 
5919
5923
  const customMixin$6 = (superclass) =>
5920
5924
  class PhoneFieldMixinClass extends superclass {
@@ -5928,15 +5932,15 @@ const customMixin$6 = (superclass) =>
5928
5932
  const template = document.createElement('template');
5929
5933
 
5930
5934
  template.innerHTML = `
5931
- <${componentName$y}
5935
+ <${componentName$z}
5932
5936
  tabindex="-1"
5933
5937
  slot="input"
5934
- ></${componentName$y}>
5938
+ ></${componentName$z}>
5935
5939
  `;
5936
5940
 
5937
5941
  this.baseElement.appendChild(template.content.cloneNode(true));
5938
5942
 
5939
- this.inputElement = this.shadowRoot.querySelector(componentName$y);
5943
+ this.inputElement = this.shadowRoot.querySelector(componentName$z);
5940
5944
 
5941
5945
  forwardAttrs(this.shadowRoot.host, this.inputElement, {
5942
5946
  includeAttrs: [
@@ -6158,17 +6162,17 @@ const PhoneFieldClass = compose(
6158
6162
  ${resetInputLabelPosition('vaadin-text-field')}
6159
6163
  `,
6160
6164
  excludeAttrsSync: ['tabindex'],
6161
- componentName: componentName$x,
6165
+ componentName: componentName$y,
6162
6166
  })
6163
6167
  );
6164
6168
 
6165
- customElements.define(componentName$x, PhoneFieldClass);
6169
+ customElements.define(componentName$y, PhoneFieldClass);
6166
6170
 
6167
6171
  const getCountryByCodeId = (countryCode) => {
6168
6172
  return CountryCodes.find((c) => c.code === countryCode)?.dialCode;
6169
6173
  };
6170
6174
 
6171
- const componentName$w = getComponentName('phone-field-internal-input-box');
6175
+ const componentName$x = getComponentName('phone-field-internal-input-box');
6172
6176
 
6173
6177
  const observedAttributes$2 = [
6174
6178
  'disabled',
@@ -6185,7 +6189,7 @@ const mapAttrs = {
6185
6189
  'phone-input-placeholder': 'placeholder',
6186
6190
  };
6187
6191
 
6188
- const BaseInputClass$5 = createBaseInputClass({ componentName: componentName$w, baseSelector: 'div' });
6192
+ const BaseInputClass$5 = createBaseInputClass({ componentName: componentName$x, baseSelector: 'div' });
6189
6193
 
6190
6194
  class PhoneFieldInternal extends BaseInputClass$5 {
6191
6195
  static get observedAttributes() {
@@ -6324,11 +6328,11 @@ class PhoneFieldInternal extends BaseInputClass$5 {
6324
6328
  }
6325
6329
  }
6326
6330
 
6327
- customElements.define(componentName$w, PhoneFieldInternal);
6331
+ customElements.define(componentName$x, PhoneFieldInternal);
6328
6332
 
6329
6333
  const textVars = TextFieldClass.cssVarList;
6330
6334
 
6331
- const componentName$v = getComponentName('phone-input-box-field');
6335
+ const componentName$w = getComponentName('phone-input-box-field');
6332
6336
 
6333
6337
  const customMixin$5 = (superclass) =>
6334
6338
  class PhoneInputBoxFieldMixinClass extends superclass {
@@ -6342,15 +6346,15 @@ const customMixin$5 = (superclass) =>
6342
6346
  const template = document.createElement('template');
6343
6347
 
6344
6348
  template.innerHTML = `
6345
- <${componentName$w}
6349
+ <${componentName$x}
6346
6350
  tabindex="-1"
6347
6351
  slot="input"
6348
- ></${componentName$w}>
6352
+ ></${componentName$x}>
6349
6353
  `;
6350
6354
 
6351
6355
  this.baseElement.appendChild(template.content.cloneNode(true));
6352
6356
 
6353
- this.inputElement = this.shadowRoot.querySelector(componentName$w);
6357
+ this.inputElement = this.shadowRoot.querySelector(componentName$x);
6354
6358
 
6355
6359
  forwardAttrs(this.shadowRoot.host, this.inputElement, {
6356
6360
  includeAttrs: [
@@ -6527,26 +6531,26 @@ const PhoneFieldInputBoxClass = compose(
6527
6531
  ${inputFloatingLabelStyle()}
6528
6532
  `,
6529
6533
  excludeAttrsSync: ['tabindex'],
6530
- componentName: componentName$v,
6534
+ componentName: componentName$w,
6531
6535
  })
6532
6536
  );
6533
6537
 
6534
- customElements.define(componentName$v, PhoneFieldInputBoxClass);
6538
+ customElements.define(componentName$w, PhoneFieldInputBoxClass);
6535
6539
 
6536
- const componentName$u = getComponentName('new-password-internal');
6540
+ const componentName$v = getComponentName('new-password-internal');
6537
6541
 
6538
6542
  const interpolateString = (template, values) =>
6539
6543
  template.replace(/{{(\w+)+}}/g, (match, key) => values?.[key] || match);
6540
6544
 
6541
6545
  // eslint-disable-next-line max-classes-per-file
6542
6546
 
6543
- const componentName$t = getComponentName('policy-validation');
6547
+ const componentName$u = getComponentName('policy-validation');
6544
6548
 
6545
6549
  const overrideAttrs = ['data-password-policy-value-minlength'];
6546
6550
  const dataAttrs = ['data', 'active-policies', 'overrides', ...overrideAttrs];
6547
6551
  const policyAttrs = ['label', 'value', ...dataAttrs];
6548
6552
 
6549
- class RawPolicyValidation extends createBaseClass({ componentName: componentName$t, baseSelector: ':host > div' }) {
6553
+ class RawPolicyValidation extends createBaseClass({ componentName: componentName$u, baseSelector: ':host > div' }) {
6550
6554
  #availablePolicies;
6551
6555
 
6552
6556
  #activePolicies = [];
@@ -6754,7 +6758,7 @@ const PolicyValidationClass = compose(
6754
6758
  componentNameValidationMixin
6755
6759
  )(RawPolicyValidation);
6756
6760
 
6757
- const componentName$s = getComponentName('new-password');
6761
+ const componentName$t = getComponentName('new-password');
6758
6762
 
6759
6763
  const policyPreviewVars = PolicyValidationClass.cssVarList;
6760
6764
 
@@ -6766,17 +6770,17 @@ const customMixin$4 = (superclass) =>
6766
6770
  const template = document.createElement('template');
6767
6771
 
6768
6772
  template.innerHTML = `
6769
- <${componentName$u}
6773
+ <${componentName$v}
6770
6774
  name="new-password"
6771
6775
  tabindex="-1"
6772
6776
  slot="input"
6773
6777
  >
6774
- </${componentName$u}>
6778
+ </${componentName$v}>
6775
6779
  `;
6776
6780
 
6777
6781
  this.baseElement.appendChild(template.content.cloneNode(true));
6778
6782
 
6779
- this.inputElement = this.shadowRoot.querySelector(componentName$u);
6783
+ this.inputElement = this.shadowRoot.querySelector(componentName$v);
6780
6784
 
6781
6785
  forwardAttrs(this, this.inputElement, {
6782
6786
  includeAttrs: [
@@ -6919,11 +6923,11 @@ const NewPasswordClass = compose(
6919
6923
  }
6920
6924
  `,
6921
6925
  excludeAttrsSync: ['tabindex'],
6922
- componentName: componentName$s,
6926
+ componentName: componentName$t,
6923
6927
  })
6924
6928
  );
6925
6929
 
6926
- customElements.define(componentName$t, PolicyValidationClass);
6930
+ customElements.define(componentName$u, PolicyValidationClass);
6927
6931
 
6928
6932
  const passwordAttrPrefixRegex = /^password-/;
6929
6933
  const confirmAttrPrefixRegex = /^confirm-/;
@@ -6954,7 +6958,7 @@ const inputRelatedAttrs = [].concat(
6954
6958
  policyPanelAttrs
6955
6959
  );
6956
6960
 
6957
- const BaseInputClass$4 = createBaseInputClass({ componentName: componentName$u, baseSelector: 'div' });
6961
+ const BaseInputClass$4 = createBaseInputClass({ componentName: componentName$v, baseSelector: 'div' });
6958
6962
 
6959
6963
  class NewPasswordInternal extends BaseInputClass$4 {
6960
6964
  static get observedAttributes() {
@@ -7152,16 +7156,16 @@ class NewPasswordInternal extends BaseInputClass$4 {
7152
7156
  }
7153
7157
  }
7154
7158
 
7155
- customElements.define(componentName$u, NewPasswordInternal);
7159
+ customElements.define(componentName$v, NewPasswordInternal);
7156
7160
 
7157
- customElements.define(componentName$s, NewPasswordClass);
7161
+ customElements.define(componentName$t, NewPasswordClass);
7158
7162
 
7159
- const componentName$r = getComponentName('recaptcha');
7163
+ const componentName$s = getComponentName('recaptcha');
7160
7164
 
7161
7165
  const observedAttributes$1 = ['enabled', 'site-key', 'action', 'enterprise'];
7162
7166
 
7163
7167
  const BaseClass = createBaseClass({
7164
- componentName: componentName$r,
7168
+ componentName: componentName$s,
7165
7169
  baseSelector: ':host > div',
7166
7170
  });
7167
7171
  class RawRecaptcha extends BaseClass {
@@ -7348,7 +7352,7 @@ class RawRecaptcha extends BaseClass {
7348
7352
 
7349
7353
  const RecaptchaClass = compose(draggableMixin)(RawRecaptcha);
7350
7354
 
7351
- customElements.define(componentName$r, RecaptchaClass);
7355
+ customElements.define(componentName$s, RecaptchaClass);
7352
7356
 
7353
7357
  const getFileBase64 = (fileObj) => {
7354
7358
  return new Promise((resolve) => {
@@ -7362,7 +7366,7 @@ const getFilename = (fileObj) => {
7362
7366
  return fileObj.name.replace(/^.*\\/, '');
7363
7367
  };
7364
7368
 
7365
- const componentName$q = getComponentName('upload-file');
7369
+ const componentName$r = getComponentName('upload-file');
7366
7370
 
7367
7371
  const observedAttributes = [
7368
7372
  'title',
@@ -7377,7 +7381,7 @@ const observedAttributes = [
7377
7381
  'icon',
7378
7382
  ];
7379
7383
 
7380
- const BaseInputClass$3 = createBaseInputClass({ componentName: componentName$q, baseSelector: ':host > div' });
7384
+ const BaseInputClass$3 = createBaseInputClass({ componentName: componentName$r, baseSelector: ':host > div' });
7381
7385
 
7382
7386
  class RawUploadFile extends BaseInputClass$3 {
7383
7387
  static get observedAttributes() {
@@ -7592,7 +7596,7 @@ const UploadFileClass = compose(
7592
7596
  componentNameValidationMixin
7593
7597
  )(RawUploadFile);
7594
7598
 
7595
- customElements.define(componentName$q, UploadFileClass);
7599
+ customElements.define(componentName$r, UploadFileClass);
7596
7600
 
7597
7601
  const createBaseButtonSelectionGroupInternalClass = (componentName) => {
7598
7602
  class BaseButtonSelectionGroupInternalClass extends createBaseInputClass({
@@ -7690,10 +7694,10 @@ const createBaseButtonSelectionGroupInternalClass = (componentName) => {
7690
7694
  return BaseButtonSelectionGroupInternalClass;
7691
7695
  };
7692
7696
 
7693
- const componentName$p = getComponentName('button-selection-group-internal');
7697
+ const componentName$q = getComponentName('button-selection-group-internal');
7694
7698
 
7695
7699
  class ButtonSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(
7696
- componentName$p
7700
+ componentName$q
7697
7701
  ) {
7698
7702
  getSelectedNode() {
7699
7703
  return this.items.find((item) => item.hasAttribute('selected'));
@@ -7925,7 +7929,7 @@ const buttonSelectionGroupStyles = `
7925
7929
  ${resetInputCursor('vaadin-text-field')}
7926
7930
  `;
7927
7931
 
7928
- const componentName$o = getComponentName('button-selection-group');
7932
+ const componentName$p = getComponentName('button-selection-group');
7929
7933
 
7930
7934
  const buttonSelectionGroupMixin = (superclass) =>
7931
7935
  class ButtonMultiSelectionGroupMixinClass extends superclass {
@@ -7934,19 +7938,19 @@ const buttonSelectionGroupMixin = (superclass) =>
7934
7938
  const template = document.createElement('template');
7935
7939
 
7936
7940
  template.innerHTML = `
7937
- <${componentName$p}
7941
+ <${componentName$q}
7938
7942
  name="button-selection-group"
7939
7943
  slot="input"
7940
7944
  tabindex="-1"
7941
7945
  part="internal-component"
7942
7946
  >
7943
7947
  <slot></slot>
7944
- </${componentName$p}>
7948
+ </${componentName$q}>
7945
7949
  `;
7946
7950
 
7947
7951
  this.baseElement.appendChild(template.content.cloneNode(true));
7948
7952
 
7949
- this.inputElement = this.shadowRoot.querySelector(componentName$p);
7953
+ this.inputElement = this.shadowRoot.querySelector(componentName$q);
7950
7954
 
7951
7955
  forwardAttrs(this, this.inputElement, {
7952
7956
  includeAttrs: ['size', 'default-value', 'allow-deselect'],
@@ -7971,16 +7975,16 @@ const ButtonSelectionGroupClass = compose(
7971
7975
  wrappedEleName: 'vaadin-text-field',
7972
7976
  style: () => buttonSelectionGroupStyles,
7973
7977
  excludeAttrsSync: ['tabindex'],
7974
- componentName: componentName$o,
7978
+ componentName: componentName$p,
7975
7979
  })
7976
7980
  );
7977
7981
 
7978
- customElements.define(componentName$p, ButtonSelectionGroupInternalClass);
7982
+ customElements.define(componentName$q, ButtonSelectionGroupInternalClass);
7979
7983
 
7980
- const componentName$n = getComponentName('button-selection-group-item');
7984
+ const componentName$o = getComponentName('button-selection-group-item');
7981
7985
 
7982
7986
  class RawSelectItem extends createBaseClass({
7983
- componentName: componentName$n,
7987
+ componentName: componentName$o,
7984
7988
  baseSelector: ':host > descope-button',
7985
7989
  }) {
7986
7990
  get size() {
@@ -8087,14 +8091,14 @@ const ButtonSelectionGroupItemClass = compose(
8087
8091
  componentNameValidationMixin
8088
8092
  )(RawSelectItem);
8089
8093
 
8090
- customElements.define(componentName$n, ButtonSelectionGroupItemClass);
8094
+ customElements.define(componentName$o, ButtonSelectionGroupItemClass);
8091
8095
 
8092
- customElements.define(componentName$o, ButtonSelectionGroupClass);
8096
+ customElements.define(componentName$p, ButtonSelectionGroupClass);
8093
8097
 
8094
- const componentName$m = getComponentName('button-multi-selection-group-internal');
8098
+ const componentName$n = getComponentName('button-multi-selection-group-internal');
8095
8099
 
8096
8100
  class ButtonMultiSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(
8097
- componentName$m
8101
+ componentName$n
8098
8102
  ) {
8099
8103
  #getSelectedNodes() {
8100
8104
  return this.items.filter((item) => item.hasAttribute('selected'));
@@ -8197,7 +8201,7 @@ class ButtonMultiSelectionGroupInternalClass extends createBaseButtonSelectionGr
8197
8201
  }
8198
8202
  }
8199
8203
 
8200
- const componentName$l = getComponentName('button-multi-selection-group');
8204
+ const componentName$m = getComponentName('button-multi-selection-group');
8201
8205
 
8202
8206
  const buttonMultiSelectionGroupMixin = (superclass) =>
8203
8207
  class ButtonMultiSelectionGroupMixinClass extends superclass {
@@ -8206,19 +8210,19 @@ const buttonMultiSelectionGroupMixin = (superclass) =>
8206
8210
  const template = document.createElement('template');
8207
8211
 
8208
8212
  template.innerHTML = `
8209
- <${componentName$m}
8213
+ <${componentName$n}
8210
8214
  name="button-selection-group"
8211
8215
  slot="input"
8212
8216
  tabindex="-1"
8213
8217
  part="internal-component"
8214
8218
  >
8215
8219
  <slot></slot>
8216
- </${componentName$m}>
8220
+ </${componentName$n}>
8217
8221
  `;
8218
8222
 
8219
8223
  this.baseElement.appendChild(template.content.cloneNode(true));
8220
8224
 
8221
- this.inputElement = this.shadowRoot.querySelector(componentName$m);
8225
+ this.inputElement = this.shadowRoot.querySelector(componentName$n);
8222
8226
 
8223
8227
  forwardAttrs(this, this.inputElement, {
8224
8228
  includeAttrs: ['size', 'default-values', 'min-items-selection', 'max-items-selection'],
@@ -8243,13 +8247,13 @@ const ButtonMultiSelectionGroupClass = compose(
8243
8247
  wrappedEleName: 'vaadin-text-field',
8244
8248
  style: () => buttonSelectionGroupStyles,
8245
8249
  excludeAttrsSync: ['tabindex'],
8246
- componentName: componentName$l,
8250
+ componentName: componentName$m,
8247
8251
  })
8248
8252
  );
8249
8253
 
8250
- customElements.define(componentName$m, ButtonMultiSelectionGroupInternalClass);
8254
+ customElements.define(componentName$n, ButtonMultiSelectionGroupInternalClass);
8251
8255
 
8252
- customElements.define(componentName$l, ButtonMultiSelectionGroupClass);
8256
+ customElements.define(componentName$m, ButtonMultiSelectionGroupClass);
8253
8257
 
8254
8258
  /* eslint-disable no-param-reassign */
8255
8259
 
@@ -8277,9 +8281,9 @@ class GridTextColumnClass extends GridSortColumn {
8277
8281
  }
8278
8282
  }
8279
8283
 
8280
- const componentName$k = getComponentName('grid-text-column');
8284
+ const componentName$l = getComponentName('grid-text-column');
8281
8285
 
8282
- customElements.define(componentName$k, GridTextColumnClass);
8286
+ customElements.define(componentName$l, GridTextColumnClass);
8283
8287
 
8284
8288
  /* eslint-disable no-param-reassign */
8285
8289
 
@@ -8314,9 +8318,9 @@ class GridCustomColumnClass extends GridTextColumnClass {
8314
8318
 
8315
8319
  /* eslint-disable no-param-reassign */
8316
8320
 
8317
- const componentName$j = getComponentName('grid-custom-column');
8321
+ const componentName$k = getComponentName('grid-custom-column');
8318
8322
 
8319
- customElements.define(componentName$j, GridCustomColumnClass);
8323
+ customElements.define(componentName$k, GridCustomColumnClass);
8320
8324
 
8321
8325
  const createCheckboxEle = () => {
8322
8326
  const checkbox = document.createElement('descope-checkbox');
@@ -8375,9 +8379,50 @@ class GridSelectionColumnClass extends GridSelectionColumn {
8375
8379
  }
8376
8380
  }
8377
8381
 
8378
- const componentName$i = getComponentName('grid-selection-column');
8382
+ const componentName$j = getComponentName('grid-selection-column');
8383
+
8384
+ customElements.define(componentName$j, GridSelectionColumnClass);
8385
+
8386
+ /* eslint-disable no-param-reassign */
8379
8387
 
8380
- customElements.define(componentName$i, GridSelectionColumnClass);
8388
+ class GridItemDetailsColumnClass extends GridSortColumn {
8389
+ get sortable() {
8390
+ return this.getAttribute('sortable') === 'true';
8391
+ }
8392
+
8393
+ // eslint-disable-next-line class-methods-use-this
8394
+ _defaultRenderer(cell, _col, model) {
8395
+ const grid = _col._gridValue;
8396
+ const itemIdx = grid.detailsOpenedItems?.indexOf(model.item) ?? -1;
8397
+ const isOpened = itemIdx !== -1;
8398
+
8399
+ const toggleIcon = document.createElement('vaadin-icon');
8400
+ toggleIcon.icon = isOpened ? 'vaadin:angle-up' : 'vaadin:angle-down';
8401
+ toggleIcon.classList.add('toggle-details-button', isOpened ? 'opened' : 'closed');
8402
+ cell.innerHTML = '';
8403
+ cell.append(toggleIcon);
8404
+
8405
+ toggleIcon.onclick = () => {
8406
+ grid.detailsOpenedItems = isOpened
8407
+ ? grid.detailsOpenedItems.toSpliced(itemIdx, 1)
8408
+ : [...grid.detailsOpenedItems, model.item];
8409
+ };
8410
+ }
8411
+
8412
+ _defaultHeaderRenderer(root, _column) {
8413
+ if (this.sortable) {
8414
+ super._defaultHeaderRenderer(root, _column);
8415
+
8416
+ return;
8417
+ }
8418
+
8419
+ this.__setTextContent(root, this.__getHeader(this.header, this.path));
8420
+ }
8421
+ }
8422
+
8423
+ const componentName$i = getComponentName('grid-item-details-column');
8424
+
8425
+ customElements.define(componentName$i, GridItemDetailsColumnClass);
8381
8426
 
8382
8427
  const isValidDataType = (data) => {
8383
8428
  const isValid = Array.isArray(data);
@@ -8389,6 +8434,58 @@ const isValidDataType = (data) => {
8389
8434
  return isValid;
8390
8435
  };
8391
8436
 
8437
+ const isPlainObject = (value) => value?.constructor === Object;
8438
+
8439
+ const getValueType = (value) => {
8440
+ if (isPlainObject(value)) return 'object';
8441
+ if (Array.isArray(value)) return 'array';
8442
+
8443
+ return 'text';
8444
+ };
8445
+
8446
+ const renderCodeSnippet = (value) =>
8447
+ `<descope-code-snippet lang="json" class="row-details__value json">${JSON.stringify(
8448
+ value,
8449
+ null,
8450
+ 2
8451
+ )}</descope-code-snippet>`;
8452
+
8453
+ const renderText = (text) =>
8454
+ `<div class="row-details__value text" title="${text}">${text}</div>`;
8455
+
8456
+ const defaultRowDetailsValueRenderer = (value) => {
8457
+ const valueType = getValueType(value);
8458
+
8459
+ if (valueType === 'object') {
8460
+ return renderCodeSnippet(value);
8461
+ }
8462
+
8463
+ if (valueType === 'array') {
8464
+ if (value.some((v) => getValueType(v) === 'object')) {
8465
+ return renderCodeSnippet(value);
8466
+ }
8467
+ return renderText(value.join(',\n'));
8468
+ }
8469
+
8470
+ return renderText(value);
8471
+ };
8472
+
8473
+ const defaultRowDetailsRenderer = (item, itemLabelsMapping) => {
8474
+ return `
8475
+ <div class="row-details">
8476
+ ${Object.entries(item)
8477
+ .map(
8478
+ ([key, value]) =>
8479
+ `<div class="row-details__item" >
8480
+ <div class="row-details__label">${itemLabelsMapping[key] || toTitle(key)}</div>
8481
+ ${defaultRowDetailsValueRenderer(value)}
8482
+ </div>`
8483
+ )
8484
+ .join('\n')}
8485
+ </div>
8486
+ `;
8487
+ };
8488
+
8392
8489
  const componentName$h = getComponentName('grid');
8393
8490
 
8394
8491
  const GridMixin = (superclass) =>
@@ -8402,6 +8499,41 @@ const GridMixin = (superclass) =>
8402
8499
 
8403
8500
  // disable the grid sort
8404
8501
  this.baseElement._mapSorters = () => {};
8502
+
8503
+ this.baseElement.rowDetailsRenderer = this.#rowDetailsRenderer.bind(this);
8504
+ }
8505
+
8506
+ // this renders the details panel content
8507
+ // in order to open it, the descope-grid-item-details-column should be used
8508
+ #rowDetailsRenderer = async (cell, _col, model) => {
8509
+ await Promise.resolve().then(function () { return index; });
8510
+ // prevent details panel from being scrolled into view when clicked
8511
+ cell.addEventListener('mousedown', (e) => e.stopImmediatePropagation(), true);
8512
+
8513
+ const template = this.getRowDetailsTemplate(model.item);
8514
+
8515
+ // eslint-disable-next-line no-param-reassign
8516
+ cell.innerHTML = '';
8517
+ cell.append(template.content.cloneNode(true));
8518
+ };
8519
+
8520
+ getRowDetailsTemplate(item) {
8521
+ const itemLabelsMapping = this.#columns.reduce(
8522
+ (acc, { path, header }) => (!path || !header ? acc : { ...acc, [path]: header }),
8523
+ {}
8524
+ );
8525
+ const template =
8526
+ this.rowDetailsRenderer?.(item, itemLabelsMapping) ??
8527
+ defaultRowDetailsRenderer(item, itemLabelsMapping);
8528
+
8529
+ switch (true) {
8530
+ case template instanceof HTMLTemplateElement:
8531
+ return template;
8532
+ case typeof template === 'string':
8533
+ return Object.assign(document.createElement('template'), { innerHTML: template });
8534
+ default:
8535
+ throw new Error('rowDetailsRenderer should return a string or a template');
8536
+ }
8405
8537
  }
8406
8538
 
8407
8539
  forwardSelectedItemsChange() {
@@ -8495,9 +8627,20 @@ const GridMixin = (superclass) =>
8495
8627
  );
8496
8628
  }
8497
8629
 
8630
+ // there is an issue in vaadin-grid, when rowDetailsRenderer is set, it renders an empty details panel
8631
+ reassignRowDetailsRenderer() {
8632
+ this.baseElement.rowDetailsRenderer = null;
8633
+ setTimeout(() => {
8634
+ this.baseElement.rowDetailsRenderer = this.#rowDetailsRenderer.bind(this);
8635
+ }, 0);
8636
+ }
8637
+
8498
8638
  renderColumns() {
8499
8639
  const template = this.getColumnsTemplate();
8500
- if (template) this.innerHTML = template;
8640
+ if (template) {
8641
+ this.reassignRowDetailsRenderer();
8642
+ this.innerHTML = template;
8643
+ }
8501
8644
  }
8502
8645
 
8503
8646
  get grid() {
@@ -8559,17 +8702,35 @@ const {
8559
8702
  selectedRow,
8560
8703
  rowSeparator,
8561
8704
  resizeHandle,
8705
+ toggleDetailsPanelButton,
8706
+ toggleDetailsPanelButtonOpened,
8707
+ toggleDetailsPanelButtonClosed,
8708
+ detailsPanel,
8709
+ detailsPanelLabels,
8710
+ selectedRowCell,
8711
+ detailsPanelContent,
8562
8712
  } = {
8563
8713
  host: { selector: () => 'vaadin-grid' },
8564
8714
  headerRow: { selector: () => '::part(header-cell)' },
8565
8715
  headerRowCell: { selector: () => 'vaadin-grid::part(header-cell)' },
8566
8716
  contentRow: { selector: () => '::part(cell)' },
8567
8717
  firstRow: { selector: () => '::part(first-header-row-cell)' },
8568
- selectedRow: { selector: () => '::part(selected-row-cell)' },
8718
+ selectedRow: { selector: () => '::part(selected-row)' },
8719
+ selectedRowCell: { selector: () => '::part(selected-row-cell)' },
8569
8720
  sortIndicators: { selector: () => 'vaadin-grid-sorter::part(indicators)' },
8570
8721
  activeSortIndicator: { selector: () => 'vaadin-grid-sorter[direction]' },
8571
8722
  rowSeparator: { selector: () => 'vaadin-grid::part(body-cell)' },
8572
8723
  resizeHandle: { selector: () => '::part(resize-handle)' },
8724
+ toggleDetailsPanelButton: { selector: () => 'vaadin-grid vaadin-icon.toggle-details-button' },
8725
+ toggleDetailsPanelButtonOpened: {
8726
+ selector: () => 'vaadin-grid vaadin-icon.toggle-details-button.opened',
8727
+ },
8728
+ toggleDetailsPanelButtonClosed: {
8729
+ selector: () => 'vaadin-grid vaadin-icon.toggle-details-button.closed',
8730
+ },
8731
+ detailsPanel: { selector: () => 'vaadin-grid::part(details-cell)' },
8732
+ detailsPanelLabels: { selector: () => 'vaadin-grid .row-details__label' },
8733
+ detailsPanelContent: { selector: () => 'vaadin-grid .row-details' },
8573
8734
  };
8574
8735
 
8575
8736
  const GridClass = compose(
@@ -8593,7 +8754,10 @@ const GridClass = compose(
8593
8754
  borderWidth: { ...host$6, property: 'border-width' },
8594
8755
  borderStyle: { ...host$6, property: 'border-style' },
8595
8756
  borderRadius: { ...host$6, property: 'border-radius' },
8596
- selectedBackgroundColor: { ...selectedRow, property: 'background-color' },
8757
+ selectedBackgroundColor: [
8758
+ { ...selectedRow, property: 'background-color' },
8759
+ { ...selectedRowCell, property: 'background-color' },
8760
+ ],
8597
8761
  headerRowTextColor: { ...headerRowCell, property: 'color' },
8598
8762
  separatorColor: [
8599
8763
  { ...firstRow, property: 'border-bottom-color' },
@@ -8601,6 +8765,19 @@ const GridClass = compose(
8601
8765
  ],
8602
8766
  resizeHandleColor: { ...resizeHandle, property: 'background-color' },
8603
8767
  hostDirection: { ...host$6, property: 'direction', fallback: 'ltr' },
8768
+ toggleDetailsPanelButtonSize: [
8769
+ { ...toggleDetailsPanelButton, property: 'width' },
8770
+ { ...toggleDetailsPanelButton, property: 'height' },
8771
+ ],
8772
+ toggleDetailsPanelButtonOpenedColor: { ...toggleDetailsPanelButtonOpened, property: 'color' },
8773
+ toggleDetailsPanelButtonClosedColor: { ...toggleDetailsPanelButtonClosed, property: 'color' },
8774
+ toggleDetailsPanelButtonCursor: { ...toggleDetailsPanelButton, property: 'cursor' },
8775
+ detailsPanelBackgroundColor: { ...detailsPanel, property: 'background-color' },
8776
+ detailsPanelBorderTopColor: { ...detailsPanel, property: 'border-top-color' },
8777
+ detailsPanelLabelsColor: { ...detailsPanelLabels, property: 'color' },
8778
+ detailsPanelLabelsFontSize: { ...detailsPanelLabels, property: 'font-size' },
8779
+ detailsPanelItemsGap: { ...detailsPanelContent, property: 'grid-gap' },
8780
+ detailsPanelPadding: { ...detailsPanelContent, property: 'padding' },
8604
8781
  },
8605
8782
  }),
8606
8783
  draggableMixin,
@@ -8612,6 +8789,7 @@ const GridClass = compose(
8612
8789
  slots: [''],
8613
8790
  wrappedEleName: 'vaadin-grid',
8614
8791
  style: () => `
8792
+ /*css*/
8615
8793
  vaadin-grid {
8616
8794
  overflow: hidden;
8617
8795
  height: 100%;
@@ -8623,7 +8801,36 @@ const GridClass = compose(
8623
8801
  vaadin-grid::part(selected-row-cell) {
8624
8802
  background-image: none;
8625
8803
  box-shadow: none;
8804
+ background-color: inherit;
8805
+ }
8806
+ vaadin-grid::part(details-cell) {
8807
+ border-top-style: dashed;
8808
+ border-top-width: 1px;
8626
8809
  }
8810
+ vaadin-grid .row-details {
8811
+ display: grid;
8812
+ grid-template-columns: repeat(auto-fit, minmax(max(200px, calc(100%/4 - var(${GridClass.cssVarList.detailsPanelItemsGap}))), 1fr));
8813
+ width: 100%;
8814
+ }
8815
+ vaadin-grid .row-details__item:has(.row-details__value.json) {
8816
+ grid-column: 1 / -1;
8817
+ order: 2;
8818
+ }
8819
+ vaadin-grid .row-details__value.text {
8820
+ overflow: hidden;
8821
+ text-overflow: ellipsis;
8822
+ white-space: pre;
8823
+ }
8824
+ vaadin-grid .row-details__value.json {
8825
+ margin-top: 5px;
8826
+ max-height: 120px;
8827
+ overflow: scroll;
8828
+ font-size: 0.85em;
8829
+ }
8830
+ vaadin-grid vaadin-icon.toggle-details-button {
8831
+ margin: auto;
8832
+ }
8833
+ /*!css*/
8627
8834
  `,
8628
8835
  excludeAttrsSync: ['columns', 'tabindex'],
8629
8836
  componentName: componentName$h,
@@ -9761,7 +9968,7 @@ const AvatarClass = compose(
9761
9968
 
9762
9969
  customElements.define(componentName$b, AvatarClass);
9763
9970
 
9764
- customElements.define(componentName$W, IconClass);
9971
+ customElements.define(componentName$X, IconClass);
9765
9972
 
9766
9973
  const componentName$a = getComponentName('mappings-field-internal');
9767
9974
 
@@ -11239,6 +11446,11 @@ const CodeSnippetClass = compose(
11239
11446
 
11240
11447
  customElements.define(componentName$3, CodeSnippetClass);
11241
11448
 
11449
+ var index = /*#__PURE__*/Object.freeze({
11450
+ __proto__: null,
11451
+ CodeSnippetClass: CodeSnippetClass
11452
+ });
11453
+
11242
11454
  const componentName$2 = getComponentName('radio-button');
11243
11455
 
11244
11456
  const customMixin = (superclass) =>
@@ -11290,6 +11502,9 @@ const RadioButtonClass = compose(
11290
11502
  radioMargin: { selector: '::part(radio)', property: 'margin' },
11291
11503
  radioCheckedSize: { selector: '::part(radio)::after', property: 'border-width' },
11292
11504
  radioCheckedColor: { selector: '::part(radio)::after', property: 'border-color' },
11505
+ radioBorderColor: { selector: '::part(radio)', property: 'border-color', fallback: 'none' },
11506
+ radioBorderWidth: { selector: '::part(radio)', property: 'border-width', fallback: 0 },
11507
+ radioBorderStyle: { selector: '::part(radio)', property: 'border-style', fallback: 'solid' },
11293
11508
  },
11294
11509
  }),
11295
11510
  composedProxyInputMixin({ proxyProps: ['setSelectionRange'] }),
@@ -11926,7 +12141,7 @@ const mode = {
11926
12141
  surface: globalRefs$s.colors.surface,
11927
12142
  };
11928
12143
 
11929
- const [helperTheme$3, helperRefs$3, helperVars$3] = createHelperVars({ mode }, componentName$V);
12144
+ const [helperTheme$3, helperRefs$3, helperVars$3] = createHelperVars({ mode }, componentName$W);
11930
12145
 
11931
12146
  const button = {
11932
12147
  ...helperTheme$3,
@@ -12528,7 +12743,7 @@ const [helperTheme$2, helperRefs$2, helperVars$2] = createHelperVars(
12528
12743
  horizontalAlignment,
12529
12744
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
12530
12745
  },
12531
- componentName$P
12746
+ componentName$Q
12532
12747
  );
12533
12748
 
12534
12749
  const { shadowColor: shadowColor$1 } = helperRefs$2;
@@ -12768,6 +12983,8 @@ const EnrichedText = {
12768
12983
  [vars$u.textColor]: globalRefs$l.colors.surface.dark,
12769
12984
 
12770
12985
  [vars$u.linkColor]: `var(${LinkClass.cssVarList.textColor})`,
12986
+ [vars$u.linkTextDecoration]: 'none',
12987
+ [vars$u.linkHoverTextDecoration]: 'underline',
12771
12988
 
12772
12989
  [vars$u.minWidth]: '0.25em',
12773
12990
  [vars$u.minHeight]: '1.35em',
@@ -12861,6 +13078,10 @@ const link = {
12861
13078
  [vars$t.hostWidth]: '100%',
12862
13079
  },
12863
13080
 
13081
+ _hover: {
13082
+ [vars$t.textDecoration]: 'underline',
13083
+ },
13084
+
12864
13085
  mode: {
12865
13086
  secondary: {
12866
13087
  [vars$t.textColor]: globalRefs$k.colors.secondary.main,
@@ -12888,7 +13109,7 @@ const [helperTheme$1, helperRefs$1, helperVars$1] = createHelperVars(
12888
13109
  thickness: '2px',
12889
13110
  spacing: '10px',
12890
13111
  },
12891
- componentName$N
13112
+ componentName$O
12892
13113
  );
12893
13114
 
12894
13115
  const divider = {
@@ -13031,7 +13252,7 @@ const [helperTheme, helperRefs, helperVars] = createHelperVars(
13031
13252
  },
13032
13253
  },
13033
13254
  },
13034
- componentName$Q
13255
+ componentName$R
13035
13256
  );
13036
13257
 
13037
13258
  const loaderRadial = {
@@ -13449,6 +13670,17 @@ const grid = {
13449
13670
  [vars$e.selectedBackgroundColor]: globalRefs$b.colors.surface.highlight,
13450
13671
  [vars$e.hostDirection]: globalRefs$b.direction,
13451
13672
 
13673
+ [vars$e.toggleDetailsPanelButtonSize]: '1em',
13674
+ [vars$e.toggleDetailsPanelButtonOpenedColor]: globalRefs$b.colors.surface.contrast,
13675
+ [vars$e.toggleDetailsPanelButtonClosedColor]: globalRefs$b.colors.surface.light,
13676
+ [vars$e.toggleDetailsPanelButtonCursor]: 'pointer',
13677
+ [vars$e.detailsPanelBackgroundColor]: globalRefs$b.colors.surface.highlight,
13678
+ [vars$e.detailsPanelBorderTopColor]: globalRefs$b.colors.surface.light,
13679
+ [vars$e.detailsPanelLabelsColor]: globalRefs$b.colors.surface.dark,
13680
+ [vars$e.detailsPanelLabelsFontSize]: '0.8em',
13681
+ [vars$e.detailsPanelItemsGap]: '2em',
13682
+ [vars$e.detailsPanelPadding]: '12px 0',
13683
+
13452
13684
  _bordered: {
13453
13685
  [vars$e.borderColor]: refs.borderColor,
13454
13686
  },
@@ -14027,6 +14259,8 @@ const radioButton = {
14027
14259
  [vars$1.radioCheckedSize]: `calc(var(${vars$1.radioSize})/5)`,
14028
14260
  [vars$1.radioCheckedColor]: globalRefs.colors.surface.light,
14029
14261
  [vars$1.radioBackgroundColor]: globalRefs.colors.surface.light,
14262
+ [vars$1.radioBorderColor]: 'none',
14263
+ [vars$1.radioBorderWidth]: 0,
14030
14264
 
14031
14265
  _checked: {
14032
14266
  [vars$1.radioBackgroundColor]: globalRefs.colors.surface.contrast,