@ni/nimble-components 29.7.8 → 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 (57) hide show
  1. package/dist/all-components-bundle.js +506 -236
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +1871 -1785
  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/select/index.js +20 -9
  14. package/dist/esm/select/index.js.map +1 -1
  15. package/dist/esm/table/components/row/index.d.ts +2 -1
  16. package/dist/esm/table/components/row/index.js +14 -0
  17. package/dist/esm/table/components/row/index.js.map +1 -1
  18. package/dist/esm/table/components/row/template.js +9 -0
  19. package/dist/esm/table/components/row/template.js.map +1 -1
  20. package/dist/esm/table/index.d.ts +6 -1
  21. package/dist/esm/table/index.js +40 -1
  22. package/dist/esm/table/index.js.map +1 -1
  23. package/dist/esm/table/models/utilities.d.ts +3 -0
  24. package/dist/esm/table/models/utilities.js +7 -0
  25. package/dist/esm/table/models/utilities.js.map +1 -0
  26. package/dist/esm/table/template.js +7 -0
  27. package/dist/esm/table/template.js.map +1 -1
  28. package/dist/esm/table/types.d.ts +22 -2
  29. package/dist/esm/table/types.js +0 -1
  30. package/dist/esm/table/types.js.map +1 -1
  31. package/dist/esm/table-column/base/cell-view/template.js +9 -1
  32. package/dist/esm/table-column/base/cell-view/template.js.map +1 -1
  33. package/dist/esm/table-column/base/models/column-internals.d.ts +10 -2
  34. package/dist/esm/table-column/base/models/column-internals.js +6 -3
  35. package/dist/esm/table-column/base/models/column-internals.js.map +1 -1
  36. package/dist/esm/table-column/menu-button/cell-view/index.d.ts +32 -0
  37. package/dist/esm/table-column/menu-button/cell-view/index.js +70 -0
  38. package/dist/esm/table-column/menu-button/cell-view/index.js.map +1 -0
  39. package/dist/esm/table-column/menu-button/cell-view/styles.d.ts +1 -0
  40. package/dist/esm/table-column/menu-button/cell-view/styles.js +21 -0
  41. package/dist/esm/table-column/menu-button/cell-view/styles.js.map +1 -0
  42. package/dist/esm/table-column/menu-button/cell-view/templates.d.ts +2 -0
  43. package/dist/esm/table-column/menu-button/cell-view/templates.js +25 -0
  44. package/dist/esm/table-column/menu-button/cell-view/templates.js.map +1 -0
  45. package/dist/esm/table-column/menu-button/index.d.ts +42 -0
  46. package/dist/esm/table-column/menu-button/index.js +68 -0
  47. package/dist/esm/table-column/menu-button/index.js.map +1 -0
  48. package/dist/esm/table-column/menu-button/template.d.ts +2 -0
  49. package/dist/esm/table-column/menu-button/template.js +8 -0
  50. package/dist/esm/table-column/menu-button/template.js.map +1 -0
  51. package/dist/esm/table-column/menu-button/testing/table-column-menu-button.pageobject.d.ts +11 -0
  52. package/dist/esm/table-column/menu-button/testing/table-column-menu-button.pageobject.js +18 -0
  53. package/dist/esm/table-column/menu-button/testing/table-column-menu-button.pageobject.js.map +1 -0
  54. package/dist/esm/table-column/menu-button/types.d.ts +10 -0
  55. package/dist/esm/table-column/menu-button/types.js +3 -0
  56. package/dist/esm/table-column/menu-button/types.js.map +1 -0
  57. package/package.json +1 -1
@@ -16333,7 +16333,7 @@
16333
16333
 
