@ni/nimble-components 20.1.1 → 20.1.3

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 (109) hide show
  1. package/dist/all-components-bundle.js +719 -248
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +1853 -1721
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/all-components.d.ts +2 -0
  6. package/dist/esm/all-components.js +2 -0
  7. package/dist/esm/all-components.js.map +1 -1
  8. package/dist/esm/anchor-tab/index.js +4 -1
  9. package/dist/esm/anchor-tab/index.js.map +1 -1
  10. package/dist/esm/anchor-tab/styles.js +101 -2
  11. package/dist/esm/anchor-tab/styles.js.map +1 -1
  12. package/dist/esm/anchor-tab/template.js +0 -1
  13. package/dist/esm/anchor-tab/template.js.map +1 -1
  14. package/dist/esm/mapping/base/index.d.ts +18 -0
  15. package/dist/esm/mapping/base/index.js +15 -0
  16. package/dist/esm/mapping/base/index.js.map +1 -0
  17. package/dist/esm/mapping/base/template.d.ts +1 -0
  18. package/dist/esm/mapping/base/template.js +3 -0
  19. package/dist/esm/mapping/base/template.js.map +1 -0
  20. package/dist/esm/mapping/base/types.d.ts +1 -0
  21. package/dist/esm/mapping/base/types.js +2 -0
  22. package/dist/esm/mapping/base/types.js.map +1 -0
  23. package/dist/esm/mapping/text/index.d.ts +14 -0
  24. package/dist/esm/mapping/text/index.js +17 -0
  25. package/dist/esm/mapping/text/index.js.map +1 -0
  26. package/dist/esm/src/all-components.d.ts +2 -0
  27. package/dist/esm/src/mapping/base/index.d.ts +18 -0
  28. package/dist/esm/src/mapping/base/template.d.ts +1 -0
  29. package/dist/esm/src/mapping/base/types.d.ts +1 -0
  30. package/dist/esm/src/mapping/text/index.d.ts +14 -0
  31. package/dist/esm/src/table/types.d.ts +8 -0
  32. package/dist/esm/src/table-column/base/index.d.ts +1 -0
  33. package/dist/esm/src/table-column/date-text/group-header-view/index.d.ts +1 -1
  34. package/dist/esm/src/table-column/enum-base/index.d.ts +50 -0
  35. package/dist/esm/src/table-column/enum-base/models/mapping-config.d.ts +7 -0
  36. package/dist/esm/src/table-column/enum-base/models/mapping-key-resolver.d.ts +8 -0
  37. package/dist/esm/src/table-column/enum-base/models/mapping-text-config.d.ts +6 -0
  38. package/dist/esm/src/table-column/enum-base/models/table-column-enum-base-validator.d.ts +18 -0
  39. package/dist/esm/src/table-column/enum-base/template.d.ts +3 -0
  40. package/dist/esm/src/table-column/enum-base/types.d.ts +10 -0
  41. package/dist/esm/src/table-column/enum-text/cell-view/index.d.ts +16 -0
  42. package/dist/esm/src/table-column/enum-text/group-header-view/index.d.ts +17 -0
  43. package/dist/esm/src/table-column/enum-text/index.d.ts +43 -0
  44. package/dist/esm/src/table-column/enum-text/models/table-column-enum-text-validator.d.ts +11 -0
  45. package/dist/esm/src/table-column/text/group-header-view/index.d.ts +1 -1
  46. package/dist/esm/tab/index.js +1 -1
  47. package/dist/esm/tab/index.js.map +1 -1
  48. package/dist/esm/tab/styles.d.ts +1 -0
  49. package/dist/esm/{patterns/tab → tab}/styles.js +4 -8
  50. package/dist/esm/tab/styles.js.map +1 -0
  51. package/dist/esm/table/types.d.ts +8 -0
  52. package/dist/esm/table/types.js.map +1 -1
  53. package/dist/esm/table-column/anchor/index.js +2 -2
  54. package/dist/esm/table-column/anchor/index.js.map +1 -1
  55. package/dist/esm/table-column/base/index.d.ts +1 -0
  56. package/dist/esm/table-column/base/index.js +5 -0
  57. package/dist/esm/table-column/base/index.js.map +1 -1
  58. package/dist/esm/table-column/base/template.js +9 -11
  59. package/dist/esm/table-column/base/template.js.map +1 -1
  60. package/dist/esm/table-column/date-text/group-header-view/index.d.ts +1 -1
  61. package/dist/esm/table-column/date-text/group-header-view/index.js +2 -2
  62. package/dist/esm/table-column/date-text/group-header-view/index.js.map +1 -1
  63. package/dist/esm/table-column/date-text/index.js +2 -2
  64. package/dist/esm/table-column/date-text/index.js.map +1 -1
  65. package/dist/esm/table-column/enum-base/index.d.ts +50 -0
  66. package/dist/esm/table-column/enum-base/index.js +90 -0
  67. package/dist/esm/table-column/enum-base/index.js.map +1 -0
  68. package/dist/esm/table-column/enum-base/models/mapping-config.d.ts +7 -0
  69. package/dist/esm/table-column/enum-base/models/mapping-config.js +9 -0
  70. package/dist/esm/table-column/enum-base/models/mapping-config.js.map +1 -0
  71. package/dist/esm/table-column/enum-base/models/mapping-key-resolver.d.ts +8 -0
  72. package/dist/esm/table-column/enum-base/models/mapping-key-resolver.js +23 -0
  73. package/dist/esm/table-column/enum-base/models/mapping-key-resolver.js.map +1 -0
  74. package/dist/esm/table-column/enum-base/models/mapping-text-config.d.ts +6 -0
  75. package/dist/esm/table-column/enum-base/models/mapping-text-config.js +7 -0
  76. package/dist/esm/table-column/enum-base/models/mapping-text-config.js.map +1 -0
  77. package/dist/esm/table-column/enum-base/models/table-column-enum-base-validator.d.ts +18 -0
  78. package/dist/esm/table-column/enum-base/models/table-column-enum-base-validator.js +53 -0
  79. package/dist/esm/table-column/enum-base/models/table-column-enum-base-validator.js.map +1 -0
  80. package/dist/esm/table-column/enum-base/styles.d.ts +1 -0
  81. package/dist/esm/table-column/enum-base/styles.js +10 -0
  82. package/dist/esm/table-column/enum-base/styles.js.map +1 -0
  83. package/dist/esm/table-column/enum-base/template.d.ts +3 -0
  84. package/dist/esm/table-column/enum-base/template.js +4 -0
  85. package/dist/esm/table-column/enum-base/template.js.map +1 -0
  86. package/dist/esm/table-column/enum-base/types.d.ts +10 -0
  87. package/dist/esm/table-column/enum-base/types.js +10 -0
  88. package/dist/esm/table-column/enum-base/types.js.map +1 -0
  89. package/dist/esm/table-column/enum-text/cell-view/index.d.ts +16 -0
  90. package/dist/esm/table-column/enum-text/cell-view/index.js +33 -0
  91. package/dist/esm/table-column/enum-text/cell-view/index.js.map +1 -0
  92. package/dist/esm/table-column/enum-text/group-header-view/index.d.ts +17 -0
  93. package/dist/esm/table-column/enum-text/group-header-view/index.js +35 -0
  94. package/dist/esm/table-column/enum-text/group-header-view/index.js.map +1 -0
  95. package/dist/esm/table-column/enum-text/index.d.ts +43 -0
  96. package/dist/esm/table-column/enum-text/index.js +57 -0
  97. package/dist/esm/table-column/enum-text/index.js.map +1 -0
  98. package/dist/esm/table-column/enum-text/models/table-column-enum-text-validator.d.ts +11 -0
  99. package/dist/esm/table-column/enum-text/models/table-column-enum-text-validator.js +11 -0
  100. package/dist/esm/table-column/enum-text/models/table-column-enum-text-validator.js.map +1 -0
  101. package/dist/esm/table-column/text/group-header-view/index.d.ts +1 -1
  102. package/dist/esm/table-column/text/group-header-view/index.js +2 -2
  103. package/dist/esm/table-column/text/group-header-view/index.js.map +1 -1
  104. package/dist/esm/table-column/text/index.js +2 -2
  105. package/dist/esm/table-column/text/index.js.map +1 -1
  106. package/package.json +1 -1
  107. package/dist/esm/patterns/tab/styles.js.map +0 -1
  108. /package/dist/esm/{patterns → src}/tab/styles.d.ts +0 -0
  109. /package/dist/esm/src/{patterns/tab → table-column/enum-base}/styles.d.ts +0 -0
@@ -16288,7 +16288,7 @@
16288
16288
 
16289
16289
  /**
16290
16290
  * Do not edit directly
16291
- * Generated on Thu, 03 Aug 2023 16:33:03 GMT
16291
+ * Generated on Mon, 07 Aug 2023 22:37:07 GMT
16292
16292
  */
16293
16293
 
16294
16294
  const Information100DarkUi = "#a46eff";
@@ -16671,9 +16671,9 @@
16671
16671
  return `${prefix}${uniqueIdCounter++}`;
16672
16672
  }
16673
16673
 
16674
- const template$w = html `<slot></slot>`;
16674
+ const template$y = html `<slot></slot>`;
16675
16675
 
16676
- const styles$R = css `
16676
+ const styles$S = css `
16677
16677
  :host {
16678
16678
  display: contents;
16679
16679
  }
@@ -16729,8 +16729,8 @@
16729
16729
  ], ThemeProvider.prototype, "theme", void 0);
16730
16730
  const nimbleDesignSystemProvider = ThemeProvider.compose({
16731
16731
  baseName: 'theme-provider',
16732
- styles: styles$R,
16733
- template: template$w
16732
+ styles: styles$S,
16733
+ template: template$y
16734
16734
  });
16735
16735
  DesignSystem.getOrCreate()
16736
16736
  .withPrefix('nimble')
@@ -16923,7 +16923,7 @@
16923
16923
  }
16924
16924
  }
16925
16925
 
