@dxc-technology/halstack-react 0.0.0-2b773b3 → 0.0.0-2bca710

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 (290) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1348 -0
  4. package/HalstackContext.js +335 -0
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +108 -134
  8. package/accordion/Accordion.stories.tsx +108 -118
  9. package/accordion/Accordion.test.js +10 -11
  10. package/accordion/types.d.ts +1 -12
  11. package/accordion-group/AccordionGroup.d.ts +4 -3
  12. package/accordion-group/AccordionGroup.js +25 -65
  13. package/accordion-group/AccordionGroup.stories.tsx +93 -66
  14. package/accordion-group/AccordionGroup.test.js +27 -62
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +43 -0
  17. package/accordion-group/types.d.ts +7 -12
  18. package/alert/Alert.js +9 -10
  19. package/alert/Alert.stories.tsx +28 -0
  20. package/alert/Alert.test.js +1 -1
  21. package/badge/Badge.d.ts +1 -1
  22. package/badge/Badge.js +5 -3
  23. package/badge/types.d.ts +1 -0
  24. package/bleed/Bleed.js +1 -34
  25. package/bleed/Bleed.stories.tsx +95 -95
  26. package/bleed/types.d.ts +1 -1
  27. package/box/Box.d.ts +1 -1
  28. package/box/Box.js +19 -48
  29. package/box/Box.stories.tsx +38 -51
  30. package/box/Box.test.js +1 -1
  31. package/box/types.d.ts +0 -11
  32. package/bulleted-list/BulletedList.d.ts +7 -0
  33. package/bulleted-list/BulletedList.js +125 -0
  34. package/bulleted-list/BulletedList.stories.tsx +206 -0
  35. package/bulleted-list/types.d.ts +38 -0
  36. package/button/Button.d.ts +1 -1
  37. package/button/Button.js +44 -71
  38. package/button/Button.stories.tsx +159 -8
  39. package/button/Button.test.js +12 -1
  40. package/button/types.d.ts +9 -5
  41. package/card/Card.d.ts +1 -1
  42. package/card/Card.js +37 -58
  43. package/card/Card.stories.tsx +12 -42
  44. package/card/Card.test.js +1 -1
  45. package/card/types.d.ts +1 -6
  46. package/checkbox/Checkbox.d.ts +2 -2
  47. package/checkbox/Checkbox.js +104 -101
  48. package/checkbox/Checkbox.stories.tsx +198 -130
  49. package/checkbox/Checkbox.test.js +94 -17
  50. package/checkbox/types.d.ts +7 -3
  51. package/chip/Chip.js +28 -49
  52. package/chip/Chip.stories.tsx +121 -26
  53. package/chip/Chip.test.js +3 -5
  54. package/chip/types.d.ts +1 -1
  55. package/common/OpenSans.css +68 -80
  56. package/common/coreTokens.d.ts +146 -0
  57. package/common/coreTokens.js +167 -0
  58. package/common/utils.d.ts +1 -0
  59. package/common/utils.js +4 -4
  60. package/common/variables.d.ts +1494 -0
  61. package/common/variables.js +1111 -1111
  62. package/date-input/Calendar.d.ts +4 -0
  63. package/date-input/Calendar.js +258 -0
  64. package/date-input/DateInput.js +140 -238
  65. package/date-input/DateInput.stories.tsx +209 -33
  66. package/date-input/DateInput.test.js +519 -149
  67. package/date-input/DatePicker.d.ts +4 -0
  68. package/date-input/DatePicker.js +146 -0
  69. package/date-input/Icons.d.ts +6 -0
  70. package/date-input/Icons.js +75 -0
  71. package/date-input/YearPicker.d.ts +4 -0
  72. package/date-input/YearPicker.js +126 -0
  73. package/date-input/types.d.ts +55 -0
  74. package/dialog/Dialog.d.ts +1 -1
  75. package/dialog/Dialog.js +68 -103
  76. package/dialog/Dialog.stories.tsx +154 -171
  77. package/dialog/Dialog.test.js +334 -5
  78. package/dialog/types.d.ts +0 -12
  79. package/dropdown/Dropdown.d.ts +1 -1
  80. package/dropdown/Dropdown.js +246 -253
  81. package/dropdown/Dropdown.stories.tsx +245 -56
  82. package/dropdown/Dropdown.test.js +507 -110
  83. package/dropdown/DropdownMenu.d.ts +4 -0
  84. package/dropdown/DropdownMenu.js +74 -0
  85. package/dropdown/DropdownMenuItem.d.ts +4 -0
  86. package/dropdown/DropdownMenuItem.js +79 -0
  87. package/dropdown/types.d.ts +23 -3
  88. package/file-input/FileInput.d.ts +2 -2
  89. package/file-input/FileInput.js +180 -223
  90. package/file-input/FileInput.stories.tsx +122 -11
  91. package/file-input/FileInput.test.js +14 -14
  92. package/file-input/FileItem.d.ts +4 -14
  93. package/file-input/FileItem.js +44 -66
  94. package/file-input/types.d.ts +18 -1
  95. package/flex/Flex.d.ts +4 -0
  96. package/flex/Flex.js +71 -0
  97. package/flex/Flex.stories.tsx +112 -0
  98. package/flex/types.d.ts +97 -0
  99. package/footer/Footer.d.ts +1 -1
  100. package/footer/Footer.js +49 -142
  101. package/footer/Footer.stories.tsx +41 -19
  102. package/footer/Footer.test.js +16 -26
  103. package/footer/Icons.js +1 -1
  104. package/footer/types.d.ts +11 -12
  105. package/grid/Grid.d.ts +7 -0
  106. package/grid/Grid.js +91 -0
  107. package/grid/Grid.stories.tsx +219 -0
  108. package/grid/types.d.ts +115 -0
  109. package/header/Header.d.ts +4 -3
  110. package/header/Header.js +102 -150
  111. package/header/Header.stories.tsx +152 -63
  112. package/header/Header.test.js +20 -4
  113. package/header/Icons.js +2 -2
  114. package/header/types.d.ts +0 -13
  115. package/heading/Heading.js +1 -1
  116. package/heading/Heading.test.js +1 -1
  117. package/image/Image.d.ts +4 -0
  118. package/image/Image.js +85 -0
  119. package/image/Image.stories.tsx +127 -0
  120. package/image/types.d.ts +72 -0
  121. package/inset/Inset.js +1 -34
  122. package/inset/Inset.stories.tsx +37 -36
  123. package/inset/types.d.ts +1 -1
  124. package/layout/ApplicationLayout.d.ts +16 -6
  125. package/layout/ApplicationLayout.js +81 -138
  126. package/layout/ApplicationLayout.stories.tsx +85 -94
  127. package/layout/Icons.d.ts +8 -0
  128. package/layout/Icons.js +52 -45
  129. package/layout/SidenavContext.d.ts +5 -0
  130. package/layout/SidenavContext.js +19 -0
  131. package/layout/types.d.ts +19 -35
  132. package/link/Link.d.ts +3 -2
  133. package/link/Link.js +60 -77
  134. package/link/Link.stories.tsx +155 -53
  135. package/link/Link.test.js +9 -19
  136. package/link/types.d.ts +5 -21
  137. package/main.d.ts +9 -10
  138. package/main.js +55 -57
  139. package/nav-tabs/NavTabs.d.ts +8 -0
  140. package/nav-tabs/NavTabs.js +122 -0
  141. package/nav-tabs/NavTabs.stories.tsx +274 -0
  142. package/nav-tabs/NavTabs.test.js +82 -0
  143. package/nav-tabs/Tab.d.ts +4 -0
  144. package/nav-tabs/Tab.js +146 -0
  145. package/nav-tabs/types.d.ts +52 -0
  146. package/number-input/NumberInput.d.ts +7 -0
  147. package/number-input/NumberInput.js +6 -4
  148. package/number-input/NumberInput.test.js +319 -102
  149. package/number-input/types.d.ts +13 -10
  150. package/package.json +19 -23
  151. package/paginator/Icons.d.ts +5 -0
  152. package/paginator/Icons.js +16 -28
  153. package/paginator/Paginator.js +20 -49
  154. package/paginator/Paginator.stories.tsx +24 -0
  155. package/paginator/Paginator.test.js +91 -39
  156. package/paragraph/Paragraph.d.ts +5 -0
  157. package/paragraph/Paragraph.js +38 -0
  158. package/paragraph/Paragraph.stories.tsx +44 -0
  159. package/password-input/Icons.d.ts +6 -0
  160. package/password-input/Icons.js +39 -0
  161. package/password-input/PasswordInput.js +36 -80
  162. package/password-input/PasswordInput.stories.tsx +1 -0
  163. package/password-input/PasswordInput.test.js +36 -45
  164. package/password-input/types.d.ts +14 -11
  165. package/progress-bar/ProgressBar.js +61 -55
  166. package/progress-bar/ProgressBar.stories.jsx +47 -12
  167. package/progress-bar/ProgressBar.test.js +68 -23
  168. package/quick-nav/QuickNav.js +77 -26
  169. package/quick-nav/QuickNav.stories.tsx +145 -26
  170. package/quick-nav/types.d.ts +4 -4
  171. package/radio-group/Radio.d.ts +1 -1
  172. package/radio-group/Radio.js +46 -31
  173. package/radio-group/RadioGroup.js +37 -36
  174. package/radio-group/RadioGroup.stories.tsx +132 -18
  175. package/radio-group/RadioGroup.test.js +124 -97
  176. package/radio-group/types.d.ts +2 -2
  177. package/resultsetTable/Icons.d.ts +7 -0
  178. package/resultsetTable/Icons.js +51 -0
  179. package/resultsetTable/ResultsetTable.js +49 -108
  180. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  181. package/resultsetTable/ResultsetTable.test.js +61 -42
  182. package/resultsetTable/types.d.ts +1 -1
  183. package/select/Listbox.d.ts +4 -0
  184. package/select/Listbox.js +169 -0
  185. package/select/Option.js +11 -24
  186. package/select/Select.js +148 -214
  187. package/select/Select.stories.tsx +525 -136
  188. package/select/Select.test.js +478 -307
  189. package/select/types.d.ts +20 -4
  190. package/sidenav/Icons.d.ts +7 -0
  191. package/sidenav/Icons.js +51 -0
  192. package/sidenav/Sidenav.d.ts +6 -5
  193. package/sidenav/Sidenav.js +146 -44
  194. package/sidenav/Sidenav.stories.tsx +251 -151
  195. package/sidenav/Sidenav.test.js +25 -37
  196. package/sidenav/types.d.ts +52 -26
  197. package/slider/Slider.d.ts +2 -2
  198. package/slider/Slider.js +121 -97
  199. package/slider/Slider.stories.tsx +64 -1
  200. package/slider/Slider.test.js +122 -22
  201. package/slider/types.d.ts +4 -0
  202. package/spinner/Spinner.js +18 -24
  203. package/spinner/Spinner.stories.jsx +53 -27
  204. package/spinner/Spinner.test.js +1 -1
  205. package/switch/Switch.d.ts +2 -2
  206. package/switch/Switch.js +138 -68
  207. package/switch/Switch.stories.tsx +49 -38
  208. package/switch/Switch.test.js +145 -18
  209. package/switch/types.d.ts +6 -2
  210. package/table/Table.js +3 -3
  211. package/table/Table.stories.jsx +80 -1
  212. package/table/Table.test.js +2 -2
  213. package/tabs/Tab.d.ts +4 -0
  214. package/tabs/Tab.js +132 -0
  215. package/tabs/Tabs.js +358 -108
  216. package/tabs/Tabs.stories.tsx +119 -11
  217. package/tabs/Tabs.test.js +220 -10
  218. package/tabs/types.d.ts +13 -3
  219. package/tag/Tag.js +12 -17
  220. package/tag/Tag.stories.tsx +14 -1
  221. package/tag/Tag.test.js +1 -1
  222. package/tag/types.d.ts +1 -1
  223. package/text-input/Icons.d.ts +8 -0
  224. package/text-input/Icons.js +60 -0
  225. package/text-input/Suggestion.d.ts +4 -0
  226. package/text-input/Suggestion.js +84 -0
  227. package/text-input/Suggestions.d.ts +4 -0
  228. package/text-input/Suggestions.js +134 -0
  229. package/text-input/TextInput.js +260 -399
  230. package/text-input/TextInput.stories.tsx +319 -185
  231. package/text-input/TextInput.test.js +846 -759
  232. package/text-input/types.d.ts +50 -12
  233. package/textarea/Textarea.js +37 -45
  234. package/textarea/Textarea.stories.jsx +68 -1
  235. package/textarea/Textarea.test.js +61 -19
  236. package/textarea/types.d.ts +14 -7
  237. package/toggle-group/ToggleGroup.d.ts +2 -2
  238. package/toggle-group/ToggleGroup.js +85 -59
  239. package/toggle-group/ToggleGroup.stories.tsx +48 -3
  240. package/toggle-group/ToggleGroup.test.js +38 -24
  241. package/toggle-group/types.d.ts +23 -14
  242. package/typography/Typography.d.ts +4 -0
  243. package/typography/Typography.js +32 -0
  244. package/typography/Typography.stories.tsx +198 -0
  245. package/typography/types.d.ts +18 -0
  246. package/typography/types.js +5 -0
  247. package/useTheme.d.ts +1246 -1
  248. package/useTheme.js +3 -3
  249. package/useTranslatedLabels.d.ts +85 -0
  250. package/useTranslatedLabels.js +20 -0
  251. package/utils/BaseTypography.d.ts +21 -0
  252. package/utils/BaseTypography.js +108 -0
  253. package/utils/FocusLock.d.ts +13 -0
  254. package/utils/FocusLock.js +138 -0
  255. package/wizard/Wizard.js +44 -45
  256. package/wizard/Wizard.stories.tsx +40 -1
  257. package/wizard/Wizard.test.js +1 -1
  258. package/wizard/types.d.ts +3 -3
  259. package/ThemeContext.d.ts +0 -10
  260. package/ThemeContext.js +0 -243
  261. package/card/ice-cream.jpg +0 -0
  262. package/common/RequiredComponent.js +0 -32
  263. package/list/List.d.ts +0 -4
  264. package/list/List.js +0 -47
  265. package/list/List.stories.tsx +0 -95
  266. package/list/types.d.ts +0 -7
  267. package/number-input/NumberInputContext.d.ts +0 -4
  268. package/number-input/NumberInputContext.js +0 -19
  269. package/number-input/numberInputContextTypes.d.ts +0 -19
  270. package/radio/Radio.d.ts +0 -4
  271. package/radio/Radio.js +0 -174
  272. package/radio/Radio.stories.tsx +0 -192
  273. package/radio/Radio.test.js +0 -71
  274. package/radio/types.d.ts +0 -54
  275. package/row/Row.d.ts +0 -3
  276. package/row/Row.js +0 -127
  277. package/row/Row.stories.tsx +0 -237
  278. package/row/types.d.ts +0 -28
  279. package/stack/Stack.d.ts +0 -3
  280. package/stack/Stack.js +0 -97
  281. package/stack/Stack.stories.tsx +0 -164
  282. package/stack/types.d.ts +0 -24
  283. package/text/Text.d.ts +0 -7
  284. package/text/Text.js +0 -30
  285. package/text/Text.stories.tsx +0 -19
  286. /package/{list → bulleted-list}/types.js +0 -0
  287. /package/{radio → flex}/types.js +0 -0
  288. /package/{row → grid}/types.js +0 -0
  289. /package/{stack → image}/types.js +0 -0
  290. /package/{number-input/numberInputContextTypes.js → nav-tabs/types.js} +0 -0
