@dxc-technology/halstack-react 8.0.0 → 9.0.1

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 (163) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1329 -5
  4. package/HalstackContext.js +114 -73
  5. package/accordion/Accordion.js +13 -24
  6. package/accordion/Accordion.stories.tsx +102 -13
  7. package/accordion/Accordion.test.js +1 -1
  8. package/accordion/types.d.ts +3 -3
  9. package/accordion-group/AccordionGroup.js +2 -2
  10. package/accordion-group/AccordionGroup.test.js +1 -1
  11. package/accordion-group/types.d.ts +2 -2
  12. package/alert/Alert.js +3 -5
  13. package/alert/Alert.stories.tsx +28 -0
  14. package/alert/Alert.test.js +1 -1
  15. package/box/Box.js +3 -5
  16. package/box/Box.stories.tsx +15 -0
  17. package/box/Box.test.js +1 -1
  18. package/button/Button.js +13 -15
  19. package/button/Button.stories.tsx +150 -8
  20. package/button/Button.test.js +1 -1
  21. package/button/types.d.ts +3 -3
  22. package/card/Card.js +12 -13
  23. package/card/Card.stories.tsx +12 -13
  24. package/card/Card.test.js +1 -1
  25. package/checkbox/Checkbox.js +3 -3
  26. package/checkbox/Checkbox.stories.tsx +52 -0
  27. package/checkbox/Checkbox.test.js +1 -1
  28. package/checkbox/types.d.ts +2 -2
  29. package/chip/Chip.js +18 -26
  30. package/chip/Chip.stories.tsx +96 -9
  31. package/chip/Chip.test.js +3 -5
  32. package/common/utils.d.ts +1 -0
  33. package/common/utils.js +4 -4
  34. package/common/variables.d.ts +1625 -0
  35. package/common/variables.js +280 -288
  36. package/date-input/Calendar.d.ts +1 -1
  37. package/date-input/Calendar.js +43 -43
  38. package/date-input/DateInput.js +74 -32
  39. package/date-input/DateInput.stories.tsx +183 -30
  40. package/date-input/DateInput.test.js +120 -37
  41. package/date-input/DatePicker.js +38 -52
  42. package/date-input/Icons.d.ts +6 -0
  43. package/date-input/Icons.js +75 -0
  44. package/date-input/YearPicker.d.ts +1 -1
  45. package/date-input/YearPicker.js +23 -12
  46. package/date-input/types.d.ts +6 -8
  47. package/dialog/Dialog.js +61 -74
  48. package/dialog/Dialog.stories.tsx +211 -159
  49. package/dialog/Dialog.test.js +302 -3
  50. package/dialog/types.d.ts +2 -2
  51. package/dropdown/Dropdown.js +5 -8
  52. package/dropdown/Dropdown.stories.tsx +210 -84
  53. package/dropdown/Dropdown.test.js +3 -2
  54. package/dropdown/DropdownMenu.js +8 -18
  55. package/dropdown/DropdownMenuItem.js +4 -17
  56. package/dropdown/types.d.ts +3 -3
  57. package/file-input/FileInput.js +4 -8
  58. package/file-input/FileInput.stories.tsx +85 -2
  59. package/file-input/FileInput.test.js +1 -42
  60. package/file-input/FileItem.js +1 -0
  61. package/footer/Footer.js +6 -8
  62. package/footer/Footer.stories.tsx +91 -0
  63. package/footer/Footer.test.js +14 -26
  64. package/header/Header.d.ts +3 -2
  65. package/header/Header.js +21 -23
  66. package/header/Header.stories.tsx +149 -6
  67. package/header/Header.test.js +2 -2
  68. package/header/types.d.ts +2 -2
  69. package/heading/Heading.js +1 -1
  70. package/heading/Heading.test.js +1 -1
  71. package/layout/ApplicationLayout.d.ts +1 -1
  72. package/layout/ApplicationLayout.js +1 -1
  73. package/link/Link.js +2 -2
  74. package/link/Link.stories.tsx +60 -0
  75. package/link/Link.test.js +2 -4
  76. package/link/types.d.ts +2 -2
  77. package/main.d.ts +1 -1
  78. package/main.js +1 -1
  79. package/{tabs-nav → nav-tabs}/NavTabs.js +1 -1
  80. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
  81. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  82. package/{tabs-nav → nav-tabs}/Tab.js +37 -17
  83. package/number-input/NumberInput.test.js +1 -1
  84. package/package.json +2 -2
  85. package/paginator/Icons.d.ts +5 -0
  86. package/paginator/Icons.js +16 -28
  87. package/paginator/Paginator.js +6 -14
  88. package/paginator/Paginator.stories.tsx +24 -0
  89. package/paginator/Paginator.test.js +44 -47
  90. package/paragraph/Paragraph.d.ts +3 -4
  91. package/paragraph/Paragraph.js +5 -5
  92. package/password-input/PasswordInput.test.js +1 -1
  93. package/progress-bar/ProgressBar.d.ts +2 -2
  94. package/progress-bar/ProgressBar.js +5 -5
  95. package/progress-bar/ProgressBar.stories.jsx +35 -2
  96. package/progress-bar/ProgressBar.test.js +1 -1
  97. package/progress-bar/types.d.ts +4 -3
  98. package/quick-nav/QuickNav.stories.tsx +14 -0
  99. package/radio-group/RadioGroup.stories.tsx +131 -18
  100. package/radio-group/RadioGroup.test.js +1 -1
  101. package/resultsetTable/ResultsetTable.js +2 -2
  102. package/resultsetTable/ResultsetTable.test.js +18 -23
  103. package/resultsetTable/types.d.ts +3 -3
  104. package/select/Listbox.d.ts +1 -1
  105. package/select/Listbox.js +5 -34
  106. package/select/Option.js +11 -24
  107. package/select/Select.js +56 -35
  108. package/select/Select.stories.tsx +492 -145
  109. package/select/Select.test.js +76 -81
  110. package/select/types.d.ts +2 -2
  111. package/sidenav/Sidenav.js +9 -11
  112. package/sidenav/Sidenav.stories.tsx +148 -46
  113. package/slider/Slider.js +6 -7
  114. package/slider/Slider.stories.tsx +57 -0
  115. package/slider/Slider.test.js +1 -1
  116. package/slider/types.d.ts +2 -2
  117. package/spinner/Spinner.js +17 -23
  118. package/spinner/Spinner.stories.jsx +53 -27
  119. package/spinner/Spinner.test.js +1 -1
  120. package/switch/Switch.js +3 -3
  121. package/switch/Switch.stories.tsx +33 -0
  122. package/switch/Switch.test.js +1 -1
  123. package/switch/types.d.ts +2 -2
  124. package/table/Table.js +2 -2
  125. package/table/Table.stories.jsx +80 -1
  126. package/table/Table.test.js +1 -1
  127. package/tabs/Tab.js +12 -14
  128. package/tabs/Tabs.js +4 -6
  129. package/tabs/Tabs.stories.tsx +45 -5
  130. package/tabs/Tabs.test.js +4 -5
  131. package/tabs/types.d.ts +2 -2
  132. package/tag/Tag.js +7 -9
  133. package/tag/Tag.stories.tsx +14 -1
  134. package/tag/Tag.test.js +1 -1
  135. package/text-input/Suggestion.js +34 -7
  136. package/text-input/TextInput.js +10 -14
  137. package/text-input/TextInput.stories.tsx +92 -4
  138. package/text-input/TextInput.test.js +125 -26
  139. package/textarea/Textarea.js +3 -3
  140. package/textarea/Textarea.stories.jsx +60 -1
  141. package/textarea/Textarea.test.js +1 -1
  142. package/toggle-group/ToggleGroup.js +7 -4
  143. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  144. package/toggle-group/ToggleGroup.test.js +1 -1
  145. package/toggle-group/types.d.ts +1 -1
  146. package/typography/Typography.d.ts +2 -2
  147. package/typography/Typography.js +14 -113
  148. package/typography/Typography.stories.tsx +1 -1
  149. package/useTheme.d.ts +1234 -1
  150. package/useTheme.js +1 -1
  151. package/useTranslatedLabels.d.ts +84 -1
  152. package/utils/BaseTypography.d.ts +21 -0
  153. package/utils/BaseTypography.js +108 -0
  154. package/utils/FocusLock.d.ts +13 -0
  155. package/utils/FocusLock.js +139 -0
  156. package/wizard/Wizard.js +2 -2
  157. package/wizard/Wizard.stories.tsx +20 -0
  158. package/wizard/Wizard.test.js +1 -1
  159. package/wizard/types.d.ts +5 -6
  160. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  161. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  162. /package/{tabs-nav → nav-tabs}/types.d.ts +0 -0
  163. /package/{tabs-nav → nav-tabs}/types.js +0 -0