16926
- const styles$Q = css `
16926
+ const styles$R = css `
16927
16927
  ${display('inline')}
16928
16928
 
16929
16929
  :host {
@@ -17006,7 +17006,7 @@
17006
17006
  `;
17007
17007
 
17008
17008
  // prettier-ignore
17009
- const template$v = (context, definition) => html `
17009
+ const template$x = (context, definition) => html `
17010
17010
  <a
17011
17011
  class="control"
17012
17012
  part="control"
@@ -17080,8 +17080,8 @@
17080
17080
  const nimbleAnchor = Anchor.compose({
17081
17081
  baseName: 'anchor',
17082
17082
  baseClass: Anchor$1,
17083
- template: template$v,
17084
- styles: styles$Q,
17083
+ template: template$x,
17084
+ styles: styles$R,
17085
17085
  shadowOptions: {
17086
17086
  delegatesFocus: true
17087
17087
  }
@@ -17167,7 +17167,7 @@
17167
17167
  return new MultivaluePropertyStyleSheetBehavior('appearance', value, styles);
17168
17168
  }
17169
17169
 
17170
- const styles$P = css `
17170
+ const styles$Q = css `
17171
17171
  @layer base, hover, focusVisible, active, disabled, top;
17172
17172
 
17173
17173
  @layer base {
@@ -17459,8 +17459,8 @@
17459
17459
  }
17460
17460
  `));
17461
17461
 
17462
- const styles$O = css `
17463
- ${styles$P}
17462
+ const styles$P = css `
17463
+ ${styles$Q}
17464
17464
  ${buttonAppearanceVariantStyles}
17465
17465
 
17466
17466
  .control {
@@ -17468,7 +17468,7 @@
17468
17468
  }
17469
17469
  `;
17470
17470
 
17471
- const template$u = (context, definition) => html `
17471
+ const template$w = (context, definition) => html `
17472
17472
  <a
17473
17473
  class="control"
17474
17474
  part="control"
@@ -17550,8 +17550,8 @@
17550
17550
  ], AnchorButton.prototype, "disabled", void 0);
17551
17551
  const nimbleAnchorButton = AnchorButton.compose({
17552
17552
  baseName: 'anchor-button',
17553
- template: template$u,
17554
- styles: styles$O,
17553
+ template: template$w,
17554
+ styles: styles$P,
17555
17555
  shadowOptions: {
17556
17556
  delegatesFocus: true
17557
17557
  }
@@ -17559,7 +17559,7 @@
17559
17559
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleAnchorButton());
17560
17560
  DesignSystem.tagFor(AnchorButton);
17561
17561
 
17562
- const styles$N = css `
17562
+ const styles$O = css `
17563
17563
  ${display('grid')}
17564
17564
 
17565
17565
  :host {
@@ -17636,7 +17636,7 @@
17636
17636
  }
17637
17637
  `;
17638
17638
 
17639
- const template$t = (context, definition) => html `
17639
+ const template$v = (context, definition) => html `
17640
17640
  <template
17641
17641
  role="menuitem"
17642
17642
  class="${x => (typeof x.startColumnCount === 'number'
@@ -17742,8 +17742,8 @@
17742
17742
  // FoundationAnchor already applies the StartEnd mixin, so we don't need to do it here.
17743
17743
  const nimbleAnchorMenuItem = AnchorMenuItem.compose({
17744
17744
  baseName: 'anchor-menu-item',
17745
- template: template$t,
17746
- styles: styles$N,
17745
+ template: template$v,
17746
+ styles: styles$O,
17747
17747
  shadowOptions: {
17748
17748
  delegatesFocus: true
17749
17749
  }
@@ -17767,7 +17767,7 @@
17767
17767
  }
17768
17768
  });
17769
17769
 
17770
- const styles$M = css `
17770
+ const styles$N = css `
17771
17771
  ${display('inline-flex')}
17772
17772
 
17773
17773
  :host {
@@ -17793,14 +17793,6 @@
17793
17793
  background-color: ${fillHoverSelectedColor};
17794
17794
  }
17795
17795
 
17796
- :host(:focus) {
17797
- outline: none;
17798
- }
17799
-
17800
- :host(${focusVisible}) {
17801
- outline: none;
17802
- }
17803
-
17804
17796
  :host(:active) {
17805
17797
  background: none;
17806
17798
  }
@@ -17817,7 +17809,7 @@
17817
17809
  calc(${standardPadding} / 2 - ${borderWidth});
17818
17810
  }
17819
17811
 