@@ -2,14 +2,15 @@ import React from "react";
2
2
  import DxcFileInput from "./FileInput";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
+ import FileItem from "./FileItem";
6
+ import { HalstackProvider } from "../HalstackContext";
5
7
 
6
8
  export default {
7
9
  title: "File input",
8
10
  component: DxcFileInput,
9
11
  };
10
12
 
11
- const picPreview =
12
- "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAAEDklEQVRogdXaXaxcUxQH8J/etloajVT1I9qgCbdIUB8PXPeKBJHgsV5ExAuVivBUgtSDxgNBVMVHxEeRUhIhkpJ40BYhoTShaQglQtA2VR+ttjMe1j45c6cztzNnzszc+09Ocs/Za+39/++zzt5rr7l0D1diA35P14b0bMJgAE+g2uR6FpP7xq4NZCL2YjlOSNdt6VkVj/eNXYu4VhD9G+c3aL8gtVWS7bjEsfhRCFk2ht2yZPNT8hl3WCUIfoZJY9gdhY+T7QM94NUWFmEfDuHCFuyXJNv9OL2LvNrGO2KGn2rD55nks6ErjAog+8B3YXYbfrPwR/Lt+4d/NLYLMrcW8F+efL/DtBJ5tY17EpEvxEbYLgawJfVxXxObRZhbiF2LWCjfE4Y66OeS1Mc/OLnm+Uw8ggP4oYP+j4hHxUy+VEJfL6e+3hTL8/X4RZ7W/FvCGE1xOdZp7wNvhvny9CULtSo+1QMhZWImPpQL+A03YbouCpkqXn8ZqA+jg1iD41P7NF0QMiAy2N0ipDrFWUa/hU9wXp1N6UIuEktsNug3HfY3gD2pr4rYTxrlZ6UJmY3n0mBZ7JYhhDi3ZP1+i6sb2HQsZBJuEEfUqljjV+Ic5QkhzifZylTF+xisae9IyBIRr1nnb+PU1DaoXCHkk5blXfvxGGYoKGQWnhbpdZb/XFNn0w0hGebgBXm4fY/rtClkOn6Wz8j96Vk9uikkw5DRm2JLQrKV4hB2pr+niJznuPI5toRN4rx/u1jZiLfUMqZiBf4Ss7Bb7Bu1WW0v3kgt5mA17i7iPB8vymN1Cy5Obb0W0jFm4Fd5jFbEfjJsggl5UBDeiLvk4bZP/4RcJj76W1p1OE2sXAfFBkgcotYrL0UpghF5BfOkVhzeTQ5rGrRdIXbiVWWxaxNvCG6vHckwq4jsFPXa8YYF8gPYVc2MaisiN/eGVyGsEBy3C86H4d5k8LliFZFeYSq+FlwP218WiJWpIpbY8Y5heeXllNqGdcqriPQKrwrO67MHZwh1ezGvT6SKIKu8VLCYWGareKgPZEZECrS5oP/Dgvtq2Jpuzi6FWmuYh7XyfK5asJ9zk++X5EWARuePsjEZd9SM+afOhBwjz9TtSDeDY3mUgBH526/gFRHnnQhZLD9NejLdvG7sn8yKoj6MtuLSmvaiQibJ8781RNl+V3rwEZaKpGxKQeIZ6sNoD+5s0G87QqYkbksT1yydWpQZDMl/kS16bawb9AN5GK3VfGnvZMwd0qEv+w+ETTgTN4rEcRAninSgVdTP6oE2fFvFf6JIuA1v4XmRkXQVk+UFhGoacKXDJ6eTj72nmGt0DWCbONdkmDBCMgzjK6MrmAtNQCGUvyH2HfXhNmGFZBgRNYD3Ou3ofwlpcfptqgzTAAAAAElFTkSuQmCC";
13
+ const picPreview = "https://cdn.mos.cms.futurecdn.net/CAZ6JXi6huSuN4QGE627NR.jpg";
13
14
 
