@ni/nimble-components 35.4.0 → 35.5.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 (55) hide show
  1. package/dist/all-components-bundle.js +331 -155
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +4004 -3898
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/custom-elements.json +105 -2
  6. package/dist/custom-elements.md +31 -15
  7. package/dist/esm/anchor-step/template.js +14 -19
  8. package/dist/esm/anchor-step/template.js.map +1 -1
  9. package/dist/esm/anchor-step/testing/anchor-step.pageobject.d.ts +7 -0
  10. package/dist/esm/anchor-step/testing/anchor-step.pageobject.js +7 -0
  11. package/dist/esm/anchor-step/testing/anchor-step.pageobject.js.map +1 -0
  12. package/dist/esm/icons/all-icons.d.ts +1 -0
  13. package/dist/esm/icons/all-icons.js +1 -0
  14. package/dist/esm/icons/all-icons.js.map +1 -1
  15. package/dist/esm/icons/user-helmet-safety/index.d.ts +13 -0
  16. package/dist/esm/icons/user-helmet-safety/index.js +15 -0
  17. package/dist/esm/icons/user-helmet-safety/index.js.map +1 -0
  18. package/dist/esm/label-provider/core/index.d.ts +6 -0
  19. package/dist/esm/label-provider/core/index.js +9 -1
  20. package/dist/esm/label-provider/core/index.js.map +1 -1
  21. package/dist/esm/label-provider/core/label-token-defaults.js +2 -0
  22. package/dist/esm/label-provider/core/label-token-defaults.js.map +1 -1
  23. package/dist/esm/label-provider/core/label-tokens.d.ts +2 -0
  24. package/dist/esm/label-provider/core/label-tokens.js +8 -0
  25. package/dist/esm/label-provider/core/label-tokens.js.map +1 -1
  26. package/dist/esm/patterns/severity/styles.js +4 -6
  27. package/dist/esm/patterns/severity/styles.js.map +1 -1
  28. package/dist/esm/patterns/severity/template.js +1 -0
  29. package/dist/esm/patterns/severity/template.js.map +1 -1
  30. package/dist/esm/patterns/severity/testing/severity-pattern.pageobject.d.ts +1 -0
  31. package/dist/esm/patterns/severity/testing/severity-pattern.pageobject.js +7 -0
  32. package/dist/esm/patterns/severity/testing/severity-pattern.pageobject.js.map +1 -1
  33. package/dist/esm/patterns/step/models/step-internals.d.ts +1 -0
  34. package/dist/esm/patterns/step/models/step-internals.js +4 -0
  35. package/dist/esm/patterns/step/models/step-internals.js.map +1 -1
  36. package/dist/esm/patterns/step/styles.js +154 -46
  37. package/dist/esm/patterns/step/styles.js.map +1 -1
  38. package/dist/esm/patterns/step/testing/step-base.pageobject.d.ts +12 -0
  39. package/dist/esm/patterns/step/testing/step-base.pageobject.js +40 -0
  40. package/dist/esm/patterns/step/testing/step-base.pageobject.js.map +1 -0
  41. package/dist/esm/patterns/step/types.d.ts +3 -2
  42. package/dist/esm/patterns/step/types.js.map +1 -1
  43. package/dist/esm/step/template.js +14 -19
  44. package/dist/esm/step/template.js.map +1 -1
  45. package/dist/esm/step/testing/step.pageobject.d.ts +7 -0
  46. package/dist/esm/step/testing/step.pageobject.js +7 -0
  47. package/dist/esm/step/testing/step.pageobject.js.map +1 -0
  48. package/dist/esm/stepper/index.d.ts +8 -0
  49. package/dist/esm/stepper/index.js +30 -0
  50. package/dist/esm/stepper/index.js.map +1 -1
  51. package/dist/esm/stepper/styles.js +18 -1
  52. package/dist/esm/stepper/styles.js.map +1 -1
  53. package/dist/esm/stepper/template.js +6 -5
  54. package/dist/esm/stepper/template.js.map +1 -1
  55. package/package.json +2 -2
@@ -17550,16 +17550,14 @@
17550
17550
  display: none;
17551
17551
  font: ${errorTextFont};
17552
17552
  color: ${buttonLabelFontColor};
17553
- width: 100%;
17554
17553
  position: absolute;
17555
- ${'' /* The -2px modifier of the bottom position is to intentionally have the severity text slightly overlap the control by 2px */}
17556
- bottom: calc(-1 * (${errorTextFontLineHeight} - 2px));
17557
- left: 0px;
17554
+ padding: 0;
17558
17555
  overflow: hidden;
17559
17556
  text-overflow: ellipsis;
17560
17557
  white-space: nowrap;
17558
+ width: 100%;
17561
17559
  }
