@salesforcedevs/dx-components 0.26.1-alpha.10 → 0.26.1-alpha.14

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 (281) hide show
  1. package/lwc.config.json +1 -1
  2. package/package.json +1 -7
  3. package/src/assets/icons/action-sprite/svg/symbols.svg +1 -0
  4. package/src/assets/icons/brand-sprite/svg/symbols.svg +1381 -0
  5. package/src/assets/icons/custom-sprite/svg/symbols.svg +1 -0
  6. package/src/assets/icons/doctype-sprite/svg/symbols.svg +1 -0
  7. package/src/assets/icons/general-sprite/svg/symbols.svg +3013 -0
  8. package/src/assets/icons/salesforcebrand-sprite/svg/symbols.svg +257 -0
  9. package/src/assets/icons/standard-sprite/svg/symbols.svg +1 -0
  10. package/src/assets/icons/utility-sprite/svg/symbols.svg +1 -0
  11. package/src/assets/svg/card-news-learn-moar.svg +415 -0
  12. package/src/assets/svg/cloud-1.svg +24 -0
  13. package/src/assets/svg/cloud-2.svg +18 -0
  14. package/src/assets/svg/codey.svg +93 -0
  15. package/src/assets/svg/command.svg +9 -0
  16. package/src/assets/svg/control.svg +10 -0
  17. package/src/assets/svg/docs-empty-state-small.svg +72 -0
  18. package/src/assets/svg/docs-empty-state.svg +86 -0
  19. package/src/assets/svg/dsc-home-news-bear.svg +3 -0
  20. package/src/assets/svg/dsc-home-news-community.png +0 -0
  21. package/src/assets/svg/dsc-home-news-goatbear.svg +257 -0
  22. package/src/assets/svg/dsc-home-news-samplegallery.svg +76 -0
  23. package/src/assets/svg/empty-state-assistant.svg +1 -0
  24. package/src/assets/svg/fch-blog-cloud-1.png +0 -0
  25. package/src/assets/svg/fch-blog-cloud-2.png +0 -0
  26. package/src/assets/svg/fch-blog-planet.png +0 -0
  27. package/src/assets/svg/feature-backdrop1.svg +10 -0
  28. package/src/assets/svg/feature-backdrop2.svg +10 -0
  29. package/src/assets/svg/featured-demo-art-blank.svg +76 -0
  30. package/src/assets/svg/featured-demo-art-eBikes.svg +77 -0
  31. package/src/assets/svg/footer-graphic-large.svg +207 -0
  32. package/src/assets/svg/footer-graphic-mountains-small.svg +17 -0
  33. package/src/assets/svg/footer-graphic-mountains.svg +21 -0
  34. package/src/assets/svg/footer-graphic-trees-small.svg +33 -0
  35. package/src/assets/svg/footer-graphic-trees.svg +62 -0
  36. package/src/assets/svg/lake-mountain.svg +79 -0
  37. package/src/assets/svg/podcast-subscription-clouds-small.svg +49 -0
  38. package/src/assets/svg/podcast-subscription-clouds.svg +57 -0
  39. package/src/assets/svg/podcasts-subscription-apple.svg +164 -0
  40. package/src/assets/svg/podcasts-subscription-google.svg +29 -0
  41. package/src/assets/svg/podcasts-subscription-spotify.svg +11 -0
  42. package/src/assets/svg/salesforce-cloud.svg +7 -0
  43. package/src/assets/svg/salesforce-logo-corporate.svg +21 -0
  44. package/src/assets/svg/salesforce-logo.svg +14 -0
  45. package/src/assets/svg/sidebar-loading.svg +34 -0
  46. package/src/assets/svg/slack-cta-podcast-background-left.svg +28 -0
  47. package/src/assets/svg/slack-cta-podcast-background-right.svg +38 -0
  48. package/src/assets/svg/trees.svg +42 -0
  49. package/src/modules/dx/cardBlogPostProvider/cardBlogPostProvider.ts +1 -1
  50. package/src/modules/dx/cardCallout/cardCallout.ts +1 -1
  51. package/src/modules/dx/cardContent/cardContent.ts +2 -2
  52. package/src/modules/dx/cardDocs/cardDocs.ts +1 -1
  53. package/src/modules/dx/cardExpanded/cardExpanded.ts +1 -1
  54. package/src/modules/dx/cardMinimal/cardMinimal.ts +1 -1
  55. package/src/modules/dx/cardNews/cardNews.ts +1 -1
  56. package/src/modules/dx/cardPodcastEpisodeProvider/cardPodcastEpisodeProvider.ts +1 -1
  57. package/src/modules/dx/cardSmall/cardSmall.ts +1 -1
  58. package/src/modules/dx/codeBlock/codeBlock.ts +1 -1
  59. package/src/modules/dx/dropdown/dropdown.ts +1 -1
  60. package/src/modules/dx/featuredContentHeader/featuredContentHeader.ts +1 -1
  61. package/src/modules/dx/groupText/groupText.ts +1 -1
  62. package/src/modules/dx/header/header.ts +1 -1
  63. package/src/modules/dx/headerMobileNavMenu/headerMobileNavMenu.ts +1 -1
  64. package/src/modules/dx/headerSearch/headerSearch.ts +1 -1
  65. package/src/modules/dx/icon/icon.ts +1 -1
  66. package/src/modules/dx/iconBadge/iconBadge.ts +1 -1
  67. package/src/modules/dx/input/input.ts +1 -1
  68. package/src/modules/dx/popover/popover.ts +1 -1
  69. package/src/modules/dx/section/section.ts +1 -1
  70. package/src/modules/dx/sidebar/sidebar.ts +1 -1
  71. package/src/modules/dx/sidebarSearch/sidebarSearch.ts +2 -2
  72. package/src/modules/dx/typeBadge/typeBadge.ts +1 -1
  73. package/src/modules/utils/archiveCard/archiveCard.ts +35 -0
  74. package/src/modules/utils/coveo/coveo.ts +70 -0
  75. package/src/modules/utils/css/css.ts +43 -0
  76. package/src/modules/utils/devices/devices.ts +1 -0
  77. package/src/modules/utils/headerBase/headerBase.ts +204 -0
  78. package/src/modules/utils/highlight/highlight.ts +1 -1
  79. package/src/modules/utils/options/options.ts +39 -0
  80. package/src/modules/utils/prismjs/prismjs.html +3 -0
  81. package/src/modules/utils/prismjs/prismjs.ts +3321 -0
  82. package/src/modules/utils/recentSearches/recentSearches.ts +57 -0
  83. package/src/modules/utils/regexps/regexps.ts +5 -0
  84. package/src/modules/utils/seo/seo.ts +4 -0
  85. package/src/modules/utils/slot/slot.ts +17 -0
  86. package/src/modules/utils/wordpress/wordpress.ts +13 -0
  87. package/src/modules/dx/.DS_Store +0 -0
  88. package/src/modules/dx/banner/__tests__/banner.test.ts +0 -33
  89. package/src/modules/dx/brandThemeProvider/__tests__/brandThemeProvider.test.ts +0 -49
  90. package/src/modules/dx/brandThemeProvider/brandThemeProvider.stories.ts +0 -321
  91. package/src/modules/dx/breadcrumbs/__tests__/breadcrumbs.test.ts +0 -140
  92. package/src/modules/dx/breadcrumbs/__tests__/mockProps.ts +0 -28
  93. package/src/modules/dx/breadcrumbs/breadcrumbs.stories.ts +0 -39
  94. package/src/modules/dx/button/__tests__/button.test.ts +0 -107
  95. package/src/modules/dx/button/button.stories.ts +0 -150
  96. package/src/modules/dx/cardBlogPost/__tests__/cardBlogPost.test.ts +0 -26
  97. package/src/modules/dx/cardBlogPost/__tests__/mockProps.ts +0 -12
  98. package/src/modules/dx/cardBlogPost/cardBlogPost.stories.ts +0 -164
  99. package/src/modules/dx/cardBlogPostProvider/__tests__/cardBlogPostProvider.test.ts +0 -34
  100. package/src/modules/dx/cardBlogPostProvider/__tests__/mockWordpressPosts.ts +0 -44
  101. package/src/modules/dx/cardCallout/__tests__/cardCallout.test.ts +0 -20
  102. package/src/modules/dx/cardCallout/__tests__/mockProps.ts +0 -7
  103. package/src/modules/dx/cardCallout/cardCallout.stories.ts +0 -33
  104. package/src/modules/dx/cardContent/__tests__/cardContent.test.ts +0 -100
  105. package/src/modules/dx/cardContent/__tests__/mockProps.ts +0 -13
  106. package/src/modules/dx/cardContent/cardContent.stories.ts +0 -127
  107. package/src/modules/dx/cardDemo/cardDemo.stories.ts +0 -115
  108. package/src/modules/dx/cardDocs/__tests__/cardDocs.test.ts +0 -48
  109. package/src/modules/dx/cardDocs/__tests__/mockProps.ts +0 -9
  110. package/src/modules/dx/cardDocs/cardDocs.stories.ts +0 -299
  111. package/src/modules/dx/cardEvent/__tests__/cardEvent.test.ts +0 -95
  112. package/src/modules/dx/cardEvent/__tests__/mockProps.ts +0 -10
  113. package/src/modules/dx/cardEvent/cardEvent.stories.ts +0 -153
  114. package/src/modules/dx/cardExpanded/__tests__/cardExpanded.test.ts +0 -193
  115. package/src/modules/dx/cardExpanded/__tests__/mockProps.ts +0 -21
  116. package/src/modules/dx/cardExpanded/cardExpanded.stories.ts +0 -59
  117. package/src/modules/dx/cardGrid/__tests__/cardMockProps.ts +0 -431
  118. package/src/modules/dx/cardGrid/__tests__/mockProps.ts +0 -15
  119. package/src/modules/dx/cardGrid/cardGrid.stories.ts +0 -111
  120. package/src/modules/dx/cardMinimal/__tests__/cardMinimal.test.ts +0 -87
  121. package/src/modules/dx/cardMinimal/__tests__/mockProps.ts +0 -10
  122. package/src/modules/dx/cardMinimal/cardMinimal.stories.ts +0 -32
  123. package/src/modules/dx/cardNews/__tests__/cardNews.test.ts +0 -58
  124. package/src/modules/dx/cardNews/__tests__/mockProps.ts +0 -7
  125. package/src/modules/dx/cardNews/cardNews.stories.ts +0 -115
  126. package/src/modules/dx/cardPodcastEpisode/__tests__/cardPodcastEpisode.test.ts +0 -68
  127. package/src/modules/dx/cardPodcastEpisode/cardPodcastEpisode.stories.ts +0 -31
  128. package/src/modules/dx/cardPodcastEpisodeProvider/__tests__/cardPodcastEpisodeProvider.test.ts +0 -36
  129. package/src/modules/dx/cardPodcastEpisodeProvider/__tests__/mockWordpressEpisodes.ts +0 -50
  130. package/src/modules/dx/cardSmall/__tests__/cardSmall.test.ts +0 -66
  131. package/src/modules/dx/cardSmall/__tests__/mockProps.ts +0 -8
  132. package/src/modules/dx/cardSmall/cardSmall.stories.ts +0 -166
  133. package/src/modules/dx/cardTitle/__tests__/cardTitle.test.ts +0 -46
  134. package/src/modules/dx/cardTrailheadModule/__tests__/cardTrailheadModule.test.ts +0 -18
  135. package/src/modules/dx/cardTrailheadModule/__tests__/mockProps.ts +0 -11
  136. package/src/modules/dx/cardTrailheadModule/cardTrailheadModule.stories.ts +0 -122
  137. package/src/modules/dx/cardVideoPreview/__tests__/cardVideoPreview.test.ts +0 -22
  138. package/src/modules/dx/cardVideoPreview/__tests__/mockProps.ts +0 -11
  139. package/src/modules/dx/cardVideoPreview/cardVideoPreview.stories.ts +0 -147
  140. package/src/modules/dx/checkbox/__tests__/checkbox.test.ts +0 -85
  141. package/src/modules/dx/checkbox/__tests__/mockProps.ts +0 -5
  142. package/src/modules/dx/checkbox/checkbox.stories.ts +0 -38
  143. package/src/modules/dx/checkboxGroup/__tests__/checkboxGroup.test.ts +0 -80
  144. package/src/modules/dx/checkboxGroup/__tests__/mockProps.ts +0 -14
  145. package/src/modules/dx/checkboxGroup/checkboxGroup.stories.ts +0 -33
  146. package/src/modules/dx/codeBlock/__tests__/codeBlock.test.ts +0 -238
  147. package/src/modules/dx/codeBlock/__tests__/mockProps.ts +0 -160
  148. package/src/modules/dx/codeBlock/codeBlock.stories.ts +0 -143
  149. package/src/modules/dx/dropdown/__tests__/dropdown.test.ts +0 -165
  150. package/src/modules/dx/dropdown/__tests__/mockNestedOptions.ts +0 -96
  151. package/src/modules/dx/dropdown/__tests__/mockOptions.ts +0 -10
  152. package/src/modules/dx/dropdown/__tests__/mockProps.ts +0 -6
  153. package/src/modules/dx/dropdown/dropdown.stories.ts +0 -89
  154. package/src/modules/dx/dropdownOption/__tests__/dropdownOption.test.ts +0 -112
  155. package/src/modules/dx/dropdownOption/__tests__/mockProps.ts +0 -20
  156. package/src/modules/dx/emptyState/__tests__/emptyState.test.ts +0 -52
  157. package/src/modules/dx/emptyState/__tests__/mockProps.ts +0 -4
  158. package/src/modules/dx/emptyState/emptyState.stories.ts +0 -45
  159. package/src/modules/dx/feature/__tests__/feature.test.ts +0 -51
  160. package/src/modules/dx/feature/__tests__/mockProps.ts +0 -8
  161. package/src/modules/dx/featureGrid/__tests__/featureGrid.test.ts +0 -21
  162. package/src/modules/dx/featureGrid/featureGrid.stories.ts +0 -120
  163. package/src/modules/dx/featuredContentHeader/__tests__/featuredContentHeader.test.ts +0 -178
  164. package/src/modules/dx/featuredContentHeader/__tests__/mockProps.ts +0 -73
  165. package/src/modules/dx/featuredContentHeader/featuredContentHeader.stories.ts +0 -153
  166. package/src/modules/dx/featuresList/__tests__/featuresList.test.ts +0 -43
  167. package/src/modules/dx/featuresList/__tests__/mockProps.ts +0 -17
  168. package/src/modules/dx/featuresList/featuresList.stories.ts +0 -30
  169. package/src/modules/dx/footer/__tests__/footer.test.ts +0 -147
  170. package/src/modules/dx/footer/__tests__/mockLocales.ts +0 -7
  171. package/src/modules/dx/footer/footer.stories.ts +0 -88
  172. package/src/modules/dx/footerOption/__tests__/footerOption.test.ts +0 -34
  173. package/src/modules/dx/footerOption/__tests__/mockProps.ts +0 -7
  174. package/src/modules/dx/formattedDateTime/__tests__/formattedDateTime.test.ts +0 -25
  175. package/src/modules/dx/formattedDateTime/__tests__/mockProps.ts +0 -13
  176. package/src/modules/dx/formattedDateTime/formattedDateTime.stories.ts +0 -103
  177. package/src/modules/dx/grid/__tests__/grid.test.ts +0 -32
  178. package/src/modules/dx/grid/grid.stories.ts +0 -134
  179. package/src/modules/dx/groupBio/__tests__/groupBio.test.ts +0 -82
  180. package/src/modules/dx/groupBio/__tests__/mockProps.ts +0 -15
  181. package/src/modules/dx/groupBio/groupBio.stories.ts +0 -66
  182. package/src/modules/dx/groupText/__tests__/groupText.test.ts +0 -69
  183. package/src/modules/dx/groupText/__tests__/mockProps.ts +0 -35
  184. package/src/modules/dx/groupText/groupText.stories.ts +0 -81
  185. package/src/modules/dx/header/__tests__/header.test.ts +0 -236
  186. package/src/modules/dx/header/__tests__/mockNavArchitects.ts +0 -169
  187. package/src/modules/dx/header/__tests__/mockNavDevelopers.ts +0 -419
  188. package/src/modules/dx/header/__tests__/mockNavs.ts +0 -115
  189. package/src/modules/dx/header/__tests__/mockProps.ts +0 -164
  190. package/src/modules/dx/header/header.stories.ts +0 -172
  191. package/src/modules/dx/headerMobileNavMenu/__tests__/headerMobileNavMenu.test.ts +0 -123
  192. package/src/modules/dx/headerMobileNavMenuOption/__tests__/headerMobileNavMenuOption.test.ts +0 -38
  193. package/src/modules/dx/headerNav/__tests__/headerNav.test.ts +0 -49
  194. package/src/modules/dx/headerSearch/__tests__/headerSearch.test.ts +0 -182
  195. package/src/modules/dx/headerSearch/__tests__/mockData.ts +0 -11
  196. package/src/modules/dx/headerSearch/__tests__/mockProps.ts +0 -6
  197. package/src/modules/dx/helmet/__tests__/helmet.test.ts +0 -52
  198. package/src/modules/dx/helmet/helmet.stories.ts +0 -53
  199. package/src/modules/dx/hr/__tests__/hr.test.ts +0 -53
  200. package/src/modules/dx/hr/__tests__/mockProps.ts +0 -16
  201. package/src/modules/dx/hr/hr.stories.ts +0 -50
  202. package/src/modules/dx/icon/__tests__/icon.test.ts +0 -54
  203. package/src/modules/dx/icon/icon.stories.ts +0 -100
  204. package/src/modules/dx/iconBadge/__tests__/iconBadge.test.ts +0 -17
  205. package/src/modules/dx/iconBadge/iconBadge.stories.ts +0 -32
  206. package/src/modules/dx/imageAndLabel/__tests__/imageAndLabel.test.ts +0 -39
  207. package/src/modules/dx/imageAndLabel/__tests__/mockProps.ts +0 -6
  208. package/src/modules/dx/imageAndLabel/imageAndLabel.stories.ts +0 -48
  209. package/src/modules/dx/input/__tests__/input.test.ts +0 -357
  210. package/src/modules/dx/input/input.stories.ts +0 -102
  211. package/src/modules/dx/instrumentation/__tests__/instrumentation.test.ts +0 -86
  212. package/src/modules/dx/interactiveImage/__tests__/interactiveImage.test.ts +0 -83
  213. package/src/modules/dx/interactiveImage/__tests__/mockProps.ts +0 -39
  214. package/src/modules/dx/interactiveImage/interactiveImage.stories.ts +0 -31
  215. package/src/modules/dx/lazy/__tests__/lazy.test.ts +0 -43
  216. package/src/modules/dx/lazy/lazy.stories.ts +0 -132
  217. package/src/modules/dx/pagination/__tests__/pagination.test.ts +0 -121
  218. package/src/modules/dx/pagination/pagination.stories.ts +0 -88
  219. package/src/modules/dx/podcastHost/__tests__/mockProps.ts +0 -8
  220. package/src/modules/dx/podcastHost/__tests__/podcastHost.test.ts +0 -21
  221. package/src/modules/dx/podcastHost/podcastHost.stories.ts +0 -17
  222. package/src/modules/dx/podcastPlayer/__tests__/podcastPlayer.test.ts +0 -20
  223. package/src/modules/dx/podcastPlayer/podcastPlayer.stories.ts +0 -13
  224. package/src/modules/dx/podcastSubscription/__tests__/podcastSubscription.test.ts +0 -16
  225. package/src/modules/dx/podcastSubscription/podcastSubscription.stories.ts +0 -23
  226. package/src/modules/dx/popover/__tests__/mockProps.ts +0 -8
  227. package/src/modules/dx/popover/__tests__/popover.test.ts +0 -313
  228. package/src/modules/dx/popover/popover.stories.ts +0 -82
  229. package/src/modules/dx/radioGroup/__tests__/mockProps.ts +0 -12
  230. package/src/modules/dx/radioGroup/__tests__/radioGroup.test.ts +0 -42
  231. package/src/modules/dx/radioGroup/radioGroup.stories.ts +0 -25
  232. package/src/modules/dx/relativeDateTime/__tests__/mockProps.ts +0 -55
  233. package/src/modules/dx/relativeDateTime/__tests__/relativeDateTime.test.ts +0 -52
  234. package/src/modules/dx/relativeDateTime/relativeDateTime.stories.ts +0 -83
  235. package/src/modules/dx/searchResults/searchResults.stories.ts +0 -36
  236. package/src/modules/dx/section/__tests__/section.test.ts +0 -17
  237. package/src/modules/dx/section/section.stories.ts +0 -381
  238. package/src/modules/dx/sectionSignup/__tests__/sectionSignup.test.ts +0 -66
  239. package/src/modules/dx/sectionSignup/sectionSignup.stories.ts +0 -49
  240. package/src/modules/dx/select/select.stories.ts +0 -59
  241. package/src/modules/dx/sidebar/__tests__/mockProps.ts +0 -181
  242. package/src/modules/dx/sidebar/__tests__/mockSearchChangeEmptyEvent.ts +0 -6
  243. package/src/modules/dx/sidebar/__tests__/mockSearchChangeEvent.ts +0 -527
  244. package/src/modules/dx/sidebar/__tests__/sidebar.test.ts +0 -568
  245. package/src/modules/dx/sidebar/sidebar.stories.ts +0 -188
  246. package/src/modules/dx/sidebarOld/__tests__/mockProps.ts +0 -178
  247. package/src/modules/dx/sidebarOld/__tests__/sidebarOld.test.ts +0 -570
  248. package/src/modules/dx/sidebarOld/sidebarOld.stories.ts +0 -139
  249. package/src/modules/dx/sidebarSearch/__tests__/mockPreloadedState.ts +0 -1686
  250. package/src/modules/dx/sidebarSearch/__tests__/sidebarSearch.test.ts +0 -175
  251. package/src/modules/dx/sidebarSearchResult/__tests__/sidebarSearchResult.test.ts +0 -96
  252. package/src/modules/dx/slackCta/__tests__/slackCta.test.ts +0 -48
  253. package/src/modules/dx/slackCta/slackCta.stories.ts +0 -25
  254. package/src/modules/dx/socials/__tests__/socials.test.ts +0 -114
  255. package/src/modules/dx/socials/socials.stories.ts +0 -24
  256. package/src/modules/dx/spinner/__tests__/spinner.test.ts +0 -37
  257. package/src/modules/dx/spinner/spinner.stories.ts +0 -69
  258. package/src/modules/dx/tab/__tests__/tab.test.ts +0 -129
  259. package/src/modules/dx/tab/tab.stories.ts +0 -57
  260. package/src/modules/dx/toc/__tests__/mockProps.ts +0 -28
  261. package/src/modules/dx/toc/__tests__/toc.test.ts +0 -109
  262. package/src/modules/dx/toc/toc.stories.ts +0 -26
  263. package/src/modules/dx/tooltip/__tests__/tooltip.test.ts +0 -22
  264. package/src/modules/dx/tooltip/tooltip.stories.ts +0 -46
  265. package/src/modules/dx/topics/__tests__/mockProps.ts +0 -3
  266. package/src/modules/dx/topics/__tests__/topics.test.ts +0 -31
  267. package/src/modules/dx/tree/__tests__/mockProps.ts +0 -215
  268. package/src/modules/dx/tree/__tests__/tree.test.ts +0 -346
  269. package/src/modules/dx/tree/__tests__/treeHandler.test.ts +0 -194
  270. package/src/modules/dx/tree/tree.stories.ts +0 -65
  271. package/src/modules/dx/treeItem/__tests__/mockProps.ts +0 -46
  272. package/src/modules/dx/treeItem/__tests__/treeItem.test.ts +0 -377
  273. package/src/modules/dx/treeTile/__tests__/mockProps.ts +0 -16
  274. package/src/modules/dx/treeTile/__tests__/treeTile.test.ts +0 -168
  275. package/src/modules/dx/typeBadge/__tests__/typeBadge.test.ts +0 -77
  276. package/src/modules/dx/typeBadge/typeBadge.stories.ts +0 -114
  277. package/src/modules/dx/typeBadgeGroup/__tests__/mockProps.ts +0 -11
  278. package/src/modules/dx/typeBadgeGroup/__tests__/typeBadgeGroup.test.ts +0 -72
  279. package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.stories.ts +0 -19
  280. package/src/modules/utils/highlight/__tests__/highlight.test.ts +0 -108
  281. package/src/modules/utils/highlight/__tests__/mockProps.ts +0 -45