17820
- :host::before {
17812
+ a::before {
17821
17813
  content: '';
17822
17814
  position: absolute;
17823
17815
  bottom: calc(
@@ -17832,16 +17824,26 @@
17832
17824
  }
17833
17825
 
17834
17826
  @media (prefers-reduced-motion) {
17835
- :host::before {
17836
- transition-duration: 0.01s;
17827
+ a::before {
17828
+ transition-duration: 0s;
17837
17829
  }
17838
17830
  }
17839
17831
 
17840
- :host(${focusVisible})::before {
17832
+ a${focusVisible}::before {
17841
17833
  width: calc(100% - 2 * var(--ni-private-focus-indicator-inset-width));
17842
17834
  }
17843
17835
 
17844
- :host::after {
17836
+ a {
17837
+ display: inline-flex;
17838
+ text-decoration: none;
17839
+ color: inherit;
17840
+ cursor: inherit;
17841
+ outline: none;
17842
+ align-items: center;
17843
+ justify-content: center;
17844
+ }
17845
+
17846
+ a::after {
17845
17847
  content: '';
17846
17848
  position: absolute;
17847
17849
  bottom: 0px;
@@ -17853,35 +17855,24 @@
17853
17855
  }
17854
17856
 
17855
17857
  @media (prefers-reduced-motion) {
17856
- :host::after {
17857
- transition-duration: 0.01s;
17858
+ a::after {
17859
+ transition-duration: 0s;
17858
17860
  }
17859
17861
  }
17860
17862
 
17861
- :host(${focusVisible})::after {
17863
+ a${focusVisible}::after {
17862
17864
  width: 100%;
17863
17865
  border-bottom-width: var(--ni-private-focus-indicator-width);
17864
17866
  }
17865
17867
 
17866
- :host([aria-selected='true'])::after {
17868
+ :host([aria-selected='true']) a::after {
17867
17869
  width: 100%;
17868
17870
  border-bottom-width: var(--ni-private-active-indicator-width);
17869
17871
  }
17870
17872
 
17871
- :host([aria-selected='true'][disabled])::after {
17873
+ :host([disabled][aria-selected='true']) a::after {
17872
17874
  border-bottom-color: rgba(${borderHoverColor}, 0.3);
17873
17875
  }
17874
- `;
17875
-
17876
- const styles$L = css `
17877
- ${styles$M}
17878
-
17879
- a {
17880
- text-decoration: none;
17881
- color: inherit;
17882
- cursor: inherit;
17883
- outline: none;
17884
- }
17885
17876
 
17886
17877
  [part='start'] {
17887
17878
  display: none;
@@ -17892,7 +17883,7 @@
17892
17883
  }
17893
17884
  `;
17894
17885
 
17895
- const template$s = (context, definition) => html `
17886
+ const template$u = (context, definition) => html `
17896
17887
  <template slot="anchortab" role="tab" aria-disabled="${x => x.disabled}">
17897
17888
  <a
17898
17889
  download="${x => x.download}"
@@ -17903,7 +17894,6 @@
17903
17894
  rel="${x => x.rel}"
17904
17895
  target="${x => x.target}"
17905
17896
  type="${x => x.type}"
17906
- tabindex="-1"
17907
17897
  >
17908
17898
  ${startSlotTemplate(context, definition)}
17909
17899
  <slot></slot>
@@ -17945,13 +17935,16 @@
17945
17935
  // FoundationAnchor already applies the StartEnd mixin, so we don't need to do it here.
17946
17936
  const nimbleAnchorTab = AnchorTab.compose({
17947
17937
  baseName: 'anchor-tab',
17948
- template: template$s,
17949
- styles: styles$L
17938
+ template: template$u,
17939
+ styles: styles$N,
17940
+ shadowOptions: {
17941
+ delegatesFocus: true
17942
+ }
17950
17943
  });
17951
17944
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleAnchorTab());
17952
17945
  DesignSystem.tagFor(AnchorTab);
17953
17946
 
17954
- const styles$K = css `
17947
+ const styles$M = css `
17955
17948
  ${display('grid')}
17956
17949
 
17957
17950
  :host {
@@ -17973,7 +17966,7 @@
17973
17966
  }
17974
17967
  `;
17975
17968
 
17976
- const template$r = (context, definition) => html `
17969
+ const template$t = (context, definition) => html `
17977
17970
  ${startSlotTemplate(context, definition)}
17978
17971
  <div ${ref('tablist')} class="tablist" part="tablist" role="tablist">
17979
17972
  <slot name="anchortab" ${slotted('tabs')}></slot>
@@ -18173,8 +18166,8 @@
18173
18166
  applyMixins(AnchorTabs, StartEnd);
18174
18167
  const nimbleAnchorTabs = AnchorTabs.compose({
18175
18168
  baseName: 'anchor-tabs',
18176
- template: template$r,
18177
- styles: styles$K,
18169
+ template: template$t,
18170
+ styles: styles$M,
18178
18171
  shadowOptions: {
18179
18172
  delegatesFocus: false
18180
18173
  }
@@ -18191,7 +18184,7 @@
18191
18184
  -webkit-user-select: none;
18192
18185
  `;
18193
18186
 
18194
- const styles$J = css `
18187
+ const styles$L = css `
18195
18188
  ${display('block')}
18196
18189
 
18197
18190
  :host {
@@ -18292,7 +18285,7 @@
18292
18285
  }
18293
18286
  `;
18294
18287
 
18295
- const template$q = (context, definition) => html `
18288
+ const template$s = (context, definition) => html `
18296
18289
  <template
18297
18290
  role="treeitem"
18298
18291
  slot="${x => (x.isNestedItem() ? 'item' : null)}"
@@ -18429,8 +18422,8 @@
18429
18422
  // FoundationAnchor already applies the StartEnd mixin, so we don't need to do it here.
18430
18423
  const nimbleAnchorTreeItem = AnchorTreeItem.compose({
18431
18424
  baseName: 'anchor-tree-item',
18432
- template: template$q,
18433
- styles: styles$J,
18425
+ template: template$s,
18426
+ styles: styles$L,
18434
18427
  shadowOptions: {
18435
18428
  delegatesFocus: true
18436
18429
  }
@@ -18440,7 +18433,7 @@
18440
18433
  .register(nimbleAnchorTreeItem());
18441
18434
  DesignSystem.tagFor(AnchorTreeItem);
18442
18435
 
18443
- const styles$I = css `
18436
+ const styles$K = css `
18444
18437
  :host {
18445
18438
  contain: layout;
18446
18439
  display: block;
@@ -18464,7 +18457,7 @@
18464
18457
  baseName: 'anchored-region',
18465
18458
  baseClass: AnchoredRegion$1,
18466
18459
  template: anchoredRegionTemplate,
18467
- styles: styles$I
18460
+ styles: styles$K
18468
18461
  });
18469
18462
  DesignSystem.getOrCreate()
18470
18463
  .withPrefix('nimble')
@@ -18544,7 +18537,7 @@
18544
18537
  */
18545
18538
  const themeBehavior = (theme, styles) => new ThemeStyleSheetBehavior(theme, styles);
18546
18539
 
18547
- const styles$H = css `
18540
+ const styles$J = css `
18548
18541
  ${display('flex')}
18549
18542
 
18550
18543
  :host {
@@ -18702,8 +18695,8 @@
18702
18695
  }
18703
18696
  `));
18704
18697
 
18705
- const styles$G = css `
18706
- ${styles$P}
18698
+ const styles$I = css `
18699
+ ${styles$Q}
18707
18700
  ${buttonAppearanceVariantStyles}
18708
18701
  `;
18709
18702
 
@@ -18749,7 +18742,7 @@
18749
18742
  baseName: 'button',
18750
18743
  baseClass: Button$1,
18751
18744
  template: buttonTemplate,
18752
- styles: styles$G,
18745
+ styles: styles$I,
18753
18746
  shadowOptions: {
18754
18747
  delegatesFocus: true
18755
18748
  }
@@ -19407,13 +19400,13 @@
19407
19400
  data: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path class="cls-1" d="M8.033 14.026 4.9 10.866 6.277 9.53l1.744 1.81 4.562-4.507 1.307 1.363Zm1.155-10.68-1.321-1.32-2.312 2.311-2.311-2.311-1.321 1.32 2.311 2.312L1.923 7.97l1.32 1.32 2.312-2.31 2.312 2.31 1.32-1.32-2.31-2.312Z"/></svg>`
19408
19401
  };
19409
19402
 
19410
- const template$p = html `
19403
+ const template$r = html `
19411
19404
  <template>
19412
19405
  <div class="icon" :innerHTML=${x => x.icon.data}></div>
19413
19406
  </template
19414
19407
  `;
19415
19408
 
19416
- const styles$F = css `
19409
+ const styles$H = css `
19417
19410
  ${display('inline-flex')}
19418
19411
 
19419
19412
  :host {
@@ -19486,8 +19479,8 @@
19486
19479
  const registerIcon = (baseName, iconClass) => {
19487
19480
  const composedIcon = iconClass.compose({
19488
19481
  baseName,
19489
- template: template$p,
19490
- styles: styles$F,
19482
+ template: template$r,
19483
+ styles: styles$H,
19491
19484
  baseClass: iconClass
19492
19485
  });
19493
19486
  DesignSystem.getOrCreate().withPrefix('nimble').register(composedIcon());
@@ -19576,7 +19569,7 @@
19576
19569
  }).withDefault(coreLabelDefaults.numericIncrementLabel);
19577
19570
 
19578
19571
  // prettier-ignore
19579
- const template$o = html `
19572
+ const template$q = html `
19580
19573
  <div class="container"
19581
19574
  role="status"
19582
19575
  aria-atomic="${x => x.ariaAtomic}"
@@ -19692,13 +19685,13 @@
19692
19685
  applyMixins(Banner, ARIAGlobalStatesAndProperties);
19693
19686
  const nimbleBanner = Banner.compose({
19694
19687
  baseName: 'banner',
19695
- template: template$o,
19696
- styles: styles$H
19688
+ template: template$q,
19689
+ styles: styles$J
19697
19690
  });
19698
19691
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleBanner());
19699
19692
  DesignSystem.tagFor(Banner);
19700
19693
 
19701
- const styles$E = css `
19694
+ const styles$G = css `
19702
19695
  ${display('inline-block')}
19703
19696
 
19704
19697
  :host {
@@ -19739,12 +19732,12 @@
19739
19732
  baseName: 'breadcrumb',
19740
19733
  baseClass: Breadcrumb$1,
19741
19734
  template: breadcrumbTemplate,
19742
- styles: styles$E
19735
+ styles: styles$G
19743
19736
  });
19744
19737
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleBreadcrumb());
19745
19738
  DesignSystem.tagFor(Breadcrumb);
19746
19739
 
19747
- const styles$D = css `
19740
+ const styles$F = css `
19748
19741
  ${display('inline-flex')}
19749
19742
 
19750
19743
  :host {
@@ -19818,7 +19811,7 @@
19818
19811
  baseName: 'breadcrumb-item',
19819
19812
  baseClass: BreadcrumbItem$1,
19820
19813
  template: breadcrumbItemTemplate,
19821
- styles: styles$D,
19814
+ styles: styles$F,
19822
19815
  separator: forwardSlash16X16.data
19823
19816
  });
19824
19817
  DesignSystem.getOrCreate()
@@ -19826,7 +19819,7 @@
19826
19819
  .register(nimbleBreadcrumbItem());
19827
19820
  DesignSystem.tagFor(BreadcrumbItem);
19828
19821
 
19829
- const styles$C = css `
19822
+ const styles$E = css `
19830
19823
  ${display('inline-flex')}
19831
19824
 
19832
19825
  :host {
@@ -19985,7 +19978,7 @@
19985
19978
  const nimbleCardButton = CardButton.compose({
19986
19979
  baseName: 'card-button',
19987
19980
  template: buttonTemplate,
19988
- styles: styles$C,
19981
+ styles: styles$E,
19989
19982
  shadowOptions: {
19990
19983
  delegatesFocus: true
19991
19984
  }
@@ -19993,7 +19986,7 @@
19993
19986
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleCardButton());
19994
19987
  DesignSystem.tagFor(CardButton);
19995
19988
 
19996
- const styles$B = css `
19989
+ const styles$D = css `
19997
19990
  ${display('inline-flex')}
19998
19991
 
19999
19992
  :host {
@@ -20111,15 +20104,15 @@
20111
20104
  baseName: 'checkbox',
20112
20105
  baseClass: Checkbox$1,
20113
20106
  template: checkboxTemplate,
20114
- styles: styles$B,
20107
+ styles: styles$D,
20115
20108
  checkedIndicator: check16X16.data,
20116
20109
  indeterminateIndicator: minus16X16.data
20117
20110
  });
20118
20111
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleCheckbox());
20119
20112
  const checkboxTag = DesignSystem.tagFor(Checkbox);
20120
20113
 
20121
- const styles$A = css `
20122
- ${styles$P}
20114
+ const styles$C = css `
20115
+ ${styles$Q}
20123
20116
 
20124
20117
  @layer base {
20125
20118
  .control[aria-pressed='true'] {
@@ -20198,7 +20191,7 @@
20198
20191
  }
20199
20192
  `;
20200
20193
 
20201
- const template$n = (context, definition) => html `
20194
+ const template$p = (context, definition) => html `
20202
20195
  <div
20203
20196
  role="button"
20204
20197
  part="control"
@@ -20273,8 +20266,8 @@
20273
20266
  applyMixins(ToggleButton, StartEnd, DelegatesARIAButton);
20274
20267
  const nimbleToggleButton = ToggleButton.compose({
20275
20268
  baseName: 'toggle-button',
20276
- template: template$n,
20277
- styles: styles$A,
20269
+ template: template$p,
20270
+ styles: styles$C,
20278
20271
  shadowOptions: {
20279
20272
  delegatesFocus: true
20280
20273
  }
@@ -20311,7 +20304,7 @@
20311
20304
  block: 'block'
20312
20305
  };
20313
20306
 
20314
- const styles$z = css `
20307
+ const styles$B = css `
20315
20308
  ${display('inline-flex')}
20316
20309
 
20317
20310
  :host {
@@ -20537,7 +20530,7 @@
20537
20530
  }
20538
20531
  `));
20539
20532
 
20540
- const styles$y = css `
20533
+ const styles$A = css `
20541
20534
  .error-icon {
20542
20535
  display: none;
20543
20536
  }
@@ -20571,9 +20564,9 @@
20571
20564
  }
20572
20565
  `;
20573
20566
 
20574
- const styles$x = css `
20575
- ${styles$z}
20576
- ${styles$y}
20567
+ const styles$z = css `
20568
+ ${styles$B}
20569
+ ${styles$A}
20577
20570
 
20578
20571
  :host {
20579
20572
  --ni-private-hover-bottom-border-width: 2px;
@@ -20654,7 +20647,7 @@
20654
20647
  `));
20655
20648
 
20656
20649
  // prettier-ignore
20657
- const template$m = (context, definition) => html `
20650
+ const template$o = (context, definition) => html `
20658
20651
  <template
20659
20652
  aria-disabled="${x => x.ariaDisabled}"
20660
20653
  autocomplete="${x => x.autocomplete}"
@@ -20925,8 +20918,8 @@
20925
20918
  const nimbleCombobox = Combobox.compose({
20926
20919
  baseName: 'combobox',
20927
20920
  baseClass: Combobox$1,
20928
- template: template$m,
20929
- styles: styles$x,
20921
+ template: template$o,
20922
+ styles: styles$z,
20930
20923
  shadowOptions: {
20931
20924
  delegatesFocus: true
20932
20925
  },
@@ -20971,7 +20964,7 @@
20971
20964
  */
20972
20965
  const UserDismissed = Symbol('user dismissed');
20973
20966
 
20974
- const styles$w = css `
20967
+ const styles$y = css `
20975
20968
  ${display('grid')}
20976
20969
 
20977
20970
  dialog {
@@ -21087,7 +21080,7 @@
21087
21080
  }
21088
21081
  `));
21089
21082
 
21090
- const template$l = html `
21083
+ const template$n = html `
21091
21084
  <template>
21092
21085
  <dialog
21093
21086
  ${ref('dialogElement')}
@@ -21213,14 +21206,14 @@
21213
21206
  applyMixins(Dialog, ARIAGlobalStatesAndProperties);
21214
21207
  const nimbleDialog = Dialog.compose({
21215
21208
  baseName: 'dialog',
21216
- template: template$l,
21217
- styles: styles$w,
21209
+ template: template$n,
21210
+ styles: styles$y,
21218
21211
  baseClass: Dialog
21219
21212
  });
21220
21213
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleDialog());
21221
21214
  DesignSystem.tagFor(Dialog);
21222
21215
 
21223
- const styles$v = css `
21216
+ const styles$x = css `
21224
21217
  ${display('block')}
21225
21218
 
21226
21219
  :host {
@@ -21373,7 +21366,7 @@
21373
21366
  }
21374
21367
  `));
21375
21368
 
21376
- const template$k = html `
21369
+ const template$m = html `
21377
21370
  <dialog
21378
21371
  ${ref('dialog')}
21379
21372
  aria-label="${x => x.ariaLabel}"
@@ -21487,8 +21480,8 @@
21487
21480
  applyMixins(Drawer, ARIAGlobalStatesAndProperties);
21488
21481
  const nimbleDrawer = Drawer.compose({
21489
21482
  baseName: 'drawer',
21490
- template: template$k,
21491
- styles: styles$v
21483
+ template: template$m,
21484
+ styles: styles$x
21492
21485
  });
21493
21486
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleDrawer());
21494
21487
  DesignSystem.tagFor(Drawer);
@@ -23685,7 +23678,7 @@
23685
23678
  .register(nimbleLabelProviderTable());
23686
23679
  DesignSystem.tagFor(LabelProviderTable);
23687
23680
 
23688
- const styles$u = css `
23681
+ const styles$w = css `
23689
23682
  ${display('flex')}
23690
23683
 
23691
23684
  :host {
@@ -23773,12 +23766,40 @@
23773
23766
  baseName: 'list-option',
23774
23767
  baseClass: ListboxOption,
23775
23768
  template: listboxOptionTemplate,
23776
- styles: styles$u
23769
+ styles: styles$w
23777
23770
  });
23778
23771
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleListOption());
23779
23772
  DesignSystem.tagFor(ListOption);
23780
23773
 
23781
- const styles$t = css `
23774
+ /**
23775
+ * Base class for mapping configuration elements
23776
+ */
23777
+ class Mapping extends FoundationElement {
23778
+ }
23779
+ __decorate$1([
23780
+ attr()
23781
+ ], Mapping.prototype, "key", void 0);
23782
+ __decorate$1([
23783
+ attr()
23784
+ ], Mapping.prototype, "text", void 0);
23785
+
23786
+ const template$l = html `<template slot="mapping"></template>`;
23787
+
23788
+ /**
23789
+ * Defines a mapping from one data value ('key' property) to display text ('text' property).
23790
+ * One or more may be added as children of a nimble-table-column-enum-text element to define
23791
+ * how a specific data value should be displayed as text in that column's cells.
23792
+ */
23793
+ class MappingText extends Mapping {
23794
+ }
23795
+ const textMapping = MappingText.compose({
23796
+ baseName: 'mapping-text',
23797
+ template: template$l
23798
+ });
23799
+ DesignSystem.getOrCreate().withPrefix('nimble').register(textMapping());
23800
+ DesignSystem.tagFor(MappingText);
23801
+
23802
+ const styles$v = css `
23782
23803
  ${display('grid')}
23783
23804
 
23784
23805
  :host {
@@ -23845,12 +23866,12 @@
23845
23866
  baseName: 'menu',
23846
23867
  baseClass: Menu$1,
23847
23868
  template: menuTemplate,
23848
- styles: styles$t
23869
+ styles: styles$v
23849
23870
  });
