@dxc-technology/halstack-react 0.0.0-5aa300b → 0.0.0-5b43b04

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 (59) hide show
  1. package/HalstackContext.js +86 -45
  2. package/accordion/Accordion.stories.tsx +51 -2
  3. package/alert/Alert.stories.tsx +28 -0
  4. package/box/Box.stories.tsx +15 -0
  5. package/button/Button.stories.tsx +100 -9
  6. package/checkbox/Checkbox.stories.tsx +52 -0
  7. package/chip/Chip.js +8 -2
  8. package/chip/Chip.stories.tsx +55 -0
  9. package/common/variables.js +163 -137
  10. package/date-input/Calendar.d.ts +1 -1
  11. package/date-input/Calendar.js +43 -43
  12. package/date-input/DateInput.js +74 -32
  13. package/date-input/DateInput.stories.tsx +183 -30
  14. package/date-input/DateInput.test.js +120 -37
  15. package/date-input/DatePicker.js +38 -52
  16. package/date-input/Icons.d.ts +6 -0
  17. package/date-input/Icons.js +75 -0
  18. package/date-input/YearPicker.d.ts +1 -1
  19. package/date-input/YearPicker.js +23 -12
  20. package/date-input/types.d.ts +6 -8
  21. package/dialog/Dialog.js +1 -3
  22. package/dialog/Dialog.stories.tsx +42 -20
  23. package/dropdown/Dropdown.js +0 -1
  24. package/dropdown/Dropdown.stories.tsx +200 -82
  25. package/dropdown/DropdownMenu.js +8 -18
  26. package/dropdown/DropdownMenuItem.js +4 -15
  27. package/file-input/FileInput.stories.tsx +85 -2
  28. package/footer/Footer.stories.tsx +91 -0
  29. package/header/Header.js +18 -20
  30. package/header/Header.stories.tsx +149 -6
  31. package/link/Link.stories.tsx +60 -0
  32. package/package.json +1 -1
  33. package/paginator/Paginator.stories.tsx +24 -0
  34. package/paginator/Paginator.test.js +17 -10
  35. package/progress-bar/ProgressBar.js +4 -4
  36. package/progress-bar/ProgressBar.stories.jsx +35 -2
  37. package/quick-nav/QuickNav.stories.tsx +14 -0
  38. package/radio-group/RadioGroup.stories.tsx +131 -18
  39. package/resultsetTable/ResultsetTable.test.js +17 -22
  40. package/select/Listbox.d.ts +1 -1
  41. package/select/Listbox.js +5 -34
  42. package/select/Option.js +3 -14
  43. package/select/Select.js +43 -24
  44. package/select/Select.stories.tsx +475 -187
  45. package/select/Select.test.js +17 -22
  46. package/select/types.d.ts +2 -2
  47. package/sidenav/Sidenav.stories.tsx +93 -0
  48. package/slider/Slider.stories.tsx +57 -0
  49. package/spinner/Spinner.stories.jsx +27 -1
  50. package/switch/Switch.stories.tsx +33 -0
  51. package/table/Table.stories.jsx +80 -1
  52. package/tabs/Tabs.stories.tsx +38 -0
  53. package/tabs-nav/NavTabs.js +1 -1
  54. package/tabs-nav/Tab.js +30 -9
  55. package/tag/Tag.stories.tsx +14 -1
  56. package/text-input/TextInput.stories.tsx +69 -0
  57. package/textarea/Textarea.stories.jsx +60 -1
  58. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  59. package/wizard/Wizard.stories.tsx +20 -0
@@ -1,10 +1,11 @@
1
1
  import React from "react";
2
+ import { BackgroundColorProvider } from "../BackgroundColorContext";
2
3
  import DxcButton from "./Button";
3
4
  import DxcFlex from "./../flex/Flex";
4
- import { BackgroundColorProvider } from "../BackgroundColorContext";
5
5
  import Title from "../../.storybook/components/Title";
6
6
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
7
7
  import DarkContainer from "../../.storybook/components/DarkSection";
8
+ import { HalstackProvider } from "../HalstackContext";
8
9
 