16334
16334
  /**
16335
16335
  * Do not edit directly
16336
- * Generated on Mon, 08 Jul 2024 22:30:19 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',
@@ -60074,7 +60082,7 @@ img.ProseMirror-separator {
60074
60082
  }
60075
60083
  newValue = this.firstSelectedOption?.value ?? newValue;
60076
60084
  }
60077
- if (prev !== newValue && !(this.open && this.selectedIndex < 0)) {
60085
+ if (prev !== newValue) {
60078
60086
  this._value = newValue;
60079
60087
  super.valueChanged(prev, newValue);
60080
60088
  Observable.notify(this, 'value');
@@ -60163,12 +60171,12 @@ img.ProseMirror-separator {
60163
60171
  }
60164
60172
  const previousSelectedIndex = this.selectedIndex;
60165
60173
  super.clickHandler(e);
60166
- this.open = this.collapsible && !this.open;
60167
- if (!this.open
60174
+ if (this.open
60168
60175
  && this.selectedIndex !== previousSelectedIndex
60169
60176
  && optionClicked) {
60170
60177
  this.updateValue(true);
60171
60178
  }
60179
+ this.open = this.collapsible && !this.open;
60172
60180
  }
60173
60181
  /**
60174
60182
  * Updates the value when an option's value changes.
@@ -60349,6 +60357,7 @@ img.ProseMirror-separator {
60349
60357
  return true;
60350
60358
  }
60351
60359
  let currentActiveIndex = this.openActiveIndex ?? this.selectedIndex;
60360
+ let commitValueThenClose = false;
60352
60361
  switch (key) {
60353
60362
  case keySpace: {
60354
60363
  // when dropdown is open allow user to enter a space for filter text
@@ -60375,8 +60384,13 @@ img.ProseMirror-separator {
60375
60384
  || this.filteredOptions.every(o => o.disabled)) {
60376
60385
  return false;
60377
60386
  }
60378
- this.open = !this.open;
60379
- if (!this.open) {
60387
+ if (this.open) {
60388
+ commitValueThenClose = true;
60389
+ }
60390
+ else {
60391
+ this.open = true;
60392
+ }
60393
+ if (commitValueThenClose) {
60380
60394
  this.focus();
60381
60395
  }
60382
60396
  break;
@@ -60399,11 +60413,16 @@ img.ProseMirror-separator {
60399
60413
  break;
60400
60414
  }
60401
60415
  }
60402
- if (!this.open && this.selectedIndex !== currentActiveIndex) {
60403
- this.selectedIndex = currentActiveIndex;
60416
+ if (!this.open || commitValueThenClose) {
60417
+ if (this.selectedIndex !== currentActiveIndex) {
60418
+ this.selectedIndex = currentActiveIndex;
60419
+ }
60420
+ if (initialSelectedIndex !== this.selectedIndex) {
60421
+ this.updateValue(true);
60422
+ }
60404
60423
  }
60405
- if (!this.open && initialSelectedIndex !== this.selectedIndex) {
60406
- this.updateValue(true);
60424
+ if (commitValueThenClose) {
60425
+ this.open = false;
60407
60426
  }
60408
60427
  return !(key === keyArrowDown || key === keyArrowUp);
60409
60428
  }
@@ -60966,8 +60985,8 @@ img.ProseMirror-separator {
60966
60985
  const nimbleSelect = Select.compose({
60967
60986
  baseName: 'select',
60968
60987
  baseClass: Select$2,
60969
- template: template$k,
60970
- styles: styles$q,
60988
+ template: template$m,
60989
+ styles: styles$r,
60971
60990
  indicator: arrowExpanderDown16X16.data,
60972
60991
  end: html `
60973
60992
  <${iconExclamationMarkTag}
@@ -60980,7 +60999,7 @@ img.ProseMirror-separator {
60980
60999
  applyMixins(Select, StartEnd, DelegatesARIASelect);
60981
61000
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleSelect());
60982
61001
 
60983
- const styles$o = css `
61002
+ const styles$p = css `
60984
61003
  ${display('inline-flex')}
60985
61004
 
60986
61005
  :host {
@@ -61142,7 +61161,7 @@ img.ProseMirror-separator {
61142
61161
  `));
61143
61162
 
61144
61163
  // prettier-ignore
61145
- const template$j = html `
61164
+ const template$l = html `
61146
61165
  <template
61147
61166
  role="switch"
61148
61167
  aria-checked="${x => x.checked}"
@@ -61186,12 +61205,12 @@ img.ProseMirror-separator {
61186
61205
  const nimbleSwitch = Switch.compose({
61187
61206
  baseClass: Switch$1,
61188
61207
  baseName: 'switch',
61189
- template: template$j,
61190
- styles: styles$o
61208
+ template: template$l,
61209
+ styles: styles$p
61191
61210
  });
61192
61211
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleSwitch());
61193
61212
 
61194
- const styles$n = css `
61213
+ const styles$o = css `
61195
61214
  ${display('inline-flex')}
61196
61215
 
61197
61216
  :host {
@@ -61301,11 +61320,11 @@ img.ProseMirror-separator {
61301
61320
  baseName: 'tab',
61302
61321
  baseClass: Tab$1,
61303
61322
  template: tabTemplate,
61304
- styles: styles$n
61323
+ styles: styles$o
61305
61324
  });
61306
61325
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTab());
61307
61326
 
61308
- const styles$m = css `
61327
+ const styles$n = css `
61309
61328
  ${display('block')}
61310
61329
 
61311
61330
  :host {
@@ -61324,7 +61343,7 @@ img.ProseMirror-separator {
61324
61343
  baseName: 'tab-panel',
61325
61344
  baseClass: TabPanel$1,
61326
61345
  template: tabPanelTemplate,
61327
- styles: styles$m
61346
+ styles: styles$n
61328
61347
  });
61329
61348
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTabPanel());
61330
61349
 
@@ -64542,7 +64561,6 @@ img.ProseMirror-separator {
64542
64561
  partiallySelected: 'partially-selected'
64543
64562
  };
64544
64563
  /**
64545
- * @internal
64546
64564
  * Table keyboard focus types
64547
64565
  */
64548
64566
  const TableFocusType = {
@@ -64687,6 +64705,13 @@ img.ProseMirror-separator {
64687
64705
  observable
64688
64706
  ], TableCellView.prototype, "recordId", void 0);
