lightning-base-components 1.17.3-alpha → 1.17.6-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 (249) hide show
  1. package/metadata/raptor.json +125 -2
  2. package/package.json +17 -1
  3. package/scopedImports/@salesforce-label-LightningInput.mailingAddressFieldsUpdateText.js +1 -0
  4. package/scopedImports/@salesforce-label-LightningToast.genericNavigationAssistiveText.js +1 -0
  5. package/scopedImports/@salesforce-label-LightningToast.macNavigationAssistiveText.js +1 -0
  6. package/src/lightning/ariaObserver/__examples__/connect/connect.html +19 -0
  7. package/src/lightning/ariaObserver/__examples__/connect/connect.js +9 -0
  8. package/src/lightning/ariaObserver/__examples__/connectChild/connectChild.html +3 -0
  9. package/src/lightning/ariaObserver/__examples__/connectChild/connectChild.js +43 -0
  10. package/src/lightning/ariaObserver/ariaObserver.js +16 -2
  11. package/src/lightning/baseCombobox/baseCombobox.js +11 -3
  12. package/src/lightning/baseCombobox/keyboard.js +3 -0
  13. package/src/lightning/breadcrumb/breadcrumb.css +3 -0
  14. package/src/lightning/breadcrumb/breadcrumb.html +1 -1
  15. package/src/lightning/breadcrumb/breadcrumb.slds.css +25 -0
  16. package/src/lightning/breadcrumbs/breadcrumbs.css +3 -0
  17. package/src/lightning/breadcrumbs/breadcrumbs.html +1 -1
  18. package/src/lightning/breadcrumbs/breadcrumbs.slds.css +33 -0
  19. package/src/lightning/button/button.html +2 -1
  20. package/src/lightning/button/button.js +9 -0
  21. package/src/lightning/buttonIcon/button-icon.slds.css +5 -1
  22. package/src/lightning/buttonIcon/buttonIcon.html +2 -1
  23. package/src/lightning/buttonIcon/buttonIcon.js +10 -1
  24. package/src/lightning/buttonIconStateful/button-icon-stateful.slds.css +5 -1
  25. package/src/lightning/dualListbox/dual-listbox.slds.css +200 -0
  26. package/src/lightning/dualListbox/dualListbox.css +3 -1
  27. package/src/lightning/dualListbox/dualListbox.html +2 -2
  28. package/src/lightning/dualListbox/dualListbox.js +2 -0
  29. package/src/lightning/dualListbox/form-element.slds.css +232 -0
  30. package/src/lightning/dynamicIcon/dynamic-icon-ellie.slds.css +180 -0
  31. package/src/lightning/dynamicIcon/dynamic-icon-eq.slds.css +63 -0
  32. package/src/lightning/dynamicIcon/dynamic-icon-score.slds.css +46 -0
  33. package/src/lightning/dynamicIcon/dynamic-icon-strength.slds.css +122 -0
  34. package/src/lightning/dynamicIcon/dynamic-icon-trend.slds.css +117 -0
  35. package/src/lightning/dynamicIcon/dynamic-icon-waffle.slds.css +177 -0
  36. package/src/lightning/dynamicIcon/ellie.css +1 -0
  37. package/src/lightning/dynamicIcon/eq.css +1 -0
  38. package/src/lightning/dynamicIcon/score.css +1 -0
  39. package/src/lightning/dynamicIcon/strength.css +1 -0
  40. package/src/lightning/dynamicIcon/trend.css +1 -0
  41. package/src/lightning/dynamicIcon/waffle.css +1 -0
  42. package/src/lightning/f6Controller/f6Controller.js +382 -0
  43. package/src/lightning/f6Controller/f6Controller.js-meta.xml +4 -0
  44. package/src/lightning/formattedRichText/formattedRichText.js +4 -3
  45. package/src/lightning/helptext/form-element.slds.css +232 -0
  46. package/src/lightning/helptext/help-text.slds.css +5 -1
  47. package/src/lightning/helptext/helptext.css +2 -1
  48. package/src/lightning/helptext/helptext.html +1 -0
  49. package/src/lightning/helptext/helptext.js +9 -0
  50. package/src/lightning/iconSvgTemplates/buildTemplates/standard/bill_of_materials.html +7 -0
  51. package/src/lightning/iconSvgTemplates/buildTemplates/standard/buyer_group_qualifier.html +8 -0
  52. package/src/lightning/iconSvgTemplates/buildTemplates/standard/datashare_target.html +9 -0
  53. package/src/lightning/iconSvgTemplates/buildTemplates/standard/datashares.html +7 -0
  54. package/src/lightning/iconSvgTemplates/buildTemplates/standard/disclosure_and_compliance.html +8 -0
  55. package/src/lightning/iconSvgTemplates/buildTemplates/standard/document_preview.html +7 -0
  56. package/src/lightning/iconSvgTemplates/buildTemplates/standard/facility_bed.html +7 -0
  57. package/src/lightning/iconSvgTemplates/buildTemplates/standard/market.html +8 -0
  58. package/src/lightning/iconSvgTemplates/buildTemplates/standard/mulesoft.html +8 -0
  59. package/src/lightning/iconSvgTemplates/buildTemplates/standard/price_sheet.html +7 -0
  60. package/src/lightning/iconSvgTemplates/buildTemplates/standard/travel_mode.html +2 -2
  61. package/src/lightning/iconSvgTemplates/buildTemplates/templates.js +34 -1
  62. package/src/lightning/iconSvgTemplates/buildTemplates/utility/add_source.html +7 -0
  63. package/src/lightning/iconSvgTemplates/buildTemplates/utility/app_web_messaging.html +7 -0
  64. package/src/lightning/iconSvgTemplates/buildTemplates/utility/bookmark_stroke.html +7 -0
  65. package/src/lightning/iconSvgTemplates/buildTemplates/utility/buyer_group_qualifier.html +8 -0
  66. package/src/lightning/iconSvgTemplates/buildTemplates/utility/document_preview.html +7 -0
  67. package/src/lightning/iconSvgTemplates/buildTemplates/utility/expired.html +7 -0
  68. package/src/lightning/iconSvgTemplates/buildTemplates/utility/favorite_alt.html +7 -0
  69. package/src/lightning/iconSvgTemplates/buildTemplates/utility/heart.html +7 -0
  70. package/src/lightning/iconSvgTemplates/buildTemplates/utility/hourglass.html +7 -0
  71. package/src/lightning/iconSvgTemplates/buildTemplates/utility/integration.html +8 -0
  72. package/src/lightning/iconSvgTemplates/buildTemplates/utility/market.html +8 -0
  73. package/src/lightning/iconSvgTemplates/buildTemplates/utility/more.html +7 -0
  74. package/src/lightning/iconSvgTemplates/buildTemplates/utility/mulesoft.html +8 -0
  75. package/src/lightning/iconSvgTemplates/buildTemplates/utility/notification_off.html +7 -0
  76. package/src/lightning/iconSvgTemplates/buildTemplates/utility/notification_snoozed.html +9 -0
  77. package/src/lightning/iconSvgTemplates/buildTemplates/utility/profile_alt.html +7 -0
  78. package/src/lightning/iconSvgTemplates/buildTemplates/utility/promotion_tiers.html +10 -0
  79. package/src/lightning/iconSvgTemplates/buildTemplates/utility/sender_email.html +7 -0
  80. package/src/lightning/iconSvgTemplates/buildTemplates/utility/service_appointment.html +13 -0
  81. package/src/lightning/iconSvgTemplates/buildTemplates/utility/service_report.html +8 -0
  82. package/src/lightning/iconSvgTemplates/buildTemplates/utility/toggle_off.html +7 -0
  83. package/src/lightning/iconSvgTemplates/buildTemplates/utility/toggle_on.html +7 -0
  84. package/src/lightning/iconSvgTemplates/buildTemplates/utility/your_account.html +10 -0
  85. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/bill_of_materials.html +7 -0
  86. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/buyer_group_qualifier.html +8 -0
  87. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/datashare_target.html +9 -0
  88. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/datashares.html +7 -0
  89. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/disclosure_and_compliance.html +8 -0
  90. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/document_preview.html +7 -0
  91. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/facility_bed.html +7 -0
  92. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/market.html +8 -0
  93. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/mulesoft.html +8 -0
  94. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/price_sheet.html +7 -0
  95. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/travel_mode.html +2 -2
  96. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/templates.js +34 -1
  97. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/add_source.html +7 -0
  98. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/app_web_messaging.html +7 -0
  99. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/bookmark_stroke.html +7 -0
  100. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/buyer_group_qualifier.html +8 -0
  101. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/document_preview.html +7 -0
  102. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/expired.html +7 -0
  103. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/favorite_alt.html +7 -0
  104. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/heart.html +7 -0
  105. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/hourglass.html +7 -0
  106. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/integration.html +8 -0
  107. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/market.html +8 -0
  108. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/more.html +7 -0
  109. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/mulesoft.html +8 -0
  110. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/notification_off.html +7 -0
  111. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/notification_snoozed.html +9 -0
  112. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/profile_alt.html +7 -0
  113. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/promotion_tiers.html +10 -0
  114. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/sender_email.html +7 -0
  115. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/service_appointment.html +13 -0
  116. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/service_report.html +8 -0
  117. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/toggle_off.html +7 -0
  118. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/toggle_on.html +7 -0
  119. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/your_account.html +10 -0
  120. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/bill_of_materials.html +7 -0
  121. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/buyer_group_qualifier.html +8 -0
  122. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/datashare_target.html +9 -0
  123. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/datashares.html +7 -0
  124. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/disclosure_and_compliance.html +8 -0
  125. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/document_preview.html +7 -0
  126. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/facility_bed.html +7 -0
  127. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/market.html +8 -0
  128. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/mulesoft.html +8 -0
  129. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/price_sheet.html +7 -0
  130. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/travel_mode.html +2 -2
  131. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/templates.js +11 -1
  132. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/bill_of_materials.html +7 -0
  133. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/buyer_group_qualifier.html +8 -0
  134. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/datashare_target.html +9 -0
  135. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/datashares.html +7 -0
  136. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/disclosure_and_compliance.html +8 -0
  137. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/document_preview.html +7 -0
  138. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/facility_bed.html +7 -0
  139. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/market.html +8 -0
  140. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/mulesoft.html +8 -0
  141. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/price_sheet.html +7 -0
  142. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/travel_mode.html +2 -2
  143. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/templates.js +11 -1
  144. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/templates.js +24 -1
  145. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/add_source.html +7 -0
  146. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/app_web_messaging.html +7 -0
  147. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/bookmark_stroke.html +7 -0
  148. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/buyer_group_qualifier.html +8 -0
  149. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/document_preview.html +7 -0
  150. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/expired.html +7 -0
  151. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/favorite_alt.html +7 -0
  152. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/heart.html +7 -0
  153. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/hourglass.html +7 -0
  154. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/integration.html +8 -0
  155. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/market.html +8 -0
  156. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/more.html +7 -0
  157. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/mulesoft.html +8 -0
  158. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/notification_off.html +7 -0
  159. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/notification_snoozed.html +9 -0
  160. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/profile_alt.html +7 -0
  161. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/promotion_tiers.html +10 -0
  162. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/sender_email.html +7 -0
  163. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/service_appointment.html +13 -0
  164. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/service_report.html +8 -0
  165. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/toggle_off.html +7 -0
  166. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/toggle_on.html +7 -0
  167. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/your_account.html +10 -0
  168. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/templates.js +24 -1
  169. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/add_source.html +7 -0
  170. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/app_web_messaging.html +7 -0
  171. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/bookmark_stroke.html +7 -0
  172. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/buyer_group_qualifier.html +8 -0
  173. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/document_preview.html +7 -0
  174. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/expired.html +7 -0
  175. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/favorite_alt.html +7 -0
  176. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/heart.html +7 -0
  177. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/hourglass.html +7 -0
  178. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/integration.html +8 -0
  179. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/market.html +8 -0
  180. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/more.html +7 -0
  181. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/mulesoft.html +8 -0
  182. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/notification_off.html +7 -0
  183. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/notification_snoozed.html +9 -0
  184. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/profile_alt.html +7 -0
  185. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/promotion_tiers.html +10 -0
  186. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/sender_email.html +7 -0
  187. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/service_appointment.html +13 -0
  188. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/service_report.html +8 -0
  189. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/toggle_off.html +7 -0
  190. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/toggle_on.html +7 -0
  191. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/your_account.html +10 -0
  192. package/src/lightning/input/input-text.slds.css +1 -1
  193. package/src/lightning/input/input.html +3 -3
  194. package/src/lightning/input/input.js +38 -2
  195. package/src/lightning/inputAddress/__docs__/inputAddress.md +3 -0
  196. package/src/lightning/inputAddress/inputAddress.html +1 -0
  197. package/src/lightning/inputAddress/inputAddress.js +6 -0
  198. package/src/lightning/modal/__examples__disabled/allform/allform.html +1 -1
  199. package/src/lightning/modal/__examples__disabled/allform/allform.js +1 -1
  200. package/src/lightning/modal/__examples__disabled/allformfull/allformfull.css +7 -0
  201. package/src/lightning/modal/__examples__disabled/allformfull/allformfull.html +9 -0
  202. package/src/lightning/modal/__examples__disabled/allformfull/allformfull.js +49 -0
  203. package/src/lightning/modal/__examples__disabled/demoallformfull/demoallformfull.css +3 -0
  204. package/src/lightning/modal/__examples__disabled/demoallformfull/demoallformfull.html +146 -0
  205. package/src/lightning/modal/__examples__disabled/demoallformfull/demoallformfull.js +240 -0
  206. package/src/lightning/modalBase/modalBase.css +1 -1
  207. package/src/lightning/modalBase/modalBase.html +2 -2
  208. package/src/lightning/modalBase/modalBase.js +199 -45
  209. package/src/lightning/modalBody/modalBody.js +133 -18
  210. package/src/lightning/modalFooter/modalFooter.js +57 -1
  211. package/src/lightning/navigation/__docs__/navigation.md +1 -1
  212. package/src/lightning/popup/popover.slds.css +121 -0
  213. package/src/lightning/popup/popup.css +3 -0
  214. package/src/lightning/positionLibrary/direction.js +10 -17
  215. package/src/lightning/primitiveBubble/primitiveBubble.js +16 -1
  216. package/src/lightning/select/__docs__/select.md +9 -0
  217. package/src/lightning/select/__examples__/disabled/disabled.html +10 -0
  218. package/src/lightning/select/__examples__/disabled/disabled.js +27 -0
  219. package/src/lightning/select/__examples__/hidden/hidden.html +10 -0
  220. package/src/lightning/select/__examples__/hidden/hidden.js +27 -0
  221. package/src/lightning/select/__examples__/inline/inline.html +10 -0
  222. package/src/lightning/select/__examples__/inline/inline.js +27 -0
  223. package/src/lightning/select/form-element.slds.css +232 -0
  224. package/src/lightning/select/select.css +3 -0
  225. package/src/lightning/select/select.html +2 -2
  226. package/src/lightning/select/select.js +3 -0
  227. package/src/lightning/select/select.slds.css +398 -0
  228. package/src/lightning/showToastEvent/showToastEvent.js +21 -0
  229. package/src/lightning/showToastEvent/showToastEvent.js-meta.xml +4 -0
  230. package/src/lightning/sldsCommon/sldsCommon.css +21 -4
  231. package/src/lightning/toast/__docs__/toast.md +103 -0
  232. package/src/lightning/toast/toast.css +52 -0
  233. package/src/lightning/toast/toast.html +70 -0
  234. package/src/lightning/toast/toast.js +608 -0
  235. package/src/lightning/toast/toast.js-meta.xml +4 -0
  236. package/src/lightning/toastContainer/__docs__/toastContainer.md +59 -0
  237. package/src/lightning/toastContainer/toastContainer.css +32 -0
  238. package/src/lightning/toastContainer/toastContainer.html +9 -0
  239. package/src/lightning/toastContainer/toastContainer.js +471 -0
  240. package/src/lightning/toastContainer/toastContainer.js-meta.xml +6 -0
  241. package/src/lightning/tooltipLibrary/tooltipLibrary.js +82 -19
  242. package/src/lightning/treeGrid/__docs__/treeGrid.md +4 -3
  243. package/src/lightning/utilsPrivate/url.js +2 -1
  244. package/src/lightning/verticalNavigation/vertical-navigation.slds.css +4 -0
  245. package/src/lightning/verticalNavigation/verticalNavigation.css +1 -0
  246. package/src/lightning/verticalNavigation/verticalNavigation.html +1 -1
  247. package/src/lightning/verticalNavigationSection/vertical-navigation-section.slds.css +19 -0
  248. package/src/lightning/verticalNavigationSection/verticalNavigationSection.css +2 -0
  249. package/src/lightning/verticalNavigationSection/verticalNavigationSection.html +1 -1
