@ni/nimble-components 30.0.8 → 30.1.1

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 (36) hide show
  1. package/dist/all-components-bundle.js +117 -85
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +98 -82
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/combobox/index.js +4 -4
  6. package/dist/esm/combobox/index.js.map +1 -1
  7. package/dist/esm/combobox/styles.js +0 -4
  8. package/dist/esm/combobox/styles.js.map +1 -1
  9. package/dist/esm/combobox/template.js +13 -2
  10. package/dist/esm/combobox/template.js.map +1 -1
  11. package/dist/esm/combobox/testing/combobox.pageobject.d.ts +8 -0
  12. package/dist/esm/combobox/testing/combobox.pageobject.js +15 -0
  13. package/dist/esm/combobox/testing/combobox.pageobject.js.map +1 -1
  14. package/dist/esm/patterns/dropdown/styles.js +68 -51
  15. package/dist/esm/patterns/dropdown/styles.js.map +1 -1
  16. package/dist/esm/rich-text/mention-listbox/index.js +3 -0
  17. package/dist/esm/rich-text/mention-listbox/index.js.map +1 -1
  18. package/dist/esm/rich-text/mention-listbox/template.js +18 -3
  19. package/dist/esm/rich-text/mention-listbox/template.js.map +1 -1
  20. package/dist/esm/select/models/select-form-associated.js +1 -0
  21. package/dist/esm/select/models/select-form-associated.js.map +1 -1
  22. package/dist/esm/select/styles.js +2 -17
  23. package/dist/esm/select/styles.js.map +1 -1
  24. package/dist/esm/select/template.js +7 -6
  25. package/dist/esm/select/template.js.map +1 -1
  26. package/dist/esm/spinner/template.js +1 -0
  27. package/dist/esm/spinner/template.js.map +1 -1
  28. package/dist/esm/table/components/group-row/template.js +1 -0
  29. package/dist/esm/table/components/group-row/template.js.map +1 -1
  30. package/dist/esm/table-column/anchor/cell-view/template.js +1 -0
  31. package/dist/esm/table-column/anchor/cell-view/template.js.map +1 -1
  32. package/dist/esm/utilities/style/theme.js +1 -0
  33. package/dist/esm/utilities/style/theme.js.map +1 -1
  34. package/dist/esm/utilities/unit-format/scaled-unit-format/manually-translated-scaled-unit-format.js +1 -0
  35. package/dist/esm/utilities/unit-format/scaled-unit-format/manually-translated-scaled-unit-format.js.map +1 -1
  36. package/package.json +2 -2
@@ -16333,7 +16333,7 @@
16333
16333
 
16334
16334
  /**
16335
16335
  * Do not edit directly
16336
- * Generated on Mon, 22 Jul 2024 15:29:17 GMT
16336
+ * Generated on Tue, 23 Jul 2024 21:40:57 GMT
16337
16337
  */
16338
16338
 
16339
16339
  const Information100DarkUi = "#a46eff";
@@ -18773,6 +18773,7 @@
18773
18773
  * ```
18774
18774
  */
18775
18775
  const themeBehavior = (theme, styles) => new ThemeStyleSheetBehavior(theme, styles);
18776
+ /* eslint-enable max-classes-per-file */
18776
18777
 
18777
18778
  const styles$T = css `
18778
18779
  ${display('flex')}
@@ -20862,10 +20863,6 @@ so this becomes the fallback color for the slot */ ''}
20862
20863
  width: 0px;
20863
20864
  }
20864
20865
 
20865
- [part='start'] {
20866
- display: none;
20867
- }
20868
-
20869
20866
  .control {
20870
20867
  align-items: center;
20871
20868
  cursor: pointer;
@@ -20893,10 +20890,59 @@ so this becomes the fallback color for the slot */ ''}
20893
20890
  border-bottom-color: ${failColor};
20894
20891
  }
20895
20892
 
