@ni/nimble-components 29.7.9 → 29.8.0

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 (55) hide show
  1. package/dist/all-components-bundle.js +486 -227
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +1867 -1781
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/all-components.d.ts +1 -0
  6. package/dist/esm/all-components.js +1 -0
  7. package/dist/esm/all-components.js.map +1 -1
  8. package/dist/esm/menu-button/testing/menu-button.pageobject.d.ts +12 -0
  9. package/dist/esm/menu-button/testing/menu-button.pageobject.js +26 -0
  10. package/dist/esm/menu-button/testing/menu-button.pageobject.js.map +1 -1
  11. package/dist/esm/patterns/button/styles.js +8 -0
  12. package/dist/esm/patterns/button/styles.js.map +1 -1
  13. package/dist/esm/table/components/row/index.d.ts +2 -1
  14. package/dist/esm/table/components/row/index.js +14 -0
  15. package/dist/esm/table/components/row/index.js.map +1 -1
  16. package/dist/esm/table/components/row/template.js +9 -0
  17. package/dist/esm/table/components/row/template.js.map +1 -1
  18. package/dist/esm/table/index.d.ts +6 -1
  19. package/dist/esm/table/index.js +40 -1
  20. package/dist/esm/table/index.js.map +1 -1
  21. package/dist/esm/table/models/utilities.d.ts +3 -0
  22. package/dist/esm/table/models/utilities.js +7 -0
  23. package/dist/esm/table/models/utilities.js.map +1 -0
  24. package/dist/esm/table/template.js +7 -0
  25. package/dist/esm/table/template.js.map +1 -1
  26. package/dist/esm/table/types.d.ts +22 -2
  27. package/dist/esm/table/types.js +0 -1
  28. package/dist/esm/table/types.js.map +1 -1
  29. package/dist/esm/table-column/base/cell-view/template.js +9 -1
  30. package/dist/esm/table-column/base/cell-view/template.js.map +1 -1
  31. package/dist/esm/table-column/base/models/column-internals.d.ts +10 -2
  32. package/dist/esm/table-column/base/models/column-internals.js +6 -3
  33. package/dist/esm/table-column/base/models/column-internals.js.map +1 -1
  34. package/dist/esm/table-column/menu-button/cell-view/index.d.ts +32 -0
  35. package/dist/esm/table-column/menu-button/cell-view/index.js +70 -0
  36. package/dist/esm/table-column/menu-button/cell-view/index.js.map +1 -0
  37. package/dist/esm/table-column/menu-button/cell-view/styles.d.ts +1 -0
  38. package/dist/esm/table-column/menu-button/cell-view/styles.js +21 -0
  39. package/dist/esm/table-column/menu-button/cell-view/styles.js.map +1 -0
  40. package/dist/esm/table-column/menu-button/cell-view/templates.d.ts +2 -0
  41. package/dist/esm/table-column/menu-button/cell-view/templates.js +25 -0
  42. package/dist/esm/table-column/menu-button/cell-view/templates.js.map +1 -0
  43. package/dist/esm/table-column/menu-button/index.d.ts +42 -0
  44. package/dist/esm/table-column/menu-button/index.js +68 -0
  45. package/dist/esm/table-column/menu-button/index.js.map +1 -0
  46. package/dist/esm/table-column/menu-button/template.d.ts +2 -0
  47. package/dist/esm/table-column/menu-button/template.js +8 -0
  48. package/dist/esm/table-column/menu-button/template.js.map +1 -0
  49. package/dist/esm/table-column/menu-button/testing/table-column-menu-button.pageobject.d.ts +11 -0
  50. package/dist/esm/table-column/menu-button/testing/table-column-menu-button.pageobject.js +18 -0
  51. package/dist/esm/table-column/menu-button/testing/table-column-menu-button.pageobject.js.map +1 -0
  52. package/dist/esm/table-column/menu-button/types.d.ts +10 -0
  53. package/dist/esm/table-column/menu-button/types.js +3 -0
  54. package/dist/esm/table-column/menu-button/types.js.map +1 -0
  55. package/package.json +1 -1
@@ -16333,7 +16333,7 @@
16333
16333
 
16334
16334
  /**
16335
16335
  * Do not edit directly
16336
- * Generated on Wed, 10 Jul 2024 15:33:57 GMT
16336
+ * Generated on Wed, 10 Jul 2024 16:10:17 GMT
16337
16337
  */
16338
16338
 
16339
16339
  const Information100DarkUi = "#a46eff";
@@ -16789,9 +16789,9 @@
16789
16789
  return `${prefix}${uniqueIdCounter++}`;
16790
16790
  }
16791
16791
 
16792
- const template$I = html `<slot></slot>`;
16792
+ const template$K = html `<slot></slot>`;
16793
16793
 
16794
- const styles$$ = css `
16794
+ const styles$10 = css `
16795
16795
  ${display('contents')}
16796
16796
  `;
16797
16797
 
@@ -16906,8 +16906,8 @@
16906
16906
  ], ThemeProvider.prototype, "theme", void 0);
16907
16907
  const nimbleDesignSystemProvider = ThemeProvider.compose({
16908
16908
  baseName: 'theme-provider',
16909
- styles: styles$$,
16910
- template: template$I
16909
+ styles: styles$10,
16910
+ template: template$K
16911
16911
  });
16912
16912
  DesignSystem.getOrCreate()
16913
16913
  .withPrefix('nimble')
@@ -17100,7 +17100,7 @@
17100
17100
  }
17101
17101
  }
17102
17102
 
17103
- const styles$_ = css `
17103
+ const styles$$ = css `
17104
17104
  @layer base, hover, focusVisible, active, disabled;
17105
17105
 
17106
17106
  @layer base {
@@ -17179,7 +17179,7 @@
17179
17179
  `;
17180
17180
 
17181
17181
  // prettier-ignore
17182
- const template$H = (_context, definition) => html `${
17182
+ const template$J = (_context, definition) => html `${
17183
17183
  /* top-container div is necessary because setting contenteditable directly on the native anchor instead
17184
17184
  leaves it focusable, unlike the behavior you get when the anchor is _within_ a contenteditable element.
17185
17185
  */ ''}<div
@@ -17282,8 +17282,8 @@
17282
17282
  const nimbleAnchor = Anchor.compose({
17283
17283
  baseName: 'anchor',
17284
17284
  baseClass: Anchor$1,
17285
- template: template$H,
17286
- styles: styles$_,
17285
+ template: template$J,
17286
+ styles: styles$$,
17287
17287
  shadowOptions: {
17288
17288
  delegatesFocus: true
17289
17289
  }
@@ -17395,7 +17395,7 @@
17395
17395
  padding: 0;
17396
17396
  `;
17397
17397
 
17398
- const styles$Z = css `
17398
+ const styles$_ = css `
17399
17399
  @layer base, checked, hover, focusVisible, active, disabled, top;
17400
17400
 
17401
17401
  @layer base {
@@ -17471,6 +17471,10 @@
17471
17471
  ${iconColor.cssCustomProperty}: ${buttonLabelFontColor};
17472
17472
  }
17473
17473
 
17474
+ slot[name='start']::slotted(*) {
17475
+ flex-shrink: 0;
17476
+ }
17477
+
17474
17478
  :host([content-hidden]) .content {
17475
17479
  ${accessiblyHidden}
17476
17480
  }
@@ -17479,6 +17483,10 @@
17479
17483
  display: contents;
17480
17484
  ${iconColor.cssCustomProperty}: ${buttonLabelFontColor};
17481
17485
  }
17486
+
17487
+ slot[name='end']::slotted(*) {
17488
+ flex-shrink: 0;
17489
+ }
17482
17490
  }
17483
17491
 
17484
17492
  @layer hover {
@@ -17670,8 +17678,8 @@
17670
17678
  }
17671
17679
  `));
17672
17680
 
17673
- const styles$Y = css `
17674
- ${styles$Z}
17681
+ const styles$Z = css `
17682
+ ${styles$_}
17675
17683
  ${buttonAppearanceVariantStyles}
17676
17684
 
17677
17685
  .control {
@@ -17691,7 +17699,7 @@
17691
17699
  }
17692
17700
  `;
17693
17701
 
17694
- const template$G = (context, definition) => html `
17702
+ const template$I = (context, definition) => html `
17695
17703
  <a
17696
17704
  class="control"
17697
17705
  part="control"
@@ -17773,8 +17781,8 @@
17773
17781
  ], AnchorButton.prototype, "disabled", void 0);
17774
17782
  const nimbleAnchorButton = AnchorButton.compose({
17775
17783
  baseName: 'anchor-button',
17776
- template: template$G,
17777
- styles: styles$Y,
17784
+ template: template$I,
17785
+ styles: styles$Z,
17778
17786
  shadowOptions: {
17779
17787
  delegatesFocus: true
17780
17788
  }
@@ -17782,7 +17790,7 @@
17782
17790
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleAnchorButton());
17783
17791
  const anchorButtonTag = 'nimble-anchor-button';
17784
17792
 
17785
- const styles$X = css `
17793
+ const styles$Y = css `
17786
17794
  ${display('grid')}
17787
17795
 
17788
17796
  :host {
@@ -17865,7 +17873,7 @@
17865
17873
  }
17866
17874
  `;
17867
17875
 
17868
- const template$F = (context, definition) => html `
17876
+ const template$H = (context, definition) => html `
17869
17877
  <template
17870
17878
  role="menuitem"
17871
17879
  class="${x => (typeof x.startColumnCount === 'number'
@@ -17966,8 +17974,8 @@
17966
17974
  // FoundationAnchor already applies the StartEnd mixin, so we don't need to do it here.
