@dxc-technology/halstack-react 0.0.0-c1253f5 → 0.0.0-c1a6e05

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 (219) 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 +117 -77
  5. package/accordion/Accordion.js +118 -110
  6. package/accordion/Accordion.stories.tsx +103 -15
  7. package/accordion/Accordion.test.js +10 -11
  8. package/accordion/types.d.ts +2 -1
  9. package/accordion-group/AccordionGroup.d.ts +4 -3
  10. package/accordion-group/AccordionGroup.js +24 -65
  11. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  12. package/accordion-group/AccordionGroup.test.js +21 -46
  13. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  14. package/accordion-group/AccordionGroupAccordion.js +43 -0
  15. package/accordion-group/types.d.ts +8 -1
  16. package/alert/Alert.js +5 -9
  17. package/alert/Alert.stories.tsx +28 -0
  18. package/alert/Alert.test.js +1 -1
  19. package/bleed/Bleed.stories.tsx +1 -0
  20. package/box/Box.js +4 -6
  21. package/box/Box.stories.tsx +15 -0
  22. package/box/Box.test.js +1 -1
  23. package/box/types.d.ts +1 -0
  24. package/bulleted-list/BulletedList.js +4 -2
  25. package/bulleted-list/BulletedList.stories.tsx +7 -1
  26. package/bulleted-list/types.d.ts +31 -4
  27. package/button/Button.js +13 -16
  28. package/button/Button.stories.tsx +151 -9
  29. package/button/Button.test.js +1 -1
  30. package/button/types.d.ts +3 -3
  31. package/card/Card.js +12 -13
  32. package/card/Card.stories.tsx +12 -13
  33. package/card/Card.test.js +1 -1
  34. package/card/types.d.ts +1 -0
  35. package/checkbox/Checkbox.d.ts +2 -2
  36. package/checkbox/Checkbox.js +94 -101
  37. package/checkbox/Checkbox.stories.tsx +131 -59
  38. package/checkbox/Checkbox.test.js +94 -17
  39. package/checkbox/types.d.ts +4 -0
  40. package/chip/Chip.js +28 -49
  41. package/chip/Chip.stories.tsx +121 -26
  42. package/chip/Chip.test.js +3 -5
  43. package/chip/types.d.ts +1 -1
  44. package/common/OpenSans.css +68 -80
  45. package/common/coreTokens.d.ts +146 -0
  46. package/common/coreTokens.js +167 -0
  47. package/common/utils.d.ts +1 -0
  48. package/common/utils.js +4 -4
  49. package/common/variables.d.ts +1482 -0
  50. package/common/variables.js +1001 -1137
  51. package/date-input/Calendar.d.ts +4 -0
  52. package/date-input/Calendar.js +258 -0
  53. package/date-input/DateInput.js +134 -237
  54. package/date-input/DateInput.stories.tsx +199 -33
  55. package/date-input/DateInput.test.js +494 -138
  56. package/date-input/DatePicker.d.ts +4 -0
  57. package/date-input/DatePicker.js +146 -0
  58. package/date-input/Icons.d.ts +6 -0
  59. package/date-input/Icons.js +75 -0
  60. package/date-input/YearPicker.d.ts +4 -0
  61. package/date-input/YearPicker.js +126 -0
  62. package/date-input/types.d.ts +51 -0
  63. package/dialog/Dialog.js +80 -69
  64. package/dialog/Dialog.stories.tsx +230 -123
  65. package/dialog/Dialog.test.js +334 -5
  66. package/dialog/types.d.ts +1 -0
  67. package/dropdown/Dropdown.d.ts +1 -1
  68. package/dropdown/Dropdown.js +246 -249
  69. package/dropdown/Dropdown.stories.tsx +245 -56
  70. package/dropdown/Dropdown.test.js +507 -110
  71. package/dropdown/DropdownMenu.d.ts +4 -0
  72. package/dropdown/DropdownMenu.js +74 -0
  73. package/dropdown/DropdownMenuItem.d.ts +4 -0
  74. package/dropdown/DropdownMenuItem.js +79 -0
  75. package/dropdown/types.d.ts +23 -3
  76. package/file-input/FileInput.d.ts +2 -2
  77. package/file-input/FileInput.js +174 -220
  78. package/file-input/FileInput.stories.tsx +122 -11
  79. package/file-input/FileInput.test.js +14 -14
  80. package/file-input/FileItem.d.ts +4 -14
  81. package/file-input/FileItem.js +39 -63
  82. package/file-input/types.d.ts +17 -0
  83. package/flex/Flex.d.ts +1 -1
  84. package/flex/Flex.js +33 -19
  85. package/flex/Flex.stories.tsx +35 -26
  86. package/flex/types.d.ts +83 -7
  87. package/footer/Footer.js +6 -8
  88. package/footer/Footer.stories.tsx +99 -1
  89. package/footer/Footer.test.js +14 -26
  90. package/footer/types.d.ts +2 -1
  91. package/grid/Grid.d.ts +7 -0
  92. package/grid/Grid.js +91 -0
  93. package/grid/Grid.stories.tsx +219 -0
  94. package/grid/types.d.ts +115 -0
  95. package/header/Header.d.ts +3 -2
  96. package/header/Header.js +89 -89
  97. package/header/Header.stories.tsx +152 -9
  98. package/header/Header.test.js +2 -2
  99. package/header/Icons.js +2 -2
  100. package/header/types.d.ts +1 -0
  101. package/heading/Heading.js +1 -1
  102. package/heading/Heading.test.js +1 -1
  103. package/inset/Inset.stories.tsx +2 -1
  104. package/layout/ApplicationLayout.d.ts +3 -3
  105. package/layout/ApplicationLayout.js +1 -1
  106. package/layout/ApplicationLayout.stories.tsx +1 -0
  107. package/layout/types.d.ts +2 -3
  108. package/link/Link.js +4 -4
  109. package/link/Link.stories.tsx +60 -0
  110. package/link/Link.test.js +2 -4
  111. package/link/types.d.ts +3 -3
  112. package/main.d.ts +3 -2
  113. package/main.js +9 -1
  114. package/{tabs-nav → nav-tabs}/NavTabs.js +6 -6
  115. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
  116. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  117. package/{tabs-nav → nav-tabs}/Tab.js +40 -22
  118. package/{tabs-nav → nav-tabs}/types.d.ts +1 -1
  119. package/nav-tabs/types.js +5 -0
  120. package/number-input/NumberInput.test.js +44 -8
  121. package/package.json +17 -22
  122. package/paginator/Icons.d.ts +5 -0
  123. package/paginator/Icons.js +16 -28
  124. package/paginator/Paginator.js +7 -15
  125. package/paginator/Paginator.stories.tsx +24 -0
  126. package/paginator/Paginator.test.js +45 -48
  127. package/paragraph/Paragraph.d.ts +3 -4
  128. package/paragraph/Paragraph.js +5 -5
  129. package/password-input/PasswordInput.test.js +14 -13
  130. package/progress-bar/ProgressBar.js +60 -54
  131. package/progress-bar/ProgressBar.stories.jsx +38 -3
  132. package/progress-bar/ProgressBar.test.js +68 -23
  133. package/quick-nav/QuickNav.js +11 -12
  134. package/quick-nav/QuickNav.stories.tsx +111 -19
  135. package/radio-group/Radio.d.ts +1 -1
  136. package/radio-group/Radio.js +46 -31
  137. package/radio-group/RadioGroup.js +32 -34
  138. package/radio-group/RadioGroup.stories.tsx +132 -18
  139. package/radio-group/RadioGroup.test.js +124 -97
  140. package/radio-group/types.d.ts +2 -2
  141. package/resultsetTable/Icons.d.ts +7 -0
  142. package/resultsetTable/Icons.js +51 -0
  143. package/resultsetTable/ResultsetTable.js +49 -108
  144. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  145. package/resultsetTable/ResultsetTable.test.js +41 -64
  146. package/resultsetTable/types.d.ts +1 -1
  147. package/select/Listbox.js +4 -10
  148. package/select/Option.js +11 -24
  149. package/select/Select.js +67 -61
  150. package/select/Select.stories.tsx +494 -149
  151. package/select/Select.test.js +393 -327
  152. package/select/types.d.ts +3 -5
  153. package/sidenav/Icons.d.ts +7 -0
  154. package/sidenav/Icons.js +51 -0
  155. package/sidenav/Sidenav.d.ts +2 -2
  156. package/sidenav/Sidenav.js +66 -96
  157. package/sidenav/Sidenav.stories.tsx +165 -63
  158. package/sidenav/types.d.ts +22 -19
  159. package/slider/Slider.d.ts +2 -2
  160. package/slider/Slider.js +121 -97
  161. package/slider/Slider.stories.tsx +64 -1
  162. package/slider/Slider.test.js +122 -22
  163. package/slider/types.d.ts +4 -0
  164. package/spinner/Spinner.js +17 -23
  165. package/spinner/Spinner.stories.jsx +53 -27
  166. package/spinner/Spinner.test.js +1 -1
  167. package/switch/Switch.d.ts +2 -2
  168. package/switch/Switch.js +137 -70
  169. package/switch/Switch.stories.tsx +41 -30
  170. package/switch/Switch.test.js +145 -18
  171. package/switch/types.d.ts +4 -0
  172. package/table/Table.js +3 -3
  173. package/table/Table.stories.jsx +80 -1
  174. package/table/Table.test.js +2 -2
  175. package/tabs/Tab.d.ts +4 -0
  176. package/tabs/Tab.js +132 -0
  177. package/tabs/Tabs.js +358 -108
  178. package/tabs/Tabs.stories.tsx +119 -5
  179. package/tabs/Tabs.test.js +220 -10
  180. package/tabs/types.d.ts +13 -3
  181. package/tag/Tag.js +8 -10
  182. package/tag/Tag.stories.tsx +14 -1
  183. package/tag/Tag.test.js +1 -1
  184. package/tag/types.d.ts +1 -1
  185. package/text-input/Icons.d.ts +8 -0
  186. package/text-input/Icons.js +60 -0
  187. package/text-input/Suggestion.js +40 -11
  188. package/text-input/Suggestions.d.ts +4 -0
  189. package/text-input/Suggestions.js +134 -0
  190. package/text-input/TextInput.js +199 -296
  191. package/text-input/TextInput.stories.tsx +280 -185
  192. package/text-input/TextInput.test.js +736 -725
  193. package/text-input/types.d.ts +22 -3
  194. package/textarea/Textarea.js +3 -4
  195. package/textarea/Textarea.stories.jsx +60 -1
  196. package/textarea/Textarea.test.js +2 -4
  197. package/toggle-group/ToggleGroup.d.ts +2 -2
  198. package/toggle-group/ToggleGroup.js +7 -4
  199. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  200. package/toggle-group/ToggleGroup.test.js +1 -1
  201. package/toggle-group/types.d.ts +2 -2
  202. package/typography/Typography.d.ts +2 -2
  203. package/typography/Typography.js +14 -113
  204. package/typography/Typography.stories.tsx +1 -1
  205. package/useTheme.d.ts +1234 -1
  206. package/useTheme.js +1 -1
  207. package/useTranslatedLabels.d.ts +84 -1
  208. package/utils/BaseTypography.d.ts +21 -0
  209. package/utils/BaseTypography.js +108 -0
  210. package/utils/FocusLock.d.ts +13 -0
  211. package/utils/FocusLock.js +138 -0
  212. package/wizard/Wizard.js +2 -2
  213. package/wizard/Wizard.stories.tsx +20 -0
  214. package/wizard/Wizard.test.js +1 -1
  215. package/wizard/types.d.ts +6 -7
  216. package/common/RequiredComponent.js +0 -32
  217. /package/{tabs-nav → grid}/types.js +0 -0
  218. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  219. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