14
15
  const file1 = new File(["file1"], "file.pdf", { type: "text/plain" });
15
16
  const file2 = new File(["file2"], "file2.mp3", {
@@ -21,7 +22,7 @@ const file3 = new File(["file3"], "file3.png", {
21
22
  const file4 = new File(["file4"], "file4file4file4file4file4file4file4file4file4.mp4", {
22
23
  type: "video",
23
24
  });
24
- const file5 = new File(["file4"], "file5file5file5file5file5file5file5file5file5.mp4", {
25
+ const file5 = new File(["file5"], "file5file5file5file5file5file5file5file5file5.mp4", {
25
26
  type: "video",
26
27
  });
27
28
 
@@ -53,7 +54,7 @@ const filesExamples = [
53
54
  file: file4,
54
55
  },
55
56
  {
56
- error: "Error message error message error message error message",
57
+ error: "This error message is a multiline paragraph for testing.",
57
58
  file: file5,
58
59
  },
59
60
  {
@@ -63,19 +64,53 @@ const filesExamples = [
63
64
  },
64
65
  ];
65
66
 
67
+ const opinionatedTheme = {
68
+ fileInput: {
69
+ fontColor: "#000000",
70
+ },
71
+ };
72
+
66
73
  export const Chromatic = () => (
67
74
  <>
75
+ <Title title="File item states" theme="light" level={2} />
68
76
  <ExampleContainer pseudoState="pseudo-hover">
69
- <Title title="File item hovered" theme="light" level={4} />
70
- <DxcFileInput value={fileExample} callbackFile={() => {}} />
77
+ <Title title="Hovered" theme="light" level={4} />
78
+ <FileItem
79
+ fileName="file"
80
+ error=""
81
+ singleFileMode={false}
82
+ showPreview={false}
83
+ preview={picPreview}
84
+ type="image/png"
85
+ onDelete={() => {}}
86
+ tabIndex={0}
87
+ />
71
88
  </ExampleContainer>
72
89
  <ExampleContainer pseudoState="pseudo-focus">
73
- <Title title="File item focused" theme="light" level={4} />
74
- <DxcFileInput value={fileExample} callbackFile={() => {}} />
90
+ <Title title="Focused" theme="light" level={4} />
91
+ <FileItem
92
+ fileName="file"
93
+ error=""
94
+ singleFileMode={false}
95
+ showPreview={false}
96
+ preview={picPreview}
97
+ type="image/png"
98
+ onDelete={() => {}}
99
+ tabIndex={0}
100
+ />
75
101
  </ExampleContainer>
76
102
  <ExampleContainer pseudoState="pseudo-active">
77
- <Title title="File item actived" theme="light" level={4} />
78
- <DxcFileInput value={fileExample} callbackFile={() => {}} />
103
+ <Title title="Actived" theme="light" level={4} />
104
+ <FileItem
105
+ fileName="file"
106
+ error=""
107
+ singleFileMode={false}
108
+ showPreview={false}
109
+ preview={picPreview}
110
+ type="image/png"
111
+ onDelete={() => {}}
112
+ tabIndex={0}
113
+ />
79
114
  </ExampleContainer>
80
115
  <Title title="File" theme="light" level={2} />
81
116
  <ExampleContainer>
@@ -501,7 +536,83 @@ export const Chromatic = () => (
501
536
  mode="dropzone"
502
537
  margin="xxlarge"
503
538
  />
504
- <hr />
539
+ </ExampleContainer>
540
+ <Title title="Opinionated theme" theme="light" level={2} />
541
+ <ExampleContainer>
542
+ <HalstackProvider theme={opinionatedTheme}>
543
+ <Title title="Single file" theme="light" level={4} />
544
+ <DxcFileInput
545
+ label="File input"
546
+ helperText="Please select files"
547
+ value={fileExample}
548
+ multiple={false}
549
+ callbackFile={() => {}}
550
+ />
551
+ </HalstackProvider>
552
+ </ExampleContainer>
553
+ <ExampleContainer>
554
+ <HalstackProvider theme={opinionatedTheme}>
555
+ <Title title="Invalid single file" theme="light" level={4} />
556
+ <DxcFileInput
557
+ label="File input"
558
+ helperText="Please select files"
559
+ value={fileExampleError}
560
+ multiple={false}
561
+ callbackFile={() => {}}
562
+ />
563
+ </HalstackProvider>
564
+ </ExampleContainer>
565
+ <ExampleContainer>
566
+ <Title title="Single file" theme="light" level={4} />
567
+ <HalstackProvider theme={opinionatedTheme}>
568
+ <DxcFileInput
569
+ mode="filedrop"
570
+ label="File input"
571
+ helperText="Please select files"
572
+ value={fileExample}
573
+ multiple={false}
574
+ callbackFile={() => {}}
575
+ />
576
+ </HalstackProvider>
577
+ </ExampleContainer>
578
+ <ExampleContainer>
579
+ <Title title="Invalid single file" theme="light" level={4} />
580
+ <HalstackProvider theme={opinionatedTheme}>
581
+ <DxcFileInput
582
+ mode="filedrop"
583
+ label="File input"
584
+ helperText="Please select files"
585
+ value={fileExampleError}
586
+ multiple={false}
587
+ callbackFile={() => {}}
588
+ />
589
+ </HalstackProvider>
590
+ </ExampleContainer>
591
+ <ExampleContainer>
592
+ <Title title="Single file" theme="light" level={4} />
593
+ <HalstackProvider theme={opinionatedTheme}>
594
+ <DxcFileInput
595
+ label="File input"
596
+ helperText="Please select files"
597
+ mode="dropzone"
598
+ value={fileExample}
599
+ callbackFile={() => {}}
600
+ multiple={false}
601
+ />
602
+ </HalstackProvider>
603
+ </ExampleContainer>
604
+ <ExampleContainer>
605
+ <Title title="Invalid single file" theme="light" level={4} />{" "}
606
+ <HalstackProvider theme={opinionatedTheme}>
607
+ <DxcFileInput
608
+ label="File input"
609
+ helperText="Please select files"
610
+ mode="dropzone"
611
+ value={fileExampleError}
612
+ callbackFile={() => {}}
613
+ multiple={false}
614
+ />
615
+ </HalstackProvider>
505
616
  </ExampleContainer>
506
617
  </>
507
618
  );
@@ -12,21 +12,21 @@ var _react2 = require("@testing-library/react");
12
12
 
13
13
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
14
14
 
15
- var _FileInput = _interopRequireDefault(require("./FileInput"));
16
-
15
+ var _FileInput = _interopRequireDefault(require("./FileInput.tsx"));
16
+
17
+ var file1 = new File(["file1"], "file1.png", {
18
+ type: "image/png"
19
+ });
20
+ var file2 = new File(["file2"], "file2.txt", {
21
+ type: "text/plain"
22
+ });
23
+ var allFiles = [{
24
+ file: file1
25
+ }, {
26
+ error: "Error message",
27
+ file: file2
28
+ }];
17
29
  describe("FileInput component tests", function () {
18
- var file1 = new File(["file1"], "file1.png", {
19
- type: "image/png"
20
- });
21
- var file2 = new File(["file2"], "file2.txt", {
22
- type: "text/plain"
23
- });
24
- var allFiles = [{
25
- file: file1
26
- }, {
27
- error: "Error message",
28
- file: file2
29
- }];
30
30
  test("Renders with correct labels and helper text in file mode", function () {
31
31
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_FileInput["default"], {
32
32
  label: "File input label",
@@ -1,14 +1,4 @@
1
- /// <reference types="react" />
2
- declare const FileItem: ({ mode, multiple, name, error, showPreview, preview, type, numFiles, onDelete, tabIndex, }: {
3
- mode: any;
4
- multiple: any;
5
- name?: string;
6
- error?: string;
7
- showPreview: any;
8
- preview: any;
9
- type: any;
10
- numFiles: any;
11
- onDelete: any;
12
- tabIndex: any;
13
- }) => JSX.Element;
14
- export default FileItem;
1
+ import React from "react";
2
+ import { FileItemProps } from "./types";
3
+ declare const _default: React.MemoExoticComponent<({ fileName, error, singleFileMode, showPreview, preview, type, onDelete, tabIndex, }: FileItemProps) => JSX.Element>;
4
+ export default _default;
@@ -15,9 +15,13 @@ var _react = _interopRequireDefault(require("react"));
15
15
 
16
16
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
17
17
 
18
+ var _Flex = _interopRequireDefault(require("../flex/Flex"));
19
+
18
20
  var _useTheme = _interopRequireDefault(require("../useTheme"));
19
21
 
20
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
22
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
23
+
24
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
21
25
 
22
26
  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); }
23
27
 
@@ -47,103 +51,76 @@ var errorIcon = /*#__PURE__*/_react["default"].createElement("svg", {
47
51
  }));
48
52
 
49
53
  var FileItem = function FileItem(_ref) {
50
- var mode = _ref.mode,
51
- multiple = _ref.multiple,
52
- _ref$name = _ref.name,
53
- name = _ref$name === void 0 ? "" : _ref$name,
54
+ var _ref$fileName = _ref.fileName,
55
+ fileName = _ref$fileName === void 0 ? "" : _ref$fileName,
54
56
  _ref$error = _ref.error,
55
57
  error = _ref$error === void 0 ? "" : _ref$error,
58
+ singleFileMode = _ref.singleFileMode,
56
59
  showPreview = _ref.showPreview,
57
60
  preview = _ref.preview,
58
61
  type = _ref.type,
59
- numFiles = _ref.numFiles,
60
62
  onDelete = _ref.onDelete,
61
63
  tabIndex = _ref.tabIndex;
62
64
  var colorsTheme = (0, _useTheme["default"])();
63
- var isImage = type.includes("image");
65
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
64
66
 
65
67
  var getIconAriaLabel = function getIconAriaLabel() {
66
- if (type.includes("video")) {
67
- return "video";
68
- }
69
-
70
- if (type.includes("audio")) {
71
- return "audio";
72
- }
73
-
74
- return "file";
68
+ if (type.includes("video")) return "video";else if (type.includes("audio")) return "audio";else return "file";
75
69
  };
76
70
 
77
71
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
78
72
  theme: colorsTheme.fileInput
79
- }, /*#__PURE__*/_react["default"].createElement(Container, {
80
- mode: mode,
81
- multiple: multiple,
73
+ }, /*#__PURE__*/_react["default"].createElement(MainContainer, {
82
74
  error: error,
83
- showPreview: showPreview,
84
- numFiles: numFiles
85
- }, showPreview && (isImage ? /*#__PURE__*/_react["default"].createElement(ImagePreview, {
75
+ singleFileMode: singleFileMode,
76
+ showPreview: showPreview
77
+ }, showPreview && (type.includes("image") ? /*#__PURE__*/_react["default"].createElement(ImagePreview, {
86
78
  src: preview,
87
- alt: name
88
- }) : /*#__PURE__*/_react["default"].createElement(IconPreviewContainer, {
79
+ alt: fileName
80
+ }) : /*#__PURE__*/_react["default"].createElement(IconPreview, {
89
81
  error: error,
90
82
  "aria-label": getIconAriaLabel()
91
- }, /*#__PURE__*/_react["default"].createElement(IconPreview, {
92
- error: error
93
- }, preview))), /*#__PURE__*/_react["default"].createElement(FileItemContent, null, /*#__PURE__*/_react["default"].createElement(FileItemContainer, null, /*#__PURE__*/_react["default"].createElement(FileName, {
94
- mode: mode,
95
- multiple: multiple,
96
- error: error,
97
- showPreview: showPreview,
98
- numFiles: numFiles
99
- }, name), error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, {
100
- "aria-label": "Error"
101
- }, errorIcon), /*#__PURE__*/_react["default"].createElement(DeleteIcon, {
102
- error: error,
83
+ }, preview)), /*#__PURE__*/_react["default"].createElement(FileItemContent, null, /*#__PURE__*/_react["default"].createElement(FileName, null, fileName), /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
84
+ gap: "0.25rem"
85
+ }, error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, null, errorIcon), /*#__PURE__*/_react["default"].createElement(DeleteFileAction, {
103
86
  onClick: function onClick() {
104
- return onDelete(name);
87
+ onDelete(fileName);
105
88
  },
106
- "aria-label": "Remove ".concat(name),
89
+ type: "button",
90
+ title: translatedLabels.fileInput.deleteFileActionTitle,
91
+ "aria-label": translatedLabels.fileInput.deleteFileActionTitle,
107
92
  tabIndex: tabIndex
108
- }, deleteIcon)), error && (multiple || numFiles > 1) && /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, error))));
93
+ }, deleteIcon)), error && !singleFileMode && /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, error))));
109
94
  };