17967
17975
  const nimbleAnchorMenuItem = AnchorMenuItem.compose({
17968
17976
  baseName: 'anchor-menu-item',
17969
- template: template$F,
17970
- styles: styles$X,
17977
+ template: template$H,
17978
+ styles: styles$Y,
17971
17979
  shadowOptions: {
17972
17980
  delegatesFocus: true
17973
17981
  }
@@ -17977,7 +17985,7 @@
17977
17985
  .register(nimbleAnchorMenuItem());
17978
17986
  const anchorMenuItemTag = 'nimble-anchor-menu-item';
17979
17987
 
17980
- const styles$W = css `
17988
+ const styles$X = css `
17981
17989
  ${display('inline-flex')}
17982
17990
 
17983
17991
  :host {
@@ -18093,7 +18101,7 @@
18093
18101
  }
18094
18102
  `;
18095
18103
 
18096
- const template$E = (context, definition) => html `
18104
+ const template$G = (context, definition) => html `
18097
18105
  <template slot="anchortab" role="tab" aria-disabled="${x => x.disabled}">
18098
18106
  <a
18099
18107
  download="${x => x.download}"
@@ -18145,15 +18153,15 @@
18145
18153
  // FoundationAnchor already applies the StartEnd mixin, so we don't need to do it here.
18146
18154
  const nimbleAnchorTab = AnchorTab.compose({
18147
18155
  baseName: 'anchor-tab',
18148
- template: template$E,
18149
- styles: styles$W,
18156
+ template: template$G,
18157
+ styles: styles$X,
18150
18158
  shadowOptions: {
18151
18159
  delegatesFocus: true
18152
18160
  }
18153
18161
  });
18154
18162
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleAnchorTab());
18155
18163
 
18156
- const styles$V = css `
18164
+ const styles$W = css `
18157
18165
  ${display('grid')}
18158
18166
 
18159
18167
  :host {
@@ -18174,7 +18182,7 @@
18174
18182
  }
18175
18183
  `;
18176
18184
 
18177
- const template$D = (context, definition) => html `
18185
+ const template$F = (context, definition) => html `
18178
18186
  ${startSlotTemplate(context, definition)}
18179
18187
  <div ${ref('tablist')} class="tablist" part="tablist" role="tablist">
18180
18188
  <slot name="anchortab" ${slotted('tabs')}></slot>
@@ -18380,8 +18388,8 @@
18380
18388
  applyMixins(AnchorTabs, StartEnd);
18381
18389
  const nimbleAnchorTabs = AnchorTabs.compose({
18382
18390
  baseName: 'anchor-tabs',
18383
- template: template$D,
18384
- styles: styles$V,
18391
+ template: template$F,
18392
+ styles: styles$W,
18385
18393
  shadowOptions: {
18386
18394
  delegatesFocus: false
18387
18395
  }
@@ -18397,7 +18405,7 @@
18397
18405
  -webkit-user-select: none;
18398
18406
  `;
18399
18407
 
18400
- const styles$U = css `
18408
+ const styles$V = css `
18401
18409
  ${display('block')}
18402
18410
 
18403
18411
  :host {
@@ -18502,7 +18510,7 @@
18502
18510
  }
18503
18511
  `;
18504
18512
 
18505
- const template$C = (context, definition) => html `
18513
+ const template$E = (context, definition) => html `
18506
18514
  <template
18507
18515
  role="treeitem"
18508
18516
  slot="${x => (x.isNestedItem() ? 'item' : null)}"
@@ -18639,8 +18647,8 @@
18639
18647
  // FoundationAnchor already applies the StartEnd mixin, so we don't need to do it here.
18640
18648
  const nimbleAnchorTreeItem = AnchorTreeItem.compose({
18641
18649
  baseName: 'anchor-tree-item',
18642
- template: template$C,
18643
- styles: styles$U,
18650
+ template: template$E,
18651
+ styles: styles$V,
18644
18652
  shadowOptions: {
18645
18653
  delegatesFocus: true
18646
18654
  }
@@ -18656,7 +18664,7 @@
18656
18664
  zIndex1000: '1000'
18657
18665
  };
18658
18666
 
18659
- const styles$T = css `
18667
+ const styles$U = css `
18660
18668
  ${display('block')}
18661
18669
 
18662
18670
  :host {
@@ -18687,7 +18695,7 @@
18687
18695
  baseName: 'anchored-region',
18688
18696
  baseClass: AnchoredRegion$1,
18689
18697
  template: anchoredRegionTemplate,
18690
- styles: styles$T
18698
+ styles: styles$U
18691
18699
  });
18692
18700
  DesignSystem.getOrCreate()
18693
18701
  .withPrefix('nimble')
@@ -18767,7 +18775,7 @@
18767
18775
  */
18768
18776
  const themeBehavior = (theme, styles) => new ThemeStyleSheetBehavior(theme, styles);
18769
18777
 
18770
- const styles$S = css `
18778
+ const styles$T = css `
18771
18779
  ${display('flex')}
18772
18780
 
18773
18781
  :host {
@@ -18882,12 +18890,12 @@
18882
18890
  }
18883
18891
  `));
18884
18892
 
18885
- const styles$R = css `
18886
- ${styles$Z}
18893
+ const styles$S = css `
18894
+ ${styles$_}
18887
18895
  ${buttonAppearanceVariantStyles}
18888
18896
  `;
18889
18897
 
18890
- const template$B = (context, definition) => html `
18898
+ const template$D = (context, definition) => html `
18891
18899
  <button
18892
18900
  class="control"
18893
18901
  part="control"
@@ -18978,8 +18986,8 @@
18978
18986
  const nimbleButton = Button.compose({
18979
18987
  baseName: 'button',
18980
18988
  baseClass: Button$1,
18981
- template: template$B,
18982
- styles: styles$R,
18989
+ template: template$D,
18990
+ styles: styles$S,
18983
18991
  shadowOptions: {
18984
18992
  delegatesFocus: true
18985
18993
  }
@@ -19750,13 +19758,13 @@
19750
19758
  };
19751
19759
 
19752
19760
  // Avoiding any whitespace in the template because this is an inline element
19753
- const template$A = html `<div
19761
+ const template$C = html `<div
19754
19762
  class="icon"
19755
19763
  aria-hidden="true"
19756
19764
  :innerHTML=${x => x.icon.data}
19757
19765
  ></div>`;
19758
19766
 
19759
- const styles$Q = css `
19767
+ const styles$R = css `
19760
19768
  ${display('inline-flex')}
19761
19769
 
19762
19770
  :host {
@@ -19809,8 +19817,8 @@
19809
19817
  const registerIcon = (baseName, iconClass) => {
19810
19818
  const composedIcon = iconClass.compose({
19811
19819
  baseName,
19812
- template: template$A,
19813
- styles: styles$Q
19820
+ template: template$C,
19821
+ styles: styles$R
19814
19822
  });
19815
19823
  DesignSystem.getOrCreate().withPrefix('nimble').register(composedIcon());
19816
19824
  };
@@ -19928,7 +19936,7 @@
19928
19936
  }).withDefault(coreLabelDefaults.loadingLabel);
19929
19937
 
19930
19938
  // prettier-ignore
19931
- const template$z = html `
19939
+ const template$B = html `
19932
19940
  <${themeProviderTag} theme="${Theme.color}">
19933
19941
  <div class="container"
19934
19942
  role="status"
@@ -20046,12 +20054,12 @@
20046
20054
  applyMixins(Banner, ARIAGlobalStatesAndProperties);
20047
20055
  const nimbleBanner = Banner.compose({
20048
20056
  baseName: 'banner',
20049
- template: template$z,
20050
- styles: styles$S
20057
+ template: template$B,
20058
+ styles: styles$T
20051
20059
  });
20052
20060
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleBanner());
20053
20061
 
20054
- const styles$P = css `
20062
+ const styles$Q = css `
20055
20063
  ${display('inline-block')}
20056
20064
 
20057
20065
  .list {
@@ -20081,11 +20089,11 @@
20081
20089
  baseName: 'breadcrumb',
20082
20090
  baseClass: Breadcrumb$1,
20083
20091
  template: breadcrumbTemplate,
20084
- styles: styles$P
20092
+ styles: styles$Q
20085
20093
  });
20086
20094
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleBreadcrumb());
20087
20095
 
20088
- const styles$O = css `
20096
+ const styles$P = css `
20089
20097
  @layer base, hover, focusVisible, active, disabled;
20090
20098
 
20091
20099
  @layer base {
@@ -20182,14 +20190,14 @@ so this becomes the fallback color for the slot */ ''}
20182
20190
  baseName: 'breadcrumb-item',
20183
20191
  baseClass: BreadcrumbItem$1,
20184
20192
  template: breadcrumbItemTemplate,
20185
- styles: styles$O,
20193
+ styles: styles$P,
20186
20194
  separator: forwardSlash16X16.data
20187
20195
  });
20188
20196
  DesignSystem.getOrCreate()
20189
20197
  .withPrefix('nimble')
20190
20198
  .register(nimbleBreadcrumbItem());
20191
20199
 
20192
- const styles$N = css `
20200
+ const styles$O = css `
20193
20201
  ${display('flex')}
20194
20202
 
20195
20203
  :host {
@@ -20213,7 +20221,7 @@ so this becomes the fallback color for the slot */ ''}
20213
20221
  }
20214
20222
  `;
20215
20223
 
20216
- const template$y = html `
20224
+ const template$A = html `
20217
20225
  <section aria-labelledby="title-slot">
20218
20226
  <span id="title-slot"><slot name="title"></slot></span>
20219
20227
  <slot></slot>
@@ -20228,12 +20236,12 @@ so this becomes the fallback color for the slot */ ''}
20228
20236
  const nimbleCard = Card.compose({
20229
20237
  baseName: 'card',
20230
20238
  baseClass: Card$1,
20231
- template: template$y,
20232
- styles: styles$N
20239
+ template: template$A,
20240
+ styles: styles$O
20233
20241
  });
20234
20242
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleCard());
20235
20243
 
20236
- const styles$M = css `
20244
+ const styles$N = css `
20237
20245
  ${display('inline-flex')}
20238
20246
 
20239
20247
  :host {
@@ -20391,14 +20399,14 @@ so this becomes the fallback color for the slot */ ''}
20391
20399
  const nimbleCardButton = CardButton.compose({
20392
20400
  baseName: 'card-button',
20393
20401
  template: buttonTemplate,
20394
- styles: styles$M,
20402
+ styles: styles$N,
20395
20403
  shadowOptions: {
20396
20404
  delegatesFocus: true
20397
20405
  }
20398
20406
  });
20399
20407
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleCardButton());
20400
20408
 
20401
- const styles$L = css `
20409
+ const styles$M = css `
20402
20410
  ${display('inline-flex')}
20403
20411
 
20404
20412
  :host {
@@ -20506,7 +20514,7 @@ so this becomes the fallback color for the slot */ ''}
20506
20514
  }
20507
20515
  `;
20508
20516
 
20509
- const template$x = (_context, definition) => html `
20517
+ const template$z = (_context, definition) => html `
20510
20518
  <template
20511
20519
  role="checkbox"
20512
20520
  aria-checked="${x => x.checked}"
@@ -20555,16 +20563,16 @@ so this becomes the fallback color for the slot */ ''}
20555
20563
  const nimbleCheckbox = Checkbox.compose({
20556
20564
  baseName: 'checkbox',
20557
20565
  baseClass: Checkbox$1,
20558
- template: template$x,
20559
- styles: styles$L,
20566
+ template: template$z,
20567
+ styles: styles$M,
20560
20568
  checkedIndicator: checkLarge16X16.data,
20561
20569
  indeterminateIndicator: minus16X16.data
20562
20570
  });
20563
20571
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleCheckbox());
20564
20572
  const checkboxTag = 'nimble-checkbox';
20565
20573
 
20566
- const styles$K = css `
20567
- ${styles$Z}
20574
+ const styles$L = css `
20575
+ ${styles$_}
20568
20576
  ${buttonAppearanceVariantStyles}
20569
20577
 
20570
20578
  @layer checked {
@@ -20613,7 +20621,7 @@ so this becomes the fallback color for the slot */ ''}
20613
20621
 
20614
20622
  /* eslint-disable @typescript-eslint/indent */
20615
20623
  // prettier-ignore
20616
- const template$w = (context, definition) => html `
20624
+ const template$y = (context, definition) => html `
20617
20625
  <div
20618
20626
  role="button"
20619
20627
  part="control"
@@ -20709,8 +20717,8 @@ so this becomes the fallback color for the slot */ ''}
20709
20717
  applyMixins(ToggleButton, StartEnd, DelegatesARIAButton);
20710
20718
  const nimbleToggleButton = ToggleButton.compose({
20711
20719
  baseName: 'toggle-button',
20712
- template: template$w,
20713
- styles: styles$K,
20720
+ template: template$y,
20721
+ styles: styles$L,
20714
20722
  shadowOptions: {
20715
20723
  delegatesFocus: true
20716
20724
  }
@@ -20748,7 +20756,7 @@ so this becomes the fallback color for the slot */ ''}
20748
20756
  };
20749
20757
 
20750
20758
  // prettier-ignore
20751
- const styles$J = css `
20759
+ const styles$K = css `
20752
20760
  ${display('inline-flex')}
20753
20761
 
20754
20762
  :host {
@@ -20990,7 +20998,7 @@ so this becomes the fallback color for the slot */ ''}
20990
20998
  }
20991
20999
  `));