@@ -5,39 +5,74 @@ import DxcHeading from "../heading/Heading";
5
5
  import DxcParagraph from "../paragraph/Paragraph";
6
6
  import Title from "../../.storybook/components/Title";
7
7
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
8
+ import { HalstackProvider } from "../HalstackContext";
8
9
 
9
10
  export default {
10
11
  title: "QuickNav",
11
12
  component: DxcQuickNav,
12
13
  };
13
14
 
15
+ const opinionatedTheme = {
16
+ quickNav: {
17
+ fontColor: "#666666",
18
+ accentColor: "#9a6bb2",
19
+ },
20
+ };
21
+
22
+ const defaultLinks = [
23
+ {
24
+ label: "Overview",
25
+ },
26
+ {
27
+ label: "Principles",
28
+ links: [{ label: "Color" }, { label: "Spacing" }, { label: "Typography" }],
29
+ },
30
+ {
31
+ label: "Components",
32
+ links: [
33
+ {
34
+ label: "Accordion",
35
+ },
36
+ {
37
+ label: "Button",
38
+ },
39
+ ],
40
+ },
41
+ ];
42
+
14
43
  const links = [
15
44
  {
16
45
  label: "Overview",
17
- id: "overview",
18
46
  links: [
19
47
  {
20
48
  label: "Introduction",
21
- id: "introduction",
49
+ },
50
+ ],
51
+ },
52
+ {
53
+ label: "Components",
54
+ links: [
55
+ {
56
+ label: "Introduction",
57
+ },
58
+ {
59
+ label: "Accordion",
22
60
  },
23
61
  ],
24
62
  },
25
63
  {
26
64
  label: "Principles very very very very very very very very long",
27
- id: "principles",
28
65
  links: [
29
- { label: "Color very very very very very very very very long", id: "color" },
30
- { label: "Spacingveryveryveryveryveryveryveryverylong", id: "spacing" },
31
- { label: "Typography", id: "typography" },
66
+ { label: "Color very very very very very very very very long" },
67
+ { label: "Spacingveryveryveryveryveryveryveryverylong" },
68
+ { label: "Typography" },
32
69
  ],
33
70
  },
34
71
  {
35
72
  label: "Componentsveryveryveryveryveryveryveryverylong",
36
- id: "components",
37
73
  links: [
38
74
  {
39
75
  label: "Accordion",
40
- id: "accordion",
41
76
  },
42
77
  ],
43
78
  },
@@ -48,19 +83,25 @@ export const Chromatic = () => (
48
83
  <ExampleContainer>
49
84
  <Title title="Default" level={4} />
50
85
  <QuickNavContainer>
51
- <DxcQuickNav links={links}></DxcQuickNav>
86
+ <DxcQuickNav links={defaultLinks} />
87
+ </QuickNavContainer>
88
+ </ExampleContainer>
89
+ <ExampleContainer>
90
+ <Title title="Text overflow" level={4} />
91
+ <QuickNavContainer>
92
+ <DxcQuickNav links={links} />
52
93
  </QuickNavContainer>
53
94
  </ExampleContainer>
54
95
  <ExampleContainer pseudoState="pseudo-hover">
55
96
  <Title title="Link hovered" level={4} />
56
97
  <QuickNavContainer>
57
- <DxcQuickNav links={links}></DxcQuickNav>
98
+ <DxcQuickNav links={links} />
58
99
  </QuickNavContainer>
59
100
  </ExampleContainer>
60
101
  <ExampleContainer pseudoState="pseudo-focus">
61
102
  <Title title="Link focus" level={4} />
62
103
  <QuickNavContainer>
63
- <DxcQuickNav links={links}></DxcQuickNav>
104
+ <DxcQuickNav links={links} />
64
105
  </QuickNavContainer>
65
106
  </ExampleContainer>
66
107
  <ExampleContainer>
@@ -87,7 +128,7 @@ export const Chromatic = () => (
87
128
  open source design system for insurance products and digital experiences. Our system provides all the
88
129
  tools and resources needed to create superior, beautiful but above all, functional user experiences.
89
130
  </DxcParagraph>
90
- <Content id="introduction">
131
+ <Content id="overview-introduction">
91
132
  <DxcHeading level={2} text="Introduction" margin={{ top: "xsmall", bottom: "xsmall" }} />
92
133
  <DxcParagraph>
93
134
  Design principles Halstack design principles are the fundamental part of DXC Technology's approach to
@@ -122,9 +163,54 @@ export const Chromatic = () => (
122
163
  </DxcParagraph>
123
164
  </Content>
124
165
  </Content>
125
- <Content id="principles">
166
+ <Content id="components">
167
+ <DxcHeading level={1} text="Components" margin={{ top: "small", bottom: "xsmall" }} />
168
+ <Content id="components-introduction">
169
+ <DxcHeading level={2} text="Introduction" margin={{ top: "xsmall", bottom: "xsmall" }} />
170
+ <DxcParagraph>
171
+ Design principles Halstack design principles are the fundamental part of DXC Technology's approach to
172
+ provide guidance for development teams in order to deliver delightful and consistent user experiences to
173
+ our customers: Balance Consistency Visual hierarchy All our components, design tokens, accessibility
174
+ guidelines, responsive design techniques, and layout proposals have been carefully curated by DXC design
175
+ and engineering teams with the objective of creating a unique visual language and ecosystem for our
176
+ applications. This is the DXC way of creating User Experiences. Open Source Halstack is an open source
177
+ design system, this means that we work towards DXC Technology bussines needs, but it is open for anyone
178
+ to use and contribute back to. We are charmed to receive external contributions to help us find bugs,
179
+ design new features, or help us improve the project documentation. If you're interested, definitely
180
+ check out our contribution guidelines.Design principles Halstack design principles are the fundamental
181
+ part of DXC Technology's approach to provide guidance for development teams in order to deliver
182
+ delightful and consistent user experiences to our customers: Balance Consistency Visual hierarchy All
183
+ our components, design tokens, accessibility guidelines, responsive design techniques, and layout
184
+ proposals have been carefully curated by DXC design and engineering teams with the objective of creating
185
+ a unique visual language and ecosystem for our applications. This is the DXC way of creating User
186
+ Experiences. Open Source Halstack is an open source design system, this means that we work towards DXC
187
+ Technology bussines needs, but it is open for anyone to use and contribute back to. We are charmed to
188
+ receive external contributions to help us find bugs, design new features, or help us improve the project
189
+ documentation. If you're interested, definitely check out our contribution guidelines.Design principles
190
+ Halstack design principles are the fundamental part of DXC Technology's approach to provide guidance for
191
+ development teams in order to deliver delightful and consistent user experiences to our customers:
192
+ Balance Consistency Visual hierarchy All our components, design tokens, accessibility guidelines,
193
+ responsive design techniques, and layout proposals have been carefully curated by DXC design and
194
+ engineering teams with the objective of creating a unique visual language and ecosystem for our
195
+ applications. This is the DXC way of creating User Experiences. Open Source Halstack is an open source
196
+ design system, this means that we work towards DXC Technology bussines needs, but it is open for anyone
197
+ to use and contribute back to. We are charmed to receive external contributions to help us find bugs,
198
+ design new features, or help us improve the project documentation. If you're interested, definitely
199
+ check out our contribution guidelines.
200
+ </DxcParagraph>
201
+ </Content>
202
+ <Content id="components-accordion">
203
+ <DxcHeading level={2} text="Accordion" margin={{ top: "xsmall", bottom: "xsmall" }} />
204
+ <DxcParagraph>
205
+ Accordions are used to group similar content and hide or show it depending on user needs or preferences.
206
+ Accordions give users more granular control over the interface and help digest content in stages, rather
207
+ than all at once.
208
+ </DxcParagraph>
209
+ </Content>
210
+ </Content>
211
+ <Content id="principles-very-very-very-very-very-very-very-very-long">
126
212
  <DxcHeading level={1} text="Principles" margin={{ top: "small", bottom: "xsmall" }} />
127
- <Content id="color">
213
+ <Content id="principles-very-very-very-very-very-very-very-very-long-color-very-very-very-very-very-very-very-very-long">
128
214
  <DxcHeading level={2} text="Color" margin={{ top: "xsmall", bottom: "xsmall" }} />
129
215
  <DxcParagraph>
130
216
  The color palette is an essential asset as a communication resource of our design system. Halstack color
@@ -161,7 +247,7 @@ export const Chromatic = () => (
161
247
  role-based color palettes and must not be used outside this context.
162
248
  </DxcParagraph>
163
249
  </Content>
164
- <Content id="spacing">
250
+ <Content id="principles-very-very-very-very-very-very-very-very-long-spacingveryveryveryveryveryveryveryverylong">
165
251
  <DxcHeading level={2} text="Spacing" margin={{ top: "xsmall", bottom: "xsmall" }} />
166
252
  <DxcParagraph>
167
253
  In the search of consistent alignment between the elements we provide a spacing scale based on a root
@@ -183,7 +269,7 @@ export const Chromatic = () => (
183
269
  easily multiplied, they provide flexible and consistent, yet distinct enough, steps between them.
184
270
  </DxcParagraph>
185
271
  </Content>
186
- <Content id="typography">
272
+ <Content id="principles-very-very-very-very-very-very-very-very-long-typography">
187
273
  <DxcHeading level={2} text="Typography" margin={{ top: "xsmall", bottom: "xsmall" }} />
188
274
  <DxcParagraph>
189
275
  Our selected typography helps in structuring our user's experience based on the visual impact that it
@@ -220,9 +306,9 @@ export const Chromatic = () => (
220
306
  </DxcParagraph>
221
307
  </Content>
222
308
  </Content>
223
- <Content id="components">
309
+ <Content id="componentsveryveryveryveryveryveryveryverylong">
224
310
  <DxcHeading level={1} text="Components" margin={{ top: "small", bottom: "xsmall" }} />
225
- <Content id="accordion">
311
+ <Content id="componentsveryveryveryveryveryveryveryverylong-accordion">
226
312
  <DxcHeading level={2} text="Accordion" margin={{ top: "xsmall", bottom: "xsmall" }} />
227
313
  <DxcParagraph>
228
314
  Accordions are used to group similar content and hide or show it depending on user needs or preferences.
@@ -233,10 +319,16 @@ export const Chromatic = () => (
233
319
  </Content>
234
320
  </ContentContainer>
235
321
  <QuickNavContainer>
236
- <DxcQuickNav title="Sections" links={links}></DxcQuickNav>
322
+ <DxcQuickNav title="Sections" links={links} />
237
323
  </QuickNavContainer>
238
324
  </Container>
239
325
  </ExampleContainer>
326
+ <Title title="Opinionated theme" level={2} />
327
+ <ExampleContainer>
328
+ <HalstackProvider theme={opinionatedTheme}>
329
+ <DxcQuickNav links={defaultLinks} />
330
+ </HalstackProvider>
331
+ </ExampleContainer>
240
332
  </>
241
333
  );
242
334
 
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import { RadioProps } from "./types";
3
- declare const _default: React.MemoExoticComponent<({ option, currentValue, onClick, error, disabled, focused, readonly, tabIndex, }: RadioProps) => JSX.Element>;
3
+ declare const _default: React.MemoExoticComponent<({ label, checked, onClick, error, disabled, focused, readonly, tabIndex, }: RadioProps) => JSX.Element>;
4
4
  export default _default;
@@ -21,17 +21,17 @@ var _uuid = require("uuid");
21
21
 
22
22
  var _useTheme = _interopRequireDefault(require("../useTheme"));
23
23
 
24
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
24
+ var _Flex = _interopRequireDefault(require("../flex/Flex"));
25
+
26
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
25
27
 
26
28
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
29
 
28
30
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
31
 
30
32
  var DxcRadio = function DxcRadio(_ref) {
31
- var _option$disabled;
32
-
33
- var option = _ref.option,
34
- currentValue = _ref.currentValue,
33
+ var label = _ref.label,
34
+ checked = _ref.checked,
35
35
  onClick = _ref.onClick,
36
36
  error = _ref.error,
37
37
  disabled = _ref.disabled,
@@ -50,7 +50,7 @@ var DxcRadio = function DxcRadio(_ref) {
50
50
  var _ref$current;
51
51
 
52
52
  onClick();
53
- focused && document.activeElement !== (ref === null || ref === void 0 ? void 0 : ref.current) && (ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus());
53
+ document.activeElement !== (ref === null || ref === void 0 ? void 0 : ref.current) && (ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus());
54
54
  };
55
55
 
56
56
  var _useState3 = (0, _react.useState)(true),
@@ -58,7 +58,7 @@ var DxcRadio = function DxcRadio(_ref) {
58
58
  firstUpdate = _useState4[0],
59
59
  setFirstUpdate = _useState4[1];
60
60
 
61
- (0, _react.useLayoutEffect)(function () {
61
+ (0, _react.useEffect)(function () {
62
62
  var _ref$current2;
63
63
 
64
64
  // Don't apply in the first render
@@ -71,56 +71,59 @@ var DxcRadio = function DxcRadio(_ref) {
71
71
  }, [focused]);
72
72
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
73
73
  theme: colorsTheme.radioGroup
74
- }, /*#__PURE__*/_react["default"].createElement(RadioMainContainer, null, /*#__PURE__*/_react["default"].createElement(RadioContainer, {
74
+ }, /*#__PURE__*/_react["default"].createElement(_Flex["default"], null, /*#__PURE__*/_react["default"].createElement(RadioContainer, {
75
75
  error: error,
76
76
  disabled: disabled,
77
77
  readonly: readonly,
78
- onMouseDown: function onMouseDown(event) {
79
- // Prevents div's onClick from stealing the radio input's focus
80
- event.preventDefault();
81
- },
82
- onClick: handleOnClick
78
+ onClick: disabled ? undefined : handleOnClick
83
79
  }, /*#__PURE__*/_react["default"].createElement(RadioInputContainer, null, /*#__PURE__*/_react["default"].createElement(RadioInput, {
84
80
  error: error,
85
81
  disabled: disabled,
86
82
  readonly: readonly,
87
83
  role: "radio",
88
- "aria-checked": option.value === currentValue,
89
- "aria-disabled": (_option$disabled = option.disabled) !== null && _option$disabled !== void 0 ? _option$disabled : false,
84
+ "aria-checked": checked,
85
+ "aria-disabled": disabled,
90
86
  "aria-labelledby": radioLabelId,
91
87
  tabIndex: disabled ? -1 : focused ? tabIndex : -1,
92
88
  ref: ref
93
- }, option.value === currentValue && /*#__PURE__*/_react["default"].createElement(Dot, {
89
+ }, checked && /*#__PURE__*/_react["default"].createElement(Dot, {
94
90
  disabled: disabled,
95
91
  readonly: readonly,
96
92
  error: error
97
93
  }))), /*#__PURE__*/_react["default"].createElement(Label, {
98
94
  id: radioLabelId,
99
95
  disabled: disabled
100
- }, option.label))));
96
+ }, label))));
101
97
  };
102
98
 
103
- var RadioMainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"])));
99
+ var getRadioInputStateColor = function getRadioInputStateColor(props, state) {
100
+ switch (state) {
101
+ case "enabled":
102
+ return props.disabled ? props.theme.disabledRadioInputColor : props.error ? props.theme.errorRadioInputColor : props.readonly ? props.theme.readonlyRadioInputColor : props.theme.radioInputColor;
104
103
 
105
- var RadioContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n\n ", "\n"])), function (props) {
106
- return props.disabled ? "not-allowed" : props.readonly ? "default" : "pointer";
107
- }, function (props) {
108
- return !props.disabled ? "\n &:hover {\n & > div > div { \n border-color: ".concat(props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor, ";\n & > span {\n background-color: ").concat(props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor, ";\n }\n };\n }\n &:active {\n & > div > div {\n border-color: ").concat(props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor, ";\n & > span {\n background-color: ").concat(props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor, ";\n }\n }\n }\n ") : "pointer-events: none;";
109
- });
104
+ case "hover":
105
+ return props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor;
110
106
 
111
- var RadioInputContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n"])));
107
+ case "active":
108
+ return props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor;
109
+ }
110
+ };
112
111
 
113
- var RadioInput = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 18px;\n height: 18px;\n border: 2px solid\n ", ";\n border-radius: 50%;\n\n ", "\n"])), function (props) {
114
- if (props.disabled) return props.theme.disabledRadioInputColor;else if (props.error) return props.theme.errorRadioInputColor;else if (props.readonly) return props.theme.readonlyRadioInputColor;else return props.theme.radioInputColor;
112
+ var RadioInputContainer = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n"])));
113
+
114
+ var RadioInput = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n border: 2px solid ", ";\n border-radius: 50%;\n\n &:focus {\n outline: 2px solid ", ";\n outline-offset: 1px;\n }\n ", "\n"])), function (props) {
115
+ return getRadioInputStateColor(props, "enabled");
116
+ }, function (props) {
117
+ return props.theme.focusBorderColor;
115
118
  }, function (props) {
116
- return !props.disabled ? "&:focus {\n outline: 2px solid ".concat(props.theme.focusBorderColor, ";\n outline-offset: 1px;\n }\n &:focus-visible {\n outline: 2px solid ").concat(props.theme.focusBorderColor, ";\n outline-offset: 1px;\n }\n ") : "\n :focus-visible {\n outline: none;\n }\n ";
119
+ return props.disabled && "pointer-events: none;";
117
120
  });
118
121
 
119
- var Dot = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background-color: ", ";\n"])), function (props) {
120
- if (props.disabled) return props.theme.disabledRadioInputColor;else if (props.error) return props.theme.errorRadioInputColor;else if (props.readonly) return props.theme.readonlyRadioInputColor;else return props.theme.radioInputColor;
122
+ var Dot = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background-color: ", ";\n"])), function (props) {
123
+ return getRadioInputStateColor(props, "enabled");
121
124
  });
122
125
 
123
- var Label = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
126
+ var Label = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
124
127
  return props.theme.radioInputLabelMargin;
125
128
  }, function (props) {
126
129
  return props.theme.fontFamily;
@@ -133,7 +136,19 @@ var Label = _styledComponents["default"].span(_templateObject6 || (_templateObje
133
136
  }, function (props) {
134
137
  return props.theme.radioInputLabelLineHeight;
135
138
  }, function (props) {
136
- return props.disabled ? "color: ".concat(props.theme.disabledRadioInputLabelFontColor, "; pointer-events: none;") : "color: ".concat(props.theme.radioInputLabelFontColor);
139
+ return props.disabled ? "color: ".concat(props.theme.disabledRadioInputLabelFontColor, ";") : "color: ".concat(props.theme.radioInputLabelFontColor);
140
+ });
141
+
142
+ var RadioContainer = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n\n &:hover {\n ", " {\n border-color: ", ";\n }\n ", " {\n background-color: ", ";\n }\n }\n &:active {\n ", " {\n border-color: ", ";\n }\n ", " {\n background-color: ", ";\n }\n }\n"])), function (props) {
143
+ return props.disabled ? "not-allowed" : props.readonly ? "default" : "pointer";
144
+ }, RadioInput, function (props) {
145
+ return !props.disabled && getRadioInputStateColor(props, "hover");
146
+ }, Dot, function (props) {
147
+ return !props.disabled && getRadioInputStateColor(props, "hover");
148
+ }, RadioInput, function (props) {
149
+ return !props.disabled && getRadioInputStateColor(props, "active");
150
+ }, Dot, function (props) {
151
+ return !props.disabled && getRadioInputStateColor(props, "active");
137
152
  });