64689
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
+
64690
64715
  const validateCellViewTemplate = (cellViewTag) => {
64691
64716
  let instance;
64692
64717
  try {
@@ -64699,6 +64724,7 @@ img.ProseMirror-separator {
64699
64724
  throw new Error(`Cell view tag name (${cellViewTag}) must evaluate to an element extending TableCellView`);
64700
64725
  }
64701
64726
  };
64727
+ // prettier-ignore
64702
64728
  const createCellViewTemplate = (cellViewTag) => {
64703
64729
  validateCellViewTemplate(cellViewTag);
64704
64730
  return html `
@@ -64709,6 +64735,12 @@ img.ProseMirror-separator {
64709
64735
  :recordId="${y => y.recordId}"
64710
64736
  class="cell-view"
64711
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
+ `)}
64712
64744
  </${cellViewTag}>
64713
64745
  `;
64714
64746
  };
@@ -64735,7 +64767,7 @@ img.ProseMirror-separator {
64735
64767
  /**
64736
64768
  * Whether or not this column can be used to group rows by
64737
64769
  */
64738
- this.groupingDisabled = false;
64770
+ this.groupingDisabled = true;
64739
64771
  /**
64740
64772
  * Used by column plugins to size a column proportionally to the available
64741
64773
  * width of a row. Sets currentFractionalWidth when changed.
@@ -64762,7 +64794,7 @@ img.ProseMirror-separator {
64762
64794
  /**
64763
64795
  * Whether or not this column can be sorted
64764
64796
  */
64765
- this.sortingDisabled = false;
64797
+ this.sortingDisabled = true;
64766
64798
  /**
64767
64799
  * @internal Do not write to this value directly. It is used by the Table in order to store
64768
64800
  * the resolved value of the sortDirection after programmatic or interactive updates.
@@ -64770,8 +64802,11 @@ img.ProseMirror-separator {
64770
64802
  this.currentSortDirection = TableColumnSortDirection.none;
64771
64803
  this.cellRecordFieldNames = options.cellRecordFieldNames;
64772
64804
  this.cellViewTemplate = createCellViewTemplate(options.cellViewTag);
64773
- this.groupHeaderViewTemplate = createGroupHeaderViewTemplate(options.groupHeaderViewTag);
64805
+ if (options.groupHeaderViewTag) {
64806
+ this.groupHeaderViewTemplate = createGroupHeaderViewTemplate(options.groupHeaderViewTag);
64807
+ }
64774
64808
  this.delegatedEvents = options.delegatedEvents;
64809
+ this.slotNames = options.slotNames ?? [];
64775
64810
  this.sortOperation = options.sortOperation ?? TableColumnSortOperation.basic;
64776
64811
  this.validator = options.validator;
64777
64812
  }
@@ -65017,7 +65052,7 @@ img.ProseMirror-separator {
65017
65052
  }
65018
65053
  }
65019
65054
 
65020
- const styles$l = css `
65055
+ const styles$m = css `
65021
65056
  ${display('flex')}
65022
65057
 
65023
65058
  :host {
@@ -65221,7 +65256,7 @@ focus outline in that case.
65221
65256
  }
65222
65257
  `));
65223
65258
 
65224
- const styles$k = css `
65259
+ const styles$l = css `
65225
65260
  ${display('flex')}
65226
65261
 
65227
65262
  :host {
@@ -65248,7 +65283,7 @@ focus outline in that case.
65248
65283
  `;
65249
65284
 
65250
65285
  // prettier-ignore
65251
- const template$i = html `
65286
+ const template$k = html `
65252
65287
  <template role="columnheader"
65253
65288
  aria-sort="${x => x.ariaSort}"
65254
65289
  ${'' /* Prevent header double clicks from selecting text */}
@@ -65329,13 +65364,13 @@ focus outline in that case.
65329
65364
  ], TableHeader.prototype, "isGrouped", void 0);
65330
65365
  const nimbleTableHeader = TableHeader.compose({
65331
65366
  baseName: 'table-header',
65332
- template: template$i,
65333
- styles: styles$k
65367
+ template: template$k,
65368
+ styles: styles$l
65334
65369
  });
65335
65370
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTableHeader());
65336
65371
  const tableHeaderTag = 'nimble-table-header';
65337
65372
 
65338
- const styles$j = css `
65373
+ const styles$k = css `
65339
65374
  :host .animating {
65340
65375
  transition: ${mediumDelay} ease-in;
65341
65376
  }
@@ -65360,9 +65395,9 @@ focus outline in that case.
65360
65395
  }
65361
65396
  `;
65362
65397
 
65363
- const styles$i = css `
65398
+ const styles$j = css `
65364
65399
  ${display('flex')}
65365
- ${styles$j}
65400
+ ${styles$k}
65366
65401
 
65367
65402
  :host {
65368
65403
  width: fit-content;
@@ -65526,7 +65561,7 @@ focus outline in that case.
65526
65561
  }
65527
65562
  `));
65528
65563
 
65529
- const styles$h = css `
65564
+ const styles$i = css `
65530
65565
  ${display('flex')}
65531
65566
 
65532
65567
  :host {
@@ -65572,7 +65607,7 @@ focus outline in that case.
65572
65607
  `;
65573
65608
 
65574
65609
  // prettier-ignore
65575
- const template$h = html `
65610
+ const template$j = html `
65576
65611
  <template role="cell" style="--ni-private-table-cell-nesting-level: ${x => x.nestingLevel}"
65577
65612
  @focusin="${x => x.onCellFocusIn()}"
65578
65613
  @blur="${x => x.onCellBlur()}"
@@ -65669,14 +65704,14 @@ focus outline in that case.
65669
65704
  ], TableCell.prototype, "nestingLevel", void 0);