20992
21000
 
20993
- const styles$I = css `
21001
+ const styles$J = css `
20994
21002
  .error-icon {
20995
21003
  display: none;
20996
21004
  }
@@ -21038,9 +21046,9 @@ so this becomes the fallback color for the slot */ ''}
21038
21046
  manual: 'manual'
21039
21047
  };
21040
21048
 
21041
- const styles$H = css `
21049
+ const styles$I = css `
21050
+ ${styles$K}
21042
21051
  ${styles$J}
21043
- ${styles$I}
21044
21052
 
21045
21053
  :host {
21046
21054
  --ni-private-hover-bottom-border-width: 2px;
@@ -21176,7 +21184,7 @@ so this becomes the fallback color for the slot */ ''}
21176
21184
  }
21177
21185
 
21178
21186
  // prettier-ignore
21179
- const template$v = (context, definition) => html `
21187
+ const template$x = (context, definition) => html `
21180
21188
  <template
21181
21189
  aria-disabled="${x => x.ariaDisabled}"
21182
21190
  autocomplete="${x => x.autocomplete}"
@@ -21874,8 +21882,8 @@ so this becomes the fallback color for the slot */ ''}
21874
21882
  const nimbleCombobox = Combobox.compose({
21875
21883
  baseName: 'combobox',
21876
21884
  baseClass: FormAssociatedCombobox,
21877
- template: template$v,
21878
- styles: styles$H,
21885
+ template: template$x,
21886
+ styles: styles$I,
21879
21887
  shadowOptions: {
21880
21888
  delegatesFocus: true
21881
21889
  },
@@ -21920,7 +21928,7 @@ so this becomes the fallback color for the slot */ ''}
21920
21928
  */
21921
21929
  const UserDismissed = Symbol('user dismissed');
21922
21930
 
21923
- const styles$G = css `
21931
+ const styles$H = css `
21924
21932
  ${display('grid')}
21925
21933
 
21926
21934
  dialog {
@@ -22026,7 +22034,7 @@ so this becomes the fallback color for the slot */ ''}
22026
22034
  }
22027
22035
  `));
22028
22036
 
22029
- const template$u = html `
22037
+ const template$w = html `
22030
22038
  <template>
22031
22039
  <dialog
22032
22040
  ${ref('dialogElement')}
@@ -22174,13 +22182,13 @@ so this becomes the fallback color for the slot */ ''}
22174
22182
  applyMixins(Dialog, ARIAGlobalStatesAndProperties);
22175
22183
  const nimbleDialog = Dialog.compose({
22176
22184
  baseName: 'dialog',
22177
- template: template$u,
22178
- styles: styles$G,
22185
+ template: template$w,
22186
+ styles: styles$H,
22179
22187
  baseClass: Dialog
22180
22188
  });
22181
22189
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleDialog());
22182
22190
 
22183
- const styles$F = css `
22191
+ const styles$G = css `
22184
22192
  ${display('block')}
22185
22193
 
22186
22194
  :host {
@@ -22332,7 +22340,7 @@ so this becomes the fallback color for the slot */ ''}
22332
22340
  }
22333
22341
  `));
22334
22342
 
22335
- const template$t = html `
22343
+ const template$v = html `
22336
22344
  <dialog
22337
22345
  ${ref('dialog')}
22338
22346
  aria-label="${x => x.ariaLabel}"
@@ -22475,8 +22483,8 @@ so this becomes the fallback color for the slot */ ''}
22475
22483
  applyMixins(Drawer, ARIAGlobalStatesAndProperties);
22476
22484
  const nimbleDrawer = Drawer.compose({
22477
22485
  baseName: 'drawer',
22478
- template: template$t,
22479
- styles: styles$F
22486
+ template: template$v,
22487
+ styles: styles$G
22480
22488
  });
22481
22489
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleDrawer());
22482
22490
 
@@ -24766,7 +24774,7 @@ so this becomes the fallback color for the slot */ ''}
24766
24774
  }
24767
24775
  }
24768
24776
 
24769
- const styles$E = css `
24777
+ const styles$F = css `
24770
24778
  ${display('none')}
24771
24779
  `;
24772
24780
 
@@ -24819,7 +24827,7 @@ so this becomes the fallback color for the slot */ ''}
24819
24827
  ], LabelProviderCore.prototype, "loading", void 0);
24820
24828
  const nimbleLabelProviderCore = LabelProviderCore.compose({
24821
24829
  baseName: 'label-provider-core',
24822
- styles: styles$E
24830
+ styles: styles$F
24823
24831
  });
24824
24832
  DesignSystem.getOrCreate()
24825
24833
  .withPrefix('nimble')
@@ -24986,13 +24994,13 @@ so this becomes the fallback color for the slot */ ''}
24986
24994
  ], LabelProviderTable.prototype, "groupRowPlaceholderEmpty", void 0);
24987
24995
  const nimbleLabelProviderTable = LabelProviderTable.compose({
24988
24996
  baseName: 'label-provider-table',
24989
- styles: styles$E
24997
+ styles: styles$F
24990
24998
  });
24991
24999
  DesignSystem.getOrCreate()
24992
25000
  .withPrefix('nimble')
24993
25001
  .register(nimbleLabelProviderTable());
24994
25002
 
24995
- const styles$D = css `
25003
+ const styles$E = css `
24996
25004
  ${display('flex')}
24997
25005
 
24998
25006
  :host {
@@ -25069,7 +25077,7 @@ so this becomes the fallback color for the slot */ ''}
25069
25077
  * @public
25070
25078
  */
25071
25079
  // prettier-ignore
25072
- const template$s = (context, definition) => html `
25080
+ const template$u = (context, definition) => html `
25073
25081
  <template
25074
25082
  aria-checked="${x => x.ariaChecked}"
25075
25083
  aria-disabled="${x => x.ariaDisabled}"
@@ -25174,13 +25182,13 @@ so this becomes the fallback color for the slot */ ''}
25174
25182
  const nimbleListOption = ListOption.compose({
25175
25183
  baseName: 'list-option',
25176
25184
  baseClass: ListboxOption,
25177
- template: template$s,
25178
- styles: styles$D
25185
+ template: template$u,
25186
+ styles: styles$E
25179
25187
  });
25180
25188
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleListOption());
25181
25189
  const listOptionTag = 'nimble-list-option';
25182
25190
 
25183
- const styles$C = css `
25191
+ const styles$D = css `
25184
25192
  ${display('flex')}
25185
25193
 
25186
25194
  :host {
@@ -25243,7 +25251,7 @@ so this becomes the fallback color for the slot */ ''}
25243
25251
  return n instanceof ListOption;
25244
25252
  };
25245
25253
  // prettier-ignore
25246
- const template$r = html `
25254
+ const template$t = html `
25247
25255
  <template
25248
25256
  role="group"
25249
25257
  aria-label="${x => x.labelContent}"
@@ -25389,8 +25397,8 @@ so this becomes the fallback color for the slot */ ''}
25389
25397
  const nimbleListOptionGroup = ListOptionGroup.compose({
25390
25398
  baseName: 'list-option-group',
25391
25399
  baseClass: FoundationElement,
25392
- template: template$r,
25393
- styles: styles$C
25400
+ template: template$t,
25401
+ styles: styles$D
25394
25402
  });
25395
25403
  DesignSystem.getOrCreate()
25396
25404
  .withPrefix('nimble')
@@ -25405,9 +25413,9 @@ so this becomes the fallback color for the slot */ ''}
25405
25413
  attr()
25406
25414
  ], Mapping$1.prototype, "key", void 0);
25407
25415
 
25408
- const template$q = html `<template slot="mapping"></template>`;
25416
+ const template$s = html `<template slot="mapping"></template>`;
25409
25417
 
25410
- const styles$B = css `
25418
+ const styles$C = css `
25411
25419
  ${display('none')}
25412
25420
  `;
25413
25421
 
@@ -25423,8 +25431,8 @@ so this becomes the fallback color for the slot */ ''}
25423
25431
  ], MappingEmpty.prototype, "text", void 0);
25424
25432
  const emptyMapping = MappingEmpty.compose({
25425
25433
  baseName: 'mapping-empty',
25426
- template: template$q,
25427
- styles: styles$B
25434
+ template: template$s,
25435
+ styles: styles$C
25428
25436
  });
25429
25437
  DesignSystem.getOrCreate().withPrefix('nimble').register(emptyMapping());
25430
25438
 
@@ -25494,8 +25502,8 @@ so this becomes the fallback color for the slot */ ''}
25494
25502
  ], MappingIcon.prototype, "resolvedIcon", void 0);
25495
25503
  const iconMapping = MappingIcon.compose({
25496
25504
  baseName: 'mapping-icon',
25497
- template: template$q,
25498
- styles: styles$B
25505
+ template: template$s,
25506
+ styles: styles$C
25499
25507
  });
25500
25508
  DesignSystem.getOrCreate().withPrefix('nimble').register(iconMapping());
25501
25509
 
@@ -25518,8 +25526,8 @@ so this becomes the fallback color for the slot */ ''}
25518
25526
  ], MappingSpinner.prototype, "textHidden", void 0);
25519
25527
  const spinnerMapping = MappingSpinner.compose({
25520
25528
  baseName: 'mapping-spinner',
25521
- template: template$q,
25522
- styles: styles$B
25529
+ template: template$s,
25530
+ styles: styles$C
25523
25531
  });
25524
25532
  DesignSystem.getOrCreate().withPrefix('nimble').register(spinnerMapping());
25525
25533
 
@@ -25535,12 +25543,12 @@ so this becomes the fallback color for the slot */ ''}
25535
25543
  ], MappingText.prototype, "text", void 0);
