@descope/web-components-ui 1.0.348 → 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 (87) hide show
  1. package/dist/cjs/index.cjs.js +191 -3
  2. package/dist/cjs/index.cjs.js.map +1 -1
  3. package/dist/index.esm.js +376 -149
  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-grid/GridClass.js +116 -6
  79. package/src/components/descope-grid/descope-grid-item-details-column/GridItemDetailsColumnClass.js +37 -0
  80. package/src/components/descope-grid/descope-grid-item-details-column/index.js +8 -0
  81. package/src/components/descope-grid/helpers.js +54 -0
  82. package/src/components/descope-grid/index.js +1 -0
  83. package/src/helpers/index.js +8 -0
  84. package/src/theme/components/grid.js +11 -0
  85. package/dist/umd/2362.js +0 -129
  86. package/dist/umd/4978.js +0 -1
  87. /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';
@@ -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
 
@@ -2727,7 +2735,7 @@ const LinkClass = compose(
2727
2735
  componentNameValidationMixin
2728
2736
  )(RawLink);
2729
2737
 
2730
- customElements.define(componentName$L, LinkClass);
2738
+ customElements.define(componentName$M, LinkClass);
2731
2739
 
2732
2740
  const createCssVarImageClass = ({ componentName, varName, fallbackVarName }) => {
2733
2741
  let style;
@@ -2779,37 +2787,37 @@ const createCssVarImageClass = ({ componentName, varName, fallbackVarName }) =>
2779
2787
  return CssVarImageClass;
2780
2788
  };
2781
2789
 
2782
- const componentName$K = getComponentName('logo');
2790
+ const componentName$L = getComponentName('logo');
2783
2791
 
2784
2792
  const LogoClass = createCssVarImageClass({
2785
- componentName: componentName$K,
2793
+ componentName: componentName$L,
2786
2794
  varName: 'url',
2787
2795
  fallbackVarName: 'fallbackUrl',
2788
2796
  });
2789
2797
 
2790
- customElements.define(componentName$K, LogoClass);
2798
+ customElements.define(componentName$L, LogoClass);
2791
2799
 
2792
- const componentName$J = getComponentName('totp-image');
2800
+ const componentName$K = getComponentName('totp-image');
2793
2801
 
2794
2802
  const TotpImageClass = createCssVarImageClass({
2795
- componentName: componentName$J,
2803
+ componentName: componentName$K,
2796
2804
  varName: 'url',
2797
2805
  fallbackVarName: 'fallbackUrl',
2798
2806
  });
2799
2807
 
2800
- customElements.define(componentName$J, TotpImageClass);
2808
+ customElements.define(componentName$K, TotpImageClass);
2801
2809
 
2802
- const componentName$I = getComponentName('notp-image');
2810
+ const componentName$J = getComponentName('notp-image');
2803
2811
 
2804
2812
  const NotpImageClass = createCssVarImageClass({
2805
- componentName: componentName$I,
2813
+ componentName: componentName$J,
2806
2814
  varName: 'url',
2807
2815
  fallbackVarName: 'fallbackUrl',
2808
2816
  });
2809
2817
 
2810
- customElements.define(componentName$I, NotpImageClass);
2818
+ customElements.define(componentName$J, NotpImageClass);
2811
2819
 
2812
- const componentName$H = getComponentName('number-field');
2820
+ const componentName$I = getComponentName('number-field');
2813
2821
 
2814
2822
  const NumberFieldClass = compose(
2815
2823
  createStyleMixin({
@@ -2843,11 +2851,11 @@ const NumberFieldClass = compose(
2843
2851
  }
2844
2852
  `,
2845
2853
  excludeAttrsSync: ['tabindex'],
2846
- componentName: componentName$H,
2854
+ componentName: componentName$I,
2847
2855
  })
2848
2856
  );
2849
2857
 
2850
- customElements.define(componentName$H, NumberFieldClass);
2858
+ customElements.define(componentName$I, NumberFieldClass);
2851
2859
 
2852
2860
  const focusElement = (ele) => {
2853
2861
  ele?.focus();
@@ -2865,13 +2873,13 @@ const getSanitizedCharacters = (str) => {
2865
2873
 
2866
2874
  /* eslint-disable no-param-reassign */
2867
2875
 
2868
- const componentName$G = getComponentName('passcode-internal');
2876
+ const componentName$H = getComponentName('passcode-internal');
2869
2877
 
2870
2878
  const observedAttributes$5 = ['digits', 'loading'];
2871
2879
 
2872
2880
  const forwardAttributes = ['disabled', 'bordered', 'size', 'invalid', 'readonly'];
2873
2881
 
2874
- const BaseInputClass$7 = createBaseInputClass({ componentName: componentName$G, baseSelector: 'div' });
2882
+ const BaseInputClass$7 = createBaseInputClass({ componentName: componentName$H, baseSelector: 'div' });
2875
2883
 
2876
2884
  class PasscodeInternal extends BaseInputClass$7 {
2877
2885
  static get observedAttributes() {
@@ -3097,7 +3105,7 @@ class PasscodeInternal extends BaseInputClass$7 {
3097
3105
  }
3098
3106
  }
3099
3107
 
3100
- const componentName$F = getComponentName('text-field');
3108
+ const componentName$G = getComponentName('text-field');
3101
3109
 
3102
3110
  const observedAttrs = ['type', 'label-type', 'copy-to-clipboard'];
3103
3111
 
@@ -3219,11 +3227,11 @@ const TextFieldClass = compose(
3219
3227
  }
3220
3228
  `,
3221
3229
  excludeAttrsSync: ['tabindex'],
3222
- componentName: componentName$F,
3230
+ componentName: componentName$G,
3223
3231
  })
3224
3232
  );
