@dxc-technology/halstack-react 0.0.0-0bd2807 → 0.0.0-0cab25c

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 (280) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +1 -4
  3. package/HalstackContext.d.ts +12 -0
  4. package/HalstackContext.js +295 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +15 -47
  7. package/accordion/Accordion.stories.tsx +307 -0
  8. package/accordion/Accordion.test.js +72 -0
  9. package/accordion/types.d.ts +8 -8
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +16 -17
  12. package/accordion-group/AccordionGroup.stories.tsx +225 -0
  13. package/accordion-group/AccordionGroup.test.js +151 -0
  14. package/accordion-group/types.d.ts +8 -8
  15. package/alert/Alert.js +6 -3
  16. package/alert/Alert.test.js +92 -0
  17. package/alert/types.d.ts +1 -1
  18. package/badge/Badge.d.ts +4 -0
  19. package/badge/Badge.js +6 -4
  20. package/badge/types.d.ts +5 -0
  21. package/{radio → badge}/types.js +0 -0
  22. package/bleed/Bleed.d.ts +3 -0
  23. package/bleed/Bleed.js +51 -0
  24. package/bleed/Bleed.stories.tsx +341 -0
  25. package/bleed/types.d.ts +37 -0
  26. package/bleed/types.js +5 -0
  27. package/box/Box.js +24 -34
  28. package/box/Box.test.js +18 -0
  29. package/bulleted-list/BulletedList.d.ts +7 -0
  30. package/bulleted-list/BulletedList.js +123 -0
  31. package/bulleted-list/BulletedList.stories.tsx +200 -0
  32. package/bulleted-list/types.d.ts +11 -0
  33. package/bulleted-list/types.js +5 -0
  34. package/button/Button.d.ts +1 -1
  35. package/button/Button.js +62 -83
  36. package/button/Button.stories.tsx +15 -8
  37. package/button/Button.test.js +35 -0
  38. package/button/types.d.ts +10 -14
  39. package/card/Card.js +26 -30
  40. package/card/Card.stories.tsx +201 -0
  41. package/card/Card.test.js +50 -0
  42. package/card/ice-cream.jpg +0 -0
  43. package/card/types.d.ts +4 -6
  44. package/checkbox/Checkbox.d.ts +1 -1
  45. package/checkbox/Checkbox.js +45 -41
  46. package/checkbox/Checkbox.stories.tsx +124 -128
  47. package/checkbox/Checkbox.test.js +78 -0
  48. package/checkbox/types.d.ts +9 -5
  49. package/chip/Chip.d.ts +4 -0
  50. package/chip/Chip.js +16 -76
  51. package/chip/Chip.stories.tsx +6 -8
  52. package/chip/Chip.test.js +56 -0
  53. package/chip/types.d.ts +45 -0
  54. package/chip/types.js +5 -0
  55. package/common/variables.js +275 -352
  56. package/date-input/DateInput.js +63 -52
  57. package/date-input/DateInput.stories.tsx +7 -7
  58. package/date-input/DateInput.test.js +479 -0
  59. package/date-input/types.d.ts +16 -9
  60. package/dialog/Dialog.js +50 -53
  61. package/dialog/Dialog.stories.tsx +1 -2
  62. package/dialog/Dialog.test.js +70 -0
  63. package/dialog/types.d.ts +2 -2
  64. package/dropdown/Dropdown.d.ts +1 -1
  65. package/dropdown/Dropdown.js +22 -48
  66. package/dropdown/Dropdown.stories.tsx +249 -0
  67. package/dropdown/Dropdown.test.js +189 -0
  68. package/dropdown/types.d.ts +6 -15
  69. package/file-input/FileInput.d.ts +4 -0
  70. package/file-input/FileInput.js +172 -111
  71. package/file-input/FileInput.stories.tsx +507 -0
  72. package/file-input/FileInput.test.js +457 -0
  73. package/file-input/FileItem.d.ts +14 -0
  74. package/file-input/FileItem.js +16 -23
  75. package/file-input/types.d.ts +112 -0
  76. package/file-input/types.js +5 -0
  77. package/flex/Flex.d.ts +4 -0
  78. package/flex/Flex.js +57 -0
  79. package/flex/Flex.stories.tsx +103 -0
  80. package/flex/types.d.ts +21 -0
  81. package/flex/types.js +5 -0
  82. package/footer/Footer.d.ts +1 -1
  83. package/footer/Footer.js +32 -113
  84. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +1 -22
  85. package/footer/Footer.test.js +109 -0
  86. package/footer/Icons.d.ts +2 -0
  87. package/footer/Icons.js +4 -4
  88. package/footer/types.d.ts +21 -17
  89. package/header/Header.js +29 -50
  90. package/header/Header.stories.tsx +172 -0
  91. package/header/Header.test.js +79 -0
  92. package/header/Icons.d.ts +2 -0
  93. package/header/types.d.ts +4 -2
  94. package/heading/Heading.js +1 -1
  95. package/heading/Heading.stories.tsx +54 -0
  96. package/heading/Heading.test.js +186 -0
  97. package/inset/Inset.d.ts +3 -0
  98. package/inset/Inset.js +51 -0
  99. package/inset/Inset.stories.tsx +229 -0
  100. package/inset/types.d.ts +37 -0
  101. package/inset/types.js +5 -0
  102. package/layout/ApplicationLayout.d.ts +20 -0
  103. package/layout/ApplicationLayout.js +71 -135
  104. package/layout/ApplicationLayout.stories.tsx +161 -0
  105. package/layout/Icons.d.ts +5 -0
  106. package/layout/Icons.js +13 -2
  107. package/layout/SidenavContext.d.ts +5 -0
  108. package/layout/SidenavContext.js +19 -0
  109. package/layout/types.d.ts +42 -0
  110. package/layout/types.js +5 -0
  111. package/link/Link.d.ts +3 -2
  112. package/link/Link.js +61 -86
  113. package/link/Link.stories.tsx +139 -16
  114. package/link/Link.test.js +83 -0
  115. package/link/types.d.ts +9 -29
  116. package/main.d.ts +12 -12
  117. package/main.js +64 -58
  118. package/number-input/NumberInput.js +14 -24
  119. package/number-input/NumberInput.stories.tsx +5 -5
  120. package/number-input/NumberInput.test.js +506 -0
  121. package/number-input/NumberInputContext.d.ts +4 -0
  122. package/number-input/NumberInputContext.js +5 -2
  123. package/number-input/numberInputContextTypes.d.ts +19 -0
  124. package/number-input/numberInputContextTypes.js +5 -0
  125. package/number-input/types.d.ts +17 -10
  126. package/package.json +10 -6
  127. package/paginator/Paginator.js +19 -46
  128. package/paginator/Paginator.test.js +308 -0
  129. package/paragraph/Paragraph.d.ts +6 -0
  130. package/paragraph/Paragraph.js +38 -0
  131. package/paragraph/Paragraph.stories.tsx +44 -0
  132. package/password-input/PasswordInput.js +23 -19
  133. package/password-input/PasswordInput.stories.tsx +3 -3
  134. package/password-input/PasswordInput.test.js +180 -0
  135. package/password-input/types.d.ts +29 -19
  136. package/progress-bar/ProgressBar.d.ts +2 -2
  137. package/progress-bar/ProgressBar.js +63 -52
  138. package/progress-bar/ProgressBar.stories.jsx +13 -11
  139. package/progress-bar/ProgressBar.test.js +110 -0
  140. package/progress-bar/types.d.ts +3 -4
  141. package/quick-nav/QuickNav.d.ts +4 -0
  142. package/quick-nav/QuickNav.js +118 -0
  143. package/quick-nav/QuickNav.stories.tsx +264 -0
  144. package/quick-nav/types.d.ts +21 -0
  145. package/quick-nav/types.js +5 -0
  146. package/radio-group/Radio.d.ts +4 -0
  147. package/radio-group/Radio.js +141 -0
  148. package/radio-group/RadioGroup.d.ts +4 -0
  149. package/radio-group/RadioGroup.js +283 -0
  150. package/radio-group/RadioGroup.stories.tsx +100 -0
  151. package/radio-group/RadioGroup.test.js +695 -0
  152. package/radio-group/types.d.ts +114 -0
  153. package/radio-group/types.js +5 -0
  154. package/resultsetTable/ResultsetTable.d.ts +4 -0
  155. package/resultsetTable/ResultsetTable.js +9 -29
  156. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  157. package/resultsetTable/ResultsetTable.test.js +348 -0
  158. package/resultsetTable/types.d.ts +67 -0
  159. package/resultsetTable/types.js +5 -0
  160. package/select/Icons.d.ts +10 -0
  161. package/select/Icons.js +93 -0
  162. package/select/Listbox.d.ts +4 -0
  163. package/select/Listbox.js +199 -0
  164. package/select/Option.d.ts +4 -0
  165. package/select/Option.js +110 -0
  166. package/select/Select.d.ts +4 -0
  167. package/select/Select.js +158 -380
  168. package/select/Select.stories.tsx +231 -176
  169. package/select/Select.test.js +2175 -0
  170. package/select/types.d.ts +210 -0
  171. package/select/types.js +5 -0
  172. package/sidenav/Sidenav.d.ts +6 -5
  173. package/sidenav/Sidenav.js +186 -54
  174. package/sidenav/Sidenav.stories.tsx +180 -0
  175. package/sidenav/Sidenav.test.js +44 -0
  176. package/sidenav/types.d.ts +50 -27
  177. package/slider/Slider.d.ts +1 -1
  178. package/slider/Slider.js +6 -5
  179. package/slider/Slider.stories.tsx +8 -8
  180. package/slider/Slider.test.js +150 -0
  181. package/slider/types.d.ts +4 -0
  182. package/spinner/Spinner.js +3 -3
  183. package/spinner/Spinner.stories.jsx +1 -0
  184. package/spinner/Spinner.test.js +64 -0
  185. package/switch/Switch.d.ts +1 -1
  186. package/switch/Switch.js +37 -21
  187. package/switch/Switch.stories.tsx +15 -15
  188. package/switch/Switch.test.js +98 -0
  189. package/switch/types.d.ts +6 -2
  190. package/table/Table.js +3 -3
  191. package/table/Table.stories.jsx +2 -1
  192. package/table/Table.test.js +26 -0
  193. package/tabs/Tabs.d.ts +1 -1
  194. package/tabs/Tabs.js +20 -20
  195. package/tabs/Tabs.stories.tsx +112 -0
  196. package/tabs/Tabs.test.js +140 -0
  197. package/tabs/types.d.ts +29 -18
  198. package/tabs-nav/NavTabs.d.ts +8 -0
  199. package/tabs-nav/NavTabs.js +125 -0
  200. package/tabs-nav/NavTabs.stories.tsx +170 -0
  201. package/tabs-nav/NavTabs.test.js +82 -0
  202. package/tabs-nav/Tab.d.ts +4 -0
  203. package/tabs-nav/Tab.js +132 -0
  204. package/tabs-nav/types.d.ts +53 -0
  205. package/tabs-nav/types.js +5 -0
  206. package/tag/Tag.d.ts +1 -1
  207. package/tag/Tag.js +18 -28
  208. package/tag/Tag.stories.tsx +26 -29
  209. package/tag/Tag.test.js +60 -0
  210. package/tag/types.d.ts +23 -14
  211. package/text-input/Suggestion.d.ts +4 -0
  212. package/text-input/Suggestion.js +55 -0
  213. package/text-input/TextInput.d.ts +4 -0
  214. package/text-input/TextInput.js +91 -146
  215. package/text-input/TextInput.stories.tsx +474 -0
  216. package/text-input/TextInput.test.js +1712 -0
  217. package/text-input/types.d.ts +178 -0
  218. package/text-input/types.js +5 -0
  219. package/textarea/Textarea.d.ts +4 -0
  220. package/textarea/Textarea.js +39 -79
  221. package/textarea/Textarea.stories.jsx +37 -15
  222. package/textarea/Textarea.test.js +437 -0
  223. package/textarea/types.d.ts +137 -0
  224. package/textarea/types.js +5 -0
  225. package/toggle-group/ToggleGroup.d.ts +4 -0
  226. package/toggle-group/ToggleGroup.js +18 -46
  227. package/toggle-group/ToggleGroup.stories.tsx +27 -32
  228. package/toggle-group/ToggleGroup.test.js +156 -0
  229. package/toggle-group/types.d.ts +105 -0
  230. package/toggle-group/types.js +5 -0
  231. package/typography/Typography.d.ts +4 -0
  232. package/typography/Typography.js +131 -0
  233. package/typography/Typography.stories.tsx +198 -0
  234. package/typography/types.d.ts +18 -0
  235. package/typography/types.js +5 -0
  236. package/useTheme.d.ts +2 -0
  237. package/useTheme.js +2 -2
  238. package/useTranslatedLabels.d.ts +2 -0
  239. package/useTranslatedLabels.js +20 -0
  240. package/wizard/Wizard.d.ts +1 -1
  241. package/wizard/Wizard.js +112 -58
  242. package/wizard/{Wizard.stories.jsx → Wizard.stories.tsx} +33 -24
  243. package/wizard/Wizard.test.js +141 -0
  244. package/wizard/types.d.ts +13 -12
  245. package/ThemeContext.js +0 -246
  246. package/V3Select/V3Select.js +0 -455
  247. package/V3Select/index.d.ts +0 -27
  248. package/V3Textarea/V3Textarea.js +0 -260
  249. package/V3Textarea/index.d.ts +0 -27
  250. package/chip/index.d.ts +0 -22
  251. package/date/Date.js +0 -373
  252. package/date/index.d.ts +0 -27
  253. package/file-input/index.d.ts +0 -81
  254. package/input-text/Icons.js +0 -22
  255. package/input-text/InputText.js +0 -611
  256. package/input-text/index.d.ts +0 -36
  257. package/radio/Radio.d.ts +0 -4
  258. package/radio/Radio.js +0 -174
  259. package/radio/Radio.stories.tsx +0 -192
  260. package/radio/types.d.ts +0 -54
  261. package/resultsetTable/index.d.ts +0 -19
  262. package/select/index.d.ts +0 -131
  263. package/text-input/index.d.ts +0 -135
  264. package/textarea/index.d.ts +0 -117
  265. package/toggle/Toggle.js +0 -186
  266. package/toggle/index.d.ts +0 -21
  267. package/toggle-group/index.d.ts +0 -21
  268. package/upload/Upload.js +0 -201
  269. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  270. package/upload/buttons-upload/Icons.js +0 -40
  271. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  272. package/upload/dragAndDropArea/Icons.js +0 -39
  273. package/upload/file-upload/FileToUpload.js +0 -115
  274. package/upload/file-upload/Icons.js +0 -66
  275. package/upload/files-upload/FilesToUpload.js +0 -109
  276. package/upload/index.d.ts +0 -15
  277. package/upload/transaction/Icons.js +0 -160
  278. package/upload/transaction/Transaction.js +0 -104
  279. package/upload/transactions/Transactions.js +0 -94
  280. package/wizard/Icons.js +0 -65
