@dxc-technology/halstack-react 0.0.0-98ce7b0 → 0.0.0-996618c
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/HalstackContext.d.ts +12 -0
- package/HalstackContext.js +294 -0
- package/accordion/Accordion.d.ts +1 -1
- package/accordion/Accordion.js +121 -123
- package/accordion/Accordion.stories.tsx +13 -14
- package/accordion/Accordion.test.js +71 -0
- package/accordion/types.d.ts +9 -4
- package/accordion-group/AccordionGroup.d.ts +1 -1
- package/accordion-group/AccordionGroup.js +15 -36
- package/accordion-group/AccordionGroup.stories.tsx +28 -2
- package/accordion-group/AccordionGroup.test.js +126 -0
- package/accordion-group/types.d.ts +14 -3
- package/alert/Alert.js +5 -2
- package/alert/Alert.test.js +92 -0
- package/badge/Badge.d.ts +1 -1
- package/badge/Badge.js +5 -3
- package/badge/types.d.ts +1 -0
- package/bleed/Bleed.js +1 -34
- package/bleed/Bleed.stories.tsx +94 -95
- package/bleed/types.d.ts +25 -1
- package/box/Box.js +23 -33
- package/box/Box.test.js +18 -0
- package/box/types.d.ts +1 -0
- package/bulleted-list/BulletedList.d.ts +7 -0
- package/bulleted-list/BulletedList.js +123 -0
- package/bulleted-list/BulletedList.stories.tsx +200 -0
- package/bulleted-list/types.d.ts +11 -0
- package/{list → bulleted-list}/types.js +0 -0
- package/button/Button.js +53 -68
- package/button/Button.stories.tsx +9 -0
- package/button/Button.test.js +35 -0
- package/button/types.d.ts +7 -7
- package/card/Card.js +24 -27
- package/card/Card.test.js +50 -0
- package/card/types.d.ts +1 -0
- package/checkbox/Checkbox.d.ts +2 -2
- package/checkbox/Checkbox.js +106 -109
- package/checkbox/Checkbox.stories.tsx +146 -130
- package/checkbox/Checkbox.test.js +155 -0
- package/checkbox/types.d.ts +13 -5
- package/chip/Chip.test.js +56 -0
- package/chip/types.d.ts +1 -1
- package/common/variables.js +236 -339
- package/date-input/DateInput.js +56 -42
- package/date-input/DateInput.stories.tsx +7 -7
- package/date-input/DateInput.test.js +543 -0
- package/date-input/types.d.ts +16 -9
- package/dialog/Dialog.js +46 -50
- package/dialog/Dialog.stories.tsx +57 -2
- package/dialog/Dialog.test.js +70 -0
- package/dialog/types.d.ts +3 -2
- package/dropdown/Dropdown.d.ts +1 -1
- package/dropdown/Dropdown.js +247 -251
- package/dropdown/Dropdown.stories.tsx +126 -63
- package/dropdown/Dropdown.test.js +585 -0
- package/dropdown/DropdownMenu.d.ts +4 -0
- package/dropdown/DropdownMenu.js +80 -0
- package/dropdown/DropdownMenuItem.d.ts +4 -0
- package/dropdown/DropdownMenuItem.js +92 -0
- package/dropdown/types.d.ts +25 -5
- package/file-input/FileInput.d.ts +2 -2
- package/file-input/FileInput.js +183 -222
- package/file-input/FileInput.stories.tsx +38 -10
- package/file-input/FileInput.test.js +498 -0
- package/file-input/FileItem.d.ts +4 -14
- package/file-input/FileItem.js +43 -66
- package/file-input/types.d.ts +17 -0
- package/flex/Flex.d.ts +4 -0
- package/flex/Flex.js +69 -0
- package/flex/Flex.stories.tsx +103 -0
- package/flex/types.d.ts +32 -0
- package/{radio → flex}/types.js +0 -0
- package/footer/Footer.js +15 -88
- package/footer/Footer.stories.tsx +8 -1
- package/footer/Footer.test.js +109 -0
- package/footer/Icons.js +1 -1
- package/footer/types.d.ts +2 -1
- package/header/Header.js +95 -114
- package/header/Header.stories.tsx +46 -36
- package/header/Header.test.js +79 -0
- package/header/Icons.js +2 -2
- package/header/types.d.ts +3 -2
- package/heading/Heading.test.js +186 -0
- package/inset/Inset.js +1 -34
- package/inset/Inset.stories.tsx +36 -36
- package/inset/types.d.ts +25 -1
- package/layout/ApplicationLayout.d.ts +16 -6
- package/layout/ApplicationLayout.js +71 -131
- package/layout/ApplicationLayout.stories.tsx +84 -93
- package/layout/Icons.d.ts +5 -0
- package/layout/Icons.js +13 -2
- package/layout/SidenavContext.d.ts +5 -0
- package/layout/SidenavContext.js +19 -0
- package/layout/types.d.ts +18 -33
- package/link/Link.d.ts +3 -2
- package/link/Link.js +58 -75
- package/link/Link.stories.tsx +95 -53
- package/link/Link.test.js +83 -0
- package/link/types.d.ts +7 -23
- package/main.d.ts +10 -15
- package/main.js +48 -82
- package/number-input/NumberInput.js +11 -18
- package/number-input/NumberInput.stories.tsx +5 -5
- package/number-input/NumberInput.test.js +542 -0
- package/number-input/types.d.ts +17 -10
- package/package.json +20 -16
- package/paginator/Paginator.js +17 -38
- package/paginator/Paginator.test.js +308 -0
- package/paragraph/Paragraph.d.ts +6 -0
- package/paragraph/Paragraph.js +38 -0
- package/paragraph/Paragraph.stories.tsx +44 -0
- package/password-input/PasswordInput.js +7 -4
- package/password-input/PasswordInput.test.js +181 -0
- package/password-input/types.d.ts +14 -11
- package/progress-bar/ProgressBar.d.ts +2 -2
- package/progress-bar/ProgressBar.js +57 -51
- package/progress-bar/ProgressBar.stories.jsx +13 -11
- package/progress-bar/ProgressBar.test.js +110 -0
- package/progress-bar/types.d.ts +3 -4
- package/quick-nav/QuickNav.d.ts +4 -0
- package/quick-nav/QuickNav.js +117 -0
- package/quick-nav/QuickNav.stories.tsx +342 -0
- package/quick-nav/types.d.ts +21 -0
- package/{row → quick-nav}/types.js +0 -0
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +53 -37
- package/radio-group/RadioGroup.js +67 -57
- package/radio-group/RadioGroup.stories.tsx +61 -39
- package/radio-group/RadioGroup.test.js +563 -89
- package/radio-group/types.d.ts +82 -4
- package/resultsetTable/ResultsetTable.js +1 -3
- package/resultsetTable/ResultsetTable.test.js +348 -0
- package/select/Icons.d.ts +10 -0
- package/select/Icons.js +93 -0
- package/select/Listbox.d.ts +4 -0
- package/select/Listbox.js +198 -0
- package/select/Option.d.ts +4 -0
- package/select/Option.js +110 -0
- package/select/Select.js +147 -365
- package/select/Select.stories.tsx +231 -176
- package/select/Select.test.js +2233 -0
- package/select/types.d.ts +52 -12
- package/sidenav/Sidenav.d.ts +6 -5
- package/sidenav/Sidenav.js +184 -52
- package/sidenav/Sidenav.stories.tsx +154 -156
- package/sidenav/Sidenav.test.js +44 -0
- package/sidenav/types.d.ts +50 -27
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +122 -96
- package/slider/Slider.stories.tsx +15 -9
- package/slider/Slider.test.js +250 -0
- package/slider/types.d.ts +10 -2
- package/spinner/Spinner.js +1 -1
- package/spinner/Spinner.test.js +64 -0
- package/switch/Switch.d.ts +2 -2
- package/switch/Switch.js +150 -67
- package/switch/Switch.stories.tsx +20 -42
- package/switch/Switch.test.js +225 -0
- package/switch/types.d.ts +12 -4
- package/table/Table.js +1 -1
- package/table/Table.test.js +26 -0
- package/tabs/Tab.d.ts +4 -0
- package/tabs/Tab.js +135 -0
- package/tabs/Tabs.d.ts +1 -1
- package/tabs/Tabs.js +362 -108
- package/tabs/Tabs.stories.tsx +74 -8
- package/tabs/Tabs.test.js +351 -0
- package/tabs/types.d.ts +19 -5
- package/tabs-nav/NavTabs.d.ts +8 -0
- package/tabs-nav/NavTabs.js +125 -0
- package/tabs-nav/NavTabs.stories.tsx +170 -0
- package/tabs-nav/NavTabs.test.js +82 -0
- package/tabs-nav/Tab.d.ts +4 -0
- package/tabs-nav/Tab.js +130 -0
- package/tabs-nav/types.d.ts +53 -0
- package/{stack → tabs-nav}/types.js +0 -0
- package/tag/Tag.js +15 -20
- package/tag/Tag.stories.tsx +12 -8
- package/tag/Tag.test.js +60 -0
- package/tag/types.d.ts +1 -1
- package/text-input/Icons.d.ts +8 -0
- package/text-input/Icons.js +60 -0
- package/text-input/Suggestion.d.ts +4 -0
- package/text-input/Suggestion.js +57 -0
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +134 -0
- package/text-input/TextInput.js +217 -334
- package/text-input/TextInput.stories.tsx +219 -194
- package/text-input/TextInput.test.js +1624 -0
- package/text-input/types.d.ts +50 -12
- package/textarea/Textarea.js +20 -27
- package/textarea/Textarea.stories.jsx +33 -12
- package/textarea/Textarea.test.js +437 -0
- package/textarea/types.d.ts +18 -11
- package/toggle-group/ToggleGroup.d.ts +1 -1
- package/toggle-group/ToggleGroup.js +5 -4
- package/toggle-group/ToggleGroup.stories.tsx +4 -4
- package/toggle-group/ToggleGroup.test.js +156 -0
- package/toggle-group/types.d.ts +9 -1
- package/typography/Typography.d.ts +4 -0
- package/typography/Typography.js +131 -0
- package/typography/Typography.stories.tsx +198 -0
- package/typography/types.d.ts +18 -0
- package/typography/types.js +5 -0
- package/useTheme.js +2 -2
- package/useTranslatedLabels.d.ts +2 -0
- package/useTranslatedLabels.js +20 -0
- package/wizard/Wizard.d.ts +1 -1
- package/wizard/Wizard.js +58 -54
- package/wizard/Wizard.stories.tsx +33 -24
- package/wizard/Wizard.test.js +141 -0
- package/wizard/types.d.ts +10 -5
- package/ThemeContext.d.ts +0 -15
- package/ThemeContext.js +0 -243
- 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/date/Date.js +0 -373
- package/date/index.d.ts +0 -27
- package/input-text/Icons.js +0 -22
- package/input-text/InputText.js +0 -611
- package/input-text/index.d.ts +0 -36
- package/list/List.d.ts +0 -4
- package/list/List.js +0 -47
- package/list/List.stories.tsx +0 -95
- package/list/types.d.ts +0 -7
- package/radio/Radio.d.ts +0 -4
- package/radio/Radio.js +0 -174
- package/radio/Radio.stories.tsx +0 -192
- package/radio/types.d.ts +0 -54
- package/row/Row.d.ts +0 -3
- package/row/Row.js +0 -127
- package/row/Row.stories.tsx +0 -237
- package/row/types.d.ts +0 -10
- package/stack/Stack.d.ts +0 -3
- package/stack/Stack.js +0 -97
- package/stack/Stack.stories.tsx +0 -164
- package/stack/types.d.ts +0 -9
- package/text/Text.d.ts +0 -7
- package/text/Text.js +0 -30
- package/text/Text.stories.tsx +0 -19
- 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/radio-group/Radio.js
CHANGED
|
@@ -28,14 +28,14 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
28
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
29
|
|
|
30
30
|
var DxcRadio = function DxcRadio(_ref) {
|
|
31
|
-
var
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
onFocus = _ref.onFocus,
|
|
31
|
+
var label = _ref.label,
|
|
32
|
+
checked = _ref.checked,
|
|
33
|
+
onClick = _ref.onClick,
|
|
35
34
|
error = _ref.error,
|
|
36
35
|
disabled = _ref.disabled,
|
|
37
36
|
focused = _ref.focused,
|
|
38
|
-
readonly = _ref.readonly
|
|
37
|
+
readonly = _ref.readonly,
|
|
38
|
+
tabIndex = _ref.tabIndex;
|
|
39
39
|
|
|
40
40
|
var _useState = (0, _react.useState)("radio-".concat((0, _uuid.v4)())),
|
|
41
41
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 1),
|
|
@@ -43,7 +43,13 @@ var DxcRadio = function DxcRadio(_ref) {
|
|
|
43
43
|
|
|
44
44
|
var ref = (0, _react.useRef)(null);
|
|
45
45
|
var colorsTheme = (0, _useTheme["default"])();
|
|
46
|
-
|
|
46
|
+
|
|
47
|
+
var handleOnClick = function handleOnClick() {
|
|
48
|
+
var _ref$current;
|
|
49
|
+
|
|
50
|
+
onClick();
|
|
51
|
+
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());
|
|
52
|
+
};
|
|
47
53
|
|
|
48
54
|
var _useState3 = (0, _react.useState)(true),
|
|
49
55
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
@@ -51,7 +57,7 @@ var DxcRadio = function DxcRadio(_ref) {
|
|
|
51
57
|
setFirstUpdate = _useState4[1];
|
|
52
58
|
|
|
53
59
|
(0, _react.useLayoutEffect)(function () {
|
|
54
|
-
var _ref$
|
|
60
|
+
var _ref$current2;
|
|
55
61
|
|
|
56
62
|
// Don't apply in the first render
|
|
57
63
|
if (firstUpdate) {
|
|
@@ -59,7 +65,7 @@ var DxcRadio = function DxcRadio(_ref) {
|
|
|
59
65
|
return;
|
|
60
66
|
}
|
|
61
67
|
|
|
62
|
-
focused && (ref === null || ref === void 0 ? void 0 : (_ref$
|
|
68
|
+
focused && (ref === null || ref === void 0 ? void 0 : (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.focus());
|
|
63
69
|
}, [focused]);
|
|
64
70
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
65
71
|
theme: colorsTheme.radioGroup
|
|
@@ -67,27 +73,16 @@ var DxcRadio = function DxcRadio(_ref) {
|
|
|
67
73
|
error: error,
|
|
68
74
|
disabled: disabled,
|
|
69
75
|
readonly: readonly,
|
|
70
|
-
|
|
71
|
-
// Prevents div's onclick from stealing the radio button's focus
|
|
72
|
-
event.preventDefault();
|
|
73
|
-
},
|
|
74
|
-
onClick: function onClick() {
|
|
75
|
-
var _ref$current2;
|
|
76
|
-
|
|
77
|
-
ref === null || ref === void 0 ? void 0 : (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.focus();
|
|
78
|
-
|
|
79
|
-
_onClick();
|
|
80
|
-
}
|
|
76
|
+
onClick: disabled ? undefined : handleOnClick
|
|
81
77
|
}, /*#__PURE__*/_react["default"].createElement(RadioInputContainer, null, /*#__PURE__*/_react["default"].createElement(RadioInput, {
|
|
82
78
|
error: error,
|
|
83
79
|
disabled: disabled,
|
|
84
80
|
readonly: readonly,
|
|
85
|
-
onFocus: onFocus,
|
|
86
81
|
role: "radio",
|
|
87
82
|
"aria-checked": checked,
|
|
88
|
-
"aria-disabled":
|
|
83
|
+
"aria-disabled": disabled,
|
|
89
84
|
"aria-labelledby": radioLabelId,
|
|
90
|
-
tabIndex: disabled ? -1 : focused ?
|
|
85
|
+
tabIndex: disabled ? -1 : focused ? tabIndex : -1,
|
|
91
86
|
ref: ref
|
|
92
87
|
}, checked && /*#__PURE__*/_react["default"].createElement(Dot, {
|
|
93
88
|
disabled: disabled,
|
|
@@ -96,30 +91,39 @@ var DxcRadio = function DxcRadio(_ref) {
|
|
|
96
91
|
}))), /*#__PURE__*/_react["default"].createElement(Label, {
|
|
97
92
|
id: radioLabelId,
|
|
98
93
|
disabled: disabled
|
|
99
|
-
},
|
|
94
|
+
}, label))));
|
|
100
95
|
};
|
|
101
96
|
|
|
102
|
-
var
|
|
97
|
+
var getRadioInputStateColor = function getRadioInputStateColor(props, state) {
|
|
98
|
+
switch (state) {
|
|
99
|
+
case "enabled":
|
|
100
|
+
return props.disabled ? props.theme.disabledRadioInputColor : props.error ? props.theme.errorRadioInputColor : props.readonly ? props.theme.readonlyRadioInputColor : props.theme.radioInputColor;
|
|
103
101
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
102
|
+
case "hover":
|
|
103
|
+
return props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor;
|
|
104
|
+
|
|
105
|
+
case "active":
|
|
106
|
+
return props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
var RadioMainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"])));
|
|
109
111
|
|
|
110
|
-
var RadioInputContainer = _styledComponents["default"].
|
|
112
|
+
var RadioInputContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n"])));
|
|
111
113
|
|
|
112
|
-
var RadioInput = _styledComponents["default"].
|
|
113
|
-
|
|
114
|
+
var RadioInput = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n border: 2px solid ", ";\n border-radius: 50%;\n\n &:focus {\n outline: 2px solid ", ";\n outline-offset: 1px;\n }\n ", "\n"])), function (props) {
|
|
115
|
+
return getRadioInputStateColor(props, "enabled");
|
|
114
116
|
}, function (props) {
|
|
115
|
-
return
|
|
117
|
+
return props.theme.focusBorderColor;
|
|
118
|
+
}, function (props) {
|
|
119
|
+
return props.disabled && "pointer-events: none;";
|
|
116
120
|
});
|
|
117
121
|
|
|
118
|
-
var Dot = _styledComponents["default"].span(
|
|
119
|
-
|
|
122
|
+
var Dot = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background-color: ", ";\n"])), function (props) {
|
|
123
|
+
return getRadioInputStateColor(props, "enabled");
|
|
120
124
|
});
|
|
121
125
|
|
|
122
|
-
var Label = _styledComponents["default"].span(
|
|
126
|
+
var Label = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (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) {
|
|
123
127
|
return props.theme.radioInputLabelMargin;
|
|
124
128
|
}, function (props) {
|
|
125
129
|
return props.theme.fontFamily;
|
|
@@ -132,7 +136,19 @@ var Label = _styledComponents["default"].span(_templateObject6 || (_templateObje
|
|
|
132
136
|
}, function (props) {
|
|
133
137
|
return props.theme.radioInputLabelLineHeight;
|
|
134
138
|
}, function (props) {
|
|
135
|
-
return props.disabled
|
|
139
|
+
return props.disabled ? "color: ".concat(props.theme.disabledRadioInputLabelFontColor, ";") : "color: ".concat(props.theme.radioInputLabelFontColor);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
var RadioContainer = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n\n &:hover {\n ", " {\n border-color: ", ";\n }\n ", " {\n background-color: ", ";\n }\n }\n &:active {\n ", " {\n border-color: ", ";\n }\n ", " {\n background-color: ", ";\n }\n }\n"])), function (props) {
|
|
143
|
+
return props.disabled ? "not-allowed" : props.readonly ? "default" : "pointer";
|
|
144
|
+
}, RadioInput, function (props) {
|
|
145
|
+
return !props.disabled && getRadioInputStateColor(props, "hover");
|
|
146
|
+
}, Dot, function (props) {
|
|
147
|
+
return !props.disabled && getRadioInputStateColor(props, "hover");
|
|
148
|
+
}, RadioInput, function (props) {
|
|
149
|
+
return !props.disabled && getRadioInputStateColor(props, "active");
|
|
150
|
+
}, Dot, function (props) {
|
|
151
|
+
return !props.disabled && getRadioInputStateColor(props, "active");
|
|
136
152
|
});
|
|
137
153
|
|
|
138
154
|
var _default = /*#__PURE__*/_react["default"].memo(DxcRadio);
|
|
@@ -23,6 +23,8 @@ var _uuid = require("uuid");
|
|
|
23
23
|
|
|
24
24
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
25
25
|
|
|
26
|
+
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
27
|
+
|
|
26
28
|
var _Radio = _interopRequireDefault(require("./Radio"));
|
|
27
29
|
|
|
28
30
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
|
|
@@ -39,6 +41,8 @@ var getInitialFocusIndex = function getInitialFocusIndex(innerOptions, value) {
|
|
|
39
41
|
};
|
|
40
42
|
|
|
41
43
|
var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
44
|
+
var _ref2;
|
|
45
|
+
|
|
42
46
|
var label = _ref.label,
|
|
43
47
|
name = _ref.name,
|
|
44
48
|
helperText = _ref.helperText,
|
|
@@ -47,8 +51,7 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
47
51
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
48
52
|
_ref$optional = _ref.optional,
|
|
49
53
|
optional = _ref$optional === void 0 ? false : _ref$optional,
|
|
50
|
-
|
|
51
|
-
optionalItemLabel = _ref$optionalItemLabe === void 0 ? "N/A" : _ref$optionalItemLabe,
|
|
54
|
+
optionalItemLabel = _ref.optionalItemLabel,
|
|
52
55
|
_ref$readonly = _ref.readonly,
|
|
53
56
|
readonly = _ref$readonly === void 0 ? false : _ref$readonly,
|
|
54
57
|
_ref$stacking = _ref.stacking,
|
|
@@ -57,7 +60,9 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
57
60
|
value = _ref.value,
|
|
58
61
|
onChange = _ref.onChange,
|
|
59
62
|
onBlur = _ref.onBlur,
|
|
60
|
-
error = _ref.error
|
|
63
|
+
error = _ref.error,
|
|
64
|
+
_ref$tabIndex = _ref.tabIndex,
|
|
65
|
+
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
|
|
61
66
|
|
|
62
67
|
var _useState = (0, _react.useState)("radio-group-".concat((0, _uuid.v4)())),
|
|
63
68
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 1),
|
|
@@ -76,8 +81,10 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
76
81
|
firstTimeFocus = _useState6[0],
|
|
77
82
|
setFirstTimeFocus = _useState6[1];
|
|
78
83
|
|
|
84
|
+
var colorsTheme = (0, _useTheme["default"])();
|
|
85
|
+
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
79
86
|
var optionalItem = {
|
|
80
|
-
label: optionalItemLabel,
|
|
87
|
+
label: optionalItemLabel || translatedLabels.radioGroup.optionalItemLabelDefault,
|
|
81
88
|
value: "",
|
|
82
89
|
disabled: disabled
|
|
83
90
|
};
|
|
@@ -90,7 +97,6 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
90
97
|
currentFocusIndex = _useState8[0],
|
|
91
98
|
setCurrentFocusIndex = _useState8[1];
|
|
92
99
|
|
|
93
|
-
var colorsTheme = (0, _useTheme["default"])();
|
|
94
100
|
var handleOnChange = (0, _react.useCallback)(function (newValue) {
|
|
95
101
|
var currentValue = value !== null && value !== void 0 ? value : innerValue;
|
|
96
102
|
|
|
@@ -98,70 +104,71 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
98
104
|
value !== null && value !== void 0 ? value : setInnerValue(newValue);
|
|
99
105
|
onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
|
|
100
106
|
}
|
|
101
|
-
}, [value, innerValue,
|
|
107
|
+
}, [value, innerValue, onChange]);
|
|
102
108
|
|
|
103
|
-
var handleOnBlur = function handleOnBlur(
|
|
109
|
+
var handleOnBlur = function handleOnBlur(event) {
|
|
104
110
|
// If the radio group loses the focus to an element not contained inside it...
|
|
105
|
-
!
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
if (!event.currentTarget.contains(event.relatedTarget)) {
|
|
112
|
+
setFirstTimeFocus(true);
|
|
113
|
+
var currentValue = value !== null && value !== void 0 ? value : innerValue;
|
|
114
|
+
!optional && !Boolean(currentValue) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
115
|
+
value: currentValue,
|
|
116
|
+
error: translatedLabels.formFields.requiredSelectionErrorMessage
|
|
117
|
+
}) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
118
|
+
value: currentValue
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
var handleOnFocus = function handleOnFocus() {
|
|
124
|
+
firstTimeFocus && setFirstTimeFocus(false);
|
|
113
125
|
};
|
|
114
126
|
|
|
115
127
|
var setPreviousRadioChecked = function setPreviousRadioChecked() {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
var index = currentFocusIndex === 0 ? innerOptions.length - 1 : currentFocusIndex - 1;
|
|
128
|
+
setCurrentFocusIndex(function (currentFocusIndex) {
|
|
129
|
+
var index = currentFocusIndex === 0 ? innerOptions.length - 1 : currentFocusIndex - 1;
|
|
119
130
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
131
|
+
while (innerOptions[index].disabled) {
|
|
132
|
+
index = index === 0 ? innerOptions.length - 1 : index - 1;
|
|
133
|
+
}
|
|
123
134
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
135
|
+
handleOnChange(innerOptions[index].value);
|
|
136
|
+
return index;
|
|
137
|
+
});
|
|
127
138
|
};
|
|
128
139
|
|
|
129
140
|
var setNextRadioChecked = function setNextRadioChecked() {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
var index = currentFocusIndex === innerOptions.length - 1 ? 0 : currentFocusIndex + 1;
|
|
141
|
+
setCurrentFocusIndex(function (currentFocusIndex) {
|
|
142
|
+
var index = currentFocusIndex === innerOptions.length - 1 ? 0 : currentFocusIndex + 1;
|
|
133
143
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
144
|
+
while (innerOptions[index].disabled) {
|
|
145
|
+
index = index === innerOptions.length - 1 ? 0 : index + 1;
|
|
146
|
+
}
|
|
137
147
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
148
|
+
handleOnChange(innerOptions[index].value);
|
|
149
|
+
return index;
|
|
150
|
+
});
|
|
141
151
|
};
|
|
142
152
|
|
|
143
153
|
var handleOnKeyDown = function handleOnKeyDown(event) {
|
|
144
|
-
switch (event.
|
|
145
|
-
case
|
|
146
|
-
|
|
147
|
-
case
|
|
148
|
-
|
|
154
|
+
switch (event.key) {
|
|
155
|
+
case "Left":
|
|
156
|
+
case "ArrowLeft":
|
|
157
|
+
case "Up":
|
|
158
|
+
case "ArrowUp":
|
|
149
159
|
event.preventDefault();
|
|
150
160
|
setPreviousRadioChecked();
|
|
151
161
|
break;
|
|
152
162
|
|
|
153
|
-
case
|
|
154
|
-
|
|
155
|
-
case
|
|
156
|
-
|
|
163
|
+
case "Right":
|
|
164
|
+
case "ArrowRight":
|
|
165
|
+
case "Down":
|
|
166
|
+
case "ArrowDown":
|
|
157
167
|
event.preventDefault();
|
|
158
168
|
setNextRadioChecked();
|
|
159
169
|
break;
|
|
160
170
|
|
|
161
|
-
case
|
|
162
|
-
|
|
163
|
-
case 32:
|
|
164
|
-
// space
|
|
171
|
+
case " ":
|
|
165
172
|
event.preventDefault();
|
|
166
173
|
handleOnChange(innerOptions[currentFocusIndex].value);
|
|
167
174
|
break;
|
|
@@ -176,38 +183,41 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
176
183
|
id: radioGroupLabelId,
|
|
177
184
|
helperText: helperText,
|
|
178
185
|
disabled: disabled
|
|
179
|
-
}, label,
|
|
186
|
+
}, label, optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, " ".concat(translatedLabels.formFields.optionalLabel))), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
|
|
180
187
|
disabled: disabled
|
|
181
188
|
}, helperText), /*#__PURE__*/_react["default"].createElement(RadioGroup, {
|
|
182
189
|
onBlur: handleOnBlur,
|
|
190
|
+
onFocus: handleOnFocus,
|
|
183
191
|
onKeyDown: handleOnKeyDown,
|
|
184
192
|
stacking: stacking,
|
|
185
193
|
role: "radiogroup",
|
|
186
194
|
"aria-disabled": disabled,
|
|
187
195
|
"aria-labelledby": radioGroupLabelId,
|
|
188
|
-
"aria-invalid": error ?
|
|
196
|
+
"aria-invalid": error ? true : false,
|
|
189
197
|
"aria-errormessage": error ? errorId : undefined,
|
|
190
|
-
"aria-required": !optional
|
|
198
|
+
"aria-required": !disabled && !readonly && !optional,
|
|
199
|
+
"aria-readonly": readonly,
|
|
200
|
+
"aria-orientation": stacking === "column" ? "vertical" : "horizontal"
|
|
191
201
|
}, /*#__PURE__*/_react["default"].createElement(ValueInput, {
|
|
192
202
|
name: name,
|
|
193
|
-
|
|
203
|
+
disabled: disabled,
|
|
204
|
+
value: (_ref2 = value !== null && value !== void 0 ? value : innerValue) !== null && _ref2 !== void 0 ? _ref2 : "",
|
|
194
205
|
readOnly: true,
|
|
195
206
|
"aria-hidden": "true"
|
|
196
207
|
}), innerOptions.map(function (option, index) {
|
|
197
208
|
return /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
|
|
198
|
-
|
|
199
|
-
|
|
209
|
+
key: "radio-".concat(index),
|
|
210
|
+
label: option.label,
|
|
211
|
+
checked: (value !== null && value !== void 0 ? value : innerValue) === option.value,
|
|
200
212
|
onClick: function onClick() {
|
|
201
213
|
handleOnChange(option.value);
|
|
202
214
|
setCurrentFocusIndex(index);
|
|
203
215
|
},
|
|
204
|
-
onFocus: function onFocus() {
|
|
205
|
-
!firstTimeFocus ? handleOnChange(option.value) : setFirstTimeFocus(false);
|
|
206
|
-
},
|
|
207
216
|
error: error,
|
|
208
217
|
disabled: option.disabled || disabled,
|
|
209
218
|
focused: currentFocusIndex === index,
|
|
210
|
-
readonly: readonly
|
|
219
|
+
readonly: readonly,
|
|
220
|
+
tabIndex: tabIndex
|
|
211
221
|
});
|
|
212
222
|
})), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
|
|
213
223
|
id: errorId,
|
|
@@ -253,7 +263,7 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
|
|
|
253
263
|
return props.theme.groupLabelMargin;
|
|
254
264
|
});
|
|
255
265
|
|
|
256
|
-
var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n
|
|
266
|
+
var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n row-gap: ", ";\n column-gap: ", ";\n"])), function (props) {
|
|
257
267
|
return props.stacking;
|
|
258
268
|
}, function (props) {
|
|
259
269
|
return props.theme.groupVerticalGutter;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
2
3
|
import Title from "../../.storybook/components/Title";
|
|
3
4
|
import DxcRadioGroup from "./RadioGroup";
|
|
@@ -7,6 +8,8 @@ export default {
|
|
|
7
8
|
component: DxcRadioGroup,
|
|
8
9
|
};
|
|
9
10
|
|
|
11
|
+
const single_option = [{ label: "Option A", value: "A" }];
|
|
12
|
+
|
|
10
13
|
const options = [
|
|
11
14
|
{ label: "Option 1", value: "1" },
|
|
12
15
|
{ label: "Option 2", value: "2" },
|
|
@@ -14,66 +17,85 @@ const options = [
|
|
|
14
17
|
{ label: "Option 4", value: "4" },
|
|
15
18
|
];
|
|
16
19
|
|
|
17
|
-
const single_disabled_options = [
|
|
18
|
-
{ label: "Option 1", value: "1" },
|
|
19
|
-
{ label: "Option 2", value: "2", disabled: true },
|
|
20
|
-
{ label: "Option 3", value: "3" },
|
|
21
|
-
];
|
|
20
|
+
const single_disabled_options = [{ label: "Option A", value: "A", disabled: true }];
|
|
22
21
|
|
|
23
22
|
export const Chromatic = () => (
|
|
24
23
|
<>
|
|
24
|
+
<Title title="Radio input states" theme="light" level={2} />
|
|
25
|
+
<ExampleContainer>
|
|
26
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
27
|
+
<DxcRadioGroup label="Example" defaultValue="A" options={single_option} />
|
|
28
|
+
</ExampleContainer>
|
|
29
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
30
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
31
|
+
<DxcRadioGroup label="Example" defaultValue="A" options={single_option} />
|
|
32
|
+
</ExampleContainer>
|
|
33
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
34
|
+
<Title title="Active" theme="light" level={4} />
|
|
35
|
+
<DxcRadioGroup label="Example" defaultValue="A" options={single_option} />
|
|
36
|
+
</ExampleContainer>
|
|
37
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
38
|
+
<Title title="Focused" theme="light" level={4} />
|
|
39
|
+
<DxcRadioGroup label="Example" defaultValue="A" options={single_option} />
|
|
40
|
+
</ExampleContainer>
|
|
41
|
+
<ExampleContainer>
|
|
42
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
43
|
+
<DxcRadioGroup label="Example" options={single_disabled_options} defaultValue="A" />
|
|
44
|
+
</ExampleContainer>
|
|
45
|
+
<Title title="Readonly radio input sub-states" theme="light" level={3} />
|
|
46
|
+
<ExampleContainer>
|
|
47
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
48
|
+
<DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly />
|
|
49
|
+
</ExampleContainer>
|
|
50
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
51
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
52
|
+
<DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly />
|
|
53
|
+
</ExampleContainer>
|
|
54
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
55
|
+
<Title title="Active" theme="light" level={4} />
|
|
56
|
+
<DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly />
|
|
57
|
+
</ExampleContainer>
|
|
58
|
+
<Title title="Error radio input sub-states" theme="light" level={3} />
|
|
25
59
|
<ExampleContainer>
|
|
26
|
-
<Title title="
|
|
27
|
-
<DxcRadioGroup label="Example
|
|
60
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
61
|
+
<DxcRadioGroup label="Example" options={single_option} defaultValue="A" error="Error message" />
|
|
62
|
+
</ExampleContainer>
|
|
63
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
64
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
65
|
+
<DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly error="Error message" />
|
|
28
66
|
</ExampleContainer>
|
|
67
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
68
|
+
<Title title="Active" theme="light" level={4} />
|
|
69
|
+
<DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly error="Error message" />
|
|
70
|
+
</ExampleContainer>
|
|
71
|
+
<Title title="Variants" theme="light" level={2} />
|
|
29
72
|
<ExampleContainer>
|
|
30
73
|
<Title title="Column" theme="light" level={4} />
|
|
31
|
-
<DxcRadioGroup label="Example" helperText="Helper text" options={options}
|
|
74
|
+
<DxcRadioGroup label="Example" helperText="Helper text" options={options} />
|
|
32
75
|
</ExampleContainer>
|
|
33
76
|
<ExampleContainer>
|
|
34
77
|
<Title title="Row" theme="light" level={4} />
|
|
35
78
|
<DxcRadioGroup label="Example" helperText="Helper text" options={options} stacking="row" />
|
|
36
79
|
</ExampleContainer>
|
|
37
80
|
<ExampleContainer>
|
|
38
|
-
<Title title="
|
|
39
|
-
<DxcRadioGroup
|
|
40
|
-
label="Disabled"
|
|
41
|
-
error="Error message"
|
|
42
|
-
helperText="Helper text"
|
|
43
|
-
options={options}
|
|
44
|
-
disabled
|
|
45
|
-
optional
|
|
46
|
-
defaultValue="2"
|
|
47
|
-
/>
|
|
81
|
+
<Title title="Optional" theme="light" level={4} />
|
|
82
|
+
<DxcRadioGroup label="Example" optional helperText="Helper text" options={options} stacking="row" />
|
|
48
83
|
</ExampleContainer>
|
|
49
84
|
<ExampleContainer>
|
|
50
|
-
<Title title="
|
|
51
|
-
<DxcRadioGroup label="
|
|
85
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
86
|
+
<DxcRadioGroup label="Example" helperText="Helper text" options={options} disabled />
|
|
52
87
|
</ExampleContainer>
|
|
53
88
|
<ExampleContainer>
|
|
54
|
-
<Title title="
|
|
55
|
-
<DxcRadioGroup
|
|
56
|
-
label="Example"
|
|
57
|
-
optionalItemLabel="No selection"
|
|
58
|
-
optional
|
|
59
|
-
helperText="Helper text"
|
|
60
|
-
options={options}
|
|
61
|
-
stacking="row"
|
|
62
|
-
/>
|
|
89
|
+
<Title title="Readonly" theme="light" level={4} />
|
|
90
|
+
<DxcRadioGroup label="Example" readonly helperText="Helper text" options={options} />
|
|
63
91
|
</ExampleContainer>
|
|
64
92
|
<ExampleContainer>
|
|
65
|
-
<Title title="Error" theme="light" level={4} />
|
|
66
|
-
<DxcRadioGroup
|
|
67
|
-
label="Example"
|
|
68
|
-
error="Error message"
|
|
69
|
-
helperText="Helper text"
|
|
70
|
-
options={options}
|
|
71
|
-
defaultValue="2"
|
|
72
|
-
/>
|
|
93
|
+
<Title title="Error space reserved" theme="light" level={4} />
|
|
94
|
+
<DxcRadioGroup label="Example" error="" helperText="Helper text" options={options} />
|
|
73
95
|
</ExampleContainer>
|
|
74
96
|
<ExampleContainer>
|
|
75
|
-
<Title title="
|
|
76
|
-
<DxcRadioGroup label="Example"
|
|
97
|
+
<Title title="Error" theme="light" level={4} />
|
|
98
|
+
<DxcRadioGroup label="Example" error="Error message" helperText="Helper text" options={options} />
|
|
77
99
|
</ExampleContainer>
|
|
78
100
|
</>
|
|
79
101
|
);
|