3225
3233
 
3226
- const componentName$E = getComponentName('passcode');
3234
+ const componentName$F = getComponentName('passcode');
3227
3235
 
3228
3236
  const observedAttributes$4 = ['digits'];
3229
3237
 
@@ -3242,17 +3250,17 @@ const customMixin$8 = (superclass) =>
3242
3250
  const template = document.createElement('template');
3243
3251
 
3244
3252
  template.innerHTML = `
3245
- <${componentName$G}
3253
+ <${componentName$H}
3246
3254
  bordered="true"
3247
3255
  name="code"
3248
3256
  tabindex="-1"
3249
3257
  slot="input"
3250
- ><slot></slot></${componentName$G}>
3258
+ ><slot></slot></${componentName$H}>
3251
3259
  `;
3252
3260
 
3253
3261
  this.baseElement.appendChild(template.content.cloneNode(true));
3254
3262
 
3255
- this.inputElement = this.shadowRoot.querySelector(componentName$G);
3263
+ this.inputElement = this.shadowRoot.querySelector(componentName$H);
3256
3264
 
3257
3265
  forwardAttrs(this, this.inputElement, { includeAttrs: ['digits', 'size', 'loading'] });
3258
3266
  }
@@ -3399,15 +3407,15 @@ const PasscodeClass = compose(
3399
3407
  ${resetInputCursor('vaadin-text-field')}
3400
3408
  `,
3401
3409
  excludeAttrsSync: ['tabindex'],
3402
- componentName: componentName$E,
3410
+ componentName: componentName$F,
3403
3411
  })
3404
3412
  );
3405
3413
 
3406
- customElements.define(componentName$F, TextFieldClass);
3414
+ customElements.define(componentName$G, TextFieldClass);
3407
3415
 
3408
- customElements.define(componentName$G, PasscodeInternal);
3416
+ customElements.define(componentName$H, PasscodeInternal);
3409
3417
 
3410
- customElements.define(componentName$E, PasscodeClass);
3418
+ customElements.define(componentName$F, PasscodeClass);
3411
3419
 
3412
3420
  const passwordDraggableMixin = (superclass) =>
3413
3421
  class PasswordDraggableMixinClass extends superclass {
@@ -3448,7 +3456,7 @@ const passwordDraggableMixin = (superclass) =>
3448
3456
  }
3449
3457
  };
3450
3458
 
3451
- const componentName$D = getComponentName('password');
3459
+ const componentName$E = getComponentName('password');
3452
3460
 
3453
3461
  const customMixin$7 = (superclass) =>
3454
3462
  class PasswordFieldMixinClass extends superclass {
@@ -3637,11 +3645,11 @@ const PasswordClass = compose(
3637
3645
  }
3638
3646
  `,
3639
3647
  excludeAttrsSync: ['tabindex'],
3640
- componentName: componentName$D,
3648
+ componentName: componentName$E,
3641
3649
  })
3642
3650
  );
3643
3651
 
3644
- customElements.define(componentName$D, PasswordClass);
3652
+ customElements.define(componentName$E, PasswordClass);
3645
3653
 