65670
65705
  const nimbleTableCell = TableCell.compose({
65671
65706
  baseName: 'table-cell',
65672
- template: template$h,
65673
- styles: styles$h
65707
+ template: template$j,
65708
+ styles: styles$i
65674
65709
  });
65675
65710
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTableCell());
65676
65711
  const tableCellTag = 'nimble-table-cell';
65677
65712
 
65678
65713
  // prettier-ignore
65679
- const template$g = html `
65714
+ const template$i = html `
65680
65715
  <template
65681
65716
  role="row"
65682
65717
  aria-selected=${x => x.ariaSelected}
@@ -65743,6 +65778,7 @@ focus outline in that case.
65743
65778
  action-menu-label="${x => x.actionMenuLabel}"
65744
65779
  @cell-action-menu-beforetoggle="${(x, c) => c.parent.onCellActionMenuBeforeToggle(c.event, x)}"
65745
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)}"
65746
65782
  :nestingLevel="${(_, c) => c.parent.cellIndentLevels[c.index]}"
65747
65783
  >
65748
65784
 
@@ -65752,6 +65788,13 @@ focus outline in that case.
65752
65788
  slot="cellActionMenu"
65753
65789
  ></slot>
65754
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
+ `)}
65755
65798
  </${tableCellTag}>
65756
65799
  `)}
65757
65800
  `, { recycle: false, positioning: true })}
@@ -65898,6 +65941,20 @@ focus outline in that case.
65898
65941
  this.animationClass = 'animating';
65899
65942
  this.expandIcon?.addEventListener('transitionend', this.removeAnimatingClass);
65900
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
+ }
65901
65958
  emitActionMenuToggleEvent(eventType, menuButtonEventDetail, column) {
65902
65959
  const detail = {
65903
65960
  newState: menuButtonEventDetail.newState,
@@ -66041,15 +66098,15 @@ focus outline in that case.
66041
66098
  ], TableRow.prototype, "ariaSelected", null);
66042
66099
  const nimbleTableRow = TableRow.compose({
66043
66100
  baseName: 'table-row',
66044
- template: template$g,
66045
- styles: styles$i
66101
+ template: template$i,
66102
+ styles: styles$j
66046
66103
  });
66047
66104
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTableRow());
66048
66105
  const tableRowTag = 'nimble-table-row';
66049
66106
 
66050
- const styles$g = css `
66107
+ const styles$h = css `
66051
66108
  ${display('grid')}
66052
- ${styles$j}
66109
+ ${styles$k}
66053
66110
 
66054
66111
  :host {
66055
66112
  align-items: center;
@@ -66139,7 +66196,7 @@ focus outline in that case.
66139
66196
 
66140
66197
  /* eslint-disable @typescript-eslint/indent */
66141
66198
  // prettier-ignore
66142
- const template$f = html `
66199
+ const template$h = html `
66143
66200
  <template
66144
66201
  role="row"
66145
66202
  @click=${x => x.onGroupExpandToggle()}
@@ -66289,14 +66346,14 @@ focus outline in that case.
66289
66346
  ], TableGroupRow.prototype, "animationClass", void 0);
66290
66347
  const nimbleTableGroupRow = TableGroupRow.compose({
66291
66348
  baseName: 'table-group-row',
66292
- template: template$f,
66293
- styles: styles$g
66349
+ template: template$h,
66350
+ styles: styles$h
66294
66351
  });
66295
66352
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTableGroupRow());
66296
66353
  const tableGroupRowTag = 'nimble-table-group-row';
66297
66354
 
66298
66355
  // prettier-ignore
66299
- const template$e = html `
66356
+ const template$g = html `
66300
66357
  <template
66301
66358
  role="treegrid"
66302
66359
  ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}
@@ -66446,6 +66503,7 @@ focus outline in that case.
66446
66503
  @row-selection-toggle="${(x, c) => c.parent.onRowSelectionToggle(x.index, c.event)}"
66447
66504
  @row-action-menu-beforetoggle="${(x, c) => c.parent.onRowActionMenuBeforeToggle(x.index, c.event)}"
66448
66505
  @row-action-menu-toggle="${(_, c) => c.parent.onRowActionMenuToggle(c.event)}"
66506
+ @row-slots-request="${(_, c) => c.parent.onRowSlotsRequest(c.event)}"
66449
66507
  @row-expand-toggle="${(x, c) => c.parent.handleRowExpanded(x.index)}"
66450
66508
  >
66451
66509
  ${when((x, c) => c.parent.openActionMenuRecordId === c.parent.tableData[x.index]?.id, html `
