lightning-base-components 1.18.1-alpha → 1.18.3-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 (298) hide show
  1. package/metadata/raptor.json +9 -0
  2. package/package.json +57 -1
  3. package/src/lightning/accordion/__docs__/accordion.md +2 -2
  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/__docs__/avatar.md +7 -7
  16. package/src/lightning/avatar/avatar.css +2 -0
  17. package/src/lightning/avatar/avatar.html +2 -0
  18. package/src/lightning/avatar/avatar.js +18 -15
  19. package/src/lightning/avatar/avatar.slds.css +272 -0
  20. package/src/lightning/badge/__docs__/badge.md +2 -2
  21. package/src/lightning/baseCombobox/base-combobox.slds.css +1585 -0
  22. package/src/lightning/baseCombobox/baseCombobox.css +11 -1
  23. package/src/lightning/baseCombobox/baseCombobox.html +154 -146
  24. package/src/lightning/baseCombobox/baseCombobox.js +122 -46
  25. package/src/lightning/baseCombobox/spinner.slds.css +438 -0
  26. package/src/lightning/baseComboboxItem/baseComboboxItem.js +4 -2
  27. package/src/lightning/baseComboboxItem/inline.css +2 -0
  28. package/src/lightning/breadcrumb/breadcrumb.css +2 -2
  29. package/src/lightning/breadcrumb/breadcrumb.js +4 -2
  30. package/src/lightning/breadcrumb/breadcrumb.slds.css +2 -7
  31. package/src/lightning/breadcrumbs/__docs__/breadcrumbs.md +3 -3
  32. package/src/lightning/breadcrumbs/breadcrumbs.css +2 -2
  33. package/src/lightning/breadcrumbs/breadcrumbs.js +3 -2
  34. package/src/lightning/breadcrumbs/breadcrumbs.slds.css +7 -1
  35. package/src/lightning/button/__docs__/button.md +15 -15
  36. package/src/lightning/button/__examples__/inverse/inverse.css +8 -0
  37. package/src/lightning/button/__examples__/inverse/inverse.html +3 -2
  38. package/src/lightning/button/button.css +2 -0
  39. package/src/lightning/button/button.html +4 -2
  40. package/src/lightning/button/button.js +21 -0
  41. package/src/lightning/button/button.slds.css +527 -0
  42. package/src/lightning/buttonGroup/buttonGroup.css +2 -2
  43. package/src/lightning/buttonGroup/buttonGroup.js +3 -2
  44. package/src/lightning/buttonIcon/__docs__/buttonIcon.md +9 -9
  45. package/src/lightning/buttonIcon/button-icon.slds.css +215 -453
  46. package/src/lightning/buttonIcon/buttonIcon.css +2 -2
  47. package/src/lightning/buttonIcon/buttonIcon.js +4 -0
  48. package/src/lightning/buttonIconStateful/__docs__/buttonIconStateful.md +9 -9
  49. package/src/lightning/buttonIconStateful/button-icon-stateful.slds.css +215 -453
  50. package/src/lightning/buttonIconStateful/buttonIconStateful.css +2 -2
  51. package/src/lightning/buttonMenu/__docs__/buttonMenu.md +8 -8
  52. package/src/lightning/buttonMenu/{dropdown.slds.css → button-menu.slds.css} +853 -217
  53. package/src/lightning/buttonMenu/buttonMenu.css +2 -2
  54. package/src/lightning/buttonMenu/buttonMenu.html +2 -2
  55. package/src/lightning/buttonMenu/buttonMenu.js +10 -14
  56. package/src/lightning/buttonStateful/__docs__/buttonStateful.md +12 -12
  57. package/src/lightning/buttonStateful/button-stateful.slds.css +225 -457
  58. package/src/lightning/buttonStateful/buttonStateful.css +2 -2
  59. package/src/lightning/buttonStateful/buttonStateful.js +3 -2
  60. package/src/lightning/calendar/__examples__/basic/basic.html +7 -0
  61. package/src/lightning/calendar/__examples__/basic/basic.js +3 -0
  62. package/src/lightning/calendar/calendar.css +3 -0
  63. package/src/lightning/calendar/calendar.html +12 -9
  64. package/src/lightning/calendar/calendar.js +18 -2
  65. package/src/lightning/calendar/calendar.slds.css +2048 -0
  66. package/src/lightning/card/__docs__/card.md +3 -3
  67. package/src/lightning/card/card.css +2 -2
  68. package/src/lightning/card/card.js +3 -2
  69. package/src/lightning/card/card.slds.css +141 -88
  70. package/src/lightning/checkboxGroup/__docs__/checkboxGroup.md +2 -2
  71. package/src/lightning/colorPickerCustom/colorPickerCustom.css +2 -2
  72. package/src/lightning/colorPickerCustom/colorPickerCustom.js +3 -2
  73. package/src/lightning/colorPickerPanel/color-picker-panel.slds.css +11 -38
  74. package/src/lightning/colorPickerPanel/colorPickerPanel.css +3 -2
  75. package/src/lightning/colorPickerPanel/colorPickerPanel.js +4 -2
  76. package/src/lightning/colorPickerPanel/popover.slds.css +121 -0
  77. package/src/lightning/combobox/combobox.css +4 -0
  78. package/src/lightning/combobox/combobox.html +31 -29
  79. package/src/lightning/combobox/combobox.js +21 -4
  80. package/src/lightning/combobox/combobox.slds.css +13 -0
  81. package/src/lightning/combobox/form-element.slds.css +281 -0
  82. package/src/lightning/configProvider/defaultConfig.js +2 -1
  83. package/src/lightning/datatable/__docs__/datatable.md +45 -35
  84. package/src/lightning/datatable/autoWidthStrategy.js +3 -0
  85. package/src/lightning/datatable/columnWidthManager.js +1 -1
  86. package/src/lightning/datatable/datatable.js +8 -7
  87. package/src/lightning/datatable/rowSelection.js +7 -4
  88. package/src/lightning/datatable/templates/table/table.html +1 -0
  89. package/src/lightning/datepicker/datepicker.css +3 -0
  90. package/src/lightning/datepicker/datepicker.html +7 -4
  91. package/src/lightning/datepicker/datepicker.js +76 -20
  92. package/src/lightning/datepicker/form-element.slds.css +281 -0
  93. package/src/lightning/datepicker/input-text.slds.css +398 -0
  94. package/src/lightning/datetimepicker/datetimepicker.css +3 -0
  95. package/src/lightning/datetimepicker/datetimepicker.html +9 -3
  96. package/src/lightning/datetimepicker/datetimepicker.js +42 -36
  97. package/src/lightning/datetimepicker/form-element.slds.css +281 -0
  98. package/src/lightning/datetimepicker/input-text.slds.css +398 -0
  99. package/src/lightning/dualListbox/dualListbox.css +2 -2
  100. package/src/lightning/dualListbox/dualListbox.html +3 -3
  101. package/src/lightning/dualListbox/dualListbox.js +47 -13
  102. package/src/lightning/dualListbox/form-element.slds.css +83 -34
  103. package/src/lightning/dualListbox/keyboard.js +20 -1
  104. package/src/lightning/dynamicIcon/dynamicIcon.js +3 -2
  105. package/src/lightning/dynamicIcon/ellie.css +1 -1
  106. package/src/lightning/dynamicIcon/eq.css +1 -1
  107. package/src/lightning/dynamicIcon/score.css +1 -1
  108. package/src/lightning/dynamicIcon/strength.css +1 -1
  109. package/src/lightning/dynamicIcon/trend.css +1 -1
  110. package/src/lightning/dynamicIcon/waffle.css +1 -1
  111. package/src/lightning/formattedRichText/formatted-rich-text.slds.css +230 -0
  112. package/src/lightning/formattedRichText/formattedRichText.css +2 -0
  113. package/src/lightning/formattedRichText/formattedRichText.js +4 -2
  114. package/src/lightning/formattedRichText/linkify.js +2 -2
  115. package/src/lightning/formattedText/formattedText.css +1 -0
  116. package/src/lightning/formattedText/formattedText.js +3 -2
  117. package/src/lightning/helptext/__docs__/helptext.md +2 -2
  118. package/src/lightning/helptext/form-element.slds.css +83 -34
  119. package/src/lightning/helptext/help-text.slds.css +215 -453
  120. package/src/lightning/helptext/helptext.css +2 -2
  121. package/src/lightning/helptext/helptext.js +3 -2
  122. package/src/lightning/i18nCldrOptions/README.md +5 -0
  123. package/src/lightning/i18nService/README.md +5 -0
  124. package/src/lightning/icon/__docs__/icon.md +5 -5
  125. package/src/lightning/icon/icon.css +2 -2
  126. package/src/lightning/icon/icon.js +21 -2
  127. package/src/lightning/icon/icon.slds.css +29 -17
  128. package/src/lightning/icon/iconColors.js +1 -0
  129. package/src/lightning/iconUtils/iconUtils.js +0 -12
  130. package/src/lightning/iconUtils/polyfill.js +5 -90
  131. package/src/lightning/input/__docs__/input.md +7 -7
  132. package/src/lightning/input/__examples__/checkboxbutton/checkboxbutton.css +6 -0
  133. package/src/lightning/input/__examples__/checkboxbutton/checkboxbutton.html +2 -1
  134. package/src/lightning/input/__examples__/checkboxbutton/checkboxbutton.js +1 -1
  135. package/src/lightning/input/__examples__/number/number.html +0 -5
  136. package/src/lightning/input/__examples__/text/text.html +0 -1
  137. package/src/lightning/input/form-element.slds.css +281 -0
  138. package/src/lightning/input/input.css +2 -3
  139. package/src/lightning/input/input.html +154 -244
  140. package/src/lightning/input/input.js +306 -595
  141. package/src/lightning/inputAddress/__docs__/inputAddress.md +3 -3
  142. package/src/lightning/inputUtils/inputUtils.js +15 -20
  143. package/src/lightning/inputUtils/normalize.js +7 -0
  144. package/src/lightning/{input/numberUtil.js → inputUtils/number.js} +1 -1
  145. package/src/lightning/inputUtils/utils.js +18 -0
  146. package/src/lightning/internationalizationLibrary/README.md +24 -0
  147. package/src/lightning/internationalizationLibrary/utils.js +4 -1
  148. package/src/lightning/layout/__docs__/layout.md +1 -1
  149. package/src/lightning/layout/__examples__/simple/simple.css +1 -1
  150. package/src/lightning/layout/layout.css +5 -1
  151. package/src/lightning/layout/layout.js +4 -2
  152. package/src/lightning/layoutItem/__examples__/alignmentBump/alignmentBump.css +1 -1
  153. package/src/lightning/layoutItem/__examples__/sizePerDevice/sizePerDevice.css +0 -1
  154. package/src/lightning/layoutItem/layoutItem.css +5 -0
  155. package/src/lightning/layoutItem/layoutItem.js +4 -2
  156. package/src/lightning/menuDivider/menu-divider.slds.css +15 -0
  157. package/src/lightning/menuDivider/menuDivider.css +3 -0
  158. package/src/lightning/menuDivider/menuDivider.html +1 -1
  159. package/src/lightning/menuDivider/menuDivider.js +4 -2
  160. package/src/lightning/menuItem/menu-item.slds.css +140 -0
  161. package/src/lightning/menuItem/menuItem.css +3 -0
  162. package/src/lightning/menuItem/menuItem.html +43 -41
  163. package/src/lightning/menuItem/menuItem.js +4 -4
  164. package/src/lightning/menuSubheader/menu-subheader.slds.css +22 -0
  165. package/src/lightning/menuSubheader/menuSubheader.css +3 -0
  166. package/src/lightning/menuSubheader/menuSubheader.html +3 -1
  167. package/src/lightning/menuSubheader/menuSubheader.js +4 -6
  168. package/src/lightning/modal/__docs__/modal.md +3 -1
  169. package/src/lightning/modal/__modalUtils__/modalContainerTestConstants.js +267 -0
  170. package/src/lightning/modal/__modalUtils__/modalContainerTestMethods.js +1165 -0
  171. package/src/lightning/modal/__modalUtils__/modalContainerTestMockData.js +131 -0
  172. package/src/lightning/modal/modal.js +1 -1
  173. package/src/lightning/modalBody/__docs__/modalBody.md +9 -9
  174. package/src/lightning/modalFooter/__docs__/modalFooter.md +9 -9
  175. package/src/lightning/modalHeader/__docs__/modalHeader.md +9 -9
  176. package/src/lightning/overlayContainer/overlayContainer.js +4 -2
  177. package/src/lightning/pill/__docs__/pill.md +3 -3
  178. package/src/lightning/pill/avatar.slds.css +272 -0
  179. package/src/lightning/pill/link.css +3 -0
  180. package/src/lightning/pill/link.html +1 -1
  181. package/src/lightning/pill/pill.js +29 -9
  182. package/src/lightning/pill/pill.slds.css +168 -0
  183. package/src/lightning/pill/plain.css +3 -0
  184. package/src/lightning/pill/plain.html +1 -1
  185. package/src/lightning/pill/plainLink.css +3 -0
  186. package/src/lightning/pill/plainLink.html +1 -1
  187. package/src/lightning/pillContainer/__docs__/pillContainer.md +14 -14
  188. package/src/lightning/pillContainer/barePillContainer.css +3 -0
  189. package/src/lightning/pillContainer/barePillContainer.html +1 -2
  190. package/src/lightning/pillContainer/listbox.slds.css +267 -0
  191. package/src/lightning/pillContainer/pill-container.slds.css +22 -0
  192. package/src/lightning/pillContainer/pill.slds.css +168 -0
  193. package/src/lightning/pillContainer/pillContainer.js +7 -3
  194. package/src/lightning/pillContainer/standardPillContainer.css +4 -0
  195. package/src/lightning/pillContainer/standardPillContainer.html +2 -2
  196. package/src/lightning/popup/popover.slds.css +119 -119
  197. package/src/lightning/popup/popup.css +1 -2
  198. package/src/lightning/popup/popup.js +3 -2
  199. package/src/lightning/positionLibrary/elementProxy.js +7 -2
  200. package/src/lightning/positionLibrary/util.js +8 -0
  201. package/src/lightning/primitiveBubble/primitiveBubble.css +2 -2
  202. package/src/lightning/primitiveBubble/primitiveBubble.js +4 -2
  203. package/src/lightning/primitiveButton/primitiveButton.js +5 -4
  204. package/src/lightning/primitiveCellFactory/cellWithStandardLayout.html +29 -21
  205. package/src/lightning/primitiveCellFactory/primitiveCellFactory.js +4 -0
  206. package/src/lightning/primitiveColorpickerButton/color-picker-button.slds.css +31 -19
  207. package/src/lightning/primitiveColorpickerButton/primitiveColorpickerButton.css +2 -2
  208. package/src/lightning/primitiveColorpickerButton/primitiveColorpickerButton.js +5 -3
  209. package/src/lightning/primitiveIcon/icon.slds.css +209 -0
  210. package/src/lightning/primitiveIcon/primitiveIcon.css +2 -1
  211. package/src/lightning/primitiveIcon/primitiveIcon.html +1 -1
  212. package/src/lightning/primitiveIcon/primitiveIcon.js +26 -16
  213. package/src/lightning/progressStep/progressStep.js +10 -13
  214. package/src/lightning/radioGroup/__docs__/radioGroup.md +4 -4
  215. package/src/lightning/radioGroup/radioGroup.css +2 -1
  216. package/src/lightning/radioGroup/radioGroup.js +4 -2
  217. package/src/lightning/select/__docs__/select.md +2 -2
  218. package/src/lightning/select/form-element.slds.css +83 -34
  219. package/src/lightning/select/select.css +2 -2
  220. package/src/lightning/select/select.js +4 -2
  221. package/src/lightning/select/select.slds.css +86 -34
  222. package/src/lightning/shadowBaseClassPrivate/shadowBaseClassPrivate.js +1 -1
  223. package/src/lightning/sldsCommon/sldsCommon.css +251 -89
  224. package/src/lightning/sldsUtilsAlignment/sldsUtilsAlignment.css +10 -0
  225. package/src/lightning/sldsUtilsAlignment/sldsUtilsAlignment.js-meta.xml +4 -0
  226. package/src/lightning/sldsUtilsBorders/sldsUtilsBorders.css +18 -0
  227. package/src/lightning/sldsUtilsBorders/sldsUtilsBorders.js-meta.xml +4 -0
  228. package/src/lightning/sldsUtilsBox/sldsUtilsBox.css +24 -0
  229. package/src/lightning/sldsUtilsBox/sldsUtilsBox.js-meta.xml +4 -0
  230. package/src/lightning/sldsUtilsFloats/sldsUtilsFloats.css +20 -0
  231. package/src/lightning/sldsUtilsFloats/sldsUtilsFloats.js-meta.xml +4 -0
  232. package/src/lightning/sldsUtilsGrid/sldsUtilsGrid.css +259 -0
  233. package/src/lightning/sldsUtilsGrid/sldsUtilsGrid.js-meta.xml +4 -0
  234. package/src/lightning/sldsUtilsHyphenation/sldsUtilsHyphenation.css +8 -0
  235. package/src/lightning/sldsUtilsHyphenation/sldsUtilsHyphenation.js-meta.xml +4 -0
  236. package/src/lightning/sldsUtilsLineClamp/sldsUtilsLineClamp.css +57 -0
  237. package/src/lightning/sldsUtilsLineClamp/sldsUtilsLineClamp.js-meta.xml +4 -0
  238. package/src/lightning/sldsUtilsMargin/sldsUtilsMargin.css +313 -0
  239. package/src/lightning/sldsUtilsMargin/sldsUtilsMargin.js-meta.xml +4 -0
  240. package/src/lightning/sldsUtilsPadding/sldsUtilsPadding.css +308 -0
  241. package/src/lightning/sldsUtilsPadding/sldsUtilsPadding.js-meta.xml +4 -0
  242. package/src/lightning/sldsUtilsPosition/sldsUtilsPosition.css +18 -0
  243. package/src/lightning/sldsUtilsPosition/sldsUtilsPosition.js-meta.xml +4 -0
  244. package/src/lightning/sldsUtilsSizing/sldsUtilsSizing.css +1408 -0
  245. package/src/lightning/sldsUtilsSizing/sldsUtilsSizing.js-meta.xml +4 -0
  246. package/src/lightning/sldsUtilsThemes/sldsUtilsThemes.css +295 -0
  247. package/src/lightning/sldsUtilsThemes/sldsUtilsThemes.js-meta.xml +4 -0
  248. package/src/lightning/sldsUtilsTruncation/sldsUtilsTruncation.css +14 -0
  249. package/src/lightning/sldsUtilsTruncation/sldsUtilsTruncation.js-meta.xml +4 -0
  250. package/src/lightning/slider/__docs__/slider.md +2 -2
  251. package/src/lightning/spinner/spinner.css +2 -2
  252. package/src/lightning/spinner/spinner.js +4 -2
  253. package/src/lightning/tabBar/tab-bar.slds.css +334 -0
  254. package/src/lightning/tabBar/tabBar.css +2 -0
  255. package/src/lightning/tabBar/tabBar.html +4 -3
  256. package/src/lightning/tabBar/tabBar.js +30 -3
  257. package/src/lightning/tabset/__docs__/tabset.md +2 -2
  258. package/src/lightning/tabset/tabset.html +5 -4
  259. package/src/lightning/tabset/tabset.js +29 -11
  260. package/src/lightning/textarea/__docs__/textarea.md +2 -2
  261. package/src/lightning/timepicker/form-element.slds.css +281 -0
  262. package/src/lightning/timepicker/timepicker.css +3 -0
  263. package/src/lightning/timepicker/timepicker.html +5 -1
  264. package/src/lightning/timepicker/timepicker.js +22 -17
  265. package/src/lightning/timepicker/timepicker.slds.css +18 -0
  266. package/src/lightning/toast/toast.js-meta.xml +2 -0
  267. package/src/lightning/toastContainer/__docs__/toastContainer.md +14 -34
  268. package/src/lightning/toastContainer/toastContainer.js +10 -15
  269. package/src/lightning/tooltipLibrary/tooltipLibrary.js +32 -23
  270. package/src/lightning/utilsPrivate/browser.js +5 -3
  271. package/src/lightning/utilsPrivate/os.js +6 -4
  272. package/src/lightning/utilsPrivate/ssr.js +4 -0
  273. package/src/lightning/utilsPrivate/utilsPrivate.js +2 -0
  274. package/src/lightning/verticalNavigation/verticalNavigation.css +2 -1
  275. package/src/lightning/verticalNavigation/verticalNavigation.js +3 -2
  276. package/src/lightning/verticalNavigationSection/verticalNavigationSection.css +2 -1
  277. package/src/lightning/verticalNavigationSection/verticalNavigationSection.js +3 -2
  278. package/src/lightning/accordion/__perf__DISABLED/accordion-perf-utils.js +0 -76
  279. package/src/lightning/accordion/__perf__DISABLED/accordion10Multiple25SectionEach.perf.js +0 -57
  280. package/src/lightning/accordion/__perf__DISABLED/accordion10Simple25SectionEach.perf.js +0 -37
  281. package/src/lightning/accordion/__perf__DISABLED/accordionMultiple50Section.perf.js +0 -45
  282. package/src/lightning/accordion/__perf__DISABLED/accordionSimple50Section.perf.js +0 -35
  283. package/src/lightning/accordion/__perf__DISABLED/container/container.html +0 -15
  284. package/src/lightning/accordion/__perf__DISABLED/container/container.js +0 -7
  285. package/src/lightning/iconUtils/isIframeInEdge.js +0 -7
  286. package/src/lightning/iconUtils/supportsSvg.js +0 -16
  287. package/src/lightning/input/input-checkbox.slds.css +0 -404
  288. package/src/lightning/input/input-text.slds.css +0 -287
  289. package/src/lightning/input/normalize.js +0 -6
  290. package/src/lightning/input/selection.js +0 -131
  291. package/src/lightning/positionLibrary/__component__/positionLibraryBounding.spec.js +0 -319
  292. package/src/lightning/positionLibrary/__component__/x/bounding/bounding.css +0 -16
  293. package/src/lightning/positionLibrary/__component__/x/bounding/bounding.html +0 -36
  294. package/src/lightning/positionLibrary/__component__/x/bounding/bounding.js +0 -122
  295. /package/src/lightning/{baseCombobox → baseComboboxItem}/listbox.slds.css +0 -0
  296. /package/src/lightning/formattedRichText/{__examples__disabled → __examples__}/basic/basic.html +0 -0
  297. /package/src/lightning/formattedRichText/{__examples__disabled → __examples__}/basic/basic.js +0 -0
  298. /package/src/lightning/{input/emailUtil.js → inputUtils/email.js} +0 -0
