@salesforcedevs/dx-components 0.26.2 → 0.28.0

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/popover/popover.ts +1 -1
  28. package/src/modules/dx/section/section.ts +1 -1
  29. package/src/modules/dx/sidebar/sidebar.ts +1 -1
  30. package/src/modules/dx/sidebarSearch/sidebarSearch.ts +2 -5
  31. package/src/modules/dx/slackCta/slackCta.css +1 -1
  32. package/src/modules/dx/tooltip/tooltip.css +1 -0
  33. package/src/modules/dx/typeBadge/typeBadge.ts +1 -1
  34. package/src/modules/{utils-internal → utils}/coveo/coveo.ts +0 -0
  35. package/src/modules/{utils-internal → utils}/css/css.ts +0 -0
  36. package/src/modules/{utils-internal → utils}/devices/devices.ts +0 -0
  37. package/src/modules/utils/highlight/highlight.ts +1 -1
  38. package/src/modules/{utils-internal → utils}/options/options.ts +0 -0
  39. package/src/modules/{utils-internal → utils}/prismjs/prismjs.html +0 -0
  40. package/src/modules/{utils-internal → utils}/prismjs/prismjs.ts +0 -0
  41. package/src/modules/{utils-internal → utils}/recentSearches/recentSearches.ts +0 -0
  42. package/src/modules/{utils-internal → utils}/regexps/regexps.ts +0 -0
  43. package/src/modules/{utils-internal → utils}/seo/seo.ts +0 -0
  44. package/src/modules/{utils-internal → utils}/slot/slot.ts +0 -0
  45. package/src/modules/{utils-internal → utils}/wordpress/wordpress.ts +0 -0
  46. package/src/modules/dx/banner/__tests__/banner.test.ts +0 -33
  47. package/src/modules/dx/brandThemeProvider/__tests__/brandThemeProvider.test.ts +0 -49
  48. package/src/modules/dx/brandThemeProvider/brandThemeProvider.stories.ts +0 -321
  49. package/src/modules/dx/breadcrumbs/__tests__/breadcrumbs.test.ts +0 -140
  50. package/src/modules/dx/breadcrumbs/__tests__/mockProps.ts +0 -28
  51. package/src/modules/dx/breadcrumbs/breadcrumbs.stories.ts +0 -39
  52. package/src/modules/dx/button/__tests__/button.test.ts +0 -107
  53. package/src/modules/dx/button/button.stories.ts +0 -150
  54. package/src/modules/dx/cardBlogPost/__tests__/cardBlogPost.test.ts +0 -26
  55. package/src/modules/dx/cardBlogPost/__tests__/mockProps.ts +0 -12
  56. package/src/modules/dx/cardBlogPost/cardBlogPost.stories.ts +0 -164
  57. package/src/modules/dx/cardBlogPostProvider/__tests__/cardBlogPostProvider.test.ts +0 -34
  58. package/src/modules/dx/cardBlogPostProvider/__tests__/mockWordpressPosts.ts +0 -44
  59. package/src/modules/dx/cardCallout/__tests__/cardCallout.test.ts +0 -20
  60. package/src/modules/dx/cardCallout/__tests__/mockProps.ts +0 -7
  61. package/src/modules/dx/cardCallout/cardCallout.stories.ts +0 -33
  62. package/src/modules/dx/cardContent/__tests__/cardContent.test.ts +0 -100
  63. package/src/modules/dx/cardContent/__tests__/mockProps.ts +0 -13
  64. package/src/modules/dx/cardContent/cardContent.stories.ts +0 -127
  65. package/src/modules/dx/cardDemo/cardDemo.stories.ts +0 -115
  66. package/src/modules/dx/cardDocs/__tests__/cardDocs.test.ts +0 -48
  67. package/src/modules/dx/cardDocs/__tests__/mockProps.ts +0 -9
  68. package/src/modules/dx/cardDocs/cardDocs.stories.ts +0 -299
  69. package/src/modules/dx/cardEvent/__tests__/cardEvent.test.ts +0 -95
  70. package/src/modules/dx/cardEvent/__tests__/mockProps.ts +0 -10
  71. package/src/modules/dx/cardEvent/cardEvent.stories.ts +0 -153
  72. package/src/modules/dx/cardExpanded/__tests__/cardExpanded.test.ts +0 -193
  73. package/src/modules/dx/cardExpanded/__tests__/mockProps.ts +0 -21
  74. package/src/modules/dx/cardExpanded/cardExpanded.stories.ts +0 -59
  75. package/src/modules/dx/cardGrid/__tests__/cardMockProps.ts +0 -431
  76. package/src/modules/dx/cardGrid/__tests__/mockProps.ts +0 -15
  77. package/src/modules/dx/cardGrid/cardGrid.stories.ts +0 -111
  78. package/src/modules/dx/cardMinimal/__tests__/cardMinimal.test.ts +0 -87
  79. package/src/modules/dx/cardMinimal/__tests__/mockProps.ts +0 -10
  80. package/src/modules/dx/cardMinimal/cardMinimal.stories.ts +0 -32
  81. package/src/modules/dx/cardNews/__tests__/cardNews.test.ts +0 -58
  82. package/src/modules/dx/cardNews/__tests__/mockProps.ts +0 -7
  83. package/src/modules/dx/cardNews/cardNews.stories.ts +0 -115
  84. package/src/modules/dx/cardPodcastEpisode/__tests__/cardPodcastEpisode.test.ts +0 -68
  85. package/src/modules/dx/cardPodcastEpisode/cardPodcastEpisode.stories.ts +0 -31
  86. package/src/modules/dx/cardPodcastEpisodeProvider/__tests__/cardPodcastEpisodeProvider.test.ts +0 -36
  87. package/src/modules/dx/cardPodcastEpisodeProvider/__tests__/mockWordpressEpisodes.ts +0 -50
  88. package/src/modules/dx/cardSmall/__tests__/cardSmall.test.ts +0 -66
  89. package/src/modules/dx/cardSmall/__tests__/mockProps.ts +0 -8
  90. package/src/modules/dx/cardSmall/cardSmall.stories.ts +0 -166
  91. package/src/modules/dx/cardTitle/__tests__/cardTitle.test.ts +0 -46
  92. package/src/modules/dx/cardTrailheadModule/__tests__/cardTrailheadModule.test.ts +0 -18
  93. package/src/modules/dx/cardTrailheadModule/__tests__/mockProps.ts +0 -11
  94. package/src/modules/dx/cardTrailheadModule/cardTrailheadModule.stories.ts +0 -122
  95. package/src/modules/dx/cardVideoPreview/__tests__/cardVideoPreview.test.ts +0 -22
  96. package/src/modules/dx/cardVideoPreview/__tests__/mockProps.ts +0 -11
  97. package/src/modules/dx/cardVideoPreview/cardVideoPreview.stories.ts +0 -147
  98. package/src/modules/dx/checkbox/__tests__/checkbox.test.ts +0 -85
  99. package/src/modules/dx/checkbox/__tests__/mockProps.ts +0 -5
  100. package/src/modules/dx/checkbox/checkbox.stories.ts +0 -38
  101. package/src/modules/dx/checkboxGroup/__tests__/checkboxGroup.test.ts +0 -80
  102. package/src/modules/dx/checkboxGroup/__tests__/mockProps.ts +0 -14
  103. package/src/modules/dx/checkboxGroup/checkboxGroup.stories.ts +0 -33
  104. package/src/modules/dx/codeBlock/__tests__/codeBlock.test.ts +0 -238
  105. package/src/modules/dx/codeBlock/__tests__/mockProps.ts +0 -160
  106. package/src/modules/dx/codeBlock/codeBlock.stories.ts +0 -143
  107. package/src/modules/dx/dropdown/__tests__/dropdown.test.ts +0 -165
  108. package/src/modules/dx/dropdown/__tests__/mockNestedOptions.ts +0 -96
  109. package/src/modules/dx/dropdown/__tests__/mockOptions.ts +0 -10
  110. package/src/modules/dx/dropdown/__tests__/mockProps.ts +0 -6
  111. package/src/modules/dx/dropdown/dropdown.stories.ts +0 -89
  112. package/src/modules/dx/dropdownOption/__tests__/dropdownOption.test.ts +0 -112
  113. package/src/modules/dx/dropdownOption/__tests__/mockProps.ts +0 -20
  114. package/src/modules/dx/emptyState/__tests__/emptyState.test.ts +0 -52
  115. package/src/modules/dx/emptyState/__tests__/mockProps.ts +0 -4
  116. package/src/modules/dx/emptyState/emptyState.stories.ts +0 -45
  117. package/src/modules/dx/feature/__tests__/feature.test.ts +0 -51
  118. package/src/modules/dx/feature/__tests__/mockProps.ts +0 -8
  119. package/src/modules/dx/featureGrid/__tests__/featureGrid.test.ts +0 -21
  120. package/src/modules/dx/featureGrid/featureGrid.stories.ts +0 -120
  121. package/src/modules/dx/featuredContentHeader/__tests__/featuredContentHeader.test.ts +0 -178
  122. package/src/modules/dx/featuredContentHeader/__tests__/mockProps.ts +0 -73
  123. package/src/modules/dx/featuredContentHeader/featuredContentHeader.stories.ts +0 -153
  124. package/src/modules/dx/featuresList/__tests__/featuresList.test.ts +0 -43
  125. package/src/modules/dx/featuresList/__tests__/mockProps.ts +0 -17
  126. package/src/modules/dx/featuresList/featuresList.stories.ts +0 -30
  127. package/src/modules/dx/footer/__tests__/footer.test.ts +0 -147
  128. package/src/modules/dx/footer/__tests__/mockLocales.ts +0 -7
  129. package/src/modules/dx/footer/footer.stories.ts +0 -88
  130. package/src/modules/dx/footerOption/__tests__/footerOption.test.ts +0 -34
  131. package/src/modules/dx/footerOption/__tests__/mockProps.ts +0 -7
  132. package/src/modules/dx/formattedDateTime/__tests__/formattedDateTime.test.ts +0 -25
  133. package/src/modules/dx/formattedDateTime/__tests__/mockProps.ts +0 -13
  134. package/src/modules/dx/formattedDateTime/formattedDateTime.stories.ts +0 -103
  135. package/src/modules/dx/grid/__tests__/grid.test.ts +0 -32
  136. package/src/modules/dx/grid/grid.stories.ts +0 -134
  137. package/src/modules/dx/groupBio/__tests__/groupBio.test.ts +0 -82
  138. package/src/modules/dx/groupBio/__tests__/mockProps.ts +0 -15
  139. package/src/modules/dx/groupBio/groupBio.stories.ts +0 -66
  140. package/src/modules/dx/groupText/__tests__/groupText.test.ts +0 -69
  141. package/src/modules/dx/groupText/__tests__/mockProps.ts +0 -35
  142. package/src/modules/dx/groupText/groupText.stories.ts +0 -81
  143. package/src/modules/dx/header/__tests__/header.test.ts +0 -236
  144. package/src/modules/dx/header/__tests__/mockNavArchitects.ts +0 -169
  145. package/src/modules/dx/header/__tests__/mockNavDevelopers.ts +0 -419
  146. package/src/modules/dx/header/__tests__/mockNavs.ts +0 -115
  147. package/src/modules/dx/header/__tests__/mockProps.ts +0 -164
  148. package/src/modules/dx/header/header.stories.ts +0 -172
  149. package/src/modules/dx/headerMobileNavMenu/__tests__/headerMobileNavMenu.test.ts +0 -123
  150. package/src/modules/dx/headerMobileNavMenuOption/__tests__/headerMobileNavMenuOption.test.ts +0 -38
  151. package/src/modules/dx/headerNav/__tests__/headerNav.test.ts +0 -49
  152. package/src/modules/dx/headerSearch/__tests__/headerSearch.test.ts +0 -182
  153. package/src/modules/dx/headerSearch/__tests__/mockData.ts +0 -11
  154. package/src/modules/dx/headerSearch/__tests__/mockProps.ts +0 -6
  155. package/src/modules/dx/helmet/__tests__/helmet.test.ts +0 -52
  156. package/src/modules/dx/helmet/helmet.stories.ts +0 -53
  157. package/src/modules/dx/hr/__tests__/hr.test.ts +0 -53
  158. package/src/modules/dx/hr/__tests__/mockProps.ts +0 -16
  159. package/src/modules/dx/hr/hr.stories.ts +0 -50
  160. package/src/modules/dx/icon/__tests__/icon.test.ts +0 -54
  161. package/src/modules/dx/icon/icon.stories.ts +0 -100
  162. package/src/modules/dx/iconBadge/__tests__/iconBadge.test.ts +0 -17
  163. package/src/modules/dx/iconBadge/iconBadge.stories.ts +0 -32
  164. package/src/modules/dx/imageAndLabel/__tests__/imageAndLabel.test.ts +0 -39
  165. package/src/modules/dx/imageAndLabel/__tests__/mockProps.ts +0 -6
  166. package/src/modules/dx/imageAndLabel/imageAndLabel.stories.ts +0 -48
  167. package/src/modules/dx/input/__tests__/input.test.ts +0 -357
  168. package/src/modules/dx/input/input.stories.ts +0 -102
  169. package/src/modules/dx/instrumentation/__tests__/instrumentation.test.ts +0 -86
  170. package/src/modules/dx/interactiveImage/__tests__/interactiveImage.test.ts +0 -83
  171. package/src/modules/dx/interactiveImage/__tests__/mockProps.ts +0 -39
  172. package/src/modules/dx/interactiveImage/interactiveImage.stories.ts +0 -31
  173. package/src/modules/dx/lazy/__tests__/lazy.test.ts +0 -43
  174. package/src/modules/dx/lazy/lazy.stories.ts +0 -132
  175. package/src/modules/dx/pagination/__tests__/pagination.test.ts +0 -121
  176. package/src/modules/dx/pagination/pagination.stories.ts +0 -88
  177. package/src/modules/dx/podcastHost/__tests__/mockProps.ts +0 -8
  178. package/src/modules/dx/podcastHost/__tests__/podcastHost.test.ts +0 -21
  179. package/src/modules/dx/podcastHost/podcastHost.stories.ts +0 -17
  180. package/src/modules/dx/podcastPlayer/__tests__/podcastPlayer.test.ts +0 -20
  181. package/src/modules/dx/podcastPlayer/podcastPlayer.stories.ts +0 -13
  182. package/src/modules/dx/podcastSubscription/__tests__/podcastSubscription.test.ts +0 -16
  183. package/src/modules/dx/podcastSubscription/podcastSubscription.stories.ts +0 -23
  184. package/src/modules/dx/popover/__tests__/mockProps.ts +0 -8
  185. package/src/modules/dx/popover/__tests__/popover.test.ts +0 -313
  186. package/src/modules/dx/popover/popover.stories.ts +0 -82
  187. package/src/modules/dx/radioGroup/__tests__/mockProps.ts +0 -12
  188. package/src/modules/dx/radioGroup/__tests__/radioGroup.test.ts +0 -42
  189. package/src/modules/dx/radioGroup/radioGroup.stories.ts +0 -25
  190. package/src/modules/dx/relativeDateTime/__tests__/mockProps.ts +0 -55
  191. package/src/modules/dx/relativeDateTime/__tests__/relativeDateTime.test.ts +0 -52
  192. package/src/modules/dx/relativeDateTime/relativeDateTime.stories.ts +0 -83
  193. package/src/modules/dx/searchResults/searchResults.stories.ts +0 -36
  194. package/src/modules/dx/section/__tests__/section.test.ts +0 -17
  195. package/src/modules/dx/section/section.stories.ts +0 -381
  196. package/src/modules/dx/sectionSignup/__tests__/sectionSignup.test.ts +0 -66
  197. package/src/modules/dx/sectionSignup/sectionSignup.stories.ts +0 -49
  198. package/src/modules/dx/select/select.stories.ts +0 -59
  199. package/src/modules/dx/sidebar/__tests__/mockProps.ts +0 -181
  200. package/src/modules/dx/sidebar/__tests__/mockSearchChangeEmptyEvent.ts +0 -6
  201. package/src/modules/dx/sidebar/__tests__/mockSearchChangeEvent.ts +0 -527
  202. package/src/modules/dx/sidebar/__tests__/sidebar.test.ts +0 -568
  203. package/src/modules/dx/sidebar/sidebar.stories.ts +0 -188
  204. package/src/modules/dx/sidebarOld/__tests__/mockProps.ts +0 -178
  205. package/src/modules/dx/sidebarOld/__tests__/sidebarOld.test.ts +0 -570
  206. package/src/modules/dx/sidebarOld/sidebarOld.stories.ts +0 -139
  207. package/src/modules/dx/sidebarSearch/__tests__/mockPreloadedState.ts +0 -1686
  208. package/src/modules/dx/sidebarSearch/__tests__/sidebarSearch.test.ts +0 -175
  209. package/src/modules/dx/sidebarSearchResult/__tests__/sidebarSearchResult.test.ts +0 -96
  210. package/src/modules/dx/slackCta/__tests__/slackCta.test.ts +0 -36
  211. package/src/modules/dx/slackCta/slackCta.stories.ts +0 -25
  212. package/src/modules/dx/socials/__tests__/socials.test.ts +0 -114
  213. package/src/modules/dx/socials/socials.stories.ts +0 -24
  214. package/src/modules/dx/spinner/__tests__/spinner.test.ts +0 -37
  215. package/src/modules/dx/spinner/spinner.stories.ts +0 -69
  216. package/src/modules/dx/tab/__tests__/tab.test.ts +0 -129
  217. package/src/modules/dx/tab/tab.stories.ts +0 -57
  218. package/src/modules/dx/toc/__tests__/mockProps.ts +0 -28
  219. package/src/modules/dx/toc/__tests__/toc.test.ts +0 -109
  220. package/src/modules/dx/toc/toc.stories.ts +0 -26
  221. package/src/modules/dx/tooltip/__tests__/tooltip.test.ts +0 -22
  222. package/src/modules/dx/tooltip/tooltip.stories.ts +0 -46
  223. package/src/modules/dx/topics/__tests__/mockProps.ts +0 -3
  224. package/src/modules/dx/topics/__tests__/topics.test.ts +0 -31
  225. package/src/modules/dx/tree/__tests__/mockProps.ts +0 -215
  226. package/src/modules/dx/tree/__tests__/tree.test.ts +0 -346
  227. package/src/modules/dx/tree/__tests__/treeHandler.test.ts +0 -194
  228. package/src/modules/dx/tree/tree.stories.ts +0 -65
  229. package/src/modules/dx/treeItem/__tests__/mockProps.ts +0 -46
  230. package/src/modules/dx/treeItem/__tests__/treeItem.test.ts +0 -377
  231. package/src/modules/dx/treeTile/__tests__/mockProps.ts +0 -16
  232. package/src/modules/dx/treeTile/__tests__/treeTile.test.ts +0 -168
  233. package/src/modules/dx/typeBadge/__tests__/typeBadge.test.ts +0 -77
  234. package/src/modules/dx/typeBadge/typeBadge.stories.ts +0 -114
  235. package/src/modules/dx/typeBadgeGroup/__tests__/mockProps.ts +0 -11
  236. package/src/modules/dx/typeBadgeGroup/__tests__/typeBadgeGroup.test.ts +0 -72
  237. package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.stories.ts +0 -19
  238. package/src/modules/test-components/buttonTest/buttonTest.html +0 -3
  239. package/src/modules/test-components/buttonTest/buttonTest.ts +0 -3
  240. package/src/modules/test-components/codeBlockTest/codeBlockTest.js +0 -4
  241. package/src/modules/test-components/featureGridTest/featureGridTest.html +0 -7
  242. package/src/modules/test-components/featureGridTest/featureGridTest.ts +0 -5
  243. package/src/modules/test-components/instrumentationTest/instrumentationTest.html +0 -4
  244. package/src/modules/test-components/instrumentationTest/instrumentationTest.ts +0 -8
  245. package/src/modules/test-components/popoverTest/popoverTest.html +0 -6
  246. package/src/modules/test-components/popoverTest/popoverTest.ts +0 -5
  247. package/src/modules/test-components/slackCtaTest/slackCtaTest.html +0 -3
  248. package/src/modules/test-components/slackCtaTest/slackCtaTest.ts +0 -3
  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,570 +0,0 @@