138
153
 
139
154
  var _default = /*#__PURE__*/_react["default"].memo(DxcRadio);
@@ -41,6 +41,8 @@ var getInitialFocusIndex = function getInitialFocusIndex(innerOptions, value) {
41
41
  };
42
42
 
43
43
  var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
44
+ var _ref2;
45
+
44
46
  var label = _ref.label,
45
47
  name = _ref.name,
46
48
  helperText = _ref.helperText,
@@ -81,14 +83,13 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
81
83
 
82
84
  var colorsTheme = (0, _useTheme["default"])();
83
85
  var translatedLabels = (0, _useTranslatedLabels["default"])();
84
- var optionalItem = {
85
- label: optionalItemLabel || translatedLabels.radioGroup.optionalItemLabelDefault,
86
- value: "",
87
- disabled: disabled
88
- };
89
86
  var innerOptions = (0, _react.useMemo)(function () {
90
- return optional ? [].concat((0, _toConsumableArray2["default"])(options), [optionalItem]) : options;
91
- }, [optional, options]);
87
+ return optional ? [].concat((0, _toConsumableArray2["default"])(options), [{
88
+ label: optionalItemLabel !== null && optionalItemLabel !== void 0 ? optionalItemLabel : translatedLabels.radioGroup.optionalItemLabelDefault,
89
+ value: "",
90
+ disabled: disabled
91
+ }]) : options;
92
+ }, [optional, options, optionalItemLabel, translatedLabels]);
92
93
 
