@redocly/theme 0.1.0 → 0.1.3

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 (206) hide show
  1. package/Button/Button.d.ts +17 -0
  2. package/Button/Button.js +34 -0
  3. package/{lib/src/Button/index.ts → Button/index.d.ts} +0 -0
  4. package/Button/index.js +1 -0
  5. package/CodeBlock/CodeBlock.d.ts +1 -0
  6. package/CodeBlock/CodeBlock.js +7 -0
  7. package/{lib/src/CodeBlock/index.ts → CodeBlock/index.d.ts} +0 -0
  8. package/CodeBlock/index.js +1 -0
  9. package/CopyButton/CopyButton.d.ts +6 -0
  10. package/CopyButton/CopyButton.js +69 -0
  11. package/CopyButton/CopyButtonWrapper.d.ts +9 -0
  12. package/CopyButton/CopyButtonWrapper.js +37 -0
  13. package/{lib/src/CopyButton/index.ts → CopyButton/index.d.ts} +0 -0
  14. package/CopyButton/index.js +2 -0
  15. package/Headings/Headings.d.ts +3 -0
  16. package/Headings/Headings.js +10 -0
  17. package/{lib/src/Headings/index.ts → Headings/index.d.ts} +0 -0
  18. package/Headings/index.js +1 -0
  19. package/JsonViewer/JsonViewer.d.ts +10 -0
  20. package/JsonViewer/JsonViewer.js +92 -0
  21. package/{lib/src/JsonViewer/index.ts → JsonViewer/index.d.ts} +0 -0
  22. package/JsonViewer/index.js +1 -0
  23. package/JsonViewer/styled.d.ts +1 -0
  24. package/JsonViewer/styled.js +7 -0
  25. package/Logo/Logo.d.ts +10 -0
  26. package/Logo/Logo.js +25 -0
  27. package/Navbar/Navbar.d.ts +9 -0
  28. package/Navbar/Navbar.js +23 -0
  29. package/Navbar/NavbarItem.d.ts +40 -0
  30. package/Navbar/NavbarItem.js +43 -0
  31. package/Navbar/NavbarMenu.d.ts +4 -0
  32. package/Navbar/NavbarMenu.js +29 -0
  33. package/Panel/CodePanel.d.ts +1 -0
  34. package/Panel/CodePanel.js +13 -0
  35. package/Panel/ContentPanel.d.ts +1 -0
  36. package/Panel/ContentPanel.js +12 -0
  37. package/Panel/DarkHeader.d.ts +1 -0
  38. package/Panel/DarkHeader.js +7 -0
  39. package/Panel/Panel.d.ts +2 -0
  40. package/Panel/Panel.js +10 -0
  41. package/Panel/PanelBody.d.ts +6 -0
  42. package/Panel/PanelBody.js +15 -0
  43. package/Panel/PanelComponent.d.ts +10 -0
  44. package/Panel/PanelComponent.js +40 -0
  45. package/Panel/PanelHeader.d.ts +7 -0
  46. package/Panel/PanelHeader.js +16 -0
  47. package/Panel/PanelHeaderTitle.d.ts +1 -0
  48. package/Panel/PanelHeaderTitle.js +7 -0
  49. package/{lib/src/Panel/index.ts → Panel/index.d.ts} +0 -0
  50. package/Panel/index.js +7 -0
  51. package/SamplesPanelControls/SamplesPanelControls.d.ts +4 -0
  52. package/SamplesPanelControls/SamplesPanelControls.js +17 -0
  53. package/{lib/src/SamplesPanelControls/index.ts → SamplesPanelControls/index.d.ts} +0 -0
  54. package/SamplesPanelControls/index.js +1 -0
  55. package/SidebarLogo/SidebarLogo.d.ts +9 -0
  56. package/SidebarLogo/SidebarLogo.js +29 -0
  57. package/{lib/src/SidebarLogo/index.ts → SidebarLogo/index.d.ts} +0 -0
  58. package/SidebarLogo/index.js +1 -0
  59. package/SourceCode/SourceCode.d.ts +24 -0
  60. package/SourceCode/SourceCode.js +31 -0
  61. package/{lib/src/SourceCode/index.ts → SourceCode/index.d.ts} +0 -0
  62. package/SourceCode/index.js +1 -0
  63. package/Tooltip/Tooltip.d.ts +12 -0
  64. package/Tooltip/Tooltip.js +57 -0
  65. package/{lib/src/Tooltip/index.ts → Tooltip/index.d.ts} +0 -0
  66. package/Tooltip/index.js +1 -0
  67. package/globalStyle.d.ts +1 -0
  68. package/globalStyle.js +7 -0
  69. package/{lib/src/hooks/index.ts → hooks/index.d.ts} +0 -0
  70. package/hooks/index.js +3 -0
  71. package/hooks/useControl.d.ts +6 -0
  72. package/hooks/useControl.js +12 -0
  73. package/hooks/useMount.d.ts +1 -0
  74. package/hooks/useMount.js +7 -0
  75. package/hooks/useUnmount.d.ts +1 -0
  76. package/hooks/useUnmount.js +9 -0
  77. package/icons/ShelfIcon/ShelfIcon.d.ts +10 -0
  78. package/icons/ShelfIcon/ShelfIcon.js +33 -0
  79. package/{lib/src/icons/ShelfIcon/index.ts → icons/ShelfIcon/index.d.ts} +0 -0
  80. package/icons/ShelfIcon/index.js +1 -0
  81. package/{lib/src/icons/index.ts → icons/index.d.ts} +0 -0
  82. package/icons/index.js +1 -0
  83. package/{lib/src/index.ts → index.d.ts} +0 -0
  84. package/index.js +14 -0
  85. package/mocks/Link.d.ts +2 -0
  86. package/mocks/Link.js +17 -0
  87. package/mocks/utils.d.ts +1 -0
  88. package/mocks/utils.js +3 -0
  89. package/package.json +1 -5
  90. package/src/Button/Button.stories.tsx +74 -0
  91. package/{lib/src → src}/Button/Button.tsx +0 -0
  92. package/src/Button/__tests__/Button.test.tsx +42 -0
  93. package/src/Button/__tests__/__snapshots__/Button.test.tsx.snap +274 -0
  94. package/src/Button/index.ts +1 -0
  95. package/{lib/src → src}/CodeBlock/CodeBlock.ts +0 -0
  96. package/src/CodeBlock/__tests__/CodeBlock.test.tsx +12 -0
  97. package/src/CodeBlock/__tests__/__snapshots__/CodeBlock.test.tsx.snap +140 -0
  98. package/src/CodeBlock/index.ts +1 -0
  99. package/src/CopyButton/CopyButton.stories.tsx +18 -0
  100. package/{lib/src → src}/CopyButton/CopyButton.tsx +0 -0
  101. package/{lib/src → src}/CopyButton/CopyButtonWrapper.tsx +0 -0
  102. package/src/CopyButton/__tests__/CopyButton.test.tsx +35 -0
  103. package/src/CopyButton/__tests__/CopyButtonWrapper.test.tsx +16 -0
  104. package/src/CopyButton/__tests__/__snapshots__/CopyButton.test.tsx.snap +55 -0
  105. package/src/CopyButton/__tests__/__snapshots__/CopyButtonWrapper.test.tsx.snap +46 -0
  106. package/src/CopyButton/index.ts +2 -0
  107. package/src/Headings/Headings.stories.tsx +36 -0
  108. package/{lib/src → src}/Headings/Headings.ts +0 -0
  109. package/src/Headings/__tests__/Headings.test.tsx +24 -0
  110. package/src/Headings/__tests__/__snapshots__/Headings.test.tsx.snap +57 -0
  111. package/src/Headings/index.ts +1 -0
  112. package/src/Introduction.stories.mdx +7 -0
  113. package/src/JsonViewer/JsonViewer.stories.tsx +57 -0
  114. package/{lib/src → src}/JsonViewer/JsonViewer.tsx +0 -0
  115. package/src/JsonViewer/__tests__/JsonViewer.test.tsx +82 -0
  116. package/src/JsonViewer/__tests__/__snapshots__/JsonViewer.test.tsx.snap +2728 -0
  117. package/src/JsonViewer/index.ts +1 -0
  118. package/{lib/src → src}/JsonViewer/styled.ts +0 -0
  119. package/{lib/src → src}/Logo/Logo.tsx +0 -0
  120. package/src/Navbar/Navbar.stories.tsx +38 -0
  121. package/{lib/src → src}/Navbar/Navbar.tsx +0 -0
  122. package/{lib/src → src}/Navbar/NavbarItem.tsx +0 -0
  123. package/{lib/src → src}/Navbar/NavbarMenu.tsx +0 -0
  124. package/src/Panel/CodePanel.stories.tsx +27 -0
  125. package/{lib/src → src}/Panel/CodePanel.ts +0 -0
  126. package/src/Panel/ContentPanel.stories.tsx +27 -0
  127. package/{lib/src → src}/Panel/ContentPanel.ts +0 -0
  128. package/{lib/src → src}/Panel/DarkHeader.ts +0 -0
  129. package/src/Panel/Panel.stories.tsx +58 -0
  130. package/{lib/src → src}/Panel/Panel.ts +0 -0
  131. package/{lib/src → src}/Panel/PanelBody.ts +0 -0
  132. package/{lib/src → src}/Panel/PanelComponent.tsx +0 -0
  133. package/{lib/src → src}/Panel/PanelHeader.ts +0 -0
  134. package/{lib/src → src}/Panel/PanelHeaderTitle.ts +0 -0
  135. package/src/Panel/__tests__/CodePanel.test.tsx +26 -0
  136. package/src/Panel/__tests__/ContentPanel.test.tsx +26 -0
  137. package/src/Panel/__tests__/Panel.test.tsx +54 -0
  138. package/src/Panel/__tests__/__snapshots__/CodePanel.test.tsx.snap +258 -0
  139. package/src/Panel/__tests__/__snapshots__/ContentPanel.test.tsx.snap +278 -0
  140. package/src/Panel/__tests__/__snapshots__/Panel.test.tsx.snap +398 -0
  141. package/src/Panel/index.ts +7 -0
  142. package/src/SamplesPanelControls/SamplesControlButton.stories.tsx +18 -0
  143. package/{lib/src → src}/SamplesPanelControls/SamplesPanelControls.ts +0 -0
  144. package/src/SamplesPanelControls/__tests__/SamplesPanelControls.test.tsx +36 -0
  145. package/src/SamplesPanelControls/__tests__/__snapshots__/SamplesPanelControls.test.tsx.snap +228 -0
  146. package/src/SamplesPanelControls/index.ts +1 -0
  147. package/src/SidebarLogo/SidebarLogo.stories.tsx +21 -0
  148. package/{lib/src → src}/SidebarLogo/SidebarLogo.tsx +0 -0
  149. package/src/SidebarLogo/__tests__/SidebarLogo.test.tsx +32 -0
  150. package/src/SidebarLogo/__tests__/__snapshots__/SidebarLogo.test.tsx.snap +62 -0
  151. package/src/SidebarLogo/index.ts +1 -0
  152. package/src/SourceCode/SourceCode.stories.tsx +29 -0
  153. package/{lib/src → src}/SourceCode/SourceCode.tsx +0 -0
  154. package/src/SourceCode/__tests__/SourceCode.test.tsx +47 -0
  155. package/src/SourceCode/__tests__/__snapshots__/SourceCode.test.tsx.snap +786 -0
  156. package/src/SourceCode/index.ts +1 -0
  157. package/src/Tooltip/Tooltip.stories.tsx +27 -0
  158. package/{lib/src → src}/Tooltip/Tooltip.tsx +0 -0
  159. package/src/Tooltip/__tests__/Tooltip.test.tsx +41 -0
  160. package/src/Tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +83 -0
  161. package/src/Tooltip/index.ts +1 -0
  162. package/{lib/src → src}/globalStyle.ts +0 -0
  163. package/src/hooks/index.ts +3 -0
  164. package/{lib/src → src}/hooks/useControl.ts +0 -0
  165. package/{lib/src → src}/hooks/useMount.ts +0 -0
  166. package/{lib/src → src}/hooks/useUnmount.ts +0 -0
  167. package/src/icons/ShelfIcon/ShelfIcon.stories.tsx +36 -0
  168. package/{lib/src → src}/icons/ShelfIcon/ShelfIcon.tsx +0 -0
  169. package/src/icons/ShelfIcon/__tests__/ShelfIcon.test.tsx +54 -0
  170. package/src/icons/ShelfIcon/__tests__/__snapshots__/ShelfIcon.test.tsx.snap +235 -0
  171. package/src/icons/ShelfIcon/index.ts +2 -0
  172. package/src/icons/index.ts +1 -0
  173. package/src/index.ts +14 -0
  174. package/{lib/src → src}/mocks/Link.tsx +0 -0
  175. package/{lib/src → src}/mocks/utils.ts +0 -0
  176. package/{lib/src → src}/utils/ClipboardService.ts +0 -0
  177. package/src/utils/__tests__/ClipboardService.test.ts +24 -0
  178. package/src/utils/__tests__/__snapshots__/highlight.test.ts.snap +5 -0
  179. package/src/utils/__tests__/__snapshots__/jsonToHtml.test.ts.snap +5 -0
  180. package/src/utils/__tests__/css-variables.test.ts +20 -0
  181. package/src/utils/__tests__/highlight.test.ts +51 -0
  182. package/src/utils/__tests__/jsonToHtml.test.ts +40 -0
  183. package/src/utils/__tests__/media-css.test.ts +20 -0
  184. package/src/utils/__tests__/theme-helpers.test.ts +25 -0
  185. package/{lib/src → src}/utils/css-variables.ts +0 -0
  186. package/{lib/src → src}/utils/highlight.ts +0 -0
  187. package/{lib/src → src}/utils/index.ts +0 -0
  188. package/{lib/src → src}/utils/jsonToHtml.ts +0 -0
  189. package/{lib/src → src}/utils/media-css.ts +0 -0
  190. package/{lib/src → src}/utils/theme-helpers.ts +0 -0
  191. package/utils/ClipboardService.d.ts +8 -0
  192. package/utils/ClipboardService.js +83 -0
  193. package/utils/css-variables.d.ts +1 -0
  194. package/utils/css-variables.js +4 -0
  195. package/utils/highlight.d.ts +32 -0
  196. package/utils/highlight.js +65 -0
  197. package/utils/index.d.ts +6 -0
  198. package/utils/index.js +6 -0
  199. package/utils/jsonToHtml.d.ts +1 -0
  200. package/utils/jsonToHtml.js +116 -0
  201. package/utils/media-css.d.ts +12 -0
  202. package/utils/media-css.js +9 -0
  203. package/utils/theme-helpers.d.ts +3 -0
  204. package/utils/theme-helpers.js +27 -0
  205. package/LICENSE +0 -1
  206. package/lib/package.json +0 -91