@@ -0,0 +1,398 @@
1
+ /* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
2
+ Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
3
+
4
+ /* The Input Control Container holds the `start` and `end` slot contents, as well as the input control itself */
5
+
6
+ :host([data-render-mode="shadow"]) [part~='input-container'] {
7
+ display: flex;
8
+ align-items: center;
9
+ position: relative;
10
+ min-height: var(--sds-c-inputtext-sizing-height);
11
+ padding-inline-end: var(--sds-c-inputtext-spacing-inline-end, var(--sds-c-inputtext-spacing-inline));
12
+ padding-inline-start: var(--sds-c-inputtext-spacing-inline-start, var(--sds-c-inputtext-spacing-inline));
13
+ background-color: var(--sds-c-inputtext-color-background, var(--sds-g-color-neutral-base-1));
14
+ border-width: var(--sds-c-inputtext-sizing-border, var(--sds-g-sizing-border-1, 1px));
15
+ border-style: solid;
16
+ border-color: var(--sds-c-inputtext-color-border, var(--sds-g-color-neutral-base-contrast-3));
17
+ border-radius: var(--sds-c-inputtext-radius-border);
18
+ box-shadow: var(--sds-c-inputtext-shadow);
19
+ }
20
+
21
+ /* The Input element (in markup) */
22
+
23
+ :host([data-render-mode="shadow"]) [part~='input'] {
24
+ width: 100%;
25
+ height: 100%;
26
+ padding: 0;
27
+ font-size: var(--sds-c-inputtext-font-size);
28
+ color: var(--sds-c-inputtext-text-color);
29
+ line-height: 1;
30
+ border: none;
31
+ background: transparent;
32
+ }
33
+
34
+ /* Placeholder Text */
35
+
36
+ :host([data-render-mode="shadow"]) [part~='input']::placeholder {
37
+ color: var(--sds-c-inputtext-text-color-placeholder);
38
+ font-style: var(--sds-c-inputtext-font-style-placeholder);
39
+ }
40
+
41
+ /* Focus State */
42
+
43
+ :host([data-render-mode="shadow"]) [part~='input-container']:focus-within {
44
+ --sds-c-inputtext-color-border: var(
45
+ --sds-c-inputtext-color-border-focus,
46
+ var(--sds-g-color-palette-blue-50, #0176d3)
47
+ );
48
+ --sds-c-inputtext-shadow: var(--sds-c-inputtext-shadow-focus, 0 0 3px var(--sds-g-color-palette-blue-50, #0176d3));
49
+ --sds-c-inputtext-color-background: var(--sds-c-inputtext-color-background-focus);
50
+ --sds-c-inputtext-text-color: var(--sds-c-inputtext-text-color-focus);
51
+ }
52
+
53
+ :host([data-render-mode="shadow"]) [part~='input']:focus {
54
+ outline: none;
55
+ }
56
+
57
+ /* Invalid state */
58
+
59
+ :host([data-render-mode="shadow"][aria-invalid='true']) [part~='input-container'] {
60
+ --sds-c-inputtext-color-border: var(--sds-c-inputtext-color-border-invalid);
61
+ --sds-c-inputtext-color-background: var(--sds-c-inputtext-color-background-invalid);
62
+ }
63
+
64
+ :host([data-render-mode="shadow"][aria-invalid='true']) [part~='input'] {
65
+ --sds-c-inputtext-text-color: var(--sds-c-inputtext-text-color-invalid);
66
+ }
67
+
68
+ /* Valid State */
69
+
70
+ :host([data-render-mode="shadow"][aria-invalid='false']) [part~='input-container'] {
71
+ --sds-c-inputtext-color-border: var(--sds-c-inputtext-color-border-valid);
72
+ --sds-c-inputtext-color-background: var(--sds-c-inputtext-color-background-valid);
73
+ }
74
+
75
+ :host([data-render-mode="shadow"][aria-invalid='false']) [part~='input'] {
76
+ --sds-c-inputtext-text-color: var(--sds-c-inputtext-text-color-valid);
77
+ }
78
+
79
+ /* Readonly State */
80
+
81
+ :host([data-render-mode="shadow"][readonly]) [part~='input-container'] {
82
+ --sds-c-inputtext-sizing-border: var(--sds-c-inputtext-sizing-border-readonly);
83
+ --sds-c-inputtext-spacing-inline-start: var(
84
+ --sds-c-inputtext-spacing-inline-start-readonly,
85
+ var(--sds-c-inputtext-spacing-inline-readonly)
86
+ );
87
+ --sds-c-inputtext-spacing-inline-end: var(
88
+ --sds-c-inputtext-spacing-inline-end-readonly,
89
+ var(--sds-c-inputtext-spacing-inline-readonly)
90
+ );
91
+ }
92
+
93
+ /* Disabled State */
94
+
95
+ :host([data-render-mode="shadow"][disabled]) [part~='input-container'] {
96
+ --sds-c-inputtext-text-color: #3e3e3c; /* TODO: Replace with Global Styling Hook Fallback */
97
+ --sds-c-inputtext-color-background: #ecebea; /* TODO: Replace with Global Styling Hook Fallback */
98
+ --sds-c-inputtext-color-border: #c9c7c5; /* TODO: Replace with Global Styling Hook Fallback */
99
+ }
100
+
101
+ @supports (--styling-hooks: '') {
102
+ /**
103
+ * Input Text
104
+ */
105
+ :host([data-render-mode="shadow"]) [part~='input-text'] {
106
+ /* Host reassignments to composed slds-icon */
107
+ --slds-c-icon-color-foreground: var(
108
+ --slds-c-inputtext-icon-color-foreground,
109
+ var(--sds-g-color-neutral-base-50, #747474)
110
+ );
111
+ --slds-c-icon-sizing: var(--slds-c-inputtext-icon-sizing, 14px);
112
+ --sds-c-inputtext-sizing-height: var(
113
+ --slds-c-inputtext-sizing-height,
114
+ var(--sds-g-sizing-9, 2rem)
115
+ );
116
+ --sds-c-inputtext-color-background: var(
117
+ --slds-c-inputtext-color-background,
118
+ var(--sds-g-color-neutral-base-100, #ffffff)
119
+ );
120
+ --sds-c-inputtext-color-background-focus: var(
121
+ --slds-c-inputtext-color-background-focus,
122
+ var(--sds-g-color-neutral-base-100, #ffffff)
123
+ );
124
+ --sds-c-inputtext-text-color: var(--slds-c-inputtext-text-color);
125
+ --sds-c-inputtext-font-size: var(
126
+ --slds-c-inputtext-font-size,
127
+ var(--sds-g-font-scale-neg-2, 0.8125rem)
128
+ );
129
+ --sds-c-inputtext-text-color-placeholder: var(
130
+ --slds-c-inputtext-text-color-placeholder,
131
+ var(--sds-g-color-neutral-base-50, #747474)
132
+ );
133
+ --sds-c-inputtext-color-border: var(
134
+ --slds-c-inputtext-color-border,
135
+ var(--sds-g-color-neutral-base-80, #c9c9c9)
136
+ );
137
+ --sds-c-inputtext-sizing-border: var(--slds-c-inputtext-sizing-border);
138
+ --sds-c-inputtext-radius-border: var(
139
+ --slds-c-inputtext-radius-border,
140
+ var(--sds-g-radius-border-2, 0.25rem)
141
+ );
142
+
143
+ display: flex;
144
+ flex-wrap: wrap;
145
+ align-items: center;
146
+ }
147
+
148
+ /**
149
+ * Input Container
150
+ */
151
+ :host([data-render-mode="shadow"]) [part~='input-container'] {
152
+ flex: 1 0 100%;
153
+ align-items: stretch;
154
+ }
155
+
156
+ :host([data-render-mode="shadow"]) [part~='input-container'][type~='range'] {
157
+ border: none;
158
+ display: inline-block;
159
+ }
160
+
161
+ :host([data-render-mode="shadow"]) [part~='input'][type~='range'] {
162
+ min-height: calc(1.875rem + (1px * 2));
163
+ margin: 0;
164
+ }
165
+
166
+ :host([data-render-mode="shadow"]) [part~='input-container'][type~='range']:focus-within,:host([data-render-mode="shadow"])
167
+ [part~='input-container'][type~='range']:active {
168
+ --sds-c-inputtext-color-border: var(--sds-g-color-brand-base-60, #1b96ff);
169
+ --sds-c-inputtext-shadow: 0 0 3px var(--sds-g-color-brand-base-50, #0176d3);
170
+ --sds-c-inputtext-color-background: var(--sds-g-color-neutral-base-100, #ffffff);
171
+
172
+ outline: 0;
173
+ border-width: var(--sds-c-inputtext-sizing-border, var(--sds-g-sizing-border-1, 1px));
174
+ border-color: var(--sds-c-inputtext-color-border, var(--sds-g-color-neutral-base-contrast-3));
175
+ }
176
+
177
+ /**
178
+ * Input
179
+ */
180
+ :host([data-render-mode="shadow"]) [part~='input'] {
181
+ padding-inline-start: var(
182
+ --slds-c-inputtext-spacing-inline-start,
183
+ var(--sds-g-spacing-3, 0.75rem));
184
+ padding-inline-end: var(
185
+ --slds-c-inputtext-spacing-inline-end,
186
+ var(--sds-g-spacing-4, 1rem));
187
+ height: unset;
188
+ font-family: var(--sds-g-font-family, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol');
189
+ }
190
+
191
+ /**
192
+ * Focus / active State
193
+ */
194
+ :host([data-render-mode="shadow"]) [part~="input-container"]:focus-within,:host([data-render-mode="shadow"])
195
+ [part~="input-container"]:active {
196
+ --sds-c-inputtext-color-border: var(--sds-g-color-brand-base-60, #1b96ff);
197
+ --sds-c-inputtext-shadow: 0 0 3px var(--sds-g-color-brand-base-50, #0176d3);
198
+ --sds-c-inputtext-color-background: var(--sds-g-color-neutral-base-100, #ffffff);
199
+
200
+ outline: 0;
201
+ }
202
+
203
+ /**
204
+ * Read Only State
205
+ */
206
+ :host([data-render-mode="shadow"][readonly]) [part~='input-text'] {
207
+ --sds-c-inputtext-spacing-inline-start-readonly: 0;
208
+ --sds-c-inputtext-color-border-focus: transparent;
209
+ --slds-c-inputtext-color-border: transparent;
210
+ --slds-c-inputtext-color-background: transparent;
211
+ --slds-c-inputtext-color-background-focus: transparent;
212
+ }
213
+
214
+ /**
215
+ * Invalid State
216
+ *
217
+ * Does not use --sds-c-inputtext-color-border-invalid due to this hook being
218
+ * tied to :host([aria-invalid]) which this subsystem does not use. Instead, it
219
+ * uses :host([invalid]).
220
+ */
221
+ :host([data-render-mode="shadow"][invalid]) [part~='input-text'] {
222
+ --sds-c-inputtext-shadow: 0 0 0 var(--sds-g-sizing-border-1, 1px) inset
223
+ var(--sds-g-color-error-base-50, #ea001e);
224
+ --slds-c-inputtext-color-border: var(--sds-g-color-error-base-50, #ea001e);
225
+ --slds-c-icon-color-foreground: var(--sds-g-color-error-base-50, #ea001e);
226
+ }
227
+
228
+ /**
229
+ * Invalid State - Focus
230
+ *
231
+ * The following styling hooks are included in SDS and need to be reassigned
232
+ * here to prevent a bug with the focus state border and box-shadow
233
+ */
234
+ :host([data-render-mode="shadow"][invalid]) [part~='input-container']:focus-within {
235
+ --sds-c-inputtext-shadow:
236
+ var(--sds-g-color-error-base-50, #ea001e) 0 0 0 var(--sds-g-sizing-border-1, 1px) inset,
237
+ 0 0 var(--sds-g-sizing-border-3, 3px) var(--sds-g-color-brand-base-50, #0176d3);
238
+ --sds-c-inputtext-color-border: var(--sds-g-color-error-base-50, #ea001e);
239
+ }
240
+
241
+ /**
242
+ * Disabled State
243
+ *
244
+ * Both parts form the visible form control.
245
+ */
246
+ :host([data-render-mode="shadow"][disabled]) [part~='input-container'],:host([data-render-mode="shadow"][disabled]) [part~='input'] {
247
+ cursor: not-allowed;
248
+ --sds-c-inputtext-color-background: var(--sds-g-color-neutral-base-95, #f3f3f3);
249
+ --sds-c-inputtext-color-border: var(--sds-g-color-neutral-base-80, #c9c9c9);
250
+ --sds-c-inputtext-text-color: var(--sds-g-color-neutral-base-50, #747474);
251
+ }
252
+
253
+ /**
254
+ * Label
255
+ *
256
+ * Add [part~='input-text'] to increase specificity and
257
+ * avoid collisions with other components using [part~='label'] (e.g. slds-input-checkbox)
258
+ */
259
+ :host([data-render-mode="shadow"]) [part~='input-text'] [part~='label'] {
260
+ padding-block-start: var(--sds-g-spacing-1, 0.25rem);
261
+ padding-inline-end: var(--sds-g-spacing-2, 0.5rem);
262
+ color: var(
263
+ --slds-c-inputtext-label-color,
264
+ var(--sds-g-color-neutral-base-30, #444444)
265
+ );
266
+ font-size: var(
267
+ --slds-c-inputtext-label-font-size,
268
+ var(--sds-g-font-scale-neg-3, 0.75rem)
269
+ );
270
+ margin-block-end: var(--sds-g-sizing-1, 0.125rem);
271
+
272
+ /* We inline flex to control the spacing between elements and not have to rely on whitespace characters */
273
+ display: inline-flex;
274
+ }
275
+
276
+ /**
277
+ * Start
278
+ *
279
+ * Only expects an SLDS icon. We assign the SLDS Icon Styling Hook here
280
+ * so we don't add spacing to other icons composed in the component, e.g.,
281
+ * the icon in the inline help text.
282
+ */
283
+ :host([data-render-mode="shadow"]) [part~='start'] {
284
+ --slds-c-icon-spacing-inline-end: var(--sds-g-spacing-2, 0.5rem);
285
+ }
286
+
287
+ /**
288
+ * Label Inline Variant
289
+ *
290
+ * Note: all the 33% values you see are remnants of legacy SLDS. We need to
291
+ * keep this implementation intact so visual output is the same when used
292
+ * in a form that has non-shadow components. Attempting to refactor to a
293
+ * modern solution like flex is proving tricky due to the presence of the
294
+ * optional inline-help and the input needing to have exactly 33% of spacing
295
+ * from the inline-start.
296
+ *
297
+ * Ref: https://github.com/salesforce-ux/design-system-internal/blob/240-winter-23/ui/components/form-element/horizontal/_index.scss#L63
298
+ */
299
+ @media (min-width: 48em) {
300
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part~='input-text'] {
301
+ display: block;
302
+ }
303
+
304
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part~='label'] {
305
+ float: left;
306
+
307
+ /* TODO: Get rid of these magic numbers */
308
+ max-width: calc(33% - 1.125rem);
309
+ padding-block-start: var(--sds-g-spacing-1, 0.25rem);
310
+ }
311
+
312
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part~='input-container'] {
313
+ margin-inline-start: 33%;
314
+ }
315
+
316
+ :host([data-render-mode="shadow"][variant~='label-inline']) [part~='inline-help'] {
317
+ float: left;
318
+ padding-block-start: var(--sds-g-spacing-1, 0.25rem);
319
+ }
320
+ }
321
+
322
+ :host([data-render-mode="shadow"]) input[type="search"] + lightning-primitive-icon::part(icon) {
323
+ left: var(--sds-g-spacing-3, 0.75rem);
324
+ fill: var(--slds-g-color-neutral-base-50, #747474);
325
+ }
326
+
327
+ :host([data-render-mode="shadow"]) .slds-input-has-icon .slds-button_icon {
328
+ background-color: transparent;
329
+ }
330
+
331
+ :host([data-render-mode="shadow"]) .slds-input-has-icon .slds-button_icon:focus,:host([data-render-mode="shadow"])
332
+ .slds-input-has-icon .slds-button_icon:hover {
333
+ --slds-c-icon-color-foreground: var(--sds-g-color-brand-base-30, #014486);
334
+ }
335
+
336
+ :host([data-render-mode="shadow"]) .slds-input-has-icon .slds-input__icon {
337
+ width: 0.875rem;
338
+ height: 0.875rem;
339
+ position: absolute;
340
+ top: 50%;
341
+ margin-top: -0.4375rem;
342
+ line-height: 1;
343
+ border: 0;
344
+ z-index: 2;
345
+ }
346
+
347
+ /**
348
+ * Has Icon Left
349
+ */
350
+ :host([data-render-mode="shadow"]) .slds-input-has-icon_left {
351
+ --slds-c-inputtext-spacing-inline-start: var(--sds-g-spacing-6, 2rem);
352
+ }
353
+
354
+ :host([data-render-mode="shadow"]) .slds-input-has-icon_left .slds-input__icon,:host([data-render-mode="shadow"])
355
+ .slds-input-has-icon_left-right .slds-input__icon_left {
356
+ inset-inline-start: var(--sds-g-spacing-3, 0.75rem);
357
+ }
358
+
359
+ /**
360
+ * Has Icon Right
361
+ */
362
+ :host([data-render-mode="shadow"]) .slds-input-has-icon_right {
363
+ --slds-c-inputtext-spacing-inline-end: var(--sds-g-spacing-6, 2rem);
364
+ }
365
+
366
+ :host([data-render-mode="shadow"]) .slds-input-has-icon_right .slds-input__icon,:host([data-render-mode="shadow"])
367
+ .slds-input-has-icon_left-right .slds-input__icon_right {
368
+ inset-inline-end: var(--sds-g-spacing-3, 0.75rem);
369
+ }
370
+
371
+ /**
372
+ * Has Icon Left & Right
373
+ */
374
+ :host([data-render-mode="shadow"]) .slds-input-has-icon_left-right {
375
+ --slds-c-inputtext-spacing-inline-start: var(--sds-g-spacing-6, 2rem);
376
+ --slds-c-inputtext-spacing-inline-end: var(--sds-g-spacing-6, 2rem);
377
+ }
378
+
379
+ /**
380
+ * A temporarily baked-in utility class until SLDS gets a proper utility package.
381
+ *
382
+ * This is a hybrid patch between synthetic and native shadow. The ideal final
383
+ * outcome is the removal of this class and replacing the class with the SLDS
384
+ * utility package solution.
385
+ */
386
+ :host([data-render-mode="shadow"]) .slds-assistive-text {
387
+ position: absolute !important;
388
+ margin: -1px !important;
389
+ border: 0 !important;
390
+ padding: 0 !important;
391
+ width: 1px !important;
392
+ height: 1px !important;
393
+ overflow: hidden !important;
394
+ clip: rect(0 0 0 0) !important;
395
+ text-transform: none !important;
396
+ white-space: nowrap !important;
397
+ }
398
+ }
@@ -0,0 +1,3 @@
1
+ @import 'lightning/sldsCommon';
2
+ @import './input-text.slds.css';
3
+ @import './form-element.slds.css';
@@ -26,7 +26,10 @@
26
26
  required={required}
27
27
  onfocus={handleDatepickerFocus}
28
28
  onblur={handleDatepickerBlur}
29
- onchange={handleDateChange}>
29
+ onchange={handleDateChange}
30
+ aria-error-message-element={errorMessageElement}
31
+ root-aria-node={rootAriaNode}
32
+ >
30
33
  </lightning-datepicker>
31
34
 
32
35
  <lightning-timepicker
@@ -43,12 +46,15 @@
43
46
  disabled={disabled}
44
47
  onfocus={handleTimepickerFocus}
45
48
  onblur={handleTimepickerBlur}
46
- onchange={handleTimeChange}>
49
+ onchange={handleTimeChange}
50
+ aria-error-message-element={errorMessageElement}
51
+ root-aria-node={rootAriaNode}
52
+ >
47
53
  </lightning-timepicker>
48
54
  </div>
49
55
  </div>
50
56
  </div>
51
- <div data-error-message id="errormessage" class={computedClass} aria-live="assertive">{customErrorMessage}</div>
57
+ <div data-error-message id="errormessage" class={computedClass} aria-live="assertive">{customErrorMessage}</div>
52
58
 
53
59
  </fieldset>
54
60
  </div>
@@ -4,14 +4,14 @@ import labelRangeUnderflow from '@salesforce/label/LightningDateTimePicker.range
4
4
  import labelTime from '@salesforce/label/LightningDateTimePicker.timeLabel';
5
5
  import labelHelpTextAlternativeText from '@salesforce/label/LightningInput.helptextAlternativeText';
6
6
  import sfTimeZone from '@salesforce/i18n/timeZone';
7
- import { LightningElement, track, api } from 'lwc';
7
+ import { api, track } from 'lwc';
8
+ import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
8
9
  import { classSet, formatLabel } from 'lightning/utils';
9
10
  import {
10
11
  normalizeBoolean,
11
- normalizeAriaAttribute,
12
12
  synchronizeAttrs,
13
- getRealDOMId,
14
13
  computeAriaInvalid,
14
+ reflectAttribute,
15
15
  } from 'lightning/utilsPrivate';
16
16
  import {
17
17
  getCurrentTimeString,
@@ -35,7 +35,7 @@ const i18n = {
35
35
  helpTextAlternativeText: labelHelpTextAlternativeText,
36
36
  };
37
37
 
38
- export default class LightningDateTimePicker extends LightningElement {
38
+ export default class LightningDateTimePicker extends LightningShadowBaseClass {
39
39
  static delegatesFocus = true;
40
40
 
41
41
  @track _disabled = false;
@@ -57,6 +57,8 @@ export default class LightningDateTimePicker extends LightningElement {
57
57
 
58
58
  @api timeAriaLabel;
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.
@@ -268,6 +270,10 @@ export default class LightningDateTimePicker extends LightningElement {
268
270
  return this.getDatepicker().hasBadInput();
269
271
  }
270
272
 
273
+ get hasMissingDateTimeInput() {
274
+ return this.required && !this._dateValue && !this._timeValue;
275
+ }
276
+
271
277
  get hasBadTimeInput() {
272
278
  const timeBadInput = this.getTimepicker().hasBadInput();
273
279
  const timeMissing =
@@ -286,19 +292,37 @@ export default class LightningDateTimePicker extends LightningElement {
286
292
  return;
287
293
  }
288
294
 
295
+ if (this.hasMissingDateTimeInput) {
296
+ this.clearHelpMessage();
297
+ reflectAttribute(this.getDatepicker(), 'invalid', true);
298
+ reflectAttribute(this.getTimeCombobox(), 'invalid', true);
299
+ }
300
+
289
301
  if (this.hasBadDateInput && !this._messageWhenBadInput) {
290
302
  this.clearHelpMessage();
303
+ reflectAttribute(
304
+ this.getDatepicker(),
305
+ 'invalid',
306
+ this.hasBadDateInput
307
+ );
291
308
  this.getDatepicker().showHelpMessage(message);
292
309
  return;
293
310
  }
294
311
 
295
312
  if (this.hasBadTimeInput && !this._messageWhenBadInput) {
296
313
  this.clearHelpMessage();
314
+ reflectAttribute(
315
+ this.getTimepicker(),
316
+ 'invalid',
317
+ this.hasBadTimeInput
318
+ );
319
+ reflectAttribute(this.getTimeCombobox(), 'invalid', true);
297
320
  this.getTimepicker().showHelpMessage(message);
298
321
  return;
299
322
  }
300
323
 
301
324
  this.classList.add('slds-has-error');
325
+
302
326
  this._customErrorMessage = message;
303
327
  }
304
328
 
@@ -306,7 +330,10 @@ export default class LightningDateTimePicker extends LightningElement {
306
330
  this.classList.remove('slds-has-error');
307
331
  this._customErrorMessage = '';
308
332
  this.getDatepicker().showHelpMessage('');
333
+ this.getDatepicker().removeAttribute('invalid');
309
334
  this.getTimepicker().showHelpMessage('');
335
+ this.getTimepicker().removeAttribute('invalid');
336
+ this.getTimeCombobox().removeAttribute('invalid');
310
337
  }
311
338
 
312
339
  get isLabelHidden() {
@@ -340,36 +367,8 @@ export default class LightningDateTimePicker extends LightningElement {
340
367
  return 'slds-form-element__help ' + displayClass;
341
368
  }
342
369
 
343
- get errorMessageElementId() {
344
- return getRealDOMId(
345
- this.template.querySelector('[data-error-message]')
346
- );
347
- }
348
-
349
- get computedDateAriaDescribedBy() {
350
- const ariaValues = [];
351
-
352
- if (this.customErrorMessage) {
353
- ariaValues.push(this.errorMessageElementId);
354
- }
355
- if (this.dateAriaDescribedBy) {
356
- ariaValues.push(this.dateAriaDescribedBy);
357
- }
358
-
359
- return normalizeAriaAttribute(ariaValues);
360
- }
361
-
362
- get computedTimeAriaDescribedBy() {
363
- const ariaValues = [];
364
-
365
- if (this.customErrorMessage) {
366
- ariaValues.push(this.errorMessageElementId);
367
- }
368
- if (this.timeAriaDescribedBy) {
369
- ariaValues.push(this.timeAriaDescribedBy);
370
- }
371
-
372
- return normalizeAriaAttribute(ariaValues);
370
+ get errorMessageElement() {
371
+ return this.template.querySelector('[data-error-message]');
373
372
  }
374
373
 
375
374
  get hasExternalLabel() {
@@ -394,7 +393,7 @@ export default class LightningDateTimePicker extends LightningElement {
394
393
  if (datepicker) {
395
394
  synchronizeAttrs(datepicker, {
396
395
  ariaLabelledByElement: this.dateAriaLabelledBy,
397
- ariaDescribedByElements: this.computedDateAriaDescribedBy,
396
+ ariaDescribedByElements: this.dateAriaDescribedBy,
398
397
  ariaControlsElement: this.dateAriaControls,
399
398
  'aria-label': this.dateAriaLabel,
400
399
  });
@@ -403,7 +402,7 @@ export default class LightningDateTimePicker extends LightningElement {
403
402
  if (timepicker) {
404
403
  synchronizeAttrs(timepicker, {
405
404
  ariaLabelledByElement: this.timeAriaLabelledBy,
406
- ariaDescribedByElements: this.computedTimeAriaDescribedBy,
405
+ ariaDescribedByElements: this.timeAriaDescribedBy,
407
406
  ariaControlsElement: this.timeAriaControls,
408
407
  'aria-label': this.timeAriaLabel,
409
408
  });
@@ -411,6 +410,7 @@ export default class LightningDateTimePicker extends LightningElement {
411
410
  }
412
411
 
413
412
  connectedCallback() {
413
+ super.connectedCallback();
414
414
  this.connected = true;
415
415
 
416
416
  // we set the initial values here in order to make sure timezone is available.
@@ -441,6 +441,12 @@ export default class LightningDateTimePicker extends LightningElement {
441
441
  return this.template.querySelector('lightning-timepicker');
442
442
  }
443
443
 
444
+ getTimeCombobox() {
445
+ return this.getTimepicker().shadowRoot.querySelector(
446
+ 'lightning-base-combobox'
447
+ );
448
+ }
449
+
444
450
  getDatepicker() {
445
451
  return this.template.querySelector('lightning-datepicker');
446
452
  }