@salesforcedevs/dx-components 0.26.1 → 0.27.1

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 (255) hide show
  1. package/lwc.config.json +2 -1
  2. package/package.json +2 -6
  3. package/src/modules/{utils-internal → base-elements}/archiveCard/archiveCard.ts +0 -0
  4. package/src/modules/{utils-internal → base-elements}/headerBase/headerBase.ts +0 -0
  5. package/src/modules/dx/cardBlogPostProvider/cardBlogPostProvider.ts +1 -1
  6. package/src/modules/dx/cardCallout/cardCallout.ts +1 -1
  7. package/src/modules/dx/cardContent/cardContent.ts +2 -2
  8. package/src/modules/dx/cardDocs/cardDocs.ts +1 -1
  9. package/src/modules/dx/cardExpanded/cardExpanded.ts +1 -1
  10. package/src/modules/dx/cardMinimal/cardMinimal.ts +1 -1
  11. package/src/modules/dx/cardNews/cardNews.ts +1 -1
  12. package/src/modules/dx/cardPodcastEpisodeProvider/cardPodcastEpisodeProvider.ts +1 -1
  13. package/src/modules/dx/cardSmall/cardSmall.ts +1 -1
  14. package/src/modules/dx/codeBlock/codeBlock.ts +1 -1
  15. package/src/modules/dx/dropdown/dropdown.ts +1 -1
  16. package/src/modules/dx/featuredContentHeader/featuredContentHeader.ts +1 -1
  17. package/src/modules/dx/groupText/groupText.ts +1 -1
  18. package/src/modules/dx/header/header.ts +1 -1
  19. package/src/modules/dx/headerMobileNavMenu/headerMobileNavMenu.ts +1 -1
  20. package/src/modules/dx/headerSearch/headerSearch.ts +1 -1
  21. package/src/modules/dx/icon/icon.ts +1 -1
  22. package/src/modules/dx/iconBadge/iconBadge.ts +1 -1
  23. package/src/modules/dx/input/input.ts +1 -1
  24. package/src/modules/dx/modalDrawer/modalDrawer.css +40 -0
  25. package/src/modules/dx/modalDrawer/modalDrawer.html +11 -0
  26. package/src/modules/dx/modalDrawer/modalDrawer.ts +27 -0
  27. package/src/modules/dx/podcastSubscription/podcastSubscription.css +1 -2
  28. package/src/modules/dx/popover/popover.ts +1 -1
  29. package/src/modules/dx/section/section.ts +1 -1
  30. package/src/modules/dx/sidebar/sidebar.ts +1 -1
  31. package/src/modules/dx/sidebarSearch/sidebarSearch.ts +2 -5
  32. package/src/modules/dx/slackCta/slackCta.css +14 -8
  33. package/src/modules/dx/slackCta/slackCta.html +2 -2
  34. package/src/modules/dx/slackCta/slackCta.ts +0 -1
  35. package/src/modules/dx/typeBadge/typeBadge.ts +1 -1
  36. package/src/modules/{utils-internal → utils}/coveo/coveo.ts +0 -0
  37. package/src/modules/{utils-internal → utils}/css/css.ts +0 -0
  38. package/src/modules/{utils-internal → utils}/devices/devices.ts +0 -0
  39. package/src/modules/utils/highlight/highlight.ts +1 -1
  40. package/src/modules/{utils-internal → utils}/options/options.ts +0 -0
  41. package/src/modules/{utils-internal → utils}/prismjs/prismjs.html +0 -0
  42. package/src/modules/{utils-internal → utils}/prismjs/prismjs.ts +0 -0
  43. package/src/modules/{utils-internal → utils}/recentSearches/recentSearches.ts +0 -0
  44. package/src/modules/{utils-internal → utils}/regexps/regexps.ts +0 -0
  45. package/src/modules/{utils-internal → utils}/seo/seo.ts +0 -0
  46. package/src/modules/{utils-internal → utils}/slot/slot.ts +0 -0
  47. package/src/modules/{utils-internal → utils}/wordpress/wordpress.ts +0 -0
  48. package/src/modules/dx/banner/__tests__/banner.test.ts +0 -33
  49. package/src/modules/dx/brandThemeProvider/__tests__/brandThemeProvider.test.ts +0 -49
  50. package/src/modules/dx/brandThemeProvider/brandThemeProvider.stories.ts +0 -321
  51. package/src/modules/dx/breadcrumbs/__tests__/breadcrumbs.test.ts +0 -140
  52. package/src/modules/dx/breadcrumbs/__tests__/mockProps.ts +0 -28
  53. package/src/modules/dx/breadcrumbs/breadcrumbs.stories.ts +0 -39
  54. package/src/modules/dx/button/__tests__/button.test.ts +0 -107
  55. package/src/modules/dx/button/button.stories.ts +0 -150
  56. package/src/modules/dx/cardBlogPost/__tests__/cardBlogPost.test.ts +0 -26
  57. package/src/modules/dx/cardBlogPost/__tests__/mockProps.ts +0 -12
  58. package/src/modules/dx/cardBlogPost/cardBlogPost.stories.ts +0 -164
  59. package/src/modules/dx/cardBlogPostProvider/__tests__/cardBlogPostProvider.test.ts +0 -34
  60. package/src/modules/dx/cardBlogPostProvider/__tests__/mockWordpressPosts.ts +0 -44
  61. package/src/modules/dx/cardCallout/__tests__/cardCallout.test.ts +0 -20
  62. package/src/modules/dx/cardCallout/__tests__/mockProps.ts +0 -7
  63. package/src/modules/dx/cardCallout/cardCallout.stories.ts +0 -33
  64. package/src/modules/dx/cardContent/__tests__/cardContent.test.ts +0 -100
  65. package/src/modules/dx/cardContent/__tests__/mockProps.ts +0 -13
  66. package/src/modules/dx/cardContent/cardContent.stories.ts +0 -127
  67. package/src/modules/dx/cardDemo/cardDemo.stories.ts +0 -115
  68. package/src/modules/dx/cardDocs/__tests__/cardDocs.test.ts +0 -48
  69. package/src/modules/dx/cardDocs/__tests__/mockProps.ts +0 -9
  70. package/src/modules/dx/cardDocs/cardDocs.stories.ts +0 -299
  71. package/src/modules/dx/cardEvent/__tests__/cardEvent.test.ts +0 -95
  72. package/src/modules/dx/cardEvent/__tests__/mockProps.ts +0 -10
  73. package/src/modules/dx/cardEvent/cardEvent.stories.ts +0 -153
  74. package/src/modules/dx/cardExpanded/__tests__/cardExpanded.test.ts +0 -193
  75. package/src/modules/dx/cardExpanded/__tests__/mockProps.ts +0 -21
  76. package/src/modules/dx/cardExpanded/cardExpanded.stories.ts +0 -59
  77. package/src/modules/dx/cardGrid/__tests__/cardMockProps.ts +0 -431
  78. package/src/modules/dx/cardGrid/__tests__/mockProps.ts +0 -15
  79. package/src/modules/dx/cardGrid/cardGrid.stories.ts +0 -111
  80. package/src/modules/dx/cardMinimal/__tests__/cardMinimal.test.ts +0 -87
  81. package/src/modules/dx/cardMinimal/__tests__/mockProps.ts +0 -10
  82. package/src/modules/dx/cardMinimal/cardMinimal.stories.ts +0 -32
  83. package/src/modules/dx/cardNews/__tests__/cardNews.test.ts +0 -58
  84. package/src/modules/dx/cardNews/__tests__/mockProps.ts +0 -7
  85. package/src/modules/dx/cardNews/cardNews.stories.ts +0 -115
  86. package/src/modules/dx/cardPodcastEpisode/__tests__/cardPodcastEpisode.test.ts +0 -68
  87. package/src/modules/dx/cardPodcastEpisode/cardPodcastEpisode.stories.ts +0 -31
  88. package/src/modules/dx/cardPodcastEpisodeProvider/__tests__/cardPodcastEpisodeProvider.test.ts +0 -36
  89. package/src/modules/dx/cardPodcastEpisodeProvider/__tests__/mockWordpressEpisodes.ts +0 -50
  90. package/src/modules/dx/cardSmall/__tests__/cardSmall.test.ts +0 -66
  91. package/src/modules/dx/cardSmall/__tests__/mockProps.ts +0 -8
  92. package/src/modules/dx/cardSmall/cardSmall.stories.ts +0 -166
  93. package/src/modules/dx/cardTitle/__tests__/cardTitle.test.ts +0 -46
  94. package/src/modules/dx/cardTrailheadModule/__tests__/cardTrailheadModule.test.ts +0 -18
  95. package/src/modules/dx/cardTrailheadModule/__tests__/mockProps.ts +0 -11
  96. package/src/modules/dx/cardTrailheadModule/cardTrailheadModule.stories.ts +0 -122
  97. package/src/modules/dx/cardVideoPreview/__tests__/cardVideoPreview.test.ts +0 -22
  98. package/src/modules/dx/cardVideoPreview/__tests__/mockProps.ts +0 -11
  99. package/src/modules/dx/cardVideoPreview/cardVideoPreview.stories.ts +0 -147
  100. package/src/modules/dx/checkbox/__tests__/checkbox.test.ts +0 -85
  101. package/src/modules/dx/checkbox/__tests__/mockProps.ts +0 -5
  102. package/src/modules/dx/checkbox/checkbox.stories.ts +0 -38
  103. package/src/modules/dx/checkboxGroup/__tests__/checkboxGroup.test.ts +0 -80
  104. package/src/modules/dx/checkboxGroup/__tests__/mockProps.ts +0 -14
  105. package/src/modules/dx/checkboxGroup/checkboxGroup.stories.ts +0 -33
  106. package/src/modules/dx/codeBlock/__tests__/codeBlock.test.ts +0 -238
  107. package/src/modules/dx/codeBlock/__tests__/mockProps.ts +0 -160
  108. package/src/modules/dx/codeBlock/codeBlock.stories.ts +0 -143
  109. package/src/modules/dx/dropdown/__tests__/dropdown.test.ts +0 -165
  110. package/src/modules/dx/dropdown/__tests__/mockNestedOptions.ts +0 -96
  111. package/src/modules/dx/dropdown/__tests__/mockOptions.ts +0 -10
  112. package/src/modules/dx/dropdown/__tests__/mockProps.ts +0 -6
  113. package/src/modules/dx/dropdown/dropdown.stories.ts +0 -89
  114. package/src/modules/dx/dropdownOption/__tests__/dropdownOption.test.ts +0 -112
  115. package/src/modules/dx/dropdownOption/__tests__/mockProps.ts +0 -20
  116. package/src/modules/dx/emptyState/__tests__/emptyState.test.ts +0 -52
  117. package/src/modules/dx/emptyState/__tests__/mockProps.ts +0 -4
  118. package/src/modules/dx/emptyState/emptyState.stories.ts +0 -45
  119. package/src/modules/dx/feature/__tests__/feature.test.ts +0 -51
  120. package/src/modules/dx/feature/__tests__/mockProps.ts +0 -8
  121. package/src/modules/dx/featureGrid/__tests__/featureGrid.test.ts +0 -21
  122. package/src/modules/dx/featureGrid/featureGrid.stories.ts +0 -120
  123. package/src/modules/dx/featuredContentHeader/__tests__/featuredContentHeader.test.ts +0 -178
  124. package/src/modules/dx/featuredContentHeader/__tests__/mockProps.ts +0 -73
  125. package/src/modules/dx/featuredContentHeader/featuredContentHeader.stories.ts +0 -153
  126. package/src/modules/dx/featuresList/__tests__/featuresList.test.ts +0 -43
  127. package/src/modules/dx/featuresList/__tests__/mockProps.ts +0 -17
  128. package/src/modules/dx/featuresList/featuresList.stories.ts +0 -30
  129. package/src/modules/dx/footer/__tests__/footer.test.ts +0 -147
  130. package/src/modules/dx/footer/__tests__/mockLocales.ts +0 -7
  131. package/src/modules/dx/footer/footer.stories.ts +0 -88
  132. package/src/modules/dx/footerOption/__tests__/footerOption.test.ts +0 -34
  133. package/src/modules/dx/footerOption/__tests__/mockProps.ts +0 -7
  134. package/src/modules/dx/formattedDateTime/__tests__/formattedDateTime.test.ts +0 -25
  135. package/src/modules/dx/formattedDateTime/__tests__/mockProps.ts +0 -13
  136. package/src/modules/dx/formattedDateTime/formattedDateTime.stories.ts +0 -103
  137. package/src/modules/dx/grid/__tests__/grid.test.ts +0 -32
  138. package/src/modules/dx/grid/grid.stories.ts +0 -134
  139. package/src/modules/dx/groupBio/__tests__/groupBio.test.ts +0 -82
  140. package/src/modules/dx/groupBio/__tests__/mockProps.ts +0 -15
  141. package/src/modules/dx/groupBio/groupBio.stories.ts +0 -66
  142. package/src/modules/dx/groupText/__tests__/groupText.test.ts +0 -69
  143. package/src/modules/dx/groupText/__tests__/mockProps.ts +0 -35
  144. package/src/modules/dx/groupText/groupText.stories.ts +0 -81
  145. package/src/modules/dx/header/__tests__/header.test.ts +0 -236
  146. package/src/modules/dx/header/__tests__/mockNavArchitects.ts +0 -169
  147. package/src/modules/dx/header/__tests__/mockNavDevelopers.ts +0 -419
  148. package/src/modules/dx/header/__tests__/mockNavs.ts +0 -115
  149. package/src/modules/dx/header/__tests__/mockProps.ts +0 -164
  150. package/src/modules/dx/header/header.stories.ts +0 -172
  151. package/src/modules/dx/headerMobileNavMenu/__tests__/headerMobileNavMenu.test.ts +0 -123
  152. package/src/modules/dx/headerMobileNavMenuOption/__tests__/headerMobileNavMenuOption.test.ts +0 -38
  153. package/src/modules/dx/headerNav/__tests__/headerNav.test.ts +0 -49
  154. package/src/modules/dx/headerSearch/__tests__/headerSearch.test.ts +0 -182
  155. package/src/modules/dx/headerSearch/__tests__/mockData.ts +0 -11
  156. package/src/modules/dx/headerSearch/__tests__/mockProps.ts +0 -6
  157. package/src/modules/dx/helmet/__tests__/helmet.test.ts +0 -52
  158. package/src/modules/dx/helmet/helmet.stories.ts +0 -53
  159. package/src/modules/dx/hr/__tests__/hr.test.ts +0 -53
  160. package/src/modules/dx/hr/__tests__/mockProps.ts +0 -16
  161. package/src/modules/dx/hr/hr.stories.ts +0 -50
  162. package/src/modules/dx/icon/__tests__/icon.test.ts +0 -54
  163. package/src/modules/dx/icon/icon.stories.ts +0 -100
  164. package/src/modules/dx/iconBadge/__tests__/iconBadge.test.ts +0 -17
  165. package/src/modules/dx/iconBadge/iconBadge.stories.ts +0 -32
  166. package/src/modules/dx/imageAndLabel/__tests__/imageAndLabel.test.ts +0 -39
  167. package/src/modules/dx/imageAndLabel/__tests__/mockProps.ts +0 -6
  168. package/src/modules/dx/imageAndLabel/imageAndLabel.stories.ts +0 -48
  169. package/src/modules/dx/input/__tests__/input.test.ts +0 -357
  170. package/src/modules/dx/input/input.stories.ts +0 -102
  171. package/src/modules/dx/instrumentation/__tests__/instrumentation.test.ts +0 -86
  172. package/src/modules/dx/interactiveImage/__tests__/interactiveImage.test.ts +0 -83
  173. package/src/modules/dx/interactiveImage/__tests__/mockProps.ts +0 -39
  174. package/src/modules/dx/interactiveImage/interactiveImage.stories.ts +0 -31
  175. package/src/modules/dx/lazy/__tests__/lazy.test.ts +0 -43
  176. package/src/modules/dx/lazy/lazy.stories.ts +0 -132
  177. package/src/modules/dx/pagination/__tests__/pagination.test.ts +0 -121
  178. package/src/modules/dx/pagination/pagination.stories.ts +0 -88
  179. package/src/modules/dx/podcastHost/__tests__/mockProps.ts +0 -8
  180. package/src/modules/dx/podcastHost/__tests__/podcastHost.test.ts +0 -21
  181. package/src/modules/dx/podcastHost/podcastHost.stories.ts +0 -17
  182. package/src/modules/dx/podcastPlayer/__tests__/podcastPlayer.test.ts +0 -20
  183. package/src/modules/dx/podcastPlayer/podcastPlayer.stories.ts +0 -13
  184. package/src/modules/dx/podcastSubscription/__tests__/podcastSubscription.test.ts +0 -16
  185. package/src/modules/dx/podcastSubscription/podcastSubscription.stories.ts +0 -23
  186. package/src/modules/dx/popover/__tests__/mockProps.ts +0 -8
  187. package/src/modules/dx/popover/__tests__/popover.test.ts +0 -313
  188. package/src/modules/dx/popover/popover.stories.ts +0 -82
  189. package/src/modules/dx/radioGroup/__tests__/mockProps.ts +0 -12
  190. package/src/modules/dx/radioGroup/__tests__/radioGroup.test.ts +0 -42
  191. package/src/modules/dx/radioGroup/radioGroup.stories.ts +0 -25
  192. package/src/modules/dx/relativeDateTime/__tests__/mockProps.ts +0 -55
  193. package/src/modules/dx/relativeDateTime/__tests__/relativeDateTime.test.ts +0 -52
  194. package/src/modules/dx/relativeDateTime/relativeDateTime.stories.ts +0 -83
  195. package/src/modules/dx/searchResults/searchResults.stories.ts +0 -36
  196. package/src/modules/dx/section/__tests__/section.test.ts +0 -17
  197. package/src/modules/dx/section/section.stories.ts +0 -381
  198. package/src/modules/dx/sectionSignup/__tests__/sectionSignup.test.ts +0 -66
  199. package/src/modules/dx/sectionSignup/sectionSignup.stories.ts +0 -49
  200. package/src/modules/dx/select/select.stories.ts +0 -59
  201. package/src/modules/dx/sidebar/__tests__/mockProps.ts +0 -181
  202. package/src/modules/dx/sidebar/__tests__/mockSearchChangeEmptyEvent.ts +0 -6
  203. package/src/modules/dx/sidebar/__tests__/mockSearchChangeEvent.ts +0 -527
  204. package/src/modules/dx/sidebar/__tests__/sidebar.test.ts +0 -568
  205. package/src/modules/dx/sidebar/sidebar.stories.ts +0 -188
  206. package/src/modules/dx/sidebarOld/__tests__/mockProps.ts +0 -178
  207. package/src/modules/dx/sidebarOld/__tests__/sidebarOld.test.ts +0 -570
  208. package/src/modules/dx/sidebarOld/sidebarOld.stories.ts +0 -139
  209. package/src/modules/dx/sidebarSearch/__tests__/mockPreloadedState.ts +0 -1686
  210. package/src/modules/dx/sidebarSearch/__tests__/sidebarSearch.test.ts +0 -175
  211. package/src/modules/dx/sidebarSearchResult/__tests__/sidebarSearchResult.test.ts +0 -96
  212. package/src/modules/dx/slackCta/__tests__/slackCta.test.ts +0 -48
  213. package/src/modules/dx/slackCta/slackCta.stories.ts +0 -25
  214. package/src/modules/dx/socials/__tests__/socials.test.ts +0 -114
  215. package/src/modules/dx/socials/socials.stories.ts +0 -24
  216. package/src/modules/dx/spinner/__tests__/spinner.test.ts +0 -37
  217. package/src/modules/dx/spinner/spinner.stories.ts +0 -69
  218. package/src/modules/dx/tab/__tests__/tab.test.ts +0 -129
  219. package/src/modules/dx/tab/tab.stories.ts +0 -57
  220. package/src/modules/dx/toc/__tests__/mockProps.ts +0 -28
  221. package/src/modules/dx/toc/__tests__/toc.test.ts +0 -109
  222. package/src/modules/dx/toc/toc.stories.ts +0 -26
  223. package/src/modules/dx/tooltip/__tests__/tooltip.test.ts +0 -22
  224. package/src/modules/dx/tooltip/tooltip.stories.ts +0 -46
  225. package/src/modules/dx/topics/__tests__/mockProps.ts +0 -3
  226. package/src/modules/dx/topics/__tests__/topics.test.ts +0 -31
  227. package/src/modules/dx/tree/__tests__/mockProps.ts +0 -215
  228. package/src/modules/dx/tree/__tests__/tree.test.ts +0 -346
  229. package/src/modules/dx/tree/__tests__/treeHandler.test.ts +0 -194
  230. package/src/modules/dx/tree/tree.stories.ts +0 -65
  231. package/src/modules/dx/treeItem/__tests__/mockProps.ts +0 -46
  232. package/src/modules/dx/treeItem/__tests__/treeItem.test.ts +0 -377
  233. package/src/modules/dx/treeTile/__tests__/mockProps.ts +0 -16
  234. package/src/modules/dx/treeTile/__tests__/treeTile.test.ts +0 -168
  235. package/src/modules/dx/typeBadge/__tests__/typeBadge.test.ts +0 -77
  236. package/src/modules/dx/typeBadge/typeBadge.stories.ts +0 -114
  237. package/src/modules/dx/typeBadgeGroup/__tests__/mockProps.ts +0 -11
  238. package/src/modules/dx/typeBadgeGroup/__tests__/typeBadgeGroup.test.ts +0 -72
  239. package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.stories.ts +0 -19
  240. package/src/modules/test-components/buttonTest/buttonTest.html +0 -3
  241. package/src/modules/test-components/buttonTest/buttonTest.ts +0 -3
  242. package/src/modules/test-components/codeBlockTest/codeBlockTest.js +0 -4
  243. package/src/modules/test-components/featureGridTest/featureGridTest.html +0 -7
  244. package/src/modules/test-components/featureGridTest/featureGridTest.ts +0 -5
  245. package/src/modules/test-components/instrumentationTest/instrumentationTest.html +0 -4
  246. package/src/modules/test-components/instrumentationTest/instrumentationTest.ts +0 -8
  247. package/src/modules/test-components/popoverTest/popoverTest.html +0 -6
  248. package/src/modules/test-components/popoverTest/popoverTest.ts +0 -5
  249. package/src/modules/utils/highlight/__tests__/highlight.test.ts +0 -108
  250. package/src/modules/utils/highlight/__tests__/mockProps.ts +0 -45
  251. package/src/modules/utils-internal/jest/jest.ts +0 -58
  252. package/src/modules/utils-internal/recentSearches/__tests__/recentSearches.test.ts +0 -83
  253. package/src/modules/utils-internal/storybook/storybook.ts +0 -32
  254. package/src/modules/utils-internal/tests/tests.ts +0 -38
  255. package/src/modules/utils-internal/wordpress/__tests__/wordpress.test.ts +0 -15
@@ -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
- `;