@@ -0,0 +1,55 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`CopyButton renders 1`] = `
4
+ .c1 {
5
+ -webkit-text-decoration: none;
6
+ text-decoration: none;
7
+ text-align: center;
8
+ width: auto;
9
+ outline: none;
10
+ border: none;
11
+ border-radius: var(--button-border-radius);
12
+ font-weight: var(--button-font-weight);
13
+ font-size: 14px;
14
+ padding: 2px 20px;
15
+ cursor: pointer;
16
+ -webkit-transition: background-color 0.25s ease,border-color 0.25s ease,box-shadow 0.25s ease;
17
+ transition: background-color 0.25s ease,border-color 0.25s ease,box-shadow 0.25s ease;
18
+ line-height: 1;
19
+ font-family: var(--button-font-family);
20
+ box-shadow: var(--button-box-shadow);
21
+ color: var(--button-color);
22
+ background-color: var(--button-background-color);
23
+ font-size: var(--button-medium-font-size);
24
+ padding: var(--button-medium-padding);
25
+ min-width: var(--button-medium-min-width);
26
+ }
27
+
28
+ .c1:hover {
29
+ box-shadow: var(--button-active-box-shadow);
30
+ }
31
+
32
+ .c1:active {
33
+ box-shadow: var(--button-active-box-shadow);
34
+ }
35
+
36
+ .c1:hover {
37
+ background-color: var(--button-hover-background-color);
38
+ }
39
+
40
+ .c1:active {
41
+ background-color: var(--button-active-background-color);
42
+ }
43
+
44
+ .c0 + .c0 {
45
+ margin-left: 0.85em;
46
+ }
47
+
48
+ <button
49
+ class="c0 c1 button-color-secondary"
50
+ color="secondary"
51
+ data-cy="copy"
52
+ >
53
+ Copy
54
+ </button>
55
+ `;
@@ -0,0 +1,46 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`CopyButtonWrapper renders 1`] = `
4
+ .c1 {
5
+ background-color: var(--samples-panel-controls-background-color);
6
+ border: 0;
7
+ outline: 0;
8
+ border-radius: var(--global-border-radius);
9
+ height: 20px;
10
+ color: var(--color-content-inverse);
11
+ font-size: 12px;
12
+ line-height: 12px;
13
+ cursor: pointer;
14
+ padding: 1px 6px;
15
+ min-width: 90px;
16
+ }
17
+
18
+ .c1:hover,
19
+ .c1:focus {
20
+ background-color: var(--samples-panel-controls-hover-background-color);
21
+ }
22
+
23
+ .c0 {
24
+ position: relative;
25
+ display: inline-block;
26
+ }
27
+
28
+ @media screen and (min-width:50rem) {
29
+ .c1 {
30
+ padding: 2px 20px;
31
+ }
32
+ }
33
+
34
+ <div>
35
+ <div
36
+ class="c0 tooltip-copy-button"
37
+ >
38
+ <button
39
+ class="c1"
40
+ data-cy="copy"
41
+ >
42
+ Copy
43
+ </button>
44
+ </div>
45
+ </div>
46
+ `;
@@ -0,0 +1,2 @@
1
+ export * from './CopyButtonWrapper';
2
+ export * from './CopyButton';
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+
3
+ import { H1, H2, H3 } from './Headings';
4
+
5
+ export default {
6
+ title: 'Typography/Headings',
7
+ };
8
+
9
+ export const Heading1 = (): JSX.Element => <H1>H1</H1>;
10
+ Heading1.storyName = 'H1';
11
+ Heading1.parameters = {
12
+ controls: { hideNoControlsWarning: true },
13
+ };
14
+
15
+ export const Heading2 = (): JSX.Element => <H2>H2</H2>;
16
+ Heading2.storyName = 'H2';
17
+ Heading2.parameters = {
18
+ controls: { hideNoControlsWarning: true },
19
+ };
20
+
21
+ export const Heading3 = (): JSX.Element => <H3>H3</H3>;
22
+ Heading3.storyName = 'H3';
23
+ Heading3.parameters = {
24
+ controls: { hideNoControlsWarning: true },
25
+ };
26
+
27
+ export const AllHeadings = (): JSX.Element => (
28
+ <>
29
+ <H1>H1</H1>
30
+ <H2>H2</H2>
31
+ <H3>H3</H3>
32
+ </>
33
+ );
34
+ AllHeadings.parameters = {
35
+ controls: { hideNoControlsWarning: true },
36
+ };
File without changes
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react';
3
+
4
+ import { H1, H2, H3 } from '../Headings';
5
+
6
+ describe('Headings', () => {
7
+ it('renders H1', () => {
8
+ const { container } = render(<H1>H1</H1>);
9
+
10
+ expect(container.firstChild).toMatchSnapshot();
11
+ });
12
+
13
+ it('renders H2', () => {
14
+ const { container } = render(<H2>H2</H2>);
15
+
16
+ expect(container.firstChild).toMatchSnapshot();
17
+ });
18
+
19
+ it('renders H3', () => {
20
+ const { container } = render(<H3>H3</H3>);
21
+
22
+ expect(container.firstChild).toMatchSnapshot();
23
+ });
24
+ });
@@ -0,0 +1,57 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Headings renders H1 1`] = `
4
+ .c0 {
5
+ color: var(--color-content);
6
+ margin: 0 0 25px;
7
+ font-size: var(--h1-font-size,var(--h-font-size));
8
+ font-weight: var(--h1-font-weight,var(--h-font-weight));
9
+ font-family: var(--h1-font-family,var(--h-font-family));
10
+ line-height: var(--h1-line-height,var(--h-line-height));
11
+ color: var(--h1-color,var(--h-color));
12
+ text-transform: var(--h1-text-transform,var(--h-text-transform));
13
+ }
14
+
15
+ <h1
16
+ class="c0"
17
+ >
18
+ H1
19
+ </h1>
20
+ `;
21
+
22
+ exports[`Headings renders H2 1`] = `
23
+ .c0 {
24
+ color: var(--color-content);
25
+ margin: 0 0 20px;
26
+ font-size: var(--h2-font-size,var(--h-font-size));
27
+ font-weight: var(--h2-font-weight,var(--h-font-weight));
28
+ font-family: var(--h2-font-family,var(--h-font-family));
29
+ line-height: var(--h2-line-height,var(--h-line-height));
30
+ color: var(--h2-color,var(--h-color));
31
+ text-transform: var(--h2-text-transform,var(--h-text-transform));
32
+ }
33
+
34
+ <h2
35
+ class="c0"
36
+ >
37
+ H2
38
+ </h2>
39
+ `;
40
+
41
+ exports[`Headings renders H3 1`] = `
42
+ .c0 {
43
+ color: var(--color-content);
44
+ font-size: var(--h3-font-size,var(--h-font-size));
45
+ font-weight: var(--h3-font-weight,var(--h-font-weight));
46
+ font-family: var(--h3-font-family,var(--h-font-family));
47
+ line-height: var(--h3-line-height,var(--h-line-height));
48
+ color: var(--h3-color,var(--h-color));
49
+ text-transform: var(--h3-text-transform,var(--h-text-transform));
50
+ }
51
+
52
+ <h3
53
+ class="c0"
54
+ >
55
+ H3
56
+ </h3>
57
+ `;
@@ -0,0 +1 @@
1
+ export * from './Headings';
@@ -0,0 +1,7 @@
1
+ import { Meta } from '@storybook/addon-docs';
2
+
3
+ <Meta title="Example/Introduction" />
4
+
5
+ # Redocly UI components
6
+
7
+ TBD...
@@ -0,0 +1,57 @@
1
+ import React from 'react';
2
+ import { ComponentStory, ComponentMeta } from '@storybook/react';
3
+
4
+ import { JsonViewer } from './JsonViewer';
5
+
6
+ export default {
7
+ title: 'JsonViewer',
8
+ component: JsonViewer,
9
+ } as ComponentMeta<typeof JsonViewer>;
10
+
11
+ const data = {
12
+ id: '600dc3b5d617e547a0e74cb9',
13
+ name: 'Mitchell Fitzgerald',
14
+ about: 'lorem ipsum',
15
+ address: '48 Avenue, City, North',
16
+ company: 'Test',
17
+ bio: null,
18
+ nicknames: [
19
+ 'Mitch',
20
+ 'Fitz',
21
+ { title: 'MitFitz', createdAt: new Date('2022-04-19T11:46:00.019Z') },
22
+ ],
23
+ age: 27,
24
+ isBanned: true,
25
+ link: 'https://google.com',
26
+ emptyArray: [],
27
+ empty: {},
28
+ contacts: {
29
+ email: 'test@mail.com',
30
+ phone: {
31
+ code: '+1',
32
+ rest: '999',
33
+ },
34
+ },
35
+ };
36
+
37
+ const Template: ComponentStory<typeof JsonViewer> = (args) => <JsonViewer {...args} />;
38
+
39
+ export const ExpandLevel1 = Template.bind({});
40
+ ExpandLevel1.args = {
41
+ jsonSampleExpandLevel: 1,
42
+ data,
43
+ };
44
+
45
+ export const ExpandLevel3 = Template.bind({});
46
+ ExpandLevel3.args = {
47
+ jsonSampleExpandLevel: 3,
48
+ data,
49
+ };
50
+
51
+ export const WithoutFoldingButtons = Template.bind({});
52
+ WithoutFoldingButtons.args = {
53
+ jsonSampleExpandLevel: 3,
54
+ data: {
55
+ message: 'success',
56
+ },
57
+ };
File without changes
@@ -0,0 +1,82 @@
1
+ import { fireEvent, screen } from '@testing-library/react';
2
+ import React from 'react';
3
+
4
+ import { renderWithTheme } from '../../../tests/utils';
5
+ import { JsonViewer } from '../JsonViewer';
6
+
7
+ const data = {
8
+ id: '600dc3b5d617e547a0e74cb9',
9
+ name: 'Mitchell Fitzgerald',
10
+ about: 'lorem ipsum',
11
+ address: '48 Avenue, City, North',
12
+ company: 'Test',
13
+ bio: null,
14
+ nicknames: [
15
+ 'Mitch',
16
+ 'Fitz',
17
+ { title: 'MitFitz', createdAt: new Date('2022-04-19T11:46:00.019Z') },
18
+ ],
19
+ age: 27,
20
+ isBanned: true,
21
+ link: 'https://google.com',
22
+ emptyArray: [],
23
+ empty: {},
24
+ contacts: {
25
+ email: 'test@mail.com',
26
+ phone: {
27
+ code: '+1',
28
+ rest: '999',
29
+ },
30
+ },
31
+ };
32
+
33
+ describe('JsonViewer', () => {
34
+ it('renders', () => {
35
+ const { container } = renderWithTheme(<JsonViewer data={data} jsonSampleExpandLevel={2} />);
36
+
37
+ expect(container.firstChild).toMatchSnapshot();
38
+ });
39
+
40
+ it('renders without folding buttons', () => {
41
+ renderWithTheme(<JsonViewer data={{ a: 1, b: 2 }} jsonSampleExpandLevel={2} />);
42
+
43
+ expect(screen.queryByText('Collapse all')).toBeNull();
44
+ expect(screen.queryByText('Expand all')).toBeNull();
45
+ });
46
+
47
+ it('"collapse all" works', () => {
48
+ const { container } = renderWithTheme(<JsonViewer data={data} jsonSampleExpandLevel={2} />);
49
+
50
+ fireEvent.click(screen.getByText(/Collapse all/i));
51
+
52
+ expect(container.firstChild).toMatchSnapshot();
53
+ expect(screen.getByText(/test@mail\.com/i)).not.toBeVisible();
54
+ });
55
+
56
+ it('"expand all" works', () => {
57
+ const { container } = renderWithTheme(<JsonViewer data={data} jsonSampleExpandLevel={1} />);
58
+
59
+ fireEvent.click(screen.getByText(/Expand all/i));
60
+
61
+ expect(container.firstChild).toMatchSnapshot();
62
+ expect(screen.getByText(/test@mail\.com/i)).toBeVisible();
63
+ });
64
+
65
+ it('expands node on click', () => {
66
+ const { container } = renderWithTheme(<JsonViewer data={data} jsonSampleExpandLevel={1} />);
67
+ const element = container.getElementsByClassName('collapser')[1];
68
+
69
+ fireEvent.click(element);
70
+
71
+ expect(screen.getByText(/"Mitch"/i)).toBeVisible();
72
+ });
73
+
74
+ it('collapses node on click', () => {
75
+ const { container } = renderWithTheme(<JsonViewer data={data} jsonSampleExpandLevel={2} />);
76
+ const element = container.getElementsByClassName('collapser')[1];
77
+
78
+ fireEvent.click(element);
79
+
80
+ expect(screen.getByText(/"Mitch"/i)).not.toBeVisible();
81
+ });
82
+ });