@@ -66456,6 +66514,12 @@ focus outline in that case.
66456
66514
  </slot>
66457
66515
  `)}
66458
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
+ `)}
66459
66523
  </${tableRowTag}>
66460
66524
  `)}
66461
66525
  `)}
@@ -69444,6 +69508,9 @@ focus outline in that case.
69444
69508
  // the selection checkbox 'checked' value should be ingored.
69445
69509
  // https://github.com/microsoft/fast/issues/5750
69446
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();
69447
69514
  this.onViewPortScroll = (event) => {
69448
69515
  this.scrollX = event.target.scrollLeft;
69449
69516
  };
@@ -69636,6 +69703,18 @@ focus outline in that case.
69636
69703
  void this.handleRowActionMenuToggleEvent(event);
69637
69704
  }
69638
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 */
69639
69718
  handleCollapseAllRows() {
69640
69719
  this.expansionManager.collapseAll();
69641
69720
  }
@@ -69830,12 +69909,19 @@ focus outline in that case.
69830
69909
  this.observeColumns();
69831
69910
  this.tableUpdateTracker.trackColumnInstancesChanged();
69832
69911
  }
69912
+ removeActionMenuSlotsFromColumnRequestedSlots() {
69913
+ for (const actionMenuSlot of this.actionMenuSlots) {
69914
+ this.columnRequestedSlots.delete(actionMenuSlot);
69915
+ }
69916
+ this.refreshRows();
69917
+ }
69833
69918
  async handleActionMenuBeforeToggleEvent(rowIndex, event) {
69834
69919
  const selectionChanged = this.selectionManager.handleActionMenuOpening(this.tableData[rowIndex]);
69835
69920
  if (selectionChanged) {
69836
69921
  await this.emitSelectionChangeEvent();
69837
69922
  }
69838
69923
  this.openActionMenuRecordId = event.detail.recordIds[0];
69924
+ this.removeActionMenuSlotsFromColumnRequestedSlots();
69839
69925
  const detail = await this.getActionMenuToggleEventDetail(event);
69840
69926
  this.$emit('action-menu-beforetoggle', detail);
69841
69927
  }
@@ -70027,6 +70113,7 @@ focus outline in that case.
70027
70113
  this.selectionState = this.getTableSelectionState();
70028
70114
  let hasDataHierarchy = false;
70029
70115
  const rows = this.table.getRowModel().rows;
70116
+ const slotsByRecordId = this.getRequestedSlotsByRecordId();
70030
70117
  this.tableData = rows.map(row => {
70031
70118
  const isGroupRow = row.getIsGrouped();
70032
70119
  const hasParentRow = isGroupRow ? false : row.getParentRow();
@@ -70052,7 +70139,8 @@ focus outline in that case.
70052
70139
  immediateChildCount: row.subRows.length,
70053
70140
  groupColumn: this.getGroupRowColumn(row),
70054
70141
  resolvedRowIndex: row.index,
70055
- isLoadingChildren: this.expansionManager.isLoadingChildren(row.id)
70142
+ isLoadingChildren: this.expansionManager.isLoadingChildren(row.id),
70143
+ slots: slotsByRecordId[row.id] ?? []
70056
70144
  };
70057
70145
  hasDataHierarchy = hasDataHierarchy || isParent;
70058
70146
  return rowState;
@@ -70061,6 +70149,20 @@ focus outline in that case.
70061
70149
  || this.getColumnsParticipatingInGrouping().length > 0;
70062
70150
  this.virtualizer.dataChanged();
70063
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
+ }
70064
70166
  getTableSelectionState() {
70065
70167
  if (this.table.getIsAllRowsSelected()) {
70066
70168
  return TableRowSelectionState.selected;
@@ -70239,12 +70341,12 @@ focus outline in that case.
70239
70341
  ], Table$1.prototype, "documentShiftKeyDown", void 0);
70240
70342
  const nimbleTable = Table$1.compose({
70241
70343
  baseName: 'table',
70242
- template: template$e,
70243
- styles: styles$l
70344
+ template: template$g,
70345
+ styles: styles$m
70244
70346
  });
70245
70347
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTable());
70246
70348
 
70247
- const styles$f = css `
70349
+ const styles$g = css `
70248
70350
  ${display('contents')}
70249
70351
 
