@descope/web-components-ui 1.0.347 → 1.0.349

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,