@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
@@ -1,313 +0,0 @@
1
- import Popover from "dx/popover";
2
- import PopoverTest from "test-components/popoverTest";
3
- import {
4
- createRenderComponent,
5
- mockSlottedElement
6
- } from "utils-internal/tests";
7
- import mockProps from "./mockProps";
8
-
9
- const TAG = "dx-popover";
10
- const render = createRenderComponent(TAG, Popover);
11
-
12
- const renderWithSlot = createRenderComponent("dx-popover-test", PopoverTest);
13
-
14
- describe(TAG, () => {
15
- describe("render", () => {
16
- const originalConsole = global.console;
17
-
18
- beforeAll(() => {
19
- global.console = { ...global.console, error: jest.fn() };
20
- });
21
-
22
- afterAll(() => {
23
- global.console = originalConsole;
24
- });
25
-
26
- it("renders the container div when a targetElement is set", () => {
27
- const component = render();
28
-
29
- expect(console.error).not.toBeCalled();
30
-
31
- const menuEl: HTMLElement =
32
- component.shadowRoot.querySelector(".popover-container");
33
- expect(menuEl).not.toBeNull();
34
- expect(menuEl.classList).toHaveLength(1);
35
-
36
- const popoverDiv: HTMLElement =
37
- menuEl.querySelector("div.popover")!;
38
- expect(popoverDiv).not.toBeNull();
39
- expect(popoverDiv.classList).toHaveLength(1);
40
-
41
- return expect(component).toBeAccessible();
42
- });
43
-
44
- it("renders with api properties", () => {
45
- const component = render(mockProps);
46
- expect(console.error).not.toBeCalled();
47
- const menuEl: HTMLElement =
48
- component.shadowRoot.querySelector(".popover-container");
49
- expect(menuEl).not.toBeNull();
50
- expect(menuEl.classList).toHaveLength(1);
51
-
52
- const popoverDiv: HTMLElement =
53
- menuEl.querySelector("div.popover")!;
54
- expect(popoverDiv).not.toBeNull();
55
- expect(popoverDiv.classList).toHaveLength(4);
56
- expect(popoverDiv.classList).toContain(
57
- `popover-offset-${mockProps.offset}`
58
- );
59
- expect(popoverDiv.classList).toContain("popover-small");
60
- expect(popoverDiv.classList).toContain("popover-overridewidth");
61
- expect(popoverDiv.ariaLabel).toBe(mockProps.ariaLabel);
62
- expect(popoverDiv.style.width).toBe(mockProps.width);
63
-
64
- return expect(component).toBeAccessible();
65
- });
66
-
67
- it("renders with fullwidth class", () => {
68
- const component = render({ fullWidth: true });
69
-
70
- expect(console.error).not.toBeCalled();
71
-
72
- const popoverDiv: HTMLElement =
73
- component.shadowRoot.querySelector("div.popover");
74
- expect(popoverDiv.classList).toHaveLength(2);
75
- expect(popoverDiv.classList).toContain("popover-fullwidth");
76
- });
77
-
78
- it("renders logs an error if fullWidth and width are trithy", () => {
79
- const component = render({ ...mockProps, fullWidth: true });
80
-
81
- expect(console.error).toBeCalledTimes(1);
82
- expect(console.error).toBeCalledWith(
83
- 'The "width" and "full-width" properties cannot be provided simultaneously.'
84
- );
85
-
86
- const popoverDiv: HTMLElement =
87
- component.shadowRoot.querySelector("div.popover");
88
- expect(popoverDiv.style).not.toBeNull();
89
- expect(popoverDiv.classList).toHaveLength(5);
90
- expect(popoverDiv.classList).toContain(
91
- `popover-offset-${mockProps.offset}`
92
- );
93
- expect(popoverDiv.classList).toContain("popover-small");
94
- expect(popoverDiv.classList).toContain("popover-overridewidth");
95
- expect(popoverDiv.classList).toContain("popover-fullwidth");
96
- });
97
-
98
- it("is accessible with its slotted control", async () => {
99
- const component = renderWithSlot();
100
-
101
- return expect(component).toBeAccessible();
102
- });
103
-
104
- it("correctly onboards its slotted control", async () => {
105
- const component = renderWithSlot();
106
-
107
- await Promise.resolve();
108
-
109
- const button = component.shadowRoot.querySelector("dx-button");
110
- const hasPopup = button.getAttribute("aria-haspopup");
111
- expect(hasPopup).toEqual("true");
112
- });
113
-
114
- it("doesn't render menu content before interaction", async () => {
115
- const component = render();
116
- const content =
117
- component.shadowRoot.querySelector(".popover-content");
118
-
119
- expect(content).toBeNull();
120
-
121
- component.openPopover();
122
-
123
- await Promise.resolve();
124
-
125
- const contentAfterOpen =
126
- component.shadowRoot.querySelector(".popover-content");
127
-
128
- expect(contentAfterOpen).not.toBeNull();
129
-
130
- return expect(component).toBeAccessible();
131
- });
132
-
133
- it("render menu content before interaction in prerender mode", async () => {
134
- const spy = jest.spyOn(window.navigator, "userAgent", "get");
135
- spy.mockReturnValue("Mozilla, Prerender");
136
-
137
- const renderComponent = createRenderComponent(TAG, Popover);
138
- const component = renderComponent();
139
- const content =
140
- component.shadowRoot.querySelector(".popover-content");
141
-
142
- expect(content).not.toBeNull();
143
- });
144
- });
145
-
146
- describe("interactions", () => {
147
- it("fires open and close callbacks on interaction with its slotted control", async () => {
148
- const component = renderWithSlot();
149
- const mockOpen = jest.fn();
150
- const mockClose = jest.fn();
151
-
152
- await Promise.resolve();
153
-
154
- const button = component.shadowRoot.querySelector("dx-button");
155
- const popover = component.shadowRoot.querySelector("dx-popover");
156
- popover.addEventListener("open", mockOpen);
157
- popover.addEventListener("close", mockClose);
158
-
159
- expect(mockOpen).not.toHaveBeenCalled();
160
-
161
- button.click();
162
-
163
- expect(mockOpen).toHaveBeenCalledTimes(1);
164
-
165
- button.click();
166
-
167
- expect(mockOpen).toHaveBeenCalledTimes(1);
168
- expect(mockClose).toHaveBeenCalledTimes(1);
169
-
170
- return expect(component).toBeAccessible();
171
- });
172
-
173
- it("doesn't fire open if passed control is disabled", () => {
174
- const element = render();
175
-
176
- const { slot: controlSlot, slottedElement } =
177
- mockSlottedElement<HTMLButtonElement>(
178
- element,
179
- "button",
180
- "control"
181
- );
182
- expect(controlSlot.assignedElements).toBeCalledTimes(1);
183
- expect(slottedElement.ariaHasPopup).toBe("true");
184
- expect(slottedElement.style.cursor).toBe("cursor");
185
-
186
- slottedElement.disabled = true;
187
-
188
- const mockOpen = jest.fn();
189
- element.addEventListener("open", mockOpen);
190
- element.open = true;
191
-
192
- expect(element.open).toBe(false);
193
- expect(mockOpen).not.toBeCalled();
194
- });
195
-
196
- it("fires open on slotted control ArrowDown", async () => {
197
- const component = renderWithSlot();
198
- const mockOpen = jest.fn();
199
-
200
- await Promise.resolve();
201
-
202
- const button = component.shadowRoot.querySelector("dx-button");
203
- const popover = component.shadowRoot.querySelector("dx-popover");
204
- popover.addEventListener("open", mockOpen);
205
-
206
- expect(mockOpen).not.toHaveBeenCalled();
207
-
208
- button.dispatchEvent(
209
- new KeyboardEvent("keydown", { key: "ArrowDown" })
210
- );
211
-
212
- expect(mockOpen).toHaveBeenCalledTimes(1);
213
- });
214
-
215
- it("closes popover and dispatch event when Esc key is pressed", () => {
216
- const component = render(mockProps);
217
- const { slottedElement } = mockSlottedElement(
218
- component,
219
- "button",
220
- "control"
221
- );
222
- slottedElement.focus = jest.fn();
223
-
224
- component.open = true;
225
- expect(slottedElement.getAttribute("aria-expanded")).toBe("true");
226
-
227
- const escapePressMock = jest.fn();
228
- component.addEventListener("requestclose", escapePressMock);
229
-
230
- const closeEvent = jest.fn();
231
- component.addEventListener("close", closeEvent);
232
-
233
- const popoverDiv: HTMLElement =
234
- component.shadowRoot.querySelector(".popover");
235
- expect(popoverDiv).not.toBeNull();
236
-
237
- expect(component.open).toBe(true);
238
-
239
- popoverDiv.dispatchEvent(
240
- new KeyboardEvent("keydown", { key: "Escape" })
241
- );
242
-
243
- expect(escapePressMock).toBeCalledTimes(1);
244
- const [singleCall] = escapePressMock.mock.calls[0];
245
- expect(singleCall).toHaveProperty("detail", "keypress-escape");
246
- expect(singleCall).toHaveProperty("bubbles", true);
247
- expect(singleCall).toHaveProperty("composed", true);
248
-
249
- expect(component.open).toBe(false);
250
- expect(slottedElement.getAttribute("aria-expanded")).toBe("false");
251
- expect(slottedElement.focus).toBeCalledTimes(1);
252
- expect(closeEvent).toBeCalledTimes(1);
253
- });
254
-
255
- it("fires open callbacks on mouseover its slotted control", () => {
256
- const component = render({ ...mockProps, openOnHover: true });
257
- const { slottedElement } = mockSlottedElement(
258
- component,
259
- "button",
260
- "control"
261
- );
262
- expect(slottedElement.ariaHasPopup).toBe("true");
263
- expect(slottedElement.style.cursor).toBe("default");
264
-
265
- const openMock = jest.fn();
266
- component.addEventListener("open", openMock);
267
-
268
- slottedElement.dispatchEvent(new MouseEvent("mouseenter"));
269
- expect(openMock).toBeCalledTimes(1);
270
- expect(component.open).toBe(true);
271
- });
272
-
273
- it("closes if you change open from true to false and not focus control", () => {
274
- const component = render(mockProps);
275
- const { slottedElement } = mockSlottedElement(
276
- component,
277
- "button",
278
- "control"
279
- );
280
- slottedElement.focus = jest.fn();
281
- component.open = true;
282
-
283
- const closeMock = jest.fn();
284
- component.addEventListener("close", closeMock);
285
-
286
- component.open = false;
287
-
288
- expect(slottedElement.focus).not.toBeCalled();
289
- expect(closeMock).toBeCalledTimes(1);
290
- });
291
-
292
- it("dispatches requestclose with click-control type", () => {
293
- const component = render(mockProps);
294
- const { slottedElement } = mockSlottedElement(
295
- component,
296
- "button",
297
- "control"
298
- );
299
-
300
- const requestCloseMock = jest.fn();
301
- component.addEventListener("requestclose", requestCloseMock);
302
-
303
- component.open = true;
304
- slottedElement.click();
305
-
306
- expect(requestCloseMock).toBeCalledTimes(1);
307
- const [singleCall] = requestCloseMock.mock.calls[0];
308
- expect(singleCall).toHaveProperty("detail", "click-control");
309
- expect(singleCall).toHaveProperty("bubbles", true);
310
- expect(singleCall).toHaveProperty("composed", true);
311
- });
312
- });
313
- });
@@ -1,82 +0,0 @@
1
- import { html } from "lit-html";
2
- import mockProps from "../checkboxGroup/__tests__/mockProps";
3
-
4
- export default {
5
- title: "dx/dx-popover",
6
- component: "dx-popover"
7
- };
8
-
9
- // prettier-ignore
10
- const styles = () => html `
11
- <style>
12
- #root {
13
- display: grid;
14
- grid-template-columns: repeat(3, 1fr);
15
- grid-gap: 20px;
16
- justify-items: center;
17
- }
18
- </style>
19
- `;
20
-
21
- // prettier-ignore
22
- export const Base = () => html ` ${styles()}
23
- <dx-popover>
24
- <dx-button slot="control" icon-symbol="chevrondown">
25
- Default
26
- </dx-button>
27
- <dx-checkbox-group
28
- legend='${JSON.stringify(mockProps.legend)}'
29
- options='${JSON.stringify(mockProps.options)}'
30
- default-value='${JSON.stringify(mockProps.defaultValue)}'
31
- slot="content"
32
- ></dx-checkbox-group>
33
- </dx-popover>
34
-
35
- <br />
36
-
37
- <dx-popover small="true">
38
- <dx-button slot="control" icon-symbol="chevrondown">
39
- Small
40
- </dx-button>
41
- <div slot="content">
42
- Custom Content
43
- </div>
44
- </dx-popover>
45
-
46
- <br />
47
-
48
- <dx-popover offset="small">
49
- <dx-button slot="control" icon-symbol="chevrondown">
50
- Offset
51
- </dx-button>
52
- <div slot="content">
53
- Custom Content
54
- </div>
55
- </dx-popover>
56
-
57
- <br />
58
-
59
- <dx-popover open-on-hover="true">
60
- <dx-button slot="control" icon-symbol="chevrondown">
61
- Open On Hover
62
- </dx-button>
63
- <div slot="content">
64
- Custom Content
65
- </div>
66
- </dx-popover>
67
- `;
68
-
69
- export const DisabledControl = () => html`
70
- ${styles()}
71
- <dx-popover>
72
- <dx-button slot="control" icon-symbol="chevrondown" disabled="true">
73
- I'm disabled
74
- </dx-button>
75
- <dx-checkbox-group
76
- legend="${JSON.stringify(mockProps.legend)}"
77
- options="${JSON.stringify(mockProps.options)}"
78
- default-value="${JSON.stringify(mockProps.defaultValue)}"
79
- slot="content"
80
- ></dx-checkbox-group>
81
- </dx-popover>
82
- `;
@@ -1,12 +0,0 @@
1
- export const options = [
2
- { value: "english", label: "English" },
3
- { value: "japanese", label: "Japanese" },
4
- { value: "spanish", label: "Spanish" },
5
- { value: "german", label: "German", disabled: true }
6
- ];
7
-
8
- export default {
9
- defaultValue: "japanese",
10
- legend: "languages",
11
- options
12
- };
@@ -1,42 +0,0 @@
1
- import RadioGroup from "dx/radioGroup";
2
- import { createRenderComponent } from "utils-internal/tests";
3
- import mockProps from "./mockProps";
4
-
5
- const TAG = "dx-radio-group";
6
- const render = createRenderComponent(TAG, RadioGroup);
7
-
8
- describe(TAG, () => {
9
- it("callback payload value is correct", async () => {
10
- const mockChange = jest.fn();
11
-
12
- const element = render(mockProps);
13
-
14
- element.addEventListener("change", mockChange);
15
-
16
- const checkbox = element.shadowRoot.querySelector("dx-checkbox");
17
-
18
- checkbox.dispatchEvent(
19
- new CustomEvent("change", { detail: { value: checkbox.value } })
20
- );
21
-
22
- await Promise.resolve();
23
-
24
- expect(mockChange.mock.calls[0][0].detail.value).toEqual(
25
- checkbox.value
26
- );
27
-
28
- return expect(element).toBeAccessible();
29
- });
30
-
31
- it("accepts a value", () => {
32
- const element = render({
33
- options: mockProps.options,
34
- legend: mockProps.legend,
35
- value: mockProps.defaultValue
36
- });
37
-
38
- expect(element.value).toEqual(mockProps.defaultValue);
39
-
40
- return expect(element).toBeAccessible();
41
- });
42
- });
@@ -1,25 +0,0 @@
1
- import mockProps from "./__tests__/mockProps";
2
-
3
- export default {
4
- title: "dx/dx-radio-group",
5
- component: "dx-radio-group"
6
- };
7
-
8
- export const Base = (args: any) => `
9
- <dx-radio-group legend='${args.legend}' options='${args.options}' default-value='${args.defaultValue}'>
10
- </dx-radio-group>
11
- `;
12
-
13
- export const Controlled = (args: any) => `
14
- <dx-radio-group legend='${args.legend}' options='${args.options}' value='${args.defaultValue}'>
15
- </dx-radio-group>
16
- `;
17
-
18
- const args = {
19
- ...mockProps,
20
- options: JSON.stringify(mockProps.options)
21
- };
22
-
23
- Base.args = args;
24
-
25
- Controlled.args = args;
@@ -1,55 +0,0 @@
1
- const oneHour = new Date(Date.now() - 1000 * 60 * 60).toISOString();
2
- const fourHours = new Date(Date.now() - 4 * 1000 * 60 * 60).toISOString();
3
- const oneDay = new Date(Date.now() - 1000 * 60 * 60 * 24).toISOString();
4
- const fourDays = new Date(Date.now() - 4 * 1000 * 60 * 60 * 24).toISOString();
5
- const oneWeek = new Date(Date.now() - 1000 * 60 * 60 * 24 * 7).toISOString();
6
- const fourWeeks = new Date(
7
- Date.now() - 4 * 1000 * 60 * 60 * 24 * 7
8
- ).toISOString();
9
- const oneMonth = new Date(Date.now() - 1000 * 60 * 60 * 24 * 30).toISOString();
10
- const fourMonths = new Date(
11
- Date.now() - 4 * 1000 * 60 * 60 * 24 * 30
12
- ).toISOString();
13
- const oneYear = new Date(
14
- Date.now() - 1000 * 60 * 60 * 24 * 30 * 12
15
- ).toISOString();
16
- const fourYears = new Date(
17
- Date.now() - 4 * 1000 * 60 * 60 * 24 * 30 * 12
18
- ).toISOString();
19
-
20
- export default {
21
- fourHoursCustomMessage: {
22
- value: fourHours,
23
- messageWhenHoursPast: "hours since"
24
- },
25
- oneHour: {
26
- value: oneHour
27
- },
28
- fourHours: {
29
- value: fourHours
30
- },
31
- oneDay: {
32
- value: oneDay
33
- },
34
- fourDays: {
35
- value: fourDays
36
- },
37
- oneWeek: {
38
- value: oneWeek
39
- },
40
- fourWeeks: {
41
- value: fourWeeks
42
- },
43
- oneMonth: {
44
- value: oneMonth
45
- },
46
- fourMonths: {
47
- value: fourMonths
48
- },
49
- oneYear: {
50
- value: oneYear
51
- },
52
- fourYears: {
53
- value: fourYears
54
- }
55
- };
@@ -1,52 +0,0 @@
1
- /* eslint-disable jest/no-mocks-import */
2
- import RelativeDateTime from "dx/relativeDateTime";
3
- import { createRenderComponent } from "utils-internal/tests";
4
- import mockProps from "./mockProps";
5
-
6
- const TAG = "dx-relative-date-time";
7
- const render = createRenderComponent(TAG, RelativeDateTime);
8
-
9
- describe(TAG, () => {
10
- it("renders component with hours and custom message", () => {
11
- const component = render(mockProps.fourHoursCustomMessage);
12
-
13
- const dateEl = component.shadowRoot.querySelector("time");
14
- expect(dateEl).not.toBeNull();
15
- expect(dateEl.textContent).toEqual("4 hours since");
16
- return expect(component).toBeAccessible();
17
- });
18
-
19
- [
20
- { time: "oneHour", expected: "1 hour ago" },
21
- { time: "fourHours", expected: "4 hours ago" },
22
- { time: "oneDay", expected: "1 day ago" },
23
- { time: "fourDays", expected: "4 days ago" },
24
- { time: "oneWeek", expected: "1 week ago" },
25
- { time: "fourWeeks", expected: "4 weeks ago" },
26
- { time: "oneMonth", expected: "1 month ago" },
27
- { time: "fourMonths", expected: "4 months ago" },
28
- { time: "oneYear", expected: "1 year ago" },
29
- { time: "fourYears", expected: "4 years ago" }
30
- ].forEach((testCase) => {
31
- it(`displays the correct label and title for ${testCase.expected}`, () => {
32
- const component = render(mockProps[testCase.time]);
33
-
34
- const dateEl = component.shadowRoot.querySelector("time");
35
-
36
- expect(dateEl).not.toBeNull();
37
- expect(dateEl.getAttribute("title")).toEqual(
38
- new Date(mockProps[testCase.time].value).toString()
39
- );
40
- expect(dateEl.textContent).toEqual(testCase.expected);
41
- return expect(component).toBeAccessible();
42
- });
43
- });
44
-
45
- it("logs an error if value provided is an error", () => {
46
- console.error = jest.fn();
47
- const component = render({ value: undefined });
48
-
49
- expect(component).not.toBeNull();
50
- expect(console.error).toHaveBeenCalled();
51
- });
52
- });
@@ -1,83 +0,0 @@
1
- import { html } from "lit-html";
2
-
3
- export default {
4
- title: "dx/dx-relative-date-time",
5
- component: "dx-relative-date-time"
6
- };
7
-
8
- // prettier-ignore
9
- const createStyles = () => html `
10
- <style>
11
- span.date-label {
12
- color: grey;
13
- }
14
-
15
- dx-relative-date-time {
16
- display: block;
17
- margin-bottom: 12px;
18
- }
19
- </style>
20
- `;
21
-
22
- const twoWeeks = new Date(Date.now() - 1.21e9).toISOString();
23
- const fourDays = new Date(Date.now() - 3.456e8).toISOString();
24
- const threeMonths = new Date(Date.now() - 7.884e9).toISOString();
25
- const twoYears = new Date(Date.now() - 6.307e10).toISOString();
26
- const fourHours = new Date(Date.now() - 1.44e7).toISOString();
27
- const oneHour = new Date(Date.now() - 3600000).toISOString();
28
-
29
- // prettier-ignore
30
- export const DefaultMessage = () => html ` ${createStyles()}
31
-
32
- <span class="date-label">4 hours</span>
33
- <dx-relative-date-time value="${fourHours}"></dx-relative-date-time>
34
-
35
- <span class="date-label">4 days</span>
36
- <dx-relative-date-time value="${fourDays}"></dx-relative-date-time>
37
-
38
- <span class="date-label">2 weeks</span>
39
- <dx-relative-date-time value="${twoWeeks}"></dx-relative-date-time>
40
-
41
- <span class="date-label">3 Months</span>
42
- <dx-relative-date-time value="${threeMonths}"></dx-relative-date-time>
43
-
44
- <span class="date-label">2 Years</span>
45
- <dx-relative-date-time value="${twoYears}"></dx-relative-date-time>
46
-
47
- <span class="date-label">1 Hour</span>
48
- <dx-relative-date-time value="${oneHour}"></dx-relative-date-time>
49
- `;
50
-
51
- export const CustomMessage = () => html`
52
- ${createStyles()}
53
-
54
- <span class="date-label">4 hours</span>
55
- <dx-relative-date-time
56
- value="${fourHours}"
57
- message-when-hours-past="hours since upload"
58
- ></dx-relative-date-time>
59
-
60
- <span class="date-label">4 days</span>
61
- <dx-relative-date-time
62
- value="${fourDays}"
63
- message-when-days-past="days since broadcast"
64
- ></dx-relative-date-time>
65
-
66
- <span class="date-label">2 weeks</span>
67
- <dx-relative-date-time
68
- value="${twoWeeks}"
69
- message-when-weeks-past="weeks since last broadcast"
70
- ></dx-relative-date-time>
71
-
72
- <span class="date-label">3 Months</span>
73
- <dx-relative-date-time
74
- value="${threeMonths}"
75
- message-when-months-past="months since the event"
76
- ></dx-relative-date-time>
77
-
78
- <span class="date-label">2 Years</span>
79
- <dx-relative-date-time
80
- value="${twoYears}"
81
- message-when-years-past="years ago"
82
- ></dx-relative-date-time>
83
- `;