lightning-base-components 1.18.1-alpha → 1.18.2-alpha

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 (215) hide show
  1. package/metadata/raptor.json +5 -0
  2. package/package.json +43 -1
  3. package/scopedImports/@salesforce-internal-core.appVersion.js +1 -1
  4. package/src/lightning/accordion/accordion.css +12 -0
  5. package/src/lightning/accordion/accordion.html +3 -1
  6. package/src/lightning/accordion/accordion.js +4 -2
  7. package/src/lightning/accordion/accordion.slds.css +671 -0
  8. package/src/lightning/accordionSection/accordion-section.slds.css +647 -0
  9. package/src/lightning/accordionSection/accordionSection.css +14 -0
  10. package/src/lightning/accordionSection/accordionSection.html +23 -19
  11. package/src/lightning/accordionSection/accordionSection.js +29 -2
  12. package/src/lightning/ariaObserver/__docs__/ariaObserver.md +21 -9
  13. package/src/lightning/ariaObserver/ariaObserver.js +185 -154
  14. package/src/lightning/ariaObserver/polyfill.js +639 -0
  15. package/src/lightning/avatar/avatar.css +2 -0
  16. package/src/lightning/avatar/avatar.html +2 -0
  17. package/src/lightning/avatar/avatar.js +18 -15
  18. package/src/lightning/avatar/avatar.slds.css +272 -0
  19. package/src/lightning/baseCombobox/base-combobox.slds.css +1585 -0
  20. package/src/lightning/baseCombobox/baseCombobox.css +11 -1
  21. package/src/lightning/baseCombobox/baseCombobox.html +154 -146
  22. package/src/lightning/baseCombobox/baseCombobox.js +82 -46
  23. package/src/lightning/baseCombobox/spinner.slds.css +438 -0
  24. package/src/lightning/baseComboboxItem/baseComboboxItem.js +4 -2
  25. package/src/lightning/baseComboboxItem/inline.css +2 -0
  26. package/src/lightning/breadcrumb/breadcrumb.css +2 -2
  27. package/src/lightning/breadcrumb/breadcrumb.js +4 -2
  28. package/src/lightning/breadcrumb/breadcrumb.slds.css +2 -7
  29. package/src/lightning/breadcrumbs/breadcrumbs.css +2 -2
  30. package/src/lightning/breadcrumbs/breadcrumbs.js +3 -2
  31. package/src/lightning/breadcrumbs/breadcrumbs.slds.css +7 -1
  32. package/src/lightning/button/__examples__/inverse/inverse.css +8 -0
  33. package/src/lightning/button/__examples__/inverse/inverse.html +3 -2
  34. package/src/lightning/button/button.css +2 -0
  35. package/src/lightning/button/button.html +4 -2
  36. package/src/lightning/button/button.js +21 -0
  37. package/src/lightning/button/button.slds.css +527 -0
  38. package/src/lightning/buttonGroup/buttonGroup.css +2 -2
  39. package/src/lightning/buttonGroup/buttonGroup.js +3 -2
  40. package/src/lightning/buttonIcon/button-icon.slds.css +215 -453
  41. package/src/lightning/buttonIcon/buttonIcon.css +2 -2
  42. package/src/lightning/buttonIcon/buttonIcon.js +4 -0
  43. package/src/lightning/buttonIconStateful/button-icon-stateful.slds.css +215 -453
  44. package/src/lightning/buttonIconStateful/buttonIconStateful.css +2 -2
  45. package/src/lightning/buttonMenu/{dropdown.slds.css → button-menu.slds.css} +853 -217
  46. package/src/lightning/buttonMenu/buttonMenu.css +2 -2
  47. package/src/lightning/buttonMenu/buttonMenu.html +2 -2
  48. package/src/lightning/buttonMenu/buttonMenu.js +10 -14
  49. package/src/lightning/buttonStateful/button-stateful.slds.css +225 -457
  50. package/src/lightning/buttonStateful/buttonStateful.css +2 -2
  51. package/src/lightning/buttonStateful/buttonStateful.js +3 -2
  52. package/src/lightning/calendar/__examples__/basic/basic.html +7 -0
  53. package/src/lightning/calendar/__examples__/basic/basic.js +3 -0
  54. package/src/lightning/calendar/calendar.css +3 -0
  55. package/src/lightning/calendar/calendar.html +12 -9
  56. package/src/lightning/calendar/calendar.js +15 -1
  57. package/src/lightning/calendar/calendar.slds.css +2048 -0
  58. package/src/lightning/card/card.css +2 -2
  59. package/src/lightning/card/card.js +3 -2
  60. package/src/lightning/card/card.slds.css +141 -88
  61. package/src/lightning/colorPickerCustom/colorPickerCustom.css +2 -2
  62. package/src/lightning/colorPickerCustom/colorPickerCustom.js +3 -2
  63. package/src/lightning/colorPickerPanel/color-picker-panel.slds.css +11 -38
  64. package/src/lightning/colorPickerPanel/colorPickerPanel.css +3 -2
  65. package/src/lightning/colorPickerPanel/colorPickerPanel.js +4 -2
  66. package/src/lightning/colorPickerPanel/popover.slds.css +121 -0
  67. package/src/lightning/combobox/combobox.css +4 -0
  68. package/src/lightning/combobox/combobox.html +31 -29
  69. package/src/lightning/combobox/combobox.js +21 -4
  70. package/src/lightning/combobox/combobox.slds.css +13 -0
  71. package/src/lightning/combobox/form-element.slds.css +281 -0
  72. package/src/lightning/configProvider/defaultConfig.js +2 -1
  73. package/src/lightning/datepicker/datepicker.css +3 -0
  74. package/src/lightning/datepicker/datepicker.html +7 -4
  75. package/src/lightning/datepicker/datepicker.js +73 -19
  76. package/src/lightning/datepicker/form-element.slds.css +281 -0
  77. package/src/lightning/datepicker/input-text.slds.css +398 -0
  78. package/src/lightning/datetimepicker/datetimepicker.css +3 -0
  79. package/src/lightning/datetimepicker/datetimepicker.html +9 -3
  80. package/src/lightning/datetimepicker/datetimepicker.js +39 -35
  81. package/src/lightning/datetimepicker/form-element.slds.css +281 -0
  82. package/src/lightning/datetimepicker/input-text.slds.css +398 -0
  83. package/src/lightning/dualListbox/dualListbox.css +2 -2
  84. package/src/lightning/dualListbox/dualListbox.html +3 -3
  85. package/src/lightning/dualListbox/dualListbox.js +31 -6
  86. package/src/lightning/dualListbox/form-element.slds.css +83 -34
  87. package/src/lightning/dualListbox/keyboard.js +20 -1
  88. package/src/lightning/dynamicIcon/dynamicIcon.js +3 -2
  89. package/src/lightning/dynamicIcon/ellie.css +1 -1
  90. package/src/lightning/dynamicIcon/eq.css +1 -1
  91. package/src/lightning/dynamicIcon/score.css +1 -1
  92. package/src/lightning/dynamicIcon/strength.css +1 -1
  93. package/src/lightning/dynamicIcon/trend.css +1 -1
  94. package/src/lightning/dynamicIcon/waffle.css +1 -1
  95. package/src/lightning/formattedRichText/linkify.js +2 -2
  96. package/src/lightning/helptext/form-element.slds.css +83 -34
  97. package/src/lightning/helptext/help-text.slds.css +215 -453
  98. package/src/lightning/helptext/helptext.css +2 -2
  99. package/src/lightning/helptext/helptext.js +3 -2
  100. package/src/lightning/i18nCldrOptions/README.md +5 -0
  101. package/src/lightning/i18nService/README.md +5 -0
  102. package/src/lightning/icon/icon.css +2 -2
  103. package/src/lightning/icon/icon.js +16 -2
  104. package/src/lightning/icon/icon.slds.css +29 -17
  105. package/src/lightning/icon/iconColors.js +1 -0
  106. package/src/lightning/input/__examples__/text/text.html +0 -1
  107. package/src/lightning/input/form-element.slds.css +281 -0
  108. package/src/lightning/input/input-checkbox.slds.css +3 -12
  109. package/src/lightning/input/input-text.slds.css +239 -128
  110. package/src/lightning/input/input.css +2 -1
  111. package/src/lightning/input/input.html +8 -8
  112. package/src/lightning/input/input.js +107 -73
  113. package/src/lightning/internationalizationLibrary/README.md +24 -0
  114. package/src/lightning/internationalizationLibrary/utils.js +4 -1
  115. package/src/lightning/layout/__docs__/layout.md +1 -1
  116. package/src/lightning/layout/__examples__/simple/simple.css +1 -1
  117. package/src/lightning/layout/layout.css +5 -1
  118. package/src/lightning/layout/layout.js +4 -2
  119. package/src/lightning/layoutItem/__examples__/alignmentBump/alignmentBump.css +1 -1
  120. package/src/lightning/layoutItem/__examples__/sizePerDevice/sizePerDevice.css +0 -1
  121. package/src/lightning/layoutItem/layoutItem.css +5 -0
  122. package/src/lightning/layoutItem/layoutItem.js +4 -2
  123. package/src/lightning/menuDivider/menu-divider.slds.css +15 -0
  124. package/src/lightning/menuDivider/menuDivider.css +3 -0
  125. package/src/lightning/menuDivider/menuDivider.html +1 -1
  126. package/src/lightning/menuDivider/menuDivider.js +4 -2
  127. package/src/lightning/menuItem/menu-item.slds.css +140 -0
  128. package/src/lightning/menuItem/menuItem.css +3 -0
  129. package/src/lightning/menuItem/menuItem.html +43 -41
  130. package/src/lightning/menuItem/menuItem.js +4 -4
  131. package/src/lightning/menuSubheader/menu-subheader.slds.css +22 -0
  132. package/src/lightning/menuSubheader/menuSubheader.css +3 -0
  133. package/src/lightning/menuSubheader/menuSubheader.html +3 -1
  134. package/src/lightning/menuSubheader/menuSubheader.js +4 -6
  135. package/src/lightning/modal/__docs__/modal.md +3 -1
  136. package/src/lightning/modal/__modalUtils__/modalContainerTestConstants.js +267 -0
  137. package/src/lightning/modal/__modalUtils__/modalContainerTestMethods.js +1165 -0
  138. package/src/lightning/modal/__modalUtils__/modalContainerTestMockData.js +131 -0
  139. package/src/lightning/modal/modal.js +1 -1
  140. package/src/lightning/pill/avatar.slds.css +272 -0
  141. package/src/lightning/pill/link.css +3 -0
  142. package/src/lightning/pill/link.html +1 -1
  143. package/src/lightning/pill/pill.js +29 -9
  144. package/src/lightning/pill/pill.slds.css +168 -0
  145. package/src/lightning/pill/plain.css +3 -0
  146. package/src/lightning/pill/plain.html +1 -1
  147. package/src/lightning/pill/plainLink.css +3 -0
  148. package/src/lightning/pill/plainLink.html +1 -1
  149. package/src/lightning/pillContainer/barePillContainer.css +3 -0
  150. package/src/lightning/pillContainer/barePillContainer.html +1 -2
  151. package/src/lightning/pillContainer/listbox.slds.css +267 -0
  152. package/src/lightning/pillContainer/pill-container.slds.css +22 -0
  153. package/src/lightning/pillContainer/pill.slds.css +168 -0
  154. package/src/lightning/pillContainer/pillContainer.js +7 -3
  155. package/src/lightning/pillContainer/standardPillContainer.css +4 -0
  156. package/src/lightning/pillContainer/standardPillContainer.html +2 -2
  157. package/src/lightning/popup/popover.slds.css +119 -119
  158. package/src/lightning/popup/popup.css +1 -2
  159. package/src/lightning/popup/popup.js +3 -2
  160. package/src/lightning/positionLibrary/elementProxy.js +7 -2
  161. package/src/lightning/positionLibrary/util.js +8 -0
  162. package/src/lightning/primitiveBubble/primitiveBubble.css +2 -2
  163. package/src/lightning/primitiveBubble/primitiveBubble.js +4 -2
  164. package/src/lightning/primitiveButton/primitiveButton.js +5 -4
  165. package/src/lightning/primitiveCellFactory/cellWithStandardLayout.html +29 -21
  166. package/src/lightning/primitiveCellFactory/primitiveCellFactory.js +4 -0
  167. package/src/lightning/primitiveColorpickerButton/color-picker-button.slds.css +31 -19
  168. package/src/lightning/primitiveColorpickerButton/primitiveColorpickerButton.css +2 -2
  169. package/src/lightning/primitiveColorpickerButton/primitiveColorpickerButton.js +5 -3
  170. package/src/lightning/primitiveIcon/icon.slds.css +209 -0
  171. package/src/lightning/primitiveIcon/primitiveIcon.css +2 -1
  172. package/src/lightning/primitiveIcon/primitiveIcon.html +1 -1
  173. package/src/lightning/primitiveIcon/primitiveIcon.js +18 -11
  174. package/src/lightning/progressStep/progressStep.js +10 -13
  175. package/src/lightning/radioGroup/radioGroup.css +2 -1
  176. package/src/lightning/radioGroup/radioGroup.js +4 -2
  177. package/src/lightning/select/form-element.slds.css +83 -34
  178. package/src/lightning/select/select.css +2 -2
  179. package/src/lightning/select/select.js +4 -2
  180. package/src/lightning/select/select.slds.css +86 -34
  181. package/src/lightning/sldsCommon/sldsCommon.css +135 -75
  182. package/src/lightning/spinner/spinner.css +2 -2
  183. package/src/lightning/spinner/spinner.js +4 -2
  184. package/src/lightning/tabBar/tab-bar.slds.css +334 -0
  185. package/src/lightning/tabBar/tabBar.css +2 -0
  186. package/src/lightning/tabBar/tabBar.html +4 -3
  187. package/src/lightning/tabBar/tabBar.js +30 -3
  188. package/src/lightning/tabset/tabset.html +5 -4
  189. package/src/lightning/tabset/tabset.js +29 -11
  190. package/src/lightning/timepicker/form-element.slds.css +281 -0
  191. package/src/lightning/timepicker/timepicker.css +3 -0
  192. package/src/lightning/timepicker/timepicker.html +5 -1
  193. package/src/lightning/timepicker/timepicker.js +18 -15
  194. package/src/lightning/timepicker/timepicker.slds.css +18 -0
  195. package/src/lightning/tooltipLibrary/tooltipLibrary.js +21 -19
  196. package/src/lightning/utilsPrivate/browser.js +5 -3
  197. package/src/lightning/utilsPrivate/os.js +6 -4
  198. package/src/lightning/utilsPrivate/ssr.js +4 -0
  199. package/src/lightning/utilsPrivate/utilsPrivate.js +2 -0
  200. package/src/lightning/verticalNavigation/verticalNavigation.css +2 -1
  201. package/src/lightning/verticalNavigation/verticalNavigation.js +3 -2
  202. package/src/lightning/verticalNavigationSection/verticalNavigationSection.css +2 -1
  203. package/src/lightning/verticalNavigationSection/verticalNavigationSection.js +3 -2
  204. package/src/lightning/accordion/__perf__DISABLED/accordion-perf-utils.js +0 -76
  205. package/src/lightning/accordion/__perf__DISABLED/accordion10Multiple25SectionEach.perf.js +0 -57
  206. package/src/lightning/accordion/__perf__DISABLED/accordion10Simple25SectionEach.perf.js +0 -37
  207. package/src/lightning/accordion/__perf__DISABLED/accordionMultiple50Section.perf.js +0 -45
  208. package/src/lightning/accordion/__perf__DISABLED/accordionSimple50Section.perf.js +0 -35
  209. package/src/lightning/accordion/__perf__DISABLED/container/container.html +0 -15
  210. package/src/lightning/accordion/__perf__DISABLED/container/container.js +0 -7
  211. package/src/lightning/positionLibrary/__component__/positionLibraryBounding.spec.js +0 -319
  212. package/src/lightning/positionLibrary/__component__/x/bounding/bounding.css +0 -16
  213. package/src/lightning/positionLibrary/__component__/x/bounding/bounding.html +0 -36
  214. package/src/lightning/positionLibrary/__component__/x/bounding/bounding.js +0 -122
  215. /package/src/lightning/{baseCombobox → baseComboboxItem}/listbox.slds.css +0 -0
