lightning-base-components 1.21.2-alpha → 1.21.4-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 (357) hide show
  1. package/metadata/raptor.json +77 -1
  2. package/package.json +108 -15
  3. package/scopedImports/@salesforce-label-LightningDatatable.showActions.js +1 -1
  4. package/scopedImports/@salesforce-label-LightningForm.controllerFieldsMessage.js +1 -0
  5. package/scopedImports/@salesforce-label-LightningForm.dependentFieldsHeader.js +1 -0
  6. package/scopedImports/@salesforce-label-LightningForm.dependentFieldsListHeading.js +1 -0
  7. package/scopedImports/@salesforce-label-LightningForm.generalDependentFieldsMessage.js +1 -0
  8. package/scopedImports/@salesforce-label-LightningForm.learnMore.js +1 -0
  9. package/scopedImports/@salesforce-label-LightningForm.okButton.js +1 -0
  10. package/scopedImports/@salesforce-label-LightningLookup.modalCancel.js +1 -0
  11. package/scopedImports/@salesforce-label-LightningLookup.modalSelect.js +1 -0
  12. package/scopedImports/@salesforce-label-LightningProgressIndicator.currentStage.js +1 -1
  13. package/scopedImports/@salesforce-label-LightningProgressIndicator.errorStage.js +1 -0
  14. package/scopedImports/@salesforce-label-LightningProgressIndicator.stageComplete.js +1 -1
  15. package/scopedImports/@salesforce-label-LightningProgressIndicator.stageNotStarted.js +1 -1
  16. package/scopedImports/@salesforce-label-LightningRichTextEditor.colorPicker.js +1 -0
  17. package/src/lightning/accordion/accordion-section.slds.css +3 -3
  18. package/src/lightning/accordion/accordion.slds.css +1 -2
  19. package/src/lightning/accordionSection/accordion-section.slds.css +3 -3
  20. package/src/lightning/accordionSection/accordionSection.js +3 -1
  21. package/src/lightning/accordionSection/button.slds.css +1 -1
  22. package/src/lightning/avatar/avatar.html +1 -0
  23. package/src/lightning/badge/badge.html +3 -3
  24. package/src/lightning/badge/badge.js +1 -0
  25. package/src/lightning/badge/badge.js-meta.xml +3 -0
  26. package/src/lightning/baseCombobox/base-combobox.slds.css +11 -6
  27. package/src/lightning/baseCombobox/baseCombobox.html +5 -2
  28. package/src/lightning/baseCombobox/baseCombobox.js +5 -18
  29. package/src/lightning/baseCombobox/baseCombobox.js-meta.xml +6 -0
  30. package/src/lightning/baseCombobox/input-text.slds.css +41 -68
  31. package/src/lightning/baseCombobox/keyboard.js +12 -4
  32. package/src/lightning/baseCombobox/listbox.slds.css +51 -99
  33. package/src/lightning/baseCombobox/spinner.slds.css +62 -62
  34. package/src/lightning/baseComboboxFormattedText/baseComboboxFormattedText.js-meta.xml +6 -0
  35. package/src/lightning/baseComboboxItem/baseComboboxItem.js +10 -6
  36. package/src/lightning/baseComboboxItem/baseComboboxItem.js-meta.xml +6 -0
  37. package/src/lightning/baseComboboxItem/listbox.slds.css +51 -99
  38. package/src/lightning/baseFormattedText/baseFormattedText.js +2 -2
  39. package/src/lightning/button/__docs__/button.md +2 -1
  40. package/src/lightning/button/button.js +5 -5
  41. package/src/lightning/button/button.slds.css +1 -1
  42. package/src/lightning/buttonIcon/__docs__/buttonIcon.md +1 -0
  43. package/src/lightning/buttonIcon/button-icon.slds.css +1 -1
  44. package/src/lightning/buttonIcon/buttonIcon.html +1 -1
  45. package/src/lightning/buttonIcon/buttonIcon.js +18 -17
  46. package/src/lightning/buttonIconStateful/button-icon-stateful.slds.css +4 -2
  47. package/src/lightning/buttonIconStateful/button-icon.slds.css +1 -1
  48. package/src/lightning/buttonIconStateful/button.slds.css +1 -1
  49. package/src/lightning/buttonMenu/button-icon.slds.css +1 -1
  50. package/src/lightning/buttonMenu/button-menu.slds.css +8 -2
  51. package/src/lightning/buttonMenu/button.slds.css +1 -1
  52. package/src/lightning/buttonMenu/buttonMenu.css +5 -0
  53. package/src/lightning/buttonMenu/buttonMenu.js +2 -0
  54. package/src/lightning/buttonStateful/button-stateful.slds.css +6 -2
  55. package/src/lightning/buttonStateful/button.slds.css +1 -1
  56. package/src/lightning/buttonStateful/buttonStateful.js +4 -1
  57. package/src/lightning/calendar/calendar.js-meta.xml +6 -0
  58. package/src/lightning/calendar/calendar.slds.css +9 -2
  59. package/src/lightning/colorPickerCustom/color-picker-custom.slds.css +22 -23
  60. package/src/lightning/colorPickerCustom/colorPickerCustom.js +12 -0
  61. package/src/lightning/colorPickerCustom/input-text.slds.css +41 -68
  62. package/src/lightning/colorPickerPanel/color-picker-panel.slds.css +9 -10
  63. package/src/lightning/colorPickerPanel/colorPickerPanel.js +11 -1
  64. package/src/lightning/colorPickerPanel/popover.slds.css +0 -2
  65. package/src/lightning/combobox/combobox.html +1 -0
  66. package/src/lightning/combobox/combobox.slds.css +1 -2
  67. package/src/lightning/combobox/form-element.slds.css +54 -54
  68. package/src/lightning/datatable/__examples__disabled/customComponentWrapper/customComponentWrapper.html +11 -0
  69. package/src/lightning/datatable/__examples__disabled/customComponentWrapper/customComponentWrapper.js +25 -0
  70. package/src/lightning/datatable/__examples__disabled/customComponentWrapper/generateData.js +15 -0
  71. package/src/lightning/datatable/__examples__disabled/customDatatableWrapper/customDatatableWrapper.js +89 -0
  72. package/src/lightning/datatable/__examples__disabled/customDatatypeDeleteRowBtn/customDatatypeDeleteRowBtn.html +6 -0
  73. package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeDeleteRowBtn/customDatatypeDeleteRowBtn.js +1 -16
  74. package/src/lightning/datatable/__examples__disabled/customDatatypeLink/customDatatypeLink.html +9 -0
  75. package/src/lightning/datatable/__examples__disabled/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.html +3 -0
  76. package/src/lightning/datatable/__examples__disabled/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.js +3 -0
  77. package/src/lightning/datatable/__examples__disabled/customDatatypeTable/customNumber.html +3 -0
  78. package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/customNumberEdit.html +2 -0
  79. package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/deleteRow.html +3 -2
  80. package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/iconPill.html +1 -1
  81. package/src/lightning/datatable/{__examples__/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.html → __examples__disabled/customNestedComponent/customNestedComponent.html} +2 -2
  82. package/src/lightning/datatable/__examples__disabled/customNestedComponent/customNestedComponent.js +12 -0
  83. package/src/lightning/datatable/__examples__disabled/myCustomTypeDatatable/customInput.html +4 -0
  84. package/src/lightning/datatable/__examples__disabled/myCustomTypeDatatable/myCustomTypeDatatable.js +17 -0
  85. package/src/lightning/datatable/__examples__disabled/myCustomTypeDatatable/nestedSimpleComponentParent.html +7 -0
  86. package/src/lightning/datatable/__examples__disabled/simpleComponentNested/simpleComponentNested.html +9 -0
  87. package/src/lightning/datatable/__examples__disabled/simpleComponentNested/simpleComponentNested.js +6 -0
  88. package/src/lightning/datatable/autoWidthStrategy.js +145 -217
  89. package/src/lightning/datatable/columnResizer.js +80 -190
  90. package/src/lightning/datatable/columnWidthManager.js +128 -243
  91. package/src/lightning/datatable/columns.js +192 -283
  92. package/src/lightning/datatable/datagrid.slds.css +187 -0
  93. package/src/lightning/datatable/datatable.js +647 -614
  94. package/src/lightning/datatable/errors.js +19 -28
  95. package/src/lightning/datatable/fixedWidthStrategy.js +27 -49
  96. package/src/lightning/datatable/headerActions.js +10 -42
  97. package/src/lightning/datatable/indexes.js +42 -0
  98. package/src/lightning/datatable/infiniteLoading.js +27 -46
  99. package/src/lightning/datatable/inlineEdit.js +311 -322
  100. package/src/lightning/datatable/keyboard.js +490 -510
  101. package/src/lightning/datatable/renderManager.js +10 -11
  102. package/src/lightning/datatable/resizeObserver.js +10 -67
  103. package/src/lightning/datatable/rowLevelActions.js +7 -6
  104. package/src/lightning/datatable/rowNumber.js +41 -79
  105. package/src/lightning/datatable/rowSelection.js +236 -291
  106. package/src/lightning/datatable/rowSelectionShared.js +26 -33
  107. package/src/lightning/datatable/rows.js +264 -476
  108. package/src/lightning/datatable/sort.js +27 -82
  109. package/src/lightning/datatable/templates/div/div.css +2 -57
  110. package/src/lightning/datatable/templates/div/div.html +25 -10
  111. package/src/lightning/datatable/templates/div/div.lbc.native.css +3 -0
  112. package/src/lightning/datatable/templates/div/div.lbc.synthetic.css +80 -0
  113. package/src/lightning/datatable/templates/table/table.html +16 -5
  114. package/src/lightning/datatable/tree.js +17 -35
  115. package/src/lightning/datatable/types.js +10 -31
  116. package/src/lightning/datatable/utils.js +54 -29
  117. package/src/lightning/datatable/virtualization.js +2 -5
  118. package/src/lightning/datatable/widthManagerShared.js +24 -41
  119. package/src/lightning/datatable/wrapText.js +45 -77
  120. package/src/lightning/datepicker/datepicker.js +32 -9
  121. package/src/lightning/datepicker/datepicker.js-meta.xml +6 -0
  122. package/src/lightning/datepicker/form-element.slds.css +54 -54
  123. package/src/lightning/datepicker/input-text.slds.css +41 -68
  124. package/src/lightning/datetimepicker/datetimepicker.js-meta.xml +6 -0
  125. package/src/lightning/datetimepicker/form-element.slds.css +54 -54
  126. package/src/lightning/datetimepicker/input-text.slds.css +41 -68
  127. package/src/lightning/dualListbox/dual-listbox.slds.css +7 -2
  128. package/src/lightning/dualListbox/dualListbox.js +7 -8
  129. package/src/lightning/dualListbox/form-element.slds.css +54 -54
  130. package/src/lightning/dualListbox/listbox.slds.css +51 -99
  131. package/src/lightning/dynamicIcon/dynamic-icon-strength.slds.css +1 -2
  132. package/src/lightning/dynamicIcon/dynamic-icon-trend.slds.css +1 -2
  133. package/src/lightning/formattedDateTime/formattedDateTime.js +7 -62
  134. package/src/lightning/formattedDateTime/formattedDateTime.js-meta.xml +3 -0
  135. package/src/lightning/formattedLocation/formattedLocation.html +1 -3
  136. package/src/lightning/formattedLocation/formattedLocation.js +3 -25
  137. package/src/lightning/formattedLookup/events.js +2 -4
  138. package/src/lightning/formattedName/formattedName.js +3 -2
  139. package/src/lightning/formattedName/formattedName.js-meta.xml +3 -0
  140. package/src/lightning/formattedNumber/formattedNumber.js +5 -51
  141. package/src/lightning/formattedNumber/formattedNumber.js-meta.xml +3 -0
  142. package/src/lightning/formattedRichText/formattedRichText.js +5 -5
  143. package/src/lightning/formattedRichText/linkTextNodes.js +58 -0
  144. package/src/lightning/formattedRichText/richTextConfig.js +1 -0
  145. package/src/lightning/groupedCombobox/form-element.slds.css +54 -54
  146. package/src/lightning/groupedCombobox/grouped-combobox.slds.css +0 -2
  147. package/src/lightning/groupedCombobox/groupedCombobox.js-meta.xml +1 -1
  148. package/src/lightning/groupedCombobox/input-text.slds.css +41 -68
  149. package/src/lightning/helptext/button-icon.slds.css +1 -1
  150. package/src/lightning/helptext/form-element.slds.css +54 -54
  151. package/src/lightning/helptext/helptext.css +7 -0
  152. package/src/lightning/helptext/helptext.js +3 -4
  153. package/src/lightning/icon/icon.html +1 -1
  154. package/src/lightning/icon/icon.slds.css +12 -25
  155. package/src/lightning/input/form-element.slds.css +54 -54
  156. package/src/lightning/input/input.html +5 -0
  157. package/src/lightning/inputAddress/addressFormat.js +31 -4
  158. package/src/lightning/inputAddress/fieldsLayout.js +6 -0
  159. package/src/lightning/inputAddress/form-element.slds.css +54 -54
  160. package/src/lightning/inputAddress/input-address.slds.css +1 -2
  161. package/src/lightning/inputAddress/input-text.slds.css +41 -68
  162. package/src/lightning/inputAddress/inputAddress.html +19 -1
  163. package/src/lightning/inputAddress/inputAddress.js +75 -3
  164. package/src/lightning/inputAddress/inputAddress.js-meta.xml +3 -0
  165. package/src/lightning/inputLocation/form-element.slds.css +54 -54
  166. package/src/lightning/inputLocation/input-location.slds.css +1 -2
  167. package/src/lightning/inputLocation/input-text.slds.css +41 -68
  168. package/src/lightning/inputName/form-element.slds.css +54 -54
  169. package/src/lightning/inputName/input-text.slds.css +41 -68
  170. package/src/lightning/interactiveDialogBase/interactive-dialog-base.slds.css +0 -3
  171. package/src/lightning/interactiveDialogBase/interactiveDialogBase.js-meta.xml +6 -0
  172. package/src/lightning/internationalizationLibrary/address/AddressFormat.js +553 -610
  173. package/src/lightning/lookupAddress/form-element.slds.css +54 -54
  174. package/src/lightning/lookupAddress/listbox.slds.css +51 -99
  175. package/src/lightning/lookupAddress/location.js +2 -0
  176. package/src/lightning/lookupAddress/lookup-address.slds.css +0 -2
  177. package/src/lightning/lookupAddress/lookupAddress.html +6 -1
  178. package/src/lightning/lookupAddress/lookupAddress.js +40 -10
  179. package/src/lightning/menuDivider/menu-divider.slds.css +0 -2
  180. package/src/lightning/menuItem/menu-item.slds.css +8 -2
  181. package/src/lightning/menuSubheader/menu-subheader.slds.css +1 -2
  182. package/src/lightning/modal/__docs__/modal.md +10 -1
  183. package/src/lightning/modal/__modalUtils__/modalContainerTestConstants.js +3 -7
  184. package/src/lightning/modal/__modalUtils__/modalContainerTestMethods.js +39 -133
  185. package/src/lightning/modal/__modalUtils__/modalContainerTestMockData.js +1 -1
  186. package/src/lightning/modal/modal.js +1 -1
  187. package/src/lightning/modalBase/modal-base.slds.css +3 -3
  188. package/src/lightning/modalBase/modalBase.html +15 -10
  189. package/src/lightning/modalBase/modalBase.js +131 -154
  190. package/src/lightning/modalBase/modalBase.js-meta.xml +6 -0
  191. package/src/lightning/modalBody/modal-body.slds.css +1 -2
  192. package/src/lightning/modalBody/modalBody.css +6 -0
  193. package/src/lightning/modalFooter/modal-footer.slds.css +2 -2
  194. package/src/lightning/modalFooter/modalFooter.js +0 -21
  195. package/src/lightning/modalHeader/modal-header.slds.css +1 -2
  196. package/src/lightning/modalHeader/modalHeader.html +16 -4
  197. package/src/lightning/modalHeader/modalHeader.js +61 -36
  198. package/src/lightning/overlay/overlay.js-meta.xml +6 -0
  199. package/src/lightning/pill/link.html +1 -0
  200. package/src/lightning/pill/pill.slds.css +32 -58
  201. package/src/lightning/pill/plain.html +1 -0
  202. package/src/lightning/pill/plainLink.html +1 -0
  203. package/src/lightning/pillContainer/button.slds.css +1 -1
  204. package/src/lightning/pillContainer/listbox.slds.css +51 -99
  205. package/src/lightning/pillContainer/pill-container.slds.css +6 -10
  206. package/src/lightning/pillContainer/pill.slds.css +32 -58
  207. package/src/lightning/popup/popover.slds.css +0 -2
  208. package/src/lightning/primitiveBubble/primitiveBubble.js +42 -0
  209. package/src/lightning/primitiveBubble/primitiveBubble.js-meta.xml +6 -0
  210. package/src/lightning/primitiveButton/primitiveButoon.js-meta.xml +6 -0
  211. package/src/lightning/primitiveCellCheckbox/checkbox.css +2 -0
  212. package/src/lightning/primitiveColorpickerButton/color-picker-button.slds.css +16 -38
  213. package/src/lightning/primitiveCustomCell/primitiveCustomCell.js +26 -1
  214. package/src/lightning/primitiveDatatableCell/primitiveDatatableCell.js +1 -1
  215. package/src/lightning/primitiveHeaderActions/primitiveHeaderActions.html +1 -1
  216. package/src/lightning/primitiveHeaderActions/primitiveHeaderActions.js +13 -0
  217. package/src/lightning/primitiveHeaderFactory/nonsortableHeader.css +1 -0
  218. package/src/lightning/primitiveHeaderFactory/nonsortableHeader.html +19 -6
  219. package/src/lightning/primitiveHeaderFactory/selectableHeader.css +2 -0
  220. package/src/lightning/primitiveHeaderFactory/sortableHeader.html +3 -1
  221. package/src/lightning/primitiveIcon/icon.slds.css +12 -25
  222. package/src/lightning/primitiveIcon/primitiveIcon.js-meta.xml +6 -0
  223. package/src/lightning/primitiveIframe/primitiveIframe.js +3 -1
  224. package/src/lightning/primitiveInputCheckbox/form-element.slds.css +54 -54
  225. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js +5 -2
  226. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js-meta.xml +6 -0
  227. package/src/lightning/primitiveInputCheckboxButton/form-element.slds.css +54 -54
  228. package/src/lightning/primitiveInputCheckboxButton/input-checkbox-button.slds.css +6 -4
  229. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js +5 -2
  230. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js-meta.xml +6 -0
  231. package/src/lightning/primitiveInputColor/form-element.slds.css +54 -54
  232. package/src/lightning/primitiveInputColor/input-color.slds.css +2 -3
  233. package/src/lightning/primitiveInputColor/input-text.slds.css +41 -68
  234. package/src/lightning/primitiveInputColor/primitiveInputColor.js +5 -2
  235. package/src/lightning/primitiveInputColor/primitiveInputColor.js-meta.xml +6 -0
  236. package/src/lightning/primitiveInputFile/button.slds.css +1 -1
  237. package/src/lightning/primitiveInputFile/form-element.slds.css +54 -54
  238. package/src/lightning/primitiveInputFile/input-file.slds.css +1 -4
  239. package/src/lightning/primitiveInputFile/primitiveInputFile.js +4 -2
  240. package/src/lightning/primitiveInputFile/primitiveInputFile.js-meta.xml +6 -0
  241. package/src/lightning/primitiveInputRadio/primitiveInputRadio.js +4 -2
  242. package/src/lightning/primitiveInputSimple/form-element.slds.css +54 -54
  243. package/src/lightning/primitiveInputSimple/input-text.slds.css +41 -68
  244. package/src/lightning/primitiveInputSimple/primitiveInputSimple.js-meta.xml +6 -0
  245. package/src/lightning/primitiveInputToggle/form-element.slds.css +54 -54
  246. package/src/lightning/primitiveInputToggle/input-toggle.slds.css +50 -27
  247. package/src/lightning/primitiveInputToggle/primitiveInputToggle.js +5 -2
  248. package/src/lightning/primitiveInputToggle/primitiveInputToggle.js-meta.xml +6 -0
  249. package/src/lightning/primitiveResizeHandler/primitiveResizeHandler.css +11 -0
  250. package/src/lightning/primitiveResizeHandler/primitiveResizeHandler.html +2 -1
  251. package/src/lightning/primitiveResizeHandler/primitiveResizeHandler.js +1 -0
  252. package/src/lightning/progressBar/progress-bar.slds.css +8 -10
  253. package/src/lightning/progressRing/progress-ring.slds.css +0 -23
  254. package/src/lightning/progressStep/base.html +5 -6
  255. package/src/lightning/progressStep/progressStep.js +15 -23
  256. package/src/lightning/prompt/__docs__/prompt.md +1 -1
  257. package/src/lightning/radioGroup/form-element.slds.css +54 -54
  258. package/src/lightning/radioGroup/radioGroup.html +1 -2
  259. package/src/lightning/radioGroup/radioGroup.js +1 -0
  260. package/src/lightning/routingService/routingService.js +31 -5
  261. package/src/lightning/select/form-element.slds.css +54 -54
  262. package/src/lightning/select/select.slds.css +4 -2
  263. package/src/lightning/shadowBaseClassPrivate/shadowBaseClassPrivate.js +0 -2
  264. package/src/lightning/sldsCommon/sldsCommon.css +134 -98
  265. package/src/lightning/sldsUtilsAlignment/sldsUtilsAlignment.css +1 -1
  266. package/src/lightning/sldsUtilsBox/sldsUtilsBox.css +14 -13
  267. package/src/lightning/sldsUtilsGrid/sldsUtilsGrid.css +95 -92
  268. package/src/lightning/sldsUtilsHyphenation/sldsUtilsHyphenation.css +1 -1
  269. package/src/lightning/sldsUtilsMargin/sldsUtilsMargin.css +77 -75
  270. package/src/lightning/sldsUtilsPadding/sldsUtilsPadding.css +73 -73
  271. package/src/lightning/sldsUtilsSizing/sldsUtilsSizing.css +552 -558
  272. package/src/lightning/sldsUtilsVisibility/sldsUtilsVisibility.css +5 -1
  273. package/src/lightning/spinner/spinner.slds.css +62 -62
  274. package/src/lightning/staticMap/staticMap.js +3 -2
  275. package/src/lightning/tab/tab.js +10 -5
  276. package/src/lightning/tab/tab.js-meta.xml +3 -0
  277. package/src/lightning/tab/tab.slds.css +14 -7
  278. package/src/lightning/tabBar/tab-bar.slds.css +16 -6
  279. package/src/lightning/tabBar/tabBar.js +10 -5
  280. package/src/lightning/tabset/__docs__/tabset.md +24 -1
  281. package/src/lightning/tabset/tabset.html +2 -0
  282. package/src/lightning/tabset/tabset.js +25 -38
  283. package/src/lightning/tabset/tabset.js-meta.xml +3 -0
  284. package/src/lightning/tabset/tabset.slds.css +0 -2
  285. package/src/lightning/textarea/form-element.slds.css +54 -54
  286. package/src/lightning/textarea/textarea.js +11 -2
  287. package/src/lightning/textarea/textarea.slds.css +22 -9
  288. package/src/lightning/timepicker/form-element.slds.css +54 -54
  289. package/src/lightning/timepicker/timepicker.js-meta.xml +6 -0
  290. package/src/lightning/timepicker/timepicker.slds.css +2 -2
  291. package/src/lightning/toast/__docs__/toast.md +20 -22
  292. package/src/lightning/toast/button-icon.slds.css +1 -1
  293. package/src/lightning/toast/icon.slds.css +12 -25
  294. package/src/lightning/toast/toast.js +15 -12
  295. package/src/lightning/toast/toast.slds.css +6 -18
  296. package/src/lightning/toastContainer/__docs__/toastContainer.md +3 -2
  297. package/src/lightning/toastContainer/toast.slds.css +6 -18
  298. package/src/lightning/toastContainer/toastContainer.js +25 -17
  299. package/src/lightning/tooltipLibrary/tooltipLibrary.js +36 -24
  300. package/src/lightning/tree/tree.js +2 -0
  301. package/src/lightning/utils/classSet.js +9 -3
  302. package/src/lightning/utilsPrivate/formatUtils.js +158 -0
  303. package/src/lightning/utilsPrivate/textUtils.js +16 -0
  304. package/src/lightning/utilsPrivate/utilsPrivate.js +56 -15
  305. package/src/lightning/utilsPrivate/validationUtils.js +59 -0
  306. package/src/lightning/verticalNavigation/vertical-navigation.slds.css +14 -0
  307. package/src/lightning/verticalNavigation/verticalNavigation.css +1 -1
  308. package/src/lightning/verticalNavigation/verticalNavigation.html +1 -1
  309. package/src/lightning/verticalNavigation/verticalNavigation.js +66 -28
  310. package/src/lightning/verticalNavigation/verticalNavigation.js-meta.xml +3 -0
  311. package/src/lightning/verticalNavigationItem/vertical-navigation-item.slds.css +63 -0
  312. package/src/lightning/verticalNavigationItem/verticalNavigationItem.css +2 -3
  313. package/src/lightning/verticalNavigationItem/verticalNavigationItem.js +29 -15
  314. package/src/lightning/verticalNavigationItem/verticalNavigationItem.js-meta.xml +3 -0
  315. package/src/lightning/verticalNavigationItem/verticalNavigationItem.lbc.native.css +2 -0
  316. package/src/lightning/verticalNavigationItem/verticalNavigationItem.lbc.synthetic.css +3 -0
  317. package/src/lightning/verticalNavigationItemBadge/badge.slds.css +76 -0
  318. package/src/lightning/verticalNavigationItemBadge/vertical-navigation-item.slds.css +63 -0
  319. package/src/lightning/verticalNavigationItemBadge/verticalNavigationItemBadge.css +2 -3
  320. package/src/lightning/verticalNavigationItemBadge/verticalNavigationItemBadge.html +1 -1
  321. package/src/lightning/verticalNavigationItemBadge/verticalNavigationItemBadge.js +28 -15
  322. package/src/lightning/verticalNavigationItemBadge/verticalNavigationItemBadge.js-meta.xml +3 -0
  323. package/src/lightning/verticalNavigationItemBadge/verticalNavigationItemBadge.lbc.native.css +5 -0
  324. package/src/lightning/verticalNavigationItemBadge/verticalNavigationItemBadge.lbc.synthetic.css +3 -0
  325. package/src/lightning/verticalNavigationItemIcon/vertical-navigation-item.slds.css +63 -0
  326. package/src/lightning/verticalNavigationItemIcon/verticalNavigationItemIcon.css +2 -3
  327. package/src/lightning/verticalNavigationItemIcon/verticalNavigationItemIcon.js +29 -15
  328. package/src/lightning/verticalNavigationItemIcon/verticalNavigationItemIcon.js-meta.xml +3 -0
  329. package/src/lightning/verticalNavigationItemIcon/verticalNavigationItemIcon.lbc.native.css +3 -0
  330. package/src/lightning/verticalNavigationItemIcon/verticalNavigationItemIcon.lbc.synthetic.css +3 -0
  331. package/src/lightning/verticalNavigationOverflow/button.slds.css +503 -0
  332. package/src/lightning/verticalNavigationOverflow/vertical-navigation-item.slds.css +63 -0
  333. package/src/lightning/verticalNavigationOverflow/vertical-navigation-section.slds.css +17 -0
  334. package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.css +2 -1
  335. package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.html +2 -0
  336. package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.js +18 -13
  337. package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.js-meta.xml +3 -0
  338. package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.lbc.native.css +5 -0
  339. package/src/lightning/verticalNavigationSection/vertical-navigation-section.slds.css +13 -15
  340. package/src/lightning/verticalNavigationSection/verticalNavigationSection.js-meta.xml +3 -0
  341. package/src/lightning/datatable/__examples__/customDatatableWrapper/customDatatableWrapper.js +0 -158
  342. package/src/lightning/datatable/__examples__/customDatatypeDeleteRowBtn/customDatatypeDeleteRowBtn.html +0 -6
  343. package/src/lightning/datatable/__examples__/customDatatypeLink/customDatatypeLink.html +0 -9
  344. package/src/lightning/datatable/__examples__/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.js +0 -40
  345. package/src/lightning/datatable/__examples__/customDatatypeTable/customNumber.html +0 -3
  346. package/src/lightning/datatable/inlineEditShared.js +0 -26
  347. package/src/lightning/datatable/resizeSensor.js +0 -244
  348. package/src/lightning/formattedRichText/linkify.js +0 -43
  349. package/src/lightning/utilsPrivate/smartSetAttribute.js +0 -19
  350. /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatableWrapper/customDatatableWrapper.html +0 -0
  351. /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeLink/customDatatypeLink.js +0 -0
  352. /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeNumber/customDatatypeNumber.html +0 -0
  353. /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeNumber/customDatatypeNumber.js +0 -0
  354. /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/customDatatypeTable.js +0 -0
  355. /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/customLink.html +0 -0
  356. /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/customName.html +0 -0
  357. /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/orderingButtons.html +0 -0