17562
-
17560
+
17563
17561
  :host([severity="error"]) .severity-text {
17564
17562
  display: block;
17565
17563
  color: ${failColor};
@@ -17664,9 +17662,6 @@
17664
17662
  ${display('inline-flex')}
17665
17663
  ${styles$11}
17666
17664
  :host {
17667
- ${'' /* Based on text layout: Top padding + title height + subtitle height + bottom padding */}
17668
- height: calc(${smallPadding} + ${controlSlimHeight} + ${errorTextFontLineHeight} + ${smallPadding});
17669
- width: ${menuMinWidth};
17670
17665
  color: ${buttonLabelFontColor};
17671
17666
  font: ${buttonLabelFont};
17672
17667
  white-space: nowrap;
@@ -17680,21 +17675,36 @@
17680
17675
  width: 100%;
17681
17676
  height: 100%;
17682
17677
  position: relative;
17678
+ list-style: none;
17679
+ --ni-private-step-content-height: calc(${smallPadding} + ${controlSlimHeight} + ${errorTextFontLineHeight});
17680
+ --ni-private-step-content-offset: calc(${controlHeight} + ${smallPadding});
17683
17681
  }
17684
17682
 
17685
- .control {
17686
- display: inline-flex;
17687
- align-items: start;
17688
- justify-content: flex-start;
17683
+ .control {
17684
+ display: inline-grid;
17689
17685
  height: 100%;
17690
17686
  width: 100%;
17687
+ grid-template-areas:
17688
+ "icon top-spacer top-spacer"
17689
+ "icon title line"
17690
+ "icon subtitle subtitle";
17691
+ grid-template-columns:
17692
+ ${controlHeight} ${'' /* Icon width */}
17693
+ min-content ${'' /* Show the full title and subtitle */}
17694
+ 1fr; ${'' /* Line is only fr unit so fills remaining space */}
17695
+ grid-template-rows:
17696
+ ${smallPadding}
17697
+ ${controlSlimHeight}
17698
+ min-content;
17699
+ column-gap: 4px;
17700
+
17701
+ align-items: start;
17702
+ margin: 0;
17703
+ padding: 0;
17691
17704
  color: inherit;
17692
17705
  background-color: transparent;
17693
- gap: ${smallPadding};
17694
17706
  cursor: pointer;
17695
17707
  outline: none;
17696
- margin: 0;
17697
- padding: 0 ${smallPadding} 0 0;
17698
17708
  --ni-private-step-icon-background-full-size: 100% 100%;
17699
17709
  ${'' /* 6px = (2px icon border + 1px inset) * 2 sides */}
17700
17710
  --ni-private-step-icon-background-inset-size: calc(100% - 6px) calc(100% - 6px);
@@ -17708,6 +17718,70 @@
17708
17718
  --ni-private-step-line-color: rgba(${borderRgbPartialColor}, 0.1);
17709
17719
  }
17710
17720
 
17721
+ .container.last .control {
17722
+ grid-template-areas:
17723
+ "icon top-spacer"
17724
+ "icon title"
17725
+ "icon subtitle";
17726
+ grid-template-columns:
17727
+ ${controlHeight}
17728
+ min-content;
17729
+ grid-template-rows:
17730
+ ${smallPadding}
17731
+ ${controlSlimHeight}
17732
+ min-content;
17733
+ }
17734
+
17735
+ .container.vertical .control {
17736
+ ${'' /*
17737
+ Defines an interaction area clip-path that leaves out the severity text so it is easily selectable:
17738
+ 1----------------2
17739
+ | title |
17740
+ | subtitle |
17741
+ | 4-------------3
17742
+ | | severity-text
17743
+ | |
17744
+ 6--5
17745
+ */}
17746
+ clip-path: polygon(
17747
+ 0% 0%,
17748
+ 100% 0%,
17749
+ 100% var(--ni-private-step-content-height),
17750
+ var(--ni-private-step-content-offset) var(--ni-private-step-content-height),
17751
+ var(--ni-private-step-content-offset) 100%,
17752
+ 0% 100%
17753
+ );
17754
+ grid-template-areas:
17755
+ "icon top-spacer"
17756
+ "icon title"
17757
+ "icon subtitle"
17758
+ "line subtitle"
17759
+ "line .";
17760
+ grid-template-columns:
17761
+ ${controlHeight}
17762
+ min-content;
17763
+ grid-template-rows:
17764
+ ${smallPadding}
17765
+ ${controlSlimHeight}
17766
+ calc(${controlHeight} - ${smallPadding} - ${controlSlimHeight})
17767
+ min-content
17768
+ 1fr;
17769
+ }
17770
+
17771
+ .container.vertical.last .control {
17772
+ grid-template-areas:
17773
+ "icon top-spacer"
17774
+ "icon title"
17775
+ "icon subtitle";
17776
+ grid-template-columns:
17777
+ ${controlHeight}
17778
+ min-content;
17779
+ grid-template-rows:
17780
+ ${smallPadding}
17781
+ ${controlSlimHeight}
17782
+ min-content;
17783
+ }
17784
+
17711
17785
  :host([severity="error"]) .control {
17712
17786
  --ni-private-step-icon-color: ${failColor};
17713
17787
  --ni-private-step-icon-border-color: ${failColor};
@@ -17741,6 +17815,7 @@
17741
17815
  }
17742
17816
 
17743
17817
  .icon {
17818
+ grid-area: icon;
17744
17819
  display: inline-flex;
17745
17820
  align-items: center;
17746
17821
  justify-content: center;
@@ -17760,7 +17835,7 @@
17760
17835
  ${'' /* Workaround to prevent aliasing on radial-gradient boundaries, see:
17761
17836
  https://frontendmasters.com/blog/obsessing-over-smooth-radial-gradient-disc-edges
17762
17837
  */}
17763
- var(--ni-private-step-icon-background-color) calc(100% - 1px/var(--ni-private-device-resolution)),
17838
+ var(--ni-private-step-icon-background-color) calc(100% - 1px/var(--ni-private-device-pixel-ratio, 1)),
17764
17839
  transparent 100%
17765
17840
  );
17766
17841
  background-origin: border-box;
@@ -17798,18 +17873,22 @@
17798
17873
  outline-offset ${smallDelay} ease-in-out;
17799
17874
  }
17800
17875
 
17801
- .icon-slot {
17876
+ .current-label {
17877
+ ${accessiblyHidden}
17878
+ }
17879
+
17880
+ .step-indicator {
17802
17881
  display: contents;
17803
17882
  }
17804
17883
 
17805
- :host([severity="error"]) .icon-slot,
17806
- :host([severity="warning"]) .icon-slot,
17807
- :host([severity="success"]) .icon-slot {
17884
+ :host([severity="error"]) .step-indicator,
17885
+ :host([severity="warning"]) .step-indicator,
17886
+ :host([severity="success"]) .step-indicator {
17808
17887
  display: none;
17809
17888
  }
17810
17889
 
17811
- :host([selected]) .icon-slot,
17812
- :host([disabled]) .icon-slot {
17890
+ :host([selected]) .step-indicator,
17891
+ :host([disabled]) .step-indicator {
17813
17892
  display: contents;
17814
17893
  }
17815
17894
 
@@ -17828,62 +17907,80 @@
17828
17907
  display: none;
17829
17908
  }
17830
17909
 
17831
- .content {
17832
- display: inline-flex;
17833
- ${'' /* Control width - icon size */}
17834
- width: calc(100% - 32px);
17835
- flex-direction: column;
17836
- padding-top: ${smallPadding};
17837
- padding-bottom: ${smallPadding};
17910
+ .top-spacer {
17911
+ grid-area: top-spacer;
17912
+ height: ${smallPadding};
17838
17913
  }
17839
17914
 
17840
- .title-wrapper {
17841
- display: inline-flex;
17915
+ .title {
17916
+ grid-area: title;
17917
+ min-width: min-content;
17842
17918
  height: ${controlSlimHeight};
17843
- flex-direction: row;
17844
- align-items: center;
17845
- justify-content: start;
17846
- gap: ${smallPadding};
17919
+ display: inline-block;
17920
+ align-content: center;
17847
17921
  font: ${bodyFont};
17922
+ white-space: nowrap;
17923
+ overflow: hidden;
17924
+ text-overflow: ellipsis;
17848
17925
  }
17849
17926
 
17850
17927
  [part='start'] {
17851
17928
  display: none;
17852
17929
  }
17853
17930
 
17854
- .title {
17855
- display: inline-block;
17856
- flex: none;
17857
- white-space: nowrap;
17858
- overflow: hidden;
17859
- text-overflow: ellipsis;
17860
- ${'' /* Content width - (gap + line min width) */}
17861
- max-width: calc(100% - (${smallPadding} + ${standardPadding}));
17862
- }
17863
-
17864
17931
  [part='end'] {
17865
17932
  display: none;
17866
17933
  }
17867
-
17934
+
17868
17935
  .line {
17936
+ grid-area: line;
17937
+ align-self: center;
17938
+ justify-self: center;
17869
17939
  display: inline-block;
17870
- flex: 1;
17940
+ width: 100%;
17871
17941
  min-width: ${standardPadding};
17872
17942
  height: 1px;
17943
+ min-height: 1px;
17873
17944
  background: var(--ni-private-step-line-color);
17945
+ background-clip: content-box;
17874
17946
  transform: scale(1, 1);
17875
17947
  transition:
17876
17948
  background-color ${smallDelay} ease-in-out,
17877
17949
  transform ${smallDelay} ease-in-out;
17878
17950
  }
17879
17951
 
17952
+ .container.last .line {
17953
+ display: none;
17954
+ }
17955
+
17956
+ .container.vertical .line {
17957
+ width: 1px;
17958
+ min-width: 1px;
17959
+ height: 100%;
17960
+ padding-top: ${smallPadding};
17961
+ min-height: ${standardPadding};
17962
+ }
17963
+
17880
17964
  .subtitle {
17965
+ grid-area: subtitle;
17966
+ display: inline-block;
17967
+ min-width: min-content;
17968
+ height: ${errorTextFontLineHeight};
17969
+ align-content: center;
17881
17970
  font: ${errorTextFont};
17882
17971
  white-space: nowrap;
17883
17972
  overflow: hidden;
17884
17973
  text-overflow: ellipsis;
17885
- ${'' /* Content width */}
17886
- max-width: 100%;
17974
+ }
17975
+
17976
+ .severity-text {
17977
+ left: 0px;
17978
+ top: var(--ni-private-step-content-height);
17979
+ }
17980
+
17981
+ .container.vertical .severity-text {
17982
+ width: calc(100% - var(--ni-private-step-content-offset));
17983
+ left: var(--ni-private-step-content-offset);
17887
17984
  }
17888
17985
  }
17889
17986
 
@@ -17927,6 +18024,10 @@
17927
18024
  .control:hover .line {
17928
18025
  transform: scale(1, 2);
17929
18026
  }
18027
+
18028
+ .container.vertical .control:hover .line {
18029
+ transform: scale(2, 1);
18030
+ }
17930
18031
  }
17931
18032
 
17932
18033
  @layer focusVisible {
@@ -17966,7 +18067,7 @@
17966
18067
  --ni-private-step-icon-outline-inset-color: ${borderHoverColor};
17967
18068
  --ni-private-step-line-color: ${borderHoverColor};
17968
18069
  }
17969
-
18070
+
17970
18071
  .control${focusVisible} .icon {
17971
18072
  border-width: 2px;
17972
18073
  }
@@ -17979,6 +18080,10 @@
17979
18080
  .control${focusVisible} .line {
17980
18081
  transform: scale(1, 2);
17981
18082
  }
18083
+
18084
+ .container.vertical .control${focusVisible} .line {
18085
+ transform: scale(2, 1);
18086
+ }
17982
18087
  }
17983
18088
 
17984
18089
  @layer active {
@@ -18148,6 +18253,7 @@
18148
18253
  ${overflow('severityHasOverflow')}
18149
18254
  title="${x => (x.severityHasOverflow && x.severityText ? x.severityText : undefined)}"
18150
18255
  aria-live="polite"
18256
+ @click="${(_x, c) => c.event.stopImmediatePropagation()}"
18151
18257
  >${x => x.severityText}</div>`;
18152
18258
 
18153
18259
  const Severity = {
@@ -19070,6 +19176,10 @@
19070
19176
  name: 'user_16_x_16',
19071
19177
  data: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M8.004 2a2.18 2.18 0 0 1 2.184 2.182v1.09c.647 0 .378.932 0 1.455a4 4 0 0 1-.335.364 9 9 0 0 1-.31.742l.208 1.076h.437l2.75 1.527A2.15 2.15 0 0 1 14 12.291V14H2v-1.673a2.16 2.16 0 0 1 1.063-1.869l2.758-1.55h.437l.21-1.068a9 9 0 0 1-.312-.749 4 4 0 0 1-.335-.364c-.378-.523-.647-1.454 0-1.454v-1.09A2.18 2.18 0 0 1 8.004 2" class="cls-1"/></svg>`,
19072
19178
  };
19179
+ const userHelmetSafety16X16 = {
19180
+ name: 'user_helmet_safety_16_x_16',
19181
+ data: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M8 11.95c.9 0 1.72-.31 2.39-.83V14H5.62v-2.88c.66.52 1.49.83 2.39.83Zm3.19-1.31h-.1V14H14v-.48c0-1.59-1.26-2.89-2.81-2.89ZM2 13.52V14h2.91v-3.36h-.1C3.26 10.64 2 11.93 2 13.53Zm6-2.29c1.78 0 3.22-1.48 3.22-3.31V7.4H4.78v.52c0 1.82 1.44 3.31 3.22 3.31m4-4.42v-.73h-.8a3.29 3.29 0 0 0-1.79-2.61v1.8h-.7V3H7.3v2.27h-.7v-1.8a3.28 3.28 0 0 0-1.79 2.61H4v.73h8.01Z" class="cls-1"/></svg>`,
19182
+ };
19073
19183
  const watch16X16 = {
19074
19184
  name: 'watch_16_x_16',
19075
19185
  data: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m12.57 7.28-.06.013a4.56 4.56 0 0 0-1.38-2.609V3.44a.48.48 0 0 0-.48-.48h-.48V2H5.85v.96h-.48a.48.48 0 0 0-.48.48v1.24a4.545 4.545 0 0 0 0 6.64v1.24a.48.48 0 0 0 .48.48h.48V14h4.32v-.96h.48a.48.48 0 0 0 .48-.48v-1.24a4.55 4.55 0 0 0 1.379-2.612l.061.012a.48.48 0 0 0 .48-.48v-.48a.48.48 0 0 0-.48-.48m-2.3 2.662a1.6 1.6 0 0 0-.182-.26L8.747 8.338a.79.79 0 0 0 0-.666c.132-.133.894-.899.965-1a1.2 1.2 0 0 0 .14-.485 1 1 0 0 0-.515.157l-.955.957a.784.784 0 1 0 0 1.408c.163.167.956.974 1.236 1.254a1.5 1.5 0 0 0 .36.276 3.055 3.055 0 1 1 .291-.297" class="cls-1"/></svg>`,
@@ -19230,9 +19340,83 @@
19230
19340
  registerIconSvg('icon-check', IconCheck);
19231
19341
  const iconCheckTag = 'nimble-icon-check';
19232
19342
 
19343
+ const coreLabelDefaults = {
19344
+ popupDismissLabel: 'Close',
19345
+ numericIncrementLabel: 'Increment',
19346
+ numericDecrementLabel: 'Decrement',
19347
+ popupIconErrorLabel: 'Error',
19348
+ popupIconWarningLabel: 'Warning',
19349
+ popupIconCompletedLabel: 'Completed',
19350
+ popupIconCurrentLabel: 'Current',
19351
+ popupIconInformationLabel: 'Information',
19352
+ filterSearchLabel: 'Search',
19353
+ filterNoResultsLabel: 'No items found',
19354
+ loadingLabel: 'Loading…',
19355
+ scrollBackwardLabel: 'Scroll backward',
19356
+ scrollForwardLabel: 'Scroll forward',
19357
+ itemRemoveLabel: 'Remove'
19358
+ };
19359
+
19360
+ const popupDismissLabel = DesignToken.create({
19361
+ name: 'popup-dismiss-label',
19362
+ cssCustomPropertyName: null
19363
+ }).withDefault(coreLabelDefaults.popupDismissLabel);
19364
+ const numericDecrementLabel = DesignToken.create({
19365
+ name: 'numeric-decrement-label',
19366
+ cssCustomPropertyName: null
19367
+ }).withDefault(coreLabelDefaults.numericDecrementLabel);
19368
+ const numericIncrementLabel = DesignToken.create({
19369
+ name: 'numeric-increment-label',
19370
+ cssCustomPropertyName: null
19371
+ }).withDefault(coreLabelDefaults.numericIncrementLabel);
19372
+ const popupIconErrorLabel = DesignToken.create({
19373
+ name: 'popup-icon-error-label',
19374
+ cssCustomPropertyName: null
19375
+ }).withDefault(coreLabelDefaults.popupIconErrorLabel);
19376
+ const popupIconWarningLabel = DesignToken.create({
19377
+ name: 'popup-icon-warning-label',
19378
+ cssCustomPropertyName: null
19379
+ }).withDefault(coreLabelDefaults.popupIconWarningLabel);
19380
+ const popupIconCompletedLabel = DesignToken.create({
19381
+ name: 'popup-icon-completed-label',
19382
+ cssCustomPropertyName: null
19383
+ }).withDefault(coreLabelDefaults.popupIconCompletedLabel);
19384
+ const popupIconCurrentLabel = DesignToken.create({
19385
+ name: 'popup-icon-current-label',
19386
+ cssCustomPropertyName: null
19387
+ }).withDefault(coreLabelDefaults.popupIconCurrentLabel);
19388
+ const popupIconInformationLabel = DesignToken.create({
19389
+ name: 'popup-icon-information-label',
19390
+ cssCustomPropertyName: null
19391
+ }).withDefault(coreLabelDefaults.popupIconInformationLabel);
19392
+ const filterSearchLabel = DesignToken.create({
19393
+ name: 'filter-search-label',
19394
+ cssCustomPropertyName: null
19395
+ }).withDefault(coreLabelDefaults.filterSearchLabel);
19396
+ const filterNoResultsLabel = DesignToken.create({
19397
+ name: 'filter-no-results-label',
19398
+ cssCustomPropertyName: null
19399
+ }).withDefault(coreLabelDefaults.filterNoResultsLabel);
19400
+ const loadingLabel = DesignToken.create({
19401
+ name: 'loading-label',
19402
+ cssCustomPropertyName: null
19403
+ }).withDefault(coreLabelDefaults.loadingLabel);
19404
+ const scrollBackwardLabel = DesignToken.create({
19405
+ name: 'scroll-backward-label',
19406
+ cssCustomPropertyName: null
19407
+ }).withDefault(coreLabelDefaults.scrollBackwardLabel);
19408
+ const scrollForwardLabel = DesignToken.create({
19409
+ name: 'scroll-forward-label',
19410
+ cssCustomPropertyName: null
19411
+ }).withDefault(coreLabelDefaults.scrollForwardLabel);
19412
+ const itemRemoveLabel = DesignToken.create({
19413
+ name: 'item-remove-label',
19414
+ cssCustomPropertyName: null
19415
+ }).withDefault(coreLabelDefaults.itemRemoveLabel);
19416
+
19233
19417
  const template$M = (context, definition) => html `
19234
19418
  <template slot="step">
19235
- <div class="
19419
+ <li class="
19236
19420
  container
19237
19421
  ${x => (x.stepInternals.orientation === 'vertical' ? 'vertical' : '')}
19238
19422
  ${x => (x.stepInternals.last ? 'last' : '')}
@@ -19271,28 +19455,22 @@
19271
19455
  aria-roledescription="${x => x.ariaRoledescription}"
19272
19456
  ${ref('control')}
19273
19457
  >
19274
- <div class="icon">
19275
- <div class="icon-slot"><slot ${slotted('defaultSlottedContent')}></slot></div>
19458
+ <div class="icon">
19459
+ <span class="current-label">${x => (x.selected ? popupIconCurrentLabel.getValueFor(x) : '')}</span>
19460
+ <div class="step-indicator"><slot name="step-indicator"><span aria-hidden="true">${x => x.stepInternals.position}</span></slot></div>
19276
19461
  <div class="icon-severity">
19277
- ${when(x => x.severity === Severity.error, html `<${iconExclamationMarkTag}></${iconExclamationMarkTag}>`)}
19278
- ${when(x => x.severity === Severity.warning, html `<${iconTriangleFilledTag}></${iconTriangleFilledTag}>`)}
19279
- ${when(x => x.severity === Severity.success, html `<${iconCheckTag}></${iconCheckTag}>`)}
19280
- </div>
19281
- </div>
19282
- <div class="content">
19283
- <div class="title-wrapper">
19284
- ${startSlotTemplate(context, definition)}
19285
- <div class="title"><slot name="title"></slot></div>
19286
- ${endSlotTemplate(context, definition)}
19287
- <div class="line"></div>
19288
- </div>
19289
- <div class="subtitle">
19290
- <slot name="subtitle"></slot>
19462
+ ${when(x => x.severity === Severity.error, html `<${iconExclamationMarkTag} role="img" aria-label="${x => popupIconErrorLabel.getValueFor(x)}"></${iconExclamationMarkTag}>`)}
19463
+ ${when(x => x.severity === Severity.warning, html `<${iconTriangleFilledTag} role="img" aria-label="${x => popupIconWarningLabel.getValueFor(x)}"></${iconTriangleFilledTag}>`)}
19464
+ ${when(x => x.severity === Severity.success, html `<${iconCheckTag} role="img" aria-label="${x => popupIconCompletedLabel.getValueFor(x)}"></${iconCheckTag}>`)}
19291
19465
  </div>
19292
19466
  </div>
19467
+ <div class="top-spacer"></div>
19468
+ <div class="title">${startSlotTemplate(context, definition)}<slot name="title"></slot>${endSlotTemplate(context, definition)}</div>
19469
+ <div class="line"></div>
19470
+ <div class="subtitle"><slot name="subtitle"></slot></div>
19293
19471
  </a>
19294
19472
  ${severityTextTemplate}
19295
- </div>
19473
+ </li>
19296
19474
  </template>
19297
19475
  `;
19298
19476
 
@@ -19309,6 +19487,7 @@
19309
19487
  constructor() {
19310
19488
  this.orientation = StepperOrientation.horizontal;
19311
19489
  this.last = false;
19490
+ this.position = 1;
19312
19491
  }
19313
19492
  }
19314
19493
  __decorate([
@@ -19317,6 +19496,9 @@
19317
19496
  __decorate([
19318
19497
  observable
19319
19498
  ], StepInternals.prototype, "last", void 0);
19499
+ __decorate([
19500
+ observable
19501
+ ], StepInternals.prototype, "position", void 0);
19320
19502
 
19321
19503
  const AnchorStepSeverity = Severity;
19322
19504
 
@@ -19729,70 +19911,6 @@
19729
19911
  registerIconSvg('icon-arrow-expander-right', IconArrowExpanderRight);
19730
19912
  const iconArrowExpanderRightTag = 'nimble-icon-arrow-expander-right';
19731
19913
 
19732
- const coreLabelDefaults = {
19733
- popupDismissLabel: 'Close',
19734
- numericIncrementLabel: 'Increment',
19735
- numericDecrementLabel: 'Decrement',
19736
- popupIconErrorLabel: 'Error',
19737
- popupIconWarningLabel: 'Warning',
19738
- popupIconInformationLabel: 'Information',
19739
- filterSearchLabel: 'Search',
19740
- filterNoResultsLabel: 'No items found',
19741
- loadingLabel: 'Loading…',
19742
- scrollBackwardLabel: 'Scroll backward',
19743
- scrollForwardLabel: 'Scroll forward',
19744
- itemRemoveLabel: 'Remove'
19745
- };
19746
-
19747
- const popupDismissLabel = DesignToken.create({
19748
- name: 'popup-dismiss-label',
19749
- cssCustomPropertyName: null
19750
- }).withDefault(coreLabelDefaults.popupDismissLabel);
19751
- const numericDecrementLabel = DesignToken.create({
19752
- name: 'numeric-decrement-label',
19753
- cssCustomPropertyName: null
19754
- }).withDefault(coreLabelDefaults.numericDecrementLabel);
19755
- const numericIncrementLabel = DesignToken.create({
19756
- name: 'numeric-increment-label',
19757
- cssCustomPropertyName: null
19758
- }).withDefault(coreLabelDefaults.numericIncrementLabel);
19759
- const popupIconErrorLabel = DesignToken.create({
19760
- name: 'popup-icon-error-label',
19761
- cssCustomPropertyName: null
19762
- }).withDefault(coreLabelDefaults.popupIconErrorLabel);
19763
- const popupIconWarningLabel = DesignToken.create({
19764
- name: 'popup-icon-warning-label',
19765
- cssCustomPropertyName: null
19766
- }).withDefault(coreLabelDefaults.popupIconWarningLabel);
19767
- const popupIconInformationLabel = DesignToken.create({
19768
- name: 'popup-icon-information-label',
19769
- cssCustomPropertyName: null
19770
- }).withDefault(coreLabelDefaults.popupIconInformationLabel);
19771
- const filterSearchLabel = DesignToken.create({
19772
- name: 'filter-search-label',
19773
- cssCustomPropertyName: null
19774
- }).withDefault(coreLabelDefaults.filterSearchLabel);
19775
- const filterNoResultsLabel = DesignToken.create({
19776
- name: 'filter-no-results-label',
19777
- cssCustomPropertyName: null
19778
- }).withDefault(coreLabelDefaults.filterNoResultsLabel);
19779
- const loadingLabel = DesignToken.create({
19780
- name: 'loading-label',
19781
- cssCustomPropertyName: null
19782
- }).withDefault(coreLabelDefaults.loadingLabel);
19783
- const scrollBackwardLabel = DesignToken.create({
19784
- name: 'scroll-backward-label',
19785
- cssCustomPropertyName: null
19786
- }).withDefault(coreLabelDefaults.scrollBackwardLabel);
19787
- const scrollForwardLabel = DesignToken.create({
19788
- name: 'scroll-forward-label',
19789
- cssCustomPropertyName: null
19790
- }).withDefault(coreLabelDefaults.scrollForwardLabel);
19791
- const itemRemoveLabel = DesignToken.create({
19792
- name: 'item-remove-label',
19793
- cssCustomPropertyName: null
19794
- }).withDefault(coreLabelDefaults.itemRemoveLabel);
19795
-
19796
19914
  const template$J = (context, definition) => html `
19797
19915
  <div
19798
19916
  class="tab-bar"
@@ -25952,6 +26070,18 @@ so this becomes the fallback color for the slot */ ''}
25952
26070
  }
25953
26071
  registerIconSvg('icon-user', IconUser);
25954
26072
 
26073
+ // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
26074
+ // See generation source in nimble-components/build/generate-icons
26075
+ /**
26076
+ * The icon component for the 'userHelmetSafety' icon
26077
+ */
26078
+ class IconUserHelmetSafety extends IconSvg {
26079
+ constructor() {
26080
+ super(userHelmetSafety16X16);
26081
+ }
26082
+ }
26083
+ registerIconSvg('icon-user-helmet-safety', IconUserHelmetSafety);
26084
+
25955
26085
  // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
25956
26086
  // See generation source in nimble-components/build/generate-icons
25957
26087
  /**
@@ -26147,6 +26277,8 @@ so this becomes the fallback color for the slot */ ''}
26147
26277
  numericIncrement: numericIncrementLabel,
26148
26278
  popupIconError: popupIconErrorLabel,
26149
26279
  popupIconWarning: popupIconWarningLabel,
26280
+ popupIconCompleted: popupIconCompletedLabel,
26281
+ popupIconCurrent: popupIconCurrentLabel,
26150
26282
  popupIconInformation: popupIconInformationLabel,
26151
26283
  filterSearch: filterSearchLabel,
26152
26284
  filterNoResults: filterNoResultsLabel,
@@ -26179,6 +26311,12 @@ so this becomes the fallback color for the slot */ ''}
26179
26311
  __decorate([
26180
26312
  attr({ attribute: 'popup-icon-warning' })
26181
26313
  ], LabelProviderCore.prototype, "popupIconWarning", void 0);
26314
+ __decorate([
26315
+ attr({ attribute: 'popup-icon-completed' })
26316
+ ], LabelProviderCore.prototype, "popupIconCompleted", void 0);
26317
+ __decorate([
26318
+ attr({ attribute: 'popup-icon-current' })
26319
+ ], LabelProviderCore.prototype, "popupIconCurrent", void 0);
26182
26320
  __decorate([
26183
26321
  attr({ attribute: 'popup-icon-information' })
26184
26322
  ], LabelProviderCore.prototype, "popupIconInformation", void 0);
@@ -66183,7 +66321,7 @@ ${nextLine.slice(indentLevel + 2)}`;
66183
66321
 
66184
66322
  const template$o = (context, definition) => html `
66185
66323
  <template slot="step">
66186
- <div class="
66324
+ <li class="
66187
66325
  container
66188
66326
  ${x => (x.stepInternals.orientation === 'vertical' ? 'vertical' : '')}
66189
66327
  ${x => (x.stepInternals.last ? 'last' : '')}
@@ -66226,28 +66364,22 @@ ${nextLine.slice(indentLevel + 2)}`;
66226
66364
  aria-roledescription="${x => x.ariaRoledescription}"
66227
66365
  ${ref('control')}
66228
66366
  >
66229
- <div class="icon">
66230
- <div class="icon-slot"><slot ${slotted('defaultSlottedContent')}></slot></div>
66367
+ <div class="icon">
66368
+ <span class="current-label">${x => (x.selected ? popupIconCurrentLabel.getValueFor(x) : '')}</span>
66369
+ <div class="step-indicator"><slot name="step-indicator"><span aria-hidden="true">${x => x.stepInternals.position}</span></slot></div>
66231
66370
  <div class="icon-severity">
66232
- ${when(x => x.severity === Severity.error, html `<${iconExclamationMarkTag}></${iconExclamationMarkTag}>`)}
66233
- ${when(x => x.severity === Severity.warning, html `<${iconTriangleFilledTag}></${iconTriangleFilledTag}>`)}
66234
- ${when(x => x.severity === Severity.success, html `<${iconCheckTag}></${iconCheckTag}>`)}
66235
- </div>
66236
- </div>
66237
- <div class="content">
66238
- <div class="title-wrapper">
66239
- ${startSlotTemplate(context, definition)}
66240
- <div class="title"><slot name="title"></slot></div>
66241
- ${endSlotTemplate(context, definition)}
66242
- <div class="line"></div>
66243
- </div>
66244
- <div class="subtitle">
66245
- <slot name="subtitle"></slot>
66371
+ ${when(x => x.severity === Severity.error, html `<${iconExclamationMarkTag} role="img" aria-label="${x => popupIconErrorLabel.getValueFor(x)}"></${iconExclamationMarkTag}>`)}
66372
+ ${when(x => x.severity === Severity.warning, html `<${iconTriangleFilledTag} role="img" aria-label="${x => popupIconWarningLabel.getValueFor(x)}"></${iconTriangleFilledTag}>`)}
66373
+ ${when(x => x.severity === Severity.success, html `<${iconCheckTag} role="img" aria-label="${x => popupIconCompletedLabel.getValueFor(x)}"></${iconCheckTag}>`)}
66246
66374
  </div>
66247
66375
  </div>
66376
+ <div class="top-spacer"></div>
66377
+ <div class="title">${startSlotTemplate(context, definition)}<slot name="title"></slot>${endSlotTemplate(context, definition)}</div>
66378
+ <div class="line"></div>
66379
+ <div class="subtitle"><slot name="subtitle"></slot></div>
66248
66380
  </button>
66249
66381
  ${severityTextTemplate}
66250
- </div>
66382
+ </li>
66251
66383
  </template>
66252
66384
  `;
66253
66385
 
@@ -66310,7 +66442,23 @@ ${nextLine.slice(indentLevel + 2)}`;
66310
66442
 
66311
66443
  :host {
66312
66444
  border: none;
66313
- gap: 0px;
66445
+ gap: ${smallPadding};
66446
+ }
66447
+
66448
+ :host([orientation="vertical"]) {
66449
+ flex-direction: column;
66450
+ }
66451
+
66452
+ ol {
66453
+ display: contents;
66454
+ }
66455
+
66456
+ slot[name="step"]::slotted(*) {
66457
+ flex-grow: 1;
66458
+ }
66459
+
66460
+ slot[name="step"]::slotted(:last-child) {
66461
+ flex-grow: 0;
66314
66462
  }
66315
66463
  `;
66316
66464
 
@@ -66334,16 +66482,44 @@ ${nextLine.slice(indentLevel + 2)}`;
66334
66482
  ], DevicePixelRatio.prototype, "current", void 0);
66335
66483
  const devicePixelRatio = new DevicePixelRatio();
66336
66484
 
66337
- const template$n = html `
66338
- <style>:host{--ni-private-device-resolution: ${() => devicePixelRatio.current};}</style>
66339
- <slot name="step"></slot>
66340
- `;
66485
+ const template$n = html `<ol><slot
66486
+ style="--ni-private-device-pixel-ratio: ${() => devicePixelRatio.current};"
66487
+ name="step"
66488
+ ${slotted('steps')}
66489
+ ></slot></ol>`;
66341
66490
 
66342
66491
  /**
66343
66492
  * A nimble-styled stepper
66344
66493
  */
66345
66494
  class Stepper extends FoundationElement {
66495
+ constructor() {
66496
+ super(...arguments);
66497
+ this.orientation = StepperOrientation.horizontal;
66498
+ }
66499
+ orientationChanged() {
66500
+ this.updateStepInternals();
66501
+ }
66502
+ stepsChanged() {
66503
+ this.updateStepInternals();
66504
+ }
66505
+ updateStepInternals() {
66506
+ if (!this.steps) {
66507
+ return;
66508
+ }
66509
+ const lastIndex = this.steps.length - 1;
66510
+ this.steps.forEach((step, index) => {
66511
+ step.stepInternals.orientation = this.orientation;
66512
+ step.stepInternals.last = index === lastIndex;
66513
+ step.stepInternals.position = index + 1;
66514
+ });
66515
+ }
66346
66516
  }
66517
+ __decorate([
66518
+ attr
66519
+ ], Stepper.prototype, "orientation", void 0);
66520
+ __decorate([
66521
+ observable
66522
+ ], Stepper.prototype, "steps", void 0);
66347
66523
  const nimbleStepper = Stepper.compose({
66348
66524
  baseName: 'stepper',
66349
66525
  template: template$n,