package/dialog/Dialog.js CHANGED
@@ -13,21 +13,17 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
13
 
14
14
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
15
 
16
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
-
18
16
  var _react = _interopRequireWildcard(require("react"));
19
17
 
20
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
19
 
22
- var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
23
-
24
20
  var _variables = require("../common/variables.js");
25
21
 
26
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
22
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
27
23
 
28
- var _BackgroundColorContext = require("../BackgroundColorContext.js");
24
+ var _BackgroundColorContext = require("../BackgroundColorContext");
29
25
 
30
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
26
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
31
27
 
32
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); }
33
29
 
@@ -41,15 +37,10 @@ var DxcDialog = function DxcDialog(_ref) {
41
37
  _ref$overlay = _ref.overlay,
42
38
  overlay = _ref$overlay === void 0 ? true : _ref$overlay,
43
39
  onBackgroundClick = _ref.onBackgroundClick,
44
- padding = _ref.padding,
40
+ _ref$padding = _ref.padding,
41
+ padding = _ref$padding === void 0 ? "small" : _ref$padding,
45
42
  _ref$tabIndex = _ref.tabIndex,
46
43
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
47
-
48
- var _useState = (0, _react.useState)(false),
49
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
50
- isResponsive = _useState2[0],
51
- setIsResponsive = _useState2[1];
52
-
53
44
  var colorsTheme = (0, _useTheme["default"])();
54
45
 
55
46
  var handleClose = function handleClose() {
@@ -60,31 +51,37 @@ var DxcDialog = function DxcDialog(_ref) {
60
51
  onBackgroundClick === null || onBackgroundClick === void 0 ? void 0 : onBackgroundClick();
61
52
  };
62
53
 
63
- var handleResize = function handleResize(width) {
64
- setIsResponsive(width && width <= _variables.responsiveSizes.tablet);
65
- };
66
-
67
- var handleEventListener = function handleEventListener() {
68
- handleResize(window.innerWidth);
54
+ var handleOnKeyDown = function handleOnKeyDown(event) {
55
+ if (event.key === "Escape") {
56
+ event.preventDefault();
57
+ handleClose();
58
+ }
69
59
  };
70
60
 
71
61
  (0, _react.useEffect)(function () {
72
- window.addEventListener("resize", handleEventListener);
73
- handleResize(window.innerWidth);
62
+ if (isCloseVisible) {
63
+ window.addEventListener("keydown", handleOnKeyDown);
64
+ }
65
+
74
66
  return function () {
75
- window.removeEventListener("resize", handleEventListener);
67
+ window.removeEventListener("keydown", handleOnKeyDown);
76
68
  };
77
- }, []);
69
+ }, [isCloseVisible]);
78
70
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
79
71
  theme: colorsTheme.dialog
80
- }, /*#__PURE__*/_react["default"].createElement(DialogContainer, {
81
- open: true,
82
- isCloseVisible: isCloseVisible,
83
- onClose: handleOverlayClick,
84
- overlay: overlay,
85
- padding: padding,
86
- isResponsive: isResponsive
87
- }, isCloseVisible && /*#__PURE__*/_react["default"].createElement(CloseIconContainer, {
72
+ }, /*#__PURE__*/_react["default"].createElement(BodyStyle, null), /*#__PURE__*/_react["default"].createElement(DialogContainer, {
73
+ role: "presentation"
74
+ }, overlay && /*#__PURE__*/_react["default"].createElement(Overlay, {
75
+ onClick: handleOverlayClick
76
+ }), /*#__PURE__*/_react["default"].createElement(Dialog, {
77
+ role: "dialog",
78
+ "aria-modal": overlay,
79
+ isCloseVisible: isCloseVisible
80
+ }, /*#__PURE__*/_react["default"].createElement(Children, {
81
+ padding: padding
82
+ }, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
83
+ color: colorsTheme.dialog.backgroundColor
84
+ }, children)), isCloseVisible && /*#__PURE__*/_react["default"].createElement(CloseIconContainer, {
88
85
  onClick: handleClose,
89
86
  tabIndex: tabIndex
90
87
  }, /*#__PURE__*/_react["default"].createElement(CloseIcon, {
@@ -98,28 +95,34 @@ var DxcDialog = function DxcDialog(_ref) {
98
95
  fill: "none"
99
96
  }), /*#__PURE__*/_react["default"].createElement("path", {
100
97
  d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"
101
- }))), /*#__PURE__*/_react["default"].createElement(Children, null, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
102
- color: colorsTheme.dialog.backgroundColor
103
- }, children))));
98
+ }))))));
104
99
  };