@@ -0,0 +1,281 @@
1
+
2
+ /* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
3
+ Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
4
+ @supports (--styling-hooks: '') {
5
+ /* TODO: Swap with utility classes */
6
+ :host([data-render-mode="shadow"]) fieldset {
7
+ border: 0;
8
+ margin: 0;
9
+ padding: 0;
10
+ }
11
+
12
+ /* FORM ELEMENT: BASE */
13
+ :host([data-render-mode="shadow"]) .slds-form-element {
14
+ position: relative;
15
+ min-width: 0;
16
+ }
17
+
18
+ :host([data-render-mode="shadow"]) .slds-form-element__label {
19
+ overflow-wrap: break-word;
20
+ word-wrap: break-word;
21
+ hyphens: auto;
22
+ display: inline-block;
23
+ color: var(--sds-g-color-neutral-base-30, #444444);
24
+ font-size: var(--sds-g-font-scale-neg-3, 0.75rem);
25
+ padding-inline-end: var(--sds-g-spacing-2, 0.5rem);
26
+ padding-block-start: var(--sds-g-spacing-1, 0.25rem);
27
+ margin-block-end: calc(var(--sds-g-spacing-1, 0.25rem) / 2);
28
+ }
29
+
30
+ :host([data-render-mode="shadow"]) .slds-form-element__label:empty {
31
+ margin: 0;
32
+ }
33
+
34
+ :host([data-render-mode="shadow"]) .slds-form-element__control {
35
+ clear: left; /* NOTE: Ideally we want left to be inline-start but browser support is not ready for that value. We need to figure out better RTL support */
36
+ position: relative;
37
+ }
38
+
39
+ :host([data-render-mode="shadow"]) .slds-form-element__icon {
40
+ display: inline-block;
41
+ position: relative;
42
+ padding-block-start: var(--sds-g-spacing-1, 0.25rem);
43
+ vertical-align: top;
44
+ line-height: var(--sds-g-font-lineheight-1, 1);
45
+ z-index: 1;
46
+ }
47
+
48
+ :host([data-render-mode="shadow"]) .slds-form-element__icon .slds-button_icon {
49
+ position: relative;
50
+ }
51
+
52
+ :host([data-render-mode="shadow"]) .slds-form-element__help,:host([data-render-mode="shadow"])
53
+ .slds-form-element__helper {
54
+ font-size: var(--sds-g-font-scale-neg-3, 0.75rem);
55
+ margin-block-start: calc(var(--sds-g-spacing-1, 0.25rem) / 2);
56
+ display: block;
57
+ }
58
+
59
+ :host([data-render-mode="shadow"]) .slds-form-element_edit .slds-form-element__static {
60
+ width: calc(100% - var(--sds-g-sizing-7, 1.5rem));
61
+ }
62
+
63
+ :host([data-render-mode="shadow"]) .slds-form-element_readonly {
64
+ flex-basis: 0%;
65
+ border-bottom: var(--sds-g-sizing-border-1, 1px) solid var(--sds-g-color-neutral-base-90, #e5e5e5);
66
+ margin-block-end: 0;
67
+ }
68
+
69
+ :host([data-render-mode="shadow"]) .slds-form-element_readonly .slds-form-element__control {
70
+ padding-block-start: calc(var(--sds-g-spacing-1, 0.25rem) / 2);
71
+ padding-block-end: calc(var(--sds-g-spacing-1, 0.25rem) / 2);
72
+ }
73
+
74
+ :host([data-render-mode="shadow"]) .slds-form-element_readonly .slds-form-element__label {
75
+ margin-block-end: 0;
76
+ }
77
+
78
+ :host([data-render-mode="shadow"]) .slds-form-element__legend {
79
+ font-weight: var(--sds-g-font-weight-7, 700);
80
+ float: left;
81
+ }
82
+
83
+ :host([data-render-mode="shadow"]) .slds-form-element__addon {
84
+ display: inline-block;
85
+ margin-block-start: 0;
86
+ margin-block-end: 0;
87
+ margin-inline-start: var(--sds-g-spacing-2, 0.5rem);
88
+ margin-inline-end: var(--sds-g-spacing-2, 0.5rem);
89
+ align-self: center;
90
+ }
91
+
92
+ :host([data-render-mode="shadow"]) .slds-form-element__static {
93
+ overflow-wrap: break-word;
94
+ word-wrap: break-word;
95
+ word-break: break-word;
96
+ display: inline-block;
97
+ font-size: var(--sds-g-font-scale-neg-1, 0.875rem);
98
+ font-weight: var(--sds-g-font-weight-4, 400);
99
+ color: var(--sds-g-color-neutral-base-10, #181818);
100
+ width: 100%;
101
+ }
102
+
103
+ :host([data-render-mode="shadow"]) .slds-form-element__static.slds-text-longform *:last-child {
104
+ margin-block-end: 0;
105
+ }
106
+
107
+ :host([data-render-mode="shadow"]) .slds-form-element__static:empty {
108
+ min-height: calc(var(--sds-g-sizing-6, 1.25rem) + 1px);
109
+ vertical-align: bottom;
110
+ }
111
+
112
+ :host([data-render-mode="shadow"]) .slds-form-element__static--edit {
113
+ width: calc(100% - var(--sds-g-sizing-7, 1.5rem));
114
+ }
115
+
116
+ :host([data-render-mode="shadow"]) .slds-required {
117
+ color: var(--sds-g-color-error-base-50, #ea001e);
118
+ margin-block-start: 0;
119
+ margin-block-end: 0;
120
+ margin-inline-start: calc(var(--sds-g-spacing-1, 0.25rem) / 2);
121
+ margin-inline-end: calc(var(--sds-g-spacing-1, 0.25rem) / 2);
122
+ }
123
+
124
+ :host([data-render-mode="shadow"]) .slds-has-error .slds-form-element__help {
125
+ color: var(--sds-g-color-error-base-50, #ea001e);
126
+ }
127
+
128
+ :host([data-render-mode="shadow"][invalid]) .slds-form-element__help {
129
+ color: var(--sds-g-color-error-base-50, #ea001e);
130
+ }
131
+
132
+ /* --------------------------------------- */
133
+
134
+ /* FORM ELEMENT: STACKED */
135
+
136
+ :host([data-render-mode="shadow"][variant~='label-stacked']) {
137
+ display: block;
138
+ }
139
+
140
+ /* TODO: Using `:not` is currently not working, and it could break the build because of issues with the dist script */
141
+
142
+ /* :host([variant~='label-stacked']):not(.slds-form-element_readonly) {
143
+ margin-block-end: var(--sds-g-spacing-2);
144
+ }
145
+
146
+ :host([variant~='label-stacked']):not(.slds-is-editing) {
147
+ padding: 0 var(--sds-g-spacing-1);
148
+ } */
149
+
150
+ /* :host([variant~='label-stacked']):not([class*="slds-size"]) {
151
+ width: 100%;
152
+ flex-basis: 100%;
153
+ } */
154
+
155
+ :host([data-render-mode="shadow"][variant~='label-stacked']) .slds-form-element {
156
+ padding: 0;
157
+ margin-block-end: 0;
158
+ }
159
+
160
+ :host([data-render-mode="shadow"][variant~='label-stacked']) .slds-form-element__label,:host([data-render-mode="shadow"][variant~='label-stacked']) .slds-form-element__control {
161
+ border-bottom: 0; /* Remove border when using legacy version of slds-form-element */
162
+ padding-inline-start: 0;
163
+ }
164
+
165
+ :host([data-render-mode="shadow"][variant~='label-stacked']) .slds-form-element__control {
166
+ width: 100%;
167
+ flex-basis: 100%;
168
+ clear: left;
169
+ }
170
+
171
+ :host([data-render-mode="shadow"][variant~='label-stacked']) .slds-form-element__icon {
172
+ float: none;
173
+ padding-block-start: var(--sds-g-spacing-1, 0.25rem);
174
+ }
175
+
176
+ /* --------------------------------------- */
177
+
178
+ /* FORM ELEMENT: INLINE */
179
+
180
+ :host([data-render-mode="shadow"][variant~='label-inline']) {
181
+ display: block;
182
+ }
183
+
184
+ /*
185
+ we have to combine with slds class here to avoid duplication
186
+ of this rule in child elements who import this stylesheet
187
+ in lighting-input this slds class is synonymous with the variant
188
+ */
189
+
190
+ :host([data-render-mode="shadow"][variant~='label-inline'].slds-form-element_horizontal) {
191
+ padding: var(--sds-g-spacing-1, 0.25rem);
192
+ margin-block-end: var(--sds-g-spacing-2, 0.5rem);
193
+ }
194
+
195
+ /* TODO: Using `:not` is currently not working, and it could break the build because of issues with the dist script */
196
+
197
+ /* :host([variant~='label-inline']):not(.slds-form-element_readonly) {
198
+ margin-block-end: var(--sds-g-spacing-2);
199
+ }
200
+
201
+ :host([variant~='label-inline']):not([class*="slds-size"]) {
202
+ width: 100%;
203
+ flex-basis: 100%;
204
+ }
205
+
206
+ :host([variant~='label-inline']:not(.slds-is-editing)) {
207
+ padding: var(--sds-g-spacing-1);
208
+ } */
209
+
210
+ :host([data-render-mode="shadow"][variant~='label-inline']).slds-is-edited {
211
+ padding-block-start: var(--sds-g-sizing-6, 1.25rem)
212
+ }
213
+
214
+ @media (min-width: 48em) {
215
+ :host([data-render-mode="shadow"][variant~='label-inline']) .slds-form-element__label {
216
+ float: left;
217
+ max-width: calc(33% - var(--sds-g-sizing-6, 1.25rem)); /* Removing icon width for when the help-text icon is present */
218
+ flex-basis: calc(33% - var(--sds-g-sizing-6, 1.25rem)); /* Some form element controls are set to display:flex */
219
+ flex-grow: 1; /* For IE and Safari which didn't auto expand to the available space */
220
+ margin-block-end: 0;
221
+ position: relative;
222
+ z-index: 1;
223
+ }
224
+
225
+ :host([data-render-mode="shadow"][variant~='label-inline']) lightning-helptext {
226
+ float: left;
227
+ }
228
+
229
+ :host([data-render-mode="shadow"][variant~='label-inline']) .slds-form-element__control {
230
+ margin-inline-start: 33%;
231
+ clear: none; /* Reset clear: left when switching to horizontal form layout */
232
+ }
233
+
234
+ :host([data-render-mode="shadow"][variant~='label-inline']) .slds-form-element__control .slds-form-element__control {
235
+ padding-inline-start: 0; /* Remove left padding on nested form controls, due to issues related to lightning-form components */
236
+ }
237
+
238
+ :host([data-render-mode="shadow"][variant~='label-inline']) .slds-dueling-list__column .slds-form-element__label {
239
+ width: auto;
240
+ max-width: 100%;
241
+ -ms-flex-preferred-size: auto;
242
+ flex-basis: auto;
243
+ float: none;
244
+ position: relative;
245
+ padding-inline-start: 0;
246
+ margin-block-end: 0;
247
+ }
248
+
249
+ :host([data-render-mode="shadow"][variant~='label-inline']) .slds-form-element__help {
250
+ margin-inline-start: 33%;
251
+ }
252
+
253
+ :host([data-render-mode="shadow"][variant~='label-inline']) .slds-dueling-list {
254
+ clear: none;
255
+ }
256
+ }
257
+
258
+ /* --------------------------------------- */
259
+
260
+ /* FORM ELEMENT: COMPOUND */
261
+
262
+ :host([data-render-mode="shadow"]) .slds-form-element_compound .slds-form-element__row {
263
+ display: flex;
264
+ margin-bottom: var(--sds-g-spacing-1, 0.25rem);
265
+ margin-left: calc(var(--sds-g-spacing-1, 0.25rem) * -1);
266
+ margin-right: calc(var(--sds-g-spacing-1, 0.25rem) * -1);
267
+ }
268
+
269
+ :host([data-render-mode="shadow"]) .slds-form-element_compound .slds-form-element__row .slds-form-element__label {
270
+ padding-top: 0;
271
+ }
272
+
273
+ :host([data-render-mode="shadow"]) .slds-form-element_compound .slds-form-element {
274
+ padding-left: var(--sds-g-spacing-1, 0.25rem);
275
+ padding-right: var(--sds-g-spacing-1, 0.25rem);
276
+ }
277
+
278
+ :host([data-render-mode="shadow"]) .slds-form-element_address .slds-form-element__row {
279
+ align-items: flex-end;
280
+ }
281
+ }
@@ -0,0 +1,3 @@
1
+ @import 'lightning/sldsCommon';
2
+ @import './timepicker.slds.css';
3
+ @import './form-element.slds.css';
@@ -10,6 +10,7 @@
10
10
  </template>
11
11
  <div class="slds-form-element__control">
12
12
  <lightning-base-combobox
13
+ part="input-container"
13
14
  onready={handleReady}
14
15
  autocomplete={autocomplete}
15
16
  dropdown-height="small"
@@ -33,8 +34,11 @@
33
34
  onblur={handleBlur}
34
35
  onselect={handleTimeSelect}
35
36
  data-aria-invalid={computedAriaInvalid}
37
+ root-aria-node={rootAriaNode}
38
+ input-described-by-elements={ariaDescribedByElements}
39
+ aria-error-message-elements={ariaErrorMessageElements}
36
40
  >
37
41
  </lightning-base-combobox>
38
42
  </div>
39
- <div id="error-message" data-error-message class={computedClass} aria-live="assertive">{_errorMessage}</div>
43
+ <div id="error-message" data-error-message class={computedClass} aria-live="assertive">{_errorMessage}</div>
40
44
  </template>
@@ -1,5 +1,4 @@
1
1
  /* eslint-disable @lwc/lwc/no-api-reassignments */
2
-
3
2
  import labelInvalidDate from '@salesforce/label/LightningDateTimePicker.invalidDate';
4
3
  import labelRangeOverflow from '@salesforce/label/LightningDateTimePicker.rangeOverflow';
5
4
  import labelRangeUnderflow from '@salesforce/label/LightningDateTimePicker.rangeUnderflow';
@@ -22,6 +21,7 @@ import {
22
21
  synchronizeAttrs,
23
22
  normalizeString,
24
23
  computeAriaInvalid,
24
+ reflectAttribute,
25
25
  } from 'lightning/utilsPrivate';
26
26
  import { normalizeVariant, VARIANT } from 'lightning/inputUtils';
27
27
 
@@ -57,6 +57,8 @@ export default class LightningTimePicker extends LightningElement {
57
57
  @track _readonly = true;
58
58
  @track _describedByElements = [];
59
59
 
60
+ @api rootAriaNode;
61
+
60
62
  /**
61
63
  * Controls auto-filling of the input. Set the attribute to pass
62
64
  * through autocomplete values to be interpreted by the browser.
@@ -72,6 +74,11 @@ export default class LightningTimePicker extends LightningElement {
72
74
  @api name;
73
75
  @api placeholder = '';
74
76
 
77
+ @api
78
+ get comboboxComponent() {
79
+ return this.template.querySelector('lightning-base-combobox');
80
+ }
81
+
75
82
  @api messageWhenValueMissing;
76
83
  _ariaDescribedByElements;
77
84
  _timeStyle = TIME_STYLE.SHORT;
@@ -206,6 +213,7 @@ export default class LightningTimePicker extends LightningElement {
206
213
 
207
214
  set variant(value) {
208
215
  this._variant = normalizeVariant(value);
216
+ reflectAttribute(this, 'variant', this._variant);
209
217
  }
210
218
 
211
219
  @api
@@ -275,24 +283,19 @@ export default class LightningTimePicker extends LightningElement {
275
283
  this.connected = false;
276
284
  }
277
285
 
278
- synchronizeA11y() {
279
- const label = this.template.querySelector('label');
280
- const comboBox = this.template.querySelector('lightning-base-combobox');
281
- let describedByElements = [];
282
- if (this._ariaDescribedByElements) {
283
- describedByElements = describedByElements.concat(
284
- this._ariaDescribedByElements
285
- );
286
- }
286
+ @api ariaErrorMessageElement;
287
287
 
288
+ get ariaErrorMessageElements() {
289
+ const elements = [this.ariaErrorMessageElement];
288
290
  if (this._errorMessage) {
289
- const errorMessage = this.template.querySelector(
290
- '[data-error-message]'
291
- );
292
- describedByElements.push(errorMessage);
291
+ elements.push(this.template.querySelector('[data-error-message]'));
293
292
  }
293
+ return elements;
294
+ }
295
+
296
+ synchronizeA11y() {
297
+ const label = this.template.querySelector('label');
294
298
 
295
- comboBox.inputDescribedByElements = describedByElements;
296
299
  synchronizeAttrs(label, {
297
300
  for: this._mainInputId,
298
301
  });
@@ -0,0 +1,18 @@
1
+
2
+ /* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
3
+ Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
4
+ @supports (--styling-hooks: '') {
5
+ /* ASSISTIVE TEXT */
6
+ :host([data-render-mode="shadow"]) .slds-assistive-text {
7
+ position: absolute !important;
8
+ margin: -1px !important;
9
+ border: 0 !important;
10
+ padding: 0 !important;
11
+ width: 1px !important;
12
+ height: 1px !important;
13
+ overflow: hidden !important;
14
+ clip: rect(0 0 0 0) !important;
15
+ text-transform: none !important;
16
+ white-space: nowrap !important;
17
+ }
18
+ }
@@ -1,12 +1,8 @@
1
1
  import { createElement } from 'lwc';
2
2
  import { AutoPosition, Direction } from 'lightning/positionLibrary';
3
- import {
4
- assert,
5
- guid,
6
- normalizeAriaAttribute,
7
- normalizeString,
8
- } from 'lightning/utilsPrivate';
3
+ import { assert, guid, normalizeString } from 'lightning/utilsPrivate';
9
4
  import LightningPrimitiveBubble from 'lightning/primitiveBubble';
5
+ import AriaObserver from 'lightning/ariaObserver';
10
6
  export { Direction } from 'lightning/positionLibrary';
11
7
 
12
8
  export const BUBBLE_PREFIX = `salesforce-lightning-tooltip-bubble`;
@@ -80,6 +76,7 @@ export class Tooltip {
80
76
  _visible = false;
81
77
  _isFocusEvent = false;
82
78
  _initialResize = true;
79
+ _ariaObserver = null;
83
80
 
84
81
  _config = {};
85
82
 
@@ -150,16 +147,23 @@ export class Tooltip {
150
147
  this.addInfoListeners();
151
148
  break;
152
149
  }
153
- const ariaDescribedBy = normalizeAriaAttribute([
154
- target.getAttribute(ARIA_DESCRIBEDBY),
155
- this._element().contentId,
156
- ]);
157
- target.setAttribute(ARIA_DESCRIBEDBY, ariaDescribedBy);
150
+
151
+ this._ariaObserver = new AriaObserver(this._root);
152
+
153
+ this._ariaObserver.connect({
154
+ attribute: ARIA_DESCRIBEDBY,
155
+ targetNode: this._target(),
156
+ relatedNodes: this._element(),
157
+ });
158
158
 
159
159
  this._initialized = true;
160
160
  }
161
161
  }
162
162
 
163
+ disconnect() {
164
+ this._ariaObserver.disconnect();
165
+ }
166
+
163
167
  addInfoListeners() {
164
168
  const target = this._target();
165
169
 
@@ -232,6 +236,9 @@ export class Tooltip {
232
236
  this.toggle();
233
237
  } else if (this._visible) {
234
238
  this.hide();
239
+ if (event.key === 'Escape') {
240
+ event.stopPropagation();
241
+ }
235
242
  }
236
243
  });
237
244
  }
@@ -291,15 +298,10 @@ export class Tooltip {
291
298
  this._visible = true;
292
299
  this._initialResize = true;
293
300
  const tooltip = this._element();
301
+ tooltip.visible = this._visible;
302
+ tooltip.content = this._value;
294
303
 
295
- /*
296
- When tabbing, populating the tooltip and making it visible too early can lead to bad interactions
297
- when the mouse is hovering over a tooltip. W-12559092
298
- */
299
- if (!this._isFocusEvent) {
300
- tooltip.content = this._value;
301
- tooltip.visible = this._visible;
302
- }
304
+ this._ariaObserver.sync();
303
305
 
304
306
  this.startPositioning();
305
307
  document.addEventListener('keydown', this.handleEscape);
@@ -1,6 +1,8 @@
1
- export const isIE11 = isIE11Test(navigator);
2
- export const isChrome = isChromeTest(navigator);
3
- export const isSafari = isSafariTest(navigator);
1
+ import { isCSR } from './ssr';
2
+
3
+ export const isIE11 = isCSR && isIE11Test(navigator);
4
+ export const isChrome = isCSR && isChromeTest(navigator);
5
+ export const isSafari = isCSR && isSafariTest(navigator);
4
6
 
5
7
  // The following functions are for tests only
6
8
  export function isIE11Test(navigator) {
@@ -1,3 +1,5 @@
1
+ import { isCSR } from './ssr';
2
+
1
3
  /**
2
4
  * Verify if user is using MAC OS or not
3
5
  * @returns {boolean} - true if Mac OS
@@ -30,7 +32,7 @@ export const isAndroidOSTest = ({ userAgent }) => {
30
32
  return /android/i.test(userAgent);
31
33
  };
32
34
 
33
- export const isMacOS = isMacOSTest(navigator);
34
- export const isWindowsOS = isWindowsOSTest(navigator);
35
- export const isiOS = isiOSTest(navigator);
36
- export const isAndroidOS = isAndroidOSTest(navigator);
35
+ export const isMacOS = isCSR && isMacOSTest(navigator);
36
+ export const isWindowsOS = isCSR && isWindowsOSTest(navigator);
37
+ export const isiOS = isCSR && isiOSTest(navigator);
38
+ export const isAndroidOS = isCSR && isAndroidOSTest(navigator);
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Determine if environment is CSR or SSR
3
+ */
4
+ export const isCSR = typeof window !== 'undefined';
@@ -51,6 +51,8 @@ export {
51
51
  isHeadingLevelValid,
52
52
  } from './ariaLevelHeadingUtils.js';
53
53
 
54
+ export { isCSR } from './ssr';
55
+
54
56
  /**
55
57
  * @param {HTMLElement} element Element to act on
56
58
  * @param {Object} values values and attributes to set, if the value is
@@ -1 +1,2 @@
1
- /* @import './vertical-navigation.slds.css'; */
1
+ @import 'lightning/sldsCommon';
2
+ @import './vertical-navigation.slds.css';
@@ -1,4 +1,5 @@
1
- import { LightningElement, api, track } from 'lwc';
1
+ import { api, track } from 'lwc';
2
+ import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
2
3
  import { classSet } from 'lightning/utils';
3
4
  import {
4
5
  assert,
@@ -17,7 +18,7 @@ const ALLOWED_CHILDREN = [
17
18
  * A vertical list of links that either take the user to another page or parts of the page the user is in.
18
19
  * @slot default Placeholder for lightning-vertical-navigation-section and lightning-vertical-navigation-overflow.
19
20
  */
20
- export default class LightningVerticalNavigation extends LightningElement {
21
+ export default class LightningVerticalNavigation extends LightningShadowBaseClass {
21
22
  @track _compact;
22
23
  @track _shaded;
23
24
  @track _selectedItem;
@@ -1,4 +1,5 @@
1
- /* @import './vertical-navigation-section.slds.css'; */
1
+ @import 'lightning/sldsCommon';
2
+ @import './vertical-navigation-section.slds.css';
2
3
 
3
4
  div[role="list"] {
4
5
  list-style: none;
@@ -1,7 +1,8 @@
1
- import { LightningElement, api, track } from 'lwc';
1
+ import { api, track } from 'lwc';
2
+ import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
2
3
  import { guid, isHeadingLevelValid } from 'lightning/utilsPrivate';
3
4
 
4
- export default class LightningVerticalNavigationSection extends LightningElement {
5
+ export default class LightningVerticalNavigationSection extends LightningShadowBaseClass {
5
6
  headingId = guid();
6
7
 
7
8
  @track _label;
@@ -1,76 +0,0 @@
1
- /**
2
- * Generates N Sections belonging to the ownerAccordionId.
3
- *
4
- * @param {Integer} n - The number of sections to generate
5
- * @param {String} ownerAccordionId - The owner accordion of these sections (the section name will be prefixed with it)
6
- * @return {Array} The generated sections.
7
- */
8
- export function generateSections(n, ownerAccordionId) {
9
- const result = [];
10
-
11
- for (let i = 0; i < n; i++) {
12
- result.push({
13
- name: `${ownerAccordionId}-section-${i}`,
14
- label: `${ownerAccordionId}-label-for-section-${i}`,
15
- content: `${ownerAccordionId}-content-${i} Content paragraph`,
16
- });
17
- }
18
-
19
- return result;
20
- }
21
-
22
- /**
23
- * Gets an array of section names belonging to ownerAccordionId accordion.
24
- *
25
- * @param {String} ownerAccordionId - the owner accordion id.
26
- * @param {Integer} firstSectionId - Start getting names from $firstSectionId section.
27
- * @param {Integer} sectionIdIncrement - The gap between sections (sectionIdIncrement - 1)
28
- * @param {Integer} maxSectionId - The max sectionId that is allowed to be returned
29
- * @return {Array} The sections names satisfying the above constrains.
30
- */
31
- export function getSectionNames({
32
- ownerAccordionId,
33
- firstSectionId,
34
- sectionIdIncrement,
35
- maxSectionId,
36
- }) {
37
- const result = [];
38
-
39
- for (let i = firstSectionId; i < maxSectionId; i += sectionIdIncrement) {
40
- result.push(`${ownerAccordionId}-section-${i}`);
41
- }
42
-
43
- return result;
44
- }
45
-
46
- /**
47
- * Generates N accordions data. Each one with the following:
48
- * - activeSectionName: For accordion i, the open section is i. Ex: acc-2 has open the section 2 (acc-2-section-2)
49
- * - sections: An array of sections containing nSections.
50
- * - allowMultipleSectionsOpen: true or false according allowMultipleSectionsOpen.
51
- *
52
- * @param {Integer} numberOfAccordions - number of accordions to generate (0..N-1)
53
- * @param {Integer} numberOfSectionsPerAccordion - number of sections to generate for each accordion.
54
- * @param {Boolean} [allowMultipleSectionsOpen=false] - whether or not the accordions allow multiple sections open at one time.
55
- * @return {Array} - The generated accordions.
56
- */
57
- export function generateAccordions({
58
- numberOfAccordions,
59
- numberOfSectionsPerAccordion,
60
- allowMultipleSectionsOpen = false,
61
- }) {
62
- const results = [];
63
-
64
- for (let i = 0; i < numberOfAccordions; i++) {
65
- results.push({
66
- activeSectionName: `acc-${i}-section-${i}`,
67
- allowMultipleSectionsOpen,
68
- sections: generateSections(
69
- numberOfSectionsPerAccordion,
70
- 'acc-' + i
71
- ),
72
- });
73
- }
74
-
75
- return results;
76
- }