@@ -147,7 +147,7 @@ To understand how we implemented SLDS in `lightning-tabset`, see the **Source Co
147
147
 
148
148
  #### Usage Considerations
149
149
 
150
- When a tabset contains more tabs than could fit on the screen, the tabs that don't fit are moved into a dropdown menu (also known as an overflow) next to the last tab that fits. Note that the active tab always shows and is never moved into the overflow. Truncating the tab label is not supported. When the tab label has more characters than can fit the viewport, the extra characters are not truncated but are hidden from view.
150
+ When a tabset contains more tabs than can fit in the viewport, the tabs that don't fit are moved into a dropdown menu (also known as an overflow) next to the last tab that fits. Note that the active tab always shows and is never moved into the overflow. Truncating the tab label is not supported. When the tab label has more characters than can fit the viewport, the extra characters are not truncated but are hidden from view.
151
151
 
152
152
  You can nest `lightning-tab` within other elements such as `<div>` or `<template>`, for example to render tabs conditionally using `if:true` and `if:false`. Otherwise, you must nest
153
153
  `lightning-tab` directly within `lightning-tabset` tags.
@@ -157,6 +157,29 @@ active tabs content is queryable. In the example, the text `Content of Tab Two`
157
157
 
158
158
  This component has usage differences from its Aura counterpart. See [Base Components: Aura Vs Lightning Web Components](https://developer.salesforce.com/docs/platform/lwc/guide/migrate-map-aura-lwc-components) in the Lightning Web Components Developer Guide.
159
159
 
160
+ #### Accessibility
161
+
162
+ Use the Tab or arrow keys to navigate to the More menu that’s created when the viewport is too narrow to show all the tabs.
163
+
164
+ Several attributes enable accessibility features for a tabset heading.
165
+
166
+ Use `heading-label` to specify custom assistive text for a tabset heading. The value of `heading-label` is rendered as the text content of a `div` element with `role="heading"` and `aria-level="2"`. If you don't specify `heading-label` the default assistive text is "Tabs" in a `div` element with `aria-level="2"`.
167
+
168
+ Use `heading-level` to pass a value between 1 and 6 to the rendered `aria-level` attribute. The default value is 2. This attribute requires you to also specify `heading-label`.
169
+
170
+ Specify `heading-visible` to display the assistive text above the tabset when you specify `heading-label`. By default, this attribute is not present so the assistive text is read by screen readers but isn't displayed. When `heading-visible` is present, the assistive text is read by screen readers and displayed.
171
+
172
+ This example sets custom assistive text for a heading, specifies `heading-level` to change the rendered `aria-level`, and makes the heading visible.
173
+
174
+ ```html
175
+ <template>
176
+ <lightning-tabset heading-label="Example tabset" heading-level="3" heading-visible>
177
+ <lightning-tab label="Item One"> One Content! </lightning-tab>
178
+ <lightning-tab label="Item Two"> Two Content! </lightning-tab>
179
+ </lightning-tabset>
180
+ </template>
181
+ ```
182
+
160
183
  #### Source Code
161
184
 
162
185
  `lightning-tabset` is available in the [Base Components Recipes GitHub repository](https://github.com/salesforce/base-components-recipes#documentation). It's transpiled into the `c` namespace so that you can use it in your own projects.
@@ -9,6 +9,7 @@
9
9
  onprivatetablinkregister={handleTabLinkRegister}
10
10
  >{headingLabel}</div>
11
11
  <lightning-tab-bar
12
+ exportparts="tab-bar, tab-item"
12
13
  variant={variant}
13
14
  onselect={handleTabSelected}
14
15
  aria-labelledby="tabset-heading"
@@ -17,6 +18,7 @@
17
18
  </template>
18
19
  <template lwc:else>
19
20
  <lightning-tab-bar
21
+ exportparts="tab-bar, tab-item"
20
22
  variant={variant}
21
23
  onselect={handleTabSelected}
22
24
  aria-label={defaultAriaLabel}
@@ -28,6 +28,8 @@ export default class LightningTabset extends LightningShadowBaseClass {
28
28
  _headingLabel = null;
29
29
  _headingVisible = false;
30
30
  _headingLevel = 2;
31
+ // these headingLabel private variables are used to identify if this component
32
+ // requires a rerender based on a null headingLabel value change
31
33
  _headingLabelRerender = false;
32
34
  _headingLabelRemove = false;
33
35
  _headingLabelAdd = false;
@@ -44,7 +46,10 @@ export default class LightningTabset extends LightningShadowBaseClass {
44
46
  @api title;
45
47
 
46
48
  /**
47
- * The string value to set the tabset heading label to
49
+ * Specifies text to use as custom assistive text for the tabset heading.
50
+ * The text is placed in a div element with role="heading" and aria-level="2".
51
+ * When heading-label isn't specified, the default assistive text is "Tabs" in
52
+ * a div element with aria-level="2".
48
53
  * @type {string|null} - the value to set for the tabset heading
49
54
  */
50
55
  @api
@@ -55,37 +60,23 @@ export default class LightningTabset extends LightningShadowBaseClass {
55
60
  set headingLabel(value) {
56
61
  const labelIsPopulated = value && value.trim().length > 0;
57
62
  const currentValue = this._headingLabel;
58
- // unset the value, if conditions for valid label not met
59
63
  const nextValue = labelIsPopulated ? value : null;
60
64
  this._headingLabel = nextValue;
61
- // need to handle dynamic changes after initial render cycle has occurred
62
- // NOTE: W-14708987 was created to deal w/ an edge case described in B & C below
63
- // (a) label was set, and changing to another label value.
64
- // ex: 'My Title' -> 'My Turtles' (fixed:W-14578712)
65
- // (b) label was unset, and now has a value. (TODO: W-14708987)
66
- // ex: null -> 'My title'
67
- // (c) label values was set, and now has value set null (TODO: W-14708987)
68
- // ex: 'My Title' -> null
69
- // the issues with B and C occur due to how the template lwc:if / lwc:else
70
- // is structured
71
- // if the value is changing from: 'My Title' to 'My Bigger Title' (A above),
72
- // no rerender is required, because the template logic is the same
73
- // need to rerender the tabs, because the template logic IF / ELSE
74
- // is triggered by transitioning between null and a populated value
65
+
66
+ // special case for when headingLabel is programatically set to null or a null
67
+ // headingLabel is set to a non-null value. See W-14708987 for more info.
75
68
  if (!this._firstRender) {
76
- this._headingLabelRemove = currentValue && nextValue === null;
77
- this._headingLabelAdd = currentValue === null && nextValue;
78
- // need to trigger rerender of the entire tab set element
79
- if (this._headingLabelRemove || this._headingLabelAdd) {
80
- this._headingLabelRerender = true;
81
- this._firstRender = true;
82
- }
69
+ this._headingLabelRemove = currentValue && nextValue === null; // label to null
70
+ this._headingLabelAdd = currentValue === null && nextValue; // null to label
71
+ this._headingLabelRerender =
72
+ this._headingLabelRemove || this._headingLabelAdd;
83
73
  }
84
74
  }
85
75
 
86
76
  /**
87
- * Determines if the heading should be visible or only screen reader visible
88
- * when set, expects a boolean value. when not set, defaults to false
77
+ * Determines whether the text that’s passed with the heading-label attribute
78
+ * is visible above the tabset. This attribute isn't present by default so the
79
+ * assistive text is only read by screen readers.
89
80
  * @type {boolean} - the boolean value to set for heading visibility
90
81
  * @returns {boolean} - the boolean value set for heading visibility
91
82
  */
@@ -99,7 +90,8 @@ export default class LightningTabset extends LightningShadowBaseClass {
99
90
  }
100
91
 
101
92
  /**
102
- * Determines the value to pass to aria-level. Accepts values in range [1,6].
93
+ * Specifies the value to pass through to aria-level when you specify heading-label.
94
+ * Accepts values from 1 to 6. The default value is 2.
103
95
  * @type {number} - the value to set for the heading's aria-level
104
96
  * @returns {number} - the value for setting the heading's aria-level
105
97
  */
@@ -214,12 +206,7 @@ export default class LightningTabset extends LightningShadowBaseClass {
214
206
  renderedCallback() {
215
207
  // always update the cached this._tabBarElem at the start of the render cycle
216
208
  this._cacheTabBarElem();
217
- if (this.nativeShadowAndRerender) {
218
- this._rerender = false;
219
- this._updateTabBarHeaders(this._tabHeaders);
220
- this._selectTab(this._activeTabValue);
221
- }
222
- if (this.headingLabelChangeRerender) {
209
+ if (this.nativeShadowAndRerender || this._headingLabelRerender) {
223
210
  this._rerender = false;
224
211
  this._headingLabelRerender = false;
225
212
  this._updateTabBarHeaders(this._tabHeaders);
@@ -421,16 +408,12 @@ export default class LightningTabset extends LightningShadowBaseClass {
421
408
  return this._rerender && !this.template.synthetic;
422
409
  }
423
410
 
424
- get headingLabelChangeRerender() {
425
- return !this._firstRender && this._headingLabelRerender;
426
- }
427
-
428
411
  /* cache tabBar element when first accessed, or isCSR and not set */
429
412
  get tabBarElem() {
430
413
  if (isCSR) {
431
414
  if (
432
- this._headingLabelRerender ||
433
415
  this.nativeShadowAndRerender ||
416
+ this._headingLabelRerender ||
434
417
  !this._tabBarElem
435
418
  ) {
436
419
  this._cacheTabBarElem();
@@ -450,7 +433,11 @@ export default class LightningTabset extends LightningShadowBaseClass {
450
433
  // udpdate tabBar element, force to update elem if NS && Rerender
451
434
  // or always if it doesn't exist
452
435
  // order of IF checking is important
453
- if (this.nativeShadowAndRerender || !this._tabBarElem) {
436
+ if (
437
+ this.nativeShadowAndRerender ||
438
+ this._headingLabelRerender ||
439
+ !this._tabBarElem
440
+ ) {
454
441
  this._tabBarElem =
455
442
  this.template.querySelector('lightning-tab-bar');
456
443
  }
@@ -3,4 +3,7 @@
3
3
  <isExposed>true</isExposed>
4
4
  <support>GA</support>
5
5
  <minApiVersion>44.0</minApiVersion>
6
+ <capabilities>
7
+ <capability>lightning__ServerRenderableWithHydration</capability>
8
+ </capabilities>
6
9
  </LightningComponentBundle>
@@ -1,5 +1,4 @@
1
1
 
2
- @supports (--styling-hooks: '') {
3
2
  :host([data-render-mode="shadow"]) .slds-vertical-tabs {
4
3
  display: flex;
5
4
  overflow: hidden;
@@ -12,4 +11,3 @@
12
11
  :host([data-render-mode="shadow"]) .slds-tabs_default .slds-tabs_default__header:not(.slds-assistive-text) {
13
12
  font-size: var(--sds-g-font-scale-neg-2, calc(var(--slds-g-font-scale-neg-1) / var(--slds-g-font-scale-ratio)));
14
13
  }
15
- }
@@ -25,21 +25,22 @@
25
25
  * for any needed updates to keep these files in sync
26
26
  */
27
27
 
28
- @supports (--styling-hooks: '') {
29
- /* TODO: Swap with utility classes */
30
- :host([data-render-mode="shadow"]) fieldset {
28
+ /* TODO: Swap with utility classes */
29
+
30
+ :host([data-render-mode="shadow"]) fieldset {
31
31
  border: 0;
32
32
  margin: 0;
33
33
  padding: 0;
34
34
  }
35
35
 
36
- /* FORM ELEMENT: BASE */
37
- :host([data-render-mode="shadow"]) .slds-form-element {
36
+ /* FORM ELEMENT: BASE */
37
+
38
+ :host([data-render-mode="shadow"]) .slds-form-element {
38
39
  position: relative;
39
40
  min-width: 0;
40
41
  }
41
42
 
42
- :host([data-render-mode="shadow"]) .slds-form-element__label {
43
+ :host([data-render-mode="shadow"]) .slds-form-element__label {
43
44
  overflow-wrap: break-word;
44
45
  word-wrap: break-word;
45
46
  hyphens: auto;
@@ -51,20 +52,20 @@
51
52
  margin-block-end: calc(var(--slds-g-spacing-1) / 2);
52
53
  }
53
54
 
54
- :host([data-render-mode="shadow"]) .slds-form-element__label:empty {
55
+ :host([data-render-mode="shadow"]) .slds-form-element__label:empty {
55
56
  margin: 0;
56
57
  }
57
58
 
58
- :host([data-render-mode="shadow"]) .slds-form-element__control {
59
+ :host([data-render-mode="shadow"]) .slds-form-element__control {
59
60
  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 */
60
61
  position: relative;
61
62
  }
62
63
 
63
- :host([data-render-mode="shadow"]) .slds-form-element__control .slds-radio {
64
+ :host([data-render-mode="shadow"]) .slds-form-element__control .slds-radio {
64
65
  display: block;
65
66
  }
66
67
 
67
- :host([data-render-mode="shadow"]) .slds-form-element__icon {
68
+ :host([data-render-mode="shadow"]) .slds-form-element__icon {
68
69
  display: inline-block;
69
70
  position: relative;
70
71
  padding-block-start: var(--slds-g-spacing-1);
@@ -73,42 +74,42 @@
73
74
  z-index: 1;
74
75
  }
75
76
 
76
- :host([data-render-mode="shadow"]) .slds-form-element__icon .slds-button_icon {
77
+ :host([data-render-mode="shadow"]) .slds-form-element__icon .slds-button_icon {
77
78
  position: relative;
78
79
  }
79
80
 
80
- :host([data-render-mode="shadow"]) .slds-form-element__help,:host([data-render-mode="shadow"])
81
+ :host([data-render-mode="shadow"]) .slds-form-element__help,:host([data-render-mode="shadow"])
81
82
  .slds-form-element__helper {
82
83
  font-size: var(--slds-g-font-scale-neg-3);
83
84
  margin-block-start: calc(var(--slds-g-spacing-1) / 2);
84
85
  display: block;
85
86
  }
86
87
 
87
- :host([data-render-mode="shadow"]) .slds-form-element_edit .slds-form-element__static {
88
+ :host([data-render-mode="shadow"]) .slds-form-element_edit .slds-form-element__static {
88
89
  width: calc(100% - var(--slds-g-sizing-7));
89
90
  }
90
91
 
91
- :host([data-render-mode="shadow"]) .slds-form-element_readonly {
92
+ :host([data-render-mode="shadow"]) .slds-form-element_readonly {
92
93
  flex-basis: 0%;
93
94
  border-bottom: var(--slds-g-sizing-border-1) solid var(--slds-g-color-border-1);
94
95
  margin-block-end: 0;
95
96
  }
96
97
 
97
- :host([data-render-mode="shadow"]) .slds-form-element_readonly .slds-form-element__control {
98
+ :host([data-render-mode="shadow"]) .slds-form-element_readonly .slds-form-element__control {
98
99
  padding-block-start: calc(var(--slds-g-spacing-1) / 2);
99
100
  padding-block-end: calc(var(--slds-g-spacing-1) / 2);
100
101
  }
101
102
 
102
- :host([data-render-mode="shadow"]) .slds-form-element_readonly .slds-form-element__label {
103
+ :host([data-render-mode="shadow"]) .slds-form-element_readonly .slds-form-element__label {
103
104
  margin-block-end: 0;
104
105
  }
105
106
 
106
- :host([data-render-mode="shadow"]) .slds-form-element__legend {
107
+ :host([data-render-mode="shadow"]) .slds-form-element__legend {
107
108
  font-weight: var(--slds-g-font-weight-7);
108
109
  float: left;
109
110
  }
110
111
 
111
- :host([data-render-mode="shadow"]) .slds-form-element__addon {
112
+ :host([data-render-mode="shadow"]) .slds-form-element__addon {
112
113
  display: inline-block;
113
114
  margin-block-start: 0;
114
115
  margin-block-end: 0;
@@ -117,7 +118,7 @@
117
118
  align-self: center;
118
119
  }
119
120
 
120
- :host([data-render-mode="shadow"]) .slds-form-element__static {
121
+ :host([data-render-mode="shadow"]) .slds-form-element__static {
121
122
  overflow-wrap: break-word;
122
123
  word-wrap: break-word;
123
124
  word-break: break-word;
@@ -128,20 +129,20 @@
128
129
  width: 100%;
129
130
  }
130
131
 
131
- :host([data-render-mode="shadow"]) .slds-form-element__static.slds-text-longform *:last-child {
132
+ :host([data-render-mode="shadow"]) .slds-form-element__static.slds-text-longform *:last-child {
132
133
  margin-block-end: 0;
133
134
  }
134
135
 
135
- :host([data-render-mode="shadow"]) .slds-form-element__static:empty {
136
+ :host([data-render-mode="shadow"]) .slds-form-element__static:empty {
136
137
  min-height: calc(var(--slds-g-sizing-6) + 1px);
137
138
  vertical-align: bottom;
138
139
  }
139
140
 
140
- :host([data-render-mode="shadow"]) .slds-form-element__static--edit {
141
+ :host([data-render-mode="shadow"]) .slds-form-element__static--edit {
141
142
  width: calc(100% - var(--slds-g-sizing-7));
142
143
  }
143
144
 
144
- :host([data-render-mode="shadow"]) .slds-required {
145
+ :host([data-render-mode="shadow"]) .slds-required {
145
146
  color: var(--slds-g-color-error-base-50);
146
147
  margin-block-start: 0;
147
148
  margin-block-end: 0;
@@ -149,25 +150,25 @@
149
150
  margin-inline-end: calc(var(--slds-g-spacing-1) / 2);
150
151
  }
151
152
 
152
- :host([data-render-mode="shadow"]) .slds-has-error .slds-form-element__help {
153
+ :host([data-render-mode="shadow"]) .slds-has-error .slds-form-element__help {
153
154
  color: var(--slds-g-color-error-1);
154
155
  }
155
156
 
156
- :host([data-render-mode="shadow"][invalid]) .slds-form-element__help {
157
+ :host([data-render-mode="shadow"][invalid]) .slds-form-element__help {
157
158
  color: var(--slds-g-color-error-1);
158
159
  }
159
160
 
160
- /* --------------------------------------- */
161
+ /* --------------------------------------- */
161
162
 
162
- /* FORM ELEMENT: STACKED */
163
+ /* FORM ELEMENT: STACKED */
163
164
 
164
- :host([data-render-mode="shadow"][variant='label-stacked']) {
165
+ :host([data-render-mode="shadow"][variant='label-stacked']) {
165
166
  display: block;
166
167
  }
167
168
 
168
- /* TODO: Using `:not` is currently not working, and it could break the build because of issues with the dist script */
169
+ /* TODO: Using `:not` is currently not working, and it could break the build because of issues with the dist script */
169
170
 
170
- /* :host([variant='label-stacked']):not(.slds-form-element_readonly) {
171
+ /* :host([variant='label-stacked']):not(.slds-form-element_readonly) {
171
172
  margin-block-end: var(--slds-g-spacing-2);
172
173
  }
173
174
 
@@ -175,54 +176,54 @@
175
176
  padding: 0 var(--slds-g-spacing-1);
176
177
  } */
177
178
 
178
- /* :host([variant='label-stacked']):not([class*="slds-size"]) {
179
+ /* :host([variant='label-stacked']):not([class*="slds-size"]) {
179
180
  width: 100%;
180
181
  flex-basis: 100%;
181
182
  } */
182
183
 
183
- :host([data-render-mode="shadow"][variant='label-stacked']) .slds-form-element {
184
+ :host([data-render-mode="shadow"][variant='label-stacked']) .slds-form-element {
184
185
  padding: 0;
185
186
  margin-block-end: 0;
186
187
  }
187
188
 
188
- :host([data-render-mode="shadow"][variant='label-stacked']) .slds-form-element__label,:host([data-render-mode="shadow"][variant='label-stacked']) .slds-form-element__control {
189
+ :host([data-render-mode="shadow"][variant='label-stacked']) .slds-form-element__label,:host([data-render-mode="shadow"][variant='label-stacked']) .slds-form-element__control {
189
190
  border-bottom: 0; /* Remove border when using legacy version of slds-form-element */
190
191
  padding-inline-start: 0;
191
192
  }
192
193
 
193
- :host([data-render-mode="shadow"][variant='label-stacked']) .slds-form-element__control {
194
+ :host([data-render-mode="shadow"][variant='label-stacked']) .slds-form-element__control {
194
195
  width: 100%;
195
196
  flex-basis: 100%;
196
197
  clear: left;
197
198
  }
198
199
 
199
- :host([data-render-mode="shadow"][variant='label-stacked']) .slds-form-element__icon {
200
+ :host([data-render-mode="shadow"][variant='label-stacked']) .slds-form-element__icon {
200
201
  float: none;
201
202
  padding-block-start: var(--slds-g-spacing-1);
202
203
  }
203
204
 
204
- /* --------------------------------------- */
205
+ /* --------------------------------------- */
205
206
 
206
- /* FORM ELEMENT: INLINE */
207
+ /* FORM ELEMENT: INLINE */
207
208
 
208
- :host([data-render-mode="shadow"][variant='label-inline']) {
209
+ :host([data-render-mode="shadow"][variant='label-inline']) {
209
210
  display: block;
210
211
  }
211
212
 
212
- /*
213
+ /*
213
214
  we have to combine with slds class here to avoid duplication
214
215
  of this rule in child elements who import this stylesheet
215
216
  in lighting-input this slds class is synonymous with the variant
216
217
  */
217
218
 
218
- :host([data-render-mode="shadow"][variant='label-inline'].slds-form-element_horizontal) {
219
+ :host([data-render-mode="shadow"][variant='label-inline'].slds-form-element_horizontal) {
219
220
  padding: var(--slds-g-spacing-1);
220
221
  margin-block-end: var(--slds-g-spacing-2);
221
222
  }
222
223
 
223
- /* TODO: Using `:not` is currently not working, and it could break the build because of issues with the dist script */
224
+ /* TODO: Using `:not` is currently not working, and it could break the build because of issues with the dist script */
224
225
 
225
- /* :host([variant='label-inline']):not(.slds-form-element_readonly) {
226
+ /* :host([variant='label-inline']):not(.slds-form-element_readonly) {
226
227
  margin-block-end: var(--slds-g-spacing-2);
227
228
  }
228
229
 
@@ -235,11 +236,11 @@
235
236
  padding: var(--slds-g-spacing-1);
236
237
  } */
237
238
 
238
- :host([data-render-mode="shadow"][variant='label-inline']).slds-is-edited {
239
+ :host([data-render-mode="shadow"][variant='label-inline']).slds-is-edited {
239
240
  padding-block-start: var(--slds-g-sizing-6)
240
241
  }
241
242
 
242
- @media (width >= 48em) {
243
+ @media (width >= 48em) {
243
244
  :host([data-render-mode="shadow"][variant='label-inline']) .slds-form-element__label {
244
245
  max-width: calc(33% - var(--slds-g-sizing-6)); /* Removing icon width for when the help-text icon is present */
245
246
  flex-basis: calc(33% - var(--slds-g-sizing-6)); /* Some form element controls are set to display:flex */
@@ -281,35 +282,34 @@
281
282
  }
282
283
  }
283
284
 
284
- /* --------------------------------------- */
285
+ /* --------------------------------------- */
285
286
 
286
- /* FORM ELEMENT: COMPOUND */
287
+ /* FORM ELEMENT: COMPOUND */
287
288
 
288
- :host([data-render-mode="shadow"]) .slds-form-element_compound .slds-form-element__row {
289
+ :host([data-render-mode="shadow"]) .slds-form-element_compound .slds-form-element__row {
289
290
  display: flex;
290
291
  margin-bottom: var(--slds-g-spacing-1);
291
292
  margin-left: calc(var(--slds-g-spacing-1) * -1);
292
293
  margin-right: calc(var(--slds-g-spacing-1) * -1);
293
294
  }
294
295
 
295
- :host([data-render-mode="shadow"]) .slds-form-element_compound .slds-form-element__row .slds-form-element__label {
296
+ :host([data-render-mode="shadow"]) .slds-form-element_compound .slds-form-element__row .slds-form-element__label {
296
297
  padding-top: 0;
297
298
  }
298
299
 
299
- :host([data-render-mode="shadow"]) .slds-form-element_compound .slds-form-element {
300
+ :host([data-render-mode="shadow"]) .slds-form-element_compound .slds-form-element {
300
301
  padding-left: var(--slds-g-spacing-1);
301
302
  padding-right: var(--slds-g-spacing-1);
302
303
  }
303
304
 
304
- :host([data-render-mode="shadow"]) .slds-form-element_address .slds-form-element__row {
305
+ :host([data-render-mode="shadow"]) .slds-form-element_address .slds-form-element__row {
305
306
  align-items: flex-end;
306
307
  }
307
308
 
308
- /* --------------------------------------- */
309
+ /* --------------------------------------- */
309
310
 
310
- /* FORM ELEMENT: HIDDEN */
311
+ /* FORM ELEMENT: HIDDEN */
311
312
 
312
- :host([data-render-mode="shadow"][variant='label-hidden']) .slds-form-element__label {
313
+ :host([data-render-mode="shadow"][variant='label-hidden']) .slds-form-element__label {
313
314
  display: none
314
315
  }
315
- }
@@ -51,6 +51,8 @@ export default class LightningTextarea extends LightningShadowBaseClass {
51
51
  _helpMessageChanged = false;
52
52
  ariaObserver = null;
53
53
 
54
+ static validationOptOut = ['class'];
55
+
54
56
  /************************* PUBLIC PROPERTIES *************************/
55
57
 
56
58
  /**
@@ -366,7 +368,9 @@ export default class LightningTextarea extends LightningShadowBaseClass {
366
368
  if (this._inputElement) {
367
369
  return this._inputElement;
368
370
  }
369
- this._inputElement = this.template.querySelector('textarea');
371
+ this._inputElement = isCSR
372
+ ? this.template.querySelector('textarea')
373
+ : null;
370
374
  decorateInputForDragon(this._inputElement);
371
375
  return this._inputElement;
372
376
  }
@@ -420,6 +424,9 @@ export default class LightningTextarea extends LightningShadowBaseClass {
420
424
 
421
425
  connectedCallback() {
422
426
  super.connectedCallback();
427
+ if (!this.ariaObserver) {
428
+ this.ariaObserver = new AriaObserver(this);
429
+ }
423
430
  this.updateHostClassList();
424
431
  this._connected = true;
425
432
  this.interactingState = new InteractingState();
@@ -427,7 +434,9 @@ export default class LightningTextarea extends LightningShadowBaseClass {
427
434
  }
428
435
 
429
436
  renderedCallback() {
430
- this.ariaObserver.sync(this._isNativeShadow);
437
+ if (this.isConnected) {
438
+ this.ariaObserver.sync(this._isNativeShadow);
439
+ }
431
440
  // IE11: This is needed to work-around IE11 issue where it would append default value to the place holder,
432
441
  // instead of actually setting the value on the textarea element.
433
442
  if (!this._rendered) {
@@ -1,10 +1,24 @@
1
1
 
2
- @supports (--styling-hooks: '') {
2
+ :host([data-render-mode="shadow"]) {
3
+ /**
4
+ * Remap to SLDS blueprint hooks for parity
5
+ * https://www.lightningdesignsystem.com/components/modals/#Styling-Hooks-Overview
6
+ */
7
+
8
+ /* stylelint-disable */
9
+ --slds-c-textarea-spacing-blockstart: var(--slds-c-textarea-spacing-block-start);
10
+ --slds-c-textarea-spacing-blockend: var(--slds-c-textarea-spacing-block-end);
11
+ --slds-c-textarea-spacing-inlinestart: var(--slds-c-textarea-spacing-inline-start);
12
+ --slds-c-textarea-spacing-inlineend: var(--slds-c-textarea-spacing-inline-end);
13
+ /* stylelint-enable */
14
+ }
15
+
3
16
  /* sldsCommon.css file comments indicate intentionally
4
17
  not adding textarea selector to that file due to
5
18
  style leaks in synthetic shadow mode.
6
19
  adding here instead
7
20
  */
21
+
8
22
  :host([data-render-mode="shadow"]) textarea {
9
23
  color: inherit;
10
24
  font: inherit;
@@ -12,16 +26,14 @@
12
26
  }
13
27
 
14
28
  :host([data-render-mode="shadow"]) .slds-textarea {
15
- /* stylelint-disable sds-stylelint-plugin/styling-hooks-deprecated */
16
-
17
29
  /* stylelint-disable sds-stylelint-plugin/styling-hooks-pattern */
18
30
  appearance: none;
19
31
  min-height: var(--slds-c-textarea-sizing-min-height);
20
32
  width: 100%;
21
- padding-block-start: var(--slds-c-textarea-spacing-block-start, var(--slds-g-spacing-2));
22
- padding-inline-end: var(--slds-c-textarea-spacing-inline-end, var(--slds-g-spacing-3));
23
- padding-block-end: var(--slds-c-textarea-spacing-block-end, var(--slds-g-spacing-2));
24
- padding-inline-start: var(--slds-c-textarea-spacing-inline-start, var(--slds-g-spacing-3));
33
+ padding-block-start: var(--slds-c-textarea-spacing-blockstart, var(--slds-g-spacing-2));
34
+ padding-inline-end: var(--slds-c-textarea-spacing-inlineend, var(--slds-g-spacing-3));
35
+ padding-block-end: var(--slds-c-textarea-spacing-blockend, var(--slds-g-spacing-2));
36
+ padding-inline-start: var(--slds-c-textarea-spacing-inlinestart, var(--slds-g-spacing-3));
25
37
  background-color: var(--slds-c-textarea-color-background, var(--slds-g-color-neutral-base-100, var(--slds-g-color-neutral-base-100)));
26
38
  color: var(--slds-c-textarea-text-color);
27
39
  border: var(--slds-g-sizing-border-1) solid var(--slds-c-textarea-color-border, var(--slds-g-color-border-base-4, var(--slds-g-color-border-base-1)));
@@ -29,7 +41,6 @@
29
41
  box-shadow: var(--slds-c-textarea-shadow);
30
42
  resize: vertical;
31
43
  transition: border 0.1s linear, background-color 0.1s linear;
32
- /* stylelint-enable sds-stylelint-plugin/styling-hooks-deprecated */
33
44
 
34
45
  /* stylelint-enable sds-stylelint-plugin/styling-hooks-pattern */
35
46
  }
@@ -64,6 +75,7 @@
64
75
  }
65
76
 
66
77
  /* replace .slds-has-error with invalid */
78
+
67
79
  :host([data-render-mode="shadow"][invalid]) .slds-textarea {
68
80
  --slds-c-textarea-color-background: var(--slds-g-color-neutral-base-100, var(--slds-g-color-neutral-base-100));
69
81
  --slds-c-textarea-color-border: var(--slds-g-color-error-base-40, var(--slds-g-color-error-base-50));
@@ -73,6 +85,7 @@
73
85
  }
74
86
 
75
87
  /* replace .slds-has-error with invalid */
88
+
76
89
  :host([data-render-mode="shadow"][invalid]) .slds-textarea:focus,:host([data-render-mode="shadow"][invalid]) .slds-textarea:active {
77
90
  --slds-c-textarea-text-color-focus: var(--slds-c-textarea-text-color-error-focus);
78
91
  --slds-c-textarea-color-background-focus: var(--slds-c-textarea-color-background-error-focus, var(--slds-g-color-neutral-base-100, var(--slds-g-color-neutral-base-100)));
@@ -80,6 +93,7 @@
80
93
  }
81
94
 
82
95
  /* TODO W-12674349: remove after name-value-list utils are added */
96
+
83
97
  :host([data-render-mode="shadow"]) .slds-assistive-text {
84
98
  position: absolute !important;
85
99
  margin: -1px !important;
@@ -92,4 +106,3 @@
92
106
  text-transform: none !important;
93
107
  white-space: nowrap !important;
94
108
  }
95
- }