105
100
 
106
- var DialogContainer = (0, _styledComponents["default"])(_Dialog["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n overflow: unset;\n font-family: ", ";\n\n .MuiBackdrop-root {\n background-color: ", ";\n opacity: ", " !important;\n }\n .MuiDialog-paperWidthSm {\n background-color: ", ";\n max-width: ", ";\n min-width: ", ";\n box-sizing: border-box;\n min-height: ", ";\n box-shadow: ", ";\n\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n }\n"])), function (props) {
107
- return props.theme.fontFamily;
108
- }, function (props) {
109
- return props.overlay === true ? props.theme.overlayColor : "transparent";
110
- }, function (props) {
111
- return props.overlay === true && props.theme.overlayOpacity;
101
+ var BodyStyle = (0, _styledComponents.createGlobalStyle)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n body {\n overflow: hidden;\n }\n"])));
102
+
103
+ var DialogContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n inset: 0px;\n height: 100%;\n z-index: 1300;\n"])));
104
+
105
+ var Overlay = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: fixed;\n inset: 0px;\n height: 100%;\n background-color: ", ";\n opacity: ", ";\n"])), function (props) {
106
+ return props.theme.overlayColor;
112
107
  }, function (props) {
108
+ return props.theme.overlayOpacity;
109
+ });
110
+
111
+ var Dialog = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n z-index: 1300;\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n ", "\n box-sizing: border-box;\n box-shadow: ", ";\n border-radius: 4px;\n\n @media (min-width: ", "rem) {\n max-width: 80%;\n min-width: 800px;\n }\n\n @media (max-width: ", "rem) {\n //mobile phones\n max-width: 92%;\n min-width: 92%;\n }\n"])), function (props) {
113
112
  return props.theme.backgroundColor;
114
113
  }, function (props) {
115
- return props.isResponsive ? "92%" : "80%";
114
+ return props.theme.fontFamily;
116
115
  }, function (props) {
117
- return props.isResponsive ? "92%" : "800px";
116
+ return props.theme.fontSize;
118
117
  }, function (props) {
119
- return props.isCloseVisible ? "72px" : "";
118
+ return props.theme.fontWeight;
120
119
  }, function (props) {
121
- return "".concat(props.theme.boxShadowOffsetX, " ").concat(props.theme.boxShadowOffsetY, " ").concat(props.theme.boxShadowBlur, " ").concat(props.theme.boxShadowColor);
120
+ return props.isCloseVisible && "min-height: 72px;";
122
121
  }, function (props) {
122
+ return "".concat(props.theme.boxShadowOffsetX, " ").concat(props.theme.boxShadowOffsetY, " ").concat(props.theme.boxShadowBlur, " ").concat(props.theme.boxShadowColor);
123
+ }, _variables.responsiveSizes.medium, _variables.responsiveSizes.medium);
124
+
125
+ var Children = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n"])), function (props) {
123
126
  return props.padding && (0, _typeof2["default"])(props.padding) !== "object" ? _variables.spaces[props.padding] : _variables.spaces["small"];