@@ -0,0 +1,204 @@
1
+ import { LightningElement, api } from "lwc";
2
+ import cx from "classnames";
3
+ import { Brand, Option } from "typings/custom";
4
+ import { toJson } from "utils/normalizers";
5
+ import { track } from "dx/instrumentation";
6
+
7
+ const VALID_BRANDS = [
8
+ "analytics",
9
+ "commerce",
10
+ "employees",
11
+ "industries",
12
+ "integration",
13
+ "learning",
14
+ "marketing",
15
+ "partners",
16
+ "platform",
17
+ "sales",
18
+ "service",
19
+ "success"
20
+ ];
21
+
22
+ export const ANALYTICS_INFO = {
23
+ clickText: "Sign Up",
24
+ itemTitle: "Sign Up Header Button",
25
+ elementType: "button",
26
+ destinationType: "internal",
27
+ ctaClick: true
28
+ };
29
+
30
+ export abstract class HeaderBase extends LightningElement {
31
+ @api bailHref?: string | null = null;
32
+ @api bailLabel?: string | null = null;
33
+ @api brand: Brand | null = null;
34
+ @api coveoOrganizationId: string | null = null;
35
+ @api coveoPublicAccessToken: string | null = null;
36
+ @api coveoSearchHub: string | null = null;
37
+ @api coveoSearchPipeline: string | null = null;
38
+ @api signupLink?: string | null = null;
39
+ @api href = null;
40
+ @api subtitle!: string;
41
+ @api title: string = "Salesforce";
42
+ @api version?: string | null = null;
43
+ @api bannerMarkup =
44
+ '<span><a href="https://forms.gle/TdSyKFPHXoBx7seM9" target="blank">Share your feedback</a>about our new site.</span>';
45
+
46
+ @api
47
+ get navItems() {
48
+ return this._navItems;
49
+ }
50
+
51
+ set navItems(value) {
52
+ this._navItems = toJson(value);
53
+ }
54
+
55
+ @api
56
+ get versions() {
57
+ return this._versions;
58
+ }
59
+ set versions(value) {
60
+ this._versions = toJson(value);
61
+ }
62
+
63
+ private _navItems!: Option[];
64
+ private _versions!: Option[];
65
+ private matchMedia!: MediaQueryList;
66
+ protected mobile: boolean = false;
67
+ private mobileNavMenuValue: string | null = null;
68
+ private showMobileNavMenu: boolean = false;
69
+ private showNavScrollShadow: boolean = false;
70
+ protected isSearchOpen: boolean = false;
71
+
72
+ get url() {
73
+ return this.href ? new URL(this.href!) : window.location;
74
+ }
75
+
76
+ get hasBailLink(): boolean {
77
+ return !!(this.bailHref && this.bailLabel);
78
+ }
79
+
80
+ get hasSearch() {
81
+ return (
82
+ this.coveoOrganizationId &&
83
+ this.coveoPublicAccessToken &&
84
+ this.coveoSearchHub &&
85
+ this.coveoSearchPipeline
86
+ );
87
+ }
88
+
89
+ get pathname() {
90
+ return this.url.pathname;
91
+ }
92
+
93
+ get className() {
94
+ return cx(
95
+ this.hasNavItems && "has-nav-items",
96
+ this.showMobileNavMenu && "state-show-mobile-nav",
97
+ this.showNavScrollShadow &&
98
+ !this.showMobileNavMenu &&
99
+ "has-navscrollshadow",
100
+ this.additionalClasses()
101
+ );
102
+ }
103
+
104
+ get versionLabel() {
105
+ const selectedVersion = (this.versions || []).find(
106
+ (v) => v.id === this.version
107
+ );
108
+ return selectedVersion ? selectedVersion.label : "";
109
+ }
110
+
111
+ get mobileMenuIconSymbol() {
112
+ return this.showMobileNavMenu ? "close" : "rows";
113
+ }
114
+
115
+ get isValidBrand() {
116
+ return this.brand && VALID_BRANDS.includes(this.brand);
117
+ }
118
+
119
+ get hasNavItems(): boolean {
120
+ return this.navItems && this.navItems.length > 0;
121
+ }
122
+
123
+ connectedCallback() {
124
+ this.matchMedia = window.matchMedia(
125
+ `(max-width: ${this.mobileBreakpoint()})`
126
+ );
127
+ this.onMediaChange(this.matchMedia);
128
+ this.matchMedia.addEventListener("change", this.onMediaChange);
129
+ this.hashLinkScroll();
130
+ }
131
+
132
+ disconnectedCallback() {
133
+ this.matchMedia.removeEventListener("change", this.onMediaChange);
134
+ }
135
+
136
+ // Temporary solution to restore native anchor scrolling
137
+ private hashLinkScroll() {
138
+ const hash = window.location.hash;
139
+
140
+ if (hash !== "") {
141
+ // Push onto callback queue so it runs after the DOM is updated
142
+ setTimeout(() => {
143
+ const id = hash.replace("#", "");
144
+ const element = document.getElementById(id);
145
+ if (element && element.scrollIntoView) {
146
+ element.scrollIntoView();
147
+ }
148
+ }, 0);
149
+ }
150
+ }
151
+
152
+ private handleStateChange(event: CustomEvent<boolean>) {
153
+ event.stopPropagation();
154
+ this.isSearchOpen = event.detail;
155
+ }
156
+
157
+ onVersionChange(e: CustomEvent) {
158
+ this.dispatchEvent(
159
+ new CustomEvent("versionchange", {
160
+ detail: e.detail
161
+ })
162
+ );
163
+ }
164
+
165
+ onRequestOpenNavMenu(e: { detail: string }) {
166
+ this.mobileNavMenuValue = e.detail;
167
+ this.showMobileNavMenu = true;
168
+ }
169
+ private onMobileNavMenuChange(e: { detail: string }) {
170
+ this.mobileNavMenuValue = e.detail;
171
+ }
172
+ private toggleMobileNavMenu() {
173
+ this.showMobileNavMenu = !this.showMobileNavMenu;
174
+ }
175
+ private closeMobileNavMenu() {
176
+ this.showMobileNavMenu = false;
177
+ }
178
+
179
+ private onNavScroll(e: Event) {
180
+ this.showNavScrollShadow =
181
+ (<HTMLElement>e.currentTarget).scrollLeft > 4;
182
+ }
183
+ private onMediaChange = (e: MediaQueryListEvent | MediaQueryList) => {
184
+ if (!e.matches) {
185
+ this.mobile = false;
186
+ this.closeMobileNavMenu();
187
+ } else {
188
+ this.mobile = true;
189
+ }
190
+ };
191
+
192
+ private handleSignUpClick(e: PointerEvent) {
193
+ track(e.currentTarget!, "custEv_signupStart", {
194
+ ...ANALYTICS_INFO,
195
+ clickUrl: this.signupLink
196
+ });
197
+ }
198
+
199
+ protected additionalClasses(): string {
200
+ return "";
201
+ }
202
+
203
+ protected abstract mobileBreakpoint(): string;
204
+ }
@@ -1,4 +1,4 @@
1
- import { createSearchRegExp } from "utils-internal/regexps";
1
+ import { createSearchRegExp } from "utils/regexps";
2
2
 
