@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,57 @@
1
+ export const LOCAL_STORAGE_KEY = "dx-sidebar-recent-searches";
2
+
3
+ export const LIMIT = 5;
4
+
5
+ export class RecentSearches {
6
+ items: string[] = [];
7
+
8
+ constructor() {
9
+ this._init();
10
+ }
11
+
12
+ get() {
13
+ return this.items;
14
+ }
15
+
16
+ add(item: string | undefined) {
17
+ if (!item || typeof item !== "string") {
18
+ return;
19
+ }
20
+ const normalized = item.trim();
21
+ if (normalized === "") {
22
+ return;
23
+ }
24
+ this._prepend(normalized);
25
+ this._removeDuplicates(normalized);
26
+ this._cutOffExcess();
27
+ this._addToStorage();
28
+ }
29
+
30
+ // private
31
+ _init() {
32
+ this.items = JSON.parse(
33
+ window.localStorage.getItem(LOCAL_STORAGE_KEY) || "[]"
34
+ );
35
+ }
36
+
37
+ _prepend(item: string) {
38
+ this.items.unshift(item);
39
+ }
40
+
41
+ _removeDuplicates(item: string) {
42
+ while (this.items.lastIndexOf(item) > 0) {
43
+ this.items.splice(this.items.lastIndexOf(item), 1);
44
+ }
45
+ }
46
+
47
+ _cutOffExcess() {
48
+ this.items = this.items.slice(0, LIMIT);
49
+ }
50
+
51
+ _addToStorage() {
52
+ window.localStorage.setItem(
53
+ LOCAL_STORAGE_KEY,
54
+ JSON.stringify(this.items)
55
+ );
56
+ }
57
+ }
@@ -0,0 +1,5 @@
1
+ const escapeRegExp = (text: string) =>
2
+ text.replace(/[-[\]{}()*+?.,\\^$|]/g, "\\$&");
3
+
4
+ export const createSearchRegExp = (searchTerm: string): RegExp =>
5
+ new RegExp(`(?:${escapeRegExp(searchTerm)})(?![^<>]*>)`, "gi");
@@ -0,0 +1,4 @@
1
+ export function isPrerender(): boolean {
2
+ const userAgent = window.navigator.userAgent;
3
+ return userAgent.includes("Prerender");
4
+ }
@@ -0,0 +1,17 @@
1
+ import { LightningSlotElement } from "typings/custom";
2
+
3
+ export const isSlotEmpty = (e: LightningSlotElement) =>
4
+ // @ts-ignore
5
+ e.target.assignedElements().length === 0;
6
+
7
+ const stopPropagation = (event: Event) => {
8
+ event.stopPropagation();
9
+ };
10
+
11
+ export const stopPropagationOnSlotted = (e: LightningSlotElement) => {
12
+ // @ts-ignore
13
+ const slot = e.target;
14
+ slot.assignedElements().forEach((el: HTMLElement) => {
15
+ el.addEventListener("click", stopPropagation);
16
+ });
17
+ };
@@ -0,0 +1,13 @@
1
+ export const fetchWordpressPosts = async (
2
+ path: string,
3
+ normalizer: any,
4
+ count: string = "6"
5
+ ) => {
6
+ const res = await fetch(`${path}?maxResults=${count}`);
7
+ if (res.status !== 200) {
8
+ console.error("Failed to fetch posts", res);
9
+ return null;
10
+ }
11
+ const json = await res.json();
12
+ return json.posts.map(normalizer);
13
+ };
Binary file
@@ -1,33 +0,0 @@
1
- import Banner from "dx/banner";
2
- import { createRenderComponent } from "utils-internal/tests";
3
-
4
- const TAG = "dx-banner";
5
- const render = createRenderComponent(TAG, Banner);
6
-
7
- describe(TAG, () => {
8
- it("renders banner component", () => {
9
- const element = render();
10
-
11
- const innerContainer =
12
- element.shadowRoot.querySelectorAll(".container_inner");
13
-
14
- expect(innerContainer).not.toBeNull();
15
-
16
- return expect(element).toBeAccessible();
17
- });
18
-
19
- it("renders custom banner markup in the banner", () => {
20
- const element = render({
21
- bannerMarkup: "Give feedback about our new site"
22
- });
23
-
24
- const bannerContainer =
25
- element.shadowRoot.querySelector(".info-container");
26
-
27
- return Promise.resolve().then(() => {
28
- expect(bannerContainer.innerHTML).toContain(
29
- "Give feedback about our new site"
30
- );
31
- });
32
- });
33
- });
@@ -1,49 +0,0 @@
1
- import BrandThemeProvider, { toCss } from "dx/brandThemeProvider";
2
- import { createRenderComponent } from "utils-internal/tests";
3
- import brandCssVars from "../brandCssVars";
4
-
5
- const TAG = "dx-brand-theme-provider";
6
- const render = createRenderComponent(TAG, BrandThemeProvider);
7
-
8
- describe(TAG, () => {
9
- it("renders", () => {
10
- const element = render();
11
- return expect(element).toBeAccessible();
12
- });
13
-
14
- it("all css variables are accounted for", () => {
15
- const brand = "commerce";
16
- const element = render({ brand });
17
-
18
- const style = element.shadowRoot.querySelector("style");
19
- const { textContent } = style.childNodes[0];
20
- brandCssVars.forEach((v: string) => {
21
- expect(textContent).toContain(
22
- `${v}: var(${v.replace("current", brand)});`
23
- );
24
- });
25
-
26
- return expect(element).toBeAccessible();
27
- });
28
-
29
- it("renders a style element with textcontent that matches the output from the tocss fn()", () => {
30
- const brand = "commerce";
31
- const element = render({ brand });
32
-
33
- const expectedTextContent = toCss(brand);
34
- const style = element.shadowRoot.querySelector("style");
35
- const { textContent } = style.childNodes[0];
36
- expect(textContent).toEqual(expectedTextContent);
37
- return expect(element).toBeAccessible();
38
- });
39
-
40
- it("keeps one style element with one childnode at a time", () => {
41
- const brand = "commerce";
42
- const element = render({ brand });
43
-
44
- const styles = element.shadowRoot.querySelectorAll("style");
45
- expect(styles.length).toEqual(1);
46
- expect(Array.from(styles[0].childNodes).length).toEqual(1);
47
- return expect(element).toBeAccessible();
48
- });
49
- });
@@ -1,321 +0,0 @@
1
- import { html } from "lit-html";
2
-
3
- export default {
4
- title: "dx/dx-brand-theme-provider",
5
- component: "dx-brand-theme-provider"
6
- };
7
-
8
- const style = () => html` <style>
9
- body {
10
- padding: 0 !important;
11
- }
12
- #block {
13
- padding: 16px;
14
- display: flex;
15
- flex-direction: column;
16
- justify-content: center;
17
- align-items: flex-start;
18
- font-size: 12px;
19
- margin-bottom: 4px;
20
- box-shadow: 0 2px 2px 0px rgba(0, 0, 0, 0.07);
21
- }
22
- #block > span > span {
23
- color: grey;
24
- }
25
- </style>`;
26
-
27
- // prettier-ignore
28
- export const Service = () => html` ${style()}
29
- <dx-brand-theme-provider brand="service">
30
- <div id="block" style="background: var(--dx-g-brand-current-color)">
31
- <span>
32
- --dx-g-brand-current-color:
33
- <span>--dx-g-brand-service-color</span>
34
- </span>
35
- </div>
36
- <div
37
- id="block"
38
- style="background: var(--dx-g-brand-current-color-background)"
39
- >
40
- <span>
41
- --dx-g-brand-current-color-background:
42
- <span>--dx-g-brand-service-color-background</span>
43
- </span>
44
- </div>
45
- <div
46
- id="block"
47
- style="background: var(--dx-g-brand-current-color-background-2)"
48
- >
49
- <span>
50
- --dx-g-brand-current-color-background-2:
51
- <span>--dx-g-brand-service-color-background-2</span>
52
- </span>
53
- </div>
54
- <div
55
- id="block"
56
- style="background: var(--dx-g-brand-current-button-color-background-inactive)"
57
- >
58
- <span>
59
- --dx-g-brand-current-button-color-background-inactive:
60
- <span>--dx-g-brand-service-button-color-background-inactive</span>
61
- </span>
62
- </div>
63
- <div
64
- id="block"
65
- style="background: var(--dx-g-brand-current-button-color-background-inactive-hover)"
66
- >
67
- <span>
68
- --dx-g-brand-current-button-color-background-inactive-hover:
69
- <span>--dx-g-brand-service-button-color-background-inactive-hover</span>
70
- </span>
71
- </div>
72
- <div
73
- id="block"
74
- style="background: var(--dx-g-brand-current-button-color-background-active)"
75
- >
76
- <span>
77
- --dx-g-brand-current-button-color-background-active:
78
- <span>--dx-g-brand-service-button-color-background-active</span>
79
- </span>
80
- </div>
81
- <div
82
- id="block"
83
- style="background: var(--dx-g-brand-current-color-border)"
84
- >
85
- <span>
86
- --dx-g-brand-current-color-border:
87
- <span>--dx-g-brand-service-color-border</span>
88
- </span>
89
- </div>
90
- <div
91
- id="block"
92
- style="background: var(--dx-g-brand-current-color-border-2)"
93
- >
94
- <span>
95
- --dx-g-brand-current-color-border-2:
96
- <span>--dx-g-brand-service-color-border-2</span>
97
- </span>
98
- </div>
99
- </dx-brand-theme-provider>`;
100
-
101
- // prettier-ignore
102
- export const Partners = () => html` ${style()}
103
- <dx-brand-theme-provider brand="partners">
104
- <div id="block" style="background: var(--dx-g-brand-current-color)">
105
- <span>
106
- --dx-g-brand-current-color:
107
- <span>--dx-g-brand-partners-color</span>
108
- </span>
109
- </div>
110
- <div
111
- id="block"
112
- style="background: var(--dx-g-brand-current-color-background)"
113
- >
114
- <span>
115
- --dx-g-brand-current-color-background:
116
- <span>--dx-g-brand-partners-color-background</span>
117
- </span>
118
- </div>
119
- <div
120
- id="block"
121
- style="background: var(--dx-g-brand-current-color-background-2)"
122
- >
123
- <span>
124
- --dx-g-brand-current-color-background-2:
125
- <span>--dx-g-brand-partners-color-background-2</span>
126
- </span>
127
- </div>
128
- <div
129
- id="block"
130
- style="background: var(--dx-g-brand-current-button-color-background-inactive)"
131
- >
132
- <span>
133
- --dx-g-brand-current-button-color-background-inactive:
134
- <span>--dx-g-brand-partners-button-color-background-inactive</span>
135
- </span>
136
- </div>
137
- <div
138
- id="block"
139
- style="background: var(--dx-g-brand-current-button-color-background-inactive-hover)"
140
- >
141
- <span>
142
- --dx-g-brand-current-button-color-background-inactive-hover:
143
- <span>--dx-g-brand-partners-button-color-background-inactive-hover</span>
144
- </span>
145
- </div>
146
- <div
147
- id="block"
148
- style="background: var(--dx-g-brand-current-button-color-background-active)"
149
- >
150
- <span>
151
- --dx-g-brand-current-button-color-background-active:
152
- <span>--dx-g-brand-partners-button-color-background-active</span>
153
- </span>
154
- </div>
155
- <div
156
- id="block"
157
- style="background: var(--dx-g-brand-current-color-border)"
158
- >
159
- <span>
160
- --dx-g-brand-current-color-border:
161
- <span>--dx-g-brand-partners-color-border</span>
162
- </span>
163
- </div>
164
- <div
165
- id="block"
166
- style="background: var(--dx-g-brand-current-color-border-2)"
167
- >
168
- <span>
169
- --dx-g-brand-current-color-border-2:
170
- <span>--dx-g-brand-partners-color-border-2</span>
171
- </span>
172
- </div>
173
- </dx-brand-theme-provider>`;
174
-
175
- // prettier-ignore
176
- export const Industries = () => html` ${style()}
177
- <dx-brand-theme-provider brand="industries">
178
- <div id="block" style="background: var(--dx-g-brand-current-color)">
179
- <span>
180
- --dx-g-brand-current-color:
181
- <span>--dx-g-brand-industries-color</span>
182
- </span>
183
- </div>
184
- <div
185
- id="block"
186
- style="background: var(--dx-g-brand-current-color-background)"
187
- >
188
- <span>
189
- --dx-g-brand-current-color-background:
190
- <span>--dx-g-brand-industries-color-background</span>
191
- </span>
192
- </div>
193
- <div
194
- id="block"
195
- style="background: var(--dx-g-brand-current-color-background-2)"
196
- >
197
- <span>
198
- --dx-g-brand-current-color-background-2:
199
- <span>--dx-g-brand-industries-color-background-2</span>
200
- </span>
201
- </div>
202
- <div
203
- id="block"
204
- style="background: var(--dx-g-brand-current-button-color-background-inactive)"
205
- >
206
- <span>
207
- --dx-g-brand-current-button-color-background-inactive:
208
- <span>--dx-g-brand-industries-button-color-background-inactive</span>
209
- </span>
210
- </div>
211
- <div
212
- id="block"
213
- style="background: var(--dx-g-brand-current-button-color-background-inactive-hover)"
214
- >
215
- <span>
216
- --dx-g-brand-current-button-color-background-inactive-hover:
217
- <span>--dx-g-brand-industries-button-color-background-inactive-hover</span>
218
- </span>
219
- </div>
220
- <div
221
- id="block"
222
- style="background: var(--dx-g-brand-current-button-color-background-active)"
223
- >
224
- <span>
225
- --dx-g-brand-current-button-color-background-active:
226
- <span>--dx-g-brand-industries-button-color-background-active</span>
227
- </span>
228
- </div>
229
- <div
230
- id="block"
231
- style="background: var(--dx-g-brand-current-color-border)"
232
- >
233
- <span>
234
- --dx-g-brand-current-color-border:
235
- <span>--dx-g-brand-industries-color-border</span>
236
- </span>
237
- </div>
238
- <div
239
- id="block"
240
- style="background: var(--dx-g-brand-current-color-border-2)"
241
- >
242
- <span>
243
- --dx-g-brand-current-color-border-2:
244
- <span>--dx-g-brand-industries-color-border-2</span>
245
- </span>
246
- </div>
247
- </dx-brand-theme-provider>`;
248
-
249
- // prettier-ignore
250
- export const Sales = () => html ` ${style()}
251
- <dx-brand-theme-provider>
252
- <div id="block" style="background: var(--dx-g-brand-current-color)">
253
- <span>
254
- --dx-g-brand-current-color:
255
- <span>--dx-g-brand-sales-color</span>
256
- </span>
257
- </div>
258
- <div
259
- id="block"
260
- style="background: var(--dx-g-brand-current-color-background)"
261
- >
262
- <span>
263
- --dx-g-brand-current-color-background:
264
- <span>--dx-g-brand-sales-color-background</span>
265
- </span>
266
- </div>
267
- <div
268
- id="block"
269
- style="background: var(--dx-g-brand-current-color-background-2)"
270
- >
271
- <span>
272
- --dx-g-brand-current-color-background-2:
273
- <span>--dx-g-brand-sales-color-background-2</span>
274
- </span>
275
- </div>
276
- <div
277
- id="block"
278
- style="background: var(--dx-g-brand-current-button-color-background-inactive)"
279
- >
280
- <span>
281
- --dx-g-brand-current-button-color-background-inactive:
282
- <span>--dx-g-brand-sales-button-color-background-inactive</span>
283
- </span>
284
- </div>
285
- <div
286
- id="block"
287
- style="background: var(--dx-g-brand-current-button-color-background-inactive-hover)"
288
- >
289
- <span>
290
- --dx-g-brand-current-button-color-background-inactive-hover:
291
- <span>--dx-g-brand-sales-button-color-background-inactive-hover</span>
292
- </span>
293
- </div>
294
- <div
295
- id="block"
296
- style="background: var(--dx-g-brand-current-button-color-background-active)"
297
- >
298
- <span>
299
- --dx-g-brand-current-button-color-background-active:
300
- <span>--dx-g-brand-sales-button-color-background-active</span>
301
- </span>
302
- </div>
303
- <div
304
- id="block"
305
- style="background: var(--dx-g-brand-current-color-border)"
306
- >
307
- <span>
308
- --dx-g-brand-current-color-border:
309
- <span>--dx-g-brand-sales-color-border</span>
310
- </span>
311
- </div>
312
- <div
313
- id="block"
314
- style="background: var(--dx-g-brand-current-color-border-2)"
315
- >
316
- <span>
317
- --dx-g-brand-current-color-border-2:
318
- <span>--dx-g-brand-sales-color-border-2</span>
319
- </span>
320
- </div>
321
- </dx-brand-theme-provider>`;
@@ -1,140 +0,0 @@
1
- import Breadcrumbs from "dx/breadcrumbs";
2
- import Dropdown from "dx/dropdown";
3
- import { createRenderComponent } from "utils-internal/tests";
4
- import { mockPathname, mockBreadcrumbs, mockNavItems } from "./mockProps";
5
-
6
- const TAG = "dx-breadcrumbs";
7
- const render = createRenderComponent(TAG, Breadcrumbs);
8
-
9
- describe(TAG, () => {
10
- it("renders the correct number of crumbs", () => {
11
- const expectedOptionsLength = mockBreadcrumbs.length - 1;
12
-
13
- const element = render({ breadcrumbs: mockBreadcrumbs });
14
-
15
- const navElement: HTMLElement = element.shadowRoot.querySelector("nav");
16
- expect(navElement).not.toBeNull();
17
- expect(navElement.classList).toHaveLength(0);
18
-
19
- const breadcrumbs: Array<HTMLElement> =
20
- element.shadowRoot.querySelectorAll(".breadcrumb");
21
- const { length } = breadcrumbs;
22
- expect(breadcrumbs).toHaveLength(length);
23
- expect(
24
- Array.from(breadcrumbs)
25
- .splice(0, length - 1)
26
- .every(({ tagName }) => tagName === "A")
27
- ).toBe(true);
28
- expect(breadcrumbs[length - 1].tagName).toBe("SPAN");
29
-
30
- const dropdown: Dropdown =
31
- element.shadowRoot.querySelector("dx-dropdown");
32
- expect(dropdown).not.toBeNull();
33
- expect(dropdown.options).toHaveLength(expectedOptionsLength);
34
-
35
- dropdown.options.forEach((option, index) => {
36
- const { href, label } = mockBreadcrumbs[index];
37
- expect(option.label).toBe(label);
38
- expect(option.id).toBe(href);
39
- expect(option.link?.href).toBe(href);
40
- });
41
-
42
- return expect(element).toBeAccessible();
43
- });
44
-
45
- it("renders with current location hidden", () => {
46
- const element = render({
47
- breadcrumbs: mockBreadcrumbs,
48
- hideCurrentLocation: true
49
- });
50
-
51
- const navElement: HTMLElement = element.shadowRoot.querySelector("nav");
52
- expect(navElement).not.toBeNull();
53
- expect(navElement.classList).toHaveLength(1);
54
- expect(navElement.classList).toContain("hide-current-location");
55
-
56
- const breadcrumbs: Array<HTMLElement> =
57
- element.shadowRoot.querySelectorAll(".breadcrumb");
58
- expect(breadcrumbs).toHaveLength(mockBreadcrumbs.length - 1);
59
- expect(
60
- Array.from(breadcrumbs).every(({ tagName }) => tagName === "A")
61
- ).toBe(true);
62
-
63
- return expect(element).toBeAccessible();
64
- });
65
-
66
- it("renders with state-long class when passing truncate as true and has to many breadcrumbs", () => {
67
- const element = render({
68
- breadcrumbs: mockBreadcrumbs,
69
- truncate: true
70
- });
71
-
72
- const navElement: HTMLElement = element.shadowRoot.querySelector("nav");
73
- expect(navElement).not.toBeNull();
74
- expect(navElement.classList).toHaveLength(1);
75
- expect(navElement.classList[0]).toBe("state-long");
76
- });
77
-
78
- it("sets base href and title correctly", () => {
79
- const baseHref = "/test";
80
- const title = "testtitle";
81
- const element = render({ baseHref, title, logo: true });
82
-
83
- const logo = element.shadowRoot.querySelector("dx-logo");
84
- expect(logo).not.toBeNull();
85
- expect(logo.href).toEqual(baseHref);
86
- expect(logo.label).toEqual(title);
87
- });
88
-
89
- it("if not given breadcrumbs, parses the pathname and renders the correct number of links, each with the correct href", () => {
90
- const element = render({
91
- navItems: mockNavItems,
92
- pathname: mockPathname
93
- });
94
-
95
- const breadcrumbs = element.shadowRoot.querySelectorAll(".breadcrumb");
96
- expect(breadcrumbs.length).toEqual(mockBreadcrumbs.length);
97
-
98
- breadcrumbs.forEach((breadcrumb: HTMLLinkElement, i: number) => {
99
- const mockBreadcrumb = mockBreadcrumbs[i];
100
- if (i < breadcrumbs.length - 1) {
101
- const href = breadcrumb.getAttribute("href");
102
- expect(breadcrumb.tagName).toEqual("A");
103
- expect(href).toEqual(mockBreadcrumb.href);
104
- } else {
105
- expect(breadcrumb.tagName).toEqual("SPAN");
106
- }
107
- });
108
- return expect(element).toBeAccessible();
109
- });
110
-
111
- it("renders no links or spans when given an empty pathname", () => {
112
- const element = render({ pathname: "/" });
113
-
114
- const els = element.shadowRoot.querySelectorAll(
115
- ".breadcrumb .breadcrumb-slash span"
116
- );
117
- expect(els.length).toEqual(0);
118
-
119
- expect(element.shadowRoot.querySelector("dx-dropdown")).toBeNull();
120
- return expect(element).toBeAccessible();
121
- });
122
-
123
- it("Successfully sets a breadcrumb label", () => {
124
- const element = render({
125
- pathname: mockPathname,
126
- navItems: mockNavItems
127
- });
128
- const breadcrumbs = element.shadowRoot.querySelectorAll(".breadcrumb");
129
- expect(breadcrumbs[breadcrumbs.length - 1].textContent).toEqual(
130
- "New Label"
131
- );
132
- });
133
-
134
- it("renders correctly with duplicate path segments", async () => {
135
- const element = render({ pathname: "/home/home/home.html" });
136
-
137
- const breadcrumbs = element.shadowRoot.querySelectorAll(".breadcrumb");
138
- expect(breadcrumbs.length).toEqual(3);
139
- });
140
- });
@@ -1,28 +0,0 @@
1
- import { Option } from "typings/custom";
2
-
3
- export const mockPathname = "/piece1/piece2/piece3/piece4/piece5";
4
-
5
- export const mockBreadcrumbs = [
6
- { href: "/piece1", label: "Piece 1" },
7
- { href: "/piece1/piece2", label: "Piece 2" },
8
- { href: "/piece1/piece2/piece3", label: "Piece 3" },
9
- { href: "/piece1/piece2/piece3/piece4", label: "Piece 4" },
10
- { href: "/piece1/piece2/piece3/piece4/piece5", label: "Piece 5" }
11
- ];
12
-
13
- export const mockNavItems: Option[] = [
14
- { id: "1", label: "Label 1" },
15
- { id: "2", label: "Label 2" },
16
- {
17
- id: "3",
18
- label: "New Label",
19
- link: { href: mockPathname, target: "_blank" }
20
- },
21
- { id: "4", label: "Label 4" },
22
- {
23
- id: "5",
24
- label: "Label 5",
25
- link: { href: "https://www.heroku.com/", target: "_parent" },
26
- options: [{ id: "5.1", label: "Label 5.1", options: [] }]
27
- }
28
- ];