23850
23871
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleMenu());
23851
23872
  DesignSystem.tagFor(Menu);
23852
23873
 
23853
- const styles$s = css `
23874
+ const styles$u = css `
23854
23875
  ${display('inline-block')}
23855
23876
 
23856
23877
  :host {
@@ -23869,7 +23890,7 @@
23869
23890
  `;
23870
23891
 
23871
23892
  // prettier-ignore
23872
- const template$j = html `
23893
+ const template$k = html `
23873
23894
  <template
23874
23895
  ?open="${x => x.open}"
23875
23896
  @focusout="${(x, c) => x.focusoutHandler(c.event)}"
@@ -24124,8 +24145,8 @@
24124
24145
  ], MenuButton.prototype, "slottedMenus", void 0);
24125
24146
  const nimbleMenuButton = MenuButton.compose({
24126
24147
  baseName: 'menu-button',
24127
- template: template$j,
24128
- styles: styles$s,
24148
+ template: template$k,
24149
+ styles: styles$u,
24129
24150
  shadowOptions: {
24130
24151
  delegatesFocus: true
24131
24152
  }
@@ -24133,7 +24154,7 @@
24133
24154
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleMenuButton());
24134
24155
  const menuButtonTag = DesignSystem.tagFor(MenuButton);
24135
24156
 
24136
- const styles$r = css `
24157
+ const styles$t = css `
24137
24158
  ${display('grid')}
24138
24159
 
24139
24160
  :host {
@@ -24231,7 +24252,7 @@
24231
24252
  baseName: 'menu-item',
24232
24253
  baseClass: MenuItem$1,
24233
24254
  template: menuItemTemplate,
24234
- styles: styles$r,
24255
+ styles: styles$t,
24235
24256
  expandCollapseGlyph: arrowExpanderRight16X16.data
24236
24257
  });
24237
24258
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleMenuItem());
@@ -24246,9 +24267,9 @@
24246
24267
  block: 'block'
24247
24268
  };
24248
24269
 
24249
- const styles$q = css `
24270
+ const styles$s = css `
24250
24271
  ${display('inline-block')}
24251
- ${styles$y}
24272
+ ${styles$A}
24252
24273
 
24253
24274
  :host {
24254
24275
  font: ${bodyFont};
@@ -24462,7 +24483,7 @@
24462
24483
  baseName: 'number-field',
24463
24484
  baseClass: NumberField$1,
24464
24485
  template: numberFieldTemplate,
24465
- styles: styles$q,
24486
+ styles: styles$s,
24466
24487
  shadowOptions: {
24467
24488
  delegatesFocus: true
24468
24489
  },
@@ -24504,7 +24525,7 @@
24504
24525
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleNumberField());
24505
24526
  DesignSystem.tagFor(NumberField);
24506
24527
 
24507
- const styles$p = css `
24528
+ const styles$r = css `
24508
24529
  ${display('inline-flex')}
24509
24530
 
24510
24531
  :host {
@@ -24605,13 +24626,13 @@
24605
24626
  baseName: 'radio',
24606
24627
  baseClass: Radio$1,
24607
24628
  template: radioTemplate,
24608
- styles: styles$p,
24629
+ styles: styles$r,
24609
24630
  checkedIndicator: circleFilled16X16.data
24610
24631
  });
24611
24632
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleRadio());
24612
24633
  DesignSystem.tagFor(Radio);
24613
24634
 
24614
- const styles$o = css `
24635
+ const styles$q = css `
24615
24636
  ${display('inline-block')}
24616
24637
 
24617
24638
  .positioning-region {
@@ -24646,7 +24667,7 @@
24646
24667
  baseName: 'radio-group',
24647
24668
  baseClass: RadioGroup$1,
24648
24669
  template: radioGroupTemplate,
24649
- styles: styles$o,
24670
+ styles: styles$q,
24650
24671
  shadowOptions: {
24651
24672
  delegatesFocus: true
24652
24673
  }
@@ -24654,11 +24675,11 @@
24654
24675
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleRadioGroup());
24655
24676
  DesignSystem.tagFor(RadioGroup);
24656
24677
 
24657
- const template$i = html `
24678
+ const template$j = html `
24658
24679
  <template> Rich Text Editor here. </template>
24659
24680
  `;
24660
24681
 
24661
- const styles$n = css `
24682
+ const styles$p = css `
24662
24683
  ${display('flex')}
24663
24684
 
24664
24685
  :host {
@@ -24674,8 +24695,8 @@
24674
24695
  }
24675
24696
  const nimbleRichTextEditor = RichTextEditor.compose({
24676
24697
  baseName: 'rich-text-editor',
24677
- template: template$i,
24678
- styles: styles$n
24698
+ template: template$j,
24699
+ styles: styles$p
24679
24700
  });
24680
24701
  DesignSystem.getOrCreate()
24681
24702
  .withPrefix('nimble')
@@ -40196,11 +40217,11 @@
40196
40217
  code_inline: { mark: "code", noCloseToken: true }
40197
40218
  });
40198
40219
 
40199
- const template$h = html `
40220
+ const template$i = html `
40200
40221
  <div ${ref('viewer')} class="viewer"></div>