20893
+ [part='start'] {
20894
+ display: none;
20895
+ }
20896
+
20897
+ .selected-value {
20898
+ flex: auto;
20899
+ font-family: inherit;
20900
+ text-align: start;
20901
+ white-space: nowrap;
20902
+ text-overflow: ellipsis;
20903
+ overflow: hidden;
20904
+ padding: 0px;
20905
+ padding-left: ${mediumPadding};
20906
+ }
20907
+
20908
+ .selected-value[disabled]::placeholder {
20909
+ color: ${bodyDisabledFontColor};
20910
+ }
20911
+
20912
+ .indicator {
20913
+ flex: none;
20914
+ margin-left: ${smallPadding};
20915
+ padding-right: 8px;
20916
+ display: flex;
20917
+ justify-content: center;
20918
+ align-items: center;
20919
+ }
20920
+
20921
+ .indicator slot[name='indicator'] svg {
20922
+ width: ${iconSize};
20923
+ height: ${iconSize};
20924
+ fill: ${bodyFontColor};
20925
+ }
20926
+
20927
+ :host([disabled]) .indicator slot[name='indicator'] svg {
20928
+ fill: ${bodyDisabledFontColor};
20929
+ }
20930
+
20931
+ [part='end'] {
20932
+ margin-inline-start: auto;
20933
+ }
20934
+
20935
+ :host([open][position='above']) .anchored-region {
20936
+ padding-bottom: ${smallPadding};
20937
+ }
20938
+
20939
+ :host([open][position='below']) .anchored-region {
20940
+ padding-top: ${smallPadding};
20941
+ }
20942
+
20896
20943
  .listbox {
20897
20944
  display: inline-flex;
20898
20945
  flex-direction: column;
20899
- overflow-y: auto;
20900
20946
  width: 100%;
20901
20947
  --ni-private-listbox-visible-option-count: 10.5;
20902
20948
  --ni-private-listbox-anchor-element-gap: ${smallPadding};
@@ -20930,12 +20976,6 @@ so this becomes the fallback color for the slot */ ''}
20930
20976
  --ni-private-listbox-loading-indicator-height: ${controlHeight};
20931
20977
  }
20932
20978
 
20933
- .listbox slot {
20934
- display: block;
20935
- background: transparent;
20936
- padding: var(--ni-private-listbox-padding);
20937
- }
20938
-
20939
20979
  :host([open][position='above']) .listbox {
20940
20980
  border-bottom-left-radius: 0;
20941
20981
  border-bottom-right-radius: 0;
@@ -20946,55 +20986,33 @@ so this becomes the fallback color for the slot */ ''}
20946
20986
  border-top-right-radius: 0;
20947
20987
  }
20948
20988
 
