@dxc-technology/halstack-react 0.0.0-9d82cb9 → 0.0.0-9e54008
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 +2 -2
- package/BackgroundColorContext.js +1 -1
- package/HalstackContext.d.ts +1336 -0
- package/HalstackContext.js +335 -0
- package/accordion/Accordion.d.ts +1 -1
- package/accordion/Accordion.js +110 -146
- package/accordion/Accordion.stories.tsx +108 -118
- package/accordion/Accordion.test.js +71 -0
- package/accordion/types.d.ts +7 -18
- package/accordion-group/AccordionGroup.d.ts +5 -4
- package/accordion-group/AccordionGroup.js +34 -76
- package/accordion-group/AccordionGroup.stories.tsx +94 -67
- package/accordion-group/AccordionGroup.test.js +116 -0
- package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
- package/accordion-group/AccordionGroupAccordion.js +43 -0
- package/accordion-group/types.d.ts +13 -18
- package/alert/Alert.js +9 -10
- package/alert/Alert.stories.tsx +28 -0
- 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/bleed/Bleed.d.ts +2 -2
- package/bleed/Bleed.js +1 -34
- package/bleed/Bleed.stories.tsx +95 -95
- package/bleed/types.d.ts +25 -1
- package/box/Box.d.ts +1 -1
- package/box/Box.js +19 -48
- package/box/Box.stories.tsx +38 -51
- package/box/Box.test.js +18 -0
- package/box/types.d.ts +0 -11
- package/bulleted-list/BulletedList.d.ts +7 -0
- package/bulleted-list/BulletedList.js +125 -0
- package/bulleted-list/BulletedList.stories.tsx +206 -0
- package/bulleted-list/types.d.ts +38 -0
- package/bulleted-list/types.js +5 -0
- package/button/Button.js +52 -70
- package/button/Button.stories.tsx +159 -8
- package/button/Button.test.js +35 -0
- package/button/types.d.ts +5 -5
- package/card/Card.d.ts +1 -1
- package/card/Card.js +37 -58
- package/card/Card.stories.tsx +12 -42
- package/card/Card.test.js +50 -0
- package/card/types.d.ts +1 -6
- package/checkbox/Checkbox.d.ts +2 -2
- package/checkbox/Checkbox.js +107 -110
- package/checkbox/Checkbox.stories.tsx +198 -130
- package/checkbox/Checkbox.test.js +155 -0
- package/checkbox/types.d.ts +11 -3
- package/chip/Chip.d.ts +1 -1
- package/chip/Chip.js +36 -95
- package/chip/Chip.stories.tsx +123 -30
- package/chip/Chip.test.js +54 -0
- package/chip/types.d.ts +5 -13
- package/common/OpenSans.css +68 -80
- package/common/coreTokens.d.ts +146 -0
- package/common/coreTokens.js +167 -0
- package/common/utils.d.ts +1 -0
- package/common/utils.js +4 -4
- package/common/variables.d.ts +1482 -0
- package/common/variables.js +1097 -1348
- package/date-input/Calendar.d.ts +4 -0
- package/date-input/Calendar.js +258 -0
- package/date-input/DateInput.js +169 -258
- package/date-input/DateInput.stories.tsx +199 -33
- package/date-input/DateInput.test.js +835 -0
- package/date-input/DatePicker.d.ts +4 -0
- package/date-input/DatePicker.js +146 -0
- package/date-input/Icons.d.ts +6 -0
- package/date-input/Icons.js +75 -0
- package/date-input/YearPicker.d.ts +4 -0
- package/date-input/YearPicker.js +126 -0
- package/date-input/types.d.ts +67 -9
- package/dialog/Dialog.d.ts +1 -1
- package/dialog/Dialog.js +68 -103
- package/dialog/Dialog.stories.tsx +154 -171
- package/dialog/Dialog.test.js +369 -0
- package/dialog/types.d.ts +0 -12
- package/dropdown/Dropdown.d.ts +1 -1
- package/dropdown/Dropdown.js +248 -277
- package/dropdown/Dropdown.stories.tsx +255 -64
- package/dropdown/Dropdown.test.js +586 -0
- package/dropdown/DropdownMenu.d.ts +4 -0
- package/dropdown/DropdownMenu.js +74 -0
- package/dropdown/DropdownMenuItem.d.ts +4 -0
- package/dropdown/DropdownMenuItem.js +79 -0
- package/dropdown/types.d.ts +27 -16
- package/file-input/FileInput.d.ts +2 -2
- package/file-input/FileInput.js +180 -223
- package/file-input/FileInput.stories.tsx +122 -11
- package/file-input/FileInput.test.js +457 -0
- package/file-input/FileItem.d.ts +4 -14
- package/file-input/FileItem.js +44 -66
- package/file-input/types.d.ts +18 -1
- package/flex/Flex.d.ts +4 -0
- package/flex/Flex.js +71 -0
- package/flex/Flex.stories.tsx +112 -0
- package/flex/types.d.ts +97 -0
- package/flex/types.js +5 -0
- package/footer/Footer.d.ts +1 -1
- package/footer/Footer.js +26 -116
- package/footer/Footer.stories.tsx +26 -16
- package/footer/Footer.test.js +97 -0
- package/footer/Icons.js +1 -1
- package/footer/types.d.ts +1 -6
- package/grid/Grid.d.ts +7 -0
- package/grid/Grid.js +91 -0
- package/grid/Grid.stories.tsx +219 -0
- package/grid/types.d.ts +115 -0
- package/grid/types.js +5 -0
- package/header/Header.d.ts +4 -3
- package/header/Header.js +102 -150
- package/header/Header.stories.tsx +152 -63
- package/header/Header.test.js +79 -0
- package/header/Icons.js +2 -2
- package/header/types.d.ts +0 -13
- package/heading/Heading.js +1 -1
- package/heading/Heading.test.js +186 -0
- package/inset/Inset.js +1 -34
- package/inset/Inset.stories.tsx +37 -36
- package/inset/types.d.ts +25 -1
- package/layout/ApplicationLayout.d.ts +16 -6
- package/layout/ApplicationLayout.js +72 -126
- 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 +19 -35
- package/link/Link.d.ts +3 -2
- package/link/Link.js +63 -88
- package/link/Link.stories.tsx +159 -52
- package/link/Link.test.js +81 -0
- package/link/types.d.ts +7 -27
- package/main.d.ts +12 -15
- package/main.js +57 -75
- package/nav-tabs/NavTabs.d.ts +8 -0
- package/nav-tabs/NavTabs.js +122 -0
- package/nav-tabs/NavTabs.stories.tsx +274 -0
- package/nav-tabs/NavTabs.test.js +82 -0
- package/nav-tabs/Tab.d.ts +4 -0
- package/nav-tabs/Tab.js +146 -0
- package/nav-tabs/types.d.ts +52 -0
- package/nav-tabs/types.js +5 -0
- 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 -23
- package/paginator/Icons.d.ts +5 -0
- package/paginator/Icons.js +16 -28
- package/paginator/Paginator.js +20 -49
- package/paginator/Paginator.stories.tsx +24 -0
- package/paginator/Paginator.test.js +318 -0
- package/paragraph/Paragraph.d.ts +5 -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.js +61 -55
- package/progress-bar/ProgressBar.stories.jsx +47 -12
- package/progress-bar/ProgressBar.test.js +110 -0
- package/quick-nav/QuickNav.d.ts +4 -0
- package/quick-nav/QuickNav.js +117 -0
- package/quick-nav/QuickNav.stories.tsx +356 -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 +60 -34
- package/radio-group/RadioGroup.js +81 -68
- package/radio-group/RadioGroup.stories.tsx +171 -36
- package/radio-group/RadioGroup.test.js +722 -0
- package/radio-group/types.d.ts +81 -3
- package/resultsetTable/Icons.d.ts +7 -0
- package/resultsetTable/Icons.js +51 -0
- package/resultsetTable/ResultsetTable.js +50 -106
- package/resultsetTable/ResultsetTable.stories.tsx +50 -25
- package/resultsetTable/ResultsetTable.test.js +325 -0
- package/resultsetTable/types.d.ts +1 -1
- package/select/Icons.d.ts +10 -0
- package/select/Icons.js +93 -0
- package/select/Listbox.d.ts +4 -0
- package/select/Listbox.js +169 -0
- package/select/Option.d.ts +4 -0
- package/select/Option.js +97 -0
- package/select/Select.js +189 -386
- package/select/Select.stories.tsx +600 -201
- package/select/Select.test.js +2228 -0
- package/select/types.d.ts +53 -13
- package/sidenav/Icons.d.ts +7 -0
- package/sidenav/Icons.js +51 -0
- package/sidenav/Sidenav.d.ts +6 -5
- package/sidenav/Sidenav.js +146 -44
- package/sidenav/Sidenav.stories.tsx +251 -151
- package/sidenav/Sidenav.test.js +44 -0
- package/sidenav/types.d.ts +52 -26
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +123 -98
- package/slider/Slider.stories.tsx +72 -9
- package/slider/Slider.test.js +250 -0
- package/slider/types.d.ts +8 -0
- package/spinner/Spinner.js +18 -24
- package/spinner/Spinner.stories.jsx +53 -27
- package/spinner/Spinner.test.js +64 -0
- package/switch/Switch.d.ts +2 -2
- package/switch/Switch.js +152 -69
- package/switch/Switch.stories.tsx +53 -42
- package/switch/Switch.test.js +225 -0
- package/switch/types.d.ts +10 -2
- package/table/Table.js +3 -3
- package/table/Table.stories.jsx +80 -1
- package/table/Table.test.js +26 -0
- package/tabs/Tab.d.ts +4 -0
- package/tabs/Tab.js +132 -0
- package/tabs/Tabs.d.ts +1 -1
- package/tabs/Tabs.js +362 -114
- package/tabs/Tabs.stories.tsx +122 -18
- package/tabs/Tabs.test.js +350 -0
- package/tabs/types.d.ts +37 -15
- package/tag/Tag.d.ts +1 -1
- package/tag/Tag.js +24 -36
- package/tag/Tag.stories.tsx +37 -27
- package/tag/Tag.test.js +60 -0
- package/tag/types.d.ts +23 -14
- 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 +84 -0
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +134 -0
- package/text-input/TextInput.js +225 -346
- package/text-input/TextInput.stories.tsx +310 -197
- package/text-input/TextInput.test.js +1723 -0
- package/text-input/types.d.ts +50 -12
- package/textarea/Textarea.js +22 -30
- package/textarea/Textarea.stories.jsx +93 -13
- package/textarea/Textarea.test.js +435 -0
- package/textarea/types.d.ts +18 -11
- package/toggle-group/ToggleGroup.d.ts +2 -2
- package/toggle-group/ToggleGroup.js +12 -8
- package/toggle-group/ToggleGroup.stories.tsx +46 -4
- package/toggle-group/ToggleGroup.test.js +156 -0
- package/toggle-group/types.d.ts +10 -2
- package/typography/Typography.d.ts +4 -0
- package/typography/Typography.js +32 -0
- package/typography/Typography.stories.tsx +198 -0
- package/typography/types.d.ts +18 -0
- package/typography/types.js +5 -0
- package/useTheme.d.ts +1234 -1
- package/useTheme.js +3 -3
- package/useTranslatedLabels.d.ts +85 -0
- package/useTranslatedLabels.js +20 -0
- package/utils/BaseTypography.d.ts +21 -0
- package/utils/BaseTypography.js +108 -0
- package/utils/FocusLock.d.ts +13 -0
- package/utils/FocusLock.js +138 -0
- package/wizard/Wizard.d.ts +1 -1
- package/wizard/Wizard.js +59 -55
- package/wizard/Wizard.stories.tsx +48 -19
- package/wizard/Wizard.test.js +141 -0
- package/wizard/types.d.ts +8 -4
- 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/card/ice-cream.jpg +0 -0
- package/common/RequiredComponent.js +0 -32
- 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 -8
- package/list/List.js +0 -47
- package/list/List.stories.tsx +0 -95
- 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 -11
- package/row/Row.js +0 -127
- package/row/Row.stories.tsx +0 -239
- package/stack/Stack.d.ts +0 -10
- package/stack/Stack.js +0 -97
- package/stack/Stack.stories.tsx +0 -166
- package/text/Text.d.ts +0 -7
- package/text/Text.js +0 -30
- package/text/Text.stories.tsx +0 -19
- 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 → badge}/types.js +0 -0
|
@@ -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,13 +60,16 @@ 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
|
-
var _useState = (0, _react.useState)("
|
|
67
|
+
var _useState = (0, _react.useState)("radio-group-".concat((0, _uuid.v4)())),
|
|
63
68
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 1),
|
|
64
69
|
radioGroupId = _useState2[0];
|
|
65
70
|
|
|
66
71
|
var radioGroupLabelId = "label-".concat(radioGroupId);
|
|
72
|
+
var errorId = "error-".concat(radioGroupId);
|
|
67
73
|
|
|
68
74
|
var _useState3 = (0, _react.useState)(defaultValue),
|
|
69
75
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
@@ -75,21 +81,21 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
75
81
|
firstTimeFocus = _useState6[0],
|
|
76
82
|
setFirstTimeFocus = _useState6[1];
|
|
77
83
|
|
|
78
|
-
var
|
|
79
|
-
|
|
80
|
-
value: "",
|
|
81
|
-
disabled: disabled
|
|
82
|
-
};
|
|
84
|
+
var colorsTheme = (0, _useTheme["default"])();
|
|
85
|
+
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
83
86
|
var innerOptions = (0, _react.useMemo)(function () {
|
|
84
|
-
return optional ? [].concat((0, _toConsumableArray2["default"])(options), [
|
|
85
|
-
|
|
87
|
+
return optional ? [].concat((0, _toConsumableArray2["default"])(options), [{
|
|
88
|
+
label: optionalItemLabel !== null && optionalItemLabel !== void 0 ? optionalItemLabel : translatedLabels.radioGroup.optionalItemLabelDefault,
|
|
89
|
+
value: "",
|
|
90
|
+
disabled: disabled
|
|
91
|
+
}]) : options;
|
|
92
|
+
}, [optional, options, optionalItemLabel, translatedLabels]);
|
|
86
93
|
|
|
87
94
|
var _useState7 = (0, _react.useState)(getInitialFocusIndex(innerOptions, value !== null && value !== void 0 ? value : innerValue)),
|
|
88
95
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
89
96
|
currentFocusIndex = _useState8[0],
|
|
90
97
|
setCurrentFocusIndex = _useState8[1];
|
|
91
98
|
|
|
92
|
-
var colorsTheme = (0, _useTheme["default"])();
|
|
93
99
|
var handleOnChange = (0, _react.useCallback)(function (newValue) {
|
|
94
100
|
var currentValue = value !== null && value !== void 0 ? value : innerValue;
|
|
95
101
|
|
|
@@ -97,70 +103,71 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
97
103
|
value !== null && value !== void 0 ? value : setInnerValue(newValue);
|
|
98
104
|
onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
|
|
99
105
|
}
|
|
100
|
-
}, [value, innerValue,
|
|
106
|
+
}, [value, innerValue, onChange]);
|
|
101
107
|
|
|
102
|
-
var handleOnBlur = function handleOnBlur(
|
|
108
|
+
var handleOnBlur = function handleOnBlur(event) {
|
|
103
109
|
// If the radio group loses the focus to an element not contained inside it...
|
|
104
|
-
!
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
if (!event.currentTarget.contains(event.relatedTarget)) {
|
|
111
|
+
setFirstTimeFocus(true);
|
|
112
|
+
var currentValue = value !== null && value !== void 0 ? value : innerValue;
|
|
113
|
+
!optional && !Boolean(currentValue) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
114
|
+
value: currentValue,
|
|
115
|
+
error: translatedLabels.formFields.requiredSelectionErrorMessage
|
|
116
|
+
}) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
117
|
+
value: currentValue
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
var handleOnFocus = function handleOnFocus() {
|
|
123
|
+
firstTimeFocus && setFirstTimeFocus(false);
|
|
112
124
|
};
|
|
113
125
|
|
|
114
126
|
var setPreviousRadioChecked = function setPreviousRadioChecked() {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
var index = currentFocusIndex === 0 ? innerOptions.length - 1 : currentFocusIndex - 1;
|
|
127
|
+
setCurrentFocusIndex(function (currentFocusIndex) {
|
|
128
|
+
var index = currentFocusIndex === 0 ? innerOptions.length - 1 : currentFocusIndex - 1;
|
|
118
129
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
130
|
+
while (innerOptions[index].disabled) {
|
|
131
|
+
index = index === 0 ? innerOptions.length - 1 : index - 1;
|
|
132
|
+
}
|
|
122
133
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
134
|
+
handleOnChange(innerOptions[index].value);
|
|
135
|
+
return index;
|
|
136
|
+
});
|
|
126
137
|
};
|
|
127
138
|
|
|
128
139
|
var setNextRadioChecked = function setNextRadioChecked() {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
var index = currentFocusIndex === innerOptions.length - 1 ? 0 : currentFocusIndex + 1;
|
|
140
|
+
setCurrentFocusIndex(function (currentFocusIndex) {
|
|
141
|
+
var index = currentFocusIndex === innerOptions.length - 1 ? 0 : currentFocusIndex + 1;
|
|
132
142
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
143
|
+
while (innerOptions[index].disabled) {
|
|
144
|
+
index = index === innerOptions.length - 1 ? 0 : index + 1;
|
|
145
|
+
}
|
|
136
146
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}
|
|
147
|
+
handleOnChange(innerOptions[index].value);
|
|
148
|
+
return index;
|
|
149
|
+
});
|
|
140
150
|
};
|
|
141
151
|
|
|
142
152
|
var handleOnKeyDown = function handleOnKeyDown(event) {
|
|
143
|
-
switch (event.
|
|
144
|
-
case
|
|
145
|
-
|
|
146
|
-
case
|
|
147
|
-
|
|
153
|
+
switch (event.key) {
|
|
154
|
+
case "Left":
|
|
155
|
+
case "ArrowLeft":
|
|
156
|
+
case "Up":
|
|
157
|
+
case "ArrowUp":
|
|
148
158
|
event.preventDefault();
|
|
149
159
|
setPreviousRadioChecked();
|
|
150
160
|
break;
|
|
151
161
|
|
|
152
|
-
case
|
|
153
|
-
|
|
154
|
-
case
|
|
155
|
-
|
|
162
|
+
case "Right":
|
|
163
|
+
case "ArrowRight":
|
|
164
|
+
case "Down":
|
|
165
|
+
case "ArrowDown":
|
|
156
166
|
event.preventDefault();
|
|
157
167
|
setNextRadioChecked();
|
|
158
168
|
break;
|
|
159
169
|
|
|
160
|
-
case
|
|
161
|
-
|
|
162
|
-
case 32:
|
|
163
|
-
// space
|
|
170
|
+
case " ":
|
|
164
171
|
event.preventDefault();
|
|
165
172
|
handleOnChange(innerOptions[currentFocusIndex].value);
|
|
166
173
|
break;
|
|
@@ -175,42 +182,48 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
|
|
|
175
182
|
id: radioGroupLabelId,
|
|
176
183
|
helperText: helperText,
|
|
177
184
|
disabled: disabled
|
|
178
|
-
}, label,
|
|
185
|
+
}, label, optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, " ".concat(translatedLabels.formFields.optionalLabel))), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
|
|
179
186
|
disabled: disabled
|
|
180
187
|
}, helperText), /*#__PURE__*/_react["default"].createElement(RadioGroup, {
|
|
181
188
|
onBlur: handleOnBlur,
|
|
189
|
+
onFocus: handleOnFocus,
|
|
182
190
|
onKeyDown: handleOnKeyDown,
|
|
183
191
|
stacking: stacking,
|
|
184
192
|
role: "radiogroup",
|
|
185
193
|
"aria-disabled": disabled,
|
|
186
194
|
"aria-labelledby": radioGroupLabelId,
|
|
187
|
-
"aria-invalid": error ?
|
|
188
|
-
"aria-
|
|
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"
|
|
189
200
|
}, /*#__PURE__*/_react["default"].createElement(ValueInput, {
|
|
190
201
|
name: name,
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
202
|
+
disabled: disabled,
|
|
203
|
+
value: (_ref2 = value !== null && value !== void 0 ? value : innerValue) !== null && _ref2 !== void 0 ? _ref2 : "",
|
|
204
|
+
readOnly: true
|
|
194
205
|
}), innerOptions.map(function (option, index) {
|
|
195
206
|
return /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
|
|
196
|
-
|
|
197
|
-
|
|
207
|
+
key: "radio-".concat(index),
|
|
208
|
+
label: option.label,
|
|
209
|
+
checked: (value !== null && value !== void 0 ? value : innerValue) === option.value,
|
|
198
210
|
onClick: function onClick() {
|
|
199
211
|
handleOnChange(option.value);
|
|
200
212
|
setCurrentFocusIndex(index);
|
|
201
213
|
},
|
|
202
|
-
onFocus: function onFocus() {
|
|
203
|
-
!firstTimeFocus ? handleOnChange(option.value) : setFirstTimeFocus(false);
|
|
204
|
-
},
|
|
205
214
|
error: error,
|
|
206
215
|
disabled: option.disabled || disabled,
|
|
207
216
|
focused: currentFocusIndex === index,
|
|
208
|
-
readonly: readonly
|
|
217
|
+
readonly: readonly,
|
|
218
|
+
tabIndex: tabIndex
|
|
209
219
|
});
|
|
210
|
-
})), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error,
|
|
220
|
+
})), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
|
|
221
|
+
id: errorId,
|
|
222
|
+
"aria-live": error ? "assertive" : "off"
|
|
223
|
+
}, error)));
|
|
211
224
|
});
|
|
212
225
|
|
|
213
|
-
var RadioGroupContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n
|
|
226
|
+
var RadioGroupContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: inline-flex;\n flex-direction: column;\n"])));
|
|
214
227
|
|
|
215
228
|
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) {
|
|
216
229
|
return props.disabled ? props.theme.disabledLabelFontColor : props.theme.labelFontColor;
|
|
@@ -248,7 +261,7 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
|
|
|
248
261
|
return props.theme.groupLabelMargin;
|
|
249
262
|
});
|
|
250
263
|
|
|
251
|
-
var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n
|
|
264
|
+
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) {
|
|
252
265
|
return props.stacking;
|
|
253
266
|
}, function (props) {
|
|
254
267
|
return props.theme.groupVerticalGutter;
|
|
@@ -1,12 +1,16 @@
|
|
|
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";
|
|
5
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
4
6
|
|
|
5
7
|
export default {
|
|
6
8
|
title: "Radio Group",
|
|
7
9
|
component: DxcRadioGroup,
|
|
8
10
|
};
|
|
9
11
|
|
|
12
|
+
const single_option = [{ label: "Option A", value: "A" }];
|
|
13
|
+
|
|
10
14
|
const options = [
|
|
11
15
|
{ label: "Option 1", value: "1" },
|
|
12
16
|
{ label: "Option 2", value: "2" },
|
|
@@ -14,66 +18,197 @@ const options = [
|
|
|
14
18
|
{ label: "Option 4", value: "4" },
|
|
15
19
|
];
|
|
16
20
|
|
|
17
|
-
const single_disabled_options = [
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
const single_disabled_options = [{ label: "Option A", value: "A", disabled: true }];
|
|
22
|
+
|
|
23
|
+
const opinionatedTheme = {
|
|
24
|
+
radioGroup: {
|
|
25
|
+
baseColor: "#0086e6",
|
|
26
|
+
fontColor: "#000000",
|
|
27
|
+
},
|
|
28
|
+
};
|
|
22
29
|
|
|
23
30
|
export const Chromatic = () => (
|
|
24
31
|
<>
|
|
32
|
+
<Title title="Radio input states" theme="light" level={2} />
|
|
25
33
|
<ExampleContainer>
|
|
26
|
-
<Title title="
|
|
27
|
-
<DxcRadioGroup label="
|
|
34
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
35
|
+
<DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
|
|
28
36
|
</ExampleContainer>
|
|
29
|
-
<ExampleContainer>
|
|
30
|
-
<Title title="
|
|
31
|
-
<DxcRadioGroup label="
|
|
37
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
38
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
39
|
+
<DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
|
|
32
40
|
</ExampleContainer>
|
|
33
|
-
<ExampleContainer>
|
|
34
|
-
<Title title="
|
|
35
|
-
<DxcRadioGroup label="
|
|
41
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
42
|
+
<Title title="Active" theme="light" level={4} />
|
|
43
|
+
<DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
|
|
44
|
+
</ExampleContainer>
|
|
45
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
46
|
+
<Title title="Focused" theme="light" level={4} />
|
|
47
|
+
<DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
|
|
36
48
|
</ExampleContainer>
|
|
37
49
|
<ExampleContainer>
|
|
38
50
|
<Title title="Disabled" theme="light" level={4} />
|
|
39
|
-
<DxcRadioGroup
|
|
40
|
-
label="Disabled"
|
|
41
|
-
error="Error message"
|
|
42
|
-
helperText="Helper text"
|
|
43
|
-
options={options}
|
|
44
|
-
disabled
|
|
45
|
-
optional
|
|
46
|
-
defaultValue="2"
|
|
47
|
-
/>
|
|
51
|
+
<DxcRadioGroup label="Label" helperText="Helper text" options={single_disabled_options} defaultValue="A" />
|
|
48
52
|
</ExampleContainer>
|
|
53
|
+
<Title title="Readonly radio input sub-states" theme="light" level={3} />
|
|
49
54
|
<ExampleContainer>
|
|
50
|
-
<Title title="
|
|
51
|
-
<DxcRadioGroup label="
|
|
55
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
56
|
+
<DxcRadioGroup label="Label" helperText="Helper text" options={single_option} defaultValue="A" readonly />
|
|
57
|
+
</ExampleContainer>
|
|
58
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
59
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
60
|
+
<DxcRadioGroup label="Label" helperText="Helper text" options={single_option} defaultValue="A" readonly />
|
|
52
61
|
</ExampleContainer>
|
|
62
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
63
|
+
<Title title="Active" theme="light" level={4} />
|
|
64
|
+
<DxcRadioGroup label="Label" helperText="Helper text" options={single_option} defaultValue="A" readonly />
|
|
65
|
+
</ExampleContainer>
|
|
66
|
+
<Title title="Error radio input sub-states" theme="light" level={3} />
|
|
53
67
|
<ExampleContainer>
|
|
54
|
-
<Title title="
|
|
68
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
55
69
|
<DxcRadioGroup
|
|
56
|
-
label="
|
|
57
|
-
optionalItemLabel="No selection"
|
|
58
|
-
optional
|
|
70
|
+
label="Label"
|
|
59
71
|
helperText="Helper text"
|
|
60
|
-
options={
|
|
61
|
-
|
|
72
|
+
options={single_option}
|
|
73
|
+
defaultValue="A"
|
|
74
|
+
error="Error message"
|
|
62
75
|
/>
|
|
63
76
|
</ExampleContainer>
|
|
64
|
-
<ExampleContainer>
|
|
65
|
-
<Title title="
|
|
77
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
78
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
66
79
|
<DxcRadioGroup
|
|
67
|
-
label="
|
|
80
|
+
label="Label"
|
|
81
|
+
helperText="Helper text"
|
|
82
|
+
options={single_option}
|
|
83
|
+
defaultValue="A"
|
|
84
|
+
readonly
|
|
68
85
|
error="Error message"
|
|
86
|
+
/>
|
|
87
|
+
</ExampleContainer>
|
|
88
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
89
|
+
<Title title="Active" theme="light" level={4} />
|
|
90
|
+
<DxcRadioGroup
|
|
91
|
+
label="Label"
|
|
69
92
|
helperText="Helper text"
|
|
70
|
-
options={
|
|
71
|
-
defaultValue="
|
|
93
|
+
options={single_option}
|
|
94
|
+
defaultValue="A"
|
|
95
|
+
readonly
|
|
96
|
+
error="Error message"
|
|
72
97
|
/>
|
|
73
98
|
</ExampleContainer>
|
|
99
|
+
<Title title="Variants" theme="light" level={2} />
|
|
100
|
+
<ExampleContainer>
|
|
101
|
+
<Title title="Column" theme="light" level={4} />
|
|
102
|
+
<DxcRadioGroup label="Label" helperText="Helper text" options={options} />
|
|
103
|
+
</ExampleContainer>
|
|
104
|
+
<ExampleContainer>
|
|
105
|
+
<Title title="Row" theme="light" level={4} />
|
|
106
|
+
<DxcRadioGroup label="Label" helperText="Helper text" options={options} stacking="row" />
|
|
107
|
+
</ExampleContainer>
|
|
108
|
+
<ExampleContainer>
|
|
109
|
+
<Title title="Optional" theme="light" level={4} />
|
|
110
|
+
<DxcRadioGroup label="Label" optional helperText="Helper text" options={options} stacking="row" />
|
|
111
|
+
</ExampleContainer>
|
|
112
|
+
<ExampleContainer>
|
|
113
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
114
|
+
<DxcRadioGroup label="Label" helperText="Helper text" options={options} disabled />
|
|
115
|
+
</ExampleContainer>
|
|
74
116
|
<ExampleContainer>
|
|
75
117
|
<Title title="Readonly" theme="light" level={4} />
|
|
76
|
-
<DxcRadioGroup label="
|
|
118
|
+
<DxcRadioGroup label="Label" readonly helperText="Helper text" options={options} />
|
|
119
|
+
</ExampleContainer>
|
|
120
|
+
<ExampleContainer>
|
|
121
|
+
<Title title="Error space reserved" theme="light" level={4} />
|
|
122
|
+
<DxcRadioGroup label="Label" error="" helperText="Helper text" options={options} />
|
|
123
|
+
</ExampleContainer>
|
|
124
|
+
<ExampleContainer>
|
|
125
|
+
<Title title="Error" theme="light" level={4} />
|
|
126
|
+
<DxcRadioGroup label="Label" error="Error message" helperText="Helper text" options={options} />
|
|
127
|
+
</ExampleContainer>
|
|
128
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
129
|
+
<ExampleContainer>
|
|
130
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
131
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
132
|
+
<DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
|
|
133
|
+
</HalstackProvider>
|
|
134
|
+
</ExampleContainer>
|
|
135
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
136
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
137
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
138
|
+
<DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
|
|
139
|
+
</HalstackProvider>
|
|
140
|
+
</ExampleContainer>
|
|
141
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
142
|
+
<Title title="Active" theme="light" level={4} />
|
|
143
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
144
|
+
<DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
|
|
145
|
+
</HalstackProvider>
|
|
146
|
+
</ExampleContainer>
|
|
147
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
148
|
+
<Title title="Focused" theme="light" level={4} />
|
|
149
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
150
|
+
<DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
|
|
151
|
+
</HalstackProvider>
|
|
152
|
+
</ExampleContainer>
|
|
153
|
+
<ExampleContainer>
|
|
154
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
155
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
156
|
+
<DxcRadioGroup label="Label" helperText="Helper text" options={single_disabled_options} defaultValue="A" />
|
|
157
|
+
</HalstackProvider>
|
|
158
|
+
</ExampleContainer>
|
|
159
|
+
<ExampleContainer>
|
|
160
|
+
<Title title="Readonly enabled" theme="light" level={4} />
|
|
161
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
162
|
+
<DxcRadioGroup label="Label" options={single_option} defaultValue="A" readonly />
|
|
163
|
+
</HalstackProvider>
|
|
164
|
+
</ExampleContainer>
|
|
165
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
166
|
+
<Title title="Readonly hovered" theme="light" level={4} />
|
|
167
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
168
|
+
<DxcRadioGroup label="Label" options={single_option} defaultValue="A" readonly />
|
|
169
|
+
</HalstackProvider>
|
|
170
|
+
</ExampleContainer>
|
|
171
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
172
|
+
<Title title="Readonly active" theme="light" level={4} />
|
|
173
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
174
|
+
<DxcRadioGroup label="Label" options={single_option} defaultValue="A" readonly />
|
|
175
|
+
</HalstackProvider>
|
|
176
|
+
</ExampleContainer>
|
|
177
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
178
|
+
<Title title="Readonly focused" theme="light" level={4} />
|
|
179
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
180
|
+
<DxcRadioGroup label="Label" options={single_option} defaultValue="A" readonly />
|
|
181
|
+
</HalstackProvider>
|
|
182
|
+
</ExampleContainer>
|
|
183
|
+
<ExampleContainer>
|
|
184
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
185
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
186
|
+
<DxcRadioGroup label="Label" options={single_option} defaultValue="A" error="Error message" />
|
|
187
|
+
</HalstackProvider>
|
|
188
|
+
</ExampleContainer>
|
|
189
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
190
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
191
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
192
|
+
<DxcRadioGroup label="Label" options={single_option} defaultValue="A" error="Error message" />
|
|
193
|
+
</HalstackProvider>
|
|
194
|
+
</ExampleContainer>
|
|
195
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
196
|
+
<Title title="Active" theme="light" level={4} />
|
|
197
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
198
|
+
<DxcRadioGroup label="Label" options={single_option} defaultValue="A" error="Error message" />
|
|
199
|
+
</HalstackProvider>
|
|
200
|
+
</ExampleContainer>
|
|
201
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
202
|
+
<Title title="Focused" theme="light" level={4} />
|
|
203
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
204
|
+
<DxcRadioGroup label="Label" options={single_option} defaultValue="A" error="Error message" />
|
|
205
|
+
</HalstackProvider>
|
|
206
|
+
</ExampleContainer>
|
|
207
|
+
<ExampleContainer>
|
|
208
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
209
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
210
|
+
<DxcRadioGroup label="Label" helperText="Helper text" options={options} disabled defaultValue="A" />
|
|
211
|
+
</HalstackProvider>
|
|
77
212
|
</ExampleContainer>
|
|
78
213
|
</>
|
|
79
214
|
);
|