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
@@ -2,7 +2,6 @@
2
2
  /* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
3
3
  Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
4
4
 
5
- @supports (--styling-hooks: '') {
6
5
  /**
7
6
  * Remap to SLDS blueprint hooks for parity
8
7
  * https://www.lightningdesignsystem.com/components/modals/#Styling-Hooks-Overview
@@ -136,12 +135,12 @@
136
135
  }
137
136
  }
138
137
 
139
-
140
138
  /* Sizes: Full */
141
139
 
142
140
  /* .slds-modal_full {} */
143
141
 
144
142
  /* Behaves like large size when not in a small viewport */
143
+
145
144
  @media (width >= 48em) {
146
145
  :host([data-render-mode="shadow"]) .slds-modal_full .slds-modal__container {
147
146
  width: 90%;
@@ -151,6 +150,7 @@
151
150
  }
152
151
 
153
152
  /* Original SLDS implementation was desktop-first. This is now mobile-first for <=480px */
153
+
154
154
  @media (width <= 30em) {
155
155
  :host([data-render-mode="shadow"]) .slds-modal_full {
156
156
  /* Account for iOS safe areas so our modal doesn't load underneath iOS elements. */
@@ -227,6 +227,7 @@
227
227
  }
228
228
 
229
229
  /* TODO W-12674349: remove after assistive text util is added */
230
+
230
231
  :host([data-render-mode="shadow"]) .slds-assistive-text {
231
232
  position: absolute !important;
232
233
  margin: -1px !important;
@@ -239,4 +240,3 @@
239
240
  text-transform: none !important;
240
241
  white-space: nowrap !important;
241
242
  }
242
- }
@@ -18,6 +18,7 @@
18
18
  onprivatemodalfooterregister={handleFooterRegister}
19
19
  onprivateclose={handlePrivateClose}
20
20
  onprivatedisableclosebutton={handlePrivateDisableCloseButton}
21
+ onprivatemodalheaderclose={handleModalHeaderCloseClick}
21
22
  data-modal
22
23
  >
23
24
  <template if:true={showAriaDescribedBy}>
@@ -39,16 +40,20 @@
39
40
  class="slds-modal__container"
40
41
  data-container
41
42
  >
42
- <lightning-button-icon
43
- class={computedCloseButtonCssClass}
44
- icon-name="utility:close"
45
- variant={computedCloseButtonVariant}
46
- alternative-text={closeButtonAltText}
47
- onclick={handleCloseClick}
48
- size="large"
49
- disabled={disableCloseButton}
50
- data-close-button
51
- ></lightning-button-icon>
43
+ <template if:true={isHeadlessModalVariant}>
44
+ <div class="slds-modal__header slds-text-align_left slds-modal__header_empty">
45
+ <lightning-button-icon
46
+ class="slds-modal__close"
47
+ icon-name="utility:close"
48
+ variant="bare"
49
+ alternative-text={closeButtonAltText}
50
+ onclick={handleCloseClick}
51
+ size="large"
52
+ disabled={disableCloseButton}
53
+ data-close-button
54
+ ></lightning-button-icon>
55
+ </div>
56
+ </template>
52
57
  <div data-slot lwc:dom="manual"></div>
53
58
  </div>
54
59
  </section>
@@ -2,20 +2,19 @@ import { api } from 'lwc';
2
2
  import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
3
3
  import { classSet } from 'lightning/utils';
4
4
  import {
5
- makeEverythingExceptElementInert,
6
- normalizeString,
7
- synchronizeAttrs,
8
- restoreInertness,
9
- hasAnimation,
10
5
  ARIA,
6
+ hasAnimation,
11
7
  isAriaDescriptionSupported,
12
8
  isCSR,
9
+ makeEverythingExceptElementInert,
10
+ normalizeString,
11
+ restoreInertness,
12
+ synchronizeAttrs,
13
13
  } from 'lightning/utilsPrivate';
14
14
  import { instanceName, secure } from 'lightning/overlayUtils';
15
15
  import {
16
16
  getElementWithFocus,
17
17
  returnFocusToElement,
18
- findAllTabbableElements,
19
18
  } from 'lightning/focusUtils';
20
19
  import closeButtonAltText from '@salesforce/label/LightningModalBase.cancelandclose';
21
20
  import disableCloseBtnMessage from '@salesforce/label/LightningModalBase.waitstate';
@@ -27,7 +26,6 @@ const SIZE_SMALL = 'small';
27
26
  const SIZE_MEDIUM = 'medium';
28
27
  const SIZE_LARGE = 'large';
29
28
  const SIZE_FULL = 'full';
30
- const OVERLAY_CONTAINER = 'lightning-overlay-container';
31
29
  const MODAL_BASE = 'lightning-modal-base';
32
30
 
33
31
  export default class LightningModalBase extends LightningShadowBaseClass {
@@ -47,6 +45,7 @@ export default class LightningModalBase extends LightningShadowBaseClass {
47
45
  isSmallScreenSize = null;
48
46
 
49
47
  // modalHeader, child
48
+ isHeadlessModalVariant = false;
50
49
  headerRegistered = false;
51
50
  headerHeight = 0;
52
51
  headerDefaultSlotIsPopulated = false;
@@ -55,7 +54,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
55
54
  headerLabelId = null;
56
55
  headerLabelIsPopulated = null;
57
56
  headerTitleRef = null;
58
- headerTabElemRef = null;
59
57
 
60
58
  // modalBody, child
61
59
  bodyRegistered = false;
@@ -83,7 +81,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
83
81
  footerHeight = 0;
84
82
  footerSlotHasRendered = false;
85
83
  footerDefaultSlotIsPopulated = false;
86
- footerTabElemRef = null;
87
84
 
88
85
  // aria attributes
89
86
  modalLabel = null;
@@ -165,48 +162,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
165
162
  return modal.disableClose;
166
163
  }
167
164
 
168
- /**
169
- * Toggle on and off disable close button feature
170
- * typically used very briefly when devs want to save form data to backend
171
- * and do not want the form to be closed before the save has
172
- * completed successfully
173
- * toggleDisableCloseButton sets local state to
174
- * (a) toggle display an aria-live message
175
- * (b) toggle set disabled on the <lightning-button-icon>
176
- * (c) toggle set aria-busy value on
177
- * elsewhere in modalBase and modal, ESC key is also disabled, and
178
- * calls to this.close() are prevented
179
- */
180
- toggleDisableCloseButton() {
181
- // this.disableCloseButton is local modalBase state
182
- // this.disableClose is modal.js @api state
183
- // we track both in order to handle transition correctly
184
- const isSwitchingToDisabled =
185
- !this.disableCloseButton && this.disableClose;
186
- /* Future enhancement possibility - trigger setInterval to remove and
187
- again add back 'Processing' text, as this will indicate to the screen
188
- reader user that the interface continues to be busy
189
- */
190
- const disableCloseButtonMessage = isSwitchingToDisabled
191
- ? this.disableCloseBtnMessage
192
- : '';
193
- if (isSwitchingToDisabled) {
194
- // Should disable close button
195
- this.ariaLiveMessage = disableCloseButtonMessage;
196
- this.showAriaLiveMessage = true;
197
- synchronizeAttrs(this.modalWrapper, { [`${ARIA.BUSY}`]: true });
198
- synchronizeAttrs(this.modalCloseButton, { disabled: 'disabled' });
199
- this.disableCloseButton = true;
200
- } else {
201
- // Should enable close button
202
- this.ariaLiveMessage = disableCloseBtnMessage;
203
- this.showAriaLiveMessage = false;
204
- synchronizeAttrs(this.modalWrapper, { [`${ARIA.BUSY}`]: null });
205
- synchronizeAttrs(this.modalCloseButton, { disabled: null });
206
- this.disableCloseButton = false;
207
- }
208
- }
209
-
210
165
  /**
211
166
  * Public method to get the modal slot element
212
167
  * @type {(HTMLElement|null)} The modal slot, currently a div elem
@@ -356,35 +311,99 @@ export default class LightningModalBase extends LightningShadowBaseClass {
356
311
  return classes.toString();
357
312
  }
358
313
 
314
+ get isDescriptionSet() {
315
+ const { description } = this;
316
+ // check for being set, as well as not just a description with spaces
317
+ // avoiding setting aria-describedby on section pointing to
318
+ // an empty SPAN element
319
+ return !!description?.trim().length;
320
+ }
321
+
359
322
  /**
360
- * Compute the correct lightning-button-icon CSS class to use
361
- * for the size="full" behaviors, based upon the screen size
362
- * threshold. Two classes are added for full screen behavior
363
- * to handle edge cases where customers change background of the
364
- * modal header so the close button maintains visibility for a11y
323
+ * Determines if aria-describedby should be set, and the span tag shown
324
+ * occurs only when aria-description is not supported.
325
+ * ex: when description api is set to '' or ' ',
326
+ * we don't want to show the span or set aria-describedby
365
327
  * @private
366
328
  */
367
- // slds-button slds-button_icon slds-modal__close slds-button_icon-inverse
368
- get computedCloseButtonCssClass() {
369
- let classes = classSet('slds-modal__close');
370
- const fullScreenActive =
371
- this.isSmallScreenSize && this.size === SIZE_FULL;
372
- classes.add({
373
- 'slds-modal_full-close-button': fullScreenActive,
374
- });
375
- return classes.toString();
329
+ get showAriaDescribedBy() {
330
+ return !isAriaDescriptionSupported() && this.isDescriptionSet;
376
331
  }
377
332
 
378
333
  /**
379
- * Compute the correct lightning-button-icon variant to use
380
- * for the size="full" behaviors, based upon the screen size
381
- * threshold. Important to maintain existing close button behavior
382
- * when size 'small', 'medium' and 'large' close button variant
383
- * when 'isSmallScreenSize = true' for a11y purposes
334
+ * When window is resizing, need to debounce callback
335
+ * Track internal variable _resizing
336
+ * @returns {Boolean}
384
337
  * @private
385
338
  */
386
- get computedCloseButtonVariant() {
387
- return this.shouldModalBeFullScreen() ? 'bare' : 'bare-inverse';
339
+ get modalResizing() {
340
+ if (!this._resizing) {
341
+ this._resizing = this.scheduleWindowResizeEvent.bind(this);
342
+ }
343
+ return this._resizing;
344
+ }
345
+
346
+ /**
347
+ * Toggle on and off disable close button feature
348
+ * typically used very briefly when devs want to save form data to backend
349
+ * and do not want the form to be closed before the save has
350
+ * completed successfully
351
+ * toggleDisableCloseButton sets local state to
352
+ * (a) toggle display an aria-live message
353
+ * (b) toggle set disabled on the <lightning-button-icon>
354
+ * (c) toggle set aria-busy value on
355
+ * elsewhere in modalBase and modal, ESC key is also disabled, and
356
+ * calls to this.close() are prevented
357
+ */
358
+ toggleDisableCloseButton() {
359
+ // this.disableCloseButton is local modalBase state
360
+ // this.disableClose is modal.js @api state
361
+ // we track both in order to handle transition correctly
362
+ const isSwitchingToDisabled =
363
+ !this.disableCloseButton && this.disableClose;
364
+ /* Future enhancement possibility - trigger setInterval to remove and
365
+ again add back 'Processing' text, as this will indicate to the screen
366
+ reader user that the interface continues to be busy
367
+ */
368
+ const disableCloseButtonMessage = isSwitchingToDisabled
369
+ ? this.disableCloseBtnMessage
370
+ : '';
371
+
372
+ const closeButtonDisable = isSwitchingToDisabled ? 'disabled' : null;
373
+
374
+ // Finally, set accessibility attributes for modal-base
375
+ if (isSwitchingToDisabled) {
376
+ // Should disable close button
377
+ this.ariaLiveMessage = disableCloseButtonMessage;
378
+ this.showAriaLiveMessage = true;
379
+ synchronizeAttrs(this.modalWrapper, { [`${ARIA.BUSY}`]: true });
380
+ this.disableCloseButton = true;
381
+ } else {
382
+ // Should enable close button
383
+ this.ariaLiveMessage = disableCloseButtonMessage;
384
+ this.showAriaLiveMessage = false;
385
+ synchronizeAttrs(this.modalWrapper, { [`${ARIA.BUSY}`]: null });
386
+ this.disableCloseButton = false;
387
+ }
388
+
389
+ // Modal with Header variant has close button icon on lightning-modal-header child component
390
+ // where-as Headless Modal variant has close button icon on modal-base,
391
+ if (!this.isHeadlessModalVariant) {
392
+ // dispatch secondary event to disable close button icon present on lightning-modal-header
393
+ this.headerTitleRef.dispatchEvent(
394
+ new CustomEvent('privatemodalheaderdisableclose', {
395
+ detail: {
396
+ disableClose: isSwitchingToDisabled,
397
+ [secure]: true,
398
+ },
399
+ bubbles: true,
400
+ })
401
+ );
402
+ } else {
403
+ synchronizeAttrs(this.modalCloseButton, {
404
+ disabled: closeButtonDisable,
405
+ });
406
+ }
388
407
  }
389
408
 
390
409
  /**
@@ -449,50 +468,10 @@ export default class LightningModalBase extends LightningShadowBaseClass {
449
468
  * </ul>
450
469
  * @param e - Event
451
470
  */
452
- handleFocusinEvents(e) {
471
+ handleFocusinEvents() {
453
472
  // eslint-disable-next-line @lwc/lwc/no-async-operation
454
473
  requestAnimationFrame(() => {
455
- e.preventDefault();
456
- e.stopPropagation();
457
-
458
- const focusinEvtTarget = e.target;
459
- const isFocusTargetAModal =
460
- focusinEvtTarget.matches(OVERLAY_CONTAINER);
461
- const wasANewModalStackedOnTopOfAnExistingModal =
462
- this.isStackedModal() &&
463
- this.savedInertElements.length >
464
- this.previousSavedInertElementsSize;
465
-
466
- if (wasANewModalStackedOnTopOfAnExistingModal) {
467
- // update private tracker in anticipation of more stacked modals
468
- this.previousSavedInertElementsSize =
469
- this.savedInertElements.length;
470
- }
471
-
472
- // 1. If focus is on a Modal, then track the last focussed element
473
- if (isFocusTargetAModal) {
474
- // Perf optimization: check if allTabbableElements needs updating
475
- if (
476
- !this.allTabbableElements ||
477
- wasANewModalStackedOnTopOfAnExistingModal
478
- ) {
479
- this.allTabbableElements =
480
- findAllTabbableElements(focusinEvtTarget);
481
- }
482
- const elementWithFocus = getElementWithFocus();
483
- const isModalTitleText =
484
- elementWithFocus.hasAttribute('data-label');
485
- if (
486
- isModalTitleText ||
487
- this.allTabbableElements.indexOf(elementWithFocus) !== -1
488
- ) {
489
- // element is part of the Modal with current focus on it, track it
490
- this.lastFocussedElementOnModal = elementWithFocus;
491
- }
492
- } // 2. If focus moved out of Modal, return focus to last element that was focussed.
493
- else {
494
- returnFocusToElement(this.lastFocussedElementOnModal);
495
- }
474
+ // W-14998924 note: code revert to unblock 250R downstream
496
475
  });
497
476
  }
498
477
 
@@ -543,25 +522,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
543
522
  }
544
523
  };
545
524
 
546
- get isDescriptionSet() {
547
- const { description } = this;
548
- // check for being set, as well as not just a description with spaces
549
- // avoiding setting aria-describedby on section pointing to
550
- // an empty SPAN element
551
- return description && description.trim().length > 0;
552
- }
553
-
554
- /**
555
- * Determines if aria-describedby should be set, and the span tag shown
556
- * occurs only when aria-description is not supported.
557
- * ex: when description api is set to '' or ' ',
558
- * we don't want to show the span or set aria-describedby
559
- * @private
560
- */
561
- get showAriaDescribedBy() {
562
- return !isAriaDescriptionSupported() && this.isDescriptionSet;
563
- }
564
-
565
525
  /**
566
526
  * Set either 'aria-describedby' or 'aria-description' value for accessibility
567
527
  * based on the presence of 'description' api value
@@ -650,6 +610,19 @@ export default class LightningModalBase extends LightningShadowBaseClass {
650
610
  console.error(errorMsg);
651
611
  }
652
612
 
613
+ /**
614
+ * Handle close button click triggered from lightning-modal-header
615
+ * @param e
616
+ */
617
+ handleModalHeaderCloseClick(e) {
618
+ if (!e?.detail?.[secure]) {
619
+ console.error('Invalid access to privatemodalheaderclose event');
620
+ return;
621
+ }
622
+ e.stopPropagation();
623
+ this.handleCloseClick();
624
+ }
625
+
653
626
  /**
654
627
  * Handle the close button click, or via ESC key
655
628
  * @private
@@ -661,8 +634,11 @@ export default class LightningModalBase extends LightningShadowBaseClass {
661
634
  }
662
635
  }
663
636
 
664
- // Handle privateclose event firing is prevented from occurring
665
- // when this.disableClose set true in modal.js
637
+ /**
638
+ * Handle privateclose event firing is prevented from occurring
639
+ * when this.disableClose set true in modal.js
640
+ * @param e
641
+ */
666
642
  handlePrivateClose(e) {
667
643
  if (!(e.detail && e.detail[secure])) {
668
644
  console.error('Invalid access to privateclose event');
@@ -703,6 +679,7 @@ export default class LightningModalBase extends LightningShadowBaseClass {
703
679
  console.error('Invalid access to privatedisableclose event');
704
680
  return;
705
681
  }
682
+
706
683
  this.toggleDisableCloseButton();
707
684
  }
708
685
 
@@ -873,6 +850,20 @@ export default class LightningModalBase extends LightningShadowBaseClass {
873
850
  if (!this.focusinEventBound) {
874
851
  this.addFocusinEventListener();
875
852
  }
853
+
854
+ this.updateHeadlessModalVariantState();
855
+ }
856
+
857
+ /**
858
+ * In case of a headless modal variant, the close button icon lives inside modalBase,
859
+ * while in other variants, the close icon lives inside lightning-modal-header
860
+ *
861
+ * This helper method is to accurately update the state of 'isHeadlessModalVariant' flag
862
+ * in order to selectively render the close <lightning-button-icon> in modalBase.html
863
+ */
864
+ updateHeadlessModalVariantState() {
865
+ this.isHeadlessModalVariant =
866
+ this.bodyRegistered && !this.headerRegistered;
876
867
  }
877
868
 
878
869
  /**
@@ -927,7 +918,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
927
918
  */
928
919
  registerHeader({
929
920
  defaultSlotIsPopulated,
930
- firstTabbableElemRef,
931
921
  defaultSlotWrapperId,
932
922
  defaultSlotHasRendered,
933
923
  unRegisterCallback,
@@ -944,7 +934,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
944
934
  this.headerLabelId = labelId;
945
935
  this.headerLabelIsPopulated = labelIsPopulated;
946
936
  this.headerTitleRef = headerRef;
947
- this.headerTabElemRef = firstTabbableElemRef;
948
937
  unRegisterCallback(() => {
949
938
  this.unregisterHeader();
950
939
  });
@@ -952,6 +941,8 @@ export default class LightningModalBase extends LightningShadowBaseClass {
952
941
  if (this.bodyRegistered) {
953
942
  this.updateModalBodyHeight();
954
943
  }
944
+
945
+ this.updateHeadlessModalVariantState();
955
946
  }
956
947
 
957
948
  /**
@@ -981,7 +972,7 @@ export default class LightningModalBase extends LightningShadowBaseClass {
981
972
  this.headerLabelId = null;
982
973
  this.headerLabelIsPopulated = null;
983
974
  this.headerTitleRef = null;
984
- this.headerTabElemRef = null;
975
+ this.updateHeadlessModalVariantState();
985
976
  }
986
977
 
987
978
  /**
@@ -1012,13 +1003,11 @@ export default class LightningModalBase extends LightningShadowBaseClass {
1012
1003
  defaultSlotHasRendered,
1013
1004
  footerHeight,
1014
1005
  unRegisterCallback,
1015
- firstTabbableElemRef,
1016
1006
  }) {
1017
1007
  this.footerRegistered = true;
1018
1008
  this.footerDefaultSlotIsPopulated = defaultSlotIsPopulated;
1019
1009
  this.footerSlotHasRendered = defaultSlotHasRendered;
1020
1010
  this.updateFooterHeight(footerHeight);
1021
- this.footerTabElemRef = firstTabbableElemRef || null;
1022
1011
  unRegisterCallback(() => {
1023
1012
  this.unregisterFooter();
1024
1013
  });
@@ -1026,6 +1015,8 @@ export default class LightningModalBase extends LightningShadowBaseClass {
1026
1015
  if (this.bodyRegistered) {
1027
1016
  this.updateModalBodyHeight();
1028
1017
  }
1018
+
1019
+ this.updateHeadlessModalVariantState();
1029
1020
  }
1030
1021
 
1031
1022
  /**
@@ -1050,20 +1041,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
1050
1041
  this.footerHeight = 0;
1051
1042
  this.footerSlotHasRendered = false;
1052
1043
  this.footerDefaultSlotIsPopulated = false;
1053
- this.footerTabElemRef = null;
1054
- }
1055
-
1056
- /**
1057
- * When window is resizing, need to debounce callback
1058
- * Track internal variable _resizing
1059
- * @returns {Boolean}
1060
- * @private
1061
- */
1062
- get modalResizing() {
1063
- if (!this._resizing) {
1064
- this._resizing = this.scheduleWindowResizeEvent.bind(this);
1065
- }
1066
- return this._resizing;
1067
1044
  }
1068
1045
 
1069
1046
  /**
@@ -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>
@@ -2,7 +2,6 @@
2
2
  /* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
3
3
  Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
4
4
 
5
- @supports (--styling-hooks: '') {
6
5
  :host([data-render-mode="shadow"]) .slds-modal__content_headless {
7
6
  border-start-end-radius: var(--slds-c-modalbody-radius-border, var(--slds-g-radius-border-2));
8
7
  border-start-start-radius: var(--slds-c-modalbody-radius-border, var(--slds-g-radius-border-2));
@@ -31,6 +30,7 @@
31
30
  /* Sizes: Full */
32
31
 
33
32
  /* Original SLDS implementation was desktop-first. This is now mobile-first for <=480px */
33
+
34
34
  @media (width <= 30em) {
35
35
  :host([data-render-mode="shadow"][data-size='full']) [part='modal-body'] {
36
36
  grid-area: content;
@@ -58,4 +58,3 @@
58
58
  display: contents;
59
59
  }
60
60
  }
61
- }
@@ -1 +1,7 @@
1
1
  @import './modalBody.lbc.native.css';
2
+
3
+ /* Styles required for Multi-Column Sorting Modal in datatable */
4
+ :host(.modal_headerless) .slds-modal__content_headless {
5
+ border-top-right-radius: unset;
6
+ border-top-left-radius: unset;
7
+ }
@@ -2,7 +2,6 @@
2
2
  /* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
3
3
  Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
4
4
 
5
- @supports (--styling-hooks: '') {
6
5
  :host([data-render-mode="shadow"]) .slds-modal__footer {
7
6
 
8
7
  /* stylelint-disable sds-stylelint-plugin/styling-hooks-deprecated */
@@ -41,6 +40,7 @@
41
40
  }
42
41
 
43
42
  /* TODO W-12674349: Replace with visibility utility classes when available */
43
+
44
44
  :host([data-render-mode="shadow"]) .slds-hide {
45
45
  display: none !important;
46
46
  }
@@ -48,6 +48,7 @@
48
48
  /* Sizes: Full */
49
49
 
50
50
  /* Original SLDS implementation was desktop-first. This is now mobile-first for <=480px */
51
+
51
52
  @media (width <= 30em) {
52
53
  :host([data-render-mode="shadow"][data-size='full']) [part='modal-footer'] {
53
54
  grid-area: footer;
@@ -76,4 +77,3 @@
76
77
  :host([data-render-mode="shadow"]) .slds-modal__footer .slds-button + .slds-button {
77
78
  margin-left: var(--slds-g-spacing-2);
78
79
  }
79
- }
@@ -1,6 +1,5 @@
1
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';
@@ -82,25 +81,6 @@ export default class LightningModalFooter extends LightningShadowBaseClass {
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 LightningShadowBaseClass {
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
  },
@@ -2,7 +2,6 @@
2
2
  /* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
3
3
  Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
4
4
 
5
- @supports (--styling-hooks: '') {
6
5
  /* stylelint-disable sds-stylelint-plugin/styling-hooks-deprecated */
7
6
 
8
7
  /* stylelint-disable sds-stylelint-plugin/styling-hooks-pattern */
@@ -51,6 +50,7 @@
51
50
  /* Sizes: Full */
52
51
 
53
52
  /* Original SLDS implementation was desktop-first. This is now mobile-first for <=480px */
53
+
54
54
  @media (width <= 30em) {
55
55
  :host([data-render-mode="shadow"][data-size='full']) [part='modal-header'] {
56
56
  grid-area: header;
@@ -74,4 +74,3 @@
74
74
  display: contents;
75
75
  }
76
76
  }
77
- }
@@ -1,13 +1,25 @@
1
- <template>
2
- <div class="slds-modal__header" part="modal-header">
1
+ <template>
2
+ <div class="slds-modal__header slds-text-align_left" part="modal-header"
3
+ onprivatemodalheaderdisableclose={handlePrivateModalHeaderDisableClose}
4
+ >
3
5
  <template if:true={label}>
4
6
  <h1
5
- id="modal-label"
6
7
  class="slds-modal__title slds-hyphenate"
7
- tabindex="-1"
8
8
  data-label
9
+ id="modal-label"
10
+ tabindex="-1"
9
11
  >{label}</h1>
10
12
  </template>
13
+ <lightning-button-icon
14
+ alternative-text={headerCloseButtonAltText}
15
+ class="slds-modal__close"
16
+ data-header-close-button
17
+ disabled={disableCloseButton}
18
+ icon-name="utility:close"
19
+ onclick={handleModalHeaderClose}
20
+ size="large"
21
+ variant="bare"
22
+ ></lightning-button-icon>
11
23
  <slot
12
24
  data-default-slot
13
25
  onslotchange={handleDefaultSlotChange}