40201
40222
  `;
40202
40223
 
40203
- const styles$m = css `
40224
+ const styles$o = css `
40204
40225
  ${display('flex')}
40205
40226
 
40206
40227
  :host {
@@ -40324,17 +40345,17 @@
40324
40345
  ], RichTextViewer.prototype, "markdown", void 0);
40325
40346
  const nimbleRichTextViewer = RichTextViewer.compose({
40326
40347
  baseName: 'rich-text-viewer',
40327
- template: template$h,
40328
- styles: styles$m
40348
+ template: template$i,
40349
+ styles: styles$o
40329
40350
  });
40330
40351
  DesignSystem.getOrCreate()
40331
40352
  .withPrefix('nimble')
40332
40353
  .register(nimbleRichTextViewer());
40333
40354
  DesignSystem.tagFor(RichTextViewer);
40334
40355
 
40335
- const styles$l = css `
40336
- ${styles$z}
40337
- ${styles$y}
40356
+ const styles$n = css `
40357
+ ${styles$B}
40358
+ ${styles$A}
40338
40359
 
40339
40360
  ${
40340
40361
  /* We are using flex `order` to define the visual ordering of the selected value,
@@ -40362,7 +40383,7 @@
40362
40383
  `));
40363
40384
 
40364
40385
  // prettier-ignore
40365
- const template$g = (context, definition) => html `
40386
+ const template$h = (context, definition) => html `
40366
40387
  <template
40367
40388
  class="${x => [
40368
40389
  x.collapsible && 'collapsible',
@@ -40500,8 +40521,8 @@
40500
40521
  const nimbleSelect = Select.compose({
40501
40522
  baseName: 'select',
40502
40523
  baseClass: Select$1,
40503
- template: template$g,
40504
- styles: styles$l,
40524
+ template: template$h,
40525
+ styles: styles$n,
40505
40526
  indicator: arrowExpanderDown16X16.data,
40506
40527
  end: html `
40507
40528
  <${iconExclamationMarkTag}
@@ -40514,7 +40535,7 @@
40514
40535
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleSelect());
40515
40536
  DesignSystem.tagFor(Select);
40516
40537
 
40517
- const styles$k = css `
40538
+ const styles$m = css `
40518
40539
  ${display('inline-flex')}
40519
40540
 
40520
40541
  :host {
@@ -40674,7 +40695,7 @@
40674
40695
  }
40675
40696
  `));
40676
40697
 
40677
- const template$f = html `
40698
+ const template$g = html `
40678
40699
  <template role="progressbar">
40679
40700
  <div class="container">
40680
40701
  <div class="bit1"></div>
@@ -40712,13 +40733,13 @@
40712
40733
  ], Spinner.prototype, "appearance", void 0);
40713
40734
  const nimbleSpinner = Spinner.compose({
40714
40735
  baseName: 'spinner',
40715
- template: template$f,
40716
- styles: styles$k
40736
+ template: template$g,
40737
+ styles: styles$m
40717
40738
  });
40718
40739
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleSpinner());
40719
40740
  DesignSystem.tagFor(Spinner);
40720
40741
 
40721
- const styles$j = css `
40742
+ const styles$l = css `
40722
40743
  ${display('inline-flex')}
40723
40744
 
40724
40745
  :host {
@@ -40881,7 +40902,7 @@
40881
40902
  `));
40882
40903
 
40883
40904
  // prettier-ignore
40884
- const template$e = html `
40905
+ const template$f = html `
40885
40906
  <template
40886
40907
  role="switch"
40887
40908
  aria-checked="${x => x.checked}"
@@ -40925,66 +40946,168 @@
40925
40946
  const nimbleSwitch = Switch.compose({
40926
40947
  baseClass: Switch$1,
40927
40948
  baseName: 'switch',
40928
- template: template$e,
40929
- styles: styles$j
40949
+ template: template$f,
40950
+ styles: styles$l
40930
40951
  });
40931
40952
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleSwitch());
40932
40953
  DesignSystem.tagFor(Switch);
40933
40954
 
40934
- /**
40935
- * A nimble-styled HTML tab
40936
- */
40937
- class Tab extends Tab$2 {
40938
- }
40939
- const nimbleTab = Tab.compose({
40940
- baseName: 'tab',
40941
- baseClass: Tab$2,
40942
- template: tabTemplate,
40943
- styles: styles$M
40944
- });
40945
- DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTab());
40946
- DesignSystem.tagFor(Tab);
40947
-
40948
- const styles$i = css `
40949
- ${display('block')}
40955
+ const styles$k = css `
40956
+ ${display('inline-flex')}
40950
40957
 
40951
40958
  :host {
40959
+ position: relative;
40952
40960
  box-sizing: border-box;
40953
- font: ${bodyFont};
40961
+ font: ${buttonLabelFont};
40962
+ height: ${controlHeight};
40954
40963
  color: ${bodyFontColor};
40955
- padding-top: ${standardPadding};
40964
+ align-items: center;
40965
+ justify-content: center;
40966
+ cursor: pointer;
40967
+ --ni-private-active-indicator-width: 2px;
40968
+ --ni-private-focus-indicator-width: 1px;
40969
+ --ni-private-indicator-lines-gap: 1px;
40970
+ --ni-private-focus-indicator-inset-width: 3px;
40956
40971
  }
40957
- `;
40958
-
40959
- /**
40960
- * A nimble-styled tab panel
40961
- */
40962
- class TabPanel extends TabPanel$1 {
40963
- }
40964
- const nimbleTabPanel = TabPanel.compose({
40965
- baseName: 'tab-panel',
40966
- baseClass: TabPanel$1,
40967
- template: tabPanelTemplate,
40968
- styles: styles$i
40969
- });
40970
- DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTabPanel());
40971
- DesignSystem.tagFor(TabPanel);
40972
40972
 
40973
- /**
40974
- * table-core
40975
- *
40976
- * Copyright (c) TanStack
40977
- *
40978
- * This source code is licensed under the MIT license found in the
40979
- * LICENSE.md file in the root directory of this source tree.
40980
- *
40981
- * @license MIT
40982
- */
40983
- // Is this type a tuple?
40973
+ :host(:hover) {
40974
+ background-color: ${fillHoverColor};
40975
+ }
40984
40976
 
40985
- // If this type is a tuple, what indices are allowed?
40977
+ :host(:hover[aria-selected='true']) {
40978
+ background-color: ${fillHoverSelectedColor};
40979
+ }
40986
40980
 
40987
- ///
40981
+ :host(${focusVisible}) {
40982
+ outline: none;
40983
+ }
40984
+
40985
+ :host(:active) {
40986
+ background: none;
40987
+ }
40988
+
40989
+ :host([disabled]) {
40990
+ cursor: default;
40991
+ color: ${bodyDisabledFontColor};
40992
+ background: none;
40993
+ }
40994
+
40995
+ slot:not([name]) {
40996
+ display: block;
40997
+ padding: calc(${standardPadding} / 2) ${standardPadding}
40998
+ calc(${standardPadding} / 2 - ${borderWidth});
40999
+ }
41000
+
41001
+ :host::before {
41002
+ content: '';
41003
+ position: absolute;
41004
+ bottom: calc(
41005
+ var(--ni-private-active-indicator-width) +
41006
+ var(--ni-private-indicator-lines-gap)
41007
+ );
41008
+ width: 0px;
41009
+ height: 0px;
41010
+ border-bottom: ${borderHoverColor}
41011
+ var(--ni-private-focus-indicator-width) solid;
41012
+ transition: width ${smallDelay} ease-in;
41013
+ }
41014
+
41015
+ @media (prefers-reduced-motion) {
41016
+ :host::before {
41017
+ transition-duration: 0s;
41018
+ }
41019
+ }
41020
+
41021
+ :host(${focusVisible})::before {
41022
+ width: calc(100% - 2 * var(--ni-private-focus-indicator-inset-width));
41023
+ }
41024
+
41025
+ :host::after {
41026
+ content: '';
41027
+ position: absolute;
41028
+ bottom: 0px;
41029
+ width: 0px;
41030
+ height: 0px;
41031
+ border-bottom: ${borderHoverColor}
41032
+ var(--ni-private-active-indicator-width) solid;
41033
+ transition: width ${smallDelay} ease-in;
41034
+ }
41035
+
41036
+ @media (prefers-reduced-motion) {
41037
+ :host::after {
41038
+ transition-duration: 0s;
41039
+ }
41040
+ }
41041
+
41042
+ :host(${focusVisible})::after {
41043
+ width: 100%;
41044
+ border-bottom-width: var(--ni-private-focus-indicator-width);
41045
+ }
41046
+
41047
+ :host([aria-selected='true'])::after {
41048
+ width: 100%;
41049
+ border-bottom-width: var(--ni-private-active-indicator-width);
41050
+ }
41051
+
41052
+ :host([aria-selected='true'][disabled])::after {
41053
+ border-bottom-color: rgba(${borderHoverColor}, 0.3);
41054
+ }
41055
+ `;
41056
+
41057
+ /**
41058
+ * A nimble-styled HTML tab
41059
+ */
41060
+ class Tab extends Tab$2 {
41061
+ }
41062
+ const nimbleTab = Tab.compose({
41063
+ baseName: 'tab',
41064
+ baseClass: Tab$2,
41065
+ template: tabTemplate,
41066
+ styles: styles$k
41067
+ });
41068
+ DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTab());
41069
+ DesignSystem.tagFor(Tab);
41070
+
41071
+ const styles$j = css `
41072
+ ${display('block')}
41073
+
41074
+ :host {
41075
+ box-sizing: border-box;
41076
+ font: ${bodyFont};
41077
+ color: ${bodyFontColor};
41078
+ padding-top: ${standardPadding};
41079
+ }
41080
+ `;
41081
+
41082
+ /**
41083
+ * A nimble-styled tab panel
41084
+ */
41085
+ class TabPanel extends TabPanel$1 {
41086
+ }
41087
+ const nimbleTabPanel = TabPanel.compose({
41088
+ baseName: 'tab-panel',
41089
+ baseClass: TabPanel$1,
41090
+ template: tabPanelTemplate,
41091
+ styles: styles$j
41092
+ });
41093
+ DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTabPanel());
41094
+ DesignSystem.tagFor(TabPanel);
41095
+
41096
+ /**
41097
+ * table-core
41098
+ *
41099
+ * Copyright (c) TanStack
41100
+ *
41101
+ * This source code is licensed under the MIT license found in the
41102
+ * LICENSE.md file in the root directory of this source tree.
41103
+ *
41104
+ * @license MIT
41105
+ */
41106
+ // Is this type a tuple?
41107
+
41108
+ // If this type is a tuple, what indices are allowed?
41109
+
41110
+ ///
40988
41111
 
40989
41112
  function functionalUpdate(updater, input) {
40990
41113
  return typeof updater === 'function' ? updater(input) : updater;
@@ -44519,6 +44642,11 @@
44519
44642
  .map(node => node.textContent?.trim())
44520
44643
  .join(' ');
44521
44644
  }
44645
+ connectedCallback() {
44646
+ super.connectedCallback();
44647
+ // Done here to enforce consistency across headers as they may have custom templates
44648
+ this.setAttribute('slot', this.columnInternals.uniqueId);
44649
+ }
44522
44650
  sortDirectionChanged() {
44523
44651
  if (!this.sortingDisabled) {
44524
44652
  this.columnInternals.currentSortDirection = this.sortDirection;
@@ -44682,7 +44810,7 @@
44682
44810
  }
44683
44811
  }
44684
44812
 
44685
- const styles$h = css `
44813
+ const styles$i = css `
44686
44814
  ${display('flex')}
44687
44815
 
44688
44816
  :host {
@@ -44862,7 +44990,7 @@
44862
44990
  }
44863
44991
  `));