124
127
  }, function (props) {
125
128
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.top ? _variables.spaces[props.padding.top] : "";
@@ -131,13 +134,7 @@ var DialogContainer = (0, _styledComponents["default"])(_Dialog["default"])(_tem
131
134
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.left ? _variables.spaces[props.padding.left] : "";
132
135
  });
133
136
 
134
- var Children = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])([""])));
135
-
136
- var CloseIconContainer = _styledComponents["default"].button(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: flex-end;\n position: absolute;\n top: ", ";\n right: ", ";\n cursor: pointer;\n padding: 0;\n margin: 0;\n background: none;\n color: ", ";\n width: ", ";\n height: ", ";\n border: none;\n"])), function (props) {
137
- return props.theme.closeIconTopPosition;
138
- }, function (props) {
139
- return props.theme.closeIconRightPosition;
140
- }, function (props) {
137
+ var CloseIconContainer = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n padding: 0;\n margin: 0;\n background: none;\n border: none;\n position: relative;\n top: 20px;\n right: 20px;\n color: ", ";\n width: ", ";\n height: ", ";\n"])), function (props) {
141
138
  return props.theme.closeIconColor;
142
139
  }, function (props) {
143
140
  return props.theme.closeIconWidth;
@@ -145,7 +142,7 @@ var CloseIconContainer = _styledComponents["default"].button(_templateObject3 ||
145
142
  return props.theme.closeIconHeight;
146
143
  });