25536
25544
  const textMapping = MappingText.compose({
25537
25545
  baseName: 'mapping-text',
25538
- template: template$q,
25539
- styles: styles$B
25546
+ template: template$s,
25547
+ styles: styles$C
25540
25548
  });
25541
25549
  DesignSystem.getOrCreate().withPrefix('nimble').register(textMapping());
25542
25550
 
25543
- const styles$A = css `
25551
+ const styles$B = css `
25544
25552
  ${display('grid')}
25545
25553
 
25546
25554
  :host {
@@ -25612,7 +25620,7 @@ so this becomes the fallback color for the slot */ ''}
25612
25620
  baseName: 'menu',
25613
25621
  baseClass: Menu$1,
25614
25622
  template: menuTemplate,
25615
- styles: styles$A
25623
+ styles: styles$B
25616
25624
  });
25617
25625
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleMenu());
25618
25626
 
@@ -25629,7 +25637,7 @@ so this becomes the fallback color for the slot */ ''}
25629
25637
  auto: 'auto'
25630
25638
  };
25631
25639
 
25632
- const styles$z = css `
25640
+ const styles$A = css `
25633
25641
  ${display('inline-block')}
25634
25642
 
25635
25643
  :host {
@@ -25648,7 +25656,7 @@ so this becomes the fallback color for the slot */ ''}
25648
25656
  `;
25649
25657
 
25650
25658
  // prettier-ignore
25651
- const template$p = html `
25659
+ const template$r = html `
25652
25660
  <template
25653
25661
  ?open="${x => x.open}"
25654
25662
  @focusout="${(x, c) => x.focusoutHandler(c.event)}"
@@ -25898,8 +25906,8 @@ so this becomes the fallback color for the slot */ ''}
25898
25906
  ], MenuButton.prototype, "slottedMenus", void 0);
25899
25907
  const nimbleMenuButton = MenuButton.compose({
25900
25908
  baseName: 'menu-button',
25901
- template: template$p,
25902
- styles: styles$z,
25909
+ template: template$r,
25910
+ styles: styles$A,
25903
25911
  shadowOptions: {
25904
25912
  delegatesFocus: true
25905
25913
  }
@@ -25907,7 +25915,7 @@ so this becomes the fallback color for the slot */ ''}
25907
25915
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleMenuButton());
25908
25916
  const menuButtonTag = 'nimble-menu-button';
25909
25917
 
25910
- const styles$y = css `
25918
+ const styles$z = css `
25911
25919
  ${display('grid')}
25912
25920
 
25913
25921
  :host {
@@ -26004,7 +26012,7 @@ so this becomes the fallback color for the slot */ ''}
26004
26012
  baseName: 'menu-item',
26005
26013
  baseClass: MenuItem$1,
26006
26014
  template: menuItemTemplate,
26007
- styles: styles$y,
26015
+ styles: styles$z,
26008
26016
  expandCollapseGlyph: arrowExpanderRight16X16.data
26009
26017
  });
26010
26018
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleMenuItem());
@@ -26018,9 +26026,9 @@ so this becomes the fallback color for the slot */ ''}
26018
26026
  block: 'block'
26019
26027
  };
26020
26028
 
26021
- const styles$x = css `
26029
+ const styles$y = css `
26022
26030
  ${display('inline-block')}
26023
- ${styles$I}
26031
+ ${styles$J}
26024
26032
 
26025
26033
  :host {
26026
26034
  font: ${bodyFont};
@@ -26233,7 +26241,7 @@ so this becomes the fallback color for the slot */ ''}
26233
26241
  baseName: 'number-field',
26234
26242
  baseClass: NumberField$1,
26235
26243
  template: numberFieldTemplate,
26236
- styles: styles$x,
26244
+ styles: styles$y,
26237
26245
  shadowOptions: {
26238
26246
  delegatesFocus: true
26239
26247
  },
@@ -26276,7 +26284,7 @@ so this becomes the fallback color for the slot */ ''}
26276
26284
  });
26277
26285
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleNumberField());
26278
26286
 
26279
- const styles$w = css `
26287
+ const styles$x = css `
26280
26288
  ${display('inline-flex')}
26281
26289
 
26282
26290
  :host {
@@ -26376,12 +26384,12 @@ so this becomes the fallback color for the slot */ ''}
26376
26384
  baseName: 'radio',
26377
26385
  baseClass: Radio$1,
26378
26386
  template: radioTemplate,
26379
- styles: styles$w,
26387
+ styles: styles$x,
26380
26388
  checkedIndicator: circleFilled16X16.data
26381
26389
  });
26382
26390
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleRadio());
26383
26391
 
26384
- const styles$v = css `
26392
+ const styles$w = css `
26385
26393
  ${display('inline-block')}
26386
26394
 
26387
26395
  .positioning-region {
@@ -26416,7 +26424,7 @@ so this becomes the fallback color for the slot */ ''}
26416
26424
  baseName: 'radio-group',
26417
26425
  baseClass: RadioGroup$1,
26418
26426
  template: radioGroupTemplate,
26419
- styles: styles$v,
26427
+ styles: styles$w,
26420
26428
  shadowOptions: {
26421
26429
  delegatesFocus: true
26422
26430
  }
@@ -44100,7 +44108,7 @@ img.ProseMirror-separator {
44100
44108
  },
44101
44109
  });
44102
44110
 
44103
- const styles$u = css `
44111
+ const styles$v = css `
44104
44112
  ${display('inline')}
44105
44113
 
44106
44114
  .positioning-region {
@@ -44137,7 +44145,7 @@ img.ProseMirror-separator {
44137
44145
  baseName: 'toolbar',
44138
44146
  baseClass: Toolbar$1,
44139
44147
  template: toolbarTemplate,
44140
- styles: styles$u,
44148
+ styles: styles$v,
44141
44149
  shadowOptions: {
44142
44150
  delegatesFocus: true
44143
44151
  }
@@ -44169,8 +44177,8 @@ img.ProseMirror-separator {
44169
44177
  cssCustomPropertyName: null
44170
44178
  }).withDefault(richTextLabelDefaults.richTextToggleNumberedListLabel);
44171
44179
 
44172
- const styles$t = css `
44173
- ${styles$J}
44180
+ const styles$u = css `
44181
+ ${styles$K}
44174
44182
 
44175
44183
  :host {
44176
44184
  height: auto;
@@ -44189,7 +44197,7 @@ img.ProseMirror-separator {
44189
44197
  `;
44190
44198
 
44191
44199
  // prettier-ignore
44192
- const template$o = html `
44200
+ const template$q = html `
44193
44201
  <template>
44194
44202
  <${anchoredRegionTag}
44195
44203
  ${ref('region')}
@@ -44461,8 +44469,8 @@ img.ProseMirror-separator {
44461
44469
  ], RichTextMentionListbox.prototype, "anchorElement", void 0);
44462
44470
  const nimbleRichTextMentionListbox = RichTextMentionListbox.compose({
44463
44471
  baseName: 'rich-text-mention-listbox',
44464
- template: template$o,
44465
- styles: styles$t
44472
+ template: template$q,
44473
+ styles: styles$u
44466
44474
  });
44467
44475
  DesignSystem.getOrCreate()
44468
44476
  .withPrefix('nimble')