44864
44992
 
44865
- const styles$g = css `
44993
+ const styles$h = css `
44866
44994
  ${display('flex')}
44867
44995
 
44868
44996
  :host {
@@ -44884,7 +45012,7 @@
44884
45012
  `;
44885
45013
 
44886
45014
  // prettier-ignore
44887
- const template$d = html `
45015
+ const template$e = html `
44888
45016
  <template role="columnheader"
44889
45017
  aria-sort="${x => x.ariaSort}"
44890
45018
  ${'' /* Prevent header double clicks from selecting text */}
@@ -44945,13 +45073,13 @@
44945
45073
  ], TableHeader.prototype, "isGrouped", void 0);
44946
45074
  const nimbleTableHeader = TableHeader.compose({
44947
45075
  baseName: 'table-header',
44948
- template: template$d,
44949
- styles: styles$g
45076
+ template: template$e,
45077
+ styles: styles$h
44950
45078
  });
44951
45079
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTableHeader());
44952
45080
  const tableHeaderTag = DesignSystem.tagFor(TableHeader);
44953
45081
 
44954
- const styles$f = css `
45082
+ const styles$g = css `
44955
45083
  ${display('flex')}
44956
45084
 
44957
45085
  :host {
@@ -45040,7 +45168,7 @@
45040
45168
  }
45041
45169
  `));
45042
45170
 
45043
- const styles$e = css `
45171
+ const styles$f = css `
45044
45172
  ${display('flex')}
45045
45173
 
45046
45174
  :host {
@@ -45073,7 +45201,7 @@
45073
45201
  `;
45074
45202
 
45075
45203
  // prettier-ignore
45076
- const template$c = html `
45204
+ const template$d = html `
45077
45205
  <template role="cell" style="--ni-private-table-cell-nesting-level: ${x => x.nestingLevel}">
45078
45206
  ${x => x.cellViewTemplate}
45079
45207
  ${when(x => x.hasActionMenu, html `
@@ -45141,14 +45269,14 @@
45141
45269
  ], TableCell.prototype, "nestingLevel", void 0);
45142
45270
  const nimbleTableCell = TableCell.compose({
45143
45271
  baseName: 'table-cell',
45144
- template: template$c,
45145
- styles: styles$e
45272
+ template: template$d,
45273
+ styles: styles$f
45146
45274
  });
45147
45275
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTableCell());
45148
45276
  const tableCellTag = DesignSystem.tagFor(TableCell);
45149
45277
 
45150
45278
  // prettier-ignore
45151
- const template$b = html `
45279
+ const template$c = html `
45152
45280
  <template role="row" aria-selected=${x => x.ariaSelected}>
