lightning-base-components 1.21.1-alpha → 1.21.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 (598) hide show
  1. package/metadata/raptor.json +88 -1
  2. package/package.json +181 -2
  3. package/scopedImports/@salesforce-label-LightningRichTextEditor.colorPicker.js +1 -0
  4. package/src/lightning/accordion/accordion-section.slds.css +122 -0
  5. package/src/lightning/accordion/accordion.css +2 -16
  6. package/src/lightning/accordion/accordion.js +10 -7
  7. package/src/lightning/accordion/accordion.js-meta.xml +3 -0
  8. package/src/lightning/accordion/accordion.lbc.native.css +4 -0
  9. package/src/lightning/accordion/accordion.lbc.synthetic.css +13 -0
  10. package/src/lightning/accordion/accordion.slds.css +1 -656
  11. package/src/lightning/accordionSection/accordion-section.slds.css +31 -564
  12. package/src/lightning/accordionSection/accordionSection.css +2 -17
  13. package/src/lightning/accordionSection/accordionSection.js +29 -17
  14. package/src/lightning/accordionSection/accordionSection.js-meta.xml +3 -0
  15. package/src/lightning/accordionSection/accordionSection.lbc.native.css +5 -0
  16. package/src/lightning/accordionSection/accordionSection.lbc.synthetic.css +14 -0
  17. package/src/lightning/accordionSection/button.slds.css +503 -0
  18. package/src/lightning/alert/alert.css +1 -0
  19. package/src/lightning/alert/alert.js +12 -9
  20. package/src/lightning/alert/alert.js-meta.xml +3 -0
  21. package/src/lightning/alert/alert.lbc.native.css +1 -0
  22. package/src/lightning/ariaObserver/ariaObserver.js +111 -46
  23. package/src/lightning/avatar/avatar.css +1 -2
  24. package/src/lightning/avatar/avatar.html +19 -5
  25. package/src/lightning/avatar/avatar.js +18 -3
  26. package/src/lightning/avatar/avatar.js-meta.xml +3 -0
  27. package/src/lightning/avatar/avatar.lbc.native.css +2 -0
  28. package/src/lightning/avatar/avatar.slds.css +34 -205
  29. package/src/lightning/badge/__examples__/basic/basic.html +3 -1
  30. package/src/lightning/badge/badge.css +1 -0
  31. package/src/lightning/badge/badge.html +16 -14
  32. package/src/lightning/badge/badge.js +5 -2
  33. package/src/lightning/badge/badge.js-meta.xml +3 -0
  34. package/src/lightning/badge/badge.lbc.native.css +2 -0
  35. package/src/lightning/badge/badge.slds.css +76 -0
  36. package/src/lightning/baseCombobox/base-combobox.slds.css +108 -1435
  37. package/src/lightning/baseCombobox/baseCombobox.css +2 -27
  38. package/src/lightning/baseCombobox/baseCombobox.html +2 -2
  39. package/src/lightning/baseCombobox/baseCombobox.js +17 -4
  40. package/src/lightning/baseCombobox/baseCombobox.js-meta.xml +6 -0
  41. package/src/lightning/baseCombobox/baseCombobox.lbc.native.css +7 -0
  42. package/src/lightning/baseCombobox/baseCombobox.lbc.synthetic.css +25 -0
  43. package/src/lightning/baseCombobox/dropdown.slds.css +594 -0
  44. package/src/lightning/baseCombobox/input-text.slds.css +506 -0
  45. package/src/lightning/baseCombobox/keyboard.js +12 -4
  46. package/src/lightning/baseCombobox/listbox.slds.css +204 -0
  47. package/src/lightning/baseCombobox/spinner.slds.css +429 -0
  48. package/src/lightning/baseComboboxFormattedText/baseComboboxFormattedText.js +3 -2
  49. package/src/lightning/baseComboboxFormattedText/baseComboboxFormattedText.js-meta.xml +6 -0
  50. package/src/lightning/baseComboboxItem/baseComboboxItem.js +14 -8
  51. package/src/lightning/baseComboboxItem/baseComboboxItem.js-meta.xml +6 -0
  52. package/src/lightning/baseComboboxItem/card.css +1 -0
  53. package/src/lightning/baseComboboxItem/card.lbc.native.css +2 -0
  54. package/src/lightning/baseComboboxItem/inline.css +1 -2
  55. package/src/lightning/baseComboboxItem/inline.lbc.native.css +2 -0
  56. package/src/lightning/baseComboboxItem/listbox.slds.css +103 -151
  57. package/src/lightning/baseFormattedText/baseFormattedText.js +2 -2
  58. package/src/lightning/breadcrumb/breadcrumb.css +2 -6
  59. package/src/lightning/breadcrumb/breadcrumb.js +4 -2
  60. package/src/lightning/breadcrumb/breadcrumb.js-meta.xml +3 -0
  61. package/src/lightning/breadcrumb/breadcrumb.lbc.native.css +1 -0
  62. package/src/lightning/breadcrumb/breadcrumb.lbc.synthetic.css +3 -0
  63. package/src/lightning/breadcrumb/breadcrumb.slds.css +4 -6
  64. package/src/lightning/breadcrumbs/breadcrumbs.css +2 -10
  65. package/src/lightning/breadcrumbs/breadcrumbs.js +3 -2
  66. package/src/lightning/breadcrumbs/breadcrumbs.js-meta.xml +3 -0
  67. package/src/lightning/breadcrumbs/breadcrumbs.lbc.native.css +2 -0
  68. package/src/lightning/breadcrumbs/breadcrumbs.lbc.synthetic.css +7 -0
  69. package/src/lightning/breadcrumbs/breadcrumbs.slds.css +7 -5
  70. package/src/lightning/button/button.css +1 -2
  71. package/src/lightning/button/button.js +2 -1
  72. package/src/lightning/button/button.js-meta.xml +3 -0
  73. package/src/lightning/button/button.lbc.native.css +2 -0
  74. package/src/lightning/button/button.slds.css +365 -395
  75. package/src/lightning/buttonGroup/button-group.slds.css +37 -35
  76. package/src/lightning/buttonGroup/buttonGroup.css +2 -11
  77. package/src/lightning/buttonGroup/buttonGroup.js +5 -2
  78. package/src/lightning/buttonGroup/buttonGroup.js-meta.xml +3 -0
  79. package/src/lightning/buttonGroup/buttonGroup.lbc.native.css +2 -0
  80. package/src/lightning/buttonGroup/buttonGroup.lbc.synthetic.css +3 -0
  81. package/src/lightning/buttonIcon/button-icon.slds.css +575 -766
  82. package/src/lightning/buttonIcon/buttonIcon.css +2 -2
  83. package/src/lightning/buttonIcon/buttonIcon.js +8 -2
  84. package/src/lightning/buttonIcon/buttonIcon.js-meta.xml +3 -0
  85. package/src/lightning/buttonIconStateful/button-icon-stateful.slds.css +23 -976
  86. package/src/lightning/buttonIconStateful/button-icon.slds.css +724 -0
  87. package/src/lightning/buttonIconStateful/button.slds.css +503 -0
  88. package/src/lightning/buttonIconStateful/buttonIconStateful.css +2 -6
  89. package/src/lightning/buttonIconStateful/buttonIconStateful.js +54 -0
  90. package/src/lightning/buttonIconStateful/buttonIconStateful.js-meta.xml +3 -0
  91. package/src/lightning/buttonIconStateful/buttonIconStateful.lbc.native.css +4 -0
  92. package/src/lightning/buttonIconStateful/buttonIconStateful.lbc.synthetic.css +3 -0
  93. package/src/lightning/buttonMenu/button-icon.slds.css +724 -0
  94. package/src/lightning/buttonMenu/button-menu.slds.css +44 -1882
  95. package/src/lightning/buttonMenu/button.slds.css +503 -0
  96. package/src/lightning/buttonMenu/buttonMenu.css +1 -2
  97. package/src/lightning/buttonMenu/buttonMenu.js +8 -4
  98. package/src/lightning/buttonMenu/buttonMenu.js-meta.xml +3 -0
  99. package/src/lightning/buttonMenu/buttonMenu.lbc.native.css +5 -0
  100. package/src/lightning/buttonMenu/dropdown.slds.css +594 -0
  101. package/src/lightning/buttonStateful/button-stateful.slds.css +8 -747
  102. package/src/lightning/buttonStateful/button.slds.css +503 -0
  103. package/src/lightning/buttonStateful/buttonStateful.css +1 -2
  104. package/src/lightning/buttonStateful/buttonStateful.js +7 -3
  105. package/src/lightning/buttonStateful/buttonStateful.lbc.native.css +3 -0
  106. package/src/lightning/calendar/calendar.css +2 -11
  107. package/src/lightning/calendar/calendar.js +4 -2
  108. package/src/lightning/calendar/calendar.js-meta.xml +6 -0
  109. package/src/lightning/calendar/calendar.lbc.native.css +11 -0
  110. package/src/lightning/calendar/calendar.lbc.synthetic.css +8 -0
  111. package/src/lightning/calendar/calendar.slds.css +42 -1850
  112. package/src/lightning/calendar/dropdown.slds.css +594 -0
  113. package/src/lightning/card/card.css +1 -2
  114. package/src/lightning/card/card.js +3 -2
  115. package/src/lightning/card/card.lbc.native.css +2 -0
  116. package/src/lightning/card/card.slds.css +119 -176
  117. package/src/lightning/carousel/carousel.css +1 -7
  118. package/src/lightning/carousel/carousel.lbc.synthetic.css +7 -0
  119. package/src/lightning/colorPickerCustom/color-picker-custom.slds.css +56 -281
  120. package/src/lightning/colorPickerCustom/colorPickerCustom.css +1 -2
  121. package/src/lightning/colorPickerCustom/colorPickerCustom.js +3 -2
  122. package/src/lightning/colorPickerCustom/colorPickerCustom.lbc.native.css +3 -0
  123. package/src/lightning/colorPickerCustom/input-text.slds.css +506 -0
  124. package/src/lightning/colorPickerPanel/color-picker-panel.slds.css +11 -783
  125. package/src/lightning/colorPickerPanel/colorPickerPanel.css +2 -12
  126. package/src/lightning/colorPickerPanel/colorPickerPanel.js +4 -2
  127. package/src/lightning/colorPickerPanel/colorPickerPanel.lbc.native.css +3 -0
  128. package/src/lightning/colorPickerPanel/colorPickerPanel.lbc.synthetic.css +8 -0
  129. package/src/lightning/colorPickerPanel/popover.slds.css +29 -32
  130. package/src/lightning/combobox/combobox.css +2 -19
  131. package/src/lightning/combobox/combobox.html +4 -1
  132. package/src/lightning/combobox/combobox.js +20 -3
  133. package/src/lightning/combobox/combobox.js-meta.xml +3 -0
  134. package/src/lightning/combobox/combobox.lbc.native.css +3 -0
  135. package/src/lightning/combobox/combobox.lbc.synthetic.css +28 -0
  136. package/src/lightning/combobox/combobox.slds.css +3 -4
  137. package/src/lightning/combobox/form-element.slds.css +122 -95
  138. package/src/lightning/configProvider/defaultDurationConfig.js +1 -1
  139. package/src/lightning/confirm/confirm.css +1 -0
  140. package/src/lightning/confirm/confirm.js +12 -9
  141. package/src/lightning/confirm/confirm.js-meta.xml +3 -0
  142. package/src/lightning/confirm/confirm.lbc.native.css +1 -0
  143. package/src/lightning/datatable/__examples__/customDatatableWrapper/customDatatableWrapper.js +0 -69
  144. package/src/lightning/datatable/__examples__/customDatatypeDeleteRowBtn/customDatatypeDeleteRowBtn.html +1 -1
  145. package/src/lightning/datatable/__examples__/customDatatypeDeleteRowBtn/customDatatypeDeleteRowBtn.js +1 -16
  146. package/src/lightning/datatable/__examples__/customDatatypeLink/customDatatypeLink.html +3 -3
  147. package/src/lightning/datatable/__examples__/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.html +1 -8
  148. package/src/lightning/datatable/__examples__/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.js +2 -39
  149. package/src/lightning/datatable/__examples__/customDatatypeTable/customLink.html +5 -7
  150. package/src/lightning/datatable/__examples__/customDatatypeTable/customNumber.html +1 -1
  151. package/src/lightning/datatable/__examples__/customDatatypeTable/customNumberEdit.html +2 -0
  152. package/src/lightning/datatable/__examples__/customDatatypeTable/deleteRow.html +3 -2
  153. package/src/lightning/datatable/__examples__/customDatatypeTable/iconPill.html +1 -1
  154. package/src/lightning/datatable/__examples__/customNestedComponent/customNestedComponent.html +10 -0
  155. package/src/lightning/datatable/__examples__/customNestedComponent/customNestedComponent.js +12 -0
  156. package/src/lightning/datatable/autoWidthStrategy.js +147 -191
  157. package/src/lightning/datatable/columnResizer.js +35 -35
  158. package/src/lightning/datatable/columnWidthManager.js +118 -177
  159. package/src/lightning/datatable/columns.js +90 -59
  160. package/src/lightning/datatable/datagrid.slds.css +187 -0
  161. package/src/lightning/datatable/datatable.js +248 -229
  162. package/src/lightning/datatable/errors.js +3 -0
  163. package/src/lightning/datatable/fixedWidthStrategy.js +22 -29
  164. package/src/lightning/datatable/headerActions.js +7 -9
  165. package/src/lightning/datatable/infiniteLoading.js +15 -15
  166. package/src/lightning/datatable/inlineEdit.js +255 -235
  167. package/src/lightning/datatable/keyboard.js +318 -282
  168. package/src/lightning/datatable/renderManager.js +10 -7
  169. package/src/lightning/datatable/resizeObserver.js +11 -59
  170. package/src/lightning/datatable/rowLevelActions.js +6 -5
  171. package/src/lightning/datatable/rowNumber.js +23 -23
  172. package/src/lightning/datatable/rowSelection.js +173 -145
  173. package/src/lightning/datatable/rowSelectionShared.js +13 -6
  174. package/src/lightning/datatable/rows.js +231 -196
  175. package/src/lightning/datatable/sort.js +26 -22
  176. package/src/lightning/datatable/templates/div/div.css +2 -57
  177. package/src/lightning/datatable/templates/div/div.html +13 -6
  178. package/src/lightning/datatable/templates/div/div.lbc.native.css +3 -0
  179. package/src/lightning/datatable/templates/div/div.lbc.synthetic.css +86 -0
  180. package/src/lightning/datatable/templates/table/table.html +1 -0
  181. package/src/lightning/datatable/utils.js +5 -5
  182. package/src/lightning/datatable/widthManagerShared.js +24 -21
  183. package/src/lightning/datatable/wrapText.js +25 -26
  184. package/src/lightning/datepicker/datepicker.css +1 -3
  185. package/src/lightning/datepicker/datepicker.js +47 -17
  186. package/src/lightning/datepicker/datepicker.js-meta.xml +6 -0
  187. package/src/lightning/datepicker/datepicker.lbc.native.css +3 -0
  188. package/src/lightning/datepicker/form-element.slds.css +122 -95
  189. package/src/lightning/datepicker/input-text.slds.css +289 -181
  190. package/src/lightning/datetimepicker/datetimepicker.css +1 -3
  191. package/src/lightning/datetimepicker/datetimepicker.html +0 -2
  192. package/src/lightning/datetimepicker/datetimepicker.js +35 -10
  193. package/src/lightning/datetimepicker/datetimepicker.js-meta.xml +6 -0
  194. package/src/lightning/datetimepicker/datetimepicker.lbc.native.css +3 -0
  195. package/src/lightning/datetimepicker/form-element.slds.css +122 -95
  196. package/src/lightning/datetimepicker/input-text.slds.css +289 -181
  197. package/src/lightning/dualListbox/dual-listbox.slds.css +34 -29
  198. package/src/lightning/dualListbox/dualListbox.css +2 -8
  199. package/src/lightning/dualListbox/dualListbox.js +55 -36
  200. package/src/lightning/dualListbox/dualListbox.js-meta.xml +3 -0
  201. package/src/lightning/dualListbox/dualListbox.lbc.native.css +4 -0
  202. package/src/lightning/dualListbox/dualListbox.lbc.synthetic.css +3 -0
  203. package/src/lightning/dualListbox/form-element.slds.css +122 -95
  204. package/src/lightning/dualListbox/listbox.slds.css +103 -151
  205. package/src/lightning/dynamicIcon/dynamic-icon-strength.slds.css +1 -2
  206. package/src/lightning/dynamicIcon/dynamic-icon-trend.slds.css +1 -2
  207. package/src/lightning/dynamicIcon/dynamicIcon.js +3 -2
  208. package/src/lightning/dynamicIcon/dynamicIcon.js-meta.xml +3 -0
  209. package/src/lightning/dynamicIcon/ellie.css +1 -1
  210. package/src/lightning/dynamicIcon/ellie.lbc.native.css +1 -0
  211. package/src/lightning/dynamicIcon/eq.css +1 -1
  212. package/src/lightning/dynamicIcon/eq.lbc.native.css +1 -0
  213. package/src/lightning/dynamicIcon/score.css +1 -1
  214. package/src/lightning/dynamicIcon/score.lbc.native.css +1 -0
  215. package/src/lightning/dynamicIcon/strength.css +1 -1
  216. package/src/lightning/dynamicIcon/strength.lbc.native.css +1 -0
  217. package/src/lightning/dynamicIcon/trend.css +1 -1
  218. package/src/lightning/dynamicIcon/trend.lbc.native.css +1 -0
  219. package/src/lightning/dynamicIcon/waffle.css +1 -1
  220. package/src/lightning/dynamicIcon/waffle.lbc.native.css +1 -0
  221. package/src/lightning/focusTrap/focusTrap.js +3 -2
  222. package/src/lightning/focusTrap/focusTrap.js-meta.xml +3 -0
  223. package/src/lightning/formattedAddress/formattedAddress.js-meta.xml +3 -0
  224. package/src/lightning/formattedDateTime/formattedDateTime.js +7 -62
  225. package/src/lightning/formattedDateTime/formattedDateTime.js-meta.xml +3 -0
  226. package/src/lightning/formattedEmail/formattedEmail.css +1 -0
  227. package/src/lightning/formattedEmail/formattedEmail.js +4 -2
  228. package/src/lightning/formattedEmail/formattedEmail.js-meta.xml +3 -0
  229. package/src/lightning/formattedEmail/formattedEmail.lbc.native.css +7 -0
  230. package/src/lightning/formattedLocation/formattedLocation.html +1 -3
  231. package/src/lightning/formattedLocation/formattedLocation.js +3 -25
  232. package/src/lightning/formattedLocation/formattedLocation.js-meta.xml +3 -0
  233. package/src/lightning/formattedLookup/events.js +2 -4
  234. package/src/lightning/formattedNumber/formattedNumber.css +1 -4
  235. package/src/lightning/formattedNumber/formattedNumber.js +2 -49
  236. package/src/lightning/formattedNumber/formattedNumber.lbc.synthetic.css +4 -0
  237. package/src/lightning/formattedPhone/formattedPhone.css +1 -4
  238. package/src/lightning/formattedPhone/formattedPhone.js-meta.xml +3 -0
  239. package/src/lightning/formattedPhone/formattedPhone.lbc.synthetic.css +4 -0
  240. package/src/lightning/formattedRichText/formatted-rich-text.slds.css +39 -39
  241. package/src/lightning/formattedRichText/formattedRichText.css +1 -3
  242. package/src/lightning/formattedRichText/formattedRichText.js +9 -7
  243. package/src/lightning/formattedRichText/formattedRichText.js-meta.xml +3 -0
  244. package/src/lightning/formattedRichText/formattedRichText.lbc.native.css +3 -0
  245. package/src/lightning/formattedRichText/linkTextNodes.js +58 -0
  246. package/src/lightning/formattedText/formattedText.css +1 -1
  247. package/src/lightning/formattedText/formattedText.js +3 -2
  248. package/src/lightning/formattedText/formattedText.js-meta.xml +3 -0
  249. package/src/lightning/formattedText/formattedText.lbc.native.css +1 -0
  250. package/src/lightning/formattedTime/formattedTime.js-meta.xml +3 -0
  251. package/src/lightning/formattedUrl/formattedUrl.js-meta.xml +3 -0
  252. package/src/lightning/groupedCombobox/__mockData__/exampleGroupedComboboxData.js +17 -0
  253. package/src/lightning/groupedCombobox/form-element.slds.css +315 -0
  254. package/src/lightning/groupedCombobox/grouped-combobox.slds.css +13 -0
  255. package/src/lightning/groupedCombobox/groupedCombobox.css +2 -3
  256. package/src/lightning/groupedCombobox/groupedCombobox.js +25 -3
  257. package/src/lightning/groupedCombobox/groupedCombobox.js-meta.xml +4 -1
  258. package/src/lightning/groupedCombobox/groupedCombobox.lbc.native.css +5 -0
  259. package/src/lightning/groupedCombobox/groupedCombobox.lbc.syhtnetic.css +3 -0
  260. package/src/lightning/groupedCombobox/input-text.slds.css +506 -0
  261. package/src/lightning/helptext/button-icon.slds.css +724 -0
  262. package/src/lightning/helptext/form-element.slds.css +122 -95
  263. package/src/lightning/helptext/help-text.slds.css +6 -938
  264. package/src/lightning/helptext/helptext.css +1 -3
  265. package/src/lightning/helptext/helptext.js +3 -2
  266. package/src/lightning/helptext/helptext.lbc.native.css +4 -0
  267. package/src/lightning/icon/icon.css +1 -2
  268. package/src/lightning/icon/icon.js +20 -2
  269. package/src/lightning/icon/icon.js-meta.xml +3 -0
  270. package/src/lightning/icon/icon.lbc.native.css +2 -0
  271. package/src/lightning/icon/icon.slds.css +76 -78
  272. package/src/lightning/input/form-element.slds.css +122 -95
  273. package/src/lightning/input/input.css +2 -13
  274. package/src/lightning/input/input.html +1 -0
  275. package/src/lightning/input/input.js +55 -9
  276. package/src/lightning/input/input.lbc.native.css +2 -0
  277. package/src/lightning/input/input.lbc.synthetic.css +9 -0
  278. package/src/lightning/inputAddress/form-element.slds.css +315 -0
  279. package/src/lightning/inputAddress/input-address.slds.css +14 -0
  280. package/src/lightning/inputAddress/input-text.slds.css +506 -0
  281. package/src/lightning/inputAddress/inputAddress.css +2 -3
  282. package/src/lightning/inputAddress/inputAddress.html +21 -12
  283. package/src/lightning/inputAddress/inputAddress.js +34 -14
  284. package/src/lightning/inputAddress/inputAddress.js-meta.xml +3 -0
  285. package/src/lightning/inputAddress/inputAddress.lbc.native.css +5 -0
  286. package/src/lightning/inputAddress/inputAddress.lbc.synthetic.css +4 -0
  287. package/src/lightning/inputLocation/form-element.slds.css +315 -0
  288. package/src/lightning/inputLocation/input-location.slds.css +14 -0
  289. package/src/lightning/inputLocation/input-text.slds.css +506 -0
  290. package/src/lightning/inputLocation/inputLocation.css +2 -3
  291. package/src/lightning/inputLocation/inputLocation.html +1 -1
  292. package/src/lightning/inputLocation/inputLocation.js +27 -6
  293. package/src/lightning/inputLocation/inputLocation.js-meta.xml +3 -0
  294. package/src/lightning/inputLocation/inputLocation.lbc.native.css +5 -0
  295. package/src/lightning/inputLocation/inputLocation.lbc.synthetic.css +3 -0
  296. package/src/lightning/inputName/form-element.slds.css +315 -0
  297. package/src/lightning/inputName/input-text.slds.css +506 -0
  298. package/src/lightning/inputName/inputName.css +2 -3
  299. package/src/lightning/inputName/inputName.js +22 -15
  300. package/src/lightning/inputName/inputName.lbc.native.css +4 -0
  301. package/src/lightning/inputName/inputName.lbc.synthetic.css +3 -0
  302. package/src/lightning/interactiveDialogBase/interactive-dialog-base.slds.css +21 -0
  303. package/src/lightning/interactiveDialogBase/interactiveDialogBase.css +2 -520
  304. package/src/lightning/interactiveDialogBase/interactiveDialogBase.html +8 -3
  305. package/src/lightning/interactiveDialogBase/interactiveDialogBase.js +6 -0
  306. package/src/lightning/interactiveDialogBase/interactiveDialogBase.js-meta.xml +6 -0
  307. package/src/lightning/interactiveDialogBase/interactiveDialogBase.lbc.native.css +3 -0
  308. package/src/lightning/interactiveDialogBase/interactiveDialogBase.lbc.synthetic.css +20 -0
  309. package/src/lightning/internationalizationLibrary/datetime/dateTimeUtils.js +33 -10
  310. package/src/lightning/layout/layout.css +2 -9
  311. package/src/lightning/layout/layout.js +5 -2
  312. package/src/lightning/layout/layout.js-meta.xml +3 -0
  313. package/src/lightning/layout/layout.lbc.native.css +2 -0
  314. package/src/lightning/layout/layout.lbc.synthetic.css +6 -0
  315. package/src/lightning/layoutItem/layoutItem.css +1 -5
  316. package/src/lightning/layoutItem/layoutItem.js +5 -2
  317. package/src/lightning/layoutItem/layoutItem.js-meta.xml +3 -0
  318. package/src/lightning/layoutItem/layoutItem.lbc.native.css +5 -0
  319. package/src/lightning/lookupAddress/form-element.slds.css +315 -0
  320. package/src/lightning/lookupAddress/listbox.slds.css +204 -0
  321. package/src/lightning/lookupAddress/location.js +2 -0
  322. package/src/lightning/lookupAddress/lookup-address.slds.css +8 -0
  323. package/src/lightning/lookupAddress/lookupAddress.css +2 -0
  324. package/src/lightning/lookupAddress/lookupAddress.html +12 -9
  325. package/src/lightning/lookupAddress/lookupAddress.js +19 -12
  326. package/src/lightning/lookupAddress/lookupAddress.lbc.native.css +4 -0
  327. package/src/lightning/menuDivider/menu-divider.slds.css +4 -6
  328. package/src/lightning/menuDivider/menuDivider.css +2 -6
  329. package/src/lightning/menuDivider/menuDivider.js +4 -3
  330. package/src/lightning/menuDivider/menuDivider.lbc.native.css +2 -0
  331. package/src/lightning/menuDivider/menuDivider.lbc.synthetic.css +3 -0
  332. package/src/lightning/menuItem/menu-item.slds.css +24 -18
  333. package/src/lightning/menuItem/menuItem.css +2 -6
  334. package/src/lightning/menuItem/menuItem.js +13 -3
  335. package/src/lightning/menuItem/menuItem.js-meta.xml +3 -0
  336. package/src/lightning/menuItem/menuItem.lbc.native.css +2 -0
  337. package/src/lightning/menuItem/menuItem.lbc.synthetic.css +3 -0
  338. package/src/lightning/menuSubheader/menu-subheader.slds.css +5 -6
  339. package/src/lightning/menuSubheader/menuSubheader.css +2 -6
  340. package/src/lightning/menuSubheader/menuSubheader.js +4 -2
  341. package/src/lightning/menuSubheader/menuSubheader.lbc.native.css +2 -0
  342. package/src/lightning/menuSubheader/menuSubheader.lbc.synthetic.css +3 -0
  343. package/src/lightning/modal/__docs__/modal.md +30 -0
  344. package/src/lightning/modal/__examples__disabled/allformfullcompound/allformfullcompound.css +7 -0
  345. package/src/lightning/modal/__examples__disabled/allformfullcompound/allformfullcompound.html +9 -0
  346. package/src/lightning/modal/__examples__disabled/allformfullcompound/allformfullcompound.js +54 -0
  347. package/src/lightning/modal/__examples__disabled/allformhoriz/allformhoriz.css +7 -0
  348. package/src/lightning/modal/__examples__disabled/allformhoriz/allformhoriz.html +9 -0
  349. package/src/lightning/modal/__examples__disabled/allformhoriz/allformhoriz.js +53 -0
  350. package/src/lightning/modal/__examples__disabled/allmulti/allmulti.html +1 -0
  351. package/src/lightning/modal/__examples__disabled/allmulti/allmulti.js +43 -1
  352. package/src/lightning/modal/__examples__disabled/basic/basic.css +1 -1
  353. package/src/lightning/modal/__examples__disabled/demo/demo.css +1 -0
  354. package/src/lightning/modal/__examples__disabled/demoall/demoall.css +5 -0
  355. package/src/lightning/modal/__examples__disabled/demoallform/demoallform.css +2 -3
  356. package/src/lightning/modal/__examples__disabled/demoallform/demoallform.html +181 -107
  357. package/src/lightning/modal/__examples__disabled/demoallform/demoallform.js +7 -1
  358. package/src/lightning/modal/__examples__disabled/demoallformfull/demoallformfull.css +2 -3
  359. package/src/lightning/modal/__examples__disabled/demoallformfull/demoallformfull.html +181 -107
  360. package/src/lightning/modal/__examples__disabled/demoallformfullcompound/demoallformfullcompound.css +7 -0
  361. package/src/lightning/modal/__examples__disabled/demoallformfullcompound/demoallformfullcompound.html +109 -0
  362. package/src/lightning/modal/__examples__disabled/demoallformfullcompound/demoallformfullcompound.js +241 -0
  363. package/src/lightning/modal/__examples__disabled/demoallformhoriz/demoallformhoriz.css +5 -0
  364. package/src/lightning/modal/__examples__disabled/demoallformhoriz/demoallformhoriz.html +165 -0
  365. package/src/lightning/modal/__examples__disabled/demoallformhoriz/demoallformhoriz.js +241 -0
  366. package/src/lightning/modal/__examples__disabled/demofootless/demofootless.css +1 -0
  367. package/src/lightning/modal/__examples__disabled/demoheadless/demoheadless.css +5 -0
  368. package/src/lightning/modal/__modalUtils__/modalContainerTestConstants.js +8 -0
  369. package/src/lightning/modal/__modalUtils__/modalContainerTestMethods.js +108 -3
  370. package/src/lightning/modalBase/modal-base.slds.css +242 -0
  371. package/src/lightning/modalBase/modalBase.css +2 -16
  372. package/src/lightning/modalBase/modalBase.html +2 -0
  373. package/src/lightning/modalBase/modalBase.js +158 -18
  374. package/src/lightning/modalBase/modalBase.js-meta.xml +6 -0
  375. package/src/lightning/modalBase/modalBase.lbc.native.css +2 -0
  376. package/src/lightning/modalBase/modalBase.lbc.synthetic.css +18 -0
  377. package/src/lightning/modalBody/modal-body.slds.css +60 -0
  378. package/src/lightning/modalBody/modalBody.css +1 -0
  379. package/src/lightning/modalBody/modalBody.html +1 -0
  380. package/src/lightning/modalBody/modalBody.js +15 -2
  381. package/src/lightning/modalBody/modalBody.lbc.native.css +3 -0
  382. package/src/lightning/modalFooter/modal-footer.slds.css +79 -0
  383. package/src/lightning/modalFooter/modalFooter.css +1 -0
  384. package/src/lightning/modalFooter/modalFooter.html +1 -1
  385. package/src/lightning/modalFooter/modalFooter.js +3 -23
  386. package/src/lightning/modalFooter/modalFooter.lbc.native.css +2 -0
  387. package/src/lightning/modalHeader/modal-header.slds.css +76 -0
  388. package/src/lightning/modalHeader/modalHeader.css +3 -0
  389. package/src/lightning/modalHeader/modalHeader.html +1 -1
  390. package/src/lightning/modalHeader/modalHeader.js +4 -24
  391. package/src/lightning/modalHeader/modalHeader.lbc.native.css +3 -0
  392. package/src/lightning/overlay/overlay.js +11 -4
  393. package/src/lightning/overlay/overlay.js-meta.xml +6 -0
  394. package/src/lightning/overlayContainer/overlayContainer.js +3 -2
  395. package/src/lightning/picklist/picklist.js +24 -19
  396. package/src/lightning/picklist/picklist.js-meta.xml +3 -0
  397. package/src/lightning/pill/avatar.slds.css +34 -205
  398. package/src/lightning/pill/link.css +1 -3
  399. package/src/lightning/pill/link.lbc.native.css +3 -0
  400. package/src/lightning/pill/pill.js +4 -2
  401. package/src/lightning/pill/pill.js-meta.xml +3 -0
  402. package/src/lightning/pill/pill.slds.css +82 -103
  403. package/src/lightning/pill/plain.css +1 -3
  404. package/src/lightning/pill/plain.lbc.native.css +3 -0
  405. package/src/lightning/pill/plainLink.css +1 -3
  406. package/src/lightning/pill/plainLink.lbc.native.css +3 -0
  407. package/src/lightning/pillContainer/barePillContainer.css +1 -3
  408. package/src/lightning/pillContainer/barePillContainer.html +1 -1
  409. package/src/lightning/pillContainer/barePillContainer.lbc.native.css +4 -0
  410. package/src/lightning/pillContainer/button.slds.css +503 -0
  411. package/src/lightning/pillContainer/listbox.slds.css +103 -151
  412. package/src/lightning/pillContainer/pill-container.slds.css +19 -17
  413. package/src/lightning/pillContainer/pill.slds.css +82 -103
  414. package/src/lightning/pillContainer/pillContainer.js +15 -12
  415. package/src/lightning/pillContainer/pillContainer.js-meta.xml +3 -0
  416. package/src/lightning/pillContainer/standardPillContainer.css +3 -2
  417. package/src/lightning/pillContainer/standardPillContainer.html +1 -1
  418. package/src/lightning/popup/popover.slds.css +29 -32
  419. package/src/lightning/popup/popup.css +1 -2
  420. package/src/lightning/popup/popup.js +3 -2
  421. package/src/lightning/popup/popup.js-meta.xml +3 -0
  422. package/src/lightning/popup/popup.lbc.native.css +2 -0
  423. package/src/lightning/primitiveBubble/primitiveBubble.css +2 -11
  424. package/src/lightning/primitiveBubble/primitiveBubble.js +4 -2
  425. package/src/lightning/primitiveBubble/primitiveBubble.js-meta.xml +6 -0
  426. package/src/lightning/primitiveBubble/primitiveBubble.lbc.native.css +2 -0
  427. package/src/lightning/primitiveBubble/primitiveBubble.lbc.synthetic.css +8 -0
  428. package/src/lightning/primitiveBubble/tooltip.slds.css +89 -142
  429. package/src/lightning/primitiveButton/primitiveButoon.js-meta.xml +6 -0
  430. package/src/lightning/primitiveButton/primitiveButton.js +4 -2
  431. package/src/lightning/primitiveCellCheckbox/checkbox.css +2 -0
  432. package/src/lightning/primitiveColorpickerButton/color-picker-button.slds.css +18 -249
  433. package/src/lightning/primitiveColorpickerButton/primitiveColorpickerButton.css +1 -2
  434. package/src/lightning/primitiveColorpickerButton/primitiveColorpickerButton.js +3 -2
  435. package/src/lightning/primitiveColorpickerButton/primitiveColorpickerButton.lbc.native.css +2 -0
  436. package/src/lightning/primitiveCustomCell/primitiveCustomCell.js +26 -2
  437. package/src/lightning/primitiveDatatableCell/primitiveDatatableCell.js +1 -3
  438. package/src/lightning/primitiveFileDroppableZone/primitiveFileDroppableZone.js +17 -7
  439. package/src/lightning/primitiveHeaderFactory/nonsortableHeader.css +1 -0
  440. package/src/lightning/primitiveHeaderFactory/selectableHeader.css +2 -0
  441. package/src/lightning/primitiveIcon/icon.slds.css +76 -78
  442. package/src/lightning/primitiveIcon/primitiveIcon.css +2 -11
  443. package/src/lightning/primitiveIcon/primitiveIcon.js +7 -9
  444. package/src/lightning/primitiveIcon/primitiveIcon.js-meta.xml +6 -0
  445. package/src/lightning/primitiveIcon/primitiveIcon.lbc.native.css +2 -0
  446. package/src/lightning/primitiveIcon/primitiveIcon.lbc.synthetic.css +9 -0
  447. package/src/lightning/primitiveIframe/primitiveIframe.html +9 -8
  448. package/src/lightning/primitiveIframe/primitiveIframe.js +7 -3
  449. package/src/lightning/primitiveInputCheckbox/form-element.slds.css +122 -95
  450. package/src/lightning/primitiveInputCheckbox/input-checkbox.slds.css +223 -237
  451. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.css +1 -3
  452. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js +14 -3
  453. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js-meta.xml +6 -0
  454. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.lbc.native.css +3 -0
  455. package/src/lightning/primitiveInputCheckboxButton/form-element.slds.css +122 -95
  456. package/src/lightning/primitiveInputCheckboxButton/input-checkbox-button.slds.css +36 -34
  457. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.css +2 -6
  458. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js +5 -2
  459. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js-meta.xml +6 -0
  460. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.lbc.native.css +2 -0
  461. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.lbc.synthetic.css +2 -0
  462. package/src/lightning/primitiveInputColor/form-element.slds.css +122 -95
  463. package/src/lightning/primitiveInputColor/input-color.slds.css +5 -10
  464. package/src/lightning/primitiveInputColor/input-text.slds.css +289 -181
  465. package/src/lightning/primitiveInputColor/primitiveInputColor.css +1 -4
  466. package/src/lightning/primitiveInputColor/primitiveInputColor.js +5 -2
  467. package/src/lightning/primitiveInputColor/primitiveInputColor.js-meta.xml +6 -0
  468. package/src/lightning/primitiveInputColor/primitiveInputColor.lbc.native.css +4 -0
  469. package/src/lightning/primitiveInputFile/button.slds.css +365 -395
  470. package/src/lightning/primitiveInputFile/form-element.slds.css +122 -95
  471. package/src/lightning/primitiveInputFile/input-file.slds.css +13 -16
  472. package/src/lightning/primitiveInputFile/primitiveInputFile.css +1 -5
  473. package/src/lightning/primitiveInputFile/primitiveInputFile.js +13 -9
  474. package/src/lightning/primitiveInputFile/primitiveInputFile.js-meta.xml +6 -0
  475. package/src/lightning/primitiveInputFile/primitiveInputFile.lbc.native.css +4 -0
  476. package/src/lightning/primitiveInputRadio/primitiveInputRadio.js +4 -2
  477. package/src/lightning/primitiveInputSimple/form-element.slds.css +122 -95
  478. package/src/lightning/primitiveInputSimple/input-text.slds.css +289 -181
  479. package/src/lightning/primitiveInputSimple/primitiveInputSimple.css +2 -9
  480. package/src/lightning/primitiveInputSimple/primitiveInputSimple.js +4 -2
  481. package/src/lightning/primitiveInputSimple/primitiveInputSimple.js-meta.xml +6 -0
  482. package/src/lightning/primitiveInputSimple/primitiveInputSimple.lbc.native.css +3 -0
  483. package/src/lightning/primitiveInputSimple/primitiveInputSimple.lbc.synthetic.css +5 -0
  484. package/src/lightning/primitiveInputToggle/form-element.slds.css +122 -95
  485. package/src/lightning/primitiveInputToggle/input-toggle.slds.css +78 -55
  486. package/src/lightning/primitiveInputToggle/primitiveInputToggle.css +1 -3
  487. package/src/lightning/primitiveInputToggle/primitiveInputToggle.js +14 -3
  488. package/src/lightning/primitiveInputToggle/primitiveInputToggle.js-meta.xml +6 -0
  489. package/src/lightning/primitiveInputToggle/primitiveInputToggle.lbc.native.css +3 -0
  490. package/src/lightning/progressBar/progress-bar.slds.css +64 -0
  491. package/src/lightning/progressBar/progressBar.css +1 -0
  492. package/src/lightning/progressBar/progressBar.html +1 -0
  493. package/src/lightning/progressBar/progressBar.js +3 -2
  494. package/src/lightning/progressBar/progressBar.lbc.native.css +2 -0
  495. package/src/lightning/progressIndicator/progressIndicator.css +1 -3
  496. package/src/lightning/progressIndicator/progressIndicator.lbc.synthetic.css +3 -0
  497. package/src/lightning/progressRing/progress-ring.slds.css +113 -0
  498. package/src/lightning/progressRing/progressRing.css +1 -0
  499. package/src/lightning/progressRing/progressRing.html +1 -1
  500. package/src/lightning/progressRing/progressRing.js +3 -2
  501. package/src/lightning/progressRing/progressRing.lbc.native.css +2 -0
  502. package/src/lightning/progressStep/progressStep.js +1 -14
  503. package/src/lightning/prompt/prompt.css +1 -85
  504. package/src/lightning/prompt/prompt.html +15 -5
  505. package/src/lightning/prompt/prompt.js +12 -9
  506. package/src/lightning/prompt/prompt.js-meta.xml +3 -0
  507. package/src/lightning/prompt/prompt.lbc.native.css +2 -0
  508. package/src/lightning/prompt/prompt.slds.css +10 -0
  509. package/src/lightning/radioGroup/form-element.slds.css +315 -0
  510. package/src/lightning/radioGroup/input-radio-group.slds.css +124 -571
  511. package/src/lightning/radioGroup/radioGroup.css +2 -7
  512. package/src/lightning/radioGroup/radioGroup.html +1 -2
  513. package/src/lightning/radioGroup/radioGroup.js +5 -2
  514. package/src/lightning/radioGroup/radioGroup.lbc.native.css +3 -0
  515. package/src/lightning/radioGroup/radioGroup.lbc.synthetic.css +3 -0
  516. package/src/lightning/routingService/routingService.js +31 -5
  517. package/src/lightning/select/form-element.slds.css +122 -95
  518. package/src/lightning/select/select.css +1 -3
  519. package/src/lightning/select/select.js +4 -2
  520. package/src/lightning/select/select.js-meta.xml +3 -0
  521. package/src/lightning/select/select.lbc.native.css +3 -0
  522. package/src/lightning/select/select.slds.css +26 -343
  523. package/src/lightning/sldsUtilsThemes/sldsUtilsThemes.css +27 -11
  524. package/src/lightning/sldsUtilsVisibility/sldsUtilsVisibility.css +24 -0
  525. package/src/lightning/sldsUtilsVisibility/sldsUtilsVisibility.js-meta.xml +4 -0
  526. package/src/lightning/spinner/spinner.css +1 -2
  527. package/src/lightning/spinner/spinner.js +6 -4
  528. package/src/lightning/spinner/spinner.js-meta.xml +3 -0
  529. package/src/lightning/spinner/spinner.lbc.native.css +2 -0
  530. package/src/lightning/spinner/spinner.slds.css +66 -72
  531. package/src/lightning/staticMap/staticMap.html +12 -10
  532. package/src/lightning/staticMap/staticMap.js +16 -4
  533. package/src/lightning/tab/tab.css +1 -2
  534. package/src/lightning/tab/tab.js +4 -2
  535. package/src/lightning/tab/tab.lbc.native.css +2 -0
  536. package/src/lightning/tab/tab.slds.css +23 -16
  537. package/src/lightning/tabBar/tab-bar.slds.css +75 -65
  538. package/src/lightning/tabBar/tabBar.css +1 -2
  539. package/src/lightning/tabBar/tabBar.js +19 -2
  540. package/src/lightning/tabBar/tabBar.lbc.native.css +2 -0
  541. package/src/lightning/tabset/__docs__/tabset.md +24 -1
  542. package/src/lightning/tabset/tabset.css +1 -10
  543. package/src/lightning/tabset/tabset.html +19 -7
  544. package/src/lightning/tabset/tabset.js +212 -61
  545. package/src/lightning/tabset/tabset.lbc.native.css +3 -0
  546. package/src/lightning/tabset/tabset.slds.css +13 -0
  547. package/src/lightning/textarea/form-element.slds.css +315 -0
  548. package/src/lightning/textarea/textarea.css +2 -5
  549. package/src/lightning/textarea/textarea.html +21 -5
  550. package/src/lightning/textarea/textarea.js +171 -128
  551. package/src/lightning/textarea/textarea.lbc.native.css +3 -0
  552. package/src/lightning/textarea/textarea.lbc.synthetic.css +5 -0
  553. package/src/lightning/textarea/textarea.slds.css +108 -0
  554. package/src/lightning/tile/standardTile.css +1 -3
  555. package/src/lightning/tile/standardTile.lbc.synthetic.css +3 -0
  556. package/src/lightning/timepicker/form-element.slds.css +122 -95
  557. package/src/lightning/timepicker/timepicker.css +1 -3
  558. package/src/lightning/timepicker/timepicker.html +1 -1
  559. package/src/lightning/timepicker/timepicker.js +21 -5
  560. package/src/lightning/timepicker/timepicker.js-meta.xml +6 -0
  561. package/src/lightning/timepicker/timepicker.lbc.native.css +3 -0
  562. package/src/lightning/timepicker/timepicker.slds.css +2 -2
  563. package/src/lightning/toast/__docs__/toast.md +20 -22
  564. package/src/lightning/toast/button-icon.slds.css +575 -766
  565. package/src/lightning/toast/formatted-rich-text.slds.css +39 -39
  566. package/src/lightning/toast/icon.slds.css +76 -78
  567. package/src/lightning/toast/toast.css +2 -68
  568. package/src/lightning/toast/toast.js +19 -14
  569. package/src/lightning/toast/toast.lbc.native.css +9 -0
  570. package/src/lightning/toast/toast.lbc.synthetic.css +58 -0
  571. package/src/lightning/toast/toast.slds.css +26 -38
  572. package/src/lightning/toastContainer/toast.slds.css +26 -38
  573. package/src/lightning/toastContainer/toastContainer.css +2 -43
  574. package/src/lightning/toastContainer/toastContainer.js +25 -17
  575. package/src/lightning/toastContainer/toastContainer.lbc.native.css +4 -0
  576. package/src/lightning/toastContainer/toastContainer.lbc.synthetic.css +38 -0
  577. package/src/lightning/tooltipLibrary/tooltipLibrary.js +12 -9
  578. package/src/lightning/tree/tree.js +2 -0
  579. package/src/lightning/utils/classSet.js +9 -3
  580. package/src/lightning/utilsPrivate/animation.js +10 -8
  581. package/src/lightning/utilsPrivate/aria.js +1 -1
  582. package/src/lightning/utilsPrivate/formatUtils.js +158 -0
  583. package/src/lightning/utilsPrivate/textUtils.js +16 -0
  584. package/src/lightning/utilsPrivate/utilsPrivate.js +76 -19
  585. package/src/lightning/utilsPrivate/validationUtils.js +59 -0
  586. package/src/lightning/verticalNavigation/verticalNavigation.css +1 -3
  587. package/src/lightning/verticalNavigation/verticalNavigation.js +3 -2
  588. package/src/lightning/verticalNavigation/verticalNavigation.lbc.native.css +2 -0
  589. package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.css +1 -3
  590. package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.lbc.synthetic.css +3 -0
  591. package/src/lightning/verticalNavigationSection/vertical-navigation-section.slds.css +8 -10
  592. package/src/lightning/verticalNavigationSection/verticalNavigationSection.css +2 -7
  593. package/src/lightning/verticalNavigationSection/verticalNavigationSection.js +3 -2
  594. package/src/lightning/verticalNavigationSection/verticalNavigationSection.lbc.native.css +2 -0
  595. package/src/lightning/verticalNavigationSection/verticalNavigationSection.lbc.synthetic.css +3 -0
  596. package/src/lightning/datatable/resizeSensor.js +0 -244
  597. package/src/lightning/formattedRichText/linkify.js +0 -43
  598. package/src/lightning/utilsPrivate/smartSetAttribute.js +0 -19
