lightning-base-components 1.21.6-alpha → 1.21.8-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 (369) hide show
  1. package/metadata/raptor.json +45 -4
  2. package/package.json +125 -3
  3. package/scopedImports/@salesforce-label-LightningColorPicker.a11yDefaultText.js +1 -0
  4. package/scopedImports/@salesforce-label-LightningDatatable.multiColumnSortingToast.js +1 -0
  5. package/scopedImports/@salesforce-label-LightningDatatable.sortingMenuColumns.js +1 -0
  6. package/scopedImports/@salesforce-label-LightningDatatable.sortingMenuMultiColumnSort.js +1 -0
  7. package/scopedImports/@salesforce-label-LightningDatatable.sortingMenuRows.js +1 -0
  8. package/scopedImports/@salesforce-label-LightningDatatable.sortingMenuTooltip.js +1 -0
  9. package/scopedImports/@salesforce-label-LightningForm.dependentFieldsListHeading.js +1 -1
  10. package/scopedImports/@salesforce-label-LightningLookup.advancedSearchMobile.js +1 -1
  11. package/scopedImports/@salesforce-label-LightningLookup.modalTitle.js +1 -0
  12. package/scopedImports/@salesforce-label-LightningMultiColumnSortingModal.addRule.js +1 -0
  13. package/scopedImports/@salesforce-label-LightningMultiColumnSortingModal.applyButton.js +1 -0
  14. package/scopedImports/@salesforce-label-LightningMultiColumnSortingModal.cancelButton.js +1 -0
  15. package/scopedImports/@salesforce-label-LightningMultiColumnSortingModal.clearButton.js +1 -0
  16. package/scopedImports/@salesforce-label-LightningMultiColumnSortingModal.duplicateValueValidation.js +1 -0
  17. package/scopedImports/@salesforce-label-LightningMultiColumnSortingModal.firstRuleHeading.js +1 -0
  18. package/scopedImports/@salesforce-label-LightningMultiColumnSortingModal.modalTitle.js +1 -0
  19. package/scopedImports/@salesforce-label-LightningMultiColumnSortingModal.otherRuleHeading.js +1 -0
  20. package/scopedImports/@salesforce-label-LightningMultiColumnSortingModal.ruleLimit.js +1 -0
  21. package/scopedImports/@salesforce-label-LightningMultiColumnSortingModal.ruleLimitReached.js +1 -0
  22. package/scopedImports/@salesforce-label-LightningPrimitiveColumnSorter.ascending.js +1 -0
  23. package/scopedImports/@salesforce-label-LightningPrimitiveColumnSorter.descending.js +1 -0
  24. package/scopedImports/@salesforce-label-LightningPrimitiveColumnSorter.dropdownPlaceholder.js +1 -0
  25. package/scopedImports/@salesforce-label-LightningPrimitiveColumnSorter.missingValueValidation.js +1 -0
  26. package/scopedImports/@salesforce-label-LightningPrimitiveColumnSorter.moveDownTooltip.js +1 -0
  27. package/scopedImports/@salesforce-label-LightningPrimitiveColumnSorter.moveUpTooltip.js +1 -0
  28. package/scopedImports/@salesforce-label-LightningProgressIndicator.pathCurrentStage.js +1 -0
  29. package/scopedImports/@salesforce-label-LightningRecordPicker.emptyStateNoResultText.js +1 -0
  30. package/scopedImports/@salesforce-label-LightningRecordPicker.messageWhenSearchTermTooShort.js +1 -0
  31. package/scopedImports/@salesforce-label-LightningRecordPicker.resultCountDescriptionForMoreThanOneHundredRecords.js +1 -0
  32. package/scopedImports/@salesforce-label-LightningRecordPicker.resultCountDescriptionForMultipleRecords.js +1 -0
  33. package/scopedImports/@salesforce-label-LightningRecordPicker.resultCountDescriptionForOneRecord.js +1 -0
  34. package/scopedImports/@salesforce-label-LightningRecordPicker.resultsLoading.js +1 -0
  35. package/scopedImports/@salesforce-label-LightningRecordPicker.searchInputHelp.js +1 -0
  36. package/src/lightning/accordion/accordion.js +21 -14
  37. package/src/lightning/accordionSection/button.slds.css +16 -15
  38. package/src/lightning/alert/alert.js +10 -8
  39. package/src/lightning/ariaObserver/ariaObserver.js +19 -5
  40. package/src/lightning/baseCombobox/base-combobox.slds.css +1 -1
  41. package/src/lightning/baseCombobox/baseCombobox.html +2 -1
  42. package/src/lightning/baseCombobox/baseCombobox.js +21 -0
  43. package/src/lightning/baseCombobox/input-text.slds.css +5 -5
  44. package/src/lightning/breadcrumbs/breadcrumbs.slds.css +1 -1
  45. package/src/lightning/button/button.js +5 -0
  46. package/src/lightning/button/button.slds.css +16 -15
  47. package/src/lightning/buttonIcon/__docs__/buttonIcon.md +4 -0
  48. package/src/lightning/buttonIcon/__examples__/basic/basic.html +17 -1
  49. package/src/lightning/buttonIcon/button-icon.slds.css +41 -25
  50. package/src/lightning/buttonIconStateful/button-icon-stateful.slds.css +33 -229
  51. package/src/lightning/buttonIconStateful/button-icon.slds.css +41 -25
  52. package/src/lightning/buttonIconStateful/button.slds.css +16 -15
  53. package/src/lightning/buttonMenu/button-icon.slds.css +41 -25
  54. package/src/lightning/buttonMenu/button-menu.slds.css +41 -15
  55. package/src/lightning/buttonMenu/button.slds.css +16 -15
  56. package/src/lightning/buttonMenu/buttonMenu.css +1 -1
  57. package/src/lightning/buttonMenu/buttonMenu.html +1 -1
  58. package/src/lightning/buttonMenu/buttonMenu.js +44 -4
  59. package/src/lightning/buttonStateful/button-stateful.slds.css +1 -4
  60. package/src/lightning/buttonStateful/button.slds.css +16 -15
  61. package/src/lightning/calendar/calendar.html +3 -4
  62. package/src/lightning/card/card.html +1 -1
  63. package/src/lightning/colorPickerCustom/colorPickerCustom.html +1 -1
  64. package/src/lightning/colorPickerCustom/colorPickerCustom.js +0 -9
  65. package/src/lightning/colorPickerCustom/input-text.slds.css +5 -5
  66. package/src/lightning/combobox/form-element.slds.css +1 -0
  67. package/src/lightning/confirm/confirm.js +10 -8
  68. package/src/lightning/datatable/__docs__/datatable.md +0 -3
  69. package/src/lightning/datatable/__examples__disabled/customComponentPopupTableWrapper/README.md +17 -0
  70. package/src/lightning/datatable/__examples__disabled/customComponentPopupTableWrapper/customComponentPopupTableWrapper.html +11 -0
  71. package/src/lightning/datatable/__examples__disabled/customComponentPopupTableWrapper/customComponentPopupTableWrapper.js +25 -0
  72. package/src/lightning/datatable/__examples__disabled/customComponentPopupTableWrapper/generateData.js +15 -0
  73. package/src/lightning/datatable/__examples__disabled/myCustomTypePopupTable/customInput.html +4 -0
  74. package/src/lightning/datatable/__examples__disabled/myCustomTypePopupTable/myCustomTypePopupTable.js +17 -0
  75. package/src/lightning/datatable/__examples__disabled/myCustomTypePopupTable/nestedSimpleComponentParent.html +7 -0
  76. package/src/lightning/datatable/__examples__disabled/simpleComponentPopupNested/simpleComponentPopupNested.html +31 -0
  77. package/src/lightning/datatable/__examples__disabled/simpleComponentPopupNested/simpleComponentPopupNested.js +36 -0
  78. package/src/lightning/datatable/columnWidthManager.js +19 -16
  79. package/src/lightning/datatable/columns.js +74 -25
  80. package/src/lightning/datatable/datatable.js +493 -133
  81. package/src/lightning/datatable/errors.js +1 -1
  82. package/src/lightning/datatable/indexes.js +32 -19
  83. package/src/lightning/datatable/infiniteLoading.js +6 -5
  84. package/src/lightning/datatable/inlineEdit.js +45 -59
  85. package/src/lightning/datatable/keyboard.js +571 -160
  86. package/src/lightning/datatable/renderManager.js +12 -9
  87. package/src/lightning/datatable/rowLevelActions.js +5 -14
  88. package/src/lightning/datatable/rowSelection.js +36 -17
  89. package/src/lightning/datatable/rowSelectionShared.js +1 -0
  90. package/src/lightning/datatable/rows.js +132 -24
  91. package/src/lightning/datatable/rowsInlining.js +473 -0
  92. package/src/lightning/datatable/sort.js +8 -4
  93. package/src/lightning/datatable/state.js +12 -4
  94. package/src/lightning/datatable/templates/div/div.html +807 -91
  95. package/src/lightning/datatable/templates/div/div.lbc.synthetic.css +29 -3
  96. package/src/lightning/datatable/templates/table/table.css +29 -1
  97. package/src/lightning/datatable/templates/table/table.html +786 -87
  98. package/src/lightning/datatable/utils.js +39 -0
  99. package/src/lightning/datatable/virtualization.js +44 -19
  100. package/src/lightning/datatable/wrapText.js +7 -10
  101. package/src/lightning/datepicker/datepicker.html +3 -1
  102. package/src/lightning/datepicker/datepicker.js +31 -1
  103. package/src/lightning/datepicker/form-element.slds.css +1 -0
  104. package/src/lightning/datepicker/input-text.slds.css +5 -5
  105. package/src/lightning/datetimepicker/datetimepicker.html +7 -1
  106. package/src/lightning/datetimepicker/datetimepicker.js +30 -2
  107. package/src/lightning/datetimepicker/form-element.slds.css +1 -0
  108. package/src/lightning/datetimepicker/input-text.slds.css +5 -5
  109. package/src/lightning/dualListbox/form-element.slds.css +1 -0
  110. package/src/lightning/focusTrap/focusTrap.css +7 -0
  111. package/src/lightning/groupedCombobox/form-element.slds.css +1 -0
  112. package/src/lightning/groupedCombobox/input-text.slds.css +5 -5
  113. package/src/lightning/helptext/button-icon.slds.css +41 -25
  114. package/src/lightning/helptext/form-element.slds.css +1 -0
  115. package/src/lightning/icon/__docs__/icon.md +0 -2
  116. package/src/lightning/iconSvgTemplates/buildTemplates/standard/account_score.html +8 -0
  117. package/src/lightning/iconSvgTemplates/buildTemplates/standard/aggregate.html +8 -0
  118. package/src/lightning/iconSvgTemplates/buildTemplates/standard/app_form_participant.html +11 -0
  119. package/src/lightning/iconSvgTemplates/buildTemplates/standard/app_form_product_participant.html +12 -0
  120. package/src/lightning/iconSvgTemplates/buildTemplates/standard/cost_model.html +7 -0
  121. package/src/lightning/iconSvgTemplates/buildTemplates/standard/labels.html +8 -0
  122. package/src/lightning/iconSvgTemplates/buildTemplates/standard/list_fee.html +7 -0
  123. package/src/lightning/iconSvgTemplates/buildTemplates/standard/list_rate.html +7 -0
  124. package/src/lightning/iconSvgTemplates/buildTemplates/standard/party_profile.html +8 -0
  125. package/src/lightning/iconSvgTemplates/buildTemplates/standard/path_experiment.html +7 -0
  126. package/src/lightning/iconSvgTemplates/buildTemplates/standard/people_score.html +8 -0
  127. package/src/lightning/iconSvgTemplates/buildTemplates/standard/price_adjustment_schedule.html +8 -0
  128. package/src/lightning/iconSvgTemplates/buildTemplates/standard/price_adjustment_tier.html +7 -0
  129. package/src/lightning/iconSvgTemplates/buildTemplates/standard/program_cohort.html +7 -0
  130. package/src/lightning/iconSvgTemplates/buildTemplates/standard/program_cohort_member.html +7 -0
  131. package/src/lightning/iconSvgTemplates/buildTemplates/standard/rate_adjustment.html +7 -0
  132. package/src/lightning/iconSvgTemplates/buildTemplates/standard/record_consent.html +7 -0
  133. package/src/lightning/iconSvgTemplates/buildTemplates/standard/whatsapp.html +7 -0
  134. package/src/lightning/iconSvgTemplates/buildTemplates/templates.js +40 -1
  135. package/src/lightning/iconSvgTemplates/buildTemplates/utility/aggregate.html +8 -0
  136. package/src/lightning/iconSvgTemplates/buildTemplates/utility/array.html +7 -0
  137. package/src/lightning/iconSvgTemplates/buildTemplates/utility/bottom_group_alignment.html +7 -0
  138. package/src/lightning/iconSvgTemplates/buildTemplates/utility/cant_sync.html +7 -0
  139. package/src/lightning/iconSvgTemplates/buildTemplates/utility/center_group_alignment.html +8 -0
  140. package/src/lightning/iconSvgTemplates/buildTemplates/utility/columns.html +7 -0
  141. package/src/lightning/iconSvgTemplates/buildTemplates/utility/fully_synced.html +8 -0
  142. package/src/lightning/iconSvgTemplates/buildTemplates/utility/inner_join.html +7 -0
  143. package/src/lightning/iconSvgTemplates/buildTemplates/utility/join.html +8 -0
  144. package/src/lightning/iconSvgTemplates/buildTemplates/utility/left_join.html +14 -0
  145. package/src/lightning/iconSvgTemplates/buildTemplates/utility/macros.html +2 -2
  146. package/src/lightning/iconSvgTemplates/buildTemplates/utility/not_in_sync.html +7 -0
  147. package/src/lightning/iconSvgTemplates/buildTemplates/utility/not_saved.html +9 -0
  148. package/src/lightning/iconSvgTemplates/buildTemplates/utility/outer_join.html +7 -0
  149. package/src/lightning/iconSvgTemplates/buildTemplates/utility/path_experiment.html +7 -0
  150. package/src/lightning/iconSvgTemplates/buildTemplates/utility/program_cohort.html +7 -0
  151. package/src/lightning/iconSvgTemplates/buildTemplates/utility/program_cohort_member.html +7 -0
  152. package/src/lightning/iconSvgTemplates/buildTemplates/utility/record_consent.html +7 -0
  153. package/src/lightning/iconSvgTemplates/buildTemplates/utility/right_join.html +7 -0
  154. package/src/lightning/iconSvgTemplates/buildTemplates/utility/skill.html +8 -0
  155. package/src/lightning/iconSvgTemplates/buildTemplates/utility/sync_in_progress.html +7 -0
  156. package/src/lightning/iconSvgTemplates/buildTemplates/utility/top_group_alignment.html +7 -0
  157. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/account_score.html +8 -0
  158. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/aggregate.html +8 -0
  159. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/app_form_participant.html +11 -0
  160. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/app_form_product_participant.html +12 -0
  161. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/cost_model.html +7 -0
  162. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/labels.html +8 -0
  163. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/list_fee.html +7 -0
  164. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/list_rate.html +7 -0
  165. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/party_profile.html +8 -0
  166. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/path_experiment.html +7 -0
  167. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/people_score.html +8 -0
  168. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/price_adjustment_schedule.html +8 -0
  169. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/price_adjustment_tier.html +7 -0
  170. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/program_cohort.html +7 -0
  171. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/program_cohort_member.html +7 -0
  172. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/rate_adjustment.html +7 -0
  173. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/record_consent.html +7 -0
  174. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/whatsapp.html +7 -0
  175. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/templates.js +40 -1
  176. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/aggregate.html +8 -0
  177. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/array.html +7 -0
  178. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/bottom_group_alignment.html +7 -0
  179. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/cant_sync.html +7 -0
  180. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/center_group_alignment.html +8 -0
  181. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/columns.html +7 -0
  182. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/fully_synced.html +8 -0
  183. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/inner_join.html +7 -0
  184. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/join.html +8 -0
  185. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/left_join.html +14 -0
  186. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/macros.html +2 -2
  187. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/not_in_sync.html +7 -0
  188. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/not_saved.html +9 -0
  189. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/outer_join.html +7 -0
  190. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/path_experiment.html +7 -0
  191. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/program_cohort.html +7 -0
  192. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/program_cohort_member.html +7 -0
  193. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/record_consent.html +7 -0
  194. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/right_join.html +7 -0
  195. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/skill.html +8 -0
  196. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/sync_in_progress.html +7 -0
  197. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/top_group_alignment.html +7 -0
  198. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/account_score.html +8 -0
  199. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/aggregate.html +8 -0
  200. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/app_form_participant.html +11 -0
  201. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/app_form_product_participant.html +12 -0
  202. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/cost_model.html +7 -0
  203. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/labels.html +8 -0
  204. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/list_fee.html +7 -0
  205. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/list_rate.html +7 -0
  206. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/party_profile.html +8 -0
  207. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/path_experiment.html +7 -0
  208. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/people_score.html +8 -0
  209. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/price_adjustment_schedule.html +8 -0
  210. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/price_adjustment_tier.html +7 -0
  211. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/program_cohort.html +7 -0
  212. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/program_cohort_member.html +7 -0
  213. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/rate_adjustment.html +7 -0
  214. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/record_consent.html +7 -0
  215. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/whatsapp.html +7 -0
  216. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/templates.js +19 -1
  217. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/account_score.html +8 -0
  218. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/aggregate.html +8 -0
  219. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/app_form_participant.html +11 -0
  220. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/app_form_product_participant.html +12 -0
  221. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/cost_model.html +7 -0
  222. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/labels.html +8 -0
  223. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/list_fee.html +7 -0
  224. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/list_rate.html +7 -0
  225. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/party_profile.html +8 -0
  226. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/path_experiment.html +7 -0
  227. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/people_score.html +8 -0
  228. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/price_adjustment_schedule.html +8 -0
  229. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/price_adjustment_tier.html +7 -0
  230. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/program_cohort.html +7 -0
  231. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/program_cohort_member.html +7 -0
  232. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/rate_adjustment.html +7 -0
  233. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/record_consent.html +7 -0
  234. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/whatsapp.html +7 -0
  235. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/templates.js +19 -1
  236. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/templates.js +22 -1
  237. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/aggregate.html +8 -0
  238. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/array.html +7 -0
  239. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/bottom_group_alignment.html +7 -0
  240. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/cant_sync.html +7 -0
  241. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/center_group_alignment.html +8 -0
  242. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/columns.html +7 -0
  243. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/fully_synced.html +8 -0
  244. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/inner_join.html +7 -0
  245. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/join.html +8 -0
  246. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/left_join.html +14 -0
  247. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/macros.html +2 -2
  248. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/not_in_sync.html +7 -0
  249. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/not_saved.html +9 -0
  250. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/outer_join.html +7 -0
  251. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/path_experiment.html +7 -0
  252. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/program_cohort.html +7 -0
  253. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/program_cohort_member.html +7 -0
  254. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/record_consent.html +7 -0
  255. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/right_join.html +7 -0
  256. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/skill.html +8 -0
  257. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/sync_in_progress.html +7 -0
  258. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/top_group_alignment.html +7 -0
  259. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/templates.js +22 -1
  260. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/aggregate.html +8 -0
  261. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/array.html +7 -0
  262. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/bottom_group_alignment.html +7 -0
  263. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/cant_sync.html +7 -0
  264. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/center_group_alignment.html +8 -0
  265. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/columns.html +7 -0
  266. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/fully_synced.html +8 -0
  267. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/inner_join.html +7 -0
  268. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/join.html +8 -0
  269. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/left_join.html +14 -0
  270. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/macros.html +2 -2
  271. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/not_in_sync.html +7 -0
  272. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/not_saved.html +9 -0
  273. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/outer_join.html +7 -0
  274. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/path_experiment.html +7 -0
  275. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/program_cohort.html +7 -0
  276. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/program_cohort_member.html +7 -0
  277. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/record_consent.html +7 -0
  278. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/right_join.html +7 -0
  279. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/skill.html +8 -0
  280. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/sync_in_progress.html +7 -0
  281. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/top_group_alignment.html +7 -0
  282. package/src/lightning/iconUtils/iconColors.js +1 -1
  283. package/src/lightning/input/form-element.slds.css +1 -0
  284. package/src/lightning/input/input.html +16 -2
  285. package/src/lightning/input/input.js +91 -3
  286. package/src/lightning/input/input.js-meta.xml +3 -0
  287. package/src/lightning/inputAddress/addressFormat.js +25 -11
  288. package/src/lightning/inputAddress/fieldsLayout.js +3 -0
  289. package/src/lightning/inputAddress/form-element.slds.css +1 -0
  290. package/src/lightning/inputAddress/input-text.slds.css +5 -5
  291. package/src/lightning/inputAddress/inputAddress.html +1 -1
  292. package/src/lightning/inputAddress/inputAddress.js +27 -11
  293. package/src/lightning/inputLocation/form-element.slds.css +1 -0
  294. package/src/lightning/inputLocation/input-text.slds.css +5 -5
  295. package/src/lightning/inputName/form-element.slds.css +1 -0
  296. package/src/lightning/inputName/input-text.slds.css +5 -5
  297. package/src/lightning/internationalizationLibrary/address/AddressFormat.js +2 -0
  298. package/src/lightning/layout/__docs__/layout.md +0 -2
  299. package/src/lightning/lookupAddress/form-element.slds.css +1 -0
  300. package/src/lightning/menuItem/menu-item.slds.css +3 -1
  301. package/src/lightning/modal/__modalUtils__/modalContainerTestConstants.js +7 -3
  302. package/src/lightning/modal/__modalUtils__/modalContainerTestMethods.js +18 -11
  303. package/src/lightning/modal/__modalUtils__/modalContainerTestMockData.js +1 -1
  304. package/src/lightning/modalBase/modalBase.css +4 -0
  305. package/src/lightning/modalBase/modalBase.html +16 -21
  306. package/src/lightning/modalBase/modalBase.js +46 -65
  307. package/src/lightning/modalHeader/modalHeader.html +3 -15
  308. package/src/lightning/modalHeader/modalHeader.js +14 -61
  309. package/src/lightning/multiColumnSortingModal/multiColumnSortingModal.css +14 -0
  310. package/src/lightning/multiColumnSortingModal/multiColumnSortingModal.html +55 -0
  311. package/src/lightning/multiColumnSortingModal/multiColumnSortingModal.js +430 -0
  312. package/src/lightning/multiColumnSortingModal/multiColumnSortingModal.js-meta.xml +4 -0
  313. package/src/lightning/overlayManager/overlayManager.js +16 -0
  314. package/src/lightning/pill/pill.js +19 -13
  315. package/src/lightning/pillContainer/button.slds.css +16 -15
  316. package/src/lightning/pillContainer/pillContainer.js +2 -1
  317. package/src/lightning/pillContainer/standardPillContainer.html +6 -2
  318. package/src/lightning/positionLibrary/direction.js +19 -0
  319. package/src/lightning/primitiveBubble/primitiveBubble.js +7 -0
  320. package/src/lightning/primitiveColorpickerButton/primitiveColorpickerButton.html +2 -2
  321. package/src/lightning/primitiveColorpickerButton/primitiveColorpickerButton.js +8 -0
  322. package/src/lightning/primitiveColumnSorter/primitiveColumnSorter.css +34 -0
  323. package/src/lightning/primitiveColumnSorter/primitiveColumnSorter.html +60 -0
  324. package/src/lightning/primitiveColumnSorter/primitiveColumnSorter.js +107 -0
  325. package/src/lightning/primitiveHeaderFactory/primitiveHeaderFactory.js +36 -3
  326. package/src/lightning/primitiveHeaderFactory/sortingMenuHeader.css +5 -0
  327. package/src/lightning/primitiveHeaderFactory/sortingMenuHeader.html +9 -0
  328. package/src/lightning/primitiveInputCheckbox/form-element.slds.css +1 -0
  329. package/src/lightning/primitiveInputCheckbox/input-checkbox.slds.css +3 -3
  330. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.html +1 -1
  331. package/src/lightning/primitiveInputCheckboxButton/form-element.slds.css +1 -0
  332. package/src/lightning/primitiveInputCheckboxButton/input-checkbox-button.slds.css +6 -5
  333. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.html +1 -1
  334. package/src/lightning/primitiveInputColor/form-element.slds.css +1 -0
  335. package/src/lightning/primitiveInputColor/input-text.slds.css +5 -5
  336. package/src/lightning/primitiveInputColor/primitiveInputColor.html +5 -2
  337. package/src/lightning/primitiveInputColor/primitiveInputColor.js +2 -0
  338. package/src/lightning/primitiveInputFile/button.slds.css +16 -15
  339. package/src/lightning/primitiveInputFile/form-element.slds.css +1 -0
  340. package/src/lightning/primitiveInputFile/primitiveInputFile.html +1 -1
  341. package/src/lightning/primitiveInputRadio/primitiveInputRadio.html +1 -1
  342. package/src/lightning/primitiveInputSimple/form-element.slds.css +1 -0
  343. package/src/lightning/primitiveInputSimple/input-text.slds.css +5 -5
  344. package/src/lightning/primitiveInputSimple/primitiveInputSimple.html +3 -2
  345. package/src/lightning/primitiveInputSimple/primitiveInputSimple.js +15 -0
  346. package/src/lightning/primitiveInputToggle/form-element.slds.css +1 -0
  347. package/src/lightning/primitiveInputToggle/input-toggle.slds.css +16 -14
  348. package/src/lightning/primitiveInputToggle/primitiveInputToggle.html +1 -1
  349. package/src/lightning/progressIndicator/path.html +8 -2
  350. package/src/lightning/progressIndicator/progressIndicator.js +26 -2
  351. package/src/lightning/progressRing/progress-ring.slds.css +1 -1
  352. package/src/lightning/progressStep/progressStep.js +2 -1
  353. package/src/lightning/prompt/prompt.js +11 -9
  354. package/src/lightning/radioGroup/form-element.slds.css +1 -0
  355. package/src/lightning/radioGroup/input-radio-group.slds.css +4 -10
  356. package/src/lightning/select/form-element.slds.css +1 -0
  357. package/src/lightning/select/select.js +89 -7
  358. package/src/lightning/tabBar/tab-bar.slds.css +11 -0
  359. package/src/lightning/tabset/tabset.slds.css +1 -1
  360. package/src/lightning/textarea/form-element.slds.css +1 -0
  361. package/src/lightning/textarea/textarea.html +1 -0
  362. package/src/lightning/textarea/textarea.slds.css +2 -2
  363. package/src/lightning/timepicker/form-element.slds.css +1 -0
  364. package/src/lightning/timepicker/timepicker.html +4 -1
  365. package/src/lightning/timepicker/timepicker.js +3 -0
  366. package/src/lightning/toast/button-icon.slds.css +41 -25
  367. package/src/lightning/tooltipLibrary/tooltipLibrary.js +4 -15
  368. package/src/lightning/verticalNavigationOverflow/button.slds.css +16 -15
  369. package/scopedImports/@salesforce-label-LightningLookup.messageWhenSearchTermTooShort.js +0 -1