147
144
 
148
- var CloseIcon = _styledComponents["default"].svg(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n width: ", ";\n height: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n"])), function (props) {
145
+ var CloseIcon = _styledComponents["default"].svg(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n width: ", ";\n height: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n"])), function (props) {
149
146
  return props.theme.closeIconBackgroundColor;
150
147
  }, function (props) {
151
148
  return props.theme.closeIconWidth;
@@ -1,5 +1,4 @@
1
1
  import React from "react";
2
- import { userEvent, within } from "@storybook/testing-library";
3
2
  import DxcDialog from "./Dialog";
4
3
  import Title from "../../.storybook/components/Title";
5
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
@@ -209,4 +208,4 @@ export const DialogWithXxlargePadding = () => (
209
208
  </p>{" "}
210
209
  </DxcDialog>
211
210
  </ExampleContainer>
212
- );
211
+ );
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _react2 = require("@testing-library/react");
8
+
9
+ var _Dialog = _interopRequireDefault(require("./Dialog"));
10
+
11
+ describe("Dialog component tests", function () {
12
+ test("Dialog renders with correct text and accesibility attributes", function () {
13
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dialog["default"], null, "dialog-text")),
14
+ getByText = _render.getByText,
15
+ getByRole = _render.getByRole;
16
+
17
+ expect(getByRole("dialog")).toBeTruthy();
18
+ expect(getByRole("dialog").getAttribute("aria-modal")).toBe("true");
19
+ expect(getByText("dialog-text")).toBeTruthy();
20
+ });
21
+ test("Dialog renders without close button", function () {
22
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
23
+ isCloseVisible: false
24
+ }, "dialog-text")),
25
+ queryByRole = _render2.queryByRole;
26
+
27
+ expect(queryByRole("button")).toBeFalsy();
28
+ });
29
+ test("Dialog renders with aria-modal false when overlay is not used", function () {
30
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
31
+ isCloseVisible: false,
32
+ overlay: false
33
+ }, "dialog-text")),
34
+ getByRole = _render3.getByRole;
35
+
36
+ expect(getByRole("dialog")).toBeTruthy();
37
+ expect(getByRole("dialog").getAttribute("aria-modal")).toBe("false");
38
+ });
39
+ test("Calls correct function onCloseClick", function () {
40
+ var onCloseClick = jest.fn();
41
+
42
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
43
+ onCloseClick: onCloseClick
44
+ }, "dialog-text")),
45
+ getByRole = _render4.getByRole;
46
+
47
+ var closeButton = getByRole("button");
48
+
49
+ _react2.fireEvent.click(closeButton);
50
+
51
+ expect(onCloseClick).toHaveBeenCalled();
52
+ });
53
+ test("Calls correct function onCloseClick when 'escape' key is pressed", function () {
54
+ var onCloseClick = jest.fn();
55
+
56
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
57
+ onCloseClick: onCloseClick
58
+ }, "dialog-text")),
59
+ getByRole = _render5.getByRole;
60
+
61
+ _react2.fireEvent.keyDown(getByRole("button"), {
62
+ key: "Escape",
63
+ code: "Escape",
64
+ keyCode: 27,
65
+ charCode: 27
66
+ });
67
+
68
+ expect(onCloseClick).toHaveBeenCalled();
69
+ });
70
+ });
package/dialog/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- declare type Padding = {
2
+ export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ export declare type Padding = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import DropdownPropsType from "./types";
3
- declare const DxcDropdown: ({ options, optionsIconPosition, icon, iconSrc, iconPosition, label, caretHidden, onSelectOption, expandOnHover, margin, size, tabIndex, disabled, }: DropdownPropsType) => JSX.Element;
3
+ declare const DxcDropdown: ({ options, optionsIconPosition, icon, iconPosition, label, caretHidden, onSelectOption, expandOnHover, margin, size, tabIndex, disabled, }: DropdownPropsType) => JSX.Element;
4
4
  export default DxcDropdown;
@@ -9,10 +9,10 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports["default"] = void 0;
11
11
 
12
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
-
14
12
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
13
 
14
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
+
16
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
17
 
18
18
  var _react = _interopRequireWildcard(require("react"));
@@ -35,7 +35,7 @@ var _variables = require("../common/variables.js");
35
35
 
36
36
  var _utils = require("../common/utils.js");
37
37
 
38
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
38
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
39
39
 
40
40
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
41
41
 
@@ -48,8 +48,6 @@ var DxcDropdown = function DxcDropdown(_ref) {
48
48
  _ref$optionsIconPosit = _ref.optionsIconPosition,
49
49
  optionsIconPosition = _ref$optionsIconPosit === void 0 ? "before" : _ref$optionsIconPosit,
50
50
  icon = _ref.icon,
51
- _ref$iconSrc = _ref.iconSrc,
52
- iconSrc = _ref$iconSrc === void 0 ? "" : _ref$iconSrc,
53
51
  _ref$iconPosition = _ref.iconPosition,
54
52
  iconPosition = _ref$iconPosition === void 0 ? "before" : _ref$iconPosition,
55
53
  _ref$label = _ref.label,
@@ -140,6 +138,11 @@ var DxcDropdown = function DxcDropdown(_ref) {
140
138
  }));