45153
45281
  ${when(x => x.selectable && !x.hideSelection, html `
45154
45282
  <span role="gridcell" class="checkbox-container">
@@ -45339,13 +45467,13 @@
45339
45467
  ], TableRow.prototype, "ariaSelected", null);
45340
45468
  const nimbleTableRow = TableRow.compose({
45341
45469
  baseName: 'table-row',
45342
- template: template$b,
45343
- styles: styles$f
45470
+ template: template$c,
45471
+ styles: styles$g
45344
45472
  });
45345
45473
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTableRow());
45346
45474
  const tableRowTag = DesignSystem.tagFor(TableRow);
45347
45475
 
45348
- const styles$d = css `
45476
+ const styles$e = css `
45349
45477
  ${display('grid')}
45350
45478
 
45351
45479
  :host {
@@ -45454,7 +45582,7 @@
45454
45582
 
45455
45583
  /* eslint-disable @typescript-eslint/indent */
45456
45584
  // prettier-ignore
45457
- const template$a = html `
45585
+ const template$b = html `
45458
45586
  <template
45459
45587
  role="row"
45460
45588
  @click=${x => x.onGroupExpandToggle()}
@@ -45588,14 +45716,14 @@
45588
45716
  ], TableGroupRow.prototype, "animationClass", void 0);
45589
45717
  const nimbleTableGroupRow = TableGroupRow.compose({
45590
45718
  baseName: 'table-group-row',
45591
- template: template$a,
45592
- styles: styles$d
45719
+ template: template$b,
45720
+ styles: styles$e
45593
45721
  });
45594
45722
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTableGroupRow());
45595
45723
  const tableGroupRowTag = DesignSystem.tagFor(TableGroupRow);
45596
45724
 
45597
45725
  // prettier-ignore
45598
- const template$9 = html `
45726
+ const template$a = html `
45599
45727
  <template
45600
45728
  role="grid"
45601
45729
  aria-multiselectable="${x => x.ariaMultiSelectable}"
@@ -47946,13 +48074,13 @@
47946
48074
  ], Table.prototype, "documentShiftKeyDown", void 0);
47947
48075
  const nimbleTable = Table.compose({
47948
48076
  baseName: 'table',
47949
- template: template$9,
47950
- styles: styles$h
48077
+ template: template$a,
48078
+ styles: styles$i
47951
48079
  });
47952
48080
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTable());
47953
48081
  DesignSystem.tagFor(Table);
47954
48082
 
47955
- const styles$c = css `
48083
+ const styles$d = css `
47956
48084
  :host {
47957
48085
  display: contents;
47958
48086
  }
@@ -48019,18 +48147,16 @@
48019
48147
  return new AttachedBehaviorHTMLDirective('nimble-overflow', OverflowBehavior, propertyName);
48020
48148
  }
48021
48149
 
48150
+ // Avoiding a wrapping <template> and be careful about starting and ending whitspace
48151
+ // so the template can be composed into other column header templates
48022
48152
  // prettier-ignore
48023
- const template$8 = html `
48024
- <template slot="${x => x.columnInternals.uniqueId}">
48025
- <span
48026
- ${overflow('hasOverflow')}
48027
- class="header-content"
48028
- title=${x => (x.hasOverflow && x.headerTextContent ? x.headerTextContent : null)}
48029
- >
48030
- <slot ${ref('contentSlot')}></slot>
48031
- </span>
48032
- </template>
48033
- `;
48153
+ const template$9 = html `<span
48154
+ ${overflow('hasOverflow')}
48155
+ class="header-content"
48156
+ title=${x => (x.hasOverflow && x.headerTextContent ? x.headerTextContent : null)}
48157
+ >
48158
+ <slot ${ref('contentSlot')}></slot>
48159
+ </span>`;
48034
48160
 
48035
48161
  // As the returned class is internal to the function, we can't write a signature that uses is directly, so rely on inference
48036
48162
  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/explicit-function-return-type
@@ -48100,7 +48226,7 @@
48100
48226
  return GroupableColumn;
48101
48227
  }
48102
48228
 
48103
- const styles$b = css `
48229
+ const styles$c = css `
48104
48230
  :host {
48105
48231
  width: fit-content;
48106
48232
  max-width: 100%;
@@ -48125,7 +48251,7 @@
48125
48251
 
48126
48252
  /* eslint-disable @typescript-eslint/indent */
48127
48253
  // prettier-ignore
48128
- const template$7 = html `
48254
+ const template$8 = html `
48129
48255
  <template
48130
48256
  @click="${(x, c) => {
48131
48257
  if (typeof x.cellRecord.href === 'string') {
@@ -48192,8 +48318,8 @@
48192
48318
  ], TableColumnAnchorCellView.prototype, "text", null);
48193
48319
  const anchorCellView = TableColumnAnchorCellView.compose({
48194
48320
  baseName: 'table-column-anchor-cell-view',
48195
- template: template$7,
48196
- styles: styles$b
48321
+ template: template$8,
48322
+ styles: styles$c
48197
48323
  });
48198
48324
  DesignSystem.getOrCreate().withPrefix('nimble').register(anchorCellView());
48199
48325
  const tableColumnAnchorCellViewTag = DesignSystem.tagFor(TableColumnAnchorCellView);
@@ -48219,7 +48345,7 @@
48219
48345
  observable
48220
48346
  ], TableColumnTextGroupHeaderViewBase.prototype, "text", void 0);
48221
48347
 
48222
- const template$6 = html `
48348
+ const template$7 = html `
48223
48349
  <span
48224
48350
  ${overflow('hasOverflow')}
48225
48351
  title="${x => (x.hasOverflow && x.text ? x.text : null)}"
@@ -48228,7 +48354,7 @@
48228
48354
  </span>
48229
48355
  `;
48230
48356
 
48231
- const styles$a = css `
48357
+ const styles$b = css `
48232
48358
  span {
48233
48359
  font: ${bodyFont};
48234
48360
  color: ${bodyFontColor};
@@ -48249,14 +48375,14 @@
48249
48375
  }
48250
48376
  }
48251
48377
  const tableColumnTextGroupHeaderView = TableColumnTextGroupHeaderView.compose({
48252
- baseName: 'table-column-text-group-header',
48253
- template: template$6,
48254
- styles: styles$a
48378
+ baseName: 'table-column-text-group-header-view',
48379
+ template: template$7,
48380
+ styles: styles$b
48255
48381
  });
48256
48382
  DesignSystem.getOrCreate()
48257
48383
  .withPrefix('nimble')
48258
48384
  .register(tableColumnTextGroupHeaderView());
48259
- const tableColumnTextGroupHeaderTag = DesignSystem.tagFor(TableColumnTextGroupHeaderView);
48385
+ const tableColumnTextGroupHeaderViewTag = DesignSystem.tagFor(TableColumnTextGroupHeaderView);
48260
48386
 
48261
48387
  /**
48262
48388
  * A table column for displaying links.
@@ -48270,7 +48396,7 @@
48270
48396
  return {
48271
48397
  cellRecordFieldNames: ['label', 'href'],
48272
48398
  cellViewTag: tableColumnAnchorCellViewTag,
48273
- groupHeaderViewTag: tableColumnTextGroupHeaderTag,
48399
+ groupHeaderViewTag: tableColumnTextGroupHeaderViewTag,
48274
48400
  delegatedEvents: ['click'],
48275
48401
  sortOperation: TableColumnSortOperation.localeAwareCaseSensitive
48276
48402
  };
@@ -48364,8 +48490,8 @@
48364
48490
  ], TableColumnAnchor.prototype, "download", void 0);
48365
48491
  const nimbleTableColumnAnchor = TableColumnAnchor.compose({
48366
48492
  baseName: 'table-column-anchor',
48367
- template: template$8,
48368
- styles: styles$c
48493
+ template: template$9,
48494
+ styles: styles$d
48369
48495
  });
48370
48496
  DesignSystem.getOrCreate()
48371
48497
  .withPrefix('nimble')
@@ -48373,27 +48499,232 @@
48373
48499
  DesignSystem.tagFor(TableColumnAnchor);
48374
48500
 
48375
48501
  /**
48376
- * The base class for table columns that display fields of any type as text.
48502
+ * Converts a Mapping key (which is a string when configured in HTML) to the
48503
+ * given keyType. The converted value can then be used to compare against
48504
+ * values in the table data.
48377
48505
  */
48378
- class TableColumnTextBase extends mixinGroupableColumnAPI(mixinFractionalWidthColumnAPI(TableColumn)) {
48506
+ const resolveKeyWithType = (key, keyType) => {
48507
+ if (keyType === 'number') {
48508
+ const converted = nullableNumberConverter.fromView(key);
48509
+ return converted === null ? undefined : converted;
48510
+ }
48511
+ if (keyType === 'boolean') {
48512
+ if (key === false || key === 'false') {
48513
+ return false;
48514
+ }
48515
+ if (key === true || key === 'true') {
48516
+ return true;
48517
+ }
48518
+ return undefined;
48519
+ }
48520
+ return key?.toString() ?? undefined;
48521
+ };
48522
+
48523
+ /**
48524
+ * Base class for table columns that map values to content (e.g. nimble-table-column-enum-text and nimble-table-column-icon)
48525
+ */
48526
+ class TableColumnEnumBase extends TableColumn {
48527
+ constructor() {
48528
+ super(...arguments);
48529
+ // To ensure the validator is available when other properties get initialized
48530
+ // (which can trigger validation), declare the validator first.
48531
+ /** @internal */
48532
+ this.validator = this.createValidator();
48533
+ /** @internal */
48534
+ this.mappingNotifiers = [];
48535
+ /** @internal */
48536
+ this.mappings = [];
48537
+ this.keyType = 'string';
48538
+ }
48539
+ /**
48540
+ * @internal
48541
+ *
48542
+ * Triggers a request to update the columnConfig when any observable property on
48543
+ * a mapping is updated.
48544
+ */
48545
+ handleChange(source, args) {
48546
+ if (source instanceof Mapping && typeof args === 'string') {
48547
+ this.updateColumnConfig();
48548
+ }
48549
+ }
48550
+ /**
48551
+ * Called when any Mapping related state has changed.
48552
+ * Implementations should run validation before updating the column config.
48553
+ */
48554
+ updateColumnConfig() {
48555
+ this.validator.validate(this.mappings, this.keyType);
48556
+ this.columnInternals.columnConfig = this.validator.isValid()
48557
+ ? this.createColumnConfig(this.getMappingConfigs())
48558
+ : undefined;
48559
+ }
48560
+ getMappingConfigs() {
48561
+ const mappingConfigs = new Map();
48562
+ this.mappings.forEach(mapping => {
48563
+ const key = resolveKeyWithType(mapping.key, this.keyType);
48564
+ if (key === undefined) {
48565
+ throw Error('Key was invalid for type. Validation should have prevented this.');
48566
+ }
48567
+ const mappingConfig = this.createMappingConfig(mapping);
48568
+ mappingConfigs.set(key, mappingConfig);
48569
+ });
48570
+ return mappingConfigs;
48571
+ }
48379
48572
  fieldNameChanged() {
48380
48573
  this.columnInternals.dataRecordFieldNames = [this.fieldName];
48381
48574
  this.columnInternals.operandDataRecordFieldName = this.fieldName;
48382
48575
  }
48576
+ mappingsChanged() {
48577
+ this.updateColumnConfig();
48578
+ this.observeMappings();
48579
+ }
48580
+ keyTypeChanged() {
48581
+ this.updateColumnConfig();
48582
+ }
48583
+ removeMappingObservers() {
48584
+ this.mappingNotifiers.forEach(notifier => {
48585
+ notifier.unsubscribe(this);
48586
+ });
48587
+ this.mappingNotifiers = [];
48588
+ }
48589
+ observeMappings() {
48590
+ this.removeMappingObservers();
48591
+ for (const mapping of this.mappings) {
48592
+ const notifier = Observable.getNotifier(mapping);
48593
+ notifier.subscribe(this);
48594
+ this.mappingNotifiers.push(notifier);
48595
+ }
48596
+ }
48383
48597
  }
48598
+ __decorate$1([
48599
+ observable
48600
+ ], TableColumnEnumBase.prototype, "mappings", void 0);
48384
48601
  __decorate$1([
48385
48602
  attr({ attribute: 'field-name' })
48386
- ], TableColumnTextBase.prototype, "fieldName", void 0);
48603
+ ], TableColumnEnumBase.prototype, "fieldName", void 0);
48604
+ __decorate$1([
48605
+ attr({ attribute: 'key-type' })
48606
+ ], TableColumnEnumBase.prototype, "keyType", void 0);
48387
48607
 
48388
- const template$5 = html `
48389
- <span
48390
- ${overflow('hasOverflow')}
48391
- title=${x => (x.hasOverflow && x.text ? x.text : null)}
48392
- >
48393
- ${x => x.text}
48394
- </span>
48608
+ const styles$a = css `
48609
+ ${styles$d}
48610
+
48611
+ slot[name='mapping'] {
48612
+ display: none;
48613
+ }
48395
48614
  `;
48396
48615
 
48616
+ const template$6 = html `${template$9}<slot ${slotted('mappings')} name="mapping"></slot>`;
48617
+
48618
+ /**
48619
+ * Generic Validator Utility extends Tracker Utility for validation purposes
48620
+ */
48621
+ class Validator extends Tracker {
48622
+ isValid() {
48623
+ return this.noneTracked();
48624
+ }
48625
+ getValidationFlags() {
48626
+ return this.getTrackedItems();
48627
+ }
48628
+ }
48629
+
48630
+ /**
48631
+ * Base column validator
48632
+ */
48633
+ class ColumnValidator extends Validator {
48634
+ constructor(columnInternals, configValidityKeys) {
48635
+ super(configValidityKeys);
48636
+ this.columnInternals = columnInternals;
48637
+ }
48638
+ /**
48639
+ * @returns whether the entire column configuration is valid
48640
+ */
48641
+ isValidColumn() {
48642
+ return this.isValid();
48643
+ }
48644
+ /**
48645
+ * @returns an object containing flags for various ways the configuation can be invalid
48646
+ */
48647
+ getValidity() {
48648
+ return this.getValidationFlags();
48649
+ }
48650
+ /**
48651
+ * Sets a particular validity condition flag's value, e.g. "hasInvalidFooValue" = true
48652
+ */
48653
+ setConditionValue(name, isInvalid) {
48654
+ if (isInvalid) {
48655
+ this.track(name);
48656
+ }
48657
+ else {
48658
+ this.untrack(name);
48659
+ }
48660
+ this.updateColumnInternalsFlag();
48661
+ }
48662
+ updateColumnInternalsFlag() {
48663
+ this.columnInternals.validConfiguration = this.isValid();
48664
+ }
48665
+ }
48666
+
48667
+ const enumBaseValidityFlagNames = [
48668
+ 'invalidMappingKeyValueForType',
48669
+ 'unsupportedMappingType',
48670
+ 'duplicateMappingKey',
48671
+ 'missingKeyValue',
48672
+ 'missingTextValue'
48673
+ ];
48674
+ /**
48675
+ * Validator for TableColumnEnumText. Implementations MUST include enumBaseValidityFlagNames in validity flag names set.
48676
+ */
48677
+ class TableColumnEnumBaseValidator extends ColumnValidator {
48678
+ constructor(columnInternals, configValidityKeys, supportedMappingElements) {
48679
+ super(columnInternals, configValidityKeys);
48680
+ this.supportedMappingElements = supportedMappingElements;
48681
+ }
48682
+ validate(mappings, keyType) {
48683
+ this.untrackAll();
48684
+ const keys = mappings.map(mapping => mapping.key);
48685
+ this.validateKeyValuesForType(keys, keyType);
48686
+ this.validateMappingTypes(mappings);
48687
+ this.validateUniqueKeys(keys, keyType);
48688
+ this.validateNoMissingKeys(mappings);
48689
+ this.validateNoMissingText(mappings);
48690
+ }
48691
+ validateKeyValuesForType(keys, keyType) {
48692
+ // Ignore undefined keys, because validateNoMissingKeys covers that case.
48693
+ // We should only set 'invalidMappingKeyValueForType' when there is a key,
48694
+ // but it isn't appropriate for the type.
48695
+ const invalid = keys.some(key => key !== undefined
48696
+ && resolveKeyWithType(key, keyType) === undefined);
48697
+ this.setConditionValue('invalidMappingKeyValueForType', invalid);
48698
+ }
48699
+ validateMappingTypes(mappings) {
48700
+ const valid = mappings.every(mapping => this.supportedMappingElements.some(mappingClass => mapping instanceof mappingClass));
48701
+ this.setConditionValue('unsupportedMappingType', !valid);
48702
+ }
48703
+ validateUniqueKeys(keys, keyType) {
48704
+ const typedKeys = keys.map(x => resolveKeyWithType(x, keyType));
48705
+ const invalid = new Set(typedKeys).size !== typedKeys.length;
48706
+ this.setConditionValue('duplicateMappingKey', invalid);
48707
+ }
48708
+ validateNoMissingKeys(mappings) {
48709
+ const invalid = mappings.some(mapping => mapping.key === undefined);
48710
+ this.setConditionValue('missingKeyValue', invalid);
48711
+ }
48712
+ validateNoMissingText(mappings) {
48713
+ const invalid = mappings.some(mapping => mapping.text === undefined);
48714
+ this.setConditionValue('missingTextValue', invalid);
48715
+ }
48716
+ }
48717
+
48718
+ const enumTextValidityFlagNames = [...enumBaseValidityFlagNames];
48719
+ /**
48720
+ * Validator for TableColumnEnumText
48721
+ */
48722
+ class TableColumnEnumTextValidator extends TableColumnEnumBaseValidator {
48723
+ constructor(columnInternals, supportedMappingElements) {
48724
+ super(columnInternals, enumTextValidityFlagNames, supportedMappingElements);
48725
+ }
48726
+ }
48727
+
48397
48728
  const styles$9 = css `
