@dxc-technology/halstack-react 0.0.0-6e92c02 → 0.0.0-6f13c26

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 (141) hide show
  1. package/README.md +66 -0
  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 +91 -40
  13. package/dist/card/Card.js +64 -56
  14. package/dist/checkbox/Checkbox.js +118 -39
  15. package/dist/checkbox/readme.md +2 -2
  16. package/dist/chip/Chip.js +265 -0
  17. package/dist/common/RequiredComponent.js +5 -15
  18. package/dist/common/variables.js +1502 -10
  19. package/dist/date/Date.js +115 -81
  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 +87 -33
  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 +90 -36
  28. package/dist/footer/dxc_logo.svg +15 -0
  29. package/dist/footer/readme.md +1 -1
  30. package/dist/header/Header.js +132 -72
  31. package/dist/header/dxc_logo_black.svg +8 -0
  32. package/dist/header/readme.md +1 -1
  33. package/dist/heading/Heading.js +81 -22
  34. package/dist/input-text/InputText.js +301 -104
  35. package/dist/layout/ApplicationLayout.js +331 -0
  36. package/dist/layout/facebook.svg +45 -0
  37. package/dist/layout/linkedin.svg +50 -0
  38. package/dist/layout/twitter.svg +53 -0
  39. package/dist/link/Link.js +142 -34
  40. package/dist/main.d.ts +8 -0
  41. package/dist/main.js +119 -15
  42. package/dist/new-select/NewSelect.js +836 -0
  43. package/dist/new-select/index.d.ts +53 -0
  44. package/dist/number-input/NumberInput.js +136 -0
  45. package/dist/number-input/NumberInputContext.js +16 -0
  46. package/dist/number-input/index.d.ts +113 -0
  47. package/dist/paginator/Paginator.js +160 -49
  48. package/dist/password-input/PasswordInput.js +198 -0
  49. package/dist/password-input/index.d.ts +94 -0
  50. package/dist/progress-bar/ProgressBar.js +97 -44
  51. package/dist/progress-bar/readme.md +2 -2
  52. package/dist/radio/Radio.js +39 -34
  53. package/dist/radio/readme.md +1 -1
  54. package/dist/resultsetTable/ResultsetTable.js +94 -70
  55. package/dist/select/Select.js +253 -129
  56. package/dist/sidenav/Sidenav.js +87 -125
  57. package/dist/slider/Slider.js +206 -80
  58. package/dist/slider/readme.md +1 -1
  59. package/dist/spinner/Spinner.js +249 -64
  60. package/dist/spinner/readme.md +2 -2
  61. package/dist/switch/Switch.js +54 -51
  62. package/dist/switch/readme.md +2 -2
  63. package/dist/table/Table.js +63 -15
  64. package/dist/tabs/Tabs.js +210 -50
  65. package/dist/tabs-for-sections/TabsForSections.js +1 -16
  66. package/dist/tag/Tag.js +100 -35
  67. package/dist/text-input/TextInput.js +971 -0
  68. package/dist/text-input/index.d.ts +135 -0
  69. package/dist/textarea/Textarea.js +250 -107
  70. package/dist/textarea/index.d.ts +117 -0
  71. package/dist/toggle/Toggle.js +16 -19
  72. package/dist/toggle/readme.md +2 -2
  73. package/dist/toggle-group/ToggleGroup.js +327 -0
  74. package/dist/upload/Upload.js +16 -11
  75. package/dist/upload/buttons-upload/ButtonsUpload.js +34 -20
  76. package/dist/upload/dragAndDropArea/DragAndDropArea.js +78 -31
  77. package/dist/upload/file-upload/FileToUpload.js +50 -24
  78. package/dist/upload/files-upload/FilesToUpload.js +16 -16
  79. package/dist/upload/readme.md +2 -2
  80. package/dist/upload/transaction/Transaction.js +44 -24
  81. package/dist/upload/transactions/Transactions.js +38 -20
  82. package/dist/useTheme.js +22 -0
  83. package/dist/wizard/Wizard.js +156 -55
  84. package/dist/wizard/invalid_icon.svg +4 -5
  85. package/dist/wizard/valid_icon.svg +4 -5
  86. package/package.json +18 -7
  87. package/test/AccordionGroup.test.js +125 -0
  88. package/test/Chip.test.js +25 -0
  89. package/test/Date.test.js +49 -45
  90. package/test/DateInput.test.js +242 -0
  91. package/test/Dropdown.test.js +19 -4
  92. package/test/FileInput.test.js +201 -0
  93. package/test/InputText.test.js +53 -41
  94. package/test/Link.test.js +25 -7
  95. package/test/NumberInput.test.js +259 -0
  96. package/test/Paginator.test.js +72 -60
  97. package/test/PasswordInput.test.js +83 -0
  98. package/test/ResultsetTable.test.js +66 -19
  99. package/test/Select.test.js +55 -34
  100. package/test/Sidenav.test.js +22 -64
  101. package/test/Slider.test.js +17 -0
  102. package/test/Spinner.test.js +5 -0
  103. package/test/Tabs.test.js +21 -0
  104. package/test/TextInput.test.js +732 -0
  105. package/test/Textarea.test.js +193 -0
  106. package/test/ToggleGroup.test.js +85 -0
  107. package/test/Upload.test.js +5 -5
  108. package/test/{TextArea.test.js → V3TextArea.test.js} +6 -7
  109. package/dist/accordion/Accordion.stories.js +0 -207
  110. package/dist/accordion/readme.md +0 -96
  111. package/dist/alert/Alert.stories.js +0 -158
  112. package/dist/alert/close.svg +0 -4
  113. package/dist/alert/error.svg +0 -4
  114. package/dist/alert/info.svg +0 -4
  115. package/dist/alert/readme.md +0 -43
  116. package/dist/alert/success.svg +0 -4
  117. package/dist/alert/warning.svg +0 -4
  118. package/dist/button/Button.stories.js +0 -224
  119. package/dist/button/readme.md +0 -93
  120. package/dist/common/services/example-service.js +0 -10
  121. package/dist/common/services/example-service.test.js +0 -12
  122. package/dist/date/calendar.svg +0 -1
  123. package/dist/date/calendar_dark.svg +0 -1
  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/header/dxc_logo_black.png +0 -0
  135. package/dist/header/dxc_logo_white.png +0 -0
  136. package/dist/input-text/InputText.stories.js +0 -209
  137. package/dist/select/Select.stories.js +0 -235
  138. package/dist/select/readme.md +0 -72
  139. package/dist/sidenav/arrow_icon.svg +0 -3
  140. package/dist/slider/Slider.stories.js +0 -241
  141. 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
  });
@@ -62,4 +62,21 @@ describe("Slider component tests", () => {
62
62
  });
63
63
  expect(onDragEnd).toHaveBeenCalled();
64
64
  });
65
+
66
+ test("Calls correct function labelFormatCallback", () => {
67
+ const labelFormatCallback = jest.fn(x => `${x}$`);
68
+ const { getByText } = render(
69
+ <DxcSlider
70
+ minValue={0}
71
+ maxValue={100}
72
+ showLimitsValues
73
+ showInput
74
+ value={25}
75
+ labelFormatCallback={labelFormatCallback}
76
+ ></DxcSlider>
77
+ );
78
+ expect(getByText("0$")).toBeTruthy();
79
+ expect(getByText("100$")).toBeTruthy();
80
+ expect(labelFormatCallback).toHaveBeenCalledTimes(2);
81
+ });
65
82
  });
@@ -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(