@dxc-technology/halstack-react 0.0.0-c908d78 → 0.0.0-cae3419
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.
- package/BackgroundColorContext.d.ts +10 -0
- package/BackgroundColorContext.js +1 -4
- package/ThemeContext.d.ts +10 -0
- package/ThemeContext.js +26 -29
- package/accordion/Accordion.d.ts +1 -1
- package/accordion/Accordion.js +11 -22
- package/accordion/Accordion.stories.tsx +307 -0
- package/accordion/Accordion.test.js +57 -0
- package/accordion/types.d.ts +4 -8
- package/accordion-group/AccordionGroup.js +2 -2
- package/accordion-group/AccordionGroup.stories.tsx +225 -0
- package/accordion-group/AccordionGroup.test.js +133 -0
- package/accordion-group/types.d.ts +4 -8
- package/alert/Alert.js +2 -2
- package/alert/Alert.stories.tsx +170 -0
- package/alert/Alert.test.js +92 -0
- package/alert/types.d.ts +1 -1
- package/badge/Badge.d.ts +4 -0
- package/badge/Badge.js +1 -1
- package/badge/types.d.ts +4 -0
- package/badge/types.js +5 -0
- package/bleed/Bleed.d.ts +3 -0
- package/bleed/Bleed.js +84 -0
- package/bleed/Bleed.stories.tsx +342 -0
- package/bleed/types.d.ts +13 -0
- package/bleed/types.js +5 -0
- package/box/Box.d.ts +1 -1
- package/box/Box.js +4 -7
- package/box/Box.test.js +18 -0
- package/box/types.d.ts +0 -4
- package/button/Button.d.ts +1 -1
- package/button/Button.js +13 -19
- package/button/Button.stories.tsx +222 -241
- package/button/Button.test.js +35 -0
- package/button/types.d.ts +5 -9
- package/card/Card.js +5 -6
- package/card/Card.stories.tsx +201 -0
- package/card/Card.test.js +50 -0
- package/card/ice-cream.jpg +0 -0
- package/card/types.d.ts +4 -6
- package/checkbox/Checkbox.js +2 -2
- package/checkbox/Checkbox.test.js +65 -0
- package/checkbox/types.d.ts +2 -2
- package/chip/Chip.d.ts +4 -0
- package/chip/Chip.js +16 -76
- package/chip/Chip.stories.tsx +119 -0
- package/chip/Chip.test.js +56 -0
- package/chip/types.d.ts +45 -0
- package/chip/types.js +5 -0
- package/common/variables.js +69 -265
- package/date-input/DateInput.js +10 -13
- package/date-input/DateInput.stories.tsx +138 -0
- package/date-input/DateInput.test.js +469 -0
- package/dialog/Dialog.js +4 -3
- package/dialog/Dialog.stories.tsx +212 -0
- package/dialog/Dialog.test.js +40 -0
- package/dropdown/Dropdown.d.ts +1 -1
- package/dropdown/Dropdown.js +13 -35
- package/dropdown/Dropdown.stories.tsx +249 -0
- package/dropdown/Dropdown.test.js +189 -0
- package/dropdown/types.d.ts +6 -15
- package/file-input/FileInput.d.ts +4 -0
- package/file-input/FileInput.js +167 -109
- package/file-input/FileInput.stories.tsx +507 -0
- package/file-input/FileInput.test.js +457 -0
- package/file-input/FileItem.d.ts +14 -0
- package/file-input/FileItem.js +12 -21
- package/file-input/types.d.ts +112 -0
- package/file-input/types.js +5 -0
- package/footer/Footer.d.ts +1 -1
- package/footer/Footer.js +28 -36
- package/footer/{Footer.stories.jsx → Footer.stories.tsx} +1 -22
- package/footer/Footer.test.js +109 -0
- package/footer/Icons.d.ts +2 -0
- package/footer/Icons.js +3 -3
- package/footer/types.d.ts +22 -18
- package/header/Header.js +2 -2
- package/header/Header.stories.tsx +162 -0
- package/header/Header.test.js +63 -0
- package/header/Icons.d.ts +2 -0
- package/header/types.d.ts +4 -2
- package/heading/Heading.d.ts +4 -0
- package/heading/Heading.js +7 -24
- package/heading/Heading.stories.tsx +54 -0
- package/heading/Heading.test.js +186 -0
- package/heading/types.d.ts +33 -0
- package/heading/types.js +5 -0
- package/inset/Inset.d.ts +3 -0
- package/inset/Inset.js +84 -0
- package/inset/Inset.stories.tsx +229 -0
- package/inset/types.d.ts +13 -0
- package/inset/types.js +5 -0
- package/layout/ApplicationLayout.d.ts +10 -0
- package/layout/ApplicationLayout.js +17 -21
- package/layout/ApplicationLayout.stories.tsx +171 -0
- package/layout/types.d.ts +57 -0
- package/layout/types.js +5 -0
- package/link/Link.js +10 -18
- package/link/Link.stories.tsx +151 -0
- package/link/Link.test.js +91 -0
- package/link/types.d.ts +5 -9
- package/list/List.d.ts +4 -0
- package/list/List.js +47 -0
- package/list/List.stories.tsx +95 -0
- package/list/types.d.ts +7 -0
- package/list/types.js +5 -0
- package/main.d.ts +10 -8
- package/main.js +54 -38
- package/number-input/NumberInput.d.ts +4 -0
- package/number-input/NumberInput.js +5 -50
- package/number-input/{NumberInput.stories.jsx → NumberInput.stories.tsx} +0 -0
- package/number-input/NumberInput.test.js +508 -0
- package/number-input/NumberInputContext.d.ts +4 -0
- package/number-input/NumberInputContext.js +5 -2
- package/number-input/numberInputContextTypes.d.ts +19 -0
- package/number-input/numberInputContextTypes.js +5 -0
- package/number-input/types.d.ts +117 -0
- package/number-input/types.js +5 -0
- package/package.json +4 -2
- package/paginator/Paginator.js +2 -8
- package/paginator/Paginator.test.js +266 -0
- package/password-input/PasswordInput.js +19 -18
- package/password-input/PasswordInput.stories.tsx +3 -3
- package/password-input/PasswordInput.test.js +183 -0
- package/password-input/types.d.ts +17 -10
- package/progress-bar/ProgressBar.js +4 -4
- package/progress-bar/ProgressBar.test.js +65 -0
- package/radio/Radio.js +2 -2
- package/radio/Radio.test.js +71 -0
- package/radio/types.d.ts +2 -2
- package/radio-group/Radio.d.ts +4 -0
- package/radio-group/Radio.js +141 -0
- package/radio-group/RadioGroup.d.ts +4 -0
- package/radio-group/RadioGroup.js +280 -0
- package/radio-group/RadioGroup.stories.tsx +100 -0
- package/radio-group/RadioGroup.test.js +695 -0
- package/radio-group/types.d.ts +114 -0
- package/radio-group/types.js +5 -0
- package/resultsetTable/ResultsetTable.d.ts +4 -0
- package/resultsetTable/ResultsetTable.js +9 -29
- package/resultsetTable/ResultsetTable.stories.tsx +275 -0
- package/resultsetTable/ResultsetTable.test.js +306 -0
- package/resultsetTable/types.d.ts +67 -0
- package/resultsetTable/types.js +5 -0
- package/row/Row.d.ts +3 -0
- package/row/Row.js +127 -0
- package/row/Row.stories.tsx +237 -0
- package/row/types.d.ts +10 -0
- package/row/types.js +5 -0
- package/select/Icons.d.ts +10 -0
- package/select/Icons.js +93 -0
- package/select/Option.d.ts +4 -0
- package/select/Option.js +110 -0
- package/select/Select.d.ts +4 -0
- package/select/Select.js +101 -226
- package/select/Select.stories.tsx +582 -0
- package/select/Select.test.js +2016 -0
- package/select/types.d.ts +191 -0
- package/select/types.js +5 -0
- package/sidenav/Sidenav.d.ts +9 -0
- package/sidenav/Sidenav.js +6 -15
- package/sidenav/Sidenav.stories.tsx +182 -0
- package/sidenav/Sidenav.test.js +56 -0
- package/sidenav/types.d.ts +50 -0
- package/sidenav/types.js +5 -0
- package/slider/Slider.d.ts +1 -1
- package/slider/Slider.js +43 -32
- package/slider/Slider.stories.tsx +177 -0
- package/slider/Slider.test.js +129 -0
- package/slider/types.d.ts +2 -7
- package/spinner/Spinner.js +2 -2
- package/spinner/Spinner.stories.jsx +1 -0
- package/spinner/Spinner.test.js +64 -0
- package/stack/Stack.d.ts +3 -0
- package/stack/Stack.js +97 -0
- package/stack/Stack.stories.tsx +164 -0
- package/stack/types.d.ts +24 -0
- package/stack/types.js +5 -0
- package/switch/Switch.js +2 -2
- package/switch/Switch.stories.tsx +1 -1
- package/switch/Switch.test.js +73 -0
- package/table/Table.js +3 -3
- package/table/Table.stories.jsx +2 -1
- package/table/Table.test.js +26 -0
- package/tabs/Tabs.js +11 -9
- package/tabs/Tabs.stories.tsx +120 -0
- package/tabs/Tabs.test.js +123 -0
- package/tabs/types.d.ts +25 -18
- package/tag/Tag.d.ts +1 -1
- package/tag/Tag.js +16 -23
- package/tag/Tag.stories.tsx +26 -29
- package/tag/Tag.test.js +60 -0
- package/tag/types.d.ts +23 -14
- package/text/Text.d.ts +7 -0
- package/text/Text.js +30 -0
- package/text/Text.stories.tsx +19 -0
- package/text-input/TextInput.d.ts +4 -0
- package/text-input/TextInput.js +62 -89
- package/text-input/TextInput.stories.tsx +474 -0
- package/text-input/TextInput.test.js +1725 -0
- package/text-input/types.d.ts +163 -0
- package/text-input/types.js +5 -0
- package/textarea/Textarea.d.ts +4 -0
- package/textarea/Textarea.js +35 -64
- package/textarea/Textarea.stories.jsx +37 -15
- package/textarea/Textarea.test.js +447 -0
- package/textarea/types.d.ts +134 -0
- package/textarea/types.js +5 -0
- package/toggle-group/ToggleGroup.d.ts +4 -0
- package/toggle-group/ToggleGroup.js +16 -45
- package/toggle-group/ToggleGroup.stories.tsx +173 -0
- package/toggle-group/ToggleGroup.test.js +125 -0
- package/toggle-group/types.d.ts +97 -0
- package/toggle-group/types.js +5 -0
- package/useTheme.d.ts +2 -0
- package/useTheme.js +1 -1
- package/wizard/Wizard.d.ts +4 -0
- package/wizard/Wizard.js +69 -59
- package/wizard/Wizard.stories.tsx +224 -0
- package/wizard/Wizard.test.js +128 -0
- package/wizard/types.d.ts +60 -0
- package/wizard/types.js +5 -0
- package/V3Select/V3Select.js +0 -455
- package/V3Select/index.d.ts +0 -27
- package/V3Textarea/V3Textarea.js +0 -260
- package/V3Textarea/index.d.ts +0 -27
- package/chip/index.d.ts +0 -22
- package/date/Date.js +0 -373
- package/date/index.d.ts +0 -27
- package/file-input/index.d.ts +0 -81
- package/heading/index.d.ts +0 -17
- package/input-text/Icons.js +0 -22
- package/input-text/InputText.js +0 -611
- package/input-text/index.d.ts +0 -36
- package/number-input/index.d.ts +0 -113
- package/resultsetTable/index.d.ts +0 -19
- package/select/index.d.ts +0 -131
- package/sidenav/index.d.ts +0 -13
- package/text-input/index.d.ts +0 -135
- package/textarea/index.d.ts +0 -117
- package/toggle/Toggle.js +0 -186
- package/toggle/index.d.ts +0 -21
- package/toggle-group/index.d.ts +0 -21
- package/upload/Upload.js +0 -201
- package/upload/buttons-upload/ButtonsUpload.js +0 -111
- package/upload/buttons-upload/Icons.js +0 -40
- package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
- package/upload/dragAndDropArea/Icons.js +0 -39
- package/upload/file-upload/FileToUpload.js +0 -115
- package/upload/file-upload/Icons.js +0 -66
- package/upload/files-upload/FilesToUpload.js +0 -109
- package/upload/index.d.ts +0 -15
- package/upload/transaction/Icons.js +0 -160
- package/upload/transaction/Transaction.js +0 -104
- package/upload/transactions/Transactions.js +0 -94
- package/wizard/Icons.js +0 -65
- package/wizard/index.d.ts +0 -18
|
@@ -37,10 +37,10 @@ declare type Props = {
|
|
|
37
37
|
error: string | null;
|
|
38
38
|
}) => void;
|
|
39
39
|
/**
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
* This function will be called when the input element loses the focus.
|
|
41
|
+
* An object including the input value and the error (if the value entered is
|
|
42
|
+
* not valid) will be passed to this function. If there is no error, error will be null.
|
|
43
|
+
*/
|
|
44
44
|
onBlur?: (val: {
|
|
45
45
|
value: string;
|
|
46
46
|
error: string | null;
|
|
@@ -62,18 +62,25 @@ declare type Props = {
|
|
|
62
62
|
*/
|
|
63
63
|
pattern?: string;
|
|
64
64
|
/**
|
|
65
|
-
* Specifies the minimun
|
|
65
|
+
* Specifies the minimun length allowed by the password input.
|
|
66
|
+
* This will be checked both when the input element loses the
|
|
67
|
+
* focus and while typing within it. If the string entered does not
|
|
68
|
+
* comply the minimum length, the onBlur and onChange functions will be called
|
|
69
|
+
* with the current value and an internal error informing that the value
|
|
70
|
+
* length does not comply the specified range. If a valid length is
|
|
71
|
+
* reached, the error parameter of both events will be null.
|
|
72
|
+
*/
|
|
73
|
+
minLength?: number;
|
|
74
|
+
/**
|
|
75
|
+
* Specifies the maximum length allowed by the password input.
|
|
66
76
|
* This will be checked both when the input element loses the
|
|
67
77
|
* focus and while typing within it. If the string entered does not
|
|
68
|
-
* comply the length, the onBlur and onChange functions will be called
|
|
78
|
+
* comply the maximum length, the onBlur and onChange functions will be called
|
|
69
79
|
* with the current value and an internal error informing that the value
|
|
70
80
|
* length does not comply the specified range. If a valid length is
|
|
71
81
|
* reached, the error parameter of both events will be null.
|
|
72
82
|
*/
|
|
73
|
-
|
|
74
|
-
min?: number;
|
|
75
|
-
max?: number;
|
|
76
|
-
};
|
|
83
|
+
maxLength?: number;
|
|
77
84
|
/**
|
|
78
85
|
* HTML autocomplete attribute. Lets the user specify if any permission the user agent has to provide automated assistance in filling out the input value.
|
|
79
86
|
* Its value must be one of all the possible values of the HTML autocomplete attribute: 'on', 'off', 'email', 'username', 'new-password', ...
|
|
@@ -21,9 +21,9 @@ var _LinearProgress = _interopRequireDefault(require("@material-ui/core/LinearPr
|
|
|
21
21
|
|
|
22
22
|
var _variables = require("../common/variables.js");
|
|
23
23
|
|
|
24
|
-
var _useTheme = _interopRequireDefault(require("../useTheme
|
|
24
|
+
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
25
25
|
|
|
26
|
-
var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext
|
|
26
|
+
var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
|
|
27
27
|
|
|
28
28
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
29
29
|
|
|
@@ -59,9 +59,9 @@ var DxcProgressBar = function DxcProgressBar(_ref) {
|
|
|
59
59
|
overlay: overlay,
|
|
60
60
|
showValue: showValue,
|
|
61
61
|
backgroundType: backgroundType
|
|
62
|
-
}, value === null ? 0 : value >= 0 && value <= 100 ? value : value < 0 ? 0 : 100, " %")), /*#__PURE__*/_react["default"].createElement(_LinearProgress["default"], {
|
|
62
|
+
}, value === null || value === undefined ? 0 : value >= 0 && value <= 100 ? value : value < 0 ? 0 : 100, " %")), /*#__PURE__*/_react["default"].createElement(_LinearProgress["default"], {
|
|
63
63
|
variant: showValue ? "determinate" : "indeterminate",
|
|
64
|
-
value: value === null ? 0 : value >= 0 && value <= 100 ? value : value < 0 ? 0 : 100
|
|
64
|
+
value: value === null || value === undefined ? 0 : value >= 0 && value <= 100 ? value : value < 0 ? 0 : 100
|
|
65
65
|
}), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
|
|
66
66
|
overlay: overlay,
|
|
67
67
|
backgroundType: backgroundType
|
|
@@ -0,0 +1,65 @@
|
|
|
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 _ProgressBar = _interopRequireDefault(require("./ProgressBar"));
|
|
10
|
+
|
|
11
|
+
describe("ProgressBar component tests", function () {
|
|
12
|
+
test("ProgressBar renders with label", function () {
|
|
13
|
+
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ProgressBar["default"], {
|
|
14
|
+
label: "test-label"
|
|
15
|
+
})),
|
|
16
|
+
getByText = _render.getByText;
|
|
17
|
+
|
|
18
|
+
expect(getByText("test-label")).toBeTruthy();
|
|
19
|
+
});
|
|
20
|
+
test("Overlay progressBar renders with label", function () {
|
|
21
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ProgressBar["default"], {
|
|
22
|
+
label: "test-label",
|
|
23
|
+
overlay: true
|
|
24
|
+
})),
|
|
25
|
+
getByText = _render2.getByText;
|
|
26
|
+
|
|
27
|
+
expect(getByText("test-label")).toBeTruthy();
|
|
28
|
+
});
|
|
29
|
+
test("ProgressBar renders with default value", function () {
|
|
30
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ProgressBar["default"], {
|
|
31
|
+
showValue: true
|
|
32
|
+
})),
|
|
33
|
+
getByText = _render3.getByText;
|
|
34
|
+
|
|
35
|
+
expect(getByText("0 %")).toBeTruthy();
|
|
36
|
+
});
|
|
37
|
+
test("Overlay progressBar renders with default value", function () {
|
|
38
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ProgressBar["default"], {
|
|
39
|
+
showValue: true,
|
|
40
|
+
overlay: true
|
|
41
|
+
})),
|
|
42
|
+
getByText = _render4.getByText;
|
|
43
|
+
|
|
44
|
+
expect(getByText("0 %")).toBeTruthy();
|
|
45
|
+
});
|
|
46
|
+
test("ProgressBar renders with value", function () {
|
|
47
|
+
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ProgressBar["default"], {
|
|
48
|
+
showValue: true,
|
|
49
|
+
value: 25
|
|
50
|
+
})),
|
|
51
|
+
getByText = _render5.getByText;
|
|
52
|
+
|
|
53
|
+
expect(getByText("25 %")).toBeTruthy();
|
|
54
|
+
});
|
|
55
|
+
test("Overlay progressBar renders with value", function () {
|
|
56
|
+
var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ProgressBar["default"], {
|
|
57
|
+
showValue: true,
|
|
58
|
+
value: 25,
|
|
59
|
+
overlay: true
|
|
60
|
+
})),
|
|
61
|
+
getByText = _render6.getByText;
|
|
62
|
+
|
|
63
|
+
expect(getByText("25 %")).toBeTruthy();
|
|
64
|
+
});
|
|
65
|
+
});
|
package/radio/Radio.js
CHANGED
|
@@ -27,9 +27,9 @@ var _variables = require("../common/variables.js");
|
|
|
27
27
|
|
|
28
28
|
var _utils = require("../common/utils.js");
|
|
29
29
|
|
|
30
|
-
var _useTheme = _interopRequireDefault(require("../useTheme
|
|
30
|
+
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
31
31
|
|
|
32
|
-
var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext
|
|
32
|
+
var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
|
|
33
33
|
|
|
34
34
|
var _templateObject, _templateObject2;
|
|
35
35
|
|
|
@@ -0,0 +1,71 @@
|
|
|
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 _Radio = _interopRequireDefault(require("./Radio"));
|
|
10
|
+
|
|
11
|
+
describe("Radio component tests", function () {
|
|
12
|
+
test("Radio renders correctly", function () {
|
|
13
|
+
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
|
|
14
|
+
label: "Radio button"
|
|
15
|
+
})),
|
|
16
|
+
getByText = _render.getByText;
|
|
17
|
+
|
|
18
|
+
expect(getByText("Radio button")).toBeTruthy();
|
|
19
|
+
});
|
|
20
|
+
test("Calls correct function on click", function () {
|
|
21
|
+
var onClick = jest.fn();
|
|
22
|
+
|
|
23
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
|
|
24
|
+
label: "Radio button",
|
|
25
|
+
onClick: onClick
|
|
26
|
+
})),
|
|
27
|
+
getByText = _render2.getByText;
|
|
28
|
+
|
|
29
|
+
_react2.fireEvent.click(getByText("Radio button"));
|
|
30
|
+
|
|
31
|
+
expect(onClick).toHaveBeenCalled();
|
|
32
|
+
expect(onClick).toHaveBeenCalledWith(true);
|
|
33
|
+
});
|
|
34
|
+
test("Controlled Radio", function () {
|
|
35
|
+
var onClick = jest.fn();
|
|
36
|
+
|
|
37
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
|
|
38
|
+
label: "Radio button",
|
|
39
|
+
checked: false,
|
|
40
|
+
onClick: onClick
|
|
41
|
+
})),
|
|
42
|
+
getByText = _render3.getByText,
|
|
43
|
+
getByRole = _render3.getByRole;
|
|
44
|
+
|
|
45
|
+
expect(getByRole("radio").checked).toBe(false);
|
|
46
|
+
|
|
47
|
+
_react2.fireEvent.click(getByText("Radio button"));
|
|
48
|
+
|
|
49
|
+
expect(onClick).toHaveBeenCalled();
|
|
50
|
+
expect(onClick).toHaveBeenCalledWith(true);
|
|
51
|
+
expect(getByRole("radio").checked).toBe(false);
|
|
52
|
+
});
|
|
53
|
+
test("Uncontrolled Radio", function () {
|
|
54
|
+
var onClick = jest.fn();
|
|
55
|
+
|
|
56
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
|
|
57
|
+
label: "Radio button",
|
|
58
|
+
onClick: onClick
|
|
59
|
+
})),
|
|
60
|
+
getByText = _render4.getByText,
|
|
61
|
+
getByRole = _render4.getByRole;
|
|
62
|
+
|
|
63
|
+
expect(getByRole("radio").checked).toBe(false);
|
|
64
|
+
|
|
65
|
+
_react2.fireEvent.click(getByText("Radio button"));
|
|
66
|
+
|
|
67
|
+
expect(onClick).toHaveBeenCalled();
|
|
68
|
+
expect(onClick).toHaveBeenCalledWith(true);
|
|
69
|
+
expect(getByRole("radio").checked).toBe(false);
|
|
70
|
+
});
|
|
71
|
+
});
|
package/radio/types.d.ts
CHANGED
|
@@ -42,8 +42,8 @@ declare type Props = {
|
|
|
42
42
|
*/
|
|
43
43
|
onClick?: (val: boolean) => void;
|
|
44
44
|
/**
|
|
45
|
-
* Size of the margin to be applied to the component
|
|
46
|
-
* 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
|
|
45
|
+
* Size of the margin to be applied to the component ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
|
|
46
|
+
* You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
|
|
47
47
|
*/
|
|
48
48
|
margin?: Space | Margin;
|
|
49
49
|
/**
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
+
|
|
18
|
+
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
19
|
+
|
|
20
|
+
var _uuid = require("uuid");
|
|
21
|
+
|
|
22
|
+
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
23
|
+
|
|
24
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
25
|
+
|
|
26
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
+
|
|
28
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
29
|
+
|
|
30
|
+
var DxcRadio = function DxcRadio(_ref) {
|
|
31
|
+
var _option$disabled;
|
|
32
|
+
|
|
33
|
+
var option = _ref.option,
|
|
34
|
+
currentValue = _ref.currentValue,
|
|
35
|
+
onClick = _ref.onClick,
|
|
36
|
+
error = _ref.error,
|
|
37
|
+
disabled = _ref.disabled,
|
|
38
|
+
focused = _ref.focused,
|
|
39
|
+
readonly = _ref.readonly,
|
|
40
|
+
tabIndex = _ref.tabIndex;
|
|
41
|
+
|
|
42
|
+
var _useState = (0, _react.useState)("radio-".concat((0, _uuid.v4)())),
|
|
43
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 1),
|
|
44
|
+
radioLabelId = _useState2[0];
|
|
45
|
+
|
|
46
|
+
var ref = (0, _react.useRef)(null);
|
|
47
|
+
var colorsTheme = (0, _useTheme["default"])();
|
|
48
|
+
|
|
49
|
+
var handleOnClick = function handleOnClick() {
|
|
50
|
+
var _ref$current;
|
|
51
|
+
|
|
52
|
+
onClick();
|
|
53
|
+
focused && document.activeElement !== (ref === null || ref === void 0 ? void 0 : ref.current) && (ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus());
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
var _useState3 = (0, _react.useState)(true),
|
|
57
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
58
|
+
firstUpdate = _useState4[0],
|
|
59
|
+
setFirstUpdate = _useState4[1];
|
|
60
|
+
|
|
61
|
+
(0, _react.useLayoutEffect)(function () {
|
|
62
|
+
var _ref$current2;
|
|
63
|
+
|
|
64
|
+
// Don't apply in the first render
|
|
65
|
+
if (firstUpdate) {
|
|
66
|
+
setFirstUpdate(false);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
focused && (ref === null || ref === void 0 ? void 0 : (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.focus());
|
|
71
|
+
}, [focused]);
|
|
72
|
+
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
73
|
+
theme: colorsTheme.radioGroup
|
|
74
|
+
}, /*#__PURE__*/_react["default"].createElement(RadioMainContainer, null, /*#__PURE__*/_react["default"].createElement(RadioContainer, {
|
|
75
|
+
error: error,
|
|
76
|
+
disabled: disabled,
|
|
77
|
+
readonly: readonly,
|
|
78
|
+
onMouseDown: function onMouseDown(event) {
|
|
79
|
+
// Prevents div's onClick from stealing the radio input's focus
|
|
80
|
+
event.preventDefault();
|
|
81
|
+
},
|
|
82
|
+
onClick: handleOnClick
|
|
83
|
+
}, /*#__PURE__*/_react["default"].createElement(RadioInputContainer, null, /*#__PURE__*/_react["default"].createElement(RadioInput, {
|
|
84
|
+
error: error,
|
|
85
|
+
disabled: disabled,
|
|
86
|
+
readonly: readonly,
|
|
87
|
+
role: "radio",
|
|
88
|
+
"aria-checked": option.value === currentValue,
|
|
89
|
+
"aria-disabled": (_option$disabled = option.disabled) !== null && _option$disabled !== void 0 ? _option$disabled : false,
|
|
90
|
+
"aria-labelledby": radioLabelId,
|
|
91
|
+
tabIndex: disabled ? -1 : focused ? tabIndex : -1,
|
|
92
|
+
ref: ref
|
|
93
|
+
}, option.value === currentValue && /*#__PURE__*/_react["default"].createElement(Dot, {
|
|
94
|
+
disabled: disabled,
|
|
95
|
+
readonly: readonly,
|
|
96
|
+
error: error
|
|
97
|
+
}))), /*#__PURE__*/_react["default"].createElement(Label, {
|
|
98
|
+
id: radioLabelId,
|
|
99
|
+
disabled: disabled
|
|
100
|
+
}, option.label))));
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
var RadioMainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"])));
|
|
104
|
+
|
|
105
|
+
var RadioContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n\n ", "\n"])), function (props) {
|
|
106
|
+
return props.disabled ? "not-allowed" : props.readonly ? "default" : "pointer";
|
|
107
|
+
}, function (props) {
|
|
108
|
+
return !props.disabled ? "\n &:hover {\n & > div > div { \n border-color: ".concat(props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor, ";\n & > span {\n background-color: ").concat(props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor, ";\n }\n };\n }\n &:active {\n & > div > div {\n border-color: ").concat(props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor, ";\n & > span {\n background-color: ").concat(props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor, ";\n }\n }\n }\n ") : "pointer-events: none;";
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
var RadioInputContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n"])));
|
|
112
|
+
|
|
113
|
+
var RadioInput = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 18px;\n height: 18px;\n border: 2px solid\n ", ";\n border-radius: 50%;\n\n ", "\n"])), function (props) {
|
|
114
|
+
if (props.disabled) return props.theme.disabledRadioInputColor;else if (props.error) return props.theme.errorRadioInputColor;else if (props.readonly) return props.theme.readonlyRadioInputColor;else return props.theme.radioInputColor;
|
|
115
|
+
}, function (props) {
|
|
116
|
+
return !props.disabled ? "&:focus {\n outline: 2px solid ".concat(props.theme.focusBorderColor, ";\n outline-offset: 1px;\n }\n &:focus-visible {\n outline: 2px solid ").concat(props.theme.focusBorderColor, ";\n outline-offset: 1px;\n }\n ") : "\n :focus-visible {\n outline: none;\n }\n ";
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
var Dot = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background-color: ", ";\n"])), function (props) {
|
|
120
|
+
if (props.disabled) return props.theme.disabledRadioInputColor;else if (props.error) return props.theme.errorRadioInputColor;else if (props.readonly) return props.theme.readonlyRadioInputColor;else return props.theme.radioInputColor;
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
var Label = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
|
|
124
|
+
return props.theme.radioInputLabelMargin;
|
|
125
|
+
}, function (props) {
|
|
126
|
+
return props.theme.fontFamily;
|
|
127
|
+
}, function (props) {
|
|
128
|
+
return props.theme.radioInputLabelFontSize;
|
|
129
|
+
}, function (props) {
|
|
130
|
+
return props.theme.radioInputLabelFontStyle;
|
|
131
|
+
}, function (props) {
|
|
132
|
+
return props.theme.radioInputLabelFontWeight;
|
|
133
|
+
}, function (props) {
|
|
134
|
+
return props.theme.radioInputLabelLineHeight;
|
|
135
|
+
}, function (props) {
|
|
136
|
+
return props.disabled && "color: ".concat(props.theme.disabledRadioInputLabelFontColor, "; pointer-events: none;");
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
var _default = /*#__PURE__*/_react["default"].memo(DxcRadio);
|
|
140
|
+
|
|
141
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
|
+
|
|
14
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
15
|
+
|
|
16
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
+
|
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
+
|
|
20
|
+
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
21
|
+
|
|
22
|
+
var _uuid = require("uuid");
|
|
23
|
+
|
|
24
|
+
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
25
|
+
|
|
26
|
+
var _Radio = _interopRequireDefault(require("./Radio"));
|
|
27
|
+
|
|
28
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
|
|
29
|
+
|
|
30
|
+
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
|
+
|
|
32
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
33
|
+
|
|
34
|
+
var getInitialFocusIndex = function getInitialFocusIndex(innerOptions, value) {
|
|
35
|
+
var initialSelectedOptionIndex = innerOptions.findIndex(function (option) {
|
|
36
|
+
return option.value === value;
|
|
37
|
+
});
|
|
38
|
+
return initialSelectedOptionIndex !== -1 ? initialSelectedOptionIndex : 0;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
42
|
+
var label = _ref.label,
|
|
43
|
+
name = _ref.name,
|
|
44
|
+
helperText = _ref.helperText,
|
|
45
|
+
options = _ref.options,
|
|
46
|
+
_ref$disabled = _ref.disabled,
|
|
47
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
48
|
+
_ref$optional = _ref.optional,
|
|
49
|
+
optional = _ref$optional === void 0 ? false : _ref$optional,
|
|
50
|
+
_ref$optionalItemLabe = _ref.optionalItemLabel,
|
|
51
|
+
optionalItemLabel = _ref$optionalItemLabe === void 0 ? "N/A" : _ref$optionalItemLabe,
|
|
52
|
+
_ref$readonly = _ref.readonly,
|
|
53
|
+
readonly = _ref$readonly === void 0 ? false : _ref$readonly,
|
|
54
|
+
_ref$stacking = _ref.stacking,
|
|
55
|
+
stacking = _ref$stacking === void 0 ? "column" : _ref$stacking,
|
|
56
|
+
defaultValue = _ref.defaultValue,
|
|
57
|
+
value = _ref.value,
|
|
58
|
+
onChange = _ref.onChange,
|
|
59
|
+
onBlur = _ref.onBlur,
|
|
60
|
+
error = _ref.error,
|
|
61
|
+
_ref$tabIndex = _ref.tabIndex,
|
|
62
|
+
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
|
|
63
|
+
|
|
64
|
+
var _useState = (0, _react.useState)("radio-group-".concat((0, _uuid.v4)())),
|
|
65
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 1),
|
|
66
|
+
radioGroupId = _useState2[0];
|
|
67
|
+
|
|
68
|
+
var radioGroupLabelId = "label-".concat(radioGroupId);
|
|
69
|
+
var errorId = "error-".concat(radioGroupId);
|
|
70
|
+
|
|
71
|
+
var _useState3 = (0, _react.useState)(defaultValue),
|
|
72
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
73
|
+
innerValue = _useState4[0],
|
|
74
|
+
setInnerValue = _useState4[1];
|
|
75
|
+
|
|
76
|
+
var _useState5 = (0, _react.useState)(true),
|
|
77
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
78
|
+
firstTimeFocus = _useState6[0],
|
|
79
|
+
setFirstTimeFocus = _useState6[1];
|
|
80
|
+
|
|
81
|
+
var optionalItem = {
|
|
82
|
+
label: optionalItemLabel,
|
|
83
|
+
value: "",
|
|
84
|
+
disabled: disabled
|
|
85
|
+
};
|
|
86
|
+
var innerOptions = (0, _react.useMemo)(function () {
|
|
87
|
+
return optional ? [].concat((0, _toConsumableArray2["default"])(options), [optionalItem]) : options;
|
|
88
|
+
}, [optional, options]);
|
|
89
|
+
|
|
90
|
+
var _useState7 = (0, _react.useState)(getInitialFocusIndex(innerOptions, value !== null && value !== void 0 ? value : innerValue)),
|
|
91
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
92
|
+
currentFocusIndex = _useState8[0],
|
|
93
|
+
setCurrentFocusIndex = _useState8[1];
|
|
94
|
+
|
|
95
|
+
var colorsTheme = (0, _useTheme["default"])();
|
|
96
|
+
var handleOnChange = (0, _react.useCallback)(function (newValue) {
|
|
97
|
+
var currentValue = value !== null && value !== void 0 ? value : innerValue;
|
|
98
|
+
|
|
99
|
+
if (newValue !== currentValue && !readonly) {
|
|
100
|
+
value !== null && value !== void 0 ? value : setInnerValue(newValue);
|
|
101
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
|
|
102
|
+
}
|
|
103
|
+
}, [value, innerValue, setInnerValue, onChange]);
|
|
104
|
+
|
|
105
|
+
var handleOnBlur = function handleOnBlur(e) {
|
|
106
|
+
// If the radio group loses the focus to an element not contained inside it...
|
|
107
|
+
if (!e.currentTarget.contains(e.relatedTarget)) {
|
|
108
|
+
setFirstTimeFocus(true);
|
|
109
|
+
var currentValue = value !== null && value !== void 0 ? value : innerValue;
|
|
110
|
+
!optional && !Boolean(currentValue) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
111
|
+
value: currentValue,
|
|
112
|
+
error: "This field is required. Please, choose an option."
|
|
113
|
+
}) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
114
|
+
value: currentValue
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
var handleOnFocus = function handleOnFocus() {
|
|
120
|
+
firstTimeFocus && setFirstTimeFocus(false);
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
var setPreviousRadioChecked = function setPreviousRadioChecked() {
|
|
124
|
+
setCurrentFocusIndex(function (currentFocusIndex) {
|
|
125
|
+
var index = currentFocusIndex === 0 ? innerOptions.length - 1 : currentFocusIndex - 1;
|
|
126
|
+
|
|
127
|
+
while (innerOptions[index].disabled) {
|
|
128
|
+
index = index === 0 ? innerOptions.length - 1 : index - 1;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
handleOnChange(innerOptions[index].value);
|
|
132
|
+
return index;
|
|
133
|
+
});
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
var setNextRadioChecked = function setNextRadioChecked() {
|
|
137
|
+
setCurrentFocusIndex(function (currentFocusIndex) {
|
|
138
|
+
var index = currentFocusIndex === innerOptions.length - 1 ? 0 : currentFocusIndex + 1;
|
|
139
|
+
|
|
140
|
+
while (innerOptions[index].disabled) {
|
|
141
|
+
index = index === innerOptions.length - 1 ? 0 : index + 1;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
handleOnChange(innerOptions[index].value);
|
|
145
|
+
return index;
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
var handleOnKeyDown = function handleOnKeyDown(event) {
|
|
150
|
+
switch (event.keyCode) {
|
|
151
|
+
case 37: // arrow left
|
|
152
|
+
|
|
153
|
+
case 38:
|
|
154
|
+
// arrow up
|
|
155
|
+
event.preventDefault();
|
|
156
|
+
setPreviousRadioChecked();
|
|
157
|
+
break;
|
|
158
|
+
|
|
159
|
+
case 39: // arrow right
|
|
160
|
+
|
|
161
|
+
case 40:
|
|
162
|
+
// arrow down
|
|
163
|
+
event.preventDefault();
|
|
164
|
+
setNextRadioChecked();
|
|
165
|
+
break;
|
|
166
|
+
|
|
167
|
+
case 13: // enter
|
|
168
|
+
|
|
169
|
+
case 32:
|
|
170
|
+
// space
|
|
171
|
+
event.preventDefault();
|
|
172
|
+
handleOnChange(innerOptions[currentFocusIndex].value);
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
178
|
+
theme: colorsTheme.radioGroup
|
|
179
|
+
}, /*#__PURE__*/_react["default"].createElement(RadioGroupContainer, {
|
|
180
|
+
ref: ref
|
|
181
|
+
}, label && /*#__PURE__*/_react["default"].createElement(Label, {
|
|
182
|
+
id: radioGroupLabelId,
|
|
183
|
+
helperText: helperText,
|
|
184
|
+
disabled: disabled
|
|
185
|
+
}, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
|
|
186
|
+
disabled: disabled
|
|
187
|
+
}, helperText), /*#__PURE__*/_react["default"].createElement(RadioGroup, {
|
|
188
|
+
onBlur: handleOnBlur,
|
|
189
|
+
onFocus: handleOnFocus,
|
|
190
|
+
onKeyDown: handleOnKeyDown,
|
|
191
|
+
stacking: stacking,
|
|
192
|
+
role: "radiogroup",
|
|
193
|
+
"aria-disabled": disabled,
|
|
194
|
+
"aria-labelledby": radioGroupLabelId,
|
|
195
|
+
"aria-invalid": error ? "true" : "false",
|
|
196
|
+
"aria-errormessage": error ? errorId : undefined,
|
|
197
|
+
"aria-required": !disabled && !readonly && !optional,
|
|
198
|
+
"aria-readonly": readonly,
|
|
199
|
+
"aria-orientation": stacking === "column" ? "vertical" : "horizontal"
|
|
200
|
+
}, /*#__PURE__*/_react["default"].createElement(ValueInput, {
|
|
201
|
+
name: name,
|
|
202
|
+
value: value !== null && value !== void 0 ? value : innerValue,
|
|
203
|
+
readOnly: true,
|
|
204
|
+
"aria-hidden": "true"
|
|
205
|
+
}), innerOptions.map(function (option, index) {
|
|
206
|
+
return /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
|
|
207
|
+
option: option,
|
|
208
|
+
currentValue: value !== null && value !== void 0 ? value : innerValue,
|
|
209
|
+
onClick: function onClick() {
|
|
210
|
+
handleOnChange(option.value);
|
|
211
|
+
setCurrentFocusIndex(index);
|
|
212
|
+
},
|
|
213
|
+
error: error,
|
|
214
|
+
disabled: option.disabled || disabled,
|
|
215
|
+
focused: currentFocusIndex === index,
|
|
216
|
+
readonly: readonly,
|
|
217
|
+
tabIndex: tabIndex
|
|
218
|
+
});
|
|
219
|
+
})), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
|
|
220
|
+
id: errorId,
|
|
221
|
+
"aria-live": error ? "assertive" : "off"
|
|
222
|
+
}, error)));
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
var RadioGroupContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: column;\n box-sizing: border-box;\n"])));
|
|
226
|
+
|
|
227
|
+
var Label = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
|
|
228
|
+
return props.disabled ? props.theme.disabledLabelFontColor : props.theme.labelFontColor;
|
|
229
|
+
}, function (props) {
|
|
230
|
+
return props.theme.fontFamily;
|
|
231
|
+
}, function (props) {
|
|
232
|
+
return props.theme.labelFontSize;
|
|
233
|
+
}, function (props) {
|
|
234
|
+
return props.theme.labelFontStyle;
|
|
235
|
+
}, function (props) {
|
|
236
|
+
return props.theme.labelFontWeight;
|
|
237
|
+
}, function (props) {
|
|
238
|
+
return props.theme.labelLineHeight;
|
|
239
|
+
}, function (props) {
|
|
240
|
+
return !props.helperText && "margin-bottom: ".concat(props.theme.groupLabelMargin);
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
var OptionalLabel = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: ", ";\n"])), function (props) {
|
|
244
|
+
return props.theme.optionalLabelFontWeight;
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
var HelperText = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n margin-bottom: ", ";\n"])), function (props) {
|
|
248
|
+
return props.disabled ? props.theme.disabledHelperTextFontColor : props.theme.helperTextFontColor;
|
|
249
|
+
}, function (props) {
|
|
250
|
+
return props.theme.fontFamily;
|
|
251
|
+
}, function (props) {
|
|
252
|
+
return props.theme.helperTextFontSize;
|
|
253
|
+
}, function (props) {
|
|
254
|
+
return props.theme.helperTextFontStyle;
|
|
255
|
+
}, function (props) {
|
|
256
|
+
return props.theme.helperTextFontWeight;
|
|
257
|
+
}, function (props) {
|
|
258
|
+
return props.theme.helperTextLineHeight;
|
|
259
|
+
}, function (props) {
|
|
260
|
+
return props.theme.groupLabelMargin;
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n\n row-gap: ", ";\n column-gap: ", ";\n"])), function (props) {
|
|
264
|
+
return props.stacking;
|
|
265
|
+
}, function (props) {
|
|
266
|
+
return props.theme.groupVerticalGutter;
|
|
267
|
+
}, function (props) {
|
|
268
|
+
return props.theme.groupHorizontalGutter;
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
var ValueInput = _styledComponents["default"].input(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
|
|
272
|
+
|
|
273
|
+
var Error = _styledComponents["default"].span(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 1.5em;\n color: ", ";\n font-family: ", ";\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 1.5em;\n margin-top: 0.5rem;\n"])), function (props) {
|
|
274
|
+
return props.theme.errorMessageColor;
|
|
275
|
+
}, function (props) {
|
|
276
|
+
return props.theme.fontFamily;
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
var _default = DxcRadioGroup;
|
|
280
|
+
exports["default"] = _default;
|