@@ -44470,7 +44478,7 @@ img.ProseMirror-separator {
44470
44478
  const richTextMentionListboxTag = 'nimble-rich-text-mention-listbox';
44471
44479
 
44472
44480
  // prettier-ignore
44473
- const template$n = html `
44481
+ const template$p = html `
44474
44482
  <template
44475
44483
  ${children$1({ property: 'childItems', filter: elements() })}
44476
44484
  @focusout="${x => x.focusoutHandler()}"
@@ -44572,9 +44580,9 @@ img.ProseMirror-separator {
44572
44580
  </template>
44573
44581
  `;
44574
44582
 
44575
- const styles$s = css `
44583
+ const styles$t = css `
44576
44584
  ${display('inline-flex')}
44577
- ${styles$I}
44585
+ ${styles$J}
44578
44586
 
44579
44587
  :host {
44580
44588
  font: ${bodyFont};
@@ -59302,8 +59310,8 @@ img.ProseMirror-separator {
59302
59310
  applyMixins(RichTextEditor, ARIAGlobalStatesAndProperties);
59303
59311
  const nimbleRichTextEditor = RichTextEditor.compose({
59304
59312
  baseName: 'rich-text-editor',
59305
- template: template$n,
59306
- styles: styles$s,
59313
+ template: template$p,
59314
+ styles: styles$t,
59307
59315
  shadowOptions: {
59308
59316
  delegatesFocus: true
59309
59317
  }
@@ -59312,13 +59320,13 @@ img.ProseMirror-separator {
59312
59320
  .withPrefix('nimble')
59313
59321
  .register(nimbleRichTextEditor());
59314
59322
 
59315
- const template$m = html `
59323
+ const template$o = html `
59316
59324
  <template ${children$1({ property: 'childItems', filter: elements() })}>
59317
59325
  <div ${ref('viewer')} class="viewer"></div>
59318
59326
  </template>
59319
59327
  `;
59320
59328
 
59321
- const styles$r = css `
59329
+ const styles$s = css `
59322
59330
  ${display('flex')}
59323
59331
 
59324
59332
  :host {
@@ -59429,16 +59437,16 @@ img.ProseMirror-separator {
59429
59437
  ], RichTextViewer.prototype, "markdown", void 0);
59430
59438
  const nimbleRichTextViewer = RichTextViewer.compose({
59431
59439
  baseName: 'rich-text-viewer',
59432
- template: template$m,
59433
- styles: styles$r
59440
+ template: template$o,
59441
+ styles: styles$s
59434
59442
  });
59435
59443
  DesignSystem.getOrCreate()
59436
59444
  .withPrefix('nimble')
59437
59445
  .register(nimbleRichTextViewer());
59438
59446
 
59439
- const styles$q = css `
59447
+ const styles$r = css `
59448
+ ${styles$K}
59440
59449
  ${styles$J}
59441
- ${styles$I}
59442
59450
 
59443
59451
  ${
59444
59452
  /* We are using flex `order` to define the visual ordering of the selected value,
@@ -59608,7 +59616,7 @@ img.ProseMirror-separator {
59608
59616
  }
59609
59617
  `));
59610
59618
 
59611
- const styles$p = css `
59619
+ const styles$q = css `
59612
59620
  ${display('inline-grid')}
59613
59621
 
59614
59622
  :host {
@@ -59778,7 +59786,7 @@ img.ProseMirror-separator {
59778
59786
 
59779
59787
  /* eslint-disable @typescript-eslint/indent */
59780
59788
  // prettier-ignore
59781
- const template$l = html `
59789
+ const template$n = html `
59782
59790
  <template role="progressbar">
59783
59791
  ${''
59784
59792
  /**
@@ -59825,8 +59833,8 @@ img.ProseMirror-separator {
59825
59833
  ], Spinner.prototype, "appearance", void 0);
59826
59834
  const nimbleSpinner = Spinner.compose({
59827
59835
  baseName: 'spinner',
59828
- template: template$l,
59829
- styles: styles$p
59836
+ template: template$n,
59837
+ styles: styles$q
59830
59838
  });
59831
59839
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleSpinner());
59832
59840
  const spinnerTag = 'nimble-spinner';
@@ -59839,7 +59847,7 @@ img.ProseMirror-separator {
59839
59847
  };
59840
59848
  /* eslint-disable @typescript-eslint/indent */
59841
59849
  // prettier-ignore
59842
- const template$k = (context, definition) => html `
59850
+ const template$m = (context, definition) => html `
59843
59851
  <template
59844
59852
  class="${x => [
59845
59853
  x.collapsible && 'collapsible',
@@ -60977,8 +60985,8 @@ img.ProseMirror-separator {
60977
60985
  const nimbleSelect = Select.compose({
60978
60986
  baseName: 'select',
60979
60987
  baseClass: Select$2,
60980
- template: template$k,
60981
- styles: styles$q,
60988
+ template: template$m,
60989
+ styles: styles$r,
60982
60990
  indicator: arrowExpanderDown16X16.data,
60983
60991
  end: html `
60984
60992
  <${iconExclamationMarkTag}
@@ -60991,7 +60999,7 @@ img.ProseMirror-separator {
60991
60999
  applyMixins(Select, StartEnd, DelegatesARIASelect);
60992
61000
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleSelect());
60993
61001
 
60994
- const styles$o = css `
61002
+ const styles$p = css `
60995
61003
  ${display('inline-flex')}
60996
61004
 
60997
61005
  :host {
@@ -61153,7 +61161,7 @@ img.ProseMirror-separator {
61153
61161
  `));
61154
61162
 
61155
61163
  // prettier-ignore
61156
- const template$j = html `
61164
+ const template$l = html `
61157
61165
  <template
61158
61166
  role="switch"
61159
61167
  aria-checked="${x => x.checked}"
@@ -61197,12 +61205,12 @@ img.ProseMirror-separator {
61197
61205
  const nimbleSwitch = Switch.compose({
61198
61206
  baseClass: Switch$1,
61199
61207
  baseName: 'switch',
61200
- template: template$j,
61201
- styles: styles$o
61208
+ template: template$l,
61209
+ styles: styles$p
61202
61210
  });
61203
61211
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleSwitch());
61204
61212
 
61205
- const styles$n = css `
61213
+ const styles$o = css `
61206
61214
  ${display('inline-flex')}
61207
61215
 
61208
61216
  :host {
@@ -61312,11 +61320,11 @@ img.ProseMirror-separator {
61312
61320
  baseName: 'tab',
61313
61321
  baseClass: Tab$1,
61314
61322
  template: tabTemplate,
61315
- styles: styles$n
61323
+ styles: styles$o
61316
61324
  });
61317
61325
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTab());
61318
61326
 
61319
- const styles$m = css `
61327
+ const styles$n = css `
61320
61328
  ${display('block')}
61321
61329
 
61322
61330
  :host {
@@ -61335,7 +61343,7 @@ img.ProseMirror-separator {
61335
61343
  baseName: 'tab-panel',
61336
61344
  baseClass: TabPanel$1,
61337
61345
  template: tabPanelTemplate,
61338
- styles: styles$m
61346
+ styles: styles$n
61339
61347
  });
61340
61348
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTabPanel());
61341
61349
 
@@ -64553,7 +64561,6 @@ img.ProseMirror-separator {
64553
64561
  partiallySelected: 'partially-selected'
64554
64562
  };
64555
64563
  /**
64556
- * @internal
64557
64564
  * Table keyboard focus types
64558
64565
  */
64559
64566
  const TableFocusType = {
@@ -64698,6 +64705,13 @@ img.ProseMirror-separator {
64698
64705
  observable
64699
64706
  ], TableCellView.prototype, "recordId", void 0);
64700
64707
 
64708
+ function uniquifySlotNameForColumnId(uniqueColumnId, slotName) {
64709
+ return `${uniqueColumnId}-${slotName}`;
64710
+ }
64711
+ function uniquifySlotNameForColumn(column, slotName) {
64712
+ return uniquifySlotNameForColumnId(column.columnInternals.uniqueId, slotName);
64713
+ }
64714
+
64701
64715
  const validateCellViewTemplate = (cellViewTag) => {
64702
64716
  let instance;
64703
64717
  try {
@@ -64710,6 +64724,7 @@ img.ProseMirror-separator {
64710
64724
  throw new Error(`Cell view tag name (${cellViewTag}) must evaluate to an element extending TableCellView`);
64711
64725
  }
64712
64726
  };
64727
+ // prettier-ignore
64713
64728
  const createCellViewTemplate = (cellViewTag) => {
64714
64729
  validateCellViewTemplate(cellViewTag);
64715
64730
  return html `
@@ -64720,6 +64735,12 @@ img.ProseMirror-separator {
64720
64735
  :recordId="${y => y.recordId}"
64721
64736
  class="cell-view"
64722
64737
  >
64738
+ ${repeat(y => y.column?.columnInternals.slotNames || [], html `
64739
+ <slot
64740
+ name="${(x, c) => uniquifySlotNameForColumn(c.parent.column, x)}"
64741
+ slot="${x => x}"
64742
+ ></slot>
64743
+ `)}
64723
64744
  </${cellViewTag}>
64724
64745
  `;
64725
64746
  };
@@ -64746,7 +64767,7 @@ img.ProseMirror-separator {
64746
64767
  /**
64747
64768
  * Whether or not this column can be used to group rows by
64748
64769
  */
64749
- this.groupingDisabled = false;
64770
+ this.groupingDisabled = true;
64750
64771
  /**
64751
64772
  * Used by column plugins to size a column proportionally to the available
64752
64773
  * width of a row. Sets currentFractionalWidth when changed.
@@ -64773,7 +64794,7 @@ img.ProseMirror-separator {
64773
64794
  /**
64774
64795
  * Whether or not this column can be sorted
64775
64796
  */
64776
- this.sortingDisabled = false;
64797
+ this.sortingDisabled = true;
64777
64798
  /**
64778
64799
  * @internal Do not write to this value directly. It is used by the Table in order to store
64779
64800
  * the resolved value of the sortDirection after programmatic or interactive updates.
@@ -64781,8 +64802,11 @@ img.ProseMirror-separator {
64781
64802
  this.currentSortDirection = TableColumnSortDirection.none;
64782
64803
  this.cellRecordFieldNames = options.cellRecordFieldNames;
64783
64804
  this.cellViewTemplate = createCellViewTemplate(options.cellViewTag);
64784
- this.groupHeaderViewTemplate = createGroupHeaderViewTemplate(options.groupHeaderViewTag);
64805
+ if (options.groupHeaderViewTag) {
64806
+ this.groupHeaderViewTemplate = createGroupHeaderViewTemplate(options.groupHeaderViewTag);
64807
+ }
64785
64808
  this.delegatedEvents = options.delegatedEvents;
64809
+ this.slotNames = options.slotNames ?? [];
64786
64810
  this.sortOperation = options.sortOperation ?? TableColumnSortOperation.basic;
64787
64811
  this.validator = options.validator;
64788
64812
  }
@@ -65028,7 +65052,7 @@ img.ProseMirror-separator {
65028
65052
  }
65029
65053
  }
65030
65054
 
65031
- const styles$l = css `
65055
+ const styles$m = css `
65032
65056
  ${display('flex')}
65033
65057
 
65034
65058
  :host {
@@ -65232,7 +65256,7 @@ focus outline in that case.
65232
65256
  }
65233
65257
  `));
65234
65258
 
65235
- const styles$k = css `
65259
+ const styles$l = css `
65236
65260
  ${display('flex')}
65237
65261
 
65238
65262
  :host {
@@ -65259,7 +65283,7 @@ focus outline in that case.
65259
65283
  `;
65260
65284
 
65261
65285
  // prettier-ignore
65262
- const template$i = html `
65286
+ const template$k = html `
65263
65287
  <template role="columnheader"
65264
65288
  aria-sort="${x => x.ariaSort}"
65265
65289
  ${'' /* Prevent header double clicks from selecting text */}
@@ -65340,13 +65364,13 @@ focus outline in that case.
65340
65364
  ], TableHeader.prototype, "isGrouped", void 0);
65341
65365
  const nimbleTableHeader = TableHeader.compose({
65342
65366
  baseName: 'table-header',
65343
- template: template$i,
65344
- styles: styles$k
65367
+ template: template$k,
65368
+ styles: styles$l
65345
65369
  });
65346
65370
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTableHeader());
65347
65371
  const tableHeaderTag = 'nimble-table-header';
65348
65372
 
65349
- const styles$j = css `
65373
+ const styles$k = css `
65350
65374
  :host .animating {
65351
65375
  transition: ${mediumDelay} ease-in;
65352
65376
  }
@@ -65371,9 +65395,9 @@ focus outline in that case.
65371
65395
  }
65372
65396
  `;
65373
65397
 
65374
- const styles$i = css `
65398
+ const styles$j = css `
65375
65399
  ${display('flex')}
65376
- ${styles$j}
65400
+ ${styles$k}
65377
65401
 
65378
65402
  :host {
65379
65403
  width: fit-content;
@@ -65537,7 +65561,7 @@ focus outline in that case.
65537
65561
  }
65538
65562
  `));
65539
65563
 
65540
- const styles$h = css `
65564
+ const styles$i = css `
65541
65565
  ${display('flex')}
65542
65566
 
65543
65567
  :host {
@@ -65583,7 +65607,7 @@ focus outline in that case.
65583
65607
  `;
65584
65608
 
65585
65609
  // prettier-ignore
65586
- const template$h = html `
65610
+ const template$j = html `
65587
65611
  <template role="cell" style="--ni-private-table-cell-nesting-level: ${x => x.nestingLevel}"
65588
65612
  @focusin="${x => x.onCellFocusIn()}"
65589
65613
  @blur="${x => x.onCellBlur()}"
@@ -65680,14 +65704,14 @@ focus outline in that case.
65680
65704
  ], TableCell.prototype, "nestingLevel", void 0);
65681
65705
  const nimbleTableCell = TableCell.compose({
65682
65706
  baseName: 'table-cell',
65683
- template: template$h,
65684
- styles: styles$h
65707
+ template: template$j,
65708
+ styles: styles$i
65685
65709
  });
65686
65710
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTableCell());
65687
65711
  const tableCellTag = 'nimble-table-cell';
65688
65712
 
65689
65713
  // prettier-ignore
65690
- const template$g = html `
65714
+ const template$i = html `
65691
65715
  <template
65692
65716
  role="row"
65693
65717
  aria-selected=${x => x.ariaSelected}
@@ -65754,6 +65778,7 @@ focus outline in that case.
65754
65778
  action-menu-label="${x => x.actionMenuLabel}"
65755
65779
  @cell-action-menu-beforetoggle="${(x, c) => c.parent.onCellActionMenuBeforeToggle(c.event, x)}"
65756
65780
  @cell-action-menu-toggle="${(x, c) => c.parent.onCellActionMenuToggle(c.event, x)}"
65781
+ @cell-view-slots-request="${(x, c) => c.parent.onCellViewSlotsRequest(x, c.event)}"
65757
65782
  :nestingLevel="${(_, c) => c.parent.cellIndentLevels[c.index]}"
65758
65783
  >
65759
65784
 
@@ -65763,6 +65788,13 @@ focus outline in that case.
65763
65788
  slot="cellActionMenu"
65764
65789
  ></slot>
65765
65790
  `)}
