@salesforcedevs/dx-components 0.26.0 → 0.26.1-alpha.13

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