@dxc-technology/halstack-react 0.0.0-38849bf → 0.0.0-39dd536

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 (288) 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.d.ts +1 -1
  28. package/box/Box.js +26 -39
  29. package/box/Box.test.js +18 -0
  30. package/box/types.d.ts +0 -4
  31. package/bulleted-list/BulletedList.d.ts +7 -0
  32. package/bulleted-list/BulletedList.js +123 -0
  33. package/bulleted-list/BulletedList.stories.tsx +200 -0
  34. package/bulleted-list/types.d.ts +11 -0
  35. package/bulleted-list/types.js +5 -0
  36. package/button/Button.d.ts +1 -1
  37. package/button/Button.js +62 -83
  38. package/button/Button.stories.tsx +15 -8
  39. package/button/Button.test.js +35 -0
  40. package/button/types.d.ts +10 -14
  41. package/card/Card.js +26 -30
  42. package/card/Card.stories.tsx +201 -0
  43. package/card/Card.test.js +50 -0
  44. package/card/ice-cream.jpg +0 -0
  45. package/card/types.d.ts +4 -6
  46. package/checkbox/Checkbox.d.ts +1 -1
  47. package/checkbox/Checkbox.js +45 -41
  48. package/checkbox/Checkbox.stories.tsx +124 -128
  49. package/checkbox/Checkbox.test.js +78 -0
  50. package/checkbox/types.d.ts +9 -5
  51. package/chip/Chip.d.ts +4 -0
  52. package/chip/Chip.js +16 -76
  53. package/chip/Chip.stories.tsx +119 -0
  54. package/chip/Chip.test.js +56 -0
  55. package/chip/types.d.ts +45 -0
  56. package/chip/types.js +5 -0
  57. package/common/variables.js +275 -352
  58. package/date-input/DateInput.js +66 -55
  59. package/date-input/DateInput.stories.tsx +7 -7
  60. package/date-input/DateInput.test.js +479 -0
  61. package/date-input/types.d.ts +16 -9
  62. package/dialog/Dialog.js +50 -53
  63. package/dialog/Dialog.stories.tsx +211 -0
  64. package/dialog/Dialog.test.js +70 -0
  65. package/dialog/types.d.ts +2 -2
  66. package/dropdown/Dropdown.d.ts +1 -1
  67. package/dropdown/Dropdown.js +22 -48
  68. package/dropdown/Dropdown.stories.tsx +249 -0
  69. package/dropdown/Dropdown.test.js +189 -0
  70. package/dropdown/types.d.ts +6 -15
  71. package/file-input/FileInput.d.ts +4 -0
  72. package/file-input/FileInput.js +172 -111
  73. package/file-input/FileInput.stories.tsx +507 -0
  74. package/file-input/FileInput.test.js +457 -0
  75. package/file-input/FileItem.d.ts +14 -0
  76. package/file-input/FileItem.js +16 -23
  77. package/file-input/types.d.ts +112 -0
  78. package/file-input/types.js +5 -0
  79. package/flex/Flex.d.ts +4 -0
  80. package/flex/Flex.js +57 -0
  81. package/flex/Flex.stories.tsx +103 -0
  82. package/flex/types.d.ts +21 -0
  83. package/flex/types.js +5 -0
  84. package/footer/Footer.d.ts +1 -1
  85. package/footer/Footer.js +32 -113
  86. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +1 -22
  87. package/footer/Footer.test.js +109 -0
  88. package/footer/Icons.d.ts +2 -0
  89. package/footer/Icons.js +4 -4
  90. package/footer/types.d.ts +22 -18
  91. package/header/Header.js +29 -50
  92. package/header/Header.stories.tsx +172 -0
  93. package/header/Header.test.js +79 -0
  94. package/header/Icons.d.ts +2 -0
  95. package/header/types.d.ts +4 -2
  96. package/heading/Heading.d.ts +4 -0
  97. package/heading/Heading.js +7 -24
  98. package/heading/Heading.stories.tsx +54 -0
  99. package/heading/Heading.test.js +186 -0
  100. package/heading/types.d.ts +33 -0
  101. package/heading/types.js +5 -0
  102. package/inset/Inset.d.ts +3 -0
  103. package/inset/Inset.js +51 -0
  104. package/inset/Inset.stories.tsx +229 -0
  105. package/inset/types.d.ts +37 -0
  106. package/inset/types.js +5 -0
  107. package/layout/ApplicationLayout.d.ts +20 -0
  108. package/layout/ApplicationLayout.js +71 -135
  109. package/layout/ApplicationLayout.stories.tsx +161 -0
  110. package/layout/Icons.d.ts +5 -0
  111. package/layout/Icons.js +13 -2
  112. package/layout/SidenavContext.d.ts +5 -0
  113. package/layout/SidenavContext.js +19 -0
  114. package/layout/types.d.ts +42 -0
  115. package/layout/types.js +5 -0
  116. package/link/Link.d.ts +3 -2
  117. package/link/Link.js +61 -86
  118. package/link/Link.stories.tsx +139 -16
  119. package/link/Link.test.js +83 -0
  120. package/link/types.d.ts +9 -29
  121. package/main.d.ts +12 -12
  122. package/main.js +64 -58
  123. package/number-input/NumberInput.js +14 -24
  124. package/number-input/NumberInput.stories.tsx +5 -5
  125. package/number-input/NumberInput.test.js +506 -0
  126. package/number-input/NumberInputContext.d.ts +4 -0
  127. package/number-input/NumberInputContext.js +5 -2
  128. package/number-input/numberInputContextTypes.d.ts +19 -0
  129. package/number-input/numberInputContextTypes.js +5 -0
  130. package/number-input/types.d.ts +17 -10
  131. package/package.json +14 -10
  132. package/paginator/Paginator.js +19 -46
  133. package/paginator/Paginator.test.js +308 -0
  134. package/paragraph/Paragraph.d.ts +6 -0
  135. package/paragraph/Paragraph.js +38 -0
  136. package/paragraph/Paragraph.stories.tsx +44 -0
  137. package/password-input/PasswordInput.js +23 -19
  138. package/password-input/PasswordInput.stories.tsx +3 -3
  139. package/password-input/PasswordInput.test.js +180 -0
  140. package/password-input/types.d.ts +29 -19
  141. package/progress-bar/ProgressBar.d.ts +2 -2
  142. package/progress-bar/ProgressBar.js +59 -53
  143. package/progress-bar/ProgressBar.stories.jsx +13 -11
  144. package/progress-bar/ProgressBar.test.js +110 -0
  145. package/progress-bar/types.d.ts +3 -4
  146. package/quick-nav/QuickNav.d.ts +4 -0
  147. package/quick-nav/QuickNav.js +118 -0
  148. package/quick-nav/QuickNav.stories.tsx +264 -0
  149. package/quick-nav/types.d.ts +21 -0
  150. package/quick-nav/types.js +5 -0
  151. package/radio-group/Radio.d.ts +4 -0
  152. package/radio-group/Radio.js +141 -0
  153. package/radio-group/RadioGroup.d.ts +4 -0
  154. package/radio-group/RadioGroup.js +281 -0
  155. package/radio-group/RadioGroup.stories.tsx +100 -0
  156. package/radio-group/RadioGroup.test.js +695 -0
  157. package/radio-group/types.d.ts +114 -0
  158. package/radio-group/types.js +5 -0
  159. package/resultsetTable/ResultsetTable.d.ts +4 -0
  160. package/resultsetTable/ResultsetTable.js +9 -29
  161. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  162. package/resultsetTable/ResultsetTable.test.js +348 -0
  163. package/resultsetTable/types.d.ts +67 -0
  164. package/resultsetTable/types.js +5 -0
  165. package/select/Icons.d.ts +10 -0
  166. package/select/Icons.js +93 -0
  167. package/select/Listbox.d.ts +4 -0
  168. package/select/Listbox.js +199 -0
  169. package/select/Option.d.ts +4 -0
  170. package/select/Option.js +110 -0
  171. package/select/Select.d.ts +4 -0
  172. package/select/Select.js +158 -380
  173. package/select/Select.stories.tsx +627 -0
  174. package/select/Select.test.js +2175 -0
  175. package/select/types.d.ts +210 -0
  176. package/select/types.js +5 -0
  177. package/sidenav/Sidenav.d.ts +6 -5
  178. package/sidenav/Sidenav.js +186 -54
  179. package/sidenav/Sidenav.stories.tsx +180 -0
  180. package/sidenav/Sidenav.test.js +44 -0
  181. package/sidenav/types.d.ts +50 -27
  182. package/slider/Slider.d.ts +1 -1
  183. package/slider/Slider.js +10 -9
  184. package/slider/Slider.stories.tsx +14 -9
  185. package/slider/Slider.test.js +150 -0
  186. package/slider/types.d.ts +4 -0
  187. package/spinner/Spinner.js +3 -3
  188. package/spinner/Spinner.stories.jsx +1 -0
  189. package/spinner/Spinner.test.js +64 -0
  190. package/switch/Switch.d.ts +1 -1
  191. package/switch/Switch.js +37 -21
  192. package/switch/Switch.stories.tsx +15 -15
  193. package/switch/Switch.test.js +98 -0
  194. package/switch/types.d.ts +6 -2
  195. package/table/Table.js +3 -3
  196. package/table/Table.stories.jsx +2 -1
  197. package/table/Table.test.js +26 -0
  198. package/tabs/Tabs.d.ts +1 -1
  199. package/tabs/Tabs.js +20 -20
  200. package/tabs/Tabs.stories.tsx +112 -0
  201. package/tabs/Tabs.test.js +140 -0
  202. package/tabs/types.d.ts +29 -18
  203. package/tabs-nav/NavTabs.d.ts +8 -0
  204. package/tabs-nav/NavTabs.js +125 -0
  205. package/tabs-nav/NavTabs.stories.tsx +170 -0
  206. package/tabs-nav/NavTabs.test.js +82 -0
  207. package/tabs-nav/Tab.d.ts +4 -0
  208. package/tabs-nav/Tab.js +130 -0
  209. package/tabs-nav/types.d.ts +53 -0
  210. package/tabs-nav/types.js +5 -0
  211. package/tag/Tag.d.ts +1 -1
  212. package/tag/Tag.js +18 -28
  213. package/tag/Tag.stories.tsx +26 -29
  214. package/tag/Tag.test.js +60 -0
  215. package/tag/types.d.ts +23 -14
  216. package/text-input/Suggestion.d.ts +4 -0
  217. package/text-input/Suggestion.js +55 -0
  218. package/text-input/TextInput.d.ts +4 -0
  219. package/text-input/TextInput.js +103 -167
  220. package/text-input/TextInput.stories.tsx +473 -0
  221. package/text-input/TextInput.test.js +1712 -0
  222. package/text-input/types.d.ts +178 -0
  223. package/text-input/types.js +5 -0
  224. package/textarea/Textarea.d.ts +4 -0
  225. package/textarea/Textarea.js +39 -79
  226. package/textarea/Textarea.stories.jsx +37 -15
  227. package/textarea/Textarea.test.js +437 -0
  228. package/textarea/types.d.ts +137 -0
  229. package/textarea/types.js +5 -0
  230. package/toggle-group/ToggleGroup.d.ts +4 -0
  231. package/toggle-group/ToggleGroup.js +18 -46
  232. package/toggle-group/ToggleGroup.stories.tsx +173 -0
  233. package/toggle-group/ToggleGroup.test.js +156 -0
  234. package/toggle-group/types.d.ts +105 -0
  235. package/toggle-group/types.js +5 -0
  236. package/typography/Typography.d.ts +4 -0
  237. package/typography/Typography.js +131 -0
  238. package/typography/Typography.stories.tsx +198 -0
  239. package/typography/types.d.ts +18 -0
  240. package/typography/types.js +5 -0
  241. package/useTheme.d.ts +2 -0
  242. package/useTheme.js +2 -2
  243. package/useTranslatedLabels.d.ts +2 -0
  244. package/useTranslatedLabels.js +20 -0
  245. package/wizard/Wizard.d.ts +4 -0
  246. package/wizard/Wizard.js +118 -104
  247. package/wizard/Wizard.stories.tsx +233 -0
  248. package/wizard/Wizard.test.js +141 -0
  249. package/wizard/types.d.ts +65 -0
  250. package/wizard/types.js +5 -0
  251. package/ThemeContext.js +0 -246
  252. package/V3Select/V3Select.js +0 -455
  253. package/V3Select/index.d.ts +0 -27
  254. package/V3Textarea/V3Textarea.js +0 -260
  255. package/V3Textarea/index.d.ts +0 -27
  256. package/chip/index.d.ts +0 -22
  257. package/date/Date.js +0 -373
  258. package/date/index.d.ts +0 -27
  259. package/file-input/index.d.ts +0 -81
  260. package/heading/index.d.ts +0 -17
  261. package/input-text/Icons.js +0 -22
  262. package/input-text/InputText.js +0 -611
  263. package/input-text/index.d.ts +0 -36
  264. package/radio/Radio.d.ts +0 -4
  265. package/radio/Radio.js +0 -174
  266. package/radio/Radio.stories.tsx +0 -192
  267. package/radio/types.d.ts +0 -54
  268. package/resultsetTable/index.d.ts +0 -19
  269. package/select/index.d.ts +0 -131
  270. package/text-input/index.d.ts +0 -135
  271. package/textarea/index.d.ts +0 -117
  272. package/toggle/Toggle.js +0 -186
  273. package/toggle/index.d.ts +0 -21
  274. package/toggle-group/index.d.ts +0 -21
  275. package/upload/Upload.js +0 -201
  276. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  277. package/upload/buttons-upload/Icons.js +0 -40
  278. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  279. package/upload/dragAndDropArea/Icons.js +0 -39
  280. package/upload/file-upload/FileToUpload.js +0 -115
  281. package/upload/file-upload/Icons.js +0 -66
  282. package/upload/files-upload/FilesToUpload.js +0 -109
  283. package/upload/index.d.ts +0 -15
  284. package/upload/transaction/Icons.js +0 -160
  285. package/upload/transaction/Transaction.js +0 -104
  286. package/upload/transactions/Transactions.js +0 -94
  287. package/wizard/Icons.js +0 -65
  288. package/wizard/index.d.ts +0 -18
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;
@@ -0,0 +1,211 @@
1
+ import React from "react";
2
+ import DxcDialog from "./Dialog";
3
+ import Title from "../../.storybook/components/Title";
4
+ import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
+
6
+ export default {
7
+ title: "Dialog ",
8
+ component: DxcDialog,
9
+ };
10
+
11
+ export const DefaultDialog = () => (
12
+ <>
13
+ <ExampleContainer expanded={true}>
14
+ <Title title="Default dialog" theme="light" level={4} />
15
+ <DxcDialog>
16
+ {" "}
17
+ <p>
18
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
19
+ placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
20
+ elit. Donec congue laoreet orci, nec elementum dolor consequat quis. Curabitur rhoncus justo sed dapibus
21
+ tincidunt. Vestibulum cursus ut risus sit amet congue. Nunc luctus, urna ullamcorper facilisis Jia Le, risus
22
+ eros aliquam erat, ut efficitur ante neque id odio. Nam orci leo, dignissim sit amet dolor ut, congue gravida
23
+ enim. Donec rhoncus aliquam nisl, ac cursus enim bibendum vitae. Nunc sit amet elit ornare, malesuada urna eu,
24
+ fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
25
+ augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
26
+ dignissim, pharetra neque molestie, molestie lectus.
27
+ </p>{" "}
28
+ </DxcDialog>
29
+ </ExampleContainer>
30
+ </>
31
+ );
32
+
33
+ export const DialogWithoutOverlay = () => (
34
+ <ExampleContainer expanded={true}>
35
+ <Title title="Dialog Without Overlay" theme="light" level={4} />
36
+ <DxcDialog overlay={false}>
37
+ {" "}
38
+ <p>
39
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
40
+ placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
41
+ elit. Donec congue laoreet orci, nec elementum dolor consequat quis. Curabitur rhoncus justo sed dapibus
42
+ tincidunt. Vestibulum cursus ut risus sit amet congue. Nunc luctus, urna ullamcorper facilisis Jia Le, risus
43
+ eros aliquam erat, ut efficitur ante neque id odio. Nam orci leo, dignissim sit amet dolor ut, congue gravida
44
+ enim. Donec rhoncus aliquam nisl, ac cursus enim bibendum vitae. Nunc sit amet elit ornare, malesuada urna eu,
45
+ fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
46
+ augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
47
+ dignissim, pharetra neque molestie, molestie lectus.
48
+ </p>{" "}
49
+ </DxcDialog>
50
+ </ExampleContainer>
51
+ );
52
+
53
+ export const DialogCloseVisibleFalse = () => (
54
+ <ExampleContainer expanded={true}>
55
+ <Title title="Dialog Close Visible" theme="dark" level={4} />
56
+ <DxcDialog isCloseVisible={false}>
57
+ {" "}
58
+ <p>
59
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
60
+ placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
61
+ elit. Donec congue laoreet orci, nec elementum dolor consequat quis. Curabitur rhoncus justo sed dapibus
62
+ tincidunt. Vestibulum cursus ut risus sit amet congue. Nunc luctus, urna ullamcorper facilisis Jia Le, risus
63
+ eros aliquam erat, ut efficitur ante neque id odio. Nam orci leo, dignissim sit amet dolor ut, congue gravida
64
+ enim. Donec rhoncus aliquam nisl, ac cursus enim bibendum vitae. Nunc sit amet elit ornare, malesuada urna eu,
65
+ fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
66
+ augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
67
+ dignissim, pharetra neque molestie, molestie lectus.
68
+ </p>{" "}
69
+ </DxcDialog>
70
+ </ExampleContainer>
71
+ );
72
+
73
+ export const DialogWithXxsmallPadding = () => (
74
+ <ExampleContainer expanded={true}>
75
+ <Title title="Dialog With Xxsmall Padding" theme="light" level={4} />
76
+ <DxcDialog padding={"xxsmall"}>
77
+ {" "}
78
+ <p>
79
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
80
+ placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
81
+ elit. Donec congue laoreet orci, nec elementum dolor consequat quis. Curabitur rhoncus justo sed dapibus
82
+ tincidunt. Vestibulum cursus ut risus sit amet congue. Nunc luctus, urna ullamcorper facilisis Jia Le, risus
83
+ eros aliquam erat, ut efficitur ante neque id odio. Nam orci leo, dignissim sit amet dolor ut, congue gravida
84
+ enim. Donec rhoncus aliquam nisl, ac cursus enim bibendum vitae. Nunc sit amet elit ornare, malesuada urna eu,
85
+ fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
86
+ augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
87
+ dignissim, pharetra neque molestie, molestie lectus.
88
+ </p>{" "}
89
+ </DxcDialog>
90
+ </ExampleContainer>
91
+ );
92
+
93
+ export const DialogWithXsmallPadding = () => (
94
+ <ExampleContainer expanded={true}>
95
+ <Title title="Dialog With Xsmall Padding" theme="light" level={4} />
96
+ <DxcDialog padding={"xsmall"}>
97
+ {" "}
98
+ <p>
99
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
100
+ placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
101
+ elit. Donec congue laoreet orci, nec elementum dolor consequat quis. Curabitur rhoncus justo sed dapibus
102
+ tincidunt. Vestibulum cursus ut risus sit amet congue. Nunc luctus, urna ullamcorper facilisis Jia Le, risus
103
+ eros aliquam erat, ut efficitur ante neque id odio. Nam orci leo, dignissim sit amet dolor ut, congue gravida
104
+ enim. Donec rhoncus aliquam nisl, ac cursus enim bibendum vitae. Nunc sit amet elit ornare, malesuada urna eu,
105
+ fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
106
+ augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
107
+ dignissim, pharetra neque molestie, molestie lectus.
108
+ </p>{" "}
109
+ </DxcDialog>
110
+ </ExampleContainer>
111
+ );
112
+
113
+ export const DialogWithSmallPadding = () => (
114
+ <ExampleContainer expanded={true}>
115
+ <Title title="Dialog With Small Padding" theme="light" level={4} />
116
+ <DxcDialog padding={"small"}>
117
+ {" "}
118
+ <p>
119
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
120
+ placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
121
+ elit. Donec congue laoreet orci, nec elementum dolor consequat quis. Curabitur rhoncus justo sed dapibus
122
+ tincidunt. Vestibulum cursus ut risus sit amet congue. Nunc luctus, urna ullamcorper facilisis Jia Le, risus
123
+ eros aliquam erat, ut efficitur ante neque id odio. Nam orci leo, dignissim sit amet dolor ut, congue gravida
124
+ enim. Donec rhoncus aliquam nisl, ac cursus enim bibendum vitae. Nunc sit amet elit ornare, malesuada urna eu,
125
+ fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
126
+ augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
127
+ dignissim, pharetra neque molestie, molestie lectus.
128
+ </p>{" "}
129
+ </DxcDialog>
130
+ </ExampleContainer>
131
+ );
132
+
133
+ export const DialogWithMediumPadding = () => (
134
+ <ExampleContainer expanded={true}>
135
+ <Title title="Dialog With Medium Padding" theme="light" level={4} />
136
+ <DxcDialog padding={"medium"}>
137
+ {" "}
138
+ <p>
139
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
140
+ placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
141
+ elit. Donec congue laoreet orci, nec elementum dolor consequat quis. Curabitur rhoncus justo sed dapibus
142
+ tincidunt. Vestibulum cursus ut risus sit amet congue. Nunc luctus, urna ullamcorper facilisis Jia Le, risus
143
+ eros aliquam erat, ut efficitur ante neque id odio. Nam orci leo, dignissim sit amet dolor ut, congue gravida
144
+ enim. Donec rhoncus aliquam nisl, ac cursus enim bibendum vitae. Nunc sit amet elit ornare, malesuada urna eu,
145
+ fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
146
+ augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
147
+ dignissim, pharetra neque molestie, molestie lectus.
148
+ </p>{" "}
149
+ </DxcDialog>
150
+ </ExampleContainer>
151
+ );
152
+
153
+ export const DialogWithLargePadding = () => (
154
+ <ExampleContainer expanded={true}>
155
+ <Title title="Dialog With Large Padding" theme="light" level={4} />
156
+ <DxcDialog padding={"large"}>
157
+ {" "}
158
+ <p>
159
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
160
+ placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
161
+ elit. Donec congue laoreet orci, nec elementum dolor consequat quis. Curabitur rhoncus justo sed dapibus
162
+ tincidunt. Vestibulum cursus ut risus sit amet congue. Nunc luctus, urna ullamcorper facilisis Jia Le, risus
163
+ eros aliquam erat, ut efficitur ante neque id odio. Nam orci leo, dignissim sit amet dolor ut, congue gravida
164
+ enim. Donec rhoncus aliquam nisl, ac cursus enim bibendum vitae. Nunc sit amet elit ornare, malesuada urna eu,
165
+ fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
166
+ augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
167
+ dignissim, pharetra neque molestie, molestie lectus.
168
+ </p>{" "}
169
+ </DxcDialog>
170
+ </ExampleContainer>
171
+ );
172
+
173
+ export const DialogWithXlargePadding = () => (
174
+ <ExampleContainer expanded={true}>
175
+ <Title title="Dialog With Xlarge Padding" theme="light" level={4} />
176
+ <DxcDialog padding={"xlarge"}>
177
+ {" "}
178
+ <p>
179
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
180
+ placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
181
+ elit. Donec congue laoreet orci, nec elementum dolor consequat quis. Curabitur rhoncus justo sed dapibus
182
+ tincidunt. Vestibulum cursus ut risus sit amet congue. Nunc luctus, urna ullamcorper facilisis Jia Le, risus
183
+ eros aliquam erat, ut efficitur ante neque id odio. Nam orci leo, dignissim sit amet dolor ut, congue gravida
184
+ enim. Donec rhoncus aliquam nisl, ac cursus enim bibendum vitae. Nunc sit amet elit ornare, malesuada urna eu,
185
+ fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
186
+ augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
187
+ dignissim, pharetra neque molestie, molestie lectus.
188
+ </p>{" "}
189
+ </DxcDialog>
190
+ </ExampleContainer>
191
+ );
192
+
193
+ export const DialogWithXxlargePadding = () => (
194
+ <ExampleContainer expanded={true}>
195
+ <Title title="Dialog With Xxlarge Padding" theme="light" level={4} />
196
+ <DxcDialog padding={"xxlarge"}>
197
+ {" "}
198
+ <p>
199
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
200
+ placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
201
+ elit. Donec congue laoreet orci, nec elementum dolor consequat quis. Curabitur rhoncus justo sed dapibus
202
+ tincidunt. Vestibulum cursus ut risus sit amet congue. Nunc luctus, urna ullamcorper facilisis Jia Le, risus
203
+ eros aliquam erat, ut efficitur ante neque id odio. Nam orci leo, dignissim sit amet dolor ut, congue gravida
204
+ enim. Donec rhoncus aliquam nisl, ac cursus enim bibendum vitae. Nunc sit amet elit ornare, malesuada urna eu,
205
+ fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
206
+ augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
207
+ dignissim, pharetra neque molestie, molestie lectus.
208
+ </p>{" "}
209
+ </DxcDialog>
210
+ </ExampleContainer>
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;