@dxc-technology/halstack-react 0.0.0-dcd93c4 → 0.0.0-dddc3c4

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 (121) hide show
  1. package/accordion/types.d.ts +1 -1
  2. package/accordion-group/types.d.ts +1 -1
  3. package/bleed/Bleed.stories.tsx +63 -63
  4. package/bulleted-list/BulletedList.d.ts +7 -0
  5. package/bulleted-list/BulletedList.js +123 -0
  6. package/bulleted-list/BulletedList.stories.tsx +200 -0
  7. package/bulleted-list/types.d.ts +11 -0
  8. package/{inline → bulleted-list}/types.js +0 -0
  9. package/button/Button.js +43 -61
  10. package/button/Button.stories.tsx +9 -0
  11. package/button/types.d.ts +7 -7
  12. package/chip/types.d.ts +1 -1
  13. package/common/variables.js +52 -14
  14. package/date-input/DateInput.js +3 -3
  15. package/dialog/Dialog.js +52 -28
  16. package/dialog/Dialog.stories.tsx +1 -2
  17. package/dialog/Dialog.test.js +34 -4
  18. package/dialog/types.d.ts +2 -2
  19. package/dropdown/Dropdown.d.ts +1 -1
  20. package/dropdown/Dropdown.js +242 -246
  21. package/dropdown/Dropdown.stories.tsx +126 -63
  22. package/dropdown/Dropdown.test.js +510 -108
  23. package/dropdown/DropdownMenu.d.ts +4 -0
  24. package/dropdown/DropdownMenu.js +80 -0
  25. package/dropdown/DropdownMenuItem.d.ts +4 -0
  26. package/dropdown/DropdownMenuItem.js +92 -0
  27. package/dropdown/types.d.ts +25 -5
  28. package/flex/Flex.d.ts +4 -0
  29. package/flex/Flex.js +57 -0
  30. package/flex/Flex.stories.tsx +103 -0
  31. package/flex/types.d.ts +21 -0
  32. package/{list → flex}/types.js +0 -0
  33. package/footer/types.d.ts +1 -1
  34. package/header/Header.js +74 -72
  35. package/header/Header.stories.tsx +4 -4
  36. package/header/Icons.js +2 -2
  37. package/header/types.d.ts +2 -2
  38. package/inset/Inset.stories.tsx +4 -4
  39. package/layout/ApplicationLayout.d.ts +15 -6
  40. package/layout/ApplicationLayout.js +36 -64
  41. package/layout/ApplicationLayout.stories.tsx +80 -44
  42. package/layout/types.d.ts +17 -27
  43. package/link/Link.js +1 -1
  44. package/link/Link.stories.tsx +12 -5
  45. package/link/types.d.ts +1 -1
  46. package/main.d.ts +5 -9
  47. package/main.js +27 -59
  48. package/package.json +9 -9
  49. package/paragraph/Paragraph.d.ts +6 -0
  50. package/paragraph/Paragraph.js +38 -0
  51. package/paragraph/Paragraph.stories.tsx +44 -0
  52. package/progress-bar/ProgressBar.d.ts +2 -2
  53. package/progress-bar/ProgressBar.js +56 -50
  54. package/progress-bar/ProgressBar.stories.jsx +3 -1
  55. package/progress-bar/ProgressBar.test.js +67 -22
  56. package/progress-bar/types.d.ts +3 -4
  57. package/quick-nav/QuickNav.js +15 -13
  58. package/quick-nav/QuickNav.stories.tsx +41 -14
  59. package/radio-group/RadioGroup.js +11 -13
  60. package/select/Listbox.d.ts +1 -1
  61. package/select/Listbox.js +25 -1
  62. package/select/Select.js +14 -31
  63. package/select/Select.stories.tsx +6 -5
  64. package/select/Select.test.js +63 -50
  65. package/select/types.d.ts +2 -4
  66. package/sidenav/Sidenav.d.ts +6 -5
  67. package/sidenav/Sidenav.js +176 -55
  68. package/sidenav/Sidenav.stories.tsx +154 -156
  69. package/sidenav/Sidenav.test.js +25 -37
  70. package/sidenav/types.d.ts +50 -27
  71. package/slider/Slider.js +112 -97
  72. package/slider/Slider.stories.tsx +7 -1
  73. package/slider/Slider.test.js +121 -21
  74. package/slider/types.d.ts +2 -2
  75. package/switch/Switch.d.ts +1 -1
  76. package/switch/Switch.js +110 -54
  77. package/switch/Switch.stories.tsx +8 -30
  78. package/switch/Switch.test.js +122 -8
  79. package/switch/types.d.ts +3 -4
  80. package/tabs/Tab.d.ts +4 -0
  81. package/tabs/Tab.js +135 -0
  82. package/tabs/Tabs.js +360 -104
  83. package/tabs/Tabs.stories.tsx +74 -0
  84. package/tabs/Tabs.test.js +217 -6
  85. package/tabs/types.d.ts +15 -5
  86. package/tabs-nav/NavTabs.js +5 -5
  87. package/tabs-nav/Tab.js +3 -5
  88. package/tabs-nav/types.d.ts +1 -1
  89. package/tag/types.d.ts +1 -1
  90. package/text-input/TextInput.js +12 -21
  91. package/text-input/TextInput.stories.tsx +1 -2
  92. package/text-input/types.d.ts +1 -1
  93. package/toggle-group/types.d.ts +1 -1
  94. package/typography/Typography.d.ts +4 -0
  95. package/typography/Typography.js +131 -0
  96. package/typography/Typography.stories.tsx +198 -0
  97. package/typography/types.d.ts +18 -0
  98. package/{row → typography}/types.js +0 -0
  99. package/wizard/Wizard.js +9 -16
  100. package/wizard/Wizard.stories.tsx +20 -1
  101. package/wizard/types.d.ts +5 -4
  102. package/inline/Inline.d.ts +0 -4
  103. package/inline/Inline.js +0 -60
  104. package/inline/Inline.stories.tsx +0 -319
  105. package/inline/types.d.ts +0 -36
  106. package/list/List.d.ts +0 -4
  107. package/list/List.js +0 -47
  108. package/list/List.stories.tsx +0 -89
  109. package/list/types.d.ts +0 -7
  110. package/row/Row.d.ts +0 -3
  111. package/row/Row.js +0 -127
  112. package/row/Row.stories.tsx +0 -237
  113. package/row/types.d.ts +0 -28
  114. package/stack/Stack.d.ts +0 -4
  115. package/stack/Stack.js +0 -56
  116. package/stack/Stack.stories.tsx +0 -263
  117. package/stack/types.d.ts +0 -32
  118. package/stack/types.js +0 -5
  119. package/text/Text.d.ts +0 -7
  120. package/text/Text.js +0 -30
  121. package/text/Text.stories.tsx +0 -19