141
139
  };
142
140
 
141
+ var labelComponent = /*#__PURE__*/_react["default"].createElement(DropdownTriggerLabel, {
142
+ iconPosition: iconPosition,
143
+ label: label
144
+ }, label);
145
+
143
146
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
144
147
  theme: colorsTheme.dropdown
145
148
  }, /*#__PURE__*/_react["default"].createElement(DXCDropdownContainer, {
@@ -162,20 +165,14 @@ var DxcDropdown = function DxcDropdown(_ref) {
162
165
  ref: ref,
163
166
  tabIndex: tabIndex
164
167
  }, /*#__PURE__*/_react["default"].createElement(DropdownTriggerContainer, {
165
- iconPosition: iconPosition,
166
168
  caretHidden: caretHidden
167
- }, icon ? /*#__PURE__*/_react["default"].createElement(ButtonIconContainer, {
169
+ }, iconPosition === "after" && labelComponent, icon && /*#__PURE__*/_react["default"].createElement(ButtonIconContainer, {
168
170
  label: label,
169
171
  iconPosition: iconPosition,
170
172
  disabled: disabled
171
- }, (0, _typeof2["default"])(icon) === "object" ? icon : /*#__PURE__*/_react["default"].createElement(icon)) : iconSrc && /*#__PURE__*/_react["default"].createElement(ButtonIcon, {
172
- label: label,
173
- src: iconSrc,
174
- iconPosition: iconPosition
175
- }), /*#__PURE__*/_react["default"].createElement(DropdownTriggerLabel, {
176
- iconPosition: iconPosition,
177
- label: label
178
- }, label)), /*#__PURE__*/_react["default"].createElement(CaretIconContainer, {
173
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(ButtonIcon, {
174
+ src: icon
175
+ }) : icon), iconPosition === "before" && labelComponent), /*#__PURE__*/_react["default"].createElement(CaretIconContainer, {
179
176
  caretHidden: caretHidden,
180
177
  disabled: disabled
181
178
  }, !caretHidden && (anchorEl === null ? /*#__PURE__*/_react["default"].createElement(DownArrowIcon, null) : /*#__PURE__*/_react["default"].createElement(UpArrowIcon, null)))), /*#__PURE__*/_react["default"].createElement(DXCMenu, {
@@ -191,7 +188,6 @@ var DxcDropdown = function DxcDropdown(_ref) {
191
188
  vertical: "top",
192
189
  horizontal: "left"
193
190
  },
194
- optionsIconPosition: optionsIconPosition,
195
191
  size: size,
196
192
  width: width,
197
193
  role: undefined,
@@ -213,14 +209,14 @@ var DxcDropdown = function DxcDropdown(_ref) {
213
209
  onClick: function onClick(event) {
214
210
  return handleMenuItemClick(option);
215
211
  }
216
- }, option.icon ? /*#__PURE__*/_react["default"].createElement(ListIconContainer, {
217
- label: option.label,
218
- iconPosition: optionsIconPosition
219
- }, (0, _typeof2["default"])(option.icon) === "object" ? option.icon : /*#__PURE__*/_react["default"].createElement(option.icon)) : option.iconSrc && /*#__PURE__*/_react["default"].createElement(ListIcon, {
212
+ }, optionsIconPosition === "after" && /*#__PURE__*/_react["default"].createElement("span", {
213
+ className: "optionLabel"
214
+ }, option.label), option.icon && /*#__PURE__*/_react["default"].createElement(ListIconContainer, {
220
215
  label: option.label,
221
- src: option.iconSrc,
222
216
  iconPosition: optionsIconPosition
223
- }), /*#__PURE__*/_react["default"].createElement("span", {
217
+ }, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement(ListIcon, {
218
+ src: option.icon
219
+ }) : option.icon), optionsIconPosition === "before" && /*#__PURE__*/_react["default"].createElement("span", {
224
220
  className: "optionLabel"
225
221
  }, option.label));
226
222
  })))));