9
10
  export default {
10
11
  title: "Button",
@@ -48,6 +49,14 @@ const smallIcon = (
48
49
  </svg>
49
50
  );
50
51
 
52
+ const opinionatedTheme = {
53
+ button: {
54
+ baseColor: "#5f249f",
55
+ primaryFontColor: "#ffffff",
56
+ secondaryHoverFontColor: "#ffffff",
57
+ },
58
+ };
59
+
51
60
  export const Chromatic = () => (
52
61
  <>
53
62
  <Title title="Primary" theme="light" level={2} />
@@ -69,7 +78,7 @@ export const Chromatic = () => (
69
78
  </ExampleContainer>
70
79
  <ExampleContainer>
71
80
  <Title title="Disabled" theme="light" level={4} />
72
- <DxcButton label="Primary disabled" disabled />
81
+ <DxcButton label="Primary disabled" disabled icon={iconSVG} />
73
82
  </ExampleContainer>
74
83
  <ExampleContainer>
75
84
  <Title title="With left icon" theme="light" level={4} />
@@ -114,7 +123,7 @@ export const Chromatic = () => (
114
123
  </ExampleContainer>
115
124
  <ExampleContainer>
116
125
  <Title title="Disabled" theme="light" level={4} />
117
- <DxcButton mode="secondary" disabled label="Secondary disabled" />
126
+ <DxcButton mode="secondary" disabled label="Secondary disabled" icon={iconSVG} />
118
127
  </ExampleContainer>
119
128
  <ExampleContainer>
120
129
  <Title title="With icon" theme="light" level={4} />
@@ -122,7 +131,10 @@ export const Chromatic = () => (
122
131
  </ExampleContainer>
123
132
  <ExampleContainer>
124
133
  <Title title="Only icon (image)" theme="light" level={4} />
125
- <DxcButton mode="secondary" icon="https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png" />
134
+ <DxcButton
135
+ mode="secondary"
136
+ icon="https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png"
137
+ />
126
138
  </ExampleContainer>
127
139
  <Title title="Text" theme="light" level={2} />
128
140
  <ExampleContainer>
@@ -143,7 +155,7 @@ export const Chromatic = () => (
143
155
  </ExampleContainer>
144
156
  <ExampleContainer>
145
157
  <Title title="Disabled" theme="light" level={4} />
146
- <DxcButton mode="text" label="Text disabled" disabled />
158
+ <DxcButton mode="text" label="Text disabled" disabled icon={iconSVG} />
147
159
  </ExampleContainer>
148
160
  <ExampleContainer>
149
161
  <Title title="With icon" theme="light" level={4} />
@@ -151,7 +163,10 @@ export const Chromatic = () => (
151
163
  </ExampleContainer>
152
164
  <ExampleContainer>
153
165
  <Title title="Only icon (image)" theme="light" level={4} />
154
- <DxcButton mode="text" icon="https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png" />
166
+ <DxcButton
167
+ mode="text"
168
+ icon="https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png"
169
+ />
155
170
  </ExampleContainer>
156
171
  <BackgroundColorProvider color="#333333">
157
172
  <DarkContainer>
@@ -174,7 +189,7 @@ export const Chromatic = () => (
174
189
  </ExampleContainer>
175
190
  <ExampleContainer>
176
191
  <Title title="Disabled" theme="dark" level={4} />
177
- <DxcButton label="Primary disabled" disabled />
192
+ <DxcButton label="Primary disabled" disabled icon={iconSVG} />
178
193
  </ExampleContainer>
179
194
  <ExampleContainer>
180
195
  <Title title="With icon" theme="dark" level={4} />
@@ -199,7 +214,7 @@ export const Chromatic = () => (
199
214
  </ExampleContainer>
200
215
  <ExampleContainer>
201
216
  <Title title="Disabled" theme="dark" level={4} />
202
- <DxcButton mode="secondary" disabled label="Secondary disabled" />
217
+ <DxcButton mode="secondary" disabled label="Secondary disabled" icon={iconSVG} />
203
218
  </ExampleContainer>
204
219
  <ExampleContainer>
205
220
  <Title title="With icon" theme="dark" level={4} />
@@ -224,7 +239,7 @@ export const Chromatic = () => (
224
239
  </ExampleContainer>
225
240
  <ExampleContainer>
226
241
  <Title title="Disabled" theme="dark" level={4} />
227
- <DxcButton mode="text" label="Text disabled" disabled />
242
+ <DxcButton mode="text" label="Text disabled" disabled icon={iconSVG} />
228
243
  </ExampleContainer>
229
244
  <ExampleContainer>
230
245
  <Title title="With icon" theme="dark" level={4} />
@@ -330,5 +345,81 @@ export const Chromatic = () => (
330
345
  <DxcButton label="Button" />
331
346
  </DxcFlex>
332
347
  </ExampleContainer>
348
+ <Title title="Opinionated theme" theme="light" level={2} />
349
+ <Title title="Primary" theme="light" level={3} />
350
+ <ExampleContainer>
351
+ <Title title="Enabled" theme="light" level={4} />
352
+ <HalstackProvider theme={opinionatedTheme}>
353
+ <DxcButton label="Primary" icon={iconSVG} />
354
+ </HalstackProvider>
355
+ </ExampleContainer>
356
+ <ExampleContainer pseudoState="pseudo-hover">
357
+ <Title title="Hovered" theme="light" level={4} />
358
+ <DxcButton label="Primary hovered" icon={iconSVG} />
359
+ </ExampleContainer>
360
+ <ExampleContainer pseudoState="pseudo-focus">
361
+ <Title title="Focused" theme="light" level={4} />
362
+ <DxcButton label="Primary focused" icon={iconSVG} />
363
+ </ExampleContainer>
364
+ <ExampleContainer pseudoState="pseudo-active">
365
+ <Title title="Actived" theme="light" level={4} />
366
+ <DxcButton label="Primary actived" icon={iconSVG} />
367
+ </ExampleContainer>
368
+ <ExampleContainer>
369
+ <Title title="Disabled" theme="light" level={4} />
370
+ <HalstackProvider theme={opinionatedTheme}>
371
+ <DxcButton label="Primary" icon={iconSVG} disabled />
372
+ </HalstackProvider>
373
+ </ExampleContainer>
374
+ <Title title="Secondary" theme="light" level={3} />
375
+ <ExampleContainer>
376
+ <Title title="Enabled" theme="light" level={4} />
377
+ <HalstackProvider theme={opinionatedTheme}>
378
+ <DxcButton mode="secondary" label="Secondary" icon={iconSVG} />
379
+ </HalstackProvider>
380
+ </ExampleContainer>
381
+ <ExampleContainer pseudoState="pseudo-hover">
382
+ <Title title="Hovered" theme="light" level={4} />
383
+ <DxcButton mode="secondary" label="Secondary hovered" icon={iconSVG} />
384
+ </ExampleContainer>
385
+ <ExampleContainer pseudoState="pseudo-focus">
386
+ <Title title="Focused" theme="light" level={4} />
387
+ <DxcButton mode="secondary" label="Secondary focused" icon={iconSVG} />
388
+ </ExampleContainer>
389
+ <ExampleContainer pseudoState="pseudo-active">
390
+ <Title title="Actived" theme="light" level={4} />
391
+ <DxcButton mode="secondary" label="Secondary actived" icon={iconSVG} />
392
+ </ExampleContainer>
393
+ <ExampleContainer>
394
+ <Title title="Disabled" theme="light" level={4} />
395
+ <HalstackProvider theme={opinionatedTheme}>
396
+ <DxcButton mode="secondary" label="Secondary" icon={iconSVG} disabled />
397
+ </HalstackProvider>
398
+ </ExampleContainer>
399
+ <Title title="Text" theme="light" level={3} />
400
+ <ExampleContainer>
401
+ <Title title="Enabled" theme="light" level={4} />
402
+ <HalstackProvider theme={opinionatedTheme}>
403
+ <DxcButton mode="text" label="Text" icon={iconSVG} />
404
+ </HalstackProvider>
405
+ </ExampleContainer>
406
+ <ExampleContainer pseudoState="pseudo-hover">
407
+ <Title title="Hovered" theme="light" level={4} />
408
+ <DxcButton mode="text" label="Text hovered" icon={iconSVG} />
409
+ </ExampleContainer>
410
+ <ExampleContainer pseudoState="pseudo-focus">
411
+ <Title title="Focused" theme="light" level={4} />
412
+ <DxcButton mode="text" label="Text focused" icon={iconSVG} />
413
+ </ExampleContainer>
414
+ <ExampleContainer pseudoState="pseudo-active">
415
+ <Title title="Actived" theme="light" level={4} />
416
+ <DxcButton mode="text" label="Text actived" icon={iconSVG} />
417
+ </ExampleContainer>
418
+ <ExampleContainer>
419
+ <Title title="Disabled" theme="light" level={4} />
420
+ <HalstackProvider theme={opinionatedTheme}>
421
+ <DxcButton mode="text" label="Text disabled" icon={iconSVG} disabled />
422
+ </HalstackProvider>
423
+ </ExampleContainer>
333
424
  </>
334
425
  );
@@ -5,12 +5,21 @@ import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
6
  import DarkContainer from "../../.storybook/components/DarkSection";
7
7
  import styled from "styled-components";
8
+ import { HalstackProvider } from "../HalstackContext";
8
9
 
9
10
  export default {
10
11
  title: "Checkbox",
11
12
  component: DxcCheckbox,
12
13
  };
13
14
 
15
+ const opinionatedTheme = {
16
+ checkbox: {
17
+ baseColor: "#0067b3",
18
+ checkColor: "#ffffff",
19
+ fontColor: "#000000",
20
+ },
21
+ };
22
+
14
23
  const Checkbox = () => (
15
24
  <>
16
25
  <ExampleContainer>
@@ -178,6 +187,49 @@ const Checkbox = () => (
178
187
  <DxcCheckbox label="Very long label to check its overflowing" labelPosition="after" />
179
188
  </SmallContainer>
180
189
  </ExampleContainer>
190
+ <Title title="Opinionated theme" theme="light" level={2} />
191
+ <ExampleContainer>
192
+ <Title title="Default" theme="light" level={4} />
193
+ <HalstackProvider theme={opinionatedTheme}>
194
+ <DxcCheckbox label="Checkbox" />
195
+ </HalstackProvider>
196
+ </ExampleContainer>
197
+ <ExampleContainer>
198
+ <Title title="Checked" theme="light" level={4} />
199
+ <HalstackProvider theme={opinionatedTheme}>
200
+ <DxcCheckbox label="Checkbox" defaultChecked />
201
+ </HalstackProvider>
202
+ </ExampleContainer>
203
+ <ExampleContainer>
204
+ <Title title="Disabled" theme="light" level={4} />
205
+ <HalstackProvider theme={opinionatedTheme}>
206
+ <DxcCheckbox label="Checkbox" disabled />
207
+ </HalstackProvider>
208
+ </ExampleContainer>
209
+ <ExampleContainer>
210
+ <Title title="Disabled checked" theme="light" level={4} />
211
+ <HalstackProvider theme={opinionatedTheme}>
212
+ <DxcCheckbox label="Checkbox" defaultChecked disabled />
213
+ </HalstackProvider>
214
+ </ExampleContainer>
215
+ <ExampleContainer pseudoState="pseudo-focus">
216
+ <Title title="Focused" theme="light" level={4} />
217
+ <HalstackProvider theme={opinionatedTheme}>
218
+ <DxcCheckbox label="Focused" />
219
+ </HalstackProvider>
220
+ </ExampleContainer>
221
+ <ExampleContainer pseudoState="pseudo-hover">
222
+ <Title title="Hovered" theme="light" level={4} />
223
+ <HalstackProvider theme={opinionatedTheme}>
224
+ <DxcCheckbox label="Hovered" />
225
+ </HalstackProvider>
226
+ </ExampleContainer>
227
+ <ExampleContainer pseudoState="pseudo-hover">
228
+ <Title title="Hovered and checked" theme="light" level={4} />
229
+ <HalstackProvider theme={opinionatedTheme}>
230
+ <DxcCheckbox label="Hovered" defaultChecked />
231
+ </HalstackProvider>
232
+ </ExampleContainer>
181
233
  </>
182
234
  );
183
235
 
package/chip/Chip.js CHANGED
@@ -129,16 +129,22 @@ var ChipTextContainer = _styledComponents["default"].span(_templateObject2 || (_
129
129
  return disabled && "not-allowed" || "default";
130
130
  });
131
131
 
132
- var IconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n ", "\n color: ", ";\n ", "\n\n &:focus {\n outline-color: ", ";\n outline-width: 2px;\n ", "\n }\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
132
+ var IconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n ", "\n color: ", ";\n ", "\n\n &:hover {\n color: ", ";\n }\n &:focus {\n outline-color: ", ";\n outline-width: ", ";\n ", "\n }\n &:active {\n color: ", ";\n }\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
133
133
  return props.prefixIcon ? "margin-right: ".concat((props.label || props.suffixIcon) && props.theme.iconSpacing || props.prefixIcon && "0", ";") : "margin-left: ".concat((props.label || props.prefixIcon) && props.theme.iconSpacing || props.prefixIcon && "0", ";");
134
134
  }, function (props) {
135
135
  return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
136
136
  }, function (props) {
137
137
  return getCursor(props.interactuable, props.disabled);
138
138
  }, function (props) {
139
- return props.theme.focusColor;
139
+ return !props.disabled && props.theme.hoverIconColor;
140
+ }, function (props) {
141
+ return !props.disabled && props.theme.focusColor;
142
+ }, function (props) {
143
+ return !props.disabled && props.theme.focusBorderThickness;
140
144
  }, function (props) {
141
145
  return props.disabled && "outline: none;";
146
+ }, function (props) {
147
+ return !props.disabled && props.theme.activeIconColor;
142
148
  }, function (props) {
143
149
  return props.theme.iconSize;
144
150
  }, function (props) {
@@ -3,6 +3,7 @@ import { userEvent, within } from "@storybook/testing-library";
3
3
  import DxcChip from "./Chip";
4
4
  import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
+ import { HalstackProvider } from "../HalstackContext";
6
7
 
7
8
  export default {
8
9
  title: "Chip",
@@ -39,6 +40,14 @@ const smallIconSVG = (
39
40
  </svg>
40
41
  );
41
42
 
43
+ const opinionatedTheme = {
44
+ chip: {
45
+ baseColor: "#e6e6e6",
46
+ fontColor: "#000000",
47
+ iconColor: "#4d4d4d",
48
+ },
49
+ };
50
+
42
51
  export const Chromatic = () => (
43
52
  <>
44
53
  <ExampleContainer>
@@ -125,6 +134,52 @@ export const Chromatic = () => (
125
134
  <Title title="Xxlarge margin" theme="light" level={4} />
126
135
  <DxcChip label="xxlarge" margin="xxlarge" />
127
136
  </ExampleContainer>
137
+ <Title title="Opinionated theme" theme="light" level={2} />
138
+ <ExampleContainer>
139
+ <Title title="Chip with prefix and suffix" theme="light" level={4} />
140
+ <HalstackProvider theme={opinionatedTheme}>
141
+ <DxcChip
142
+ label="Chip"
143
+ prefixIcon={iconSVG}
144
+ suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
145
+ />
146
+ </HalstackProvider>
147
+ </ExampleContainer>
148
+ <ExampleContainer>
149
+ <Title title="Chip with prefix and suffix" theme="light" level={4} />
150
+ <HalstackProvider theme={opinionatedTheme}>
151
+ <DxcChip
152
+ label="Chip"
153
+ disabled
154
+ prefixIcon={iconSVG}
155
+ suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
156
+ />
157
+ </HalstackProvider>
158
+ </ExampleContainer>
159
+ <ExampleContainer pseudoState="pseudo-hover">
160
+ <Title title="Hovered" theme="light" level={4} />
161
+ <HalstackProvider theme={opinionatedTheme}>
162
+ <DxcChip
163
+ label="Chip"
164
+ prefixIcon={iconSVG}
165
+ suffixIcon={iconSVG}
166
+ onClickPrefix={() => {}}
167
+ onClickSuffix={() => {}}
168
+ />
169
+ </HalstackProvider>
170
+ </ExampleContainer>
171
+ <ExampleContainer pseudoState="pseudo-active">
172
+ <Title title="Actived" theme="light" level={4} />
173
+ <HalstackProvider theme={opinionatedTheme}>
174
+ <DxcChip
175
+ label="Chip"
176
+ prefixIcon={iconSVG}
177
+ suffixIcon={iconSVG}
178
+ onClickPrefix={() => {}}
179
+ onClickSuffix={() => {}}
180
+ />
181
+ </HalstackProvider>
182
+ </ExampleContainer>
128
183
  </>
129
184
  );
130
185
  const ChipPrefixFocused = () => (