1
- import Button from "dx/button";
2
- import Input from "dx/input";
3
- import { track } from "dx/instrumentation";
4
- import SidebarOld from "dx/sidebarOld";
5
- import Tree from "dx/tree";
6
- import { TreeNode } from "typings/custom";
7
- import { createMediaMock } from "utils-internal/jest";
8
- import { createRenderComponent } from "utils-internal/tests";
9
- import { SAMPLE_TREES } from "./mockProps";
10
-
11
- jest.mock("dx/instrumentation");
12
-
13
- const TAG = "dx-sidebar-old";
14
- const renderComponent = createRenderComponent(TAG, SidebarOld);
15
-
16
- const COLLAPSED_CLASS = "collapsed";
17
- const EXPECTED_QUERY = "(max-width: 768px)";
18
- const GTM_EVENT_NAME = "custEv_leftNavLinkClick";
19
- const TOGGLE_BUTTON_LABEL = "Toggle Sidebar";
20
-
21
- describe(TAG, () => {
22
- describe("desktop", () => {
23
- describe("component render", () => {
24
- it("should render as expanded with all the elements that sidebar includes", () => {
25
- const expectedTitle = "Super cool title";
26
- const component = renderComponent({
27
- header: expectedTitle,
28
- trees: SAMPLE_TREES
29
- });
30
-
31
- expect(component.trees).toEqual(SAMPLE_TREES);
32
-
33
- const container: HTMLElement =
34
- component.shadowRoot.querySelector(".container");
35
- expect(container).not.toBeNull();
36
- expect(container.classList).not.toContain(COLLAPSED_CLASS);
37
-
38
- const headerTitle: HTMLElement =
39
- component.shadowRoot.querySelector(".header h2");
40
- expect(headerTitle).not.toBeNull();
41
- expect(headerTitle.textContent).toBe(expectedTitle);
42
-
43
- const collapseButton: Button =
44
- component.shadowRoot.querySelector("dx-button");
45
- expect(collapseButton).not.toBeNull();
46
- expect(collapseButton.iconSymbol).toBe("close_panel");
47
-
48
- const searchBox: Input =
49
- component.shadowRoot.querySelector("dx-input");
50
- expect(searchBox).not.toBeNull();
51
- expect(searchBox.value).toBe("");
52
-
53
- const trees: Array<Tree> =
54
- component.shadowRoot.querySelectorAll("dx-tree");
55
- expect(trees).toHaveLength(SAMPLE_TREES.length);
56
- trees.forEach((tree, index) =>
57
- expect(tree.treeRoot).toHaveProperty(
58
- "name",
59
- SAMPLE_TREES[index].name
60
- )
61
- );
62
-
63
- // Mobile specific elements should not render
64
- const headerTitleDesktop = component.shadowRoot.querySelector(
65
- ".header span.header-title"
66
- );
67
- expect(headerTitleDesktop).toBeNull();
68
-
69
- const toggleButtonDesktop = component.shadowRoot.querySelector(
70
- ".header .header-toggle-icon"
71
- );
72
- expect(toggleButtonDesktop).toBeNull();
73
-
74
- expect(window.matchMedia).toBeCalledTimes(1);
75
- expect(window.matchMedia).toBeCalledWith(EXPECTED_QUERY);
76
-
77
- return expect(component).toBeAccessible();
78
- });
79
-
80
- it("should accept a json string as trees", () => {
81
- const expectedTitle = "Other super cool title";
82
- const component = renderComponent({
83
- header: expectedTitle,
84
- trees: JSON.stringify(SAMPLE_TREES)
85
- });
86
-
87
- expect(component.trees).toEqual(SAMPLE_TREES);
88
-
89
- const container: HTMLElement =
90
- component.shadowRoot.querySelector(".container");
91
- expect(container).not.toBeNull();
92
- expect(container.classList).not.toContain(COLLAPSED_CLASS);
93
-
94
- const headerTitle: HTMLElement =
95
- component.shadowRoot.querySelector(".header h2");
96
- expect(headerTitle).not.toBeNull();
97
- expect(headerTitle.textContent).toBe(expectedTitle);
98
-
99
- const collapseButton: Button =
100
- component.shadowRoot.querySelector("dx-button");
101
- expect(collapseButton).not.toBeNull();
102
- expect(collapseButton.iconSymbol).toBe("close_panel");
103
-
104
- const searchBox: Input =
105
- component.shadowRoot.querySelector("dx-input");
106
- expect(searchBox).not.toBeNull();
107
- expect(searchBox.value).toBe("");
108
-
109
- const trees: Array<Tree> =
110
- component.shadowRoot.querySelectorAll("dx-tree");
111
- expect(trees).toHaveLength(SAMPLE_TREES.length);
112
- trees.forEach((tree, index) =>
113
- expect(tree.treeRoot).toHaveProperty(
114
- "name",
115
- SAMPLE_TREES[index].name
116
- )
117
- );
118
-
119
- return expect(component).toBeAccessible();
120
- });
121
-
122
- it("should accept a value", () => {
123
- const testValue = "introduction";
124
-
125
- const component = renderComponent({
126
- header: "Non visible title",
127
- trees: SAMPLE_TREES,
128
- value: testValue
129
- });
130
-
131
- const trees: Array<Tree> =
132
- component.shadowRoot.querySelectorAll("dx-tree");
133
-
134
- expect(trees).toHaveLength(SAMPLE_TREES.length);
135
- trees.forEach((tree) => expect(tree.value).toBe(testValue));
136
-
137
- return expect(component).toBeAccessible();
138
- });
139
- });
140
-
141
- describe("component interactions", () => {
142
- it("should expand/collapse sidebar when toggle button is clicked", () => {
143
- const component = renderComponent({
144
- header: "Cool Title",
145
- trees: SAMPLE_TREES
146
- });
147
-
148
- const container: HTMLElement =
149
- component.shadowRoot.querySelector(".container");
150
- const toggleButton: HTMLElement =
151
- component.shadowRoot.querySelector("dx-button");
152
- toggleButton.click();
153
-
154
- expect(track).toBeCalledTimes(1);
155
- expect(track).toBeCalledWith(toggleButton, GTM_EVENT_NAME, {
156
- sideNavAction: "collapse",
157
- clickText: TOGGLE_BUTTON_LABEL
158
- });
159
-
160
- return Promise.resolve()
161
- .then(() => {
162
- expect(container.classList).toContain(COLLAPSED_CLASS);
163
-
164
- const headerTitle: HTMLElement =
165
- component.shadowRoot.querySelector(".header h2");
166
- expect(headerTitle).toBeNull();
167
-
168
- const expandButton: Button =
169
- component.shadowRoot.querySelector("dx-button");
170
- expect(expandButton).not.toBeNull();
171
-
172
- const searchBox: Input =
173
- component.shadowRoot.querySelector("dx-input");
174
- expect(searchBox).toBeNull();
175
-
176
- const trees: Tree =
177
- component.shadowRoot.querySelector("dx-tree");
178
- expect(trees).toBeNull();
179
-
180
- toggleButton.click();
181
-
182
- expect(track).toBeCalledTimes(2);
183
- expect(track).toHaveBeenLastCalledWith(
184
- toggleButton,
185
- GTM_EVENT_NAME,
186
- {
187
- sideNavAction: "expand",
188
- clickText: TOGGLE_BUTTON_LABEL
189
- }
190
- );
191
- })
192
- .then(() => {
193
- expect(container.classList).not.toContain(
194
- COLLAPSED_CLASS
195
- );
196
-
197
- const headerTitle: HTMLElement =
198
- component.shadowRoot.querySelector(".header h2");
199
- expect(headerTitle).not.toBeNull();
200
-
201
- const searchBox: Input =
202
- component.shadowRoot.querySelector("dx-input");
203
- expect(searchBox).not.toBeNull();
204
-
205
- const trees: Tree =
206
- component.shadowRoot.querySelector("dx-tree");
207
- expect(trees).not.toBeNull();
208
-
209
- return expect(component).toBeAccessible();
210
- });
211
- });
212
-
213
- it("should make hover effect on toggle button hover", () => {
214
- const component = renderComponent({
215
- header: "Cool Title",
216
- trees: SAMPLE_TREES
217
- });
218
-
219
- const container: HTMLElement =
220
- component.shadowRoot.querySelector(".container");
221
- const toggleButton: Button =
222
- component.shadowRoot.querySelector("dx-button");
223
-
224
- expect(container.classList).not.toContain(
225
- "container-border-active"
226
- );
227
-
228
- toggleButton.dispatchEvent(new MouseEvent("mouseenter"));
229
-
230
- return Promise.resolve()
231
- .then(() => {
232
- expect(container.classList).toContain(
233
- "container-border-active"
234
- );
235
- toggleButton.dispatchEvent(
236
- new MouseEvent("mouseleave")
237
- );
238
- })
239
- .then(() => {
240
- expect(container.classList).not.toContain(
241
- "container-border-active"
242
- );
243
- });
244
- });
245
- });
246
- });
247
-
248
- describe("mobile", () => {
249
- const oldMatchMedia = window.matchMedia;
250
-
251
- beforeAll(() => {
252
- window.matchMedia = createMediaMock(true);
253
- });
254
-
255
- afterAll(() => {
256
- window.matchMedia = oldMatchMedia;
257
- });
258
-
259
- describe("render", () => {
260
- it("should render as collapsed", () => {
261
- const expectedTitle = SAMPLE_TREES[0].label;
262
- const component = renderComponent({
263
- trees: SAMPLE_TREES
264
- });
265
-
266
- const headerTitle: HTMLElement =
267
- component.shadowRoot.querySelector(
268
- ".header span.header-title"
269
- );
270
- expect(headerTitle).not.toBeNull();
271
- expect(headerTitle.textContent).toBe(expectedTitle);
272
-
273
- const headerIcon = component.shadowRoot.querySelector(
274
- ".header .header-toggle-icon dx-icon"
275
- );
276
- expect(headerIcon).not.toBeNull();
277
-
278
- const searchBox: Input =
279
- component.shadowRoot.querySelector("dx-input");
280
- expect(searchBox).toBeNull();
281
-
282
- const trees: Tree =
283
- component.shadowRoot.querySelector("dx-tree");
284
- expect(trees).toBeNull();
285
-
286
- // Desktop specific elements should not render
287
- const headerTitleDesktop = component.shadowRoot.querySelector(
288
- ".header h2.header-title"
289
- );
290
- expect(headerTitleDesktop).toBeNull();
291
-
292
- const toggleButtonDesktop = component.shadowRoot.querySelector(
293
- "dx-button.header-toggle-button"
294
- );
295
- expect(toggleButtonDesktop).toBeNull();
296
-
297
- expect(window.matchMedia).toBeCalledTimes(1);
298
- expect(window.matchMedia).toBeCalledWith(EXPECTED_QUERY);
299
-
300
- return expect(component).toBeAccessible();
301
- });
302
-
303
- it("should ignore null values for trees api", () => {
304
- const component = renderComponent({
305
- header: "Cool Title",
306
- trees: null
307
- });
308
-
309
- const tree: Tree =
310
- component.shadowRoot.querySelector("dx-tree");
311
- expect(tree).toBeNull();
312
-
313
- const headerTitle: HTMLElement =
314
- component.shadowRoot.querySelector(
315
- ".header span.header-title"
316
- );
317
- expect(headerTitle).not.toBeNull();
318
- expect(headerTitle.textContent).toBe("");
319
- });
320
- });
321
-
322
- describe("component interactions", () => {
323
- it("should expand/collapse sidebar when mobile toggle is clicked", () => {
324
- const expectedTitle = SAMPLE_TREES[0].label;
325
- const component = renderComponent({
326
- trees: SAMPLE_TREES
327
- });
328
-
329
- const container: HTMLElement =
330
- component.shadowRoot.querySelector(".container");
331
- const toggleDiv: HTMLElement =
332
- component.shadowRoot.querySelector("div.header");
333
- toggleDiv.click();
334
-
335
- expect(track).toBeCalledTimes(1);
336
- expect(track).toBeCalledWith(toggleDiv, GTM_EVENT_NAME, {
337
- sideNavAction: "expand",
338
- clickText: TOGGLE_BUTTON_LABEL
339
- });
340
-
341
- return Promise.resolve()
342
- .then(() => {
343
- expect(container.classList).not.toContain(
344
- COLLAPSED_CLASS
345
- );
346
- const headerTitle: HTMLElement =
347
- component.shadowRoot.querySelector(
348
- ".header span.header-title"
349
- );
350
- expect(headerTitle).not.toBeNull();
351
- expect(headerTitle.textContent).toBe(expectedTitle);
352
-
353
- const headerIcon = component.shadowRoot.querySelector(
354
- ".header .header-toggle-icon dx-icon"
355
- );
356
- expect(headerIcon).not.toBeNull();
357
-
358
- const searchBox: Input =
359
- component.shadowRoot.querySelector("dx-input");
360
- expect(searchBox).not.toBeNull();
361
- expect(searchBox.value).toBe("");
362
-
363
- const trees: Array<Tree> =
364
- component.shadowRoot.querySelectorAll("dx-tree");
365
- expect(trees).toHaveLength(SAMPLE_TREES.length);
366
- trees.forEach((tree, index) =>
367
- expect(tree.treeRoot).toHaveProperty(
368
- "name",
369
- SAMPLE_TREES[index].name
370
- )
371
- );
372
-
373
- // Desktop specific elements should not render
374
- const headerTitleDesktop =
375
- component.shadowRoot.querySelector(
376
- ".header h2.header-title"
377
- );
378
- expect(headerTitleDesktop).toBeNull();
379
-
380
- const toggleButtonDesktop =
381
- component.shadowRoot.querySelector(
382
- "dx-button.header-toggle-button"
383
- );
384
- expect(toggleButtonDesktop).toBeNull();
385
-
386
- toggleDiv.click();
387
-
388
- expect(track).toBeCalledTimes(2);
389
- expect(track).toHaveBeenLastCalledWith(
390
- toggleDiv,
391
- GTM_EVENT_NAME,
392
- {
393
- sideNavAction: "collapse",
394
- clickText: TOGGLE_BUTTON_LABEL
395
- }
396
- );
397
- })
398
- .then(() => {
399
- expect(container.classList).toContain(COLLAPSED_CLASS);
400
-
401
- return expect(component).toBeAccessible();
402
- });
403
- });
404
-
405
- it("should update header with selected value label", () => {
406
- const defaultTitle = SAMPLE_TREES[0].label;
407
- const itemToSelect = SAMPLE_TREES[0].children![2];
408
- const component = renderComponent({
409
- trees: SAMPLE_TREES
410
- });
411
-
412
- const toggleDiv: HTMLElement =
413
- component.shadowRoot.querySelector("div.header");
414
- const headerTitle: HTMLElement = toggleDiv.querySelector(
415
- ".header span.header-title"
416
- )!;
417
-
418
- toggleDiv.click();
419
-
420
- return Promise.resolve()
421
- .then(() => {
422
- expect(headerTitle).not.toBeNull();
423
- expect(headerTitle.textContent).toBe(defaultTitle);
424
-
425
- const tree: Tree =
426
- component.shadowRoot.querySelector("dx-tree");
427
- tree.dispatchEvent(
428
- new CustomEvent("select", {
429
- detail: { name: itemToSelect.name }
430
- })
431
- );
432
- })
433
- .then(() => {
434
- expect(headerTitle.textContent).toBe(
435
- itemToSelect.label
436
- );
437
- return expect(component).toBeAccessible();
438
- });
439
- });
440
- });
441
- });
442
-
443
- describe("general", () => {
444
- describe("render", () => {
445
- it("should accept a single tree element", () => {
446
- const [expectedTree] = SAMPLE_TREES;
447
- const component = renderComponent({
448
- header: "Cool Title",
449
- trees: expectedTree
450
- });
451
-
452
- const trees: Array<Tree> =
453
- component.shadowRoot.querySelectorAll("dx-tree");
454
- expect(trees).toHaveLength(1);
455
-
456
- const [singleTree] = trees;
457
- expect(singleTree.treeRoot).toHaveProperty(
458
- "name",
459
- expectedTree.name
460
- );
461
- });
462
- });
463
-
464
- describe("component interactions", () => {
465
- it("should handle onselect event fired from dx-tree", () => {
466
- const mockSelect = jest.fn();
467
- const expectedName = "test_name";
468
-
469
- const component = renderComponent({
470
- header: "Cool Title",
471
- trees: SAMPLE_TREES
472
- });
473
-
474
- component.addEventListener("select", mockSelect);
475
-
476
- const tree: Tree =
477
- component.shadowRoot.querySelector("dx-tree");
478
- expect(tree).not.toBeNull();
479
- expect(tree.value).toBeUndefined();
480
-
481
- tree.dispatchEvent(
482
- new CustomEvent("select", {
483
- detail: { name: expectedName },
484
- composed: true,
485
- bubbles: true
486
- })
487
- );
488
-
489
- return Promise.resolve().then(() => {
490
- expect(tree.value).toBe(expectedName);
491
- expect(mockSelect).toBeCalledTimes(1);
492
- const { detail, composed, bubbles } =
493
- mockSelect.mock.calls[0][0];
494
- expect(detail).toEqual({
495
- name: expectedName
496
- });
497
- expect(composed).toBe(true);
498
- expect(bubbles).toBe(true);
499
-
500
- return expect(component).toBeAccessible();
501
- });
502
- });
503
- });
504
-
505
- describe("search", () => {
506
- beforeAll(() => {
507
- jest.useFakeTimers();
508
- });
509
-
510
- it("should filter trees element label based on the search text value", () => {
511
- const testSearchText = " token ";
512
- const component = renderComponent({
513
- header: "Cool Title",
514
- trees: SAMPLE_TREES
515
- });
516
-
517
- const searchBox: Input =
518
- component.shadowRoot.querySelector("dx-input");
519
- searchBox.dispatchEvent(
520
- new CustomEvent("change", {
521
- detail: testSearchText
522
- })
523
- );
524
-
525
- jest.runAllTimers();
526
-
527
- return Promise.resolve().then(() => {
528
- expect(searchBox.value).toBe(testSearchText);
529
-
530
- const trees: Array<Tree> =
531
- component.shadowRoot.querySelectorAll("dx-tree");
532
- expect(trees).toHaveLength(1);
533
- const treeNode = trees[0].treeRoot as TreeNode;
534
- expect(treeNode.name).toBe(SAMPLE_TREES[0].name);
535
- expect(treeNode.isExpanded).toBe(true);
536
- expect(treeNode.children).toHaveLength(1);
537
- expect(treeNode.children![0].name).toMatch(
538
- testSearchText.trim()
539
- );
540
- });
541
- });
542
-
543
- it("should not display anything if search text does not match", () => {
544
- const testSearchText = "this does not exist";
545
- const component = renderComponent({
546
- header: "Cool Title",
547
- trees: SAMPLE_TREES
548
- });
549
-
550
- const searchBox: Input =
551
- component.shadowRoot.querySelector("dx-input");
552
- searchBox.dispatchEvent(
553
- new CustomEvent("change", {
554
- detail: testSearchText
555
- })
556
- );
557
-
558
- jest.runAllTimers();
559
-
560
- return Promise.resolve().then(() => {
561
- expect(searchBox.value).toBe(testSearchText);
562
-
563
- const tree: Tree =
564
- component.shadowRoot.querySelector("dx-tree");
565
- expect(tree).toBeNull();
566
- });
567
- });
568
- });
569
- });
570
- });