package/dialog/Dialog.js CHANGED
@@ -13,19 +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 _react = _interopRequireDefault(require("react"));
16
+ var _react = _interopRequireWildcard(require("react"));
17
17
 
18
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
19
 
20
- var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
21
-
22
20
  var _variables = require("../common/variables.js");
23
21
 
24
22
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
23
 
26
24
  var _BackgroundColorContext = require("../BackgroundColorContext");
27
25
 
28
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
26
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
29
27
 
30
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); }
31
29
 
@@ -53,15 +51,37 @@ var DxcDialog = function DxcDialog(_ref) {
53
51
  onBackgroundClick === null || onBackgroundClick === void 0 ? void 0 : onBackgroundClick();
54
52
  };
55
53
 
54
+ var handleOnKeyDown = function handleOnKeyDown(event) {
55
+ if (event.key === "Escape") {
56
+ event.preventDefault();
57
+ handleClose();
58
+ }
59
+ };
60
+
61
+ (0, _react.useEffect)(function () {
62
+ if (isCloseVisible) {
63
+ window.addEventListener("keydown", handleOnKeyDown);
64
+ }
65
+
66
+ return function () {
67
+ window.removeEventListener("keydown", handleOnKeyDown);
68
+ };
69
+ }, [isCloseVisible]);
56
70
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
57
71
  theme: colorsTheme.dialog
58
- }, /*#__PURE__*/_react["default"].createElement(DialogContainer, {
59
- open: true,
60
- isCloseVisible: isCloseVisible,
61
- onClose: handleOverlayClick,
62
- overlay: overlay,
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, {
63
81
  padding: padding
64
- }, isCloseVisible && /*#__PURE__*/_react["default"].createElement(CloseIconContainer, {
82
+ }, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
83
+ color: colorsTheme.dialog.backgroundColor
84
+ }, children)), isCloseVisible && /*#__PURE__*/_react["default"].createElement(CloseIconContainer, {
65
85
  onClick: handleClose,
66
86
  tabIndex: tabIndex
67
87
  }, /*#__PURE__*/_react["default"].createElement(CloseIcon, {
@@ -75,24 +95,34 @@ var DxcDialog = function DxcDialog(_ref) {
75
95
  fill: "none"
76
96
  }), /*#__PURE__*/_react["default"].createElement("path", {
77
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"
78
- }))), /*#__PURE__*/_react["default"].createElement(Children, null, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
79
- color: colorsTheme.dialog.backgroundColor
80
- }, children))));
98
+ }))))));
81
99
  };