@@ -24,6 +24,7 @@ const CLASS_SET_PROTOTYPE = {
24
24
 
25
25
  const NON_NEGATIVE_INTEGER_REGEXP = /^\d+$/;
26
26
  const POSITIVE_INTEGER_REGEXP = /^[0-9]*[1-9][0-9]*$/;
27
+ const RENDER_MODE_INLINE_REGEXP = /\binline\b/;
27
28
  const RENDER_MODE_ROLE_BASED_REGEXP = /\brole-based\b/;
28
29
 
29
30
  /**
@@ -87,6 +88,9 @@ export function getRowDataSelector(rowKeyValue) {
87
88
  * @returns {Node} The grid container element
88
89
  */
89
90
  export function getGridContainerFromScrollerY(scrollerY) {
91
+ if (!scrollerY) {
92
+ return null;
93
+ }
90
94
  const { firstElementChild: gridContainer } = scrollerY;
91
95
  return gridContainer;
92
96
  }
@@ -131,6 +135,16 @@ export function isNonNegativeInteger(value) {
131
135
  return NON_NEGATIVE_INTEGER_REGEXP.test(value);
132
136
  }
133
137
 
138
+ /**
139
+ * Tests if render mode is inline.
140
+ *
141
+ * @param {String} renderMode The render mode to test
142
+ * @returns {Boolean} Whether the render mode is inline
143
+ */
144
+ export function isRenderModeInline(renderMode) {
145
+ return RENDER_MODE_INLINE_REGEXP.test(renderMode);
146
+ }
147
+
134
148
  /**
135
149
  * Tests if render mode is role-based.
136
150
  *
@@ -196,3 +210,28 @@ export function getScrollOffsetFromTableEnd(el) {
196
210
  el.scrollHeight - el.parentNode.scrollTop - el.parentNode.clientHeight
197
211
  );
198
212
  }
213
+
214
+ /**
215
+ * Utility to check if new data just added
216
+ * extra rows to old data by comparing hashes
217
+ *
218
+ * @param {Array} prevData - previous datatable data
219
+ * @param {Array} newData - current datatable data
220
+ * @returns {Boolean} true if new data is extension of old data
221
+ */
222
+ export function isLoadMore(prevData, newData) {
223
+ const prevLength = prevData.length;
224
+ const slicedNewData = newData.slice(0, prevLength);
225
+ return hashArray(prevData) === hashArray(slicedNewData);
226
+ }
227
+
228
+ function hashArray(value) {
229
+ const str = JSON.stringify(value);
230
+ let hash = 0;
231
+ for (let i = 0; i < str.length; i++) {
232
+ const code = str.charCodeAt(i);
233
+ hash = (hash << 5) - hash + code;
234
+ hash = hash & hash; // Convert to 32bit integer
235
+ }
236
+ return hash;
237
+ }
@@ -1,12 +1,13 @@
1
- import { escapeDoubleQuotes } from './utils';
2
-
3
1
  /**
4
- * sets an initial table height in the datatable state
2
+ * increases table height to accommodate new data
3
+ * used with infinite loading
5
4
  *
6
- * @param {Object} state - datatable state
5
+ * @param {Array} prevData - previous datatable data
6
+ * @param {Array} newData - current datatable data
7
7
  */
8
- export function resetTableHeight(state) {
9
- state.tableHeight = state.rowHeight * state.rows.length;
8
+ export function addTableHeight(state, prevData, newData) {
9
+ const extraRowCount = newData.length - prevData.length;
10
+ state.tableHeight += extraRowCount * state.rowHeight;
10
11
  }
11
12
 
12
13
  /**
@@ -16,11 +17,27 @@ export function resetTableHeight(state) {
16
17
  * @param {Object} state - datatable state
17
18
  */
18
19
  export function resetRowHeights(state) {
20
+ const { firstVisibleIndex } = state;
21
+ const firstRenderedIndex = Math.max(
22
+ firstVisibleIndex - state.bufferSize,
23
+ 0
24
+ );
25
+ const newOffsets = [0];
26
+ const firstRenderedOffset = state.offsets[firstRenderedIndex];
27
+ newOffsets[firstRenderedIndex] = firstRenderedOffset;
19
28
  state.heightCache = {};
20
- state.offsets = [0];
21
- state.offsetRanges = [];
29
+ state.offsets = newOffsets;
30
+ state.offsetRanges = [{ start: 0, end: 0 }];
31
+ if (firstRenderedIndex > 0) {
32
+ state.offsetRanges.push({
33
+ start: firstRenderedIndex,
34
+ end: firstRenderedIndex,
35
+ });
36
+ }
22
37
  if (state.virtualize && state.rows.length) {
23
- resetTableHeight(state);
38
+ const remainingRows = state.rows.length - firstRenderedIndex;
39
+ const remainingRowsHeight = state.rowHeight * remainingRows;
40
+ state.tableHeight = firstRenderedOffset + remainingRowsHeight;
24
41
  }
25
42
  }
26
43
 
@@ -44,12 +61,13 @@ export function handleVariableRowHeights(template, state, renderedRows) {
44
61
  currentRange.start
45
62
  );
46
63
 
47
- renderedRows.forEach((row) => {
48
- if (!state.heightCache[row.key]) {
49
- // need to get row actual element so we can find its height
50
- const rowElement = template.querySelector(
51
- `[data-row-key-value="${escapeDoubleQuotes(row.key)}"]`
52
- );
64
+ const rowElements = template.querySelectorAll(
65
+ '[data-rowgroup-body] [role="row"]'
66
+ );
67
+ for (let i = 0; i < renderedRows.length; i++) {
68
+ const row = renderedRows[i];
69
+ if (!state.heightCache[row.key] && state.heightCache[row.key] !== 0) {
70
+ const rowElement = rowElements[i];
53
71
  if (rowElement) {
54
72
  // first rendered row needs height increased by 1 to account for missing border
55
73
  let height = rowElement.getBoundingClientRect().height;
@@ -66,7 +84,7 @@ export function handleVariableRowHeights(template, state, renderedRows) {
66
84
  adjustFromIndex = row.rowIndex + 2;
67
85
  }
68
86
  }
69
- });
87
+ }
70
88
  state.tableHeight += adjustmentValue;
71
89
  updateOffsetRanges(
72
90
  state,
@@ -86,7 +104,7 @@ export function handleVariableRowHeights(template, state, renderedRows) {
86
104
  export function findFirstVisibleIndex(state, scrollTop) {
87
105
  const { offsetRanges, offsets, rowHeight, fixedHeight, virtualize } = state;
88
106
  if (virtualize && fixedHeight) {
89
- return scrollTop / rowHeight;
107
+ return Math.floor(scrollTop / rowHeight);
90
108
  }
91
109
  let start = 0;
92
110
  let end = offsetRanges.length - 1;
@@ -310,7 +328,14 @@ function updateVirtualizeStyles(template, state, renderedRows) {
310
328
  state.offsets[state.firstVisibleIndex] + state.firstRowOffset;
311
329
 
312
330
  // update top of rendered rows based on offsets
313
- renderedRows.forEach((row) => {
314
- row.style = `position:absolute;top:${state.offsets[row.rowIndex]}px;`;
331
+ // all but first rendered row will need to subtract
332
+ // 1 from offset to account for missing top border
333
+ // on first rendered row
334
+ renderedRows.forEach((row, index) => {
335
+ let top = state.offsets[row.rowIndex] - 1;
336
+ if (!index) {
337
+ top = top + 1; // reset first rendered row to offset in state
338
+ }
339
+ row.style = `position:absolute;top:${top}px;`;
315
340
  });
316
341
  }
@@ -2,6 +2,7 @@ import labelClipText from '@salesforce/label/LightningDatatable.clipText';
2
2
  import labelWrapText from '@salesforce/label/LightningDatatable.wrapText';
3
3
  import { normalizeBoolean } from 'lightning/utilsPrivate';
4
4
  import { getStateColumnIndex } from './columns';
5
+ import { updateCell } from './rows';
5
6
  import { normalizeNumberAttribute } from './utils';
6
7
  import { getDefaultState } from './state';
7
8
 
@@ -50,6 +51,7 @@ export function setWrapTextMaxLines(state, value) {
50
51
  'positive',
51
52
  undefined
52
53
  );
54
+ state.shouldResetHeights = true;
53
55
  }
54
56
 
55
57
  /**
@@ -60,15 +62,10 @@ export function setWrapTextMaxLines(state, value) {
60
62
  * @param {Number} colIndex The column index to update
61
63
  * @param {String} colKeyValue The column key value to look up wrap text configuration
62
64
  */
63
- function updateWrapTextAndMaxLinesValuesInCells(state, colIndex, colKeyValue) {
65
+ function updateWrapTextAndMaxLinesValuesInCells(state, colIndex) {
64
66
  const { rows } = state;
65
- for (let i = 0, { length } = rows; i < length; i += 1) {
66
- const row = rows[i];
67
- const cell = row.cells[colIndex];
68
- cell.wrapText = state.wrapText[colKeyValue];
69
- cell.wrapTextMaxLines = cell.wrapText
70
- ? state.wrapTextMaxLines
71
- : undefined;
67
+ for (let i = 0; i < rows.length; i += 1) {
68
+ updateCell(state, i, colIndex);
72
69
  }
73
70
  }
74
71
 
@@ -149,7 +146,7 @@ function updateSelectedOptionInHeaderActions(state, colKeyValue) {
149
146
  const col = columns[colIndex];
150
147
  const { internalActions } = col.actions;
151
148
 
152
- for (let i = 0, { length } = internalActions; i < length; i += 1) {
149
+ for (let i = 0; i < internalActions.length; i += 1) {
153
150
  const action = internalActions[i];
154
151
  const { name } = action;
155
152
  if (name === 'wrapText') {
@@ -159,7 +156,7 @@ function updateSelectedOptionInHeaderActions(state, colKeyValue) {
159
156
  }
160
157
  }
161
158
 
162
- updateWrapTextAndMaxLinesValuesInCells(state, colIndex, colKeyValue);
159
+ updateWrapTextAndMaxLinesValuesInCells(state, colIndex);
163
160
 
164
161
  // Force a refresh on this column, because the wrapText checked value changed.
165
162
  col.actions = Object.assign({}, col.actions);
@@ -17,9 +17,11 @@
17
17
  part="input"
18
18
  name={name}
19
19
  value={displayValue}
20
+ accesskey={accessKey}
20
21
  placeholder={placeholder}
21
22
  aria-invalid={computedAriaInvalid}
22
23
  aria-label={ariaLabel}
24
+ aria-disabled={ariaDisabled}
23
25
  required={required}
24
26
  readonly={readOnly}
25
27
  disabled={disabled}
@@ -57,7 +59,7 @@
57
59
  </div>
58
60
 
59
61
  <template if:true={errorMessage}>
60
- <div id="error-message" data-error-message class={computedClass}>{errorMessage}</div>
62
+ <div id="error-message" data-error-message class={computedClass} aria-live="polite">{errorMessage}</div>
61
63
  </template>
62
64
 
63
65
 
@@ -55,7 +55,9 @@ const i18n = {
55
55
  };
56
56
 
57
57
  const ARIA_CONTROLS = 'aria-controls';
58
+ const ARIA_DETAILS = 'aria-details';
58
59
  const ARIA_LABEL = 'aria-label';
60
+ const ARIA_DISABLED = 'aria-disabled';
59
61
  const ARIA_LABELLEDBY = 'aria-labelledby';
60
62
  const ARIA_DESCRIBEDBY = 'aria-describedby';
61
63
  const ARIA_INVALID = 'aria-invalid';
@@ -75,6 +77,7 @@ export default class LightningDatePicker extends LightningShadowBaseClass {
75
77
  @track _errorMessage = '';
76
78
  @track _fieldLevelHelp;
77
79
  @track _variant;
80
+ @api accessKey;
78
81
 
79
82
  _min;
80
83
  _max;
@@ -209,8 +212,19 @@ export default class LightningDatePicker extends LightningShadowBaseClass {
209
212
  this.synchronizeA11y();
210
213
  }
211
214
 
215
+ @api
216
+ get ariaDisabled() {
217
+ return this._ariaDisabled;
218
+ }
219
+
220
+ set ariaDisabled(val) {
221
+ this._ariaDisabled = val;
222
+ this.synchronizeA11y();
223
+ }
224
+
212
225
  _ariaLabelledBy;
213
226
  _ariaControls;
227
+ _ariaDetails;
214
228
  _ariaDescribedBy = [];
215
229
 
216
230
  set ariaLabelledByElement(el) {
@@ -245,6 +259,22 @@ export default class LightningDatePicker extends LightningShadowBaseClass {
245
259
  return this._ariaControls;
246
260
  }
247
261
 
262
+ set ariaDetailsElements(el) {
263
+ this._ariaDetails = el;
264
+ if (this.ariaObserver) {
265
+ this.ariaObserver.connect({
266
+ attribute: ARIA_DETAILS,
267
+ targetSelector: 'input',
268
+ relatedNodeIds: getRealDOMId(this.ariaDetailsElements),
269
+ });
270
+ }
271
+ }
272
+
273
+ @api
274
+ get ariaDetailsElements() {
275
+ return this._ariaDetails;
276
+ }
277
+
248
278
  set ariaDescribedByElements(el) {
249
279
  if (Array.isArray(el)) {
250
280
  this._ariaDescribedBy = el;
@@ -280,6 +310,7 @@ export default class LightningDatePicker extends LightningShadowBaseClass {
280
310
 
281
311
  synchronizeAttrs(input, {
282
312
  [ARIA_LABEL]: this._ariaLabel,
313
+ [ARIA_DISABLED]: this._ariaDisabled,
283
314
  [ARIA_INVALID]: this.computedAriaInvalid,
284
315
  });
285
316
 
@@ -502,7 +533,6 @@ export default class LightningDatePicker extends LightningShadowBaseClass {
502
533
 
503
534
  get computedAriaDescribedby() {
504
535
  const ariaValues = [];
505
-
506
536
  this._ariaDescribedBy.forEach((item) => {
507
537
  const id = getRealDOMId(item);
508
538
  if (id) {
@@ -245,6 +245,7 @@
245
245
 
246
246
  @media (width >= 48em) {
247
247
  :host([data-render-mode="shadow"][variant='label-inline']) .slds-form-element__label {
248
+ float: left;
248
249
  max-width: calc(33% - var(--slds-g-sizing-6)); /* Removing icon width for when the help-text icon is present */
249
250
  flex-basis: calc(33% - var(--slds-g-sizing-6)); /* Some form element controls are set to display:flex */
250
251
  flex-grow: 1; /* For IE and Safari which didn't auto expand to the available space */
@@ -254,7 +254,7 @@
254
254
  );
255
255
  --sds-c-inputtext-color-border: var(
256
256
  --slds-c-inputtext-color-border,
257
- var(--slds-g-color-border-1)
257
+ var(--slds-g-color-border-2)
258
258
  );
259
259
  --sds-c-inputtext-sizing-border: var(--slds-c-inputtext-sizing-border);
260
260
  --sds-c-inputtext-radius-border: var(
@@ -330,7 +330,7 @@
330
330
  }
331
331
  :host([data-render-mode="shadow"][readonly]) [part="input-container"]:focus-within,:host([data-render-mode="shadow"][readonly]) [part="input-container"]:active {
332
332
  --sds-c-inputtext-color-border: var(--slds-g-color-disabled-container-2);
333
- --sds-c-inputtext-shadow: 0 0 var(--slds-g-sizing-border-3) var(--slds-g-color-accent-1);
333
+ --sds-c-inputtext-shadow: 0 0 var(--slds-g-sizing-border-3) var(--slds-g-color-accent-2);
334
334
  --sds-c-inputtext-color-background: transparent;
335
335
 
336
336
  outline: 0;
@@ -367,9 +367,9 @@
367
367
  */
368
368
  :host([data-render-mode="shadow"][disabled]) [part='input-container'],:host([data-render-mode="shadow"][disabled]) [part='input'] {
369
369
  cursor: not-allowed;
370
- --sds-c-inputtext-color-background: var(--slds-g-color-disabled-container-1);
371
- --sds-c-inputtext-color-border: var(--slds-g-color-border-1);
372
- --sds-c-inputtext-text-color: var(--slds-g-color-on-surface-1);
370
+ --sds-c-inputtext-color-background: var(--slds-s-input-color-background-disabled, var(--slds-g-color-disabled-container-1));
371
+ --sds-c-inputtext-color-border: var(--slds-g-color-border-disabled-1);
372
+ --sds-c-inputtext-text-color: var(--slds-g-color-on-disabled-2);
373
373
  }
374
374
  /**
375
375
  * Label
@@ -14,6 +14,7 @@
14
14
  data-aria-invalid={computedDateAriaInvalid}
15
15
  class="slds-form-element"
16
16
  autocomplete={autocomplete}
17
+ accesskey={dateAccessKey}
17
18
  min={dateMin}
18
19
  max={dateMax}
19
20
  label={i18n.date}
@@ -27,6 +28,8 @@
27
28
  onblur={handleDatepickerBlur}
28
29
  onchange={handleDateChange}
29
30
  aria-error-message-element={errorMessageElement}
31
+ aria-disabled={ariaDisabled}
32
+ variant={childVariant}
30
33
  root-aria-node={rootAriaNode}
31
34
  >
32
35
  </lightning-datepicker>
@@ -35,6 +38,7 @@
35
38
  data-aria-invalid={computedTimeAriaInvalid}
36
39
  class="slds-form-element"
37
40
  autocomplete={autocomplete}
41
+ accesskey={timeAccessKey}
38
42
  label={i18n.time}
39
43
  name={name}
40
44
  time-style={timeStyle}
@@ -46,13 +50,15 @@
46
50
  onblur={handleTimepickerBlur}
47
51
  onchange={handleTimeChange}
48
52
  aria-error-message-element={errorMessageElement}
53
+ aria-disabled={ariaDisabled}
54
+ variant={childVariant}
49
55
  root-aria-node={rootAriaNode}
50
56
  >
51
57
  </lightning-timepicker>
52
58
  </div>
53
59
  </div>
54
60
  </div>
55
- <div data-error-message id="errormessage" class={computedClass}>{customErrorMessage}</div>
61
+ <div data-error-message id="errormessage" class={computedClass} aria-live="polite">{customErrorMessage}</div>
56
62
 
57
63
  </fieldset>
58
64
  </div>
@@ -61,6 +61,8 @@ export default class LightningDateTimePicker extends LightningShadowBaseClass {
61
61
 
62
62
  @api timeAriaLabel;
63
63
 
64
+ @api ariaDisabled;
65
+
64
66
  @api rootAriaNode;
65
67
 
66
68
  /**
@@ -82,6 +84,17 @@ export default class LightningDateTimePicker extends LightningShadowBaseClass {
82
84
  return this._timeAriaControls;
83
85
  }
84
86
 
87
+ // getters and setters necessary to trigger sync
88
+ set timeAriaDetails(val) {
89
+ this._timeAriaDetails = val;
90
+ this.synchronizeA11y();
91
+ }
92
+
93
+ @api
94
+ get timeAriaDetails() {
95
+ return this._timeAriaDetails;
96
+ }
97
+
85
98
  set timeAriaLabelledBy(val) {
86
99
  this._timeAriaLabelledBy = val;
87
100
  this.synchronizeA11y();
@@ -103,9 +116,12 @@ export default class LightningDateTimePicker extends LightningShadowBaseClass {
103
116
  }
104
117
 
105
118
  @api dateAriaControls;
119
+ @api dateAriaDetails;
106
120
  @api dateAriaLabel;
107
121
  @api dateAriaLabelledBy;
108
122
  @api dateAriaDescribedBy;
123
+ @api dateAccessKey;
124
+ @api timeAccessKey;
109
125
 
110
126
  @api messageWhenValueMissing;
111
127
 
@@ -246,6 +262,16 @@ export default class LightningDateTimePicker extends LightningShadowBaseClass {
246
262
  reflectAttribute(this, 'variant', this._variant);
247
263
  }
248
264
 
265
+ /**
266
+ * The child date and time picker components should have the standard variant, unless variant is label-hidden
267
+ * See W-15101132
268
+ */
269
+ get childVariant() {
270
+ return this._variant === VARIANT.LABEL_HIDDEN
271
+ ? this._variant
272
+ : VARIANT.STANDARD;
273
+ }
274
+
249
275
  /**
250
276
  * Sets focus on the date input element.
251
277
  */
@@ -273,7 +299,7 @@ export default class LightningDateTimePicker extends LightningShadowBaseClass {
273
299
  }
274
300
 
275
301
  get hasBadDateInput() {
276
- return this.getDatepicker().hasBadInput();
302
+ return this.getDatepicker()?.hasBadInput();
277
303
  }
278
304
 
279
305
  get hasMissingDateTimeInput() {
@@ -281,7 +307,7 @@ export default class LightningDateTimePicker extends LightningShadowBaseClass {
281
307
  }
282
308
 
283
309
  get hasBadTimeInput() {
284
- const timeBadInput = this.getTimepicker().hasBadInput();
310
+ const timeBadInput = this.getTimepicker()?.hasBadInput();
285
311
  const timeMissing =
286
312
  this.required && this._dateValue && !this._timeValue;
287
313
  return timeMissing || timeBadInput;
@@ -406,6 +432,7 @@ export default class LightningDateTimePicker extends LightningShadowBaseClass {
406
432
  ariaLabelledByElement: this.dateAriaLabelledBy,
407
433
  ariaDescribedByElements: this.dateAriaDescribedBy,
408
434
  ariaControlsElement: this.dateAriaControls,
435
+ ariaDetailsElements: this.dateAriaDetails,
409
436
  'aria-label': this.dateAriaLabel,
410
437
  });
411
438
  }
@@ -415,6 +442,7 @@ export default class LightningDateTimePicker extends LightningShadowBaseClass {
415
442
  ariaLabelledByElement: this.timeAriaLabelledBy,
416
443
  ariaDescribedByElements: this.timeAriaDescribedBy,
417
444
  ariaControlsElement: this.timeAriaControls,
445
+ ariaDetailsElements: this.timeAriaDetails,
418
446
  'aria-label': this.timeAriaLabel,
419
447
  });
420
448
  }
@@ -245,6 +245,7 @@
245
245
 
246
246
  @media (width >= 48em) {
247
247
  :host([data-render-mode="shadow"][variant='label-inline']) .slds-form-element__label {
248
+ float: left;
248
249
  max-width: calc(33% - var(--slds-g-sizing-6)); /* Removing icon width for when the help-text icon is present */
249
250
  flex-basis: calc(33% - var(--slds-g-sizing-6)); /* Some form element controls are set to display:flex */
250
251
  flex-grow: 1; /* For IE and Safari which didn't auto expand to the available space */
@@ -254,7 +254,7 @@
254
254
  );
255
255
  --sds-c-inputtext-color-border: var(
256
256
  --slds-c-inputtext-color-border,
257
- var(--slds-g-color-border-1)
257
+ var(--slds-g-color-border-2)
258
258
  );
259
259
  --sds-c-inputtext-sizing-border: var(--slds-c-inputtext-sizing-border);
260
260
  --sds-c-inputtext-radius-border: var(
@@ -330,7 +330,7 @@
330
330
  }
331
331
  :host([data-render-mode="shadow"][readonly]) [part="input-container"]:focus-within,:host([data-render-mode="shadow"][readonly]) [part="input-container"]:active {
332
332
  --sds-c-inputtext-color-border: var(--slds-g-color-disabled-container-2);
333
- --sds-c-inputtext-shadow: 0 0 var(--slds-g-sizing-border-3) var(--slds-g-color-accent-1);
333
+ --sds-c-inputtext-shadow: 0 0 var(--slds-g-sizing-border-3) var(--slds-g-color-accent-2);
334
334
  --sds-c-inputtext-color-background: transparent;
335
335
 
336
336
  outline: 0;
@@ -367,9 +367,9 @@
367
367
  */
368
368
  :host([data-render-mode="shadow"][disabled]) [part='input-container'],:host([data-render-mode="shadow"][disabled]) [part='input'] {
369
369
  cursor: not-allowed;
370
- --sds-c-inputtext-color-background: var(--slds-g-color-disabled-container-1);
371
- --sds-c-inputtext-color-border: var(--slds-g-color-border-1);
372
- --sds-c-inputtext-text-color: var(--slds-g-color-on-surface-1);
370
+ --sds-c-inputtext-color-background: var(--slds-s-input-color-background-disabled, var(--slds-g-color-disabled-container-1));
371
+ --sds-c-inputtext-color-border: var(--slds-g-color-border-disabled-1);
372
+ --sds-c-inputtext-text-color: var(--slds-g-color-on-disabled-2);
373
373
  }
374
374
  /**
375
375
  * Label
@@ -245,6 +245,7 @@
245
245
 
246
246
  @media (width >= 48em) {
247
247
  :host([data-render-mode="shadow"][variant='label-inline']) .slds-form-element__label {
248
+ float: left;
248
249
  max-width: calc(33% - var(--slds-g-sizing-6)); /* Removing icon width for when the help-text icon is present */
249
250
  flex-basis: calc(33% - var(--slds-g-sizing-6)); /* Some form element controls are set to display:flex */
250
251
  flex-grow: 1; /* For IE and Safari which didn't auto expand to the available space */
@@ -0,0 +1,7 @@
1
+ /* When inserted at the bottom of the page it will scroll the parent on focus */
2
+ div[data-start],
3
+ div[data-end] {
4
+ position: fixed;
5
+ top: 1rem;
6
+ left: 1rem;
7
+ }
@@ -245,6 +245,7 @@
245
245
 
246
246
  @media (width >= 48em) {
247
247
  :host([data-render-mode="shadow"][variant='label-inline']) .slds-form-element__label {
248
+ float: left;
248
249
  max-width: calc(33% - var(--slds-g-sizing-6)); /* Removing icon width for when the help-text icon is present */
249
250
  flex-basis: calc(33% - var(--slds-g-sizing-6)); /* Some form element controls are set to display:flex */
250
251
  flex-grow: 1; /* For IE and Safari which didn't auto expand to the available space */
@@ -254,7 +254,7 @@
254
254
  );
255
255
  --sds-c-inputtext-color-border: var(
256
256
  --slds-c-inputtext-color-border,
257
- var(--slds-g-color-border-1)
257
+ var(--slds-g-color-border-2)
258
258
  );
259
259
  --sds-c-inputtext-sizing-border: var(--slds-c-inputtext-sizing-border);
260
260
  --sds-c-inputtext-radius-border: var(
@@ -330,7 +330,7 @@
330
330
  }
331
331
  :host([data-render-mode="shadow"][readonly]) [part="input-container"]:focus-within,:host([data-render-mode="shadow"][readonly]) [part="input-container"]:active {
332
332
  --sds-c-inputtext-color-border: var(--slds-g-color-disabled-container-2);
333
- --sds-c-inputtext-shadow: 0 0 var(--slds-g-sizing-border-3) var(--slds-g-color-accent-1);
333
+ --sds-c-inputtext-shadow: 0 0 var(--slds-g-sizing-border-3) var(--slds-g-color-accent-2);
334
334
  --sds-c-inputtext-color-background: transparent;
335
335
 
336
336
  outline: 0;
@@ -367,9 +367,9 @@
367
367
  */
368
368
  :host([data-render-mode="shadow"][disabled]) [part='input-container'],:host([data-render-mode="shadow"][disabled]) [part='input'] {
369
369
  cursor: not-allowed;
370
- --sds-c-inputtext-color-background: var(--slds-g-color-disabled-container-1);
371
- --sds-c-inputtext-color-border: var(--slds-g-color-border-1);
372
- --sds-c-inputtext-text-color: var(--slds-g-color-on-surface-1);
370
+ --sds-c-inputtext-color-background: var(--slds-s-input-color-background-disabled, var(--slds-g-color-disabled-container-1));
371
+ --sds-c-inputtext-color-border: var(--slds-g-color-border-disabled-1);
372
+ --sds-c-inputtext-text-color: var(--slds-g-color-on-disabled-2);
373
373
  }
374
374
  /**
375
375
  * Label