110
95
 
111
- var Container = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n padding: ", ";\n background-color: ", ";\n border-radius: ", ";\n width: ", ";\n min-height: ", ";\n border-color: ", ";\n border-width: ", ";\n border-style: ", ";\n display: flex;\n justify-content: center;\n"])), function (props) {
112
- return props.showPreview ? "calc(8px - ".concat(props.theme.fileItemBorderThickness, ") 8px") : "calc(8px - ".concat(props.theme.fileItemBorderThickness, ") 8px calc(8px - ").concat(props.theme.fileItemBorderThickness, ") 16px");
113
- }, function (props) {
114
- return props.error && props.theme.errorFileItemBackgroundColor;
115
- }, function (props) {
116
- return props.theme.fileItemBorderRadius;
96
+ var MainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n gap: 0.75rem;\n width: ", ";\n padding: ", ";\n ", ";\n border-color: ", ";\n border-width: ", ";\n border-style: ", ";\n border-radius: ", ";\n"])), function (props) {
97
+ return props.singleFileMode ? "230px" : "320px";
117
98
  }, function (props) {
118
- return props.mode === "file" && !props.multiple && props.numFiles === 1 ? "calc(230px - 26px)" : !props.showPreview ? "calc(320px - 26px)" : props.showPreview && "calc(320px - 18px)";
99
+ return props.showPreview ? "calc(8px - ".concat(props.theme.fileItemBorderThickness, ")") : "calc(8px - ".concat(props.theme.fileItemBorderThickness, ") calc(8px - ").concat(props.theme.fileItemBorderThickness, ") calc(8px - ").concat(props.theme.fileItemBorderThickness, ") 16px");
119
100
  }, function (props) {
120
- return props.mode === "file" && !props.multiple && props.numFiles === 1 || !props.showPreview && !props.error ? "calc(40px - 18px)" : !props.showPreview && props.error ? "calc(59px - 18px)" : "calc(64px - 18px)";
101
+ return props.error ? "background-color: ".concat(props.theme.errorFileItemBackgroundColor, ";") : "";
121
102
  }, function (props) {
122
103
  return props.error ? props.theme.errorFileItemBorderColor : props.theme.fileItemBorderColor;
123
104
  }, function (props) {
124
105
  return props.theme.fileItemBorderThickness;
125
106
  }, function (props) {
126
107
  return props.theme.fileItemBorderStyle;
108
+ }, function (props) {
109
+ return props.theme.fileItemBorderRadius;
127
110
  });