@@ -1,7 +1,7 @@
1
- import { api, LightningElement } from 'lwc';
1
+ import { api } from 'lwc';
2
+ import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
2
3
  import { classSet } from 'lightning/utils';
3
4
  import {
4
- isCSR,
5
5
  makeEverythingExceptElementInert,
6
6
  normalizeString,
7
7
  synchronizeAttrs,
@@ -9,14 +9,17 @@ import {
9
9
  hasAnimation,
10
10
  ARIA,
11
11
  isAriaDescriptionSupported,
12
+ isCSR,
12
13
  } from 'lightning/utilsPrivate';
13
14
  import { instanceName, secure } from 'lightning/overlayUtils';
14
15
  import {
15
16
  getElementWithFocus,
16
17
  returnFocusToElement,
18
+ findAllTabbableElements,
17
19
  } from 'lightning/focusUtils';
18
20
  import closeButtonAltText from '@salesforce/label/LightningModalBase.cancelandclose';
19
21
  import disableCloseBtnMessage from '@salesforce/label/LightningModalBase.waitstate';
22
+ import AriaObserver from 'lightning/ariaObserver';
20
23
 
21
24
  const DEBOUNCE_RESIZE = 300;
22
25
  const SMALL_SCREEN_SIZE = 480;
@@ -24,10 +27,12 @@ const SIZE_SMALL = 'small';
24
27
  const SIZE_MEDIUM = 'medium';
25
28
  const SIZE_LARGE = 'large';
26
29
  const SIZE_FULL = 'full';
30
+ const OVERLAY_CONTAINER = 'lightning-overlay-container';
31
+ const MODAL_BASE = 'lightning-modal-base';
27
32
 
28
- export default class LightningModalBase extends LightningElement {
33
+ export default class LightningModalBase extends LightningShadowBaseClass {
29
34
  // this is visible in DOM, changed from 'lightning-modal-base'
30
- static [instanceName] = 'lightning-modal-base';
35
+ static [instanceName] = MODAL_BASE;
31
36
 
32
37
  // private tracked state
33
38
  initialRender = true;
@@ -50,7 +55,6 @@ export default class LightningModalBase extends LightningElement {
50
55
  headerLabelId = null;
51
56
  headerLabelIsPopulated = null;
52
57
  headerTitleRef = null;
53
- headerTabElemRef = null;
54
58
 
55
59
  // modalBody, child
56
60
  bodyRegistered = false;
@@ -66,12 +70,18 @@ export default class LightningModalBase extends LightningElement {
66
70
  portraitMatchMedia = null;
67
71
  screenOrientationChangeHandler = null;
68
72
 
73
+ // state utilized when performing keyboard Tab/Shift-Tab interactions
74
+ focusinEventBound = false;
75
+ focusinEventHandler = null;
76
+ lastFocussedElementOnModal = null;
77
+ previousSavedInertElementsSize = 0;
78
+ allTabbableElements = null;
79
+
69
80
  // modalFooter, child
70
81
  footerRegistered = false;
71
82
  footerHeight = 0;
72
83
  footerSlotHasRendered = false;
73
84
  footerDefaultSlotIsPopulated = false;
74
- footerTabElemRef = null;
75
85
 
76
86
  // aria attributes
77
87
  modalLabel = null;
@@ -89,6 +99,14 @@ export default class LightningModalBase extends LightningElement {
89
99
  // before modal opened, element previously focused
90
100
  savedActiveElement;
91
101
 
102
+ // accessibility
103
+ ariaObserver = null;
104
+
105
+ constructor() {
106
+ super();
107
+ this.ariaObserver = new AriaObserver(this);
108
+ }
109
+
92
110
  /**
93
111
  * <lightning-modal> label value
94
112
  * Text to display as the heading at the top of the modal
@@ -212,7 +230,10 @@ export default class LightningModalBase extends LightningElement {
212
230
  * @private
213
231
  */
214
232
  get modal() {
215
- return (this.defaultSlot && this.defaultSlot.childNodes[0]) || null;
233
+ return (
234
+ (isCSR && this.defaultSlot && this.defaultSlot.childNodes[0]) ||
235
+ null
236
+ );
216
237
  }
217
238
 
218
239
  /**
@@ -418,6 +439,61 @@ export default class LightningModalBase extends LightningElement {
418
439
  }
419
440
  }
420
441
 
442
+ /**
443
+ * Handler for 'focusin' events responsible for following -
444
+ * <ul>
445
+ * <li>While the focus is on a Modal or stacked Modals, the handler tracks the last focussed element inside a Modal</li>
446
+ * <li>If user's focus moves outside a Modal, the handler tries to bring user's focus back to last focussed element</li>
447
+ * </ul>
448
+ * @param e - Event
449
+ */
450
+ handleFocusinEvents(e) {
451
+ // eslint-disable-next-line @lwc/lwc/no-async-operation
452
+ requestAnimationFrame(() => {
453
+ e.preventDefault();
454
+ e.stopPropagation();
455
+
456
+ const focusinEvtTarget = e.target;
457
+ const isFocusTargetAModal =
458
+ focusinEvtTarget.matches(OVERLAY_CONTAINER);
459
+ const wasANewModalStackedOnTopOfAnExistingModal =
460
+ this.isStackedModal() &&
461
+ this.savedInertElements.length >
462
+ this.previousSavedInertElementsSize;
463
+
464
+ if (wasANewModalStackedOnTopOfAnExistingModal) {
465
+ // update private tracker in anticipation of more stacked modals
466
+ this.previousSavedInertElementsSize =
467
+ this.savedInertElements.length;
468
+ }
469
+
470
+ // 1. If focus is on a Modal, then track the last focussed element
471
+ if (isFocusTargetAModal) {
472
+ // Perf optimization: check if allTabbableElements needs updating
473
+ if (
474
+ !this.allTabbableElements ||
475
+ wasANewModalStackedOnTopOfAnExistingModal
476
+ ) {
477
+ this.allTabbableElements =
478
+ findAllTabbableElements(focusinEvtTarget);
479
+ }
480
+ const elementWithFocus = getElementWithFocus();
481
+ const isModalTitleText =
482
+ elementWithFocus.hasAttribute('data-label');
483
+ if (
484
+ isModalTitleText ||
485
+ this.allTabbableElements.indexOf(elementWithFocus) !== -1
486
+ ) {
487
+ // element is part of the Modal with current focus on it, track it
488
+ this.lastFocussedElementOnModal = elementWithFocus;
489
+ }
490
+ } // 2. If focus moved out of Modal, return focus to last element that was focussed.
491
+ else {
492
+ returnFocusToElement(this.lastFocussedElementOnModal);
493
+ }
494
+ });
495
+ }
496
+
421
497
  /**
422
498
  * Opening the modal involves first performing necessary steps to
423
499
  * prepare for when the modal closes
@@ -440,6 +516,10 @@ export default class LightningModalBase extends LightningElement {
440
516
  closeModal() {
441
517
  this.returnFocusToBackground();
442
518
  this.renderBackgroundActive(this.savedInertElements);
519
+ if (this.ariaObserver) {
520
+ this.ariaObserver.disconnect();
521
+ this.ariaObserver = undefined;
522
+ }
443
523
  }
444
524
 
445
525
  /**
@@ -456,6 +536,9 @@ export default class LightningModalBase extends LightningElement {
456
536
  });
457
537
  // console.error when label empty
458
538
  this.errorLabelRequired();
539
+ if (this.ariaObserver) {
540
+ this.ariaObserver.disconnect();
541
+ }
459
542
  };
460
543
 
461
544
  get isDescriptionSet() {
@@ -520,10 +603,12 @@ export default class LightningModalBase extends LightningElement {
520
603
  // headerLabelIsPopulated is equivalent labelIsEmpty, but from modalHeader level
521
604
  if (headerRegistered) {
522
605
  if (headerLabelId && headerLabelIsPopulated) {
523
- synchronizeAttrs(this.modalWrapper, {
524
- [ARIA.LABELLEDBY]: headerLabelId,
525
- [ARIA.LABEL]: null,
606
+ this.ariaObserver.connect({
607
+ targetNode: this.modalWrapper,
608
+ attribute: 'aria-labelledby',
609
+ relatedNodes: [this.headerTitleRef],
526
610
  });
611
+ synchronizeAttrs(this.modalWrapper, { [ARIA.LABEL]: null });
527
612
  // if labelId not set OR header label value not set,
528
613
  // must console.error
529
614
  } else {
@@ -746,7 +831,6 @@ export default class LightningModalBase extends LightningElement {
746
831
  // FUTURE TODO mechanism to support aria-describedby
747
832
  // aria-describedby is optional, without a good reproducible pattern
748
833
  this.initBodyState();
749
- this.removeWindowResizeEventListener();
750
834
  }
751
835
 
752
836
  /**
@@ -784,6 +868,9 @@ export default class LightningModalBase extends LightningElement {
784
868
  if (!this.windowOrientationEventBound) {
785
869
  this.addOrientationChangeListener();
786
870
  }
871
+ if (!this.focusinEventBound) {
872
+ this.addFocusinEventListener();
873
+ }
787
874
  }
788
875
 
789
876
  /**
@@ -838,7 +925,6 @@ export default class LightningModalBase extends LightningElement {
838
925
  */
839
926
  registerHeader({
840
927
  defaultSlotIsPopulated,
841
- firstTabbableElemRef,
842
928
  defaultSlotWrapperId,
843
929
  defaultSlotHasRendered,
844
930
  unRegisterCallback,
@@ -855,7 +941,6 @@ export default class LightningModalBase extends LightningElement {
855
941
  this.headerLabelId = labelId;
856
942
  this.headerLabelIsPopulated = labelIsPopulated;
857
943
  this.headerTitleRef = headerRef;
858
- this.headerTabElemRef = firstTabbableElemRef;
859
944
  unRegisterCallback(() => {
860
945
  this.unregisterHeader();
861
946
  });
@@ -892,7 +977,6 @@ export default class LightningModalBase extends LightningElement {
892
977
  this.headerLabelId = null;
893
978
  this.headerLabelIsPopulated = null;
894
979
  this.headerTitleRef = null;
895
- this.headerTabElemRef = null;
896
980
  }
897
981
 
898
982
  /**
@@ -923,13 +1007,11 @@ export default class LightningModalBase extends LightningElement {
923
1007
  defaultSlotHasRendered,
924
1008
  footerHeight,
925
1009
  unRegisterCallback,
926
- firstTabbableElemRef,
927
1010
  }) {
928
1011
  this.footerRegistered = true;
929
1012
  this.footerDefaultSlotIsPopulated = defaultSlotIsPopulated;
930
1013
  this.footerSlotHasRendered = defaultSlotHasRendered;
931
1014
  this.updateFooterHeight(footerHeight);
932
- this.footerTabElemRef = firstTabbableElemRef || null;
933
1015
  unRegisterCallback(() => {
934
1016
  this.unregisterFooter();
935
1017
  });
@@ -961,7 +1043,6 @@ export default class LightningModalBase extends LightningElement {
961
1043
  this.footerHeight = 0;
962
1044
  this.footerSlotHasRendered = false;
963
1045
  this.footerDefaultSlotIsPopulated = false;
964
- this.footerTabElemRef = null;
965
1046
  }
966
1047
 
967
1048
  /**
@@ -997,6 +1078,16 @@ export default class LightningModalBase extends LightningElement {
997
1078
  clearTimeout(this.timeoutId);
998
1079
  this.timeoutId = 0;
999
1080
 
1081
+ if (this.updateHeaderCallback) {
1082
+ // Update the header size
1083
+ this.updateHeaderCallback({ size: this.size });
1084
+ }
1085
+
1086
+ if (this.updateFooterCallback) {
1087
+ // Update the footer size
1088
+ this.updateFooterCallback({ size: this.size });
1089
+ }
1090
+
1000
1091
  if (this.bodyRegistered && !this.bodyResizeScheduled) {
1001
1092
  // check, and update isSmallScreenSize before
1002
1093
  // callback to modalBody
@@ -1013,6 +1104,7 @@ export default class LightningModalBase extends LightningElement {
1013
1104
  backdropWidth: this.backdropDimensions.width,
1014
1105
  sizeSetFull: this.size === SIZE_FULL,
1015
1106
  isSmallScreenSize: this.isSmallScreenSize,
1107
+ size: this.size,
1016
1108
  };
1017
1109
  this.baseUpdateBodyCallback(values);
1018
1110
  }
@@ -1108,12 +1200,58 @@ export default class LightningModalBase extends LightningElement {
1108
1200
  }
1109
1201
  }
1110
1202
 
1203
+ /**
1204
+ * Helper method to determine when modals are being stacked.
1205
+ *
1206
+ * When stacked modals are present on the page,
1207
+ * elements in savedInertElements will have 'ariaHidden' attribute with a boolean true
1208
+ * @returns {boolean}
1209
+ */
1210
+ isStackedModal() {
1211
+ const { savedInertElements } = this;
1212
+ for (let i = 0; i < savedInertElements.length; i++) {
1213
+ const isAriaHidden = savedInertElements[i].ariaHidden;
1214
+ if (isAriaHidden) {
1215
+ return true;
1216
+ }
1217
+ }
1218
+ return false;
1219
+ }
1220
+
1221
+ /**
1222
+ * == W-12654751 P1 a11y bug ==
1223
+ *
1224
+ * Adds an event listener to listen and handle to 'focusin' events.
1225
+ * All Lightning Modals must trap user focus, while they are open.
1226
+ */
1227
+ addFocusinEventListener() {
1228
+ if (!this.focusinEventBound) {
1229
+ this.focusinEventBound = true;
1230
+ this.focusinEventHandler = this.handleFocusinEvents.bind(this);
1231
+ window.addEventListener('focusin', this.focusinEventHandler);
1232
+ }
1233
+ }
1234
+
1235
+ /**
1236
+ * == W-12654751 P1 a11y bug ==
1237
+ *
1238
+ * Remove event listener for 'focusin' events, only when the base modal is closed.
1239
+ * No-op when modals stacked on top of a base modal are closed.
1240
+ */
1241
+ removeFocusinEventListener() {
1242
+ if (this.focusinEventBound) {
1243
+ this.focusinEventBound = false;
1244
+ window.removeEventListener('focusin', this.focusinEventHandler);
1245
+ this.focusinEventHandler = null;
1246
+ }
1247
+ }
1248
+
1111
1249
  /**
1112
1250
  * determine if the current screen is less than SMALL_SCREEN_SIZE
1113
1251
  * for Modal, screen size detection is simplified to what's required
1114
1252
  * for the size="full" feature addition, which is a single breakpoint
1115
1253
  * either (a) at or below 480 pixels (small = full screen modal behavior),
1116
- * or (b) at or above 480 (large = default modal behavior)
1254
+ * or (b) at or above 481 (large = default modal behavior)
1117
1255
  * @private
1118
1256
  */
1119
1257
  setIsSmallScreenSize() {
@@ -1132,6 +1270,7 @@ export default class LightningModalBase extends LightningElement {
1132
1270
  removeModalEventListeners() {
1133
1271
  this.removeWindowResizeEventListener();
1134
1272
  this.removeOrientationChangeListener();
1273
+ this.removeFocusinEventListener();
1135
1274
  }
1136
1275
 
1137
1276
  /**
@@ -1176,6 +1315,7 @@ export default class LightningModalBase extends LightningElement {
1176
1315
  }
1177
1316
 
1178
1317
  connectedCallback() {
1318
+ super.connectedCallback();
1179
1319
  this.initModalState();
1180
1320
  // check for screen size right away
1181
1321
  // not adding event listeners here,
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <LightningComponentBundle xmlns="xmlns=http://soap.sforce.com/2006/04/metadata">
3
+ <capabilities>
4
+ <capability>lightning__ServerRenderableWithHydration</capability>
5
+ </capabilities>
6
+ </LightningComponentBundle>
@@ -0,0 +1,2 @@
1
+ @import 'lightning/sldsCommon';
2
+ @import './modal-base.slds.css';
@@ -0,0 +1,18 @@
1
+ /* Modal close button */
2
+
3
+ /* Required for autofocus to work correctly:
4
+ - child elements of modal appear 'visibility: hidden' at
5
+ the moment that they are being reviewed for eligibility
6
+ for focus in focus.js at isElementVisible()
7
+ */
8
+ .fix-slds-modal,
9
+ :host([data-render-mode="shadow"]) .fix-slds-modal {
10
+ visibility: visible;
11
+ z-index: unset;
12
+ }
13
+
14
+ /* Required for z-index */
15
+ .fix-slds-backdrop,
16
+ :host([data-render-mode="shadow"]) .fix-slds-backdrop {
17
+ z-index: unset;
18
+ }
@@ -0,0 +1,60 @@
1
+
2
+ /* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
3
+ Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
4
+
5
+ :host([data-render-mode="shadow"]) .slds-modal__content_headless {
6
+ border-start-end-radius: var(--slds-c-modalbody-radius-border, var(--slds-g-radius-border-2));
7
+ border-start-start-radius: var(--slds-c-modalbody-radius-border, var(--slds-g-radius-border-2));
8
+ }
9
+
10
+ :host([data-render-mode="shadow"]) .slds-modal__content {
11
+ /**
12
+ * Remap to SLDS blueprint hooks for parity
13
+ * https://www.lightningdesignsystem.com/components/modals/#Styling-Hooks-Overview
14
+ */
15
+ --slds-c-modal-content-color-background: var(--slds-c-modalbody-color-background);
16
+ --slds-c-modal-content-text-color: var(--slds-c-modalbody-text-color);
17
+
18
+ background-color: var(--slds-c-modalbody-color-background, var(--slds-g-color-surface-container-1));
19
+ color: var(--slds-c-modalbody-text-color);
20
+ overflow: hidden;
21
+ overflow-y: auto;
22
+ }
23
+
24
+ :host([data-render-mode="shadow"]) .slds-modal__content_footless {
25
+ border-bottom-right-radius: var(--slds-c-modalbody-radius-border, var(--slds-g-radius-border-2));
26
+ border-bottom-left-radius: var(--slds-c-modalbody-radius-border, var(--slds-g-radius-border-2));
27
+ box-shadow: var(--slds-c-modalbody-shadow, var(--slds-g-shadow-2));
28
+ }
29
+
30
+ /* Sizes: Full */
31
+
32
+ /* Original SLDS implementation was desktop-first. This is now mobile-first for <=480px */
33
+
34
+ @media (width <= 30em) {
35
+ :host([data-render-mode="shadow"][data-size='full']) [part='modal-body'] {
36
+ grid-area: content;
37
+ }
38
+
39
+ :host([data-render-mode="shadow"][data-size='full'][data-variant-footless]) [part='modal-body'] {
40
+ border-end-end-radius: 0;
41
+ border-end-start-radius: 0;
42
+ box-shadow: none;
43
+ }
44
+
45
+ /**
46
+ * INTERNAL USE ONLY - SUBJECT TO CHANGE AND REMOVAL
47
+ *
48
+ * SLDS Blueprint <> LBC Parity Patch
49
+ *
50
+ * SLDS blueprints and LBC implementation are not 1:1. This patch is needed to
51
+ * account for the differences introduced in the LBC implementation. Location
52
+ * of this code would ideally live within the LBC component CSS module but
53
+ * synthetic shadow and how LBC deconstructs the modal into individual components
54
+ * makes this not feasible. Not ideal, but this is the best solution for now.
55
+ * Selectors are scoped to lightning-* to avoid any potential outside conflicts.
56
+ */
57
+ :host([data-render-mode="shadow"][data-size='full']) {
58
+ display: contents;
59
+ }
60
+ }
@@ -0,0 +1 @@
1
+ @import './modalBody.lbc.native.css';
@@ -2,6 +2,7 @@
2
2
  <div
3
3
  id="modal-content"
4
4
  class={modalBodyCssClasses}
5
+ part="modal-body"
5
6
  data-content-container
6
7
  onprivatescrollablecontainer={handleScrollableContainerRepositionEvent}
7
8
  >
@@ -1,4 +1,4 @@
1
- import { LightningElement } from 'lwc';
1
+ import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
2
2
  import { classSet } from 'lightning/utils';
3
3
  import { getRealDOMId } from 'lightning/utilsPrivate';
4
4
  import { findAllTabbableElements, filterTooltips } from 'lightning/focusUtils';
@@ -6,7 +6,7 @@ import { findAllTabbableElements, filterTooltips } from 'lightning/focusUtils';
6
6
  /**
7
7
  * The modal body component to display main content area in lightning modal.
8
8
  * */
9
- export default class LightningModalBody extends LightningElement {
9
+ export default class LightningModalBody extends LightningShadowBaseClass {
10
10
  // private tracked state
11
11
  initialRender = true;
12
12
  initialSlotRender = true;
@@ -243,6 +243,7 @@ export default class LightningModalBody extends LightningElement {
243
243
  const {
244
244
  sizeSetFull,
245
245
  isSmallScreenSize,
246
+ size,
246
247
  headerHeight,
247
248
  footerHeight,
248
249
  } = values;
@@ -254,6 +255,17 @@ export default class LightningModalBody extends LightningElement {
254
255
  const updatedValues = this.updateValues(values);
255
256
  // set updated values based on behavior
256
257
  this.setModalBodyHeight(updatedValues, shouldUseFullHeight);
258
+
259
+ // update host variant and size based on header and footer height
260
+ if (!this.headerPresent) {
261
+ this.setAttribute('data-variant-headless', '');
262
+ }
263
+ if (!this.footerPresent) {
264
+ this.setAttribute('data-variant-footless', '');
265
+ }
266
+
267
+ // set the host size based on the modal base size
268
+ this.setAttribute('data-size', size);
257
269
  }
258
270
  }
259
271
 
@@ -296,6 +308,7 @@ export default class LightningModalBody extends LightningElement {
296
308
  }
297
309
 
298
310
  connectedCallback() {
311
+ super.connectedCallback();
299
312
  // handle case where modalBody is added/removed/re-added to DOM
300
313
  this.initState();
301
314
  }
@@ -0,0 +1,3 @@
1
+ @import 'lightning/sldsCommon';
2
+ @import 'lightning/sldsUtilsPadding';
3
+ @import './modal-body.slds.css';
@@ -0,0 +1,79 @@
1
+
2
+ /* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
3
+ Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
4
+
5
+ :host([data-render-mode="shadow"]) .slds-modal__footer {
6
+
7
+ /* stylelint-disable sds-stylelint-plugin/styling-hooks-deprecated */
8
+
9
+ /* stylelint-disable sds-stylelint-plugin/styling-hooks-pattern */
10
+
11
+ /**
12
+ * Remap to SLDS blueprint hooks for parity
13
+ * https://www.lightningdesignsystem.com/components/modals/#Styling-Hooks-Overview
14
+ */
15
+ --slds-c-modal-footer-color-background: var(--slds-c-modalfooter-color-background);
16
+ --slds-c-modal-footer-text-color: var(--slds-c-modalfooter-text-color);
17
+ --slds-c-modal-footer-spacing-block-start: var(--slds-c-modalfooter-spacing-block-start);
18
+ --slds-c-modal-footer-spacing-inline-end: var(--slds-c-modalfooter-spacing-inline-end);
19
+ --slds-c-modal-footer-spacing-block-end: var(--slds-c-modalfooter-spacing-block-end);
20
+ --slds-c-modal-footer-spacing-inline-start: var(--slds-c-modalfooter-spacing-inline-start);
21
+
22
+ border-end-end-radius: var(--slds-c-modalfooter-radius-border, var(--slds-g-radius-border-2));
23
+ border-end-start-radius: var(--slds-c-modalfooter-radius-border, var(--slds-g-radius-border-2));
24
+ border-block-start-width: var(--slds-c-modalfooter-sizing-border, var(--slds-g-sizing-border-2));
25
+ border-block-start-style: solid;
26
+ border-block-start-color: var(--slds-c-modalfooter-color-border, var(--slds-g-color-border-1));
27
+ background-color: var(--slds-c-modalfooter-color-background, var(--slds-g-color-surface-container-2));
28
+ color: var(--slds-c-modalfooter-text-color);
29
+ -ms-flex-negative: 0;
30
+ flex-shrink: 0;
31
+ padding-block-start: var(--slds-c-modalfooter-spacing-block-start, var(--slds-g-spacing-3));
32
+ padding-inline-end: var(--slds-c-modalfooter-spacing-inline-end, var(--slds-g-spacing-4));
33
+ padding-block-end: var(--slds-c-modalfooter-spacing-block-end, var(--slds-g-spacing-3));
34
+ padding-inline-start: var(--slds-c-modalfooter-spacing-inline-start, var(--slds-g-spacing-4));
35
+ text-align: right;
36
+ box-shadow: var(--slds-c-modalfooter-shadow, 0 2px 3px 0 rgba(0, 0, 0, 16%));
37
+ /* stylelint-enable sds-stylelint-plugin/styling-hooks-deprecated */
38
+
39
+ /* stylelint-enable sds-stylelint-plugin/styling-hooks-pattern */
40
+ }
41
+
42
+ /* TODO W-12674349: Replace with visibility utility classes when available */
43
+
44
+ :host([data-render-mode="shadow"]) .slds-hide {
45
+ display: none !important;
46
+ }
47
+
48
+ /* Sizes: Full */
49
+
50
+ /* Original SLDS implementation was desktop-first. This is now mobile-first for <=480px */
51
+
52
+ @media (width <= 30em) {
53
+ :host([data-render-mode="shadow"][data-size='full']) [part='modal-footer'] {
54
+ grid-area: footer;
55
+ border-start-end-radius: 0;
56
+ border-end-start-radius: 0;
57
+ box-shadow: none;
58
+ }
59
+
60
+ /**
61
+ * INTERNAL USE ONLY - SUBJECT TO CHANGE AND REMOVAL
62
+ *
63
+ * SLDS Blueprint <> LBC Parity Patch
64
+ *
65
+ * SLDS blueprints and LBC implementation are not 1:1. This patch is needed to
66
+ * account for the differences introduced in the LBC implementation. Location
67
+ * of this code would ideally live within the LBC component CSS module but
68
+ * synthetic shadow and how LBC deconstructs the modal into individual components
69
+ * makes this not feasible. Not ideal, but this is the best solution for now.
70
+ * Selectors are scoped to lightning-* to avoid any potential outside conflicts.
71
+ */
72
+ :host([data-render-mode="shadow"][data-size='full']) {
73
+ display: contents;
74
+ }
75
+ }
76
+
77
+ :host([data-render-mode="shadow"]) .slds-modal__footer .slds-button + .slds-button {
78
+ margin-left: var(--slds-g-spacing-2);
79
+ }
@@ -0,0 +1 @@
1
+ @import './modalFooter.lbc.native.css';
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class={footerCssClasses}>
2
+ <div class={footerCssClasses} part="modal-footer">
3
3
  <slot
4
4
  data-footer-slot
5
5
  onslotchange={handleDefaultSlotChange}
@@ -1,6 +1,5 @@
1
- import { LightningElement } from 'lwc';
1
+ import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
2
2
  import { classSet } from 'lightning/utils';
3
- import { findAllTabbableElements, filterTooltips } from 'lightning/focusUtils';
4
3
 
5
4
  // SLDS Modal Footer classes
6
5
  const footerClass = 'slds-modal__footer';
@@ -12,7 +11,7 @@ const footerSlotSelector = '[data-footer-slot]';
12
11
  /**
13
12
  * The modal footer component to display footer content in lightning modal.
14
13
  * */
15
- export default class LightningModalFooter extends LightningElement {
14
+ export default class LightningModalFooter extends LightningShadowBaseClass {
16
15
  // tracked private state
17
16
  initialRender = true;
18
17
  initialSlotRender = true;
@@ -82,25 +81,6 @@ export default class LightningModalFooter extends LightningElement {
82
81
  return true;
83
82
  }
84
83
 
85
- /**
86
- * Get first tabbable element within modalFooter's slot, if exists
87
- * This is passed to parent in order to possibly be used for autoFocus
88
- * @returns {(HTMLElement|null)}
89
- * @private
90
- */
91
- get firstTabbableElement() {
92
- let firstElem = null;
93
- if (this.isDefaultSlotPopulated) {
94
- const filteredElements = filterTooltips(
95
- findAllTabbableElements(this.defaultSlotElement)
96
- );
97
- if (filteredElements.length > 0) {
98
- firstElem = filteredElements[0];
99
- }
100
- }
101
- return firstElem;
102
- }
103
-
104
84
  /**
105
85
  * Register modalFooter with modal parent, including callbacks to
106
86
  * unregister the modal footer
@@ -116,7 +96,6 @@ export default class LightningModalFooter extends LightningElement {
116
96
  footerHeight: this.footerHeight,
117
97
  defaultSlotIsPopulated: this.isDefaultSlotPopulated,
118
98
  defaultSlotHasRendered: !this.initialSlotRender,
119
- firstTabbableElemRef: this.firstTabbableElement,
120
99
  unRegisterCallback: (unregisterCallback) => {
121
100
  this.unregisterCallback = unregisterCallback;
122
101
  },
@@ -140,6 +119,7 @@ export default class LightningModalFooter extends LightningElement {
140
119
  }
141
120
 
142
121
  connectedCallback() {
122
+ super.connectedCallback();
143
123
  // handle case where modalFooter is added/removed/added to DOM
144
124
  // so registerWithParent gets called
145
125
  this.initState();
@@ -0,0 +1,2 @@
1
+ @import 'lightning/sldsCommon';
2
+ @import './modal-footer.slds.css';