@dxc-technology/halstack-react 0.0.0-e441916 → 0.0.0-e628009

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 (195) hide show
  1. package/README.md +1 -1
  2. package/babel.config.js +6 -2
  3. package/dist/BackgroundColorContext.js +46 -0
  4. package/dist/ThemeContext.js +235 -2
  5. package/dist/V3Textarea/V3Textarea.js +264 -0
  6. package/dist/accordion/Accordion.js +170 -81
  7. package/dist/accordion-group/AccordionGroup.js +186 -0
  8. package/dist/alert/Alert.js +184 -83
  9. package/dist/alert/index.d.ts +51 -0
  10. package/dist/badge/Badge.js +63 -0
  11. package/dist/box/Box.js +39 -19
  12. package/dist/button/Button.js +84 -29
  13. package/dist/card/Card.js +64 -56
  14. package/dist/checkbox/Checkbox.js +108 -32
  15. package/dist/chip/Chip.js +135 -40
  16. package/dist/common/RequiredComponent.js +2 -8
  17. package/dist/common/utils.js +2 -22
  18. package/dist/common/variables.js +1486 -105
  19. package/dist/date/Date.js +115 -78
  20. package/dist/date-input/DateInput.js +400 -0
  21. package/dist/date-input/index.d.ts +95 -0
  22. package/dist/dialog/Dialog.js +61 -36
  23. package/dist/dropdown/Dropdown.js +226 -94
  24. package/dist/file-input/FileInput.js +644 -0
  25. package/dist/file-input/FileItem.js +280 -0
  26. package/dist/file-input/index.d.ts +81 -0
  27. package/dist/footer/Footer.js +125 -45
  28. package/dist/footer/Icons.js +77 -0
  29. package/dist/header/Header.js +174 -90
  30. package/dist/header/Icons.js +59 -0
  31. package/dist/heading/Heading.js +93 -22
  32. package/dist/input-text/Icons.js +22 -0
  33. package/dist/input-text/InputText.js +298 -108
  34. package/dist/layout/ApplicationLayout.js +327 -0
  35. package/dist/layout/Icons.js +55 -0
  36. package/dist/link/Link.js +142 -34
  37. package/dist/main.d.ts +8 -0
  38. package/dist/main.js +111 -7
  39. package/dist/new-select/NewSelect.js +836 -0
  40. package/dist/new-select/index.d.ts +53 -0
  41. package/dist/number-input/NumberInput.js +136 -0
  42. package/dist/number-input/NumberInputContext.js +16 -0
  43. package/dist/number-input/index.d.ts +113 -0
  44. package/dist/paginator/Icons.js +66 -0
  45. package/dist/paginator/Paginator.js +162 -57
  46. package/dist/password-input/PasswordInput.js +198 -0
  47. package/dist/password-input/index.d.ts +94 -0
  48. package/dist/progress-bar/ProgressBar.js +97 -44
  49. package/dist/radio/Radio.js +39 -21
  50. package/dist/resultsetTable/ResultsetTable.js +93 -69
  51. package/dist/select/Select.js +253 -129
  52. package/dist/sidenav/Sidenav.js +87 -125
  53. package/dist/slider/Slider.js +219 -73
  54. package/dist/spinner/Spinner.js +249 -64
  55. package/dist/switch/Switch.js +52 -25
  56. package/dist/table/Table.js +63 -15
  57. package/dist/tabs/Tabs.js +210 -50
  58. package/dist/tabs-for-sections/TabsForSections.js +1 -16
  59. package/dist/tag/Tag.js +100 -35
  60. package/dist/text-input/TextInput.js +971 -0
  61. package/dist/text-input/index.d.ts +135 -0
  62. package/dist/textarea/Textarea.js +250 -107
  63. package/dist/textarea/index.d.ts +117 -0
  64. package/dist/toggle/Toggle.js +16 -19
  65. package/dist/toggle-group/ToggleGroup.js +327 -0
  66. package/dist/upload/Upload.js +16 -11
  67. package/dist/upload/buttons-upload/ButtonsUpload.js +35 -25
  68. package/dist/upload/buttons-upload/Icons.js +40 -0
  69. package/dist/upload/dragAndDropArea/DragAndDropArea.js +84 -37
  70. package/dist/upload/dragAndDropArea/Icons.js +39 -0
  71. package/dist/upload/file-upload/FileToUpload.js +64 -33
  72. package/dist/upload/file-upload/Icons.js +66 -0
  73. package/dist/upload/files-upload/FilesToUpload.js +16 -16
  74. package/dist/upload/transaction/Icons.js +160 -0
  75. package/dist/upload/transaction/Transaction.js +42 -49
  76. package/dist/upload/transactions/Transactions.js +38 -20
  77. package/dist/useTheme.js +22 -0
  78. package/dist/wizard/Icons.js +65 -0
  79. package/dist/wizard/Wizard.js +156 -61
  80. package/package.json +14 -6
  81. package/test/AccordionGroup.test.js +125 -0
  82. package/test/Date.test.js +49 -45
  83. package/test/DateInput.test.js +242 -0
  84. package/test/Dropdown.test.js +19 -4
  85. package/test/FileInput.test.js +201 -0
  86. package/test/Footer.test.js +2 -7
  87. package/test/Header.test.js +5 -10
  88. package/test/Heading.test.js +60 -12
  89. package/test/InputText.test.js +53 -41
  90. package/test/Link.test.js +25 -7
  91. package/test/NumberInput.test.js +259 -0
  92. package/test/Paginator.test.js +72 -60
  93. package/test/PasswordInput.test.js +83 -0
  94. package/test/ResultsetTable.test.js +66 -19
  95. package/test/Select.test.js +55 -34
  96. package/test/Sidenav.test.js +22 -64
  97. package/test/Slider.test.js +24 -15
  98. package/test/Spinner.test.js +5 -0
  99. package/test/Tabs.test.js +21 -0
  100. package/test/TextInput.test.js +732 -0
  101. package/test/Textarea.test.js +193 -0
  102. package/test/ToggleGroup.test.js +85 -0
  103. package/test/Upload.test.js +5 -5
  104. package/test/{TextArea.test.js → V3TextArea.test.js} +6 -7
  105. package/dist/accordion/Accordion.stories.js +0 -207
  106. package/dist/accordion/readme.md +0 -96
  107. package/dist/alert/Alert.stories.js +0 -158
  108. package/dist/alert/close.svg +0 -4
  109. package/dist/alert/error.svg +0 -4
  110. package/dist/alert/info.svg +0 -4
  111. package/dist/alert/readme.md +0 -43
  112. package/dist/alert/success.svg +0 -4
  113. package/dist/alert/warning.svg +0 -4
  114. package/dist/button/Button.stories.js +0 -224
  115. package/dist/button/readme.md +0 -93
  116. package/dist/checkbox/Checkbox.stories.js +0 -144
  117. package/dist/checkbox/readme.md +0 -116
  118. package/dist/common/services/example-service.js +0 -10
  119. package/dist/common/services/example-service.test.js +0 -12
  120. package/dist/date/Date.stories.js +0 -205
  121. package/dist/date/calendar.svg +0 -1
  122. package/dist/date/calendar_dark.svg +0 -1
  123. package/dist/date/readme.md +0 -73
  124. package/dist/dialog/Dialog.stories.js +0 -217
  125. package/dist/dialog/readme.md +0 -32
  126. package/dist/dropdown/Dropdown.stories.js +0 -249
  127. package/dist/dropdown/baseline-arrow_drop_down.svg +0 -1
  128. package/dist/dropdown/baseline-arrow_drop_down_wh.svg +0 -4
  129. package/dist/dropdown/baseline-arrow_drop_up.svg +0 -1
  130. package/dist/dropdown/baseline-arrow_drop_up_wh.svg +0 -4
  131. package/dist/dropdown/readme.md +0 -69
  132. package/dist/footer/Footer.stories.js +0 -94
  133. package/dist/footer/dxc_logo_wht.png +0 -0
  134. package/dist/footer/readme.md +0 -41
  135. package/dist/header/Header.stories.js +0 -176
  136. package/dist/header/close_icon.svg +0 -1
  137. package/dist/header/dxc_logo_black.png +0 -0
  138. package/dist/header/dxc_logo_white.png +0 -0
  139. package/dist/header/hamb_menu_black.svg +0 -1
  140. package/dist/header/hamb_menu_white.svg +0 -1
  141. package/dist/header/readme.md +0 -33
  142. package/dist/input-text/InputText.stories.js +0 -209
  143. package/dist/input-text/error.svg +0 -1
  144. package/dist/input-text/readme.md +0 -91
  145. package/dist/link/readme.md +0 -51
  146. package/dist/paginator/images/next.svg +0 -3
  147. package/dist/paginator/images/nextPage.svg +0 -3
  148. package/dist/paginator/images/previous.svg +0 -3
  149. package/dist/paginator/images/previousPage.svg +0 -3
  150. package/dist/paginator/readme.md +0 -50
  151. package/dist/progress-bar/ProgressBar.stories.js +0 -280
  152. package/dist/progress-bar/readme.md +0 -63
  153. package/dist/radio/Radio.stories.js +0 -166
  154. package/dist/radio/readme.md +0 -70
  155. package/dist/resultsetTable/arrow_downward-24px_wht.svg +0 -1
  156. package/dist/resultsetTable/arrow_upward-24px_wht.svg +0 -1
  157. package/dist/resultsetTable/unfold_more-24px_wht.svg +0 -1
  158. package/dist/select/Select.stories.js +0 -235
  159. package/dist/select/readme.md +0 -72
  160. package/dist/sidenav/arrow_icon.svg +0 -3
  161. package/dist/slider/Slider.stories.js +0 -241
  162. package/dist/slider/readme.md +0 -64
  163. package/dist/spinner/Spinner.stories.js +0 -183
  164. package/dist/spinner/readme.md +0 -65
  165. package/dist/switch/Switch.stories.js +0 -134
  166. package/dist/switch/readme.md +0 -133
  167. package/dist/tabs/Tabs.stories.js +0 -130
  168. package/dist/tabs/readme.md +0 -78
  169. package/dist/tabs-for-sections/readme.md +0 -78
  170. package/dist/toggle/Toggle.stories.js +0 -297
  171. package/dist/toggle/readme.md +0 -80
  172. package/dist/upload/Upload.stories.js +0 -72
  173. package/dist/upload/buttons-upload/drag-drop-icon.svg +0 -4
  174. package/dist/upload/buttons-upload/upload-button.svg +0 -1
  175. package/dist/upload/dragAndDropArea/upload_drop.svg +0 -4
  176. package/dist/upload/dragAndDropArea/upload_file.svg +0 -4
  177. package/dist/upload/file-upload/audio-icon.svg +0 -4
  178. package/dist/upload/file-upload/close.svg +0 -4
  179. package/dist/upload/file-upload/file-icon.svg +0 -4
  180. package/dist/upload/file-upload/video-icon.svg +0 -4
  181. package/dist/upload/readme.md +0 -37
  182. package/dist/upload/transaction/audio-icon-err.svg +0 -4
  183. package/dist/upload/transaction/audio-icon.svg +0 -4
  184. package/dist/upload/transaction/error-icon.svg +0 -4
  185. package/dist/upload/transaction/file-icon-err.svg +0 -4
  186. package/dist/upload/transaction/file-icon.svg +0 -4
  187. package/dist/upload/transaction/image-icon-err.svg +0 -4
  188. package/dist/upload/transaction/image-icon.svg +0 -4
  189. package/dist/upload/transaction/success-icon.svg +0 -4
  190. package/dist/upload/transaction/video-icon-err.svg +0 -4
  191. package/dist/upload/transaction/video-icon.svg +0 -4
  192. package/dist/wizard/invalid_icon.svg +0 -6
  193. package/dist/wizard/valid_icon.svg +0 -6
  194. package/dist/wizard/validation-wrong.svg +0 -6
  195. package/test/Toggle.test.js +0 -43