70250
70352
  .header-content {
@@ -70257,7 +70359,7 @@ focus outline in that case.
70257
70359
  // Avoiding a wrapping <template> and be careful about starting and ending whitspace
70258
70360
  // so the template can be composed into other column header templates
70259
70361
  // prettier-ignore
70260
- const template$d = html `<span
70362
+ const template$f = html `<span
70261
70363
  ${overflow('hasOverflow')}
70262
70364
  class="header-content"
70263
70365
  title=${x => (x.hasOverflow && x.headerTextContent ? x.headerTextContent : null)}
@@ -70332,7 +70434,7 @@ focus outline in that case.
70332
70434
  return ColumnWithPlaceholder;
70333
70435
  }
70334
70436
 
70335
- const styles$e = css `
70437
+ const styles$f = css `
70336
70438
  ${display('flex')}
70337
70439
 
70338
70440
  :host {
@@ -70365,7 +70467,7 @@ focus outline in that case.
70365
70467
 
70366
70468
  /* eslint-disable @typescript-eslint/indent */
70367
70469
  // prettier-ignore
70368
- const template$c = html `
70470
+ const template$e = html `
70369
70471
  <template
70370
70472
  @click="${(x, c) => {
70371
70473
  if (typeof x.cellRecord?.href === 'string') {
@@ -70460,8 +70562,8 @@ focus outline in that case.
70460
70562
  ], TableColumnAnchorCellView.prototype, "showAnchor", null);
70461
70563
  const anchorCellView = TableColumnAnchorCellView.compose({
70462
70564
  baseName: 'table-column-anchor-cell-view',
70463
- template: template$c,
70464
- styles: styles$e
70565
+ template: template$e,
70566
+ styles: styles$f
70465
70567
  });
70466
70568
  DesignSystem.getOrCreate().withPrefix('nimble').register(anchorCellView());
70467
70569
  const tableColumnAnchorCellViewTag = 'nimble-table-column-anchor-cell-view';
@@ -70538,7 +70640,7 @@ focus outline in that case.
70538
70640
  observable
70539
70641
  ], TableColumnTextGroupHeaderViewBase.prototype, "text", void 0);
70540
70642
 
70541
- const template$b = html `
70643
+ const template$d = html `
70542
70644
  <span
70543
70645
  ${overflow('hasOverflow')}
70544
70646
  title="${x => (x.hasOverflow && x.text ? x.text : null)}"
@@ -70547,7 +70649,7 @@ focus outline in that case.
70547
70649
  </span>
70548
70650
  `;
70549
70651
 
70550
- const styles$d = css `
70652
+ const styles$e = css `
70551
70653
  ${display('flex')}
70552
70654
 
70553
70655
  span {
@@ -70571,8 +70673,8 @@ focus outline in that case.
70571
70673
  }
70572
70674
  const tableColumnTextGroupHeaderView = TableColumnTextGroupHeaderView.compose({
70573
70675
  baseName: 'table-column-text-group-header-view',
70574
- template: template$b,
70575
- styles: styles$d
70676
+ template: template$d,
70677
+ styles: styles$e
70576
70678
  });
70577
70679
  DesignSystem.getOrCreate()
70578
70680
  .withPrefix('nimble')
@@ -70740,8 +70842,8 @@ focus outline in that case.
70740
70842
  ], TableColumnAnchor.prototype, "download", void 0);
70741
70843
  const nimbleTableColumnAnchor = TableColumnAnchor.compose({
70742
70844
  baseName: 'table-column-anchor',
70743
- template: template$d,
70744
- styles: styles$f
70845
+ template: template$f,
70846
+ styles: styles$g
70745
70847
  });
70746
70848
  DesignSystem.getOrCreate()
70747
70849
  .withPrefix('nimble')
@@ -70793,8 +70895,8 @@ focus outline in that case.
70793
70895
  }
70794
70896
  const tableColumnDateTextGroupHeaderView = TableColumnDateTextGroupHeaderView.compose({
70795
70897
  baseName: 'table-column-date-text-group-header-view',
70796
- template: template$b,
70797
- styles: styles$d
70898
+ template: template$d,
70899
+ styles: styles$e
70798
70900
  });
70799
70901
  DesignSystem.getOrCreate()
70800
70902
  .withPrefix('nimble')
@@ -70810,7 +70912,7 @@ focus outline in that case.
70810
70912
  };
70811
70913
 
70812
70914
  // prettier-ignore
70813
- const template$a = html `
70915
+ const template$c = html `
70814
70916
  <template
70815
70917
  class="
70816
70918
  ${x => (x.alignment === TextCellViewBaseAlignment.right ? 'right-align' : '')}
@@ -70826,7 +70928,7 @@ focus outline in that case.
70826
70928
  </template>
70827
70929
  `;
70828
70930
 
70829
- const styles$c = css `
70931
+ const styles$d = css `
70830
70932
  ${display('flex')}
70831
70933
 
70832
70934
  :host {
@@ -70928,8 +71030,8 @@ focus outline in that case.
70928
71030
  }