3646
3654
  const disableRules = [
3647
3655
  'blockquote',
@@ -3666,9 +3674,9 @@ const decodeHTML = (html) => {
3666
3674
 
3667
3675
  /* eslint-disable no-param-reassign */
3668
3676
 
3669
- const componentName$C = getComponentName('enriched-text');
3677
+ const componentName$D = getComponentName('enriched-text');
3670
3678
 
3671
- 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' }) {
3672
3680
  #origLinkRenderer;
3673
3681
 
3674
3682
  #origEmRenderer;
@@ -3857,9 +3865,9 @@ const EnrichedTextClass = compose(
3857
3865
  componentNameValidationMixin
3858
3866
  )(EnrichedText$2);
3859
3867
 
3860
- customElements.define(componentName$C, EnrichedTextClass);
3868
+ customElements.define(componentName$D, EnrichedTextClass);
3861
3869
 
3862
- const componentName$B = getComponentName('text-area');
3870
+ const componentName$C = getComponentName('text-area');
3863
3871
 
3864
3872
  const {
3865
3873
  host: host$e,
@@ -3935,17 +3943,17 @@ const TextAreaClass = compose(
3935
3943
  ${resetInputCursor('vaadin-text-area')}
3936
3944
  `,
3937
3945
  excludeAttrsSync: ['tabindex'],
3938
- componentName: componentName$B,
3946
+ componentName: componentName$C,
3939
3947
  })
3940
3948
  );
3941
3949
 
3942
- customElements.define(componentName$B, TextAreaClass);
3950
+ customElements.define(componentName$C, TextAreaClass);
3943
3951
 
3944
3952
  const observedAttributes$3 = ['src', 'alt'];
3945
3953
 
3946
- const componentName$A = getComponentName('image');
3954
+ const componentName$B = getComponentName('image');
3947
3955
 
3948
- const BaseClass$1 = createBaseClass({ componentName: componentName$A, baseSelector: ':host > img' });
3956
+ const BaseClass$1 = createBaseClass({ componentName: componentName$B, baseSelector: ':host > img' });
3949
3957
  class RawImage extends BaseClass$1 {
3950
3958
  static get observedAttributes() {
3951
3959
  return observedAttributes$3.concat(BaseClass$1.observedAttributes || []);
@@ -3985,9 +3993,9 @@ const ImageClass = compose(
3985
3993
  draggableMixin
3986
3994
  )(RawImage);
3987
3995
 
3988
- customElements.define(componentName$A, ImageClass);
3996
+ customElements.define(componentName$B, ImageClass);
3989
3997
 
3990
- const componentName$z = getComponentName('combo-box');
3998
+ const componentName$A = getComponentName('combo-box');
3991
3999
 
3992
4000
  const ComboBoxMixin = (superclass) =>
3993
4001
  class ComboBoxMixinClass extends superclass {
@@ -4426,12 +4434,12 @@ const ComboBoxClass = compose(
4426
4434
  // and reset items to an empty array, and opening the list box with no items
4427
4435
  // to display.
4428
4436
  excludeAttrsSync: ['tabindex', 'size', 'data'],
4429
- componentName: componentName$z,
4437
+ componentName: componentName$A,
4430
4438
  includeForwardProps: ['items', 'renderer', 'selectedItem'],
4431
4439
  })
4432
4440
  );
4433
4441
 
4434
- customElements.define(componentName$z, ComboBoxClass);
4442
+ customElements.define(componentName$A, ComboBoxClass);
4435
4443
 
4436
4444
  var CountryCodes = [
4437
4445
  // United States should be the first option
@@ -5674,7 +5682,7 @@ const comboBoxItem = ({ code, dialCode, name: country }) => `
5674
5682
  </div>
5675
5683
  `;
5676
5684
 
5677
- const componentName$y = getComponentName('phone-field-internal');
5685
+ const componentName$z = getComponentName('phone-field-internal');
5678
5686
 
5679
5687
  const commonAttrs$1 = ['disabled', 'size', 'bordered', 'invalid', 'readonly'];
5680
5688
  const countryAttrs = ['country-input-placeholder', 'default-code', 'restrict-countries'];
@@ -5688,7 +5696,7 @@ const mapAttrs$1 = {
5688
5696
 
5689
5697
  const inputRelatedAttrs$1 = [].concat(commonAttrs$1, countryAttrs, phoneAttrs, labelTypeAttrs);
5690
5698
 
5691
- const BaseInputClass$6 = createBaseInputClass({ componentName: componentName$y, baseSelector: 'div' });
5699
+ const BaseInputClass$6 = createBaseInputClass({ componentName: componentName$z, baseSelector: 'div' });
5692
5700
 
5693
5701
  let PhoneFieldInternal$1 = class PhoneFieldInternal extends BaseInputClass$6 {
5694
5702
  static get observedAttributes() {
@@ -5905,12 +5913,12 @@ let PhoneFieldInternal$1 = class PhoneFieldInternal extends BaseInputClass$6 {
5905
5913
  }
5906
5914
  };
5907
5915
 
5908
- customElements.define(componentName$y, PhoneFieldInternal$1);
5916
+ customElements.define(componentName$z, PhoneFieldInternal$1);
5909
5917
 
5910
5918
  const textVars$1 = TextFieldClass.cssVarList;
5911
5919
  const comboVars = ComboBoxClass.cssVarList;
5912
5920
 
5913
- const componentName$x = getComponentName('phone-field');
5921
+ const componentName$y = getComponentName('phone-field');
5914
5922
 
5915
5923
  const customMixin$6 = (superclass) =>
5916
5924
  class PhoneFieldMixinClass extends superclass {
@@ -5924,15 +5932,15 @@ const customMixin$6 = (superclass) =>
5924
5932
  const template = document.createElement('template');
5925
5933
 
5926
5934
  template.innerHTML = `
5927
- <${componentName$y}
5935
+ <${componentName$z}
5928
5936
  tabindex="-1"
5929
5937
  slot="input"
5930
- ></${componentName$y}>
5938
+ ></${componentName$z}>
5931
5939
  `;
5932
5940
 
5933
5941
  this.baseElement.appendChild(template.content.cloneNode(true));
5934
5942
 
5935
- this.inputElement = this.shadowRoot.querySelector(componentName$y);
5943
+ this.inputElement = this.shadowRoot.querySelector(componentName$z);
5936
5944
 
5937
5945
  forwardAttrs(this.shadowRoot.host, this.inputElement, {
5938
5946
  includeAttrs: [
@@ -6154,17 +6162,17 @@ const PhoneFieldClass = compose(
6154
6162
  ${resetInputLabelPosition('vaadin-text-field')}
6155
6163
  `,
6156
6164
  excludeAttrsSync: ['tabindex'],
6157
- componentName: componentName$x,
6165
+ componentName: componentName$y,
6158
6166
  })
6159
6167
  );
6160
6168
 
6161
- customElements.define(componentName$x, PhoneFieldClass);
6169
+ customElements.define(componentName$y, PhoneFieldClass);
6162
6170
 
6163
6171
  const getCountryByCodeId = (countryCode) => {
6164
6172
  return CountryCodes.find((c) => c.code === countryCode)?.dialCode;
6165
6173
  };
6166
6174
 
6167
- const componentName$w = getComponentName('phone-field-internal-input-box');
6175
+ const componentName$x = getComponentName('phone-field-internal-input-box');
6168
6176
 
6169
6177
  const observedAttributes$2 = [
6170
6178
  'disabled',
@@ -6181,7 +6189,7 @@ const mapAttrs = {
6181
6189
  'phone-input-placeholder': 'placeholder',
6182
6190
  };
6183
6191
 
6184
- const BaseInputClass$5 = createBaseInputClass({ componentName: componentName$w, baseSelector: 'div' });
6192
+ const BaseInputClass$5 = createBaseInputClass({ componentName: componentName$x, baseSelector: 'div' });
6185
6193
 
6186
6194
  class PhoneFieldInternal extends BaseInputClass$5 {
6187
6195
  static get observedAttributes() {
@@ -6320,11 +6328,11 @@ class PhoneFieldInternal extends BaseInputClass$5 {
6320
6328
  }
6321
6329
  }
6322
6330
 
6323
- customElements.define(componentName$w, PhoneFieldInternal);
6331
+ customElements.define(componentName$x, PhoneFieldInternal);
6324
6332
 
6325
6333
  const textVars = TextFieldClass.cssVarList;
6326
6334
 
6327
- const componentName$v = getComponentName('phone-input-box-field');
6335
+ const componentName$w = getComponentName('phone-input-box-field');
6328
6336
 
6329
6337
  const customMixin$5 = (superclass) =>
6330
6338
  class PhoneInputBoxFieldMixinClass extends superclass {
@@ -6338,15 +6346,15 @@ const customMixin$5 = (superclass) =>
6338
6346
  const template = document.createElement('template');
6339
6347
 
6340
6348
  template.innerHTML = `
6341
- <${componentName$w}
6349
+ <${componentName$x}
6342
6350
  tabindex="-1"
6343
6351
  slot="input"
6344
- ></${componentName$w}>
6352
+ ></${componentName$x}>
6345
6353
  `;
6346
6354
 
6347
6355
  this.baseElement.appendChild(template.content.cloneNode(true));
6348
6356
 
6349
- this.inputElement = this.shadowRoot.querySelector(componentName$w);
6357
+ this.inputElement = this.shadowRoot.querySelector(componentName$x);
6350
6358
 
6351
6359
  forwardAttrs(this.shadowRoot.host, this.inputElement, {
6352
6360
  includeAttrs: [
@@ -6523,26 +6531,26 @@ const PhoneFieldInputBoxClass = compose(
6523
6531
  ${inputFloatingLabelStyle()}
6524
6532
  `,
6525
6533
  excludeAttrsSync: ['tabindex'],
6526
- componentName: componentName$v,
6534
+ componentName: componentName$w,
6527
6535
  })
6528
6536
  );
6529
6537
 
6530
- customElements.define(componentName$v, PhoneFieldInputBoxClass);
6538
+ customElements.define(componentName$w, PhoneFieldInputBoxClass);
6531
6539
 
6532
- const componentName$u = getComponentName('new-password-internal');
6540
+ const componentName$v = getComponentName('new-password-internal');
6533
6541
 
6534
6542
  const interpolateString = (template, values) =>
6535
6543
  template.replace(/{{(\w+)+}}/g, (match, key) => values?.[key] || match);
6536
6544
 
6537
6545
  // eslint-disable-next-line max-classes-per-file
6538
6546
 
6539
- const componentName$t = getComponentName('policy-validation');
6547
+ const componentName$u = getComponentName('policy-validation');
6540
6548
 
6541
6549
  const overrideAttrs = ['data-password-policy-value-minlength'];
6542
6550
  const dataAttrs = ['data', 'active-policies', 'overrides', ...overrideAttrs];
6543
6551
  const policyAttrs = ['label', 'value', ...dataAttrs];
6544
6552
 
6545
- class RawPolicyValidation extends createBaseClass({ componentName: componentName$t, baseSelector: ':host > div' }) {
6553
+ class RawPolicyValidation extends createBaseClass({ componentName: componentName$u, baseSelector: ':host > div' }) {
6546
6554
  #availablePolicies;
6547
6555
 
6548
6556
  #activePolicies = [];
@@ -6750,7 +6758,7 @@ const PolicyValidationClass = compose(
6750
6758
  componentNameValidationMixin
6751
6759
  )(RawPolicyValidation);
6752
6760
 
6753
- const componentName$s = getComponentName('new-password');
6761
+ const componentName$t = getComponentName('new-password');
6754
6762
 
6755
6763
  const policyPreviewVars = PolicyValidationClass.cssVarList;
6756
6764
 
@@ -6762,17 +6770,17 @@ const customMixin$4 = (superclass) =>
6762
6770
  const template = document.createElement('template');
6763
6771
 
6764
6772
  template.innerHTML = `
6765
- <${componentName$u}
6773
+ <${componentName$v}
6766
6774
  name="new-password"
6767
6775
  tabindex="-1"
6768
6776
  slot="input"
6769
6777
  >
6770
- </${componentName$u}>
6778
+ </${componentName$v}>
6771
6779
  `;
6772
6780
 
6773
6781
  this.baseElement.appendChild(template.content.cloneNode(true));
6774
6782
 
6775
- this.inputElement = this.shadowRoot.querySelector(componentName$u);
6783
+ this.inputElement = this.shadowRoot.querySelector(componentName$v);
6776
6784
 
6777
6785
  forwardAttrs(this, this.inputElement, {
6778
6786
  includeAttrs: [
@@ -6915,11 +6923,11 @@ const NewPasswordClass = compose(
6915
6923
  }
6916
6924
  `,
6917
6925
  excludeAttrsSync: ['tabindex'],
6918
- componentName: componentName$s,
6926
+ componentName: componentName$t,
6919
6927
  })
6920
6928
  );
6921
6929
 
6922
- customElements.define(componentName$t, PolicyValidationClass);
6930
+ customElements.define(componentName$u, PolicyValidationClass);
6923
6931
 
6924
6932
  const passwordAttrPrefixRegex = /^password-/;
6925
6933
  const confirmAttrPrefixRegex = /^confirm-/;
@@ -6950,7 +6958,7 @@ const inputRelatedAttrs = [].concat(
6950
6958
  policyPanelAttrs
6951
6959
  );
6952
6960
 
6953
- const BaseInputClass$4 = createBaseInputClass({ componentName: componentName$u, baseSelector: 'div' });
6961
+ const BaseInputClass$4 = createBaseInputClass({ componentName: componentName$v, baseSelector: 'div' });
6954
6962
 
6955
6963
  class NewPasswordInternal extends BaseInputClass$4 {
6956
6964
  static get observedAttributes() {
@@ -7148,16 +7156,16 @@ class NewPasswordInternal extends BaseInputClass$4 {
7148
7156
  }
7149
7157
  }
7150
7158
 
7151
- customElements.define(componentName$u, NewPasswordInternal);
7159
+ customElements.define(componentName$v, NewPasswordInternal);
7152
7160
 
7153
- customElements.define(componentName$s, NewPasswordClass);
7161
+ customElements.define(componentName$t, NewPasswordClass);
7154
7162
 
7155
- const componentName$r = getComponentName('recaptcha');
7163
+ const componentName$s = getComponentName('recaptcha');
7156
7164
 
7157
7165
  const observedAttributes$1 = ['enabled', 'site-key', 'action', 'enterprise'];
7158
7166
 
7159
7167
  const BaseClass = createBaseClass({
7160
- componentName: componentName$r,
7168
+ componentName: componentName$s,
7161
7169
  baseSelector: ':host > div',
7162
7170
  });
7163
7171
  class RawRecaptcha extends BaseClass {
@@ -7344,7 +7352,7 @@ class RawRecaptcha extends BaseClass {
7344
7352
 
7345
7353
  const RecaptchaClass = compose(draggableMixin)(RawRecaptcha);
7346
7354
 
7347
- customElements.define(componentName$r, RecaptchaClass);
7355
+ customElements.define(componentName$s, RecaptchaClass);
7348
7356
 
7349
7357
  const getFileBase64 = (fileObj) => {
7350
7358
  return new Promise((resolve) => {
@@ -7358,7 +7366,7 @@ const getFilename = (fileObj) => {
7358
7366
  return fileObj.name.replace(/^.*\\/, '');
7359
7367
  };
7360
7368
 
7361
- const componentName$q = getComponentName('upload-file');
7369
+ const componentName$r = getComponentName('upload-file');
7362
7370
 
7363
7371
  const observedAttributes = [
7364
7372
  'title',
@@ -7373,7 +7381,7 @@ const observedAttributes = [
7373
7381
  'icon',
7374
7382
  ];
7375
7383
 
7376
- const BaseInputClass$3 = createBaseInputClass({ componentName: componentName$q, baseSelector: ':host > div' });
7384
+ const BaseInputClass$3 = createBaseInputClass({ componentName: componentName$r, baseSelector: ':host > div' });
7377
7385
 
7378
7386
  class RawUploadFile extends BaseInputClass$3 {
7379
7387
  static get observedAttributes() {
@@ -7588,7 +7596,7 @@ const UploadFileClass = compose(
7588
7596
  componentNameValidationMixin
7589
7597
  )(RawUploadFile);
7590
7598
 
7591
- customElements.define(componentName$q, UploadFileClass);
7599
+ customElements.define(componentName$r, UploadFileClass);
7592
7600
 
7593
7601
  const createBaseButtonSelectionGroupInternalClass = (componentName) => {
7594
7602
  class BaseButtonSelectionGroupInternalClass extends createBaseInputClass({
@@ -7686,10 +7694,10 @@ const createBaseButtonSelectionGroupInternalClass = (componentName) => {
7686
7694
  return BaseButtonSelectionGroupInternalClass;
7687
7695
  };
7688
7696
 
7689
- const componentName$p = getComponentName('button-selection-group-internal');
7697
+ const componentName$q = getComponentName('button-selection-group-internal');
7690
7698
 
7691
7699
  class ButtonSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(
7692
- componentName$p
7700
+ componentName$q
7693
7701
  ) {
7694
7702
  getSelectedNode() {
7695
7703
  return this.items.find((item) => item.hasAttribute('selected'));
@@ -7921,7 +7929,7 @@ const buttonSelectionGroupStyles = `
7921
7929
  ${resetInputCursor('vaadin-text-field')}
7922
7930
  `;
7923
7931
 
7924
- const componentName$o = getComponentName('button-selection-group');
7932
+ const componentName$p = getComponentName('button-selection-group');
7925
7933
 
7926
7934
  const buttonSelectionGroupMixin = (superclass) =>
7927
7935
  class ButtonMultiSelectionGroupMixinClass extends superclass {
@@ -7930,19 +7938,19 @@ const buttonSelectionGroupMixin = (superclass) =>
7930
7938
  const template = document.createElement('template');
7931
7939
 
7932
7940
  template.innerHTML = `
7933
- <${componentName$p}
7941
+ <${componentName$q}
7934
7942
  name="button-selection-group"
7935
7943
  slot="input"
7936
7944
  tabindex="-1"
7937
7945
  part="internal-component"
7938
7946
  >
7939
7947
  <slot></slot>
7940
- </${componentName$p}>
7948
+ </${componentName$q}>
7941
7949
  `;
7942
7950
 
7943
7951
  this.baseElement.appendChild(template.content.cloneNode(true));
7944
7952
 
7945
- this.inputElement = this.shadowRoot.querySelector(componentName$p);
7953
+ this.inputElement = this.shadowRoot.querySelector(componentName$q);
7946
7954
 
7947
7955
  forwardAttrs(this, this.inputElement, {
7948
7956
  includeAttrs: ['size', 'default-value', 'allow-deselect'],
@@ -7967,16 +7975,16 @@ const ButtonSelectionGroupClass = compose(
7967
7975
  wrappedEleName: 'vaadin-text-field',
7968
7976
  style: () => buttonSelectionGroupStyles,
7969
7977
  excludeAttrsSync: ['tabindex'],
7970
- componentName: componentName$o,
7978
+ componentName: componentName$p,
7971
7979
  })
7972
7980
  );
7973
7981
 
7974
- customElements.define(componentName$p, ButtonSelectionGroupInternalClass);
7982
+ customElements.define(componentName$q, ButtonSelectionGroupInternalClass);
7975
7983
 
7976
- const componentName$n = getComponentName('button-selection-group-item');
7984
+ const componentName$o = getComponentName('button-selection-group-item');
7977
7985
 
7978
7986
  class RawSelectItem extends createBaseClass({
7979
- componentName: componentName$n,
7987
+ componentName: componentName$o,
7980
7988
  baseSelector: ':host > descope-button',
7981
7989
  }) {
7982
7990
  get size() {
@@ -8083,14 +8091,14 @@ const ButtonSelectionGroupItemClass = compose(
8083
8091
  componentNameValidationMixin
8084
8092
  )(RawSelectItem);
8085
8093
 
8086
- customElements.define(componentName$n, ButtonSelectionGroupItemClass);
8094
+ customElements.define(componentName$o, ButtonSelectionGroupItemClass);
8087
8095
 
8088
- customElements.define(componentName$o, ButtonSelectionGroupClass);
8096
+ customElements.define(componentName$p, ButtonSelectionGroupClass);
8089
8097
 
8090
- const componentName$m = getComponentName('button-multi-selection-group-internal');
8098
+ const componentName$n = getComponentName('button-multi-selection-group-internal');
8091
8099
 
8092
8100
  class ButtonMultiSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(
8093
- componentName$m
8101
+ componentName$n
8094
8102
  ) {
8095
8103
  #getSelectedNodes() {
8096
8104
  return this.items.filter((item) => item.hasAttribute('selected'));
@@ -8193,7 +8201,7 @@ class ButtonMultiSelectionGroupInternalClass extends createBaseButtonSelectionGr
8193
8201
  }
8194
8202
  }
8195
8203
 
8196
- const componentName$l = getComponentName('button-multi-selection-group');
8204
+ const componentName$m = getComponentName('button-multi-selection-group');
8197
8205
 
8198
8206
  const buttonMultiSelectionGroupMixin = (superclass) =>
8199
8207
  class ButtonMultiSelectionGroupMixinClass extends superclass {
@@ -8202,19 +8210,19 @@ const buttonMultiSelectionGroupMixin = (superclass) =>
8202
8210
  const template = document.createElement('template');
8203
8211
 
8204
8212
  template.innerHTML = `
8205
- <${componentName$m}
8213
+ <${componentName$n}
8206
8214
  name="button-selection-group"
8207
8215
  slot="input"
8208
8216
  tabindex="-1"
8209
8217
  part="internal-component"
8210
8218
  >
8211
8219
  <slot></slot>
8212
- </${componentName$m}>
8220
+ </${componentName$n}>
8213
8221
  `;
8214
8222
 
8215
8223
  this.baseElement.appendChild(template.content.cloneNode(true));
8216
8224
 
8217
- this.inputElement = this.shadowRoot.querySelector(componentName$m);
8225
+ this.inputElement = this.shadowRoot.querySelector(componentName$n);
8218
8226
 
8219
8227
  forwardAttrs(this, this.inputElement, {
8220
8228
  includeAttrs: ['size', 'default-values', 'min-items-selection', 'max-items-selection'],
@@ -8239,13 +8247,13 @@ const ButtonMultiSelectionGroupClass = compose(
8239
8247
  wrappedEleName: 'vaadin-text-field',
8240
8248
  style: () => buttonSelectionGroupStyles,
8241
8249
  excludeAttrsSync: ['tabindex'],
8242
- componentName: componentName$l,
8250
+ componentName: componentName$m,
8243
8251
  })
8244
8252
  );
8245
8253
 
8246
- customElements.define(componentName$m, ButtonMultiSelectionGroupInternalClass);
8254
+ customElements.define(componentName$n, ButtonMultiSelectionGroupInternalClass);
8247
8255
 
8248
- customElements.define(componentName$l, ButtonMultiSelectionGroupClass);
8256
+ customElements.define(componentName$m, ButtonMultiSelectionGroupClass);
8249
8257
 
8250
8258
  /* eslint-disable no-param-reassign */
8251
8259
 
@@ -8273,9 +8281,9 @@ class GridTextColumnClass extends GridSortColumn {
8273
8281
  }
8274
8282
  }
8275
8283
 
8276
- const componentName$k = getComponentName('grid-text-column');
8284
+ const componentName$l = getComponentName('grid-text-column');
8277
8285
 
8278
- customElements.define(componentName$k, GridTextColumnClass);
8286
+ customElements.define(componentName$l, GridTextColumnClass);
8279
8287
 
8280
8288
  /* eslint-disable no-param-reassign */
8281
8289
 
@@ -8310,9 +8318,9 @@ class GridCustomColumnClass extends GridTextColumnClass {
8310
8318
 
8311
8319
  /* eslint-disable no-param-reassign */
8312
8320
 
8313
- const componentName$j = getComponentName('grid-custom-column');
8321
+ const componentName$k = getComponentName('grid-custom-column');
8314
8322
 
8315
- customElements.define(componentName$j, GridCustomColumnClass);
8323
+ customElements.define(componentName$k, GridCustomColumnClass);
8316
8324
 
8317
8325
  const createCheckboxEle = () => {
8318
8326
  const checkbox = document.createElement('descope-checkbox');
@@ -8371,9 +8379,50 @@ class GridSelectionColumnClass extends GridSelectionColumn {
8371
8379
  }
8372
8380
  }
8373
8381
 
8374
- const componentName$i = getComponentName('grid-selection-column');
8382
+ const componentName$j = getComponentName('grid-selection-column');
8375
8383
 
8376
- customElements.define(componentName$i, GridSelectionColumnClass);
8384
+ customElements.define(componentName$j, GridSelectionColumnClass);
8385
+
8386
+ /* eslint-disable no-param-reassign */
8387
+
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);
8377
8426
 
8378
8427
  const isValidDataType = (data) => {
8379
8428
  const isValid = Array.isArray(data);
@@ -8385,6 +8434,58 @@ const isValidDataType = (data) => {
8385
8434
  return isValid;
8386
8435
  };
8387
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
+
8388
8489
  const componentName$h = getComponentName('grid');
8389
8490
 
8390
8491
  const GridMixin = (superclass) =>
@@ -8398,6 +8499,41 @@ const GridMixin = (superclass) =>
8398
8499
 
8399
8500
  // disable the grid sort
8400
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
+ }
8401
8537
  }
8402
8538
 
8403
8539
  forwardSelectedItemsChange() {
@@ -8491,9 +8627,20 @@ const GridMixin = (superclass) =>
8491
8627
  );
8492
8628
  }
8493
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
+
8494
8638
  renderColumns() {
8495
8639
  const template = this.getColumnsTemplate();
8496
- if (template) this.innerHTML = template;
8640
+ if (template) {
8641
+ this.reassignRowDetailsRenderer();
8642
+ this.innerHTML = template;
8643
+ }
8497
8644
  }
8498
8645
 
8499
8646
  get grid() {
@@ -8555,17 +8702,35 @@ const {
8555
8702
  selectedRow,
8556
8703
  rowSeparator,
8557
8704
  resizeHandle,
8705
+ toggleDetailsPanelButton,
8706
+ toggleDetailsPanelButtonOpened,
8707
+ toggleDetailsPanelButtonClosed,
8708
+ detailsPanel,
8709
+ detailsPanelLabels,
8710
+ selectedRowCell,
8711
+ detailsPanelContent,
8558
8712
  } = {
8559
8713
  host: { selector: () => 'vaadin-grid' },
8560
8714
  headerRow: { selector: () => '::part(header-cell)' },
8561
8715
  headerRowCell: { selector: () => 'vaadin-grid::part(header-cell)' },
8562
8716
  contentRow: { selector: () => '::part(cell)' },
8563
8717
  firstRow: { selector: () => '::part(first-header-row-cell)' },
8564
- selectedRow: { selector: () => '::part(selected-row-cell)' },
8718
+ selectedRow: { selector: () => '::part(selected-row)' },
8719
+ selectedRowCell: { selector: () => '::part(selected-row-cell)' },
8565
8720
  sortIndicators: { selector: () => 'vaadin-grid-sorter::part(indicators)' },
8566
8721
  activeSortIndicator: { selector: () => 'vaadin-grid-sorter[direction]' },
8567
8722
  rowSeparator: { selector: () => 'vaadin-grid::part(body-cell)' },
8568
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' },
8569
8734
  };
8570
8735
 
8571
8736
  const GridClass = compose(
@@ -8589,7 +8754,10 @@ const GridClass = compose(
8589
8754
  borderWidth: { ...host$6, property: 'border-width' },
8590
8755
  borderStyle: { ...host$6, property: 'border-style' },
8591
8756
  borderRadius: { ...host$6, property: 'border-radius' },
8592
- selectedBackgroundColor: { ...selectedRow, property: 'background-color' },
8757
+ selectedBackgroundColor: [
8758
+ { ...selectedRow, property: 'background-color' },
8759
+ { ...selectedRowCell, property: 'background-color' },
8760
+ ],
8593
8761
  headerRowTextColor: { ...headerRowCell, property: 'color' },
8594
8762
  separatorColor: [
8595
8763
  { ...firstRow, property: 'border-bottom-color' },
@@ -8597,6 +8765,19 @@ const GridClass = compose(
8597
8765
  ],
8598
8766
  resizeHandleColor: { ...resizeHandle, property: 'background-color' },
8599
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' },
8600
8781
  },
8601
8782
  }),
8602
8783
  draggableMixin,
@@ -8608,6 +8789,7 @@ const GridClass = compose(
8608
8789
  slots: [''],
8609
8790
  wrappedEleName: 'vaadin-grid',
8610
8791
  style: () => `
8792
+ /*css*/
8611
8793
  vaadin-grid {
8612
8794
  overflow: hidden;
8613
8795
  height: 100%;
@@ -8619,7 +8801,36 @@ const GridClass = compose(
8619
8801
  vaadin-grid::part(selected-row-cell) {
8620
8802
  background-image: none;
8621
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;
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%;
8622
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*/
8623
8834
  `,
8624
8835
  excludeAttrsSync: ['columns', 'tabindex'],
8625
8836
  componentName: componentName$h,
@@ -9757,7 +9968,7 @@ const AvatarClass = compose(
9757
9968
 
9758
9969
  customElements.define(componentName$b, AvatarClass);
9759
9970
 
9760
- customElements.define(componentName$W, IconClass);
9971
+ customElements.define(componentName$X, IconClass);
9761
9972
 
9762
9973
  const componentName$a = getComponentName('mappings-field-internal');
9763
9974
 
@@ -11235,6 +11446,11 @@ const CodeSnippetClass = compose(
11235
11446
 
11236
11447
  customElements.define(componentName$3, CodeSnippetClass);
11237
11448
 
11449
+ var index = /*#__PURE__*/Object.freeze({
11450
+ __proto__: null,
11451
+ CodeSnippetClass: CodeSnippetClass
11452
+ });
11453
+
11238
11454
  const componentName$2 = getComponentName('radio-button');
11239
11455
 
11240
11456
  const customMixin = (superclass) =>
@@ -11925,7 +12141,7 @@ const mode = {
11925
12141
  surface: globalRefs$s.colors.surface,
11926
12142
  };
11927
12143
 
11928
- const [helperTheme$3, helperRefs$3, helperVars$3] = createHelperVars({ mode }, componentName$V);
12144
+ const [helperTheme$3, helperRefs$3, helperVars$3] = createHelperVars({ mode }, componentName$W);
11929
12145
 
11930
12146
  const button = {
11931
12147
  ...helperTheme$3,
@@ -12527,7 +12743,7 @@ const [helperTheme$2, helperRefs$2, helperVars$2] = createHelperVars(
12527
12743
  horizontalAlignment,
12528
12744
  shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
12529
12745
  },
12530
- componentName$P
12746
+ componentName$Q
12531
12747
  );
12532
12748
 
12533
12749
  const { shadowColor: shadowColor$1 } = helperRefs$2;
@@ -12893,7 +13109,7 @@ const [helperTheme$1, helperRefs$1, helperVars$1] = createHelperVars(
12893
13109
  thickness: '2px',
12894
13110
  spacing: '10px',
12895
13111
  },
12896
- componentName$N
13112
+ componentName$O
12897
13113
  );
12898
13114
 
12899
13115
  const divider = {
@@ -13036,7 +13252,7 @@ const [helperTheme, helperRefs, helperVars] = createHelperVars(
13036
13252
  },
13037
13253
  },
13038
13254
  },
13039
- componentName$Q
13255
+ componentName$R
13040
13256
  );
13041
13257
 
13042
13258
  const loaderRadial = {
@@ -13454,6 +13670,17 @@ const grid = {
13454
13670
  [vars$e.selectedBackgroundColor]: globalRefs$b.colors.surface.highlight,
13455
13671
  [vars$e.hostDirection]: globalRefs$b.direction,
13456
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
+
13457
13684
  _bordered: {
13458
13685
  [vars$e.borderColor]: refs.borderColor,
13459
13686
  },