65791
+
65792
+ ${repeat(x => x.columnInternals.slotNames, html `
65793
+ <slot
65794
+ name="${(x, c) => uniquifySlotNameForColumn(c.parent, x)}"
65795
+ slot="${(x, c) => uniquifySlotNameForColumn(c.parent, x)}"
65796
+ ></slot>
65797
+ `)}
65766
65798
  </${tableCellTag}>
65767
65799
  `)}
65768
65800
  `, { recycle: false, positioning: true })}
@@ -65909,6 +65941,20 @@ focus outline in that case.
65909
65941
  this.animationClass = 'animating';
65910
65942
  this.expandIcon?.addEventListener('transitionend', this.removeAnimatingClass);
65911
65943
  }
65944
+ onCellViewSlotsRequest(column, event) {
65945
+ event.stopImmediatePropagation();
65946
+ if (typeof this.recordId !== 'string') {
65947
+ // The recordId is expected to be defined on any row that can be interacted with, but if
65948
+ // it isn't defined, nothing can be done with the request to slot content into the row.
65949
+ return;
65950
+ }
65951
+ const eventDetails = {
65952
+ recordId: this.recordId,
65953
+ columnInternalId: column.columnInternals.uniqueId,
65954
+ slots: event.detail.slots
65955
+ };
65956
+ this.$emit('row-slots-request', eventDetails);
65957
+ }
65912
65958
  emitActionMenuToggleEvent(eventType, menuButtonEventDetail, column) {
65913
65959
  const detail = {
65914
65960
  newState: menuButtonEventDetail.newState,
@@ -66052,15 +66098,15 @@ focus outline in that case.
66052
66098
  ], TableRow.prototype, "ariaSelected", null);
66053
66099
  const nimbleTableRow = TableRow.compose({
66054
66100
  baseName: 'table-row',
66055
- template: template$g,
66056
- styles: styles$i
66101
+ template: template$i,
66102
+ styles: styles$j
66057
66103
  });
66058
66104
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTableRow());
66059
66105
  const tableRowTag = 'nimble-table-row';
66060
66106
 
66061
- const styles$g = css `
66107
+ const styles$h = css `
66062
66108
  ${display('grid')}
66063
- ${styles$j}
66109
+ ${styles$k}
66064
66110
 
66065
66111
  :host {
66066
66112
  align-items: center;
@@ -66150,7 +66196,7 @@ focus outline in that case.
66150
66196
 
66151
66197
  /* eslint-disable @typescript-eslint/indent */
66152
66198
  // prettier-ignore
66153
- const template$f = html `
66199
+ const template$h = html `
66154
66200
  <template
66155
66201
  role="row"
66156
66202
  @click=${x => x.onGroupExpandToggle()}
@@ -66300,14 +66346,14 @@ focus outline in that case.
66300
66346
  ], TableGroupRow.prototype, "animationClass", void 0);
66301
66347
  const nimbleTableGroupRow = TableGroupRow.compose({
66302
66348
  baseName: 'table-group-row',
66303
- template: template$f,
66304
- styles: styles$g
66349
+ template: template$h,
66350
+ styles: styles$h
66305
66351
  });
66306
66352
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTableGroupRow());
66307
66353
  const tableGroupRowTag = 'nimble-table-group-row';
66308
66354
 
66309
66355
  // prettier-ignore
66310
- const template$e = html `
66356
+ const template$g = html `
66311
66357
  <template
66312
66358
  role="treegrid"
66313
66359
  ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}
@@ -66457,6 +66503,7 @@ focus outline in that case.
66457
66503
  @row-selection-toggle="${(x, c) => c.parent.onRowSelectionToggle(x.index, c.event)}"
66458
66504
  @row-action-menu-beforetoggle="${(x, c) => c.parent.onRowActionMenuBeforeToggle(x.index, c.event)}"
66459
66505
  @row-action-menu-toggle="${(_, c) => c.parent.onRowActionMenuToggle(c.event)}"
66506
+ @row-slots-request="${(_, c) => c.parent.onRowSlotsRequest(c.event)}"
66460
66507
  @row-expand-toggle="${(x, c) => c.parent.handleRowExpanded(x.index)}"
66461
66508
  >
66462
66509
  ${when((x, c) => c.parent.openActionMenuRecordId === c.parent.tableData[x.index]?.id, html `
@@ -66467,6 +66514,12 @@ focus outline in that case.
66467
66514
  </slot>
66468
66515
  `)}
66469
66516
  `)}
66517
+ ${repeat((x, c) => (c.parent.tableData[x.index]?.slots || []), html `
66518
+ <slot
66519
+ name="${x => x.name}"
66520
+ slot="${x => x.slot}"
66521
+ ></slot>
66522
+ `)}
66470
66523
  </${tableRowTag}>
66471
66524
  `)}
66472
66525
  `)}
@@ -69455,6 +69508,9 @@ focus outline in that case.
69455
69508
  // the selection checkbox 'checked' value should be ingored.
69456
69509
  // https://github.com/microsoft/fast/issues/5750
69457
69510
  this.ignoreSelectionChangeEvents = false;
69511
+ // Map from the external slot name to the record ID of the row that should have the slot
69512
+ // and the unique slot name that the slot should be slotted into.
69513
+ this.columnRequestedSlots = new Map();
69458
69514
  this.onViewPortScroll = (event) => {
69459
69515
  this.scrollX = event.target.scrollLeft;
69460
69516
  };
@@ -69647,6 +69703,18 @@ focus outline in that case.
69647
69703
  void this.handleRowActionMenuToggleEvent(event);
69648
69704
  }
69649
69705
  /** @internal */
69706
+ onRowSlotsRequest(event) {
69707
+ event.stopImmediatePropagation();
69708
+ for (const slotMetadata of event.detail.slots) {
69709
+ const uniqueSlot = uniquifySlotNameForColumnId(event.detail.columnInternalId, slotMetadata.slot);
69710
+ this.columnRequestedSlots.set(slotMetadata.name, {
69711
+ recordId: event.detail.recordId,
69712
+ uniqueSlot
69713
+ });
69714
+ }
69715
+ this.refreshRows();
69716
+ }
69717
+ /** @internal */
69650
69718
  handleCollapseAllRows() {
69651
69719
  this.expansionManager.collapseAll();
69652
69720
  }
@@ -69841,12 +69909,19 @@ focus outline in that case.
69841
69909
  this.observeColumns();
69842
69910
  this.tableUpdateTracker.trackColumnInstancesChanged();
69843
69911
  }
69912
+ removeActionMenuSlotsFromColumnRequestedSlots() {
69913
+ for (const actionMenuSlot of this.actionMenuSlots) {
69914
+ this.columnRequestedSlots.delete(actionMenuSlot);
69915
+ }
69916
+ this.refreshRows();
69917
+ }
69844
69918
  async handleActionMenuBeforeToggleEvent(rowIndex, event) {
69845
69919
  const selectionChanged = this.selectionManager.handleActionMenuOpening(this.tableData[rowIndex]);
69846
69920
  if (selectionChanged) {
69847
69921
  await this.emitSelectionChangeEvent();
69848
69922
  }
69849
69923
  this.openActionMenuRecordId = event.detail.recordIds[0];
69924
+ this.removeActionMenuSlotsFromColumnRequestedSlots();
69850
69925
  const detail = await this.getActionMenuToggleEventDetail(event);
69851
69926
  this.$emit('action-menu-beforetoggle', detail);
69852
69927
  }
@@ -70038,6 +70113,7 @@ focus outline in that case.
70038
70113
  this.selectionState = this.getTableSelectionState();
70039
70114
  let hasDataHierarchy = false;
70040
70115
  const rows = this.table.getRowModel().rows;
70116
+ const slotsByRecordId = this.getRequestedSlotsByRecordId();
70041
70117
  this.tableData = rows.map(row => {
70042
70118
  const isGroupRow = row.getIsGrouped();
70043
70119
  const hasParentRow = isGroupRow ? false : row.getParentRow();
@@ -70063,7 +70139,8 @@ focus outline in that case.
70063
70139
  immediateChildCount: row.subRows.length,
70064
70140
  groupColumn: this.getGroupRowColumn(row),
70065
70141
  resolvedRowIndex: row.index,
70066
- isLoadingChildren: this.expansionManager.isLoadingChildren(row.id)
70142
+ isLoadingChildren: this.expansionManager.isLoadingChildren(row.id),
70143
+ slots: slotsByRecordId[row.id] ?? []
70067
70144
  };
70068
70145
  hasDataHierarchy = hasDataHierarchy || isParent;
70069
70146
  return rowState;
@@ -70072,6 +70149,20 @@ focus outline in that case.
70072
70149
  || this.getColumnsParticipatingInGrouping().length > 0;
70073
70150
  this.virtualizer.dataChanged();
70074
70151
  }
70152
+ getRequestedSlotsByRecordId() {
70153
+ const slotsByRecordId = {};
70154
+ for (const [slotName, { recordId, uniqueSlot }] of this
70155
+ .columnRequestedSlots) {
70156
+ if (!Object.prototype.hasOwnProperty.call(slotsByRecordId, recordId)) {
70157
+ slotsByRecordId[recordId] = [];
70158
+ }
70159
+ slotsByRecordId[recordId].push({
70160
+ name: slotName,
70161
+ slot: uniqueSlot
70162
+ });
70163
+ }
70164
+ return slotsByRecordId;
70165
+ }
70075
70166
  getTableSelectionState() {
70076
70167
  if (this.table.getIsAllRowsSelected()) {
70077
70168
  return TableRowSelectionState.selected;
@@ -70250,12 +70341,12 @@ focus outline in that case.
70250
70341
  ], Table$1.prototype, "documentShiftKeyDown", void 0);
70251
70342
  const nimbleTable = Table$1.compose({
70252
70343
  baseName: 'table',
70253
- template: template$e,
70254
- styles: styles$l
70344
+ template: template$g,
70345
+ styles: styles$m
70255
70346
  });
70256
70347
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTable());
70257
70348
 
70258
- const styles$f = css `
70349
+ const styles$g = css `
70259
70350
  ${display('contents')}
70260
70351
 
70261
70352
  .header-content {
@@ -70268,7 +70359,7 @@ focus outline in that case.
70268
70359
  // Avoiding a wrapping <template> and be careful about starting and ending whitspace
70269
70360
  // so the template can be composed into other column header templates
70270
70361
  // prettier-ignore
70271
- const template$d = html `<span
70362
+ const template$f = html `<span
70272
70363
  ${overflow('hasOverflow')}
70273
70364
  class="header-content"
70274
70365
  title=${x => (x.hasOverflow && x.headerTextContent ? x.headerTextContent : null)}
@@ -70343,7 +70434,7 @@ focus outline in that case.
70343
70434
  return ColumnWithPlaceholder;
70344
70435
  }
70345
70436
 
70346
- const styles$e = css `
70437
+ const styles$f = css `
70347
70438
  ${display('flex')}
70348
70439
 
70349
70440
  :host {
@@ -70376,7 +70467,7 @@ focus outline in that case.
70376
70467
 
70377
70468
  /* eslint-disable @typescript-eslint/indent */
70378
70469
  // prettier-ignore
70379
- const template$c = html `
70470
+ const template$e = html `
70380
70471
  <template
70381
70472
  @click="${(x, c) => {
70382
70473
  if (typeof x.cellRecord?.href === 'string') {
@@ -70471,8 +70562,8 @@ focus outline in that case.
70471
70562
  ], TableColumnAnchorCellView.prototype, "showAnchor", null);
70472
70563
  const anchorCellView = TableColumnAnchorCellView.compose({
70473
70564
  baseName: 'table-column-anchor-cell-view',
70474
- template: template$c,
70475
- styles: styles$e
70565
+ template: template$e,
70566
+ styles: styles$f
70476
70567
  });
70477
70568
  DesignSystem.getOrCreate().withPrefix('nimble').register(anchorCellView());
70478
70569
  const tableColumnAnchorCellViewTag = 'nimble-table-column-anchor-cell-view';
@@ -70549,7 +70640,7 @@ focus outline in that case.
70549
70640
  observable
70550
70641
  ], TableColumnTextGroupHeaderViewBase.prototype, "text", void 0);
70551
70642
 
70552
- const template$b = html `
70643
+ const template$d = html `
70553
70644
  <span
70554
70645
  ${overflow('hasOverflow')}
70555
70646
  title="${x => (x.hasOverflow && x.text ? x.text : null)}"
@@ -70558,7 +70649,7 @@ focus outline in that case.
70558
70649
  </span>
70559
70650
  `;