20949
- :host([open][position='above']) .anchored-region {
20950
- padding-bottom: ${smallPadding};
20989
+ .scrollable-region {
20990
+ overflow-y: auto;
20951
20991
  }
20952
20992
 
20953
- :host([open][position='below']) .anchored-region {
20954
- padding-top: ${smallPadding};
20993
+ .listbox slot {
20994
+ display: block;
20995
+ background: transparent;
20996
+ padding: var(--ni-private-listbox-padding);
20955
20997
  }
20956
20998
 
20957
- .selected-value {
20958
- flex: auto;
20959
- font-family: inherit;
20960
- text-align: start;
20961
- white-space: nowrap;
20962
- text-overflow: ellipsis;
20963
- overflow: hidden;
20964
- padding: 0px;
20965
- padding-left: ${mediumPadding};
20999
+ .listbox.empty slot {
21000
+ display: none;
20966
21001
  }
20967
21002
 
20968
- .selected-value[disabled]::placeholder {
20969
- color: ${bodyDisabledFontColor};
21003
+ ::slotted([role='option']),
21004
+ ::slotted(option) {
21005
+ flex: none;
20970
21006
  }
20971
21007
 
20972
- .indicator {
20973
- flex: none;
20974
- margin-left: ${smallPadding};
20975
- padding-right: 8px;
21008
+ .no-results-label {
21009
+ color: ${placeholderFontColor};
21010
+ height: ${controlHeight};
21011
+ display: inline-flex;
20976
21012
  display: flex;
20977
- justify-content: center;
21013
+ flex: 1 0 auto;
20978
21014
  align-items: center;
20979
- }
20980
-
20981
- .indicator slot[name='indicator'] svg {
20982
- width: ${iconSize};
20983
- height: ${iconSize};
20984
- fill: ${bodyFontColor};
20985
- }
20986
-
20987
- :host([disabled]) .indicator slot[name='indicator'] svg {
20988
- fill: ${bodyDisabledFontColor};
20989
- }
20990
-
20991
- [part='end'] {
20992
- margin-inline-start: auto;
20993
- }
20994
-
20995
- ::slotted([role='option']),
20996
- ::slotted(option) {
20997
- flex: none;
21015
+ padding: ${smallPadding} ${mediumPadding};
20998
21016
  }
20999
21017
  `.withBehaviors(appearanceBehavior(DropdownAppearance.underline, css `
21000
21018
  .control {
@@ -21148,10 +21166,6 @@ so this becomes the fallback color for the slot */ ''}
21148
21166
  :host([disabled]) .dropdown-icon {
21149
21167
  fill: ${bodyDisabledFontColor};
21150
21168
  }
21151
-
21152
- :host(:empty) .listbox {
21153
- display: none;
21154
- }
21155
21169
  `.withBehaviors(appearanceBehavior(DropdownAppearance.block, css `
21156
21170
  :host([error-visible]) .control {
21157
21171
  border-bottom-width: ${borderWidth};
@@ -21214,6 +21228,7 @@ so this becomes the fallback color for the slot */ ''}
21214
21228
  return new AttachedBehaviorHTMLDirective('nimble-overflow', OverflowBehavior, propertyName);
21215
21229
  }
21216
21230
 
21231
+ /* eslint-disable @typescript-eslint/indent */
21217
21232
  // prettier-ignore
21218
21233
  const template$x = (context, definition) => html `
21219
21234
  <template
@@ -21269,7 +21284,11 @@ so this becomes the fallback color for the slot */ ''}
21269
21284
  horizontal-scaling="anchor"
21270
21285
  ?hidden="${x => !x.open}">
21271
21286
  <div
21272
- class="listbox"
21287
+ class="
21288
+ listbox
21289
+ scrollable-region
21290
+ ${x => (x.filteredOptions.length === 0 ? 'empty' : '')}
21291
+ "
21273
21292
  id="${x => x.listboxId}"
21274
21293
  part="listbox"
21275
21294
  role="listbox"
@@ -21284,6 +21303,11 @@ so this becomes the fallback color for the slot */ ''}
21284
21303
  property: 'slottedOptions',
21285
21304
  })}
21286
21305
  ></slot>
21306
+ ${when(x => x.filteredOptions.length === 0, html `
21307
+ <span class="no-results-label">
21308
+ ${x => filterNoResultsLabel.getValueFor(x)}
21309
+ </span>
21310
+ `)}
21287
21311
  </div>
21288
21312
  </${anchoredRegionTag}>
21289
21313
  </template>
@@ -21480,11 +21504,8 @@ so this becomes the fallback color for the slot */ ''}
21480
21504
  this.filter = '';
21481
21505
  }
21482
21506
  const filter = this.filter.toLowerCase();
21483
- this.filteredOptions = this._options.filter(o => o.text.toLowerCase().startsWith(filter));
21507
+ this.filteredOptions = this._options.filter(o => o.text.toLowerCase().startsWith(filter) && !o.hidden);
21484
21508
  if (this.isAutocompleteList) {
21485
- if (!this.filteredOptions.length && !filter) {
21486
- this.filteredOptions = this._options;
21487
- }
21488
21509
  this._options.forEach(o => {
21489
21510
  o.visuallyHidden = !this.filteredOptions.includes(o);
21490
21511
  });
@@ -21906,6 +21927,9 @@ so this becomes the fallback color for the slot */ ''}
21906
21927
  __decorate$1([
21907
21928
  observable
21908
21929
  ], Combobox.prototype, "dropdownButton", void 0);
21930
+ __decorate$1([
21931
+ observable
21932
+ ], Combobox.prototype, "filteredOptions", void 0);
21909
21933
  __decorate$1([
21910
21934
  observable
21911
21935
  ], Combobox.prototype, "hasOverflow", void 0);
@@ -44526,6 +44550,7 @@ img.ProseMirror-separator {
44526
44550
  }
44527
44551
  `;
44528
44552
 
44553
+ /* eslint-disable @typescript-eslint/indent */
44529
44554
  // prettier-ignore
44530
44555
  const template$q = html `
44531
44556
  <template>
@@ -44541,7 +44566,11 @@ img.ProseMirror-separator {
44541
44566
  horizontal-scaling="anchor"
44542
44567
  ?hidden="${x => !x.open}">
44543
44568
  <div
44544
- class="listbox"
44569
+ class="
44570
+ listbox
44571
+ scrollable-region
44572
+ ${x => (x.filteredOptions.length === 0 ? 'empty' : '')}
44573
+ "
44545
44574
  part="listbox"
44546
44575
  role="listbox"
44547
44576
  @click="${(x, c) => x.clickHandler(c.event)}"
@@ -44550,9 +44579,18 @@ img.ProseMirror-separator {
44550
44579
  ${ref('listbox')}
44551
44580
  >
44552
44581
  <slot name="option"
44553
- ${slotted({ filter: (n) => n instanceof HTMLElement && Listbox.slottedOptionFilter(n), flatten: true, property: 'slottedOptions' })}
44582
+ ${slotted({
44583
+ filter: (n) => n instanceof HTMLElement && Listbox.slottedOptionFilter(n),
44584
+ flatten: true,
44585
+ property: 'slottedOptions'
44586
+ })}
44554
44587
  >
44555
44588
  </slot>
44589
+ ${when(x => x.filteredOptions.length === 0, html `
44590
+ <span class="no-results-label">
44591
+ ${x => filterNoResultsLabel.getValueFor(x)}
44592
+ </span>
44593
+ `)}
44556
44594
  </div>
44557
44595
  </${anchoredRegionTag}>
44558
44596
  </template>
@@ -44794,6 +44832,9 @@ img.ProseMirror-separator {
44794
44832
  __decorate$1([
44795
44833
  observable
44796
44834
  ], RichTextMentionListbox.prototype, "availableViewportHeight", void 0);
44835
+ __decorate$1([
44836
+ observable
44837
+ ], RichTextMentionListbox.prototype, "filteredOptions", void 0);
44797
44838
  __decorate$1([
44798
44839
  observable
44799
44840
  ], RichTextMentionListbox.prototype, "anchorElement", void 0);
@@ -59831,10 +59872,6 @@ img.ProseMirror-separator {
59831
59872
  overflow-x: clip;
59832
59873
  }
59833
59874
 
59834
- .listbox.empty slot {
59835
- display: none;
59836
- }
59837
-
59838
59875
  .listbox.above {
59839
59876
  flex-flow: column-reverse;
59840
59877
  }
@@ -59872,7 +59909,8 @@ img.ProseMirror-separator {
59872
59909
  }
59873
59910
 
59874
59911
  .filter-icon {
59875
- padding-left: ${smallPadding};
59912
+ flex-shrink: 0;
59913
+ margin-left: ${smallPadding};
59876
59914
  ${iconColor.cssCustomProperty}: ${placeholderFontColor};
59877
59915
  }
59878
59916
 
@@ -59894,10 +59932,6 @@ img.ProseMirror-separator {
59894
59932
  outline: 0px;
59895
59933
  }
59896
59934
 
59897
- .scrollable-region {
59898
- overflow: auto;
59899
- }
59900
-
59901
59935
  ::slotted([role='option']) {
59902
59936
  background-color: transparent;
59903
59937
  }
@@ -59914,14 +59948,6 @@ img.ProseMirror-separator {
59914
59948
  background-color: ${fillHoverSelectedColor};
59915
59949
  }
59916
59950
 
59917
- .no-results-label {
59918
- color: ${placeholderFontColor};
59919
- height: ${controlHeight};
59920
- display: inline-flex;
59921
- align-items: center;
59922
- padding: ${smallPadding} ${mediumPadding};
59923
- }
59924
-
59925
59951
  .loading-container {
59926
59952
  padding-left: ${mediumPadding};
59927
59953
  padding-right: ${mediumPadding};
@@ -60152,6 +60178,7 @@ img.ProseMirror-separator {
60152
60178
  </div>
60153
60179
  </template>
60154
60180
  `;
60181
+ /* eslint-enable @typescript-eslint/indent */
60155
60182
 
60156
60183
  /**
60157
60184
  * Types of spinner appearance.
@@ -60267,7 +60294,7 @@ img.ProseMirror-separator {
60267
60294
  <div class="listbox-background">
60268
60295
  <div
60269
60296
  class="
60270
- listbox
60297
+ listbox
60271
60298
  ${x => (x.filteredOptions.length === 0 ? 'empty' : '')}
60272
60299
  ${x => x.positionAttribute}
60273
60300
  "
@@ -60303,12 +60330,12 @@ img.ProseMirror-separator {
60303
60330
  property: 'slottedOptions',
60304
60331
  })}
60305
60332
  ></slot>
60333
+ ${when(x => (x.filterMode !== FilterMode.none && x.filteredOptions.length === 0 && !x.loadingVisible), html `
60334
+ <span class="no-results-label">
60335
+ ${x => filterNoResultsLabel.getValueFor(x)}
60336
+ </span>
60337
+ `)}
60306
60338
  </div>
60307
- ${when(x => (x.filterMode !== FilterMode.none && x.filteredOptions.length === 0 && !x.loadingVisible), html `
60308
- <span class="no-results-label ${x => x.positionAttribute}">
60309
- ${x => filterNoResultsLabel.getValueFor(x)}
60310
- </span>
60311
- `)}
60312
60339
  ${when(x => x.loadingVisible, html `
60313
60340
  <div class="loading-container ${x => x.positionAttribute} ${x => (x.filteredOptions.length === 0 ? 'empty' : '')}"
60314
60341
  @click="${(x, c) => x.ignoreClickHandler(c.event)}">
@@ -60323,6 +60350,7 @@ img.ProseMirror-separator {
60323
60350
  </${anchoredRegionTag}>
60324
60351
  </template>
60325
60352
  `;
60353
+ /* eslint-enable @typescript-eslint/indent */
60326
60354
 
60327
60355
  // Based on: https://github.com/microsoft/fast/blob/%40microsoft/fast-foundation_v2.49.5/packages/web-components/fast-foundation/src/select/select.form-associated.ts
60328
60356
  /* eslint-disable max-classes-per-file */
@@ -60341,6 +60369,7 @@ img.ProseMirror-separator {
60341
60369
  this.proxy = document.createElement('select');
60342
60370
  }
60343
60371
  }
60372
+ /* eslint-enable max-classes-per-file */
60344
60373
 
60345
60374
  const isOptionSelectable = (el) => {
60346
60375
  return !el.visuallyHidden && !el.disabled && !el.hidden;
@@ -66612,6 +66641,7 @@ focus outline in that case.
66612
66641
  </div>
66613
66642
  </template>
66614
66643
  `;
66644
+ /* eslint-enable @typescript-eslint/indent */
66615
66645
 
66616
66646
  /**
66617
66647
  * A styled cell that is used within the nimble-table-row.
@@ -70896,6 +70926,7 @@ focus outline in that case.
70896
70926
  </span>`)}
70897
70927
  </template>
70898
70928
  `;
70929
+ /* eslint-enable @typescript-eslint/indent */
70899
70930
 
70900
70931
  /**
70901
70932
  * A cell view for displaying links
@@ -74698,6 +74729,7 @@ focus outline in that case.
74698
74729
  ?? unitTranslations.get('en'));
74699
74730
  }
74700
74731
  }
74732
+ /* eslint-enable max-classes-per-file */
74701
74733
 
74702
74734
  const unitTranslations$1 = new Map([
74703
74735
  ['en', new UnitTranslation('byte', 'bytes', 'B')],