@@ -257,7 +253,7 @@ var DXCDropdownContainer = _styledComponents["default"].div(_templateObject || (
257
253
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
258
254
  });
259
255
 
260
- var DXCMenu = (0, _styledComponents["default"])(_Popper["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n z-index: 1;\n\n .MuiMenuItem-gutters {\n width: ", ";\n }\n .MuiMenuItem-root {\n min-height: 36px;\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n height: auto;\n }\n .MuiPaper-root {\n min-width: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n border-bottom-left-radius: ", ";\n border-bottom-right-radius: ", ";\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n max-height: 230px;\n overflow-y: auto;\n\n ::-webkit-scrollbar {\n width: 3px;\n }\n ::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 3px;\n }\n ::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 3px;\n }\n\n .MuiList-padding {\n padding-top: 0px;\n padding-bottom: 0px;\n }\n .MuiListItem-button {\n display: flex;\n flex-direction: ", ";\n justify-content: ", ";\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n cursor: pointer;\n }\n .MuiListItem-button:focus {\n outline: ", " solid 2px;\n outline-offset: -2px;\n }\n .MuiListItem-button:hover {\n background-color: ", ";\n }\n .MuiListItem-button:active {\n background-color: ", ";\n outline: ", " solid 2px;\n outline-offset: -2px;\n }\n }\n"])), function (props) {
256
+ var DXCMenu = (0, _styledComponents["default"])(_Popper["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n z-index: 1;\n\n .MuiMenuItem-gutters {\n width: ", ";\n }\n .MuiMenuItem-root {\n min-height: 36px;\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n height: auto;\n }\n .MuiPaper-root {\n min-width: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n border-bottom-left-radius: ", ";\n border-bottom-right-radius: ", ";\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n max-height: 230px;\n overflow-y: auto;\n\n ::-webkit-scrollbar {\n width: 3px;\n }\n ::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 3px;\n }\n ::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 3px;\n }\n\n .MuiList-padding {\n padding-top: 0px;\n padding-bottom: 0px;\n }\n .MuiListItem-button {\n display: flex;\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n cursor: pointer;\n }\n .MuiListItem-button:focus {\n outline: ", " solid 2px;\n outline-offset: -2px;\n }\n .MuiListItem-button:hover {\n background-color: ", ";\n }\n .MuiListItem-button:active {\n background-color: ", ";\n outline: ", " solid 2px;\n outline-offset: -2px;\n }\n }\n"])), function (props) {
261
257
  return calculateWidth(props.margin, props.size);
262
258
  }, function (props) {
263
259
  return props.theme.optionPaddingTop;
@@ -283,10 +279,6 @@ var DXCMenu = (0, _styledComponents["default"])(_Popper["default"])(_templateObj
283
279
  return props.theme.scrollBarTrackColor;
284
280
  }, function (props) {
285
281
  return props.theme.scrollBarThumbColor;
286
- }, function (props) {
287
- return props.optionsIconPosition === "after" && "row-reverse" || "row";
288
- }, function (props) {
289
- return props.optionsIconPosition === "after" && "flex-end" || "";
290
282
  }, function (props) {
291
283
  return props.theme.optionBackgroundColor;
292
284
  }, function (props) {
@@ -351,21 +343,11 @@ var DropdownTrigger = _styledComponents["default"].button(_templateObject3 || (_
351
343
 
352
344
  var DropdownTriggerLabel = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n text-align: left;\n text-overflow: ellipsis;\n overflow: hidden;\n"])));
353
345
 
354
- var DropdownTriggerContainer = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n flex-direction: ", ";\n margin-left: 0px;\n margin-right: 0px;\n width: ", ";\n white-space: nowrap;\n"])), function (props) {
355
- return props.iconPosition === "after" && "row-reverse" || "row";
356
- }, function (props) {
346
+ var DropdownTriggerContainer = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n margin-left: 0px;\n margin-right: 0px;\n width: ", ";\n white-space: nowrap;\n"])), function (props) {
357
347
  return props.caretHidden ? "100%" : "calc(100% - 36px)";
358
348
  });
359
349
 
360
- var ButtonIcon = _styledComponents["default"].img(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n margin-left: ", ";\n margin-right: ", ";\n"])), function (props) {
361
- return props.theme.buttonIconSize;
362
- }, function (props) {
363
- return props.theme.buttonIconSize;
364
- }, function (props) {
365
- return props.iconPosition === "after" && props.label !== "" && props.theme.buttonIconSpacing || "0px";
366
- }, function (props) {
367
- return props.iconPosition === "before" && props.label !== "" && props.theme.buttonIconSpacing || "0px";
368
- });
350
+ var ButtonIcon = _styledComponents["default"].img(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])([""])));
369
351
 