@@ -0,0 +1,70 @@
1
+ <template>
2
+ <lightning-focus-trap>
3
+ <div class="slds-notify_container slds-is-relative">
4
+ <div class={toastClass}
5
+ role="status"
6
+ onanimationend={handleAnimationEnd}
7
+ onfocusin={handleFocusIn}
8
+ onfocusout={handleFocusOut}>
9
+ <div class="slds-list--inline"
10
+ data-content
11
+ tabindex="0">
12
+ <template if:true={isSmallerBrowserWidth}>
13
+ <span class="slds-assistive-text">
14
+ {iconAlternativeText}
15
+ </span>
16
+ </template>
17
+ <template if:false={isSmallerBrowserWidth}>
18
+ <lightning-icon
19
+ class="slds-m-right_small slds-no-flex slds-align-top"
20
+ icon-name={iconName}
21
+ size="small"
22
+ variant="inverse"
23
+ alternative-text={iconAlternativeText}>
24
+ </lightning-icon>
25
+ </template>
26
+ <div class="slds-notify__content">
27
+ <h2 class="slds-text-heading_small">
28
+ <slot>
29
+ <template if:true={hasLabelLink}>
30
+ <lightning-formatted-rich-text
31
+ value={label}>
32
+ </lightning-formatted-rich-text>
33
+ </template>
34
+ <template if:false={hasLabelLink}>
35
+ {label}
36
+ </template>
37
+ </slot>
38
+ </h2>
39
+ <template if:false={isSmallerBrowserWidth}>
40
+ <slot name="message">
41
+ <template if:true={hasMessageLink}>
42
+ <lightning-formatted-rich-text
43
+ value={message}>
44
+ </lightning-formatted-rich-text>
45
+ </template>
46
+ <template if:false={hasMessageLink}>
47
+ {message}
48
+ </template>
49
+ </slot>
50
+ </template>
51
+ <template if:true={assistiveText}>
52
+ <span class="slds-assistive-text">
53
+ {assistiveText}
54
+ </span>
55
+ </template>
56
+ </div>
57
+ <div class={closeIconContainerClass}>
58
+ <lightning-button-icon
59
+ onclick={handleCloseClick}
60
+ icon-name="utility:close"
61
+ size={closeIconSize}
62
+ variant="bare-inverse"
63
+ title={closeButtonTitleText}>
64
+ </lightning-button-icon>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ </div>
69
+ </lightning-focus-trap>
70
+ </template>
@@ -0,0 +1,608 @@
1
+ import { LightningElement, api, track } from 'lwc';
2
+ import {
3
+ makeAbsoluteUrl,
4
+ normalizeString,
5
+ isMacOS,
6
+ isiOS,
7
+ } from 'lightning/utilsPrivate';
8
+ import {
9
+ instanceName,
10
+ properties,
11
+ requiredProperties,
12
+ } from 'lightning/overlayUtils';
13
+ import { classSet } from 'lightning/utils';
14
+ import { ShowToastEvent } from 'lightning/showToastEvent';
15
+ import { LightningResizeObserver } from 'lightning/resizeObserver';
16
+ import ToastContainer from 'lightning/toastContainer';
17
+
18
+ import formFactorPropertyName from '@salesforce/client/formFactor';
19
+
20
+ import closeButtonTitleText from '@salesforce/label/LightningToast.close';
21
+ import iconInfoAltText from '@salesforce/label/LightningToast.infoLabel';
22
+ import iconWarningAltText from '@salesforce/label/LightningToast.warningLabel';
23
+ import iconSuccessAltText from '@salesforce/label/LightningToast.successLabel';
24
+ import iconErrorAltText from '@salesforce/label/LightningToast.errorLabel';
25
+ import macNavigationAssistiveText from '@salesforce/label/LightningToast.macNavigationAssistiveText';
26
+ import genericNavigationAssistiveText from '@salesforce/label/LightningToast.genericNavigationAssistiveText';
27
+
28
+ import { DEFAULT_CONFIG } from 'lightning/f6Controller';
29
+
30
+ const MODE_DISMISSIBLE = 'dismissible';
31
+ const MODE_STICKY = 'sticky';
32
+
33
+ const VARIANT_INFO = 'info';
34
+ const VARIANT_WARNING = 'warning';
35
+ const VARIANT_ERROR = 'error';
36
+ const VARIANT_SUCCESS = 'success';
37
+
38
+ export const DEFAULT_TOAST_VARIANT = VARIANT_INFO;
39
+ export const DEFAULT_TOAST_MODE = MODE_STICKY;
40
+
41
+ const DURATION_LINK = 9600;
42
+ const DURATION_NO_LINK = 4800;
43
+ const MIN_BROWSER_WIDTH = 480;
44
+
45
+ /**
46
+ * A notification element used to convey a label.
47
+ */
48
+ export default class Toast extends LightningElement {
49
+ static [instanceName] = 'lightning-toast';
50
+ static [properties] = [
51
+ 'variant',
52
+ 'mode',
53
+ 'label',
54
+ 'labelLinks',
55
+ 'message',
56
+ 'messageLinks',
57
+ ];
58
+ static [requiredProperties] = ['label'];
59
+
60
+ // Normalized variant value.
61
+ _variant = DEFAULT_TOAST_VARIANT;
62
+ // Normalized mode value.
63
+ _mode;
64
+
65
+ // ID of timeout to determine whether there is a running timer.
66
+ timeoutId = null;
67
+ // callback function to unregister the current toast from its container
68
+ unregisterCallback = null;
69
+
70
+ firstRender = true;
71
+ closing = false;
72
+ hide = false;
73
+
74
+ // flag to indicate if toast is currently focused
75
+ _isFocused = false;
76
+
77
+ closeButtonTitleText = closeButtonTitleText;
78
+
79
+ assistiveText =
80
+ isMacOS || isiOS
81
+ ? macNavigationAssistiveText
82
+ : genericNavigationAssistiveText;
83
+
84
+ // pre-processed toast label string
85
+ _label;
86
+ // pre-processed toast message string
87
+ _message;
88
+
89
+ // reference of resizeObserver on the host element
90
+ _resizeObserver;
91
+
92
+ // flag indicate if the current form factor is small
93
+ _isSmallFormFactor;
94
+
95
+ // reference to portrait media query
96
+ _portraitMatchMedia;
97
+
98
+ // reference to the handler function for changing screen orientation
99
+ _screenOrientationChangeHandler;
100
+
101
+ // boolean indicates if the current browser width is less than MIN_BROWSER_WIDTH
102
+ @track _isSmallerBrowserWidth;
103
+
104
+ // an array of { url, label }, which will replace the {0}... {N} placeholders in label string or
105
+ // a map of { name: { url, label } } which will replaced the {name} ... {anotherName} placeholders in label string
106
+ @api labelLinks;
107
+
108
+ // an array of { url, label }, which will replace the {0}... {N} placeholders in message string or
109
+ // a map of { name: { url, label } } which will replaced the {name} ... {anotherName} placeholders in message string
110
+ @api messageLinks;
111
+
112
+ /**
113
+ * return true if label has link
114
+ */
115
+ get hasLabelLink() {
116
+ return this.hasLinkData(this.labelLinks);
117
+ }
118
+
119
+ /**
120
+ * return true if message has link
121
+ */
122
+ get hasMessageLink() {
123
+ return this.hasLinkData(this.messageLinks);
124
+ }
125
+
126
+ /**
127
+ * label of the toast
128
+ * @type {string} return the string of toast label which can contain anchor tags
129
+ * @required
130
+ */
131
+ @api get label() {
132
+ return this.buildLinks(this._label, this.labelLinks) || '';
133
+ }
134
+
135
+ set label(value) {
136
+ this._label = value;
137
+ }
138
+
139
+ /**
140
+ * message of the toast
141
+ * @type {string} return the string of toast message which can contain anchor tags
142
+ * @required
143
+ */
144
+ @api get message() {
145
+ return this.buildLinks(this._message, this.messageLinks) || '';
146
+ }
147
+
148
+ set message(value) {
149
+ this._message = value;
150
+ }
151
+
152
+ /**
153
+ * The variant of the toast element.
154
+ * This value is optional and is used to determine the icon, background color, and text color of the toast element.
155
+ * Options: 'info', 'warning', 'success', 'error'
156
+ * @type {string}
157
+ * @default 'info'
158
+ */
159
+ @api
160
+ get variant() {
161
+ return this._variant;
162
+ }
163
+
164
+ set variant(value) {
165
+ this._variant = this.normalizeVariant(value);
166
+ }
167
+
168
+ /**
169
+ * The mode of the toast.
170
+ * This value is optional and is used to determine whether the toast can be closed by the
171
+ * user via a close button and whether the toast disappears after a set time period.
172
+ * Options: 'dismissible', 'sticky'
173
+ * @type {string}
174
+ * @default 'sticky' - see calculateDefaultMode()
175
+ */
176
+ @api
177
+ get mode() {
178
+ return this._mode;
179
+ }
180
+
181
+ set mode(value) {
182
+ this._mode = this.normalizeMode(value);
183
+ }
184
+
185
+ /**
186
+ * Return the icon name.
187
+ * The icon is based on the variant of the toast.
188
+ * @returns {string} - The icon name.
189
+ */
190
+ get iconName() {
191
+ return `utility:${this._variant}`;
192
+ }
193
+
194
+ /**
195
+ * Class of the toast to include the CSS class for variant and class for closing animation.
196
+ * @returns {string} - CSS classes of the toast as a string
197
+ */
198
+ get toastClass() {
199
+ return classSet(
200
+ `slds-notify slds-notify_toast fix-notify_toast_animation slds-theme_${this._variant}`
201
+ )
202
+ .add({
203
+ closing: this.closing,
204
+ 'slds-hide': this.hide,
205
+ 'fix-slds-notify--mobile': this.isSmallerBrowserWidth,
206
+ })
207
+ .toString();
208
+ }
209
+
210
+ get toastElement() {
211
+ return this.template.querySelector('.slds-notify_toast');
212
+ }
213
+
214
+ /**
215
+ * Return true if toast currently displayed in a mobile environment or a smaller screen width
216
+ * @returns {boolean}
217
+ */
218
+ get isSmallerBrowserWidth() {
219
+ return this._isSmallFormFactor || this._isSmallerBrowserWidth;
220
+ }
221
+
222
+ /**
223
+ * Return the value of the close icon size
224
+ * @returns {string} - 'medium' if toast shown in a small form factor or smaller screen, otherwise, 'large'
225
+ */
226
+ get closeIconSize() {
227
+ return this.isSmallerBrowserWidth ? 'medium' : 'large';
228
+ }
229
+
230
+ /**
231
+ * CSS classes for the close button container
232
+ * @return {string}
233
+ */
234
+ get closeIconContainerClass() {
235
+ // the style of lightning-button-icon with 'bare' variant is different on mobile devices VS desktop.
236
+ // In desktop, the component is designed to have its width and height to be determined by its icon size
237
+ // In mobile devices, the component is designed to its width and height to be larger than its icon size to
238
+ // accomodate tapping with finger instead of the more precise mouse cursor.
239
+ // Due to the lightning-button-icon size differences between desktop and mobile devices, the final position of the close button is different.
240
+ // We need to shift the position of the close button back to the right place by adding `fix-slds-notify--mobile__close` class when it is
241
+ // shown in a mobile device.
242
+ return classSet('slds-notify__close').add({
243
+ 'fix-slds-notify--mobile__close': this._isSmallFormFactor,
244
+ });
245
+ }
246
+
247
+ /**
248
+ * Alternative text for the toast icon.
249
+ * @returns {string} - Alternative text of icon.
250
+ */
251
+ get iconAlternativeText() {
252
+ if (this._variant === VARIANT_WARNING) {
253
+ return iconWarningAltText;
254
+ } else if (this._variant === VARIANT_SUCCESS) {
255
+ return iconSuccessAltText;
256
+ } else if (this._variant === VARIANT_ERROR) {
257
+ return iconErrorAltText;
258
+ }
259
+ return iconInfoAltText;
260
+ }
261
+
262
+ /**
263
+ * Set focus on the element with content css class selector
264
+ */
265
+ @api focus() {
266
+ this._isFocused = true;
267
+ this.template.querySelector('[data-content]').focus();
268
+ }
269
+
270
+ /**
271
+ * Normalize the variant to a valid value.
272
+ * @param {string} variant - The user-inputted variant value.
273
+ * @returns {string} - The normalized variant that is the default variant ('info') if the user-inputted variant is invalid or the valid user-inputted variant if it is valid.
274
+ */
275
+ normalizeVariant(variant) {
276
+ return normalizeString(variant, {
277
+ fallbackValue: DEFAULT_TOAST_VARIANT,
278
+ validValues: [
279
+ VARIANT_INFO,
280
+ VARIANT_SUCCESS,
281
+ VARIANT_WARNING,
282
+ VARIANT_ERROR,
283
+ ],
284
+ });
285
+ }
286
+
287
+ /**
288
+ * Normalize the mode to a valid value.
289
+ * @param {string} mode - The user-inputted mode value.
290
+ * @returns {string} - The normalized mode that is the default mode ('dismissible') if the user-inputted mode is invalid or the valid user-inputted mode if it is valid.
291
+ */
292
+ normalizeMode(mode) {
293
+ return normalizeString(mode, {
294
+ validValues: [MODE_DISMISSIBLE, MODE_STICKY],
295
+ });
296
+ }
297
+
298
+ /**
299
+ * Default mode is highly dependant on the variant and if there is link in label/message
300
+ * variant = success, no link => dismissible after 3-5 seconds
301
+ * variant = informational (no link) => mode = sticky
302
+ * variant = warning toast (no link) => mode = sticky
303
+ * variant = error (no link) => mode = sticky
304
+ * any variant with link(s) => mode = sticky
305
+ */
306
+ calculateDefaultMode(hasLink) {
307
+ return this._variant === VARIANT_SUCCESS && !hasLink
308
+ ? MODE_DISMISSIBLE
309
+ : MODE_STICKY;
310
+ }
311
+
312
+ /**
313
+ * insert anchor tags to the (label/message) template
314
+ * @param {string} template string template may contain placeholders
315
+ * @param {object|array} links - can be:
316
+ * 1- {url, label}] for general use case to replace the indexed placeholders in the form of {0} ... {N} in template OR
317
+ * 2- map { 'name': {url, label} } to replace the named placeholders in the form {name} ... {anyName} in template
318
+ * @returns {string} a string of label or message with possible anchor tags
319
+ */
320
+ buildLinks(template, links) {
321
+ if (!template || !links || typeof links !== 'object') {
322
+ return template;
323
+ }
324
+ // an index-based placeholder
325
+ // i.e. "links" will be in the form of [ {url, label} ]
326
+ if (Array.isArray(links)) {
327
+ return template.replace(/\{(\d+)\}/gm, (match, index) => {
328
+ return this.createAnchorTagString(match, links[index]);
329
+ });
330
+ }
331
+ // a name-based placeholder
332
+ // i.e. "links" will be in the form of { name: {url, label} }
333
+ return template.replace(/\{(\w+)\}/gm, (match) => {
334
+ const key = match.substring(1, match.length - 1);
335
+ return this.createAnchorTagString(match, links[key]);
336
+ });
337
+ }
338
+
339
+ createAnchorTagString(match, link) {
340
+ if (!link) {
341
+ return match;
342
+ }
343
+ const { url, label } = link;
344
+ return `<a href='${makeAbsoluteUrl(
345
+ url
346
+ )}' target='_blank' title='${label}'>${label}</a>`;
347
+ }
348
+
349
+ /**
350
+ * Returns true if there is an element inside of the linkData
351
+ * @param {array|object} linkData an array or an object which contains URLs and their labels
352
+ * @returns {boolean}
353
+ */
354
+ hasLinkData(linkData) {
355
+ return (
356
+ linkData &&
357
+ !!(
358
+ (Array.isArray(linkData) && linkData.length) ||
359
+ (typeof linkData === 'object' &&
360
+ Object.entries(linkData).length)
361
+ )
362
+ );
363
+ }
364
+
365
+ /**
366
+ * Return true if a link exists in both label or message slots - for the case toast is used in markup
367
+ * or there is link defined in the labelLinks or in messageLinks - for the case toast is created dynamically
368
+ */
369
+ hasLink() {
370
+ // Query select all slots (only 2: label and message).
371
+ const slots = Array.from(this.template.querySelectorAll('slot'));
372
+ // slots.some returns true if there is a link in any of the slots.
373
+ return (
374
+ slots.some((slot) => {
375
+ // Get all the elements inside the given slot.
376
+ const elements = slot.assignedElements();
377
+
378
+ // elements.some returns true if there is a link in any of the elements inside the given slot.
379
+ return elements.some((element) => {
380
+ return (
381
+ element.tagName === 'A' ||
382
+ element.querySelector('a') !== null
383
+ );
384
+ });
385
+ }) ||
386
+ !!this.hasLabelLink ||
387
+ !!this.hasMessageLink
388
+ );
389
+ }
390
+
391
+ /**
392
+ * Close click handler calls the hide() function to trigger fade out animation.
393
+ * */
394
+ handleCloseClick() {
395
+ this.close();
396
+ }
397
+
398
+ close() {
399
+ // Trigger fade out animation (hide after animation is done).
400
+ this.closing = true;
401
+ }
402
+
403
+ /**
404
+ * At animation end, set hide = true to hide the toast and dispatch close
405
+ * event to signal for removal of the toast element from the DOM.
406
+ * */
407
+ handleAnimationEnd() {
408
+ if (this.closing) {
409
+ this.closing = false;
410
+ this.hide = true;
411
+ // eslint-disable-next-line lightning-global/no-custom-event-bubbling
412
+ const event = new CustomEvent('close', {
413
+ bubbles: true,
414
+ detail: {
415
+ isFocused: this._isFocused,
416
+ },
417
+ });
418
+ this.dispatchEvent(event);
419
+ }
420
+ }
421
+
422
+ /**
423
+ * Handle focus in event, mark current toast is in focus.
424
+ */
425
+ handleFocusIn() {
426
+ this._isFocused = true;
427
+ }
428
+ /**
429
+ * Handle focus out event, mark current toast is no longer in focus.
430
+ */
431
+ handleFocusOut() {
432
+ this._isFocused = false;
433
+ }
434
+
435
+ /**
436
+ * Register the toast with its container including callback to unregister the toast
437
+ */
438
+ registerWithContainer() {
439
+ const event = new CustomEvent('privatetoastregister', {
440
+ bubbles: true,
441
+ cancelable: true,
442
+ detail: {
443
+ unregisterCallback: (unregisterCallback) => {
444
+ this.unregisterCallback = unregisterCallback;
445
+ },
446
+ },
447
+ });
448
+ this.dispatchEvent(event);
449
+ }
450
+
451
+ /**
452
+ * make sure to call the function to register the toast with its container if defined,
453
+ * as well as reset the running time if there is one, to avoid the timeout,
454
+ * reaching 0 and creating actions on the unrendered toast element.
455
+ */
456
+ reset() {
457
+ if (this.unregisterCallback) {
458
+ this.unregisterCallback();
459
+ }
460
+ this._isFocused = false;
461
+ // If timeoutId is not null, there is an active timer.
462
+ if (this.timeoutId) {
463
+ clearTimeout(this.timeoutId);
464
+ }
465
+ if (this._resizeObserver) {
466
+ this._resizeObserver.disconnect();
467
+ this._resizeObserver = null;
468
+ }
469
+ if (this._portraitMatchMedia) {
470
+ this._portraitMatchMedia.removeEventListener(
471
+ 'change',
472
+ this._screenOrientationChangeHandler
473
+ );
474
+ }
475
+ if (this._screenOrientationChangeHandler) {
476
+ this._screenOrientationChangeHandler = null;
477
+ }
478
+ }
479
+
480
+ /**
481
+ * setup resize observer of the toast's host watching for screen screen
482
+ */
483
+ setupResizeObserver() {
484
+ if (this._resizeObserver) {
485
+ return;
486
+ }
487
+
488
+ const resizeObserver = new LightningResizeObserver(() => {
489
+ if (this.isConnected) {
490
+ this.determineSmallerScreen();
491
+ }
492
+ });
493
+ resizeObserver.observe(this.template.host);
494
+ this._resizeObserver = resizeObserver;
495
+ }
496
+
497
+ /**
498
+ * add listener to handle the screen orientation change
499
+ */
500
+ addOrientationChangeListener() {
501
+ this._portraitMatchMedia = window.matchMedia('(orientation: portrait)');
502
+ this._screenOrientationChangeHandler =
503
+ this.determineSmallerScreen.bind(this);
504
+ this._portraitMatchMedia.addEventListener(
505
+ 'change',
506
+ this._screenOrientationChangeHandler
507
+ );
508
+ }
509
+
510
+ /**
511
+ * determine if the current screen is less than MIN_BROWSER_WIDTH
512
+ */
513
+ determineSmallerScreen() {
514
+ const browserWidth =
515
+ (document &&
516
+ document.documentElement &&
517
+ document.documentElement.clientWidth) ||
518
+ window.innerWidth;
519
+ const isSmallerBrowserWidth = browserWidth <= MIN_BROWSER_WIDTH;
520
+ if (isSmallerBrowserWidth !== this._isSmallerBrowserWidth) {
521
+ this._isSmallerBrowserWidth = isSmallerBrowserWidth;
522
+ }
523
+ }
524
+
525
+ /**
526
+ * determine if it is small form factor
527
+ */
528
+ determineSmallFormFactor() {
529
+ if (formFactorPropertyName === 'Small') {
530
+ this._isSmallFormFactor = true;
531
+ }
532
+ }
533
+
534
+ connectedCallback() {
535
+ this.registerWithContainer();
536
+ this.determineSmallerScreen();
537
+ this.determineSmallFormFactor();
538
+ this.setupResizeObserver();
539
+ this.addOrientationChangeListener();
540
+ }
541
+
542
+ renderedCallback() {
543
+ // Track firstRender because only want to check for links and start the timeout timer on the first render.
544
+ if (this.firstRender) {
545
+ this.firstRender = false;
546
+ // check if there is link in label or message
547
+ const hasLink = this.hasLink();
548
+
549
+ // Timeout duration is set to 9600ms if there is a link and 4800ms otherwise.
550
+ const duration = hasLink ? DURATION_LINK : DURATION_NO_LINK;
551
+
552
+ // if mode is not provided, the default mode will be determined according to the variant and the presence of links
553
+ if (!this._mode) {
554
+ this._mode = this.calculateDefaultMode(hasLink);
555
+ }
556
+
557
+ // If the mode is dismissible (i.e. not sticky), then the toast will disappear after the duration. Start the timer here.
558
+ if (this._mode !== MODE_STICKY) {
559
+ // eslint-disable-next-line @lwc/lwc/no-async-operation
560
+ this.timeoutId = setTimeout(() => {
561
+ this.close();
562
+ this.timeoutId = null;
563
+ }, duration);
564
+ }
565
+ // add the data-f6-region attribute to the toast div
566
+ this.toastElement.setAttribute(
567
+ DEFAULT_CONFIG.f6RegionAttribute,
568
+ ''
569
+ );
570
+ }
571
+ }
572
+
573
+ disconnectedCallback() {
574
+ this.reset();
575
+ }
576
+
577
+ /**
578
+ * Function to trigger a toast show
579
+ * @param {object} config a map of toast attributes -> value to be set.
580
+ * Expected shape of config:
581
+ * {
582
+ * label: <string template> - required
583
+ * labelLinks: [{ url, label }] or { name: { url, label } }
584
+ * message: <string template>
585
+ * messageLinks: [{ url, label }] or { name: { url, label } }
586
+ * variant: <info|success|warning|error>
587
+ * mode: <dismissible|sticky>
588
+ * on<eventname>: <handler function>
589
+ * }
590
+ * @param {HTMLElement} source - source element which trigger the toast showing, typically this from local component
591
+ */
592
+ static show(config, source) {
593
+ // make sure the page-level container is created
594
+ ToastContainer.instance();
595
+ // create and dispatch the ShowToastEvent
596
+ const event = new ShowToastEvent({
597
+ ...config,
598
+ toast: this,
599
+ source,
600
+ });
601
+
602
+ if (source) {
603
+ source.dispatchEvent(event);
604
+ } else {
605
+ document.body.dispatchEvent(event);
606
+ }
607
+ }
608
+ }
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <LightningComponentBundle xmlns="xmlns=http://soap.sforce.com/2006/04/metadata">
3
+ <isExposed>true</isExposed>
4
+ </LightningComponentBundle>