@@ -3,85 +3,43 @@ import { render, fireEvent } from "@testing-library/react";
3
3
  import DxcSidenav from "../src/sidenav/Sidenav";
4
4
 
5
5
  const navContent = <p>nav-content-test</p>;
6
- const pageContent = <p>page-content-test</p>;
7
6
 
8
7
  describe("Sidenav component tests", () => {
9
- test("Sidenav in overlay mode renders nav and page content, and arrow", () => {
10
- const { getByText, getByRole } = render(
11
- <DxcSidenav navContent={navContent} pageContent={pageContent}></DxcSidenav>
12
- );
13
- expect(getByText("nav-content-test")).toBeTruthy();
14
- expect(getByText("page-content-test")).toBeTruthy();
15
- expect(getByRole("img")).toBeTruthy();
16
- });
17
-
18
- test("Sidenav in push mode renders nav and page content, and arrow", () => {
19
- const { getByText, getByRole } = render(
20
- <DxcSidenav navContent={navContent} pageContent={pageContent} mode="push"></DxcSidenav>
21
- );
8
+ test("Sidenav renders nav content", () => {
9
+ const { getByText } = render(<DxcSidenav>{navContent}</DxcSidenav>);
22
10
  expect(getByText("nav-content-test")).toBeTruthy();
23
- expect(getByText("page-content-test")).toBeTruthy();
24
- expect(getByRole("img")).toBeTruthy();
25
11
  });
26
12
 
27
- test("Sidenav in overlay mode renders nav and page content in mobile version", () => {
13
+ test("Sidenav renders nav and page content in mobile version", () => {
28
14
  //425 is mobile width
29
15
  Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 425 });
30
- const { getByText } = render(<DxcSidenav navContent={navContent} pageContent={pageContent}></DxcSidenav>);
16
+ const { getByText } = render(<DxcSidenav>{navContent}</DxcSidenav>);
31
17
  expect(getByText("nav-content-test")).toBeTruthy();
32
- expect(getByText("page-content-test")).toBeTruthy();
33
18
  });
34
19
 
35
- test("Sidenav in push mode renders nav and page content in mobile version", () => {
36
- //425 is mobile width
37
- Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 425 });
20
+ test("Sidenav renders compound components", () => {
38
21
  const { getByText } = render(
39
- <DxcSidenav navContent={navContent} pageContent={pageContent} mode="push"></DxcSidenav>
40
- );
41
- expect(getByText("nav-content-test")).toBeTruthy();
42
- expect(getByText("page-content-test")).toBeTruthy();
43
- });
44
-
45
- test("Sidenav in overlay mode not renders arrow", () => {
46
- //We need to force the offsetWidth value to detect that is not responsive
47
- Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 1024 });
48
- const { queryByRole } = render(
49
- <DxcSidenav navContent={navContent} pageContent={pageContent} displayArrow={false}></DxcSidenav>
50
- );
51
- expect(queryByRole("img")).toBeFalsy();
52
- });
53
-
54
- test("Sidenav in push mode not renders arrow", () => {
55
- //We need to force the offsetWidth value to detect that is not responsive
56
- Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 1024 });
57
- const { queryByRole } = render(
58
- <DxcSidenav navContent={navContent} pageContent={pageContent} displayArrow={false} mode="push"></DxcSidenav>
59
- );
60
- expect(queryByRole("img")).toBeFalsy();
61
- });
62
-
63
- test("Sidenav renders arrow with arrow distance", () => {
64
- const { getByRole } = render(
65
- <DxcSidenav navContent={navContent} pageContent={pageContent} arrowDistance="10px"></DxcSidenav>
22
+ <DxcSidenav>
23
+ <DxcSidenav.Title>test-title</DxcSidenav.Title>
24
+ <DxcSidenav.Subtitle>test-subtitle</DxcSidenav.Subtitle>
25
+ <DxcSidenav.Link href="#">test-link</DxcSidenav.Link>
26
+ </DxcSidenav>
66
27
  );
67
- expect(getByRole("img")).toBeTruthy();
28
+ expect(getByText("test-title")).toBeTruthy();
29
+ expect(getByText("test-subtitle")).toBeTruthy();
30
+ expect(getByText("test-link")).toBeTruthy();
68
31
  });
