@ni/nimble-components 30.0.8 → 30.1.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 (36) hide show
  1. package/dist/all-components-bundle.js +115 -84
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +96 -81
  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 +0 -16
  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 20:13:03 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
  }
@@ -59894,10 +59931,6 @@ img.ProseMirror-separator {
59894
59931
  outline: 0px;
59895
59932
  }
59896
59933
 
59897
- .scrollable-region {
59898
- overflow: auto;
59899
- }
59900
-
59901
59934
  ::slotted([role='option']) {
59902
59935
  background-color: transparent;
59903
59936
  }
@@ -59914,14 +59947,6 @@ img.ProseMirror-separator {
59914
59947
  background-color: ${fillHoverSelectedColor};
59915
59948
  }
59916
59949
 
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
59950
  .loading-container {
59926
59951
  padding-left: ${mediumPadding};
59927
59952
  padding-right: ${mediumPadding};
@@ -60152,6 +60177,7 @@ img.ProseMirror-separator {
60152
60177
  </div>
60153
60178
  </template>
60154
60179
  `;
60180
+ /* eslint-enable @typescript-eslint/indent */
60155
60181
 
60156
60182
  /**
60157
60183
  * Types of spinner appearance.
@@ -60267,7 +60293,7 @@ img.ProseMirror-separator {
60267
60293
  <div class="listbox-background">
60268
60294
  <div
60269
60295
  class="
60270
- listbox
60296
+ listbox
60271
60297
  ${x => (x.filteredOptions.length === 0 ? 'empty' : '')}
60272
60298
  ${x => x.positionAttribute}
60273
60299
  "
@@ -60303,12 +60329,12 @@ img.ProseMirror-separator {
60303
60329
  property: 'slottedOptions',
60304
60330
  })}
60305
60331
  ></slot>
60332
+ ${when(x => (x.filterMode !== FilterMode.none && x.filteredOptions.length === 0 && !x.loadingVisible), html `
60333
+ <span class="no-results-label">
60334
+ ${x => filterNoResultsLabel.getValueFor(x)}
60335
+ </span>
60336
+ `)}
60306
60337
  </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
60338
  ${when(x => x.loadingVisible, html `
60313
60339
  <div class="loading-container ${x => x.positionAttribute} ${x => (x.filteredOptions.length === 0 ? 'empty' : '')}"
60314
60340
  @click="${(x, c) => x.ignoreClickHandler(c.event)}">
@@ -60323,6 +60349,7 @@ img.ProseMirror-separator {
60323
60349
  </${anchoredRegionTag}>
60324
60350
  </template>
60325
60351
  `;
60352
+ /* eslint-enable @typescript-eslint/indent */
60326
60353
 
60327
60354
  // 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
60355
  /* eslint-disable max-classes-per-file */
@@ -60341,6 +60368,7 @@ img.ProseMirror-separator {
60341
60368
  this.proxy = document.createElement('select');
60342
60369
  }
60343
60370
  }
60371
+ /* eslint-enable max-classes-per-file */
60344
60372
 
60345
60373
  const isOptionSelectable = (el) => {
60346
60374
  return !el.visuallyHidden && !el.disabled && !el.hidden;
@@ -66612,6 +66640,7 @@ focus outline in that case.
66612
66640
  </div>
66613
66641
  </template>
66614
66642
  `;
66643
+ /* eslint-enable @typescript-eslint/indent */
66615
66644
 
66616
66645
  /**
66617
66646
  * A styled cell that is used within the nimble-table-row.
@@ -70896,6 +70925,7 @@ focus outline in that case.
70896
70925
  </span>`)}
70897
70926
  </template>
70898
70927
  `;
70928
+ /* eslint-enable @typescript-eslint/indent */
70899
70929
 
70900
70930
  /**
70901
70931
  * A cell view for displaying links
@@ -74698,6 +74728,7 @@ focus outline in that case.
74698
74728
  ?? unitTranslations.get('en'));
74699
74729
  }
74700
74730
  }
74731
+ /* eslint-enable max-classes-per-file */
74701
74732
 
74702
74733
  const unitTranslations$1 = new Map([
74703
74734
  ['en', new UnitTranslation('byte', 'bytes', 'B')],