370
352
  var ButtonIconContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n width: ", ";\n height: ", ";\n margin-left: ", ";\n margin-right: ", ";\n color: ", ";\n\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) {
371
353
  return props.theme.buttonIconSize;
@@ -379,15 +361,7 @@ var ButtonIconContainer = _styledComponents["default"].div(_templateObject7 || (
379
361
  return props.disabled ? props.theme.disabledColor : props.theme.buttonIconColor;
380
362
  });
381
363
 
382
- var ListIcon = _styledComponents["default"].img(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n margin-left: ", ";\n margin-right: ", ";\n"])), function (props) {
383
- return props.theme.optionIconSize;
384
- }, function (props) {
385
- return props.theme.optionIconSize;
386
- }, function (props) {
387
- return props.iconPosition === "after" && props.label !== "" && props.theme.optionIconSpacing || "0px";
388
- }, function (props) {
389
- return props.iconPosition === "before" && props.label !== "" && props.theme.optionIconSpacing || "0px";
390
- });
364
+ var ListIcon = _styledComponents["default"].img(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])([""])));
391
365
 
392
366
  var ListIconContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n width: ", ";\n height: ", ";\n margin-left: ", ";\n margin-right: ", ";\n color: ", ";\n\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) {
393
367
  return props.theme.optionIconSize;