69
32
 
70
- test("Sidenav in overlay mode always renders arrow in mobile version", () => {
71
- //425 is mobile width
72
- Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 425 });
73
- const { getByRole } = render(
74
- <DxcSidenav navContent={navContent} pageContent={pageContent} displayArrow={false}></DxcSidenav>
33
+ test("Sidenav link onClick", () => {
34
+ const onClick = jest.fn();
35
+ const { getByText } = render(
36
+ <DxcSidenav>
37
+ <DxcSidenav.Link onClick={onClick}>test-link</DxcSidenav.Link>
38
+ </DxcSidenav>
75
39
  );
76
- expect(getByRole("img")).toBeTruthy();
77
- });
78
40
 
79
- test("Sidenav in push mode always renders arrow in mobile version", () => {
80
- //425 is mobile width
81
- Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 425 });
82
- const { getByRole } = render(
83
- <DxcSidenav navContent={navContent} pageContent={pageContent} displayArrow={false} mode="push"></DxcSidenav>
84
- );
85
- expect(getByRole("img")).toBeTruthy();
41
+ const link = getByText("test-link");
42
+ fireEvent.click(link);
43
+ expect(onClick).toHaveBeenCalled();
86
44
  });
87
45
  });
@@ -4,7 +4,7 @@ import DxcSlider from "../src/slider/Slider";
4
4
 