70929
71031
  const dateTextCellView = TableColumnDateTextCellView.compose({
70930
71032
  baseName: 'table-column-date-text-cell-view',
70931
- template: template$a,
70932
- styles: styles$c
71033
+ template: template$c,
71034
+ styles: styles$d
70933
71035
  });
70934
71036
  DesignSystem.getOrCreate().withPrefix('nimble').register(dateTextCellView());
70935
71037
  const tableColumnDateTextCellViewTag = 'nimble-table-column-date-text-cell-view';
@@ -71189,8 +71291,8 @@ focus outline in that case.
71189
71291
  ], TableColumnDateText.prototype, "customHourCycle", void 0);
71190
71292
  const nimbleTableColumnDateText = TableColumnDateText.compose({
71191
71293
  baseName: 'table-column-date-text',
71192
- template: template$d,
71193
- styles: styles$f
71294
+ template: template$f,
71295
+ styles: styles$g
71194
71296
  });
71195
71297
  DesignSystem.getOrCreate()
71196
71298
  .withPrefix('nimble')
@@ -71206,8 +71308,8 @@ focus outline in that case.
71206
71308
  }
71207
71309
  const durationTextCellView = TableColumnDurationTextCellView.compose({
71208
71310
  baseName: 'table-column-duration-text-cell-view',
71209
- template: template$a,
71210
- styles: styles$c
71311
+ template: template$c,
71312
+ styles: styles$d
71211
71313
  });
71212
71314
  DesignSystem.getOrCreate()
71213
71315
  .withPrefix('nimble')
@@ -71308,8 +71410,8 @@ focus outline in that case.
71308
71410
  }
71309
71411
  const tableColumnDurationTextGroupHeaderView = TableColumnDurationTextGroupHeaderView.compose({
71310
71412
  baseName: 'table-column-duration-text-group-header-view',
71311
- template: template$b,
71312
- styles: styles$d
71413
+ template: template$d,
71414
+ styles: styles$e
71313
71415
  });
71314
71416
  DesignSystem.getOrCreate()
71315
71417
  .withPrefix('nimble')
@@ -71361,8 +71463,8 @@ focus outline in that case.
71361
71463
  }
71362
71464
  const nimbleTableColumnDurationText = TableColumnDurationText.compose({
71363
71465
  baseName: 'table-column-duration-text',
71364
- template: template$d,
71365
- styles: styles$f
71466
+ template: template$f,
71467
+ styles: styles$g
71366
71468
  });
71367
71469
  DesignSystem.getOrCreate()
71368
71470
  .withPrefix('nimble')
@@ -71470,15 +71572,15 @@ focus outline in that case.
71470
71572
  attr({ attribute: 'key-type' })
71471
71573
  ], TableColumnEnumBase.prototype, "keyType", void 0);
71472
71574
 
71473
- const styles$b = css `
71474
- ${styles$f}
71575
+ const styles$c = css `
71576
+ ${styles$g}
71475
71577
 
71476
71578
  slot[name='mapping'] {
71477
71579
  display: none;
71478
71580
  }
71479
71581
  `;
71480
71582
 
71481
- 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>`;
71482
71584
 
71483
71585
  const enumBaseValidityFlagNames = [
71484
71586
  'invalidMappingKeyValueForType',
@@ -71564,7 +71666,7 @@ focus outline in that case.
71564
71666
  }
71565
71667
  }
71566
71668
 
71567
- const styles$a = css `
71669
+ const styles$b = css `
71568
71670
  ${display('inline-flex')}
71569
71671
 
71570
71672
  :host {
@@ -71589,7 +71691,7 @@ focus outline in that case.
71589
71691
  `;
71590
71692
 
71591
71693
  // prettier-ignore
71592
- const template$8 = html `
71694
+ const template$a = html `
71593
71695
  ${when(x => x.visualizationTemplate, html `
71594
71696
  <span class="reserve-icon-size">
71595
71697
  ${x => x.visualizationTemplate}
@@ -71738,15 +71840,15 @@ focus outline in that case.
71738
71840
  ], TableColumnMappingGroupHeaderView.prototype, "visualizationTemplate", void 0);
71739
71841
  const mappingGroupHeaderView = TableColumnMappingGroupHeaderView.compose({
71740
71842
  baseName: 'table-column-mapping-group-header-view',
71741
- template: template$8,
71742
- styles: styles$a
71843
+ template: template$a,
71844
+ styles: styles$b
71743
71845
  });
71744
71846
  DesignSystem.getOrCreate()
71745
71847
  .withPrefix('nimble')
71746
71848
  .register(mappingGroupHeaderView());
71747
71849
  const tableColumnMappingGroupHeaderViewTag = 'nimble-table-column-mapping-group-header-view';
71748
71850
 
71749
- const styles$9 = css `
71851
+ const styles$a = css `
71750
71852
  ${display('inline-flex')}
71751
71853
 