128
111
 
129
- var FileItemContent = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n"])));
130
-
131
- var FileItemContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n align-items: center;\n"])));
132
-
133
- var ImagePreview = _styledComponents["default"].img(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 48px;\n height: 48px;\n object-fit: contain;\n margin-right: 12px;\n border-radius: 2px;\n"])));
112
+ var ImagePreview = _styledComponents["default"].img(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: 48px;\n height: 48px;\n border-radius: 2px;\n object-fit: contain;\n"])));
134
113
 
135
- var IconPreviewContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 12px;\n background-color: ", ";\n width: 48px;\n height: 48px;\n border-radius: 2px;\n color: ", ";\n"])), function (props) {
136
- return props.error ? props.theme.errorFileItemIconBackgroundColor : props.theme.fileItemIconBackgroundColor;
114
+ var IconPreview = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ", ";\n width: 48px;\n height: 48px;\n padding: 15px;\n border-radius: 2px;\n color: ", ";\n\n svg {\n height: 18px;\n width: 18px;\n }\n"])), function (props) {
115
+ return props.error ? props.theme.errorFilePreviewBackgroundColor : props.theme.filePreviewBackgroundColor;
137
116
  }, function (props) {
138
- return props.error ? props.theme.errorFileItemIconColor : props.theme.fileItemIconColor;
117
+ return props.error ? props.theme.errorFilePreviewIconColor : props.theme.filePreviewIconColor;
139
118
  });