5
5
  describe("Slider component tests", () => {
6
6
  test("Slider renders with correct text", () => {
7
- const { getByText } = render(<DxcSlider minValue={0} maxValue={100} showLimitsValues></DxcSlider>);
7
+ const { getByText } = render(<DxcSlider minValue={0} maxValue={100} showLimitsValues />);
8
8
  expect(getByText("0")).toBeTruthy();
9
9
  expect(getByText("100")).toBeTruthy();
10
10
  });
@@ -12,37 +12,29 @@ describe("Slider component tests", () => {
12
12
  test("Calls correct function onChange in controlled slider", () => {
13
13
  const onChange = jest.fn();
14
14
  const { getByRole } = render(
15
- <DxcSlider minValue={0} maxValue={100} onChange={onChange} showLimitsValues value={13} showInput></DxcSlider>
15
+ <DxcSlider minValue={0} maxValue={100} onChange={onChange} showLimitsValues value={13} showInput />
16
16
  );
17
17
  act(() => {
18
18
  fireEvent.change(getByRole("textbox"), { target: { value: 25 } });
19
19
  });
20
- expect(onChange).toHaveBeenCalledWith("25");
20
+ expect(onChange).toHaveBeenCalledWith(25);
21
21
  });
22
22
 
23
23
  test("Calls correct function onChange in uncontrolled slider", () => {
24
24
  const onChange = jest.fn();
25
25
  const { getByRole } = render(
26
- <DxcSlider minValue={0} maxValue={100} onChange={onChange} showLimitsValues showInput></DxcSlider>
26
+ <DxcSlider minValue={0} maxValue={100} onChange={onChange} showLimitsValues showInput />
27
27
  );
28
28
  act(() => {
29
29
  fireEvent.change(getByRole("textbox"), { target: { value: 25 } });
30
30
  });
31
- expect(onChange).toHaveBeenCalledWith("25");
31
+ expect(onChange).toHaveBeenCalledWith(25);
32
32
  });
33
33
 
34
34
  test("Disabled slider have disabled input", () => {
35
35
  const onChange = jest.fn();
36
36
  const { getByRole } = render(
37
- <DxcSlider
38
- minValue={0}
39
- maxValue={100}
40
- onChange={onChange}
41
- showLimitsValues
42
- disabled
43
- showInput
44
- value={13}
45
- ></DxcSlider>
37
+ <DxcSlider minValue={0} maxValue={100} onChange={onChange} showLimitsValues disabled showInput value={13} />
46
38
  );
47
39
  act(() => {
48
40
  fireEvent.change(getByRole("textbox"), { target: { value: 25 } });
@@ -54,7 +46,7 @@ describe("Slider component tests", () => {
54
46
  test("Calls correct function onDragEnd", () => {
55
47
  const onDragEnd = jest.fn();
56
48
  const { getByRole } = render(
57
- <DxcSlider minValue={0} maxValue={100} showLimitsValues showInput onDragEnd={onDragEnd} value={25}></DxcSlider>
49
+ <DxcSlider minValue={0} maxValue={100} showLimitsValues showInput onDragEnd={onDragEnd} value={25} />
58
50
  );
59
51
  act(() => {
60
52
  fireEvent.mouseDown(getByRole("slider"));
@@ -62,4 +54,21 @@ describe("Slider component tests", () => {
62
54
  });
63
55
  expect(onDragEnd).toHaveBeenCalled();
64
56
  });
57
+
58
+ test("Calls correct function labelFormatCallback", () => {
59
+ const labelFormatCallback = jest.fn((x) => `${x}$`);
60
+ const { getByText } = render(
61
+ <DxcSlider
62
+ minValue={0}
63
+ maxValue={100}
64
+ showLimitsValues
65
+ showInput
66
+ value={25}
67
+ labelFormatCallback={labelFormatCallback}
68
+ />
69
+ );
70
+ expect(getByText("0$")).toBeTruthy();
71
+ expect(getByText("100$")).toBeTruthy();
72
+ expect(labelFormatCallback).toHaveBeenCalledTimes(2);
73
+ });
65
74
  });
@@ -24,4 +24,9 @@ describe("Spinner component tests", () => {
24
24
  expect(getByText("test-loading")).toBeTruthy();
25
25
  expect(getByText("75%")).toBeTruthy();
26
26
  });
27
+
28
+ test("Get spinner by role", () => {
29
+ const { getByRole } = render(<DxcSpinner label="test-loading" value={75} showValue></DxcSpinner>);
30
+ expect(getByRole("progressbar")).toBeTruthy();
31
+ });
27
32
  });
package/test/Tabs.test.js CHANGED
@@ -14,6 +14,21 @@ const sampleTabs = [
14
14
  },
15
15
  ];
16
16
 
17
+ const sampleTabsWithBadge = [
18
+ {
19
+ label: "Tab-1",
20
+ notificationNumber: "10",
21
+ },
22
+ {
23
+ label: "Tab-2",
24
+ notificationNumber: "20",
25
+ },
26
+ {
27
+ label: "Tab-3",
28
+ notificationNumber: "101",
29
+ },
30
+ ];
31
+
17
32
  describe("Tabs component tests", () => {
18
33
  test("Tabs render with correct labels", () => {
19
34
  const { getByText } = render(<DxcTabs tabs={sampleTabs}></DxcTabs>);
@@ -21,6 +36,12 @@ describe("Tabs component tests", () => {
21
36
  expect(getByText("Tab-2")).toBeTruthy();
22
37
  expect(getByText("Tab-3")).toBeTruthy();
23
38
  });
39
+ test("Tabs render with correct labels and badges", () => {
40
+ const { getByText } = render(<DxcTabs tabs={sampleTabsWithBadge}></DxcTabs>);
41
+ expect(getByText("10")).toBeTruthy();
42
+ expect(getByText("20")).toBeTruthy();
43
+ expect(getByText("+99")).toBeTruthy();
44
+ });
24
45
 
25
46
  test("Tabs render with correct icons", () => {
26
47
  const { getAllByRole } = render(