93
94
  var _useState7 = (0, _react.useState)(getInitialFocusIndex(innerOptions, value !== null && value !== void 0 ? value : innerValue)),
94
95
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
@@ -102,11 +103,11 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
102
103
  value !== null && value !== void 0 ? value : setInnerValue(newValue);
103
104
  onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
104
105
  }
105
- }, [value, innerValue, setInnerValue, onChange]);
106
+ }, [value, innerValue, onChange]);
106
107
 
107
- var handleOnBlur = function handleOnBlur(e) {
108
+ var handleOnBlur = function handleOnBlur(event) {
108
109
  // If the radio group loses the focus to an element not contained inside it...
109
- if (!e.currentTarget.contains(e.relatedTarget)) {
110
+ if (!event.currentTarget.contains(event.relatedTarget)) {
110
111
  setFirstTimeFocus(true);
111
112
  var currentValue = value !== null && value !== void 0 ? value : innerValue;
112
113
  !optional && !Boolean(currentValue) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
@@ -149,27 +150,24 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
149
150
  };
150
151
 
151
152
  var handleOnKeyDown = function handleOnKeyDown(event) {
152
- switch (event.keyCode) {
153
- case 37: // arrow left
154
-
155
- case 38:
156
- // arrow up
153
+ switch (event.key) {
154
+ case "Left":
155
+ case "ArrowLeft":
156
+ case "Up":
157
+ case "ArrowUp":
157
158
  event.preventDefault();
158
159
  setPreviousRadioChecked();
159
160
  break;
160
161
 
161
- case 39: // arrow right
162
-
163
- case 40:
164
- // arrow down
162
+ case "Right":
163
+ case "ArrowRight":
164
+ case "Down":
165
+ case "ArrowDown":
165
166
  event.preventDefault();
166
167
  setNextRadioChecked();
167
168
  break;
168
169
 
169
- case 13: // enter
170
-
171
- case 32:
172
- // space
170
+ case " ":
173
171
  event.preventDefault();
174
172
  handleOnChange(innerOptions[currentFocusIndex].value);
175
173
  break;
@@ -184,7 +182,7 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
184
182
  id: radioGroupLabelId,
185
183
  helperText: helperText,
186
184
  disabled: disabled
187
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
185
+ }, label, optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, " ".concat(translatedLabels.formFields.optionalLabel))), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
188
186
  disabled: disabled
189
187
  }, helperText), /*#__PURE__*/_react["default"].createElement(RadioGroup, {
190
188
  onBlur: handleOnBlur,
@@ -194,20 +192,21 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
194
192
  role: "radiogroup",
195
193
  "aria-disabled": disabled,
196
194
  "aria-labelledby": radioGroupLabelId,
197
- "aria-invalid": error ? "true" : "false",
195
+ "aria-invalid": error ? true : false,
198
196
  "aria-errormessage": error ? errorId : undefined,
199
197
  "aria-required": !disabled && !readonly && !optional,
200
198
  "aria-readonly": readonly,
201
199
  "aria-orientation": stacking === "column" ? "vertical" : "horizontal"
202
200
  }, /*#__PURE__*/_react["default"].createElement(ValueInput, {
203
201
  name: name,
204
- value: value !== null && value !== void 0 ? value : innerValue,
205
- readOnly: true,
206
- "aria-hidden": "true"
202
+ disabled: disabled,
203
+ value: (_ref2 = value !== null && value !== void 0 ? value : innerValue) !== null && _ref2 !== void 0 ? _ref2 : "",
204
+ readOnly: true
207
205
  }), innerOptions.map(function (option, index) {
208
206
  return /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
209
- option: option,
210
- currentValue: value !== null && value !== void 0 ? value : innerValue,
207
+ key: "radio-".concat(index),
208
+ label: option.label,
209
+ checked: (value !== null && value !== void 0 ? value : innerValue) === option.value,
211
210
  onClick: function onClick() {
212
211
  handleOnChange(option.value);
213
212
  setCurrentFocusIndex(index);
@@ -216,8 +215,7 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
216
215
  disabled: option.disabled || disabled,
217
216
  focused: currentFocusIndex === index,
218
217
  readonly: readonly,
219
- tabIndex: tabIndex,
220
- key: "radio-".concat(index)
218
+ tabIndex: tabIndex
221
219
  });
222
220
  })), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
223
221
  id: errorId,
@@ -225,7 +223,7 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
225
223
  }, error)));
226
224
  });
227
225
 
228
- var RadioGroupContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: column;\n box-sizing: border-box;\n"])));
226
+ var RadioGroupContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: inline-flex;\n flex-direction: column;\n"])));
229
227
 
230
228
  var Label = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
231
229
  return props.disabled ? props.theme.disabledLabelFontColor : props.theme.labelFontColor;
@@ -263,7 +261,7 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
263
261
  return props.theme.groupLabelMargin;
264
262
  });
265
263
 
266
- var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n\n row-gap: ", ";\n column-gap: ", ";\n"])), function (props) {
264
+ var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n row-gap: ", ";\n column-gap: ", ";\n"])), function (props) {
267
265
  return props.stacking;
268
266
  }, function (props) {
269
267
  return props.theme.groupVerticalGutter;