3
3
  const MARK_TAGS = /<\/?mark>/gi;
4
4
 
@@ -0,0 +1,39 @@
1
+ import { Option } from "typings/custom";
2
+
3
+ const deepmapper = (
4
+ _options: Option[],
5
+ _callback: (option: Option, lavel: number) => Option,
6
+ level: number = 0
7
+ ): Option[] => {
8
+ const _level = level + 1;
9
+ return _options?.map((option: Option) =>
10
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
11
+ option.options
12
+ ? {
13
+ ...option,
14
+ options: deepmapper(option.options, _callback, _level)
15
+ }
16
+ : _callback(option, _level)
17
+ );
18
+ };
19
+
20
+ export const deepmapOptions = (
21
+ options: Option[],
22
+ callback: (option: Option, index: number, level: number) => Option
23
+ ): Option[] => {
24
+ let index = 0;
25
+ return deepmapper(options, (option, level) => {
26
+ const newOption = callback(option, index, level);
27
+ index += 1;
28
+ return newOption;
29
+ });
30
+ };
31
+
32
+ export const getOptionsCount = (options: Option[]) => {
33
+ let count = 0;
34
+ deepmapper(options, (option) => {
35
+ count += 1;
36
+ return option;
37
+ });
38
+ return count;
39
+ };
@@ -0,0 +1,3 @@
1
+ <template>
2
+ <!-- TODO: We don't need this file and have to figure why it's required by the build process. 🤷🏼‍♂️ -->
3
+ </template>