82
100
 
83
- 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 @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\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) {
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;
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) {
112
+ return props.theme.backgroundColor;
113
+ }, function (props) {
84
114
  return props.theme.fontFamily;
85
115
  }, function (props) {
86
- return props.overlay === true ? props.theme.overlayColor : "transparent";
116
+ return props.theme.fontSize;
87
117
  }, function (props) {
88
- return props.overlay === true && props.theme.overlayOpacity;
118
+ return props.theme.fontWeight;
89
119
  }, function (props) {
90
- return props.theme.backgroundColor;
91
- }, _variables.responsiveSizes.medium, _variables.responsiveSizes.medium, function (props) {
92
- return props.isCloseVisible ? "72px" : "";
120
+ return props.isCloseVisible && "min-height: 72px;";
93
121
  }, function (props) {
94
122
  return "".concat(props.theme.boxShadowOffsetX, " ").concat(props.theme.boxShadowOffsetY, " ").concat(props.theme.boxShadowBlur, " ").concat(props.theme.boxShadowColor);
95
- }, function (props) {
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) {
96
126
  return props.padding && (0, _typeof2["default"])(props.padding) !== "object" ? _variables.spaces[props.padding] : _variables.spaces["small"];
97
127
  }, function (props) {
98
128
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.top ? _variables.spaces[props.padding.top] : "";
@@ -104,13 +134,7 @@ var DialogContainer = (0, _styledComponents["default"])(_Dialog["default"])(_tem
104
134
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.left ? _variables.spaces[props.padding.left] : "";
105
135
  });
106
136
 
107
- var Children = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])([""])));
108
-
109
- 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) {
110
- return props.theme.closeIconTopPosition;
111
- }, function (props) {
112
- return props.theme.closeIconRightPosition;
113
- }, 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) {
114
138
  return props.theme.closeIconColor;
115
139
  }, function (props) {
116
140
  return props.theme.closeIconWidth;
@@ -118,7 +142,7 @@ var CloseIconContainer = _styledComponents["default"].button(_templateObject3 ||
118
142
  return props.theme.closeIconHeight;
119
143
  });
120
144
 
121
- 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) {
122
146
  return props.theme.closeIconBackgroundColor;
123
147
  }, function (props) {
124
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
+ );
@@ -9,10 +9,13 @@ var _react2 = require("@testing-library/react");
9
9
  var _Dialog = _interopRequireDefault(require("./Dialog"));
10
10
 
11
11
  describe("Dialog component tests", function () {
12
- test("Dialog renders with correct text", function () {
12
+ test("Dialog renders with correct text and accesibility attributes", function () {
13
13
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dialog["default"], null, "dialog-text")),
14
- getByText = _render.getByText;
14
+ getByText = _render.getByText,
15
+ getByRole = _render.getByRole;
15
16
 
17
+ expect(getByRole("dialog")).toBeTruthy();
18
+ expect(getByRole("dialog").getAttribute("aria-modal")).toBe("true");
16
19
  expect(getByText("dialog-text")).toBeTruthy();
17
20
  });
18
21
  test("Dialog renders without close button", function () {
@@ -23,18 +26,45 @@ describe("Dialog component tests", function () {
23
26
 
24
27
  expect(queryByRole("button")).toBeFalsy();
25
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
+ });
26
39
  test("Calls correct function onCloseClick", function () {
27
40
  var onCloseClick = jest.fn();
28
41
 
29
- var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
42
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
30
43
  onCloseClick: onCloseClick
31
44
  }, "dialog-text")),
32
- getByRole = _render3.getByRole;
45
+ getByRole = _render4.getByRole;
33
46
 
34
47
  var closeButton = getByRole("button");
35
48
 
36
49
  _react2.fireEvent.click(closeButton);
37
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
+
38
68
  expect(onCloseClick).toHaveBeenCalled();
39
69
  });
40
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, iconPosition, label, caretHidden, onSelectOption, expandOnHover, margin, size, tabIndex, disabled, }: DropdownPropsType) => JSX.Element;
3
+ declare const DxcDropdown: ({ options, optionsIconPosition, icon, iconPosition, label, caretHidden, disabled, expandOnHover, onSelectOption, margin, size, tabIndex, }: DropdownPropsType) => JSX.Element;
4
4
  export default DxcDropdown;