@dxc-technology/halstack-react 0.0.0-a0a27b4 → 0.0.0-a1db683
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 +295 -0
- package/accordion/Accordion.d.ts +1 -1
- package/accordion/Accordion.js +13 -45
- package/accordion/Accordion.stories.tsx +11 -11
- package/accordion/Accordion.test.js +72 -0
- package/accordion/types.d.ts +7 -7
- package/accordion-group/AccordionGroup.d.ts +1 -1
- package/accordion-group/AccordionGroup.js +13 -15
- package/accordion-group/AccordionGroup.stories.tsx +1 -1
- package/accordion-group/AccordionGroup.test.js +151 -0
- package/accordion-group/types.d.ts +7 -7
- package/alert/Alert.js +4 -1
- package/alert/Alert.test.js +92 -0
- package/badge/Badge.d.ts +4 -0
- package/badge/Badge.js +5 -3
- package/badge/types.d.ts +5 -0
- package/{radio → badge}/types.js +0 -0
- package/bleed/Bleed.d.ts +3 -0
- package/bleed/Bleed.js +51 -0
- package/bleed/Bleed.stories.tsx +341 -0
- package/bleed/types.d.ts +37 -0
- package/bleed/types.js +5 -0
- package/box/Box.js +22 -32
- package/box/Box.test.js +18 -0
- package/button/Button.d.ts +1 -1
- package/button/Button.js +19 -24
- package/button/Button.stories.tsx +6 -8
- package/button/Button.test.js +35 -0
- package/button/types.d.ts +3 -7
- package/card/Card.js +24 -27
- package/card/Card.test.js +50 -0
- package/checkbox/Checkbox.d.ts +1 -1
- package/checkbox/Checkbox.js +43 -39
- package/checkbox/Checkbox.stories.tsx +124 -128
- package/checkbox/Checkbox.test.js +78 -0
- package/checkbox/types.d.ts +7 -3
- package/chip/Chip.d.ts +1 -1
- package/chip/Chip.js +14 -52
- package/chip/Chip.stories.tsx +6 -8
- package/chip/Chip.test.js +56 -0
- package/chip/types.d.ts +5 -13
- package/common/variables.js +195 -330
- package/date-input/DateInput.js +59 -45
- package/date-input/DateInput.stories.tsx +7 -7
- package/date-input/DateInput.test.js +479 -0
- package/date-input/types.d.ts +16 -9
- package/dialog/Dialog.js +4 -32
- package/dialog/Dialog.test.js +40 -0
- package/dropdown/Dropdown.d.ts +1 -1
- package/dropdown/Dropdown.js +21 -47
- package/dropdown/Dropdown.stories.tsx +25 -23
- package/dropdown/Dropdown.test.js +189 -0
- package/dropdown/types.d.ts +5 -14
- package/file-input/FileInput.js +9 -6
- package/file-input/FileInput.test.js +457 -0
- package/file-input/FileItem.js +7 -5
- package/footer/Footer.js +24 -99
- package/footer/Footer.test.js +109 -0
- package/header/Header.js +27 -48
- package/header/Header.stories.tsx +46 -36
- package/header/Header.test.js +79 -0
- package/heading/Heading.test.js +186 -0
- package/inset/Inset.d.ts +3 -0
- package/inset/Inset.js +51 -0
- package/inset/Inset.stories.tsx +229 -0
- package/inset/types.d.ts +37 -0
- package/inset/types.js +5 -0
- package/layout/ApplicationLayout.d.ts +4 -3
- package/layout/ApplicationLayout.js +84 -110
- package/layout/ApplicationLayout.stories.tsx +14 -59
- 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 +5 -10
- package/link/Link.d.ts +3 -2
- package/link/Link.js +60 -85
- package/link/Link.stories.tsx +91 -51
- package/link/Link.test.js +83 -0
- package/link/types.d.ts +9 -29
- package/list/List.d.ts +3 -7
- package/list/List.js +3 -3
- package/list/types.d.ts +7 -0
- package/list/types.js +5 -0
- package/main.d.ts +7 -8
- package/main.js +39 -41
- package/number-input/NumberInput.js +11 -18
- package/number-input/NumberInput.stories.tsx +5 -5
- package/number-input/NumberInput.test.js +506 -0
- package/number-input/types.d.ts +17 -10
- package/package.json +6 -5
- package/paginator/Paginator.js +17 -38
- package/paginator/Paginator.test.js +266 -0
- package/password-input/PasswordInput.js +7 -4
- package/password-input/PasswordInput.test.js +180 -0
- package/password-input/types.d.ts +14 -11
- package/progress-bar/ProgressBar.js +3 -3
- package/progress-bar/ProgressBar.stories.jsx +11 -11
- package/progress-bar/ProgressBar.test.js +65 -0
- package/quick-nav/QuickNav.d.ts +4 -0
- package/quick-nav/QuickNav.js +112 -0
- package/quick-nav/QuickNav.stories.tsx +237 -0
- package/quick-nav/types.d.ts +21 -0
- package/quick-nav/types.js +5 -0
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +50 -26
- package/radio-group/RadioGroup.js +84 -33
- package/radio-group/RadioGroup.stories.tsx +63 -20
- package/radio-group/RadioGroup.test.js +695 -0
- package/radio-group/types.d.ts +85 -2
- package/resultsetTable/ResultsetTable.js +5 -2
- package/resultsetTable/ResultsetTable.stories.tsx +6 -8
- package/resultsetTable/ResultsetTable.test.js +306 -0
- package/row/Row.d.ts +3 -11
- package/row/Row.stories.tsx +5 -7
- package/row/types.d.ts +28 -0
- package/row/types.js +5 -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 +152 -0
- package/select/Option.d.ts +4 -0
- package/select/Option.js +110 -0
- package/select/Select.js +109 -327
- package/select/Select.stories.tsx +103 -81
- package/select/Select.test.js +2120 -0
- package/select/types.d.ts +54 -11
- package/sidenav/Sidenav.d.ts +1 -1
- package/sidenav/Sidenav.js +20 -9
- package/sidenav/Sidenav.test.js +56 -0
- package/slider/Slider.d.ts +1 -1
- package/slider/Slider.js +2 -1
- package/slider/Slider.stories.tsx +8 -8
- package/slider/Slider.test.js +150 -0
- package/slider/types.d.ts +4 -0
- package/spinner/Spinner.js +1 -1
- package/spinner/Spinner.test.js +64 -0
- package/stack/Stack.d.ts +3 -10
- package/stack/Stack.stories.tsx +4 -6
- package/stack/types.d.ts +24 -0
- package/stack/types.js +5 -0
- package/switch/Switch.d.ts +1 -1
- package/switch/Switch.js +35 -19
- package/switch/Switch.stories.tsx +14 -14
- package/switch/Switch.test.js +98 -0
- package/switch/types.d.ts +6 -2
- package/table/Table.test.js +26 -0
- package/tabs/Tabs.d.ts +1 -1
- package/tabs/Tabs.js +16 -18
- package/tabs/Tabs.stories.tsx +6 -16
- package/tabs/Tabs.test.js +140 -0
- package/tabs/types.d.ts +27 -15
- 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 +132 -0
- package/tabs-nav/types.d.ts +53 -0
- package/tabs-nav/types.js +5 -0
- package/tag/Tag.d.ts +1 -1
- package/tag/Tag.js +17 -27
- package/tag/Tag.stories.tsx +25 -28
- package/tag/Tag.test.js +60 -0
- package/tag/types.d.ts +23 -14
- package/text/Text.js +1 -1
- package/text-input/Suggestion.d.ts +4 -0
- package/text-input/Suggestion.js +55 -0
- package/text-input/TextInput.js +68 -84
- package/text-input/TextInput.stories.tsx +30 -12
- package/text-input/TextInput.test.js +1712 -0
- package/text-input/types.d.ts +32 -13
- 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 +8 -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 +55 -44
- package/wizard/Wizard.stories.tsx +13 -23
- package/wizard/Wizard.test.js +141 -0
- package/wizard/types.d.ts +6 -2
- 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/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/toggle/Toggle.js +0 -186
- package/toggle/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/radio-group/Radio.js
CHANGED
|
@@ -21,20 +21,23 @@ var _uuid = require("uuid");
|
|
|
21
21
|
|
|
22
22
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
23
23
|
|
|
24
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
24
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
25
25
|
|
|
26
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
27
|
|
|
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 _option$disabled;
|
|
32
|
+
|
|
31
33
|
var option = _ref.option,
|
|
32
34
|
currentValue = _ref.currentValue,
|
|
33
35
|
onClick = _ref.onClick,
|
|
34
|
-
onFocus = _ref.onFocus,
|
|
35
36
|
error = _ref.error,
|
|
36
37
|
disabled = _ref.disabled,
|
|
37
|
-
focused = _ref.focused
|
|
38
|
+
focused = _ref.focused,
|
|
39
|
+
readonly = _ref.readonly,
|
|
40
|
+
tabIndex = _ref.tabIndex;
|
|
38
41
|
|
|
39
42
|
var _useState = (0, _react.useState)("radio-".concat((0, _uuid.v4)())),
|
|
40
43
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 1),
|
|
@@ -42,7 +45,13 @@ var DxcRadio = function DxcRadio(_ref) {
|
|
|
42
45
|
|
|
43
46
|
var ref = (0, _react.useRef)(null);
|
|
44
47
|
var colorsTheme = (0, _useTheme["default"])();
|
|
45
|
-
|
|
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
|
+
};
|
|
46
55
|
|
|
47
56
|
var _useState3 = (0, _react.useState)(true),
|
|
48
57
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
@@ -50,7 +59,7 @@ var DxcRadio = function DxcRadio(_ref) {
|
|
|
50
59
|
setFirstUpdate = _useState4[1];
|
|
51
60
|
|
|
52
61
|
(0, _react.useLayoutEffect)(function () {
|
|
53
|
-
var _ref$
|
|
62
|
+
var _ref$current2;
|
|
54
63
|
|
|
55
64
|
// Don't apply in the first render
|
|
56
65
|
if (firstUpdate) {
|
|
@@ -58,47 +67,62 @@ var DxcRadio = function DxcRadio(_ref) {
|
|
|
58
67
|
return;
|
|
59
68
|
}
|
|
60
69
|
|
|
61
|
-
focused && (ref === null || ref === void 0 ? void 0 : (_ref$
|
|
70
|
+
focused && (ref === null || ref === void 0 ? void 0 : (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.focus());
|
|
62
71
|
}, [focused]);
|
|
63
72
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
64
73
|
theme: colorsTheme.radioGroup
|
|
65
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
74
|
+
}, /*#__PURE__*/_react["default"].createElement(RadioMainContainer, null, /*#__PURE__*/_react["default"].createElement(RadioContainer, {
|
|
75
|
+
error: error,
|
|
66
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, {
|
|
67
84
|
error: error,
|
|
68
|
-
|
|
69
|
-
|
|
85
|
+
disabled: disabled,
|
|
86
|
+
readonly: readonly,
|
|
70
87
|
role: "radio",
|
|
71
|
-
"aria-checked":
|
|
88
|
+
"aria-checked": option.value === currentValue,
|
|
89
|
+
"aria-disabled": (_option$disabled = option.disabled) !== null && _option$disabled !== void 0 ? _option$disabled : false,
|
|
72
90
|
"aria-labelledby": radioLabelId,
|
|
73
|
-
tabIndex: disabled ? -1 : focused
|
|
91
|
+
tabIndex: disabled ? -1 : focused ? tabIndex : -1,
|
|
74
92
|
ref: ref
|
|
75
|
-
},
|
|
93
|
+
}, option.value === currentValue && /*#__PURE__*/_react["default"].createElement(Dot, {
|
|
94
|
+
disabled: disabled,
|
|
95
|
+
readonly: readonly,
|
|
76
96
|
error: error
|
|
77
97
|
}))), /*#__PURE__*/_react["default"].createElement(Label, {
|
|
78
98
|
id: radioLabelId,
|
|
79
|
-
onMouseDown: function onMouseDown(event) {
|
|
80
|
-
event.preventDefault();
|
|
81
|
-
},
|
|
82
|
-
onClick: onClick,
|
|
83
99
|
disabled: disabled
|
|
84
|
-
}, option.label)));
|
|
100
|
+
}, option.label))));
|
|
85
101
|
};
|
|
86
102
|
|
|
87
|
-
var
|
|
103
|
+
var RadioMainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"])));
|
|
88
104
|
|
|
89
|
-
var
|
|
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
|
+
});
|
|
90
110
|
|
|
91
|
-
var
|
|
92
|
-
|
|
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;
|
|
93
115
|
}, function (props) {
|
|
94
|
-
return !props.disabled ? "
|
|
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 ";
|
|
95
117
|
});
|
|
96
118
|
|
|
97
|
-
var Dot = _styledComponents["default"].span(
|
|
98
|
-
return props.error
|
|
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;
|
|
99
121
|
});
|
|
100
122
|
|
|
101
|
-
var Label = _styledComponents["default"].span(
|
|
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) {
|
|
102
126
|
return props.theme.fontFamily;
|
|
103
127
|
}, function (props) {
|
|
104
128
|
return props.theme.radioInputLabelFontSize;
|
|
@@ -109,7 +133,7 @@ var Label = _styledComponents["default"].span(_templateObject5 || (_templateObje
|
|
|
109
133
|
}, function (props) {
|
|
110
134
|
return props.theme.radioInputLabelLineHeight;
|
|
111
135
|
}, function (props) {
|
|
112
|
-
return props.disabled ? "color: ".concat(props.theme.disabledRadioInputLabelFontColor, "; pointer-events: none;") : "
|
|
136
|
+
return props.disabled ? "color: ".concat(props.theme.disabledRadioInputLabelFontColor, "; pointer-events: none;") : "color: ".concat(props.theme.radioInputLabelFontColor);
|
|
113
137
|
});
|
|
114
138
|
|
|
115
139
|
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;
|
|
@@ -47,8 +49,7 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
47
49
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
48
50
|
_ref$optional = _ref.optional,
|
|
49
51
|
optional = _ref$optional === void 0 ? false : _ref$optional,
|
|
50
|
-
|
|
51
|
-
optionalItemLabel = _ref$optionalItemLabe === void 0 ? "N/A" : _ref$optionalItemLabe,
|
|
52
|
+
optionalItemLabel = _ref.optionalItemLabel,
|
|
52
53
|
_ref$readonly = _ref.readonly,
|
|
53
54
|
readonly = _ref$readonly === void 0 ? false : _ref$readonly,
|
|
54
55
|
_ref$stacking = _ref.stacking,
|
|
@@ -56,13 +57,17 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
56
57
|
defaultValue = _ref.defaultValue,
|
|
57
58
|
value = _ref.value,
|
|
58
59
|
onChange = _ref.onChange,
|
|
59
|
-
|
|
60
|
+
onBlur = _ref.onBlur,
|
|
61
|
+
error = _ref.error,
|
|
62
|
+
_ref$tabIndex = _ref.tabIndex,
|
|
63
|
+
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
|
|
60
64
|
|
|
61
|
-
var _useState = (0, _react.useState)("
|
|
65
|
+
var _useState = (0, _react.useState)("radio-group-".concat((0, _uuid.v4)())),
|
|
62
66
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 1),
|
|
63
67
|
radioGroupId = _useState2[0];
|
|
64
68
|
|
|
65
69
|
var radioGroupLabelId = "label-".concat(radioGroupId);
|
|
70
|
+
var errorId = "error-".concat(radioGroupId);
|
|
66
71
|
|
|
67
72
|
var _useState3 = (0, _react.useState)(defaultValue),
|
|
68
73
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
@@ -74,8 +79,10 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
74
79
|
firstTimeFocus = _useState6[0],
|
|
75
80
|
setFirstTimeFocus = _useState6[1];
|
|
76
81
|
|
|
82
|
+
var colorsTheme = (0, _useTheme["default"])();
|
|
83
|
+
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
77
84
|
var optionalItem = {
|
|
78
|
-
label: optionalItemLabel,
|
|
85
|
+
label: optionalItemLabel || translatedLabels.radioGroup.optionalItemLabelDefault,
|
|
79
86
|
value: "",
|
|
80
87
|
disabled: disabled
|
|
81
88
|
};
|
|
@@ -88,11 +95,10 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
88
95
|
currentFocusIndex = _useState8[0],
|
|
89
96
|
setCurrentFocusIndex = _useState8[1];
|
|
90
97
|
|
|
91
|
-
var colorsTheme = (0, _useTheme["default"])();
|
|
92
98
|
var handleOnChange = (0, _react.useCallback)(function (newValue) {
|
|
93
99
|
var currentValue = value !== null && value !== void 0 ? value : innerValue;
|
|
94
100
|
|
|
95
|
-
if (newValue !== currentValue) {
|
|
101
|
+
if (newValue !== currentValue && !readonly) {
|
|
96
102
|
value !== null && value !== void 0 ? value : setInnerValue(newValue);
|
|
97
103
|
onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
|
|
98
104
|
}
|
|
@@ -100,26 +106,49 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
100
106
|
|
|
101
107
|
var handleOnBlur = function handleOnBlur(e) {
|
|
102
108
|
// If the radio group loses the focus to an element not contained inside it...
|
|
103
|
-
!e.currentTarget.contains(e.relatedTarget)
|
|
109
|
+
if (!e.currentTarget.contains(e.relatedTarget)) {
|
|
110
|
+
setFirstTimeFocus(true);
|
|
111
|
+
var currentValue = value !== null && value !== void 0 ? value : innerValue;
|
|
112
|
+
!optional && !Boolean(currentValue) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
113
|
+
value: currentValue,
|
|
114
|
+
error: translatedLabels.formFields.requiredSelectionErrorMessage
|
|
115
|
+
}) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
116
|
+
value: currentValue
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
var handleOnFocus = function handleOnFocus() {
|
|
122
|
+
firstTimeFocus && setFirstTimeFocus(false);
|
|
104
123
|
};
|
|
105
124
|
|
|
106
125
|
var setPreviousRadioChecked = function setPreviousRadioChecked() {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
126
|
+
setCurrentFocusIndex(function (currentFocusIndex) {
|
|
127
|
+
var index = currentFocusIndex === 0 ? innerOptions.length - 1 : currentFocusIndex - 1;
|
|
128
|
+
|
|
129
|
+
while (innerOptions[index].disabled) {
|
|
130
|
+
index = index === 0 ? innerOptions.length - 1 : index - 1;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
handleOnChange(innerOptions[index].value);
|
|
134
|
+
return index;
|
|
135
|
+
});
|
|
112
136
|
};
|
|
113
137
|
|
|
114
138
|
var setNextRadioChecked = function setNextRadioChecked() {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
139
|
+
setCurrentFocusIndex(function (currentFocusIndex) {
|
|
140
|
+
var index = currentFocusIndex === innerOptions.length - 1 ? 0 : currentFocusIndex + 1;
|
|
141
|
+
|
|
142
|
+
while (innerOptions[index].disabled) {
|
|
143
|
+
index = index === innerOptions.length - 1 ? 0 : index + 1;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
handleOnChange(innerOptions[index].value);
|
|
147
|
+
return index;
|
|
148
|
+
});
|
|
120
149
|
};
|
|
121
150
|
|
|
122
|
-
var handleOnKeyDown =
|
|
151
|
+
var handleOnKeyDown = function handleOnKeyDown(event) {
|
|
123
152
|
switch (event.keyCode) {
|
|
124
153
|
case 37: // arrow left
|
|
125
154
|
|
|
@@ -136,8 +165,17 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
136
165
|
event.preventDefault();
|
|
137
166
|
setNextRadioChecked();
|
|
138
167
|
break;
|
|
168
|
+
|
|
169
|
+
case 13: // enter
|
|
170
|
+
|
|
171
|
+
case 32:
|
|
172
|
+
// space
|
|
173
|
+
event.preventDefault();
|
|
174
|
+
handleOnChange(innerOptions[currentFocusIndex].value);
|
|
175
|
+
break;
|
|
139
176
|
}
|
|
140
|
-
}
|
|
177
|
+
};
|
|
178
|
+
|
|
141
179
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
142
180
|
theme: colorsTheme.radioGroup
|
|
143
181
|
}, /*#__PURE__*/_react["default"].createElement(RadioGroupContainer, {
|
|
@@ -146,14 +184,21 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
146
184
|
id: radioGroupLabelId,
|
|
147
185
|
helperText: helperText,
|
|
148
186
|
disabled: disabled
|
|
149
|
-
}, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null,
|
|
187
|
+
}, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
|
|
150
188
|
disabled: disabled
|
|
151
189
|
}, helperText), /*#__PURE__*/_react["default"].createElement(RadioGroup, {
|
|
190
|
+
onBlur: handleOnBlur,
|
|
191
|
+
onFocus: handleOnFocus,
|
|
192
|
+
onKeyDown: handleOnKeyDown,
|
|
152
193
|
stacking: stacking,
|
|
153
194
|
role: "radiogroup",
|
|
195
|
+
"aria-disabled": disabled,
|
|
154
196
|
"aria-labelledby": radioGroupLabelId,
|
|
155
|
-
|
|
156
|
-
|
|
197
|
+
"aria-invalid": error ? "true" : "false",
|
|
198
|
+
"aria-errormessage": error ? errorId : undefined,
|
|
199
|
+
"aria-required": !disabled && !readonly && !optional,
|
|
200
|
+
"aria-readonly": readonly,
|
|
201
|
+
"aria-orientation": stacking === "column" ? "vertical" : "horizontal"
|
|
157
202
|
}, /*#__PURE__*/_react["default"].createElement(ValueInput, {
|
|
158
203
|
name: name,
|
|
159
204
|
value: value !== null && value !== void 0 ? value : innerValue,
|
|
@@ -167,17 +212,19 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
167
212
|
handleOnChange(option.value);
|
|
168
213
|
setCurrentFocusIndex(index);
|
|
169
214
|
},
|
|
170
|
-
onFocus: function onFocus() {
|
|
171
|
-
!firstTimeFocus ? handleOnChange(option.value) : setFirstTimeFocus(false);
|
|
172
|
-
},
|
|
173
215
|
error: error,
|
|
174
216
|
disabled: option.disabled || disabled,
|
|
175
|
-
focused: currentFocusIndex === index
|
|
217
|
+
focused: currentFocusIndex === index,
|
|
218
|
+
readonly: readonly,
|
|
219
|
+
tabIndex: tabIndex
|
|
176
220
|
});
|
|
177
|
-
})), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error,
|
|
221
|
+
})), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
|
|
222
|
+
id: errorId,
|
|
223
|
+
"aria-live": error ? "assertive" : "off"
|
|
224
|
+
}, error)));
|
|
178
225
|
});
|
|
179
226
|
|
|
180
|
-
var RadioGroupContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n"])));
|
|
227
|
+
var RadioGroupContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: column;\n box-sizing: border-box;\n"])));
|
|
181
228
|
|
|
182
229
|
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) {
|
|
183
230
|
return props.disabled ? props.theme.disabledLabelFontColor : props.theme.labelFontColor;
|
|
@@ -192,14 +239,14 @@ var Label = _styledComponents["default"].span(_templateObject2 || (_templateObje
|
|
|
192
239
|
}, function (props) {
|
|
193
240
|
return props.theme.labelLineHeight;
|
|
194
241
|
}, function (props) {
|
|
195
|
-
return !props.helperText && "margin-bottom:
|
|
242
|
+
return !props.helperText && "margin-bottom: ".concat(props.theme.groupLabelMargin);
|
|
196
243
|
});
|
|
197
244
|
|
|
198
245
|
var OptionalLabel = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: ", ";\n"])), function (props) {
|
|
199
246
|
return props.theme.optionalLabelFontWeight;
|
|
200
247
|
});
|
|
201
248
|
|
|
202
|
-
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:
|
|
249
|
+
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) {
|
|
203
250
|
return props.disabled ? props.theme.disabledHelperTextFontColor : props.theme.helperTextFontColor;
|
|
204
251
|
}, function (props) {
|
|
205
252
|
return props.theme.fontFamily;
|
|
@@ -211,12 +258,16 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
|
|
|
211
258
|
return props.theme.helperTextFontWeight;
|
|
212
259
|
}, function (props) {
|
|
213
260
|
return props.theme.helperTextLineHeight;
|
|
261
|
+
}, function (props) {
|
|
262
|
+
return props.theme.groupLabelMargin;
|
|
214
263
|
});
|
|
215
264
|
|
|
216
|
-
var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n\n
|
|
265
|
+
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) {
|
|
217
266
|
return props.stacking;
|
|
218
267
|
}, function (props) {
|
|
219
|
-
return props.
|
|
268
|
+
return props.theme.groupVerticalGutter;
|
|
269
|
+
}, function (props) {
|
|
270
|
+
return props.theme.groupHorizontalGutter;
|
|
220
271
|
});
|
|
221
272
|
|
|
222
273
|
var ValueInput = _styledComponents["default"].input(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
|
|
@@ -7,6 +7,8 @@ export default {
|
|
|
7
7
|
component: DxcRadioGroup,
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
+
const single_option = [{ label: "Option A", value: "A" }];
|
|
11
|
+
|
|
10
12
|
const options = [
|
|
11
13
|
{ label: "Option 1", value: "1" },
|
|
12
14
|
{ label: "Option 2", value: "2" },
|
|
@@ -14,44 +16,85 @@ const options = [
|
|
|
14
16
|
{ label: "Option 4", value: "4" },
|
|
15
17
|
];
|
|
16
18
|
|
|
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
|
-
];
|
|
19
|
+
const single_disabled_options = [{ label: "Option A", value: "A", disabled: true }];
|
|
22
20
|
|
|
23
21
|
export const Chromatic = () => (
|
|
24
22
|
<>
|
|
23
|
+
<Title title="Radio input states" theme="light" level={2} />
|
|
24
|
+
<ExampleContainer>
|
|
25
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
26
|
+
<DxcRadioGroup label="Example" defaultValue="A" options={single_option} />
|
|
27
|
+
</ExampleContainer>
|
|
28
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
29
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
30
|
+
<DxcRadioGroup label="Example" defaultValue="A" options={single_option} />
|
|
31
|
+
</ExampleContainer>
|
|
32
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
33
|
+
<Title title="Active" theme="light" level={4} />
|
|
34
|
+
<DxcRadioGroup label="Example" defaultValue="A" options={single_option} />
|
|
35
|
+
</ExampleContainer>
|
|
36
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
37
|
+
<Title title="Focused" theme="light" level={4} />
|
|
38
|
+
<DxcRadioGroup label="Example" defaultValue="A" options={single_option} />
|
|
39
|
+
</ExampleContainer>
|
|
40
|
+
<ExampleContainer>
|
|
41
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
42
|
+
<DxcRadioGroup label="Example" options={single_disabled_options} defaultValue="A" />
|
|
43
|
+
</ExampleContainer>
|
|
44
|
+
<Title title="Readonly radio input sub-states" theme="light" level={3} />
|
|
25
45
|
<ExampleContainer>
|
|
26
|
-
<Title title="
|
|
27
|
-
<DxcRadioGroup label="Example"
|
|
46
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
47
|
+
<DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly />
|
|
48
|
+
</ExampleContainer>
|
|
49
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
50
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
51
|
+
<DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly />
|
|
52
|
+
</ExampleContainer>
|
|
53
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
54
|
+
<Title title="Active" theme="light" level={4} />
|
|
55
|
+
<DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly />
|
|
56
|
+
</ExampleContainer>
|
|
57
|
+
<Title title="Error radio input sub-states" theme="light" level={3} />
|
|
58
|
+
<ExampleContainer>
|
|
59
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
60
|
+
<DxcRadioGroup label="Example" options={single_option} defaultValue="A" error="Error message" />
|
|
61
|
+
</ExampleContainer>
|
|
62
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
63
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
64
|
+
<DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly error="Error message" />
|
|
65
|
+
</ExampleContainer>
|
|
66
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
67
|
+
<Title title="Active" theme="light" level={4} />
|
|
68
|
+
<DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly error="Error message" />
|
|
69
|
+
</ExampleContainer>
|
|
70
|
+
<Title title="Variants" theme="light" level={2} />
|
|
71
|
+
<ExampleContainer>
|
|
72
|
+
<Title title="Column" theme="light" level={4} />
|
|
73
|
+
<DxcRadioGroup label="Example" helperText="Helper text" options={options} />
|
|
28
74
|
</ExampleContainer>
|
|
29
75
|
<ExampleContainer>
|
|
30
76
|
<Title title="Row" theme="light" level={4} />
|
|
31
77
|
<DxcRadioGroup label="Example" helperText="Helper text" options={options} stacking="row" />
|
|
32
78
|
</ExampleContainer>
|
|
79
|
+
<ExampleContainer>
|
|
80
|
+
<Title title="Optional" theme="light" level={4} />
|
|
81
|
+
<DxcRadioGroup label="Example" optional helperText="Helper text" options={options} stacking="row" />
|
|
82
|
+
</ExampleContainer>
|
|
33
83
|
<ExampleContainer>
|
|
34
84
|
<Title title="Disabled" theme="light" level={4} />
|
|
35
|
-
<DxcRadioGroup label="
|
|
85
|
+
<DxcRadioGroup label="Example" helperText="Helper text" options={options} disabled />
|
|
36
86
|
</ExampleContainer>
|
|
37
87
|
<ExampleContainer>
|
|
38
|
-
<Title title="
|
|
39
|
-
<DxcRadioGroup label="
|
|
88
|
+
<Title title="Readonly" theme="light" level={4} />
|
|
89
|
+
<DxcRadioGroup label="Example" readonly helperText="Helper text" options={options} />
|
|
40
90
|
</ExampleContainer>
|
|
41
91
|
<ExampleContainer>
|
|
42
|
-
<Title title="
|
|
43
|
-
<DxcRadioGroup
|
|
44
|
-
label="Example"
|
|
45
|
-
optionalItemLabel="No selection"
|
|
46
|
-
optional
|
|
47
|
-
helperText="Helper text"
|
|
48
|
-
options={options}
|
|
49
|
-
stacking="row"
|
|
50
|
-
/>
|
|
92
|
+
<Title title="Error space reserved" theme="light" level={4} />
|
|
93
|
+
<DxcRadioGroup label="Example" error="" helperText="Helper text" options={options} />
|
|
51
94
|
</ExampleContainer>
|
|
52
95
|
<ExampleContainer>
|
|
53
96
|
<Title title="Error" theme="light" level={4} />
|
|
54
|
-
<DxcRadioGroup label="Example" error="Error message" helperText="Helper text" options={options}
|
|
97
|
+
<DxcRadioGroup label="Example" error="Error message" helperText="Helper text" options={options} />
|
|
55
98
|
</ExampleContainer>
|
|
56
99
|
</>
|
|
57
100
|
);
|