48398
48729
  span {
48399
48730
  font: ${bodyFont};
@@ -48404,6 +48735,15 @@
48404
48735
  }
48405
48736
  `;
48406
48737
 
48738
+ const template$5 = html `
48739
+ <span
48740
+ ${overflow('hasOverflow')}
48741
+ title=${x => (x.hasOverflow && x.text ? x.text : null)}
48742
+ >
48743
+ ${x => x.text}
48744
+ </span>
48745
+ `;
48746
+
48407
48747
  /**
48408
48748
  * The cell view base class for displaying fields of any type as text.
48409
48749
  */
@@ -48425,6 +48765,137 @@
48425
48765
  observable
48426
48766
  ], TableColumnTextCellViewBase.prototype, "text", void 0);
48427
48767
 
48768
+ /**
48769
+ * Common state shared across Mapping Config
48770
+ */
48771
+ class MappingConfig {
48772
+ constructor(text) {
48773
+ this.text = text;
48774
+ }
48775
+ }
48776
+
48777
+ /**
48778
+ * Mapping configuration corresponding to a text mapping
48779
+ */
48780
+ class MappingTextConfig extends MappingConfig {
48781
+ }
48782
+
48783
+ /**
48784
+ * A cell view for displaying mapped text
48785
+ */
48786
+ class TableColumnEnumTextCellView extends TableColumnTextCellViewBase {
48787
+ columnConfigChanged() {
48788
+ this.updateText();
48789
+ }
48790
+ cellRecordChanged() {
48791
+ this.updateText();
48792
+ }
48793
+ updateText() {
48794
+ const value = this.cellRecord.value;
48795
+ if (value === undefined || value === null) {
48796
+ this.text = '';
48797
+ return;
48798
+ }
48799
+ const config = this.columnConfig?.mappingConfigs.get(value);
48800
+ this.text = config instanceof MappingTextConfig ? config.text : '';
48801
+ }
48802
+ }
48803
+ const enumTextCellView = TableColumnEnumTextCellView.compose({
48804
+ baseName: 'table-column-enum-text-cell-view',
48805
+ template: template$5,
48806
+ styles: styles$9
48807
+ });
48808
+ DesignSystem.getOrCreate().withPrefix('nimble').register(enumTextCellView());
48809
+ const tableColumnEnumTextCellViewTag = DesignSystem.tagFor(TableColumnEnumTextCellView);
48810
+
48811
+ /**
48812
+ * A group header view for enum columns
48813
+ */
48814
+ class TableColumnEnumTextGroupHeaderView extends TableColumnTextGroupHeaderViewBase {
48815
+ columnConfigChanged() {
48816
+ this.updateText();
48817
+ }
48818
+ groupHeaderValueChanged() {
48819
+ this.updateText();
48820
+ }
48821
+ updateText() {
48822
+ const value = this.groupHeaderValue;
48823
+ if (value === undefined || value === null) {
48824
+ this.text = '';
48825
+ return;
48826
+ }
48827
+ const config = this.columnConfig?.mappingConfigs.get(value);
48828
+ this.text = config instanceof MappingTextConfig ? config.text : '';
48829
+ }
48830
+ }
48831
+ const enumTextGroupHeaderView = TableColumnEnumTextGroupHeaderView.compose({
48832
+ baseName: 'table-column-enum-text-group-header-view',
48833
+ template: template$7,
48834
+ styles: styles$b
48835
+ });
48836
+ DesignSystem.getOrCreate()
48837
+ .withPrefix('nimble')
48838
+ .register(enumTextGroupHeaderView());
48839
+ const tableColumnEnumTextGroupHeaderViewTag = DesignSystem.tagFor(TableColumnEnumTextGroupHeaderView);
48840
+
48841
+ /**
48842
+ * Table column that maps values to strings
48843
+ */
48844
+ class TableColumnEnumText extends mixinGroupableColumnAPI(mixinFractionalWidthColumnAPI((TableColumnEnumBase))) {
48845
+ createValidator() {
48846
+ return new TableColumnEnumTextValidator(this.columnInternals, [
48847
+ MappingText
48848
+ ]);
48849
+ }
48850
+ get validity() {
48851
+ return this.validator.getValidity();
48852
+ }
48853
+ getColumnInternalsOptions() {
48854
+ return {
48855
+ cellRecordFieldNames: ['value'],
48856
+ cellViewTag: tableColumnEnumTextCellViewTag,
48857
+ groupHeaderViewTag: tableColumnEnumTextGroupHeaderViewTag,
48858
+ delegatedEvents: [],
48859
+ sortOperation: TableColumnSortOperation.basic
48860
+ };
48861
+ }
48862
+ createColumnConfig(mappingConfigs) {
48863
+ return {
48864
+ mappingConfigs
48865
+ };
48866
+ }
48867
+ createMappingConfig(mapping) {
48868
+ if (mapping instanceof MappingText) {
48869
+ return new MappingTextConfig(mapping.text);
48870
+ }
48871
+ // Getting here would indicate a programming error, b/c validation will prevent
48872
+ // this function from running when there is an unsupported mapping.
48873
+ throw new Error('Unsupported mapping');
48874
+ }
48875
+ }
48876
+ const nimbleTableColumnEnumText = TableColumnEnumText.compose({
48877
+ baseName: 'table-column-enum-text',
48878
+ template: template$6,
48879
+ styles: styles$a
48880
+ });
48881
+ DesignSystem.getOrCreate()
48882
+ .withPrefix('nimble')
48883
+ .register(nimbleTableColumnEnumText());
48884
+ DesignSystem.tagFor(TableColumnEnumText);
48885
+
48886
+ /**
48887
+ * The base class for table columns that display fields of any type as text.
48888
+ */
48889
+ class TableColumnTextBase extends mixinGroupableColumnAPI(mixinFractionalWidthColumnAPI(TableColumn)) {
48890
+ fieldNameChanged() {
48891
+ this.columnInternals.dataRecordFieldNames = [this.fieldName];
48892
+ this.columnInternals.operandDataRecordFieldName = this.fieldName;
48893
+ }
48894
+ }
48895
+ __decorate$1([
48896
+ attr({ attribute: 'field-name' })
48897
+ ], TableColumnTextBase.prototype, "fieldName", void 0);
48898
+
48428
48899
  /**
48429
48900
  * A cell view for displaying string fields as text
48430
48901
  */
@@ -48451,7 +48922,7 @@
48451
48922
  return {
48452
48923
  cellRecordFieldNames: ['value'],
48453
48924
  cellViewTag: tableColumnTextCellViewTag,
48454
- groupHeaderViewTag: tableColumnTextGroupHeaderTag,
48925
+ groupHeaderViewTag: tableColumnTextGroupHeaderViewTag,
48455
48926
  delegatedEvents: [],
48456
48927
  sortOperation: TableColumnSortOperation.localeAwareCaseSensitive
48457
48928
  };
@@ -48459,8 +48930,8 @@
48459
48930
  }
48460
48931
  const nimbleTableColumnText = TableColumnText.compose({
48461
48932
  baseName: 'table-column-text',
48462
- template: template$8,
48463
- styles: styles$c
48933
+ template: template$9,
48934
+ styles: styles$d
48464
48935
  });
48465
48936
  DesignSystem.getOrCreate()
48466
48937
  .withPrefix('nimble')
@@ -48562,7 +49033,7 @@
48562
49033
 
48563
49034
  const styles$6 = css `
48564
49035
  ${display('inline-flex')}
48565
- ${styles$y}
49036
+ ${styles$A}
48566
49037
 
48567
49038
  :host {
48568
49039
  font: ${bodyFont};
@@ -48908,7 +49379,7 @@
48908
49379
 
48909
49380
  const styles$5 = css `
48910
49381
  ${display('inline-block')}
48911
- ${styles$y}
49382
+ ${styles$A}
48912
49383
 
48913
49384
  :host {
48914
49385
  font: ${bodyFont};