@@ -3,6 +3,7 @@ import DxcSidenav from "./Sidenav";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
5
  import { userEvent, within } from "@storybook/testing-library";
6
+ import { HalstackProvider } from "../HalstackContext";
6
7
 
7
8
  export default {
8
9
  title: "Sidenav",
@@ -10,9 +11,26 @@ export default {
10
11
  };
11
12
 
12
13
  const iconSVG = (
13
- <svg viewBox="0 0 24 24" fill="currentColor">
14
- <path d="M0 0h24v24H0z" fill="none" />
15
- <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
14
+ <svg
15
+ version="1.1"
16
+ id="Capa_1"
17
+ x="0px"
18
+ y="0px"
19
+ width="438.536px"
20
+ height="438.536px"
21
+ viewBox="0 0 438.536 438.536"
22
+ fill="currentColor"
23
+ >
24
+ <g>
25
+ <path
26
+ d="M414.41,24.123C398.333,8.042,378.963,0,356.315,0H82.228C59.58,0,40.21,8.042,24.126,24.123
27
+ C8.045,40.207,0.003,59.576,0.003,82.225v274.084c0,22.647,8.042,42.018,24.123,58.102c16.084,16.084,35.454,24.126,58.102,24.126
28
+ h274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225
29
+ C438.532,59.576,430.49,40.204,414.41,24.123z M373.155,225.548h-49.963V406.84h-74.802V225.548H210.99V163.02h37.401v-37.402
30
+ c0-26.838,6.283-47.107,18.843-60.813c12.559-13.706,33.304-20.555,62.242-20.555h49.963v62.526h-31.401
31
+ c-10.663,0-17.467,1.853-20.417,5.568c-2.949,3.711-4.428,10.23-4.428,19.558v31.119h56.534L373.155,225.548z"
32
+ />
33
+ </g>
16
34
  </svg>
17
35
  );
18
36
 
@@ -20,11 +38,17 @@ const TitleComponent = () => {
20
38
  return <DxcSidenav.Title>Dxc technology</DxcSidenav.Title>;
21
39
  };
22
40
 
41
+ const opinionatedTheme = {
42
+ sidenav: {
43
+ baseColor: "#f2f2f2",
44
+ },
45
+ };
46
+
23
47
  export const Chromatic = () => (
24
48
  <>
25
49
  <ExampleContainer>
26
50
  <Title title="Default sidenav" theme="light" level={4} />
27
- <DxcSidenav title={<TitleComponent />}>
51
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
28
52
  <DxcSidenav.Section>
29
53
  <p>
30
54
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
@@ -41,12 +65,18 @@ export const Chromatic = () => (
41
65
  </DxcSidenav.Group>
42
66
  </DxcSidenav.Section>
43
67
  <DxcSidenav.Section>
44
- <DxcSidenav.Group collapsable={true} title="Section Group" icon={iconSVG}>
68
+ <DxcSidenav.Group
69
+ collapsable={true}
70
+ title="Section Group"
71
+ icon="https://cdn-icons-png.flaticon.com/512/5039/5039041.png"
72
+ >
45
73
  <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
46
74
  <DxcSidenav.Link icon={iconSVG}>Group Link</DxcSidenav.Link>
47
75
  </DxcSidenav.Group>
48
- <DxcSidenav.Link icon={iconSVG}>Single Link</DxcSidenav.Link>
49
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
76
+ <DxcSidenav.Link icon="https://upload.wikimedia.org/wikipedia/commons/7/73/Flat_tick_icon.svg" newWindow>
77
+ Single Link
78
+ </DxcSidenav.Link>
79
+ <DxcSidenav.Link newWindow>Single Link</DxcSidenav.Link>
50
80
  <DxcSidenav.Group collapsable={false} title="Section Group">
51
81
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
52
82
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
@@ -55,51 +85,76 @@ export const Chromatic = () => (
55
85
  </DxcSidenav.Section>
56
86
  </DxcSidenav>
57
87
  </ExampleContainer>
88
+ <ExampleContainer pseudoState="pseudo-focus">
89
+ <Title title="Focused options sidenav" theme="light" level={4} />
90
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
91
+ <DxcSidenav.Section>
92
+ <p>
93
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
94
+ vitae lacinia libero.
95
+ </p>
96
+ </DxcSidenav.Section>
97
+ <DxcSidenav.Section>
98
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
99
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
100
+ <DxcSidenav.Link icon="https://cdn-icons-png.flaticon.com/512/5039/5039041.png">Group Link</DxcSidenav.Link>
101
+ </DxcSidenav.Group>
102
+ </DxcSidenav.Section>
103
+ <DxcSidenav.Section>
104
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
105
+ <DxcSidenav.Link selected icon={iconSVG}>
106
+ Group Link
107
+ </DxcSidenav.Link>
108
+ </DxcSidenav.Group>
109
+ <DxcSidenav.Group collapsable={false} title="Section Group">
110
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
111
+ </DxcSidenav.Group>
112
+ </DxcSidenav.Section>
113
+ </DxcSidenav>
114
+ </ExampleContainer>
115
+ <Title title="Opinionated theme" theme="light" level={2} />
116
+ <ExampleContainer>
117
+ <HalstackProvider theme={opinionatedTheme}>
118
+ <DxcSidenav title={<TitleComponent />}>
119
+ <DxcSidenav.Section>
120
+ <p>
121
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
122
+ vitae lacinia libero.
123
+ </p>
124
+ </DxcSidenav.Section>
125
+ <DxcSidenav.Section>
126
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
127
+ <DxcSidenav.Group collapsable={false} title="Single Group" icon={iconSVG}>
128
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
129
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
130
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
131
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
132
+ </DxcSidenav.Group>
133
+ </DxcSidenav.Section>
134
+ <DxcSidenav.Section>
135
+ <DxcSidenav.Group collapsable={true} title="Section Group" icon={iconSVG}>
136
+ <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
137
+ <DxcSidenav.Link icon={iconSVG}>Group Link</DxcSidenav.Link>
138
+ </DxcSidenav.Group>
139
+ <DxcSidenav.Link icon={iconSVG}>Single Link</DxcSidenav.Link>
140
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
141
+ <DxcSidenav.Group collapsable={false} title="Section Group">
142
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
143
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
144
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
145
+ </DxcSidenav.Group>
146
+ </DxcSidenav.Section>
147
+ </DxcSidenav>
148
+ </HalstackProvider>
149
+ </ExampleContainer>
58
150
  </>
59
151
  );
60
152
 
61
- export const FocusedSidenav = () => (
62
- <ExampleContainer pseudoState="pseudo-focus">
63
- <Title title="Default sidenav" theme="light" level={4} />
64
- <DxcSidenav title={<TitleComponent />}>
65
- <DxcSidenav.Section>
66
- <p>
67
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse vitae
68
- lacinia libero.
69
- </p>
70
- </DxcSidenav.Section>
71
- <DxcSidenav.Section>
72
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
73
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
74
- <DxcSidenav.Group collapsable={true} title="Collapsable Group">
75
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
76
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
77
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
78
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
79
- </DxcSidenav.Group>
80
- </DxcSidenav.Section>
81
- <DxcSidenav.Section>
82
- <DxcSidenav.Group collapsable={true} title="Collapsable Group">
83
- <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
84
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
85
- </DxcSidenav.Group>
86
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
87
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
88
- <DxcSidenav.Group collapsable={false} title="Section Group">
89
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
90
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
91
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
92
- </DxcSidenav.Group>
93
- </DxcSidenav.Section>
94
- </DxcSidenav>
95
- </ExampleContainer>
96
- );
97
-
98
153
  const CollapsedGroup = () => (
99
154
  <>
100
155
  <ExampleContainer>
101
156
  <Title title="Default sidenav" theme="light" level={4} />
102
- <DxcSidenav title={<TitleComponent />}>
157
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
103
158
  <DxcSidenav.Section>
104
159
  <DxcSidenav.Group collapsable={true} title="Collapsable Group" icon={iconSVG}>
105
160
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
@@ -127,7 +182,7 @@ const CollapsedGroup = () => (
127
182
  const HoverSidenav = () => (
128
183
  <ExampleContainer pseudoState="pseudo-hover">
129
184
  <Title title="Default sidenav" theme="light" level={4} />
130
- <DxcSidenav title={<TitleComponent />}>
185
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
131
186
  <DxcSidenav.Section>
132
187
  <DxcSidenav.Link>Single Link</DxcSidenav.Link>
133
188
  <DxcSidenav.Link>Single Link</DxcSidenav.Link>
@@ -161,6 +216,44 @@ const HoverSidenav = () => (
161
216
  </ExampleContainer>
162
217
  );
163
218
 
219
+ const HoverSidenavOpinionated = () => (
220
+ <ExampleContainer pseudoState="pseudo-hover">
221
+ <Title title="Default sidenav" theme="light" level={4} />
222
+ <HalstackProvider theme={opinionatedTheme}>
223
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
224
+ <DxcSidenav.Section>
225
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
226
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
227
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
228
+ <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
229
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
230
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
231
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
232
+ </DxcSidenav.Group>
233
+ </DxcSidenav.Section>
234
+ <DxcSidenav.Section>
235
+ <DxcSidenav.Group collapsable={true} title="Not Collapsed Group">
236
+ <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
237
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
238
+ </DxcSidenav.Group>
239
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
240
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
241
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
242
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
243
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
244
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
245
+ </DxcSidenav.Group>
246
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
247
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
248
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
249
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
250
+ </DxcSidenav.Group>
251
+ </DxcSidenav.Section>
252
+ </DxcSidenav>
253
+ </HalstackProvider>
254
+ </ExampleContainer>
255
+ );
256
+
164
257
  export const CollapseGroup = CollapsedGroup.bind({});
165
258
  CollapseGroup.play = async ({ canvasElement }) => {
166
259
  const canvas = within(canvasElement);
@@ -178,3 +271,12 @@ CollapseHoverGroup.play = async ({ canvasElement }) => {
178
271
  userEvent.click(group);
179
272
  });
180
273
  };
274
+
275
+ export const CollapseHoverGroupOpinionated = HoverSidenavOpinionated.bind({});
276
+ CollapseHoverGroupOpinionated.play = async ({ canvasElement }) => {
277
+ const canvas = within(canvasElement);
278
+ const collapsableGroups = canvas.getAllByText("Collapsable Group");
279
+ collapsableGroups.forEach((group) => {
280
+ userEvent.click(group);
281
+ });
282
+ };
package/slider/Slider.js CHANGED
@@ -21,9 +21,9 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
21
 
22
22
  var _TextInput = _interopRequireDefault(require("../text-input/TextInput"));
23
23
 
24
- var _variables = require("../common/variables.js");
24
+ var _variables = require("../common/variables");
25
25
 
26
- var _utils = require("../common/utils.js");
26
+ var _utils = require("../common/utils");
27
27
 
28
28
  var _useTheme = _interopRequireDefault(require("../useTheme"));
29
29
 
@@ -166,7 +166,6 @@ var DxcSlider = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
166
166
  min: minValue,
167
167
  max: maxValue,
168
168
  step: step,
169
- marks: marks,
170
169
  disabled: disabled,
171
170
  "aria-labelledby": labelId,
172
171
  "aria-orientation": "horizontal",
@@ -252,7 +251,7 @@ var HelperText = _styledComponents["default"].span(_templateObject3 || (_templat
252
251
  return props.theme.helperTextLineHeight;
253
252
  });
254
253
 
255
- var SliderInput = _styledComponents["default"].input(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n min-width: 240px;\n height: ", ";\n display: inline-block;\n vertical-align: middle;\n -webkit-appearance: none;\n background-color: ", ";\n background-image: ", ";\n background-repeat: no-repeat;\n background-size: ", ";\n border-radius: 5px;\n z-index: 1;\n cursor: ", ";\n &::-webkit-slider-runnable-track {\n -webkit-appearance: none;\n box-shadow: none;\n border: none;\n background: transparent;\n margin: 0px -8px;\n }\n\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: ", ";\n width: ", ";\n border-radius: 25px;\n background: ", ";\n &:active {\n ", "\n }\n &:hover {\n ", "\n }\n }\n &::-moz-range-track {\n -webkit-appearance: none;\n box-shadow: none;\n border: none;\n background: transparent;\n }\n &::-moz-range-thumb {\n -webkit-appearance: none;\n border: none;\n height: ", ";\n width: ", ";\n border-radius: 25px;\n background: ", ";\n &:active {\n background: ", ";\n transform: scale(1.16667);\n }\n &:hover {\n ", "\n }\n }\n &:focus {\n outline: none;\n &::-webkit-slider-thumb {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n }\n &::-moz-range-thumb {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n }\n }\n"])), function (props) {
254
+ var SliderInput = _styledComponents["default"].input(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n min-width: 240px;\n height: ", ";\n display: inline-block;\n vertical-align: middle;\n -webkit-appearance: none;\n background-color: ", ";\n background-image: ", ";\n background-repeat: no-repeat;\n background-size: ", ";\n border-radius: 5px;\n cursor: ", ";\n &::-webkit-slider-runnable-track {\n -webkit-appearance: none;\n box-shadow: none;\n border: none;\n background: transparent;\n margin: 0px -8px;\n }\n\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: ", ";\n width: ", ";\n border-radius: 25px;\n background: ", ";\n &:active {\n ", "\n }\n &:hover {\n ", "\n }\n }\n &::-moz-range-track {\n -webkit-appearance: none;\n box-shadow: none;\n border: none;\n background: transparent;\n }\n &::-moz-range-thumb {\n -webkit-appearance: none;\n border: none;\n height: ", ";\n width: ", ";\n border-radius: 25px;\n background: ", ";\n &:active {\n background: ", ";\n transform: scale(1.16667);\n }\n &:hover {\n ", "\n }\n }\n &:focus {\n outline: none;\n &::-webkit-slider-thumb {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n }\n &::-moz-range-thumb {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n }\n }\n"])), function (props) {
256
255
  return props.theme.trackLineThickness;
257
256
  }, function (props) {
258
257
  return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledTotalLineColorOnDark + "61" : props.theme.disabledTotalLineColor + "61" : props.backgroundType === "dark" ? props.theme.totalLineColorOnDark + "61" : props.theme.totalLineColor;
@@ -317,13 +316,13 @@ var MaxLabelContainer = (0, _styledComponents["default"])(LimitLabelContainer)(_
317
316
  return props.step === 1 ? props.theme.ceilLabelMarginLeft : "1.25rem";
318
317
  });
319
318
 
320
- var SliderInputContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n width: 100%;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: -2px;\n padding-top: 1px;\n"])));
319
+ var SliderInputContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n width: 100%;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: -2px;\n padding-top: 1px;\n z-index: 0;\n"])));
321
320
 
322
321
  var MarksContainer = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n ", "\n position: absolute;\n pointer-events: none;\n height: 100%;\n display: flex;\n align-items: center;\n"])), function (props) {
323
322
  return props.isFirefox ? getFireFoxStyles() : getChromeStyles();
324
323
  });
325
324
 
326
- var TickMark = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n background: ", ";\n height: ", ";\n width: ", ";\n border-radius: 18px;\n left: ", ";\n ", ";\n"])), function (props) {
325
+ var TickMark = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n background: ", ";\n height: ", ";\n width: ", ";\n border-radius: 18px;\n left: ", ";\n z-index: ", ";\n"])), function (props) {
327
326
  return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledTickBackgroundColorOnDark : props.theme.disabledTickBackgroundColor : props.backgroundType === "dark" ? props.theme.tickBackgroundColorOnDark : props.theme.tickBackgroundColor;
328
327
  }, function (props) {
329
328
  return props.theme.tickHeight;
@@ -332,7 +331,7 @@ var TickMark = _styledComponents["default"].span(_templateObject11 || (_template
332
331
  }, function (props) {
333
332
  return "calc(".concat(props.stepPosition, " * 100%)");
334
333
  }, function (props) {
335
- return !props.disabled ? "z-index: ".concat(props.stepPosition <= props.stepValue ? "0" : "1") : "";
334
+ return "".concat(props.stepPosition <= props.stepValue ? "-1" : "0");
336
335
  });
337
336
 
338
337
  var StyledTextInput = _styledComponents["default"].div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n max-width: 70px;\n"])), function (props) {
@@ -4,6 +4,7 @@ import { BackgroundColorProvider } from "../BackgroundColorContext";
4
4
  import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
6
  import DarkContainer from "../../.storybook/components/DarkSection";
7
+ import { HalstackProvider } from "../HalstackContext";
7
8
 
8
9
  export default {
9
10
  title: "Slider",
@@ -12,6 +13,14 @@ export default {
12
13
 
13
14
  const labelFormat = (value) => `${value}E100000000000000000000000`;
14
15
 
16
+ const opinionatedTheme = {
17
+ slider: {
18
+ baseColor: "#0067b3",
19
+ fontColor: "#000000",
20
+ totalLineColor: "#e6e6e6",
21
+ },
22
+ };
23
+
15
24
  export const Chromatic = () => (
16
25
  <>
17
26
  <Title title="States" theme="light" level={2} />
@@ -179,5 +188,53 @@ export const Chromatic = () => (
179
188
  size="large"
180
189
  />
181
190
  </ExampleContainer>
191
+ <Title title="Opinionated theme" theme="light" level={2} />
192
+ <ExampleContainer pseudoState="pseudo-hover">
193
+ <Title title="Hovered" theme="light" level={4} />
194
+ <HalstackProvider theme={opinionatedTheme}>
195
+ <DxcSlider label="Slider" helperText="Help message" showLimitsValues />
196
+ </HalstackProvider>
197
+ </ExampleContainer>
198
+ <ExampleContainer pseudoState="pseudo-active">
199
+ <Title title="Active" theme="light" level={4} />
200
+ <HalstackProvider theme={opinionatedTheme}>
201
+ <DxcSlider label="Slider" helperText="Help message" showLimitsValues />
202
+ </HalstackProvider>
203
+ </ExampleContainer>
204
+ <ExampleContainer pseudoState="pseudo-focus">
205
+ <Title title="Focused" theme="light" level={4} />
206
+ <HalstackProvider theme={opinionatedTheme}>
207
+ <DxcSlider label="Slider" helperText="Help message" showLimitsValues />
208
+ </HalstackProvider>
209
+ </ExampleContainer>
210
+ <ExampleContainer>
211
+ <Title title="Disabled discrete slider with input" theme="light" level={4} />{" "}
212
+ <HalstackProvider theme={opinionatedTheme}>
213
+ <DxcSlider
214
+ label="Slider"
215
+ helperText="Help message"
216
+ disabled
217
+ defaultValue={40}
218
+ minValue={0}
219
+ maxValue={50}
220
+ showLimitsValues
221
+ showInput
222
+ marks
223
+ step={10}
224
+ />
225
+ </HalstackProvider>
226
+ </ExampleContainer>
227
+ <ExampleContainer>
228
+ <Title title="Continuous slider" theme="light" level={4} />
229
+ <HalstackProvider theme={opinionatedTheme}>
230
+ <DxcSlider defaultValue={65} label="Slider" helperText="Help message" showLimitsValues />
231
+ </HalstackProvider>
232
+ </ExampleContainer>
233
+ <ExampleContainer>
234
+ <Title title="Discrete slider" theme="light" level={4} />
235
+ <HalstackProvider theme={opinionatedTheme}>
236
+ <DxcSlider defaultValue={20} label="Slider" helperText="Help message" showLimitsValues marks step={5} />
237
+ </HalstackProvider>
238
+ </ExampleContainer>
182
239
  </>
183
240
  );
@@ -8,7 +8,7 @@ var _react2 = require("@testing-library/react");
8
8
 
9
9
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
10
10
 
11
- var _Slider = _interopRequireDefault(require("./Slider"));
11
+ var _Slider = _interopRequireDefault(require("./Slider.tsx"));
12
12
 
13
13
  describe("Slider component tests", function () {
14
14
  test("Slider renders with correct text and label id", function () {
package/slider/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
- export declare type Margin = {
1
+ declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
+ declare type Margin = {
3
3
  top?: Space;
4
4
  bottom?: Space;
5
5
  left?: Space;
@@ -17,7 +17,7 @@ var _react = _interopRequireWildcard(require("react"));
17
17
 
18
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
19
 
20
- var _variables = require("../common/variables.js");
20
+ var _variables = require("../common/variables");
21
21
 
22
22
  var _useTheme = _interopRequireDefault(require("../useTheme"));
23
23
 
@@ -46,11 +46,8 @@ var DxcSpinner = function DxcSpinner(_ref) {
46
46
  margin: margin,
47
47
  mode: mode
48
48
  }, /*#__PURE__*/_react["default"].createElement(SpinnerContainer, {
49
- backgroundType: backgroundType,
50
- mode: mode
51
- }, mode === "overlay" && /*#__PURE__*/_react["default"].createElement(BackOverlay, null), /*#__PURE__*/_react["default"].createElement(BackgroundSpinner, {
52
49
  mode: mode
53
- }, mode !== "small" && /*#__PURE__*/_react["default"].createElement(SVGBackground, {
50
+ }, mode === "overlay" && /*#__PURE__*/_react["default"].createElement(BackOverlay, null), /*#__PURE__*/_react["default"].createElement(BackgroundSpinner, null, mode !== "small" && /*#__PURE__*/_react["default"].createElement(SVGBackground, {
54
51
  viewBox: "0 0 140 140"
55
52
  }, /*#__PURE__*/_react["default"].createElement(CircleBackground, {
56
53
  cx: "70",
@@ -65,8 +62,7 @@ var DxcSpinner = function DxcSpinner(_ref) {
65
62
  r: "6",
66
63
  mode: mode
67
64
  }))), value >= 0 && value <= 100 ? /*#__PURE__*/_react["default"].createElement(Spinner, {
68
- role: "progressbar",
69
- mode: mode
65
+ role: "progressbar"
70
66
  }, mode !== "small" && /*#__PURE__*/_react["default"].createElement(SVGSpinner, {
71
67
  viewBox: "0 0 140 140",
72
68
  isDeterminated: true
@@ -90,8 +86,7 @@ var DxcSpinner = function DxcSpinner(_ref) {
90
86
  isDeterminated: true,
91
87
  value: value
92
88
  }))) : /*#__PURE__*/_react["default"].createElement(Spinner, {
93
- role: "progressbar",
94
- mode: mode
89
+ role: "progressbar"
95
90
  }, mode !== "small" && /*#__PURE__*/_react["default"].createElement(SVGSpinner, {
96
91
  viewBox: "0 0 140 140",
97
92
  isDeterminated: false
@@ -101,7 +96,8 @@ var DxcSpinner = function DxcSpinner(_ref) {
101
96
  r: "65",
102
97
  backgroundType: backgroundType,
103
98
  mode: mode,
104
- isDeterminated: false
99
+ isDeterminated: false,
100
+ value: value
105
101
  })), mode === "small" && /*#__PURE__*/_react["default"].createElement(SVGSpinner, {
106
102
  viewBox: "0 0 16 16",
107
103
  isDeterminated: false
@@ -111,26 +107,24 @@ var DxcSpinner = function DxcSpinner(_ref) {
111
107
  r: "6",
112
108
  backgroundType: backgroundType,
113
109
  mode: mode,
114
- isDeterminated: false
115
- }))), mode !== "small" && /*#__PURE__*/_react["default"].createElement(LabelsContainer, {
116
- label: label,
117
- value: value,
118
- showValue: showValue
119
- }, /*#__PURE__*/_react["default"].createElement(SpinnerLabel, {
110
+ isDeterminated: false,
111
+ value: value
112
+ }))), mode !== "small" && /*#__PURE__*/_react["default"].createElement(LabelsContainer, null, /*#__PURE__*/_react["default"].createElement(SpinnerLabel, {
120
113
  backgroundType: backgroundType,
121
114
  mode: mode
122
115
  }, label), (value || value === 0) && showValue && /*#__PURE__*/_react["default"].createElement(SpinnerProgress, {
116
+ value: value,
123
117
  backgroundType: backgroundType,
124
118
  mode: mode,
125
119
  showValue: showValue
126
120
  }, value, "%")))));
127
121
  };
128
122
 
129
- var determinatedValue = function determinatedValue(props, strokeDashArray) {
123
+ var determinatedValue = function determinatedValue(value, strokeDashArray) {
130
124
  var val = 0;
131
125
 
132
- if (props.value >= 0 && props.value <= 100) {
133
- val = strokeDashArray * (1 - props.value / 100);
126
+ if (value >= 0 && value <= 100) {
127
+ val = strokeDashArray * (1 - value / 100);
134
128
  }
135
129
 
136
130
  return val;
@@ -178,7 +172,7 @@ var BackOverlay = _styledComponents["default"].div(_templateObject3 || (_templat
178
172
  return "".concat(props.theme.overlayOpacity);
179
173
  });
180
174
 
181
- var BackgroundSpinner = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n position: absolute;\n z-index: 1;\n"])));
175
+ var BackgroundSpinner = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n position: absolute;\n"])));
182
176
 
183
177
  var SVGBackground = _styledComponents["default"].svg(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n"])));
184
178
 
@@ -190,7 +184,7 @@ var CircleBackground = _styledComponents["default"].circle(_templateObject6 || (
190
184
  return props.mode !== "small" ? "8.5px" : "2px";
191
185
  });
192
186
 
193
- var Spinner = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n position: relative;\n z-index: 2;\n"])));
187
+ var Spinner = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n position: relative;\n"])));
194
188
 
195
189
  var SVGSpinner = _styledComponents["default"].svg(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n transform: rotate(-90deg);\n top: 0;\n left: 0;\n transform-origin: center;\n overflow: visible;\n animation: ", ";\n"])), function (props) {
196
190
  return !props.isDeterminated ? "1.4s linear infinite both spinner-svg" : "";
@@ -207,7 +201,7 @@ var CircleSpinner = _styledComponents["default"].circle(_templateObject9 || (_te
207
201
  }, function (props) {
208
202
  return props.mode !== "small" ? "8.5px" : "2px";
209
203
  }, function (props) {
210
- return props.isDeterminated ? props.mode !== "small" ? determinatedValue(props, 409) : determinatedValue(props, 38) : "";
204
+ return props.isDeterminated ? props.mode !== "small" ? determinatedValue(props.value, 409) : determinatedValue(props.value, 38) : "";
211
205
  });
212
206
 
213
207
  var LabelsContainer = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: block;\n margin: 0 auto;\n position: absolute;\n text-align: center;\n width: 110px;\n"])));
@@ -229,7 +223,7 @@ var SpinnerLabel = _styledComponents["default"].p(_templateObject11 || (_templat
229
223
  });
230
224
 
231
225
  var SpinnerProgress = _styledComponents["default"].p(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n margin: 0;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: ", ";\n font-family: ", ";\n font-weight: ", ";\n font-size: ", ";\n font-style: ", ";\n color: ", ";\n text-align: ", ";\n letter-spacing: ", ";\n"])), function (props) {
232
- return props.value !== "" && props.showValue === true && "block" || "none";
226
+ return props.value && props.showValue === true && "block" || "none";
233
227
  }, function (props) {
234
228
  return props.mode === "overlay" ? props.theme.overlayProgressValueFontFamily : props.theme.progressValueFontFamily;
235
229
  }, function (props) {