70560
70651
 
70561
- const styles$d = css `
70652
+ const styles$e = css `
70562
70653
  ${display('flex')}
70563
70654
 
70564
70655
  span {
@@ -70582,8 +70673,8 @@ focus outline in that case.
70582
70673
  }
70583
70674
  const tableColumnTextGroupHeaderView = TableColumnTextGroupHeaderView.compose({
70584
70675
  baseName: 'table-column-text-group-header-view',
70585
- template: template$b,
70586
- styles: styles$d
70676
+ template: template$d,
70677
+ styles: styles$e
70587
70678
  });
70588
70679
  DesignSystem.getOrCreate()
70589
70680
  .withPrefix('nimble')
@@ -70751,8 +70842,8 @@ focus outline in that case.
70751
70842
  ], TableColumnAnchor.prototype, "download", void 0);
70752
70843
  const nimbleTableColumnAnchor = TableColumnAnchor.compose({
70753
70844
  baseName: 'table-column-anchor',
70754
- template: template$d,
70755
- styles: styles$f
70845
+ template: template$f,
70846
+ styles: styles$g
70756
70847
  });
70757
70848
  DesignSystem.getOrCreate()
70758
70849
  .withPrefix('nimble')
@@ -70804,8 +70895,8 @@ focus outline in that case.
70804
70895
  }
70805
70896
  const tableColumnDateTextGroupHeaderView = TableColumnDateTextGroupHeaderView.compose({
70806
70897
  baseName: 'table-column-date-text-group-header-view',
70807
- template: template$b,
70808
- styles: styles$d
70898
+ template: template$d,
70899
+ styles: styles$e
70809
70900
  });
70810
70901
  DesignSystem.getOrCreate()
70811
70902
  .withPrefix('nimble')
@@ -70821,7 +70912,7 @@ focus outline in that case.
70821
70912
  };
70822
70913
 
70823
70914
  // prettier-ignore
70824
- const template$a = html `
70915
+ const template$c = html `
70825
70916
  <template
70826
70917
  class="
70827
70918
  ${x => (x.alignment === TextCellViewBaseAlignment.right ? 'right-align' : '')}
@@ -70837,7 +70928,7 @@ focus outline in that case.
70837
70928
  </template>
70838
70929
  `;
70839
70930
 
70840
- const styles$c = css `
70931
+ const styles$d = css `
70841
70932
  ${display('flex')}
70842
70933
 
70843
70934
  :host {
@@ -70939,8 +71030,8 @@ focus outline in that case.
70939
71030
  }
70940
71031
  const dateTextCellView = TableColumnDateTextCellView.compose({
70941
71032
  baseName: 'table-column-date-text-cell-view',
70942
- template: template$a,
70943
- styles: styles$c
71033
+ template: template$c,
71034
+ styles: styles$d
70944
71035
  });
70945
71036
  DesignSystem.getOrCreate().withPrefix('nimble').register(dateTextCellView());
70946
71037
  const tableColumnDateTextCellViewTag = 'nimble-table-column-date-text-cell-view';
@@ -71200,8 +71291,8 @@ focus outline in that case.
71200
71291
  ], TableColumnDateText.prototype, "customHourCycle", void 0);
71201
71292
  const nimbleTableColumnDateText = TableColumnDateText.compose({
71202
71293
  baseName: 'table-column-date-text',
71203
- template: template$d,
71204
- styles: styles$f
71294
+ template: template$f,
71295
+ styles: styles$g
71205
71296
  });
71206
71297
  DesignSystem.getOrCreate()
71207
71298
  .withPrefix('nimble')
@@ -71217,8 +71308,8 @@ focus outline in that case.
71217
71308
  }
71218
71309
  const durationTextCellView = TableColumnDurationTextCellView.compose({
71219
71310
  baseName: 'table-column-duration-text-cell-view',
71220
- template: template$a,
71221
- styles: styles$c
71311
+ template: template$c,
71312
+ styles: styles$d
71222
71313
  });
71223
71314
  DesignSystem.getOrCreate()
71224
71315
  .withPrefix('nimble')
@@ -71319,8 +71410,8 @@ focus outline in that case.
71319
71410
  }
71320
71411
  const tableColumnDurationTextGroupHeaderView = TableColumnDurationTextGroupHeaderView.compose({
71321
71412
  baseName: 'table-column-duration-text-group-header-view',
71322
- template: template$b,
71323
- styles: styles$d
71413
+ template: template$d,
71414
+ styles: styles$e
71324
71415
  });
71325
71416
  DesignSystem.getOrCreate()
71326
71417
  .withPrefix('nimble')
@@ -71372,8 +71463,8 @@ focus outline in that case.
71372
71463
  }
71373
71464
  const nimbleTableColumnDurationText = TableColumnDurationText.compose({
71374
71465
  baseName: 'table-column-duration-text',
71375
- template: template$d,
71376
- styles: styles$f
71466
+ template: template$f,
71467
+ styles: styles$g
71377
71468
  });
71378
71469
  DesignSystem.getOrCreate()
71379
71470
  .withPrefix('nimble')
@@ -71481,15 +71572,15 @@ focus outline in that case.
71481
71572
  attr({ attribute: 'key-type' })
71482
71573
  ], TableColumnEnumBase.prototype, "keyType", void 0);
71483
71574
 
71484
- const styles$b = css `
71485
- ${styles$f}
71575
+ const styles$c = css `
71576
+ ${styles$g}
71486
71577
 
71487
71578
  slot[name='mapping'] {
71488
71579
  display: none;
71489
71580
  }
71490
71581
  `;
71491
71582
 
71492
- const template$9 = html `${template$d}<slot ${slotted('mappings')} name="mapping"></slot>`;
71583
+ const template$b = html `${template$f}<slot ${slotted('mappings')} name="mapping"></slot>`;
71493
71584
 
71494
71585
  const enumBaseValidityFlagNames = [
71495
71586
  'invalidMappingKeyValueForType',
@@ -71575,7 +71666,7 @@ focus outline in that case.
71575
71666
  }
71576
71667
  }
71577
71668
 
71578
- const styles$a = css `
71669
+ const styles$b = css `
71579
71670
  ${display('inline-flex')}
71580
71671
 
71581
71672
  :host {
@@ -71600,7 +71691,7 @@ focus outline in that case.
71600
71691
  `;
71601
71692
 
71602
71693
  // prettier-ignore
71603
- const template$8 = html `
71694
+ const template$a = html `
71604
71695
  ${when(x => x.visualizationTemplate, html `
71605
71696
  <span class="reserve-icon-size">
71606
71697
  ${x => x.visualizationTemplate}
@@ -71749,15 +71840,15 @@ focus outline in that case.
71749
71840
  ], TableColumnMappingGroupHeaderView.prototype, "visualizationTemplate", void 0);
71750
71841
  const mappingGroupHeaderView = TableColumnMappingGroupHeaderView.compose({
71751
71842
  baseName: 'table-column-mapping-group-header-view',
71752
- template: template$8,
71753
- styles: styles$a
71843
+ template: template$a,
71844
+ styles: styles$b
71754
71845
  });
71755
71846
  DesignSystem.getOrCreate()
71756
71847
  .withPrefix('nimble')
71757
71848
  .register(mappingGroupHeaderView());
71758
71849
  const tableColumnMappingGroupHeaderViewTag = 'nimble-table-column-mapping-group-header-view';
71759
71850
 
71760
- const styles$9 = css `
71851
+ const styles$a = css `
71761
71852
  ${display('inline-flex')}
71762
71853
 
71763
71854
  :host {
@@ -71782,7 +71873,7 @@ focus outline in that case.
71782
71873
  `;
71783
71874
 
71784
71875
  // prettier-ignore
71785
- const template$7 = html `
71876
+ const template$9 = html `
71786
71877
  ${when(x => x.visualizationTemplate, html `
71787
71878
  <span class="reserve-icon-size">
71788
71879
  ${x => x.visualizationTemplate}
@@ -71869,8 +71960,8 @@ focus outline in that case.
71869
71960
  ], TableColumnMappingCellView.prototype, "hasOverflow", void 0);
71870
71961
  const mappingCellView = TableColumnMappingCellView.compose({
71871
71962
  baseName: 'table-column-mapping-cell-view',
71872
- template: template$7,
71873
- styles: styles$9
71963
+ template: template$9,
71964
+ styles: styles$a
71874
71965
  });
71875
71966
  DesignSystem.getOrCreate().withPrefix('nimble').register(mappingCellView());
71876
71967
  const tableColumnMappingCellViewTag = 'nimble-table-column-mapping-cell-view';
@@ -71954,13 +72045,181 @@ focus outline in that case.
71954
72045
  ], TableColumnMapping.prototype, "widthMode", void 0);