140
119
 
141
- var IconPreview = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])([""])));
120
+ var FileItemContent = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n flex-grow: 1;\n display: grid;\n grid-template-columns: auto min-content;\n grid-template-rows: min-content auto;\n column-gap: 0.25rem;\n"])));
142
121
 
143
- var FileName = _styledComponents["default"].span(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n width: ", ";\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
122
+ var FileName = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n align-self: center;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n"])), function (props) {
144
123
  return props.theme.fileNameFontColor;
145
- }, function (props) {
146
- return props.mode === "file" && !props.multiple && props.error && props.numFiles === 1 ? "calc(230px - 76px)" : props.mode === "file" && !props.multiple && !props.error && props.numFiles === 1 ? "calc(230px - 50px)" : !props.showPreview && !props.error ? "calc(320px - 52px)" : !props.showPreview && props.error ? "calc(320px - 76px)" : props.showPreview && props.error ? "calc(320px - 128px)" : props.showPreview && !props.error && "calc(320px - 102px)";
147
124
  }, function (props) {
148
125
  return props.theme.fileItemFontFamily;
149
126
  }, function (props) {
@@ -154,21 +131,21 @@ var FileName = _styledComponents["default"].span(_templateObject7 || (_templateO
154
131
  return props.theme.fileItemLineHeight;
155
132
  });
156
133
 
157
- var ErrorIcon = _styledComponents["default"].span(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n padding: 3px;\n height: 18px;\n width: 18px;\n color: #d0011b;\n"])));
134
+ var ErrorIcon = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n padding: 3px;\n height: 18px;\n width: 18px;\n color: #d0011b;\n"])));
158
135
 
159
- var DeleteIcon = _styledComponents["default"].button(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n font-size: 1rem;\n font-family: ", ";\n border: 1px solid transparent;\n border-radius: 2px;\n margin-left: 4px;\n background-color: transparent;\n box-shadow: 0 0 0 2px transparent;\n padding: 3px;\n cursor: pointer;\n svg {\n line-height: 18px;\n }\n &:hover {\n background-color: ", ";\n }\n &:focus {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
136
+ var DeleteFileAction = _styledComponents["default"].button(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n font-size: 1rem;\n font-family: ", ";\n border: 1px solid transparent;\n border-radius: 2px;\n background-color: transparent;\n box-shadow: 0 0 0 2px transparent;\n padding: 3px;\n cursor: pointer;\n color: ", ";\n\n svg {\n line-height: 18px;\n }\n &:hover {\n background-color: ", ";\n }\n &:focus,\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
160
137
  return props.theme.fontFamily;
161
138
  }, function (props) {
162
- return props.theme.hoverDeleteFileItemBackgroundColor;
139
+ return props.theme.deleteFileItemColor;
163
140
  }, function (props) {
164
- return props.theme.focusActionBorderColor;
141
+ return props.theme.hoverDeleteFileItemBackgroundColor;
165
142
  }, function (props) {
166
- return props.theme.focusActionBorderColor;
143
+ return props.theme.focusDeleteFileItemBorderColor;
167
144
  }, function (props) {
168
145
  return props.theme.activeDeleteFileItemBackgroundColor;
169
146
  });
170
147
 
171
- var ErrorMessage = _styledComponents["default"].span(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
148
+ var ErrorMessage = _styledComponents["default"].span(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
172
149
  return props.theme.errorMessageFontColor;
173
150
  }, function (props) {
174
151
  return props.theme.errorMessageFontFamily;
@@ -180,5 +157,6 @@ var ErrorMessage = _styledComponents["default"].span(_templateObject10 || (_temp
180
157
  return props.theme.errorMessageLineHeight;
181
158
  });
182
159
 
183
- var _default = FileItem;
160
+ var _default = /*#__PURE__*/_react["default"].memo(FileItem);
161
+
184
162
  exports["default"] = _default;
@@ -21,7 +21,7 @@ declare type FileData = {
21
21
  };
22
22
  declare type CommonProps = {
23
23
  /**
24
- * Name attribute.
24
+ * @deprecated Name attribute.
25
25
  */
26
26
  name?: string;
27
27
  /**
@@ -108,5 +108,22 @@ declare type FileModeProps = CommonProps & {
108
108
  */
109
109
  dropAreaLabel?: never;
110
110
  };
111
+ /**
112
+ * Reference to the component.
113
+ */
114
+ export declare type RefType = HTMLDivElement;
111
115
  declare type Props = DropModeProps | FileModeProps;
116
+ /**
117
+ * Single file item preview.
118
+ */
119
+ export declare type FileItemProps = {
120
+ fileName?: string;
121
+ error?: string;
122
+ showPreview: boolean;
123
+ singleFileMode: boolean;
124
+ preview: string;
125
+ type: string;
126
+ onDelete: (fileName: string) => void;
127
+ tabIndex: number;
128
+ };
112
129
  export default Props;
package/flex/Flex.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import FlexPropsType from "./types";
3
+ declare const DxcFlex: ({ direction, wrap, gap, order, grow, shrink, basis, children, ...props }: FlexPropsType) => JSX.Element;
4
+ export default DxcFlex;
package/flex/Flex.js ADDED
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
+
16
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
+
18
+ var _react = _interopRequireDefault(require("react"));
19
+
20
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
21
+
22
+ var _templateObject;
23
+
24
+ var _excluded = ["direction", "wrap", "gap", "order", "grow", "shrink", "basis", "children"],
25
+ _excluded2 = ["justifyContent", "alignItems", "alignContent", "alignSelf"];
26
+
27
+ var DxcFlex = function DxcFlex(_ref) {
28
+ var _ref$direction = _ref.direction,
29
+ direction = _ref$direction === void 0 ? "row" : _ref$direction,
30
+ _ref$wrap = _ref.wrap,
31
+ wrap = _ref$wrap === void 0 ? "nowrap" : _ref$wrap,
32
+ _ref$gap = _ref.gap,
33
+ gap = _ref$gap === void 0 ? "0rem" : _ref$gap,
34
+ _ref$order = _ref.order,
35
+ order = _ref$order === void 0 ? 0 : _ref$order,
36
+ _ref$grow = _ref.grow,
37
+ grow = _ref$grow === void 0 ? 0 : _ref$grow,
38
+ _ref$shrink = _ref.shrink,
39
+ shrink = _ref$shrink === void 0 ? 1 : _ref$shrink,
40
+ _ref$basis = _ref.basis,
41
+ basis = _ref$basis === void 0 ? "auto" : _ref$basis,
42
+ children = _ref.children,
43
+ props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
44
+ return /*#__PURE__*/_react["default"].createElement(Flex, (0, _extends2["default"])({
45
+ $direction: direction,
46
+ $wrap: wrap,
47
+ $order: order,
48
+ $grow: grow,
49
+ $shrink: shrink,
50
+ $basis: basis,
51
+ $gap: gap
52
+ }, props), children);
53
+ };
54
+
55
+ var Flex = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n ", "\n"])), function (_ref2) {
56
+ var _props$$gap, _props$$gap$rowGap, _props$$gap$columnGap;
57
+
58
+ var _ref2$justifyContent = _ref2.justifyContent,
59
+ justifyContent = _ref2$justifyContent === void 0 ? "flex-start" : _ref2$justifyContent,
60
+ _ref2$alignItems = _ref2.alignItems,
61
+ alignItems = _ref2$alignItems === void 0 ? "stretch" : _ref2$alignItems,
62
+ _ref2$alignContent = _ref2.alignContent,
63
+ alignContent = _ref2$alignContent === void 0 ? "normal" : _ref2$alignContent,
64
+ _ref2$alignSelf = _ref2.alignSelf,
65
+ alignSelf = _ref2$alignSelf === void 0 ? "auto" : _ref2$alignSelf,
66
+ props = (0, _objectWithoutProperties2["default"])(_ref2, _excluded2);
67
+ return "\n flex-direction: ".concat(props.$direction, "; \n flex-wrap: ").concat(props.$wrap, "; \n justify-content: ").concat(justifyContent, "; \n align-items: ").concat(alignItems, ";\n align-content: ").concat(alignContent, ";\n align-self: ").concat(alignSelf, ";\n gap: ").concat(props.$gap != null && typeof props.$gap === "string" ? (_props$$gap = props.$gap) !== null && _props$$gap !== void 0 ? _props$$gap : "" : "", "}\n row-gap: ").concat(props.$gap != null && (0, _typeof2["default"])(props.$gap) === "object" ? (_props$$gap$rowGap = props.$gap.rowGap) !== null && _props$$gap$rowGap !== void 0 ? _props$$gap$rowGap : "" : "", "}\n column-gap: ").concat(props.$gap != null && (0, _typeof2["default"])(props.$gap) === "object" ? (_props$$gap$columnGap = props.$gap.columnGap) !== null && _props$$gap$columnGap !== void 0 ? _props$$gap$columnGap : "" : "", "}\n order: ").concat(props.$order, ";\n flex-grow: ").concat(props.$grow, ";\n flex-shrink: ").concat(props.$shrink, ";\n flex-basis: ").concat(props.$basis, ";\n ");
68
+ });
69
+
70
+ var _default = DxcFlex;
71
+ exports["default"] = _default;
@@ -0,0 +1,112 @@
1
+ import React from "react";
2
+ import Title from "../../.storybook/components/Title";
3
+ import styled from "styled-components";
4
+ import DxcFlex from "./Flex";
5
+
6
+ export default {
7
+ title: "Flex",
8
+ component: DxcFlex,
9
+ };
10
+
11
+ export const Chromatic = () => (
12
+ <>
13
+ <Title title="Default" level={4} />
14
+ <Container>
15
+ <DxcFlex>
16
+ <Placeholder />
17
+ <Placeholder minWidth="50px" />
18
+ <Placeholder />
19
+ <Placeholder minWidth="50px" />
20
+ <Placeholder minWidth="50px" />
21
+ </DxcFlex>
22
+ </Container>
23
+ <Title title="Direction column, wrap, justify content end, align items center and gap" level={4} />
24
+ <Container>
25
+ <DxcFlex direction="column" wrap="wrap" justifyContent="end" alignItems="center" gap="1.5rem">
26
+ <Placeholder />
27
+ <Placeholder minWidth="100px" />
28
+ <Placeholder />
29
+ <Placeholder minWidth="100px" />
30
+ <Placeholder />
31
+ </DxcFlex>
32
+ </Container>
33
+ <Title title="Wrap with align content space between, row and column gaps, and as a span" level={4} />
34
+ <Container height="250px">
35
+ <DxcFlex wrap="wrap" alignContent="space-between" as="span" gap={{ rowGap: "0.5rem", columnGap: "1.5rem" }}>
36
+ <Placeholder />
37
+ <Placeholder />
38
+ <Placeholder />
39
+ <Placeholder />
40
+ <Placeholder minWidth="100px" />
41
+ <Placeholder />
42
+ <Placeholder />
43
+ <Placeholder minWidth="100px" />
44
+ <Placeholder />
45
+ <Placeholder />
46
+ <Placeholder minWidth="100px" />
47
+ <Placeholder />
48
+ </DxcFlex>
49
+ </Container>
50
+ <Title title="Basis 100%, order, grow and align self" level={4} />
51
+ <Container height="75px">
52
+ <DxcFlex basis="100%">
53
+ <DxcFlex order={3} grow={1} alignSelf="flex-end">
54
+ <Placeholder width="100%" minWidth="0">
55
+ order 3, grow 1, align self end
56
+ </Placeholder>
57
+ </DxcFlex>
58
+ <DxcFlex order={-1} grow={4}>
59
+ <Placeholder width="100%" minWidth="0">
60
+ order -1, grow 4
61
+ </Placeholder>
62
+ </DxcFlex>
63
+ <DxcFlex order={5} grow={1}>
64
+ <Placeholder width="100%" minWidth="0">
65
+ order 5, grow 1
66
+ </Placeholder>
67
+ </DxcFlex>
68
+ <DxcFlex order={2} grow={2}>
69
+ <Placeholder width="100%" minWidth="0">
70
+ order 2. grow 2
71
+ </Placeholder>
72
+ </DxcFlex>
73
+ </DxcFlex>
74
+ </Container>
75
+ <Title title="Basis and shrink" level={4} />
76
+ <Container>
77
+ <DxcFlex basis="600px">
78
+ <DxcFlex shrink={4} basis="400px">
79
+ <Placeholder width="100%" minWidth="0">
80
+ shrink 4
81
+ </Placeholder>
82
+ </DxcFlex>
83
+ <DxcFlex shrink={2} basis="400px">
84
+ <Placeholder width="100%" minWidth="0">
85
+ shrink 2
86
+ </Placeholder>
87
+ </DxcFlex>
88
+ <DxcFlex shrink={1} basis="400px">
89
+ <Placeholder width="100%" minWidth="0">
90
+ shrink 1
91
+ </Placeholder>
92
+ </DxcFlex>
93
+ </DxcFlex>
94
+ </Container>
95
+ </>
96
+ );
97
+
98
+ const Container = styled.div<{ height?: string }>`
99
+ display: flex;
100
+ background: #f2eafa;
101
+ margin: 2.5rem;
102
+ ${({ height }) => (height ? `height: ${height}` : "max-height: 150px")};
103
+ `;
104
+
105
+ const Placeholder = styled.div<{ minWidth?: string; width?: string }>`
106
+ height: 40px;
107
+ min-width: ${({ minWidth }) => minWidth ?? "200px"};
108
+ width: ${({ width }) => width};
109
+ border: 1px solid #a46ede;
110
+ border-radius: 0.5rem;
111
+ background-color: #e5d5f6;
112
+ `;