71752
71854
  :host {
@@ -71771,7 +71873,7 @@ focus outline in that case.
71771
71873
  `;
71772
71874
 
71773
71875
  // prettier-ignore
71774
- const template$7 = html `
71876
+ const template$9 = html `
71775
71877
  ${when(x => x.visualizationTemplate, html `
71776
71878
  <span class="reserve-icon-size">
71777
71879
  ${x => x.visualizationTemplate}
@@ -71858,8 +71960,8 @@ focus outline in that case.
71858
71960
  ], TableColumnMappingCellView.prototype, "hasOverflow", void 0);
71859
71961
  const mappingCellView = TableColumnMappingCellView.compose({
71860
71962
  baseName: 'table-column-mapping-cell-view',
71861
- template: template$7,
71862
- styles: styles$9
71963
+ template: template$9,
71964
+ styles: styles$a
71863
71965
  });
71864
71966
  DesignSystem.getOrCreate().withPrefix('nimble').register(mappingCellView());
71865
71967
  const tableColumnMappingCellViewTag = 'nimble-table-column-mapping-cell-view';
@@ -71943,13 +72045,181 @@ focus outline in that case.
71943
72045
  ], TableColumnMapping.prototype, "widthMode", void 0);
71944
72046
  const nimbleTableColumnMapping = TableColumnMapping.compose({
71945
72047
  baseName: 'table-column-mapping',
71946
- template: template$9,
71947
- styles: styles$b
72048
+ template: template$b,
72049
+ styles: styles$c
71948
72050
  });
71949
72051
  DesignSystem.getOrCreate()
71950
72052
  .withPrefix('nimble')
71951
72053
  .register(nimbleTableColumnMapping());
71952
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
+
71953
72223
  // Avoiding a wrapping <template> and be careful about starting and ending whitespace
71954
72224
  // so the template can be composed into other column header templates
71955
72225
  // prettier-ignore
@@ -71972,8 +72242,8 @@ focus outline in that case.
71972
72242
  }
71973
72243
  const tableColumnNumberTextGroupHeaderView = TableColumnNumberTextGroupHeaderView.compose({
71974
72244
  baseName: 'table-column-number-text-group-header-view',
71975
- template: template$b,
71976
- styles: styles$d
72245
+ template: template$d,
72246
+ styles: styles$e
71977
72247
  });
71978
72248
  DesignSystem.getOrCreate()
71979
72249
  .withPrefix('nimble')
@@ -71994,8 +72264,8 @@ focus outline in that case.
71994
72264
  }
71995
72265
  const numberTextCellView = TableColumnNumberTextCellView.compose({
71996
72266
  baseName: 'table-column-number-text-cell-view',
71997
- template: template$a,
71998
- styles: styles$c
72267
+ template: template$c,
72268
+ styles: styles$d
71999
72269
  });
72000
72270
  DesignSystem.getOrCreate().withPrefix('nimble').register(numberTextCellView());
72001
72271
  const tableColumnNumberTextCellViewTag = 'nimble-table-column-number-text-cell-view';
@@ -72536,7 +72806,7 @@ focus outline in that case.
72536
72806
  const nimbleTableColumnNumberText = TableColumnNumberText.compose({
72537
72807
  baseName: 'table-column-number-text',
72538
72808
  template: template$6,
72539
- styles: styles$f
72809
+ styles: styles$g
72540
72810
  });
72541
72811
  DesignSystem.getOrCreate()
72542
72812
  .withPrefix('nimble')
@@ -72554,8 +72824,8 @@ focus outline in that case.
72554
72824
  }
72555
72825
  const textCellView = TableColumnTextCellView.compose({
72556
72826
  baseName: 'table-column-text-cell-view',
72557
- template: template$a,
72558
- styles: styles$c
72827
+ template: template$c,
72828
+ styles: styles$d
72559
72829
  });
72560
72830
  DesignSystem.getOrCreate().withPrefix('nimble').register(textCellView());
72561
72831
  const tableColumnTextCellViewTag = 'nimble-table-column-text-cell-view';
@@ -72582,8 +72852,8 @@ focus outline in that case.
72582
72852
  }
72583
72853
  const nimbleTableColumnText = TableColumnText.compose({
72584
72854
  baseName: 'table-column-text',
72585
- template: template$d,
72586
- styles: styles$f
72855
+ template: template$f,
72856
+ styles: styles$g
72587
72857
  });
72588
72858
  DesignSystem.getOrCreate()
72589
72859
  .withPrefix('nimble')
@@ -72680,7 +72950,7 @@ focus outline in that case.
72680
72950
 
72681
72951
  const styles$6 = css `
72682
72952
  ${display('inline-flex')}
72683
- ${styles$I}
72953
+ ${styles$J}
72684
72954
 
72685
72955
  :host {
72686
72956
  font: ${bodyFont};
@@ -73025,7 +73295,7 @@ focus outline in that case.
73025
73295
 
73026
73296
  const styles$5 = css `
73027
73297
  ${display('inline-block')}
73028
- ${styles$I}
73298
+ ${styles$J}
73029
73299
 
73030
73300
  :host {
73031
73301
  font: ${bodyFont};