71955
72046
  const nimbleTableColumnMapping = TableColumnMapping.compose({
71956
72047
  baseName: 'table-column-mapping',
71957
- template: template$9,
71958
- styles: styles$b
72048
+ template: template$b,
72049
+ styles: styles$c
71959
72050
  });
71960
72051
  DesignSystem.getOrCreate()
71961
72052
  .withPrefix('nimble')
71962
72053
  .register(nimbleTableColumnMapping());
71963
72054
 
72055
+ const template$8 = html `
72056
+ <template @delegated-event="${(x, c) => x.onDelegatedEvent(c.event)}"
72057
+ >${template$f}</template
72058
+ >
72059
+ `;
72060
+
72061
+ /** @internal */
72062
+ const cellViewMenuSlotName = 'menu-button-menu';
72063
+
72064
+ // prettier-ignore
72065
+ const template$7 = html `
72066
+ ${when(x => x.showMenuButton, html `
72067
+ <${menuButtonTag}
72068
+ ${ref('menuButton')}
72069
+ appearance="${ButtonAppearance.ghost}"
72070
+ @beforetoggle="${(x, c) => x.onMenuButtonBeforeToggle(c.event)}"
72071
+ @mouseover="${x => x.onMenuButtonMouseOver()}"
72072
+ @mouseout="${x => x.onMenuButtonMouseOut()}"
72073
+ @click="${(x, c) => x.onMenuButtonClick(c.event)}"
72074
+ title=${x => (x.hasOverflow ? x.cellRecord.value : null)}
72075
+ >
72076
+ <span ${ref('valueSpan')} class="value-label">${x => x.cellRecord.value}</span>
72077
+ <${iconArrowExpanderDownTag} slot="end"></${iconArrowExpanderDownTag}>
72078
+
72079
+ <slot name="${cellViewMenuSlotName}" slot="menu"></slot>
72080
+ </${menuButtonTag}>
72081
+ `)}
72082
+ `;
72083
+
72084
+ const styles$9 = css `
72085
+ :host {
72086
+ align-self: center;
72087
+ width: 100%;
72088
+ }
72089
+
72090
+ nimble-menu-button {
72091
+ height: ${controlSlimHeight};
72092
+ width: 100%;
72093
+ }
72094
+
72095
+ .value-label {
72096
+ margin-right: auto;
72097
+ overflow: hidden;
72098
+ text-overflow: ellipsis;
72099
+ white-space: nowrap;
72100
+ }
72101
+ `;
72102
+
72103
+ /**
72104
+ * The cell view base class for displaying a string field as a menu button.
72105
+ */
72106
+ class TableColumnMenuButtonCellView extends TableCellView {
72107
+ constructor() {
72108
+ super(...arguments);
72109
+ /** @internal */
72110
+ this.hasOverflow = false;
72111
+ }
72112
+ /** @internal */
72113
+ get showMenuButton() {
72114
+ return !!this.cellRecord?.value;
72115
+ }
72116
+ get tabbableChildren() {
72117
+ if (this.showMenuButton) {
72118
+ return [this.menuButton];
72119
+ }
72120
+ return [];
72121
+ }
72122
+ /** @internal */
72123
+ onMenuButtonBeforeToggle(event) {
72124
+ const configuredSlotName = this.columnConfig?.menuSlot;
72125
+ if (configuredSlotName && event.detail.newState) {
72126
+ const eventDetail = {
72127
+ slots: [
72128
+ { name: configuredSlotName, slot: cellViewMenuSlotName }
72129
+ ]
72130
+ };
72131
+ this.$emit('cell-view-slots-request', eventDetail);
72132
+ }
72133
+ return true;
72134
+ }
72135
+ /** @internal */
72136
+ onMenuButtonMouseOver() {
72137
+ if (this.valueSpan) {
72138
+ this.hasOverflow = this.valueSpan.offsetWidth < this.valueSpan.scrollWidth;
72139
+ }
72140
+ }
72141
+ /** @internal */
72142
+ onMenuButtonMouseOut() {
72143
+ this.hasOverflow = false;
72144
+ }
72145
+ /** @internal */
72146
+ onMenuButtonClick(e) {
72147
+ // Stop propagation of the click event to prevent clicking the menu button
72148
+ // from affecting row selection.
72149
+ e.stopPropagation();
72150
+ }
72151
+ }
72152
+ __decorate$1([
72153
+ observable
72154
+ ], TableColumnMenuButtonCellView.prototype, "hasOverflow", void 0);
72155
+ __decorate$1([
72156
+ volatile
72157
+ ], TableColumnMenuButtonCellView.prototype, "showMenuButton", null);
72158
+ const menuButtonCellView = TableColumnMenuButtonCellView.compose({
72159
+ baseName: 'table-column-menu-button-cell-view',
72160
+ template: template$7,
72161
+ styles: styles$9
72162
+ });
72163
+ DesignSystem.getOrCreate().withPrefix('nimble').register(menuButtonCellView());
72164
+ const tableColumnMenuButtonCellViewTag = 'nimble-table-column-menu-button-cell-view';
72165
+
72166
+ /**
72167
+ * The table column for displaying string fields as the content within a menu button.
72168
+ */
72169
+ class TableColumnMenuButton extends mixinFractionalWidthColumnAPI((TableColumn)) {
72170
+ /** @internal */
72171
+ onDelegatedEvent(e) {
72172
+ e.stopImmediatePropagation();
72173
+ const event = e;
72174
+ const originalEvent = event.detail.originalEvent;
72175
+ if (originalEvent.type === 'beforetoggle'
72176
+ || originalEvent.type === 'toggle') {
72177
+ const newEventName = `menu-button-column-${originalEvent.type}`;
72178
+ const originalToggleEvent = originalEvent;
72179
+ const detail = {
72180
+ ...originalToggleEvent.detail,
72181
+ recordId: event.detail.recordId
72182
+ };
72183
+ this.$emit(newEventName, detail);
72184
+ }
72185
+ }
72186
+ getColumnInternalsOptions() {
72187
+ return {
72188
+ cellRecordFieldNames: ['value'],
72189
+ cellViewTag: tableColumnMenuButtonCellViewTag,
72190
+ delegatedEvents: ['beforetoggle', 'toggle'],
72191
+ slotNames: [cellViewMenuSlotName],
72192
+ validator: new ColumnValidator([])
72193
+ };
72194
+ }
72195
+ fieldNameChanged() {
72196
+ this.columnInternals.dataRecordFieldNames = [this.fieldName];
72197
+ this.columnInternals.operandDataRecordFieldName = this.fieldName;
72198
+ }
72199
+ menuSlotChanged() {
72200
+ this.updateColumnConfig();
72201
+ }
72202
+ updateColumnConfig() {
72203
+ this.columnInternals.columnConfig = {
72204
+ menuSlot: this.menuSlot
72205
+ };
72206
+ }
72207
+ }
72208
+ __decorate$1([
72209
+ attr({ attribute: 'field-name' })
72210
+ ], TableColumnMenuButton.prototype, "fieldName", void 0);
72211
+ __decorate$1([
72212
+ attr({ attribute: 'menu-slot' })
72213
+ ], TableColumnMenuButton.prototype, "menuSlot", void 0);
72214
+ const nimbleTableColumnMenuButton = TableColumnMenuButton.compose({
72215
+ baseName: 'table-column-menu-button',
72216
+ template: template$8,
72217
+ styles: styles$g
72218
+ });
72219
+ DesignSystem.getOrCreate()
72220
+ .withPrefix('nimble')
72221
+ .register(nimbleTableColumnMenuButton());
72222
+
71964
72223
  // Avoiding a wrapping <template> and be careful about starting and ending whitespace
71965
72224
  // so the template can be composed into other column header templates
71966
72225
  // prettier-ignore
@@ -71983,8 +72242,8 @@ focus outline in that case.
71983
72242
  }
71984
72243
  const tableColumnNumberTextGroupHeaderView = TableColumnNumberTextGroupHeaderView.compose({
71985
72244
  baseName: 'table-column-number-text-group-header-view',
71986
- template: template$b,
71987
- styles: styles$d
72245
+ template: template$d,
72246
+ styles: styles$e
71988
72247
  });
71989
72248
  DesignSystem.getOrCreate()
71990
72249
  .withPrefix('nimble')
@@ -72005,8 +72264,8 @@ focus outline in that case.
72005
72264
  }
72006
72265
  const numberTextCellView = TableColumnNumberTextCellView.compose({
72007
72266
  baseName: 'table-column-number-text-cell-view',
72008
- template: template$a,
72009
- styles: styles$c
72267
+ template: template$c,
72268
+ styles: styles$d
72010
72269
  });
72011
72270
  DesignSystem.getOrCreate().withPrefix('nimble').register(numberTextCellView());
72012
72271
  const tableColumnNumberTextCellViewTag = 'nimble-table-column-number-text-cell-view';
@@ -72547,7 +72806,7 @@ focus outline in that case.
72547
72806
  const nimbleTableColumnNumberText = TableColumnNumberText.compose({
72548
72807
  baseName: 'table-column-number-text',
72549
72808
  template: template$6,
72550
- styles: styles$f
72809
+ styles: styles$g
72551
72810
  });
72552
72811
  DesignSystem.getOrCreate()
72553
72812
  .withPrefix('nimble')
@@ -72565,8 +72824,8 @@ focus outline in that case.
72565
72824
  }
72566
72825
  const textCellView = TableColumnTextCellView.compose({
72567
72826
  baseName: 'table-column-text-cell-view',
72568
- template: template$a,
72569
- styles: styles$c
72827
+ template: template$c,
72828
+ styles: styles$d
72570
72829
  });
72571
72830
  DesignSystem.getOrCreate().withPrefix('nimble').register(textCellView());
72572
72831
  const tableColumnTextCellViewTag = 'nimble-table-column-text-cell-view';
@@ -72593,8 +72852,8 @@ focus outline in that case.
72593
72852
  }
72594
72853
  const nimbleTableColumnText = TableColumnText.compose({
72595
72854
  baseName: 'table-column-text',
72596
- template: template$d,
72597
- styles: styles$f
72855
+ template: template$f,
72856
+ styles: styles$g
72598
72857
  });
72599
72858
  DesignSystem.getOrCreate()
72600
72859
  .withPrefix('nimble')
@@ -72691,7 +72950,7 @@ focus outline in that case.
72691
72950
 
72692
72951
  const styles$6 = css `
72693
72952
  ${display('inline-flex')}
72694
- ${styles$I}
72953
+ ${styles$J}
72695
72954
 
72696
72955
  :host {
72697
72956
  font: ${bodyFont};
@@ -73036,7 +73295,7 @@ focus outline in that case.
73036
73295
 
73037
73296
  const styles$5 = css `
73038
73297
  ${display('inline-block')}
73039
- ${styles$I}
73298
+ ${styles$J}
73040
73299
 
73041
73300
  :host {
73042
73301
  font: ${bodyFont};