@dxc-technology/halstack-react 0.0.0-910214a → 0.0.0-918d2c8
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.js +90 -50
- package/accordion/Accordion.js +117 -104
- package/accordion/Accordion.stories.tsx +104 -16
- package/accordion/Accordion.test.js +9 -10
- package/accordion/types.d.ts +5 -4
- package/accordion-group/AccordionGroup.js +2 -21
- package/accordion-group/AccordionGroup.stories.tsx +27 -1
- package/accordion-group/AccordionGroup.test.js +20 -45
- package/accordion-group/types.d.ts +10 -3
- package/alert/Alert.js +1 -1
- package/alert/Alert.stories.tsx +28 -0
- package/bleed/Bleed.stories.tsx +63 -63
- package/box/Box.js +1 -1
- package/box/Box.stories.tsx +15 -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 +50 -70
- package/button/Button.stories.tsx +159 -8
- package/button/types.d.ts +7 -7
- package/card/types.d.ts +1 -0
- package/checkbox/Checkbox.d.ts +2 -2
- package/checkbox/Checkbox.js +92 -99
- package/checkbox/Checkbox.stories.tsx +131 -59
- package/checkbox/Checkbox.test.js +93 -16
- package/checkbox/types.d.ts +6 -2
- package/chip/Chip.js +16 -22
- package/chip/Chip.stories.tsx +96 -9
- package/chip/types.d.ts +1 -1
- package/common/variables.js +309 -260
- package/date-input/Calendar.d.ts +4 -0
- package/date-input/Calendar.js +258 -0
- package/date-input/DateInput.js +134 -237
- package/date-input/DateInput.stories.tsx +199 -33
- package/date-input/DateInput.test.js +494 -138
- 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 +51 -0
- package/dialog/Dialog.js +50 -28
- package/dialog/Dialog.stories.tsx +99 -22
- package/dialog/Dialog.test.js +34 -4
- package/dialog/types.d.ts +3 -2
- package/dropdown/Dropdown.d.ts +1 -1
- package/dropdown/Dropdown.js +246 -249
- package/dropdown/Dropdown.stories.tsx +245 -56
- package/dropdown/Dropdown.test.js +504 -108
- package/dropdown/DropdownMenu.d.ts +4 -0
- package/dropdown/DropdownMenu.js +70 -0
- package/dropdown/DropdownMenuItem.d.ts +4 -0
- package/dropdown/DropdownMenuItem.js +81 -0
- package/dropdown/types.d.ts +25 -5
- package/file-input/FileInput.d.ts +2 -2
- package/file-input/FileInput.js +177 -219
- package/file-input/FileInput.stories.tsx +122 -11
- package/file-input/FileInput.test.js +53 -12
- package/file-input/FileItem.d.ts +4 -14
- package/file-input/FileItem.js +38 -63
- 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/{row → flex}/types.js +0 -0
- package/footer/Footer.stories.tsx +99 -1
- package/footer/Icons.js +1 -1
- package/footer/types.d.ts +2 -1
- package/header/Header.js +87 -87
- package/header/Header.stories.tsx +152 -9
- package/header/Icons.js +2 -2
- package/header/types.d.ts +3 -2
- package/inset/Inset.js +1 -34
- package/inset/Inset.stories.tsx +36 -36
- package/inset/types.d.ts +1 -1
- package/layout/ApplicationLayout.d.ts +15 -6
- package/layout/ApplicationLayout.js +37 -65
- package/layout/ApplicationLayout.stories.tsx +80 -44
- package/layout/types.d.ts +17 -27
- package/link/Link.js +2 -2
- package/link/Link.stories.tsx +73 -6
- package/link/types.d.ts +1 -1
- package/main.d.ts +5 -8
- package/main.js +28 -52
- package/number-input/NumberInput.test.js +43 -7
- package/package.json +16 -20
- package/paginator/Icons.d.ts +5 -0
- package/paginator/Icons.js +16 -28
- package/paginator/Paginator.js +6 -12
- package/paginator/Paginator.stories.tsx +24 -0
- package/paginator/Paginator.test.js +50 -1
- package/paragraph/Paragraph.d.ts +6 -0
- package/paragraph/Paragraph.js +38 -0
- package/paragraph/Paragraph.stories.tsx +44 -0
- package/password-input/PasswordInput.test.js +13 -12
- package/progress-bar/ProgressBar.d.ts +2 -2
- package/progress-bar/ProgressBar.js +59 -53
- package/progress-bar/ProgressBar.stories.jsx +38 -3
- package/progress-bar/ProgressBar.test.js +67 -22
- package/progress-bar/types.d.ts +3 -4
- package/quick-nav/QuickNav.js +25 -20
- package/quick-nav/QuickNav.stories.tsx +145 -26
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +43 -28
- package/radio-group/RadioGroup.js +23 -22
- package/radio-group/RadioGroup.stories.tsx +132 -18
- package/radio-group/RadioGroup.test.js +123 -96
- package/radio-group/types.d.ts +2 -2
- package/resultsetTable/Icons.d.ts +7 -0
- package/resultsetTable/Icons.js +51 -0
- package/resultsetTable/ResultsetTable.js +48 -107
- package/resultsetTable/ResultsetTable.stories.tsx +50 -25
- package/resultsetTable/ResultsetTable.test.js +60 -41
- package/resultsetTable/types.d.ts +2 -2
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +33 -16
- package/select/Option.js +11 -24
- package/select/Select.js +79 -60
- package/select/Select.stories.tsx +513 -136
- package/select/Select.test.js +358 -250
- package/select/types.d.ts +3 -6
- package/sidenav/Sidenav.d.ts +6 -5
- package/sidenav/Sidenav.js +174 -55
- package/sidenav/Sidenav.stories.tsx +249 -149
- package/sidenav/Sidenav.test.js +25 -37
- package/sidenav/types.d.ts +50 -27
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +120 -95
- package/slider/Slider.stories.tsx +64 -1
- package/slider/Slider.test.js +121 -21
- package/slider/types.d.ts +6 -2
- package/spinner/Spinner.js +2 -2
- package/spinner/Spinner.stories.jsx +27 -1
- package/switch/Switch.d.ts +2 -2
- package/switch/Switch.js +135 -68
- package/switch/Switch.stories.tsx +41 -30
- package/switch/Switch.test.js +144 -17
- package/switch/types.d.ts +6 -2
- package/table/Table.js +1 -1
- package/table/Table.stories.jsx +80 -1
- package/table/Table.test.js +1 -1
- package/tabs/Tab.d.ts +4 -0
- package/tabs/Tab.js +133 -0
- package/tabs/Tabs.js +360 -104
- package/tabs/Tabs.stories.tsx +119 -5
- package/tabs/Tabs.test.js +217 -6
- package/tabs/types.d.ts +15 -5
- package/tabs-nav/NavTabs.js +5 -5
- package/tabs-nav/NavTabs.stories.tsx +8 -6
- package/tabs-nav/Tab.js +8 -12
- package/tabs-nav/types.d.ts +1 -1
- package/tag/Tag.js +1 -1
- package/tag/Tag.stories.tsx +14 -1
- 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.js +38 -9
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +134 -0
- package/text-input/TextInput.js +195 -292
- package/text-input/TextInput.stories.tsx +280 -185
- package/text-input/TextInput.test.js +737 -725
- package/text-input/types.d.ts +22 -3
- package/textarea/Textarea.stories.jsx +60 -1
- package/toggle-group/ToggleGroup.stories.tsx +42 -0
- package/toggle-group/types.d.ts +1 -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/{stack → typography}/types.js +0 -0
- package/wizard/Wizard.js +9 -16
- package/wizard/Wizard.stories.tsx +40 -1
- package/wizard/types.d.ts +5 -4
- package/common/RequiredComponent.js +0 -32
- 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/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 -28
- 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 -24
- package/text/Text.d.ts +0 -7
- package/text/Text.js +0 -30
- package/text/Text.stories.tsx +0 -19
package/select/Listbox.js
CHANGED
|
@@ -11,11 +11,9 @@ exports["default"] = void 0;
|
|
|
11
11
|
|
|
12
12
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
13
|
|
|
14
|
-
var _react =
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
15
|
|
|
16
|
-
var _styledComponents =
|
|
17
|
-
|
|
18
|
-
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
16
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
19
17
|
|
|
20
18
|
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
21
19
|
|
|
@@ -37,7 +35,7 @@ var groupsHaveOptions = function groupsHaveOptions(options) {
|
|
|
37
35
|
}) : true;
|
|
38
36
|
};
|
|
39
37
|
|
|
40
|
-
var Listbox =
|
|
38
|
+
var Listbox = function Listbox(_ref) {
|
|
41
39
|
var id = _ref.id,
|
|
42
40
|
currentValue = _ref.currentValue,
|
|
43
41
|
options = _ref.options,
|
|
@@ -47,10 +45,11 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
47
45
|
optional = _ref.optional,
|
|
48
46
|
optionalItem = _ref.optionalItem,
|
|
49
47
|
searchable = _ref.searchable,
|
|
50
|
-
handleOptionOnClick = _ref.handleOptionOnClick
|
|
51
|
-
|
|
48
|
+
handleOptionOnClick = _ref.handleOptionOnClick,
|
|
49
|
+
styles = _ref.styles;
|
|
52
50
|
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
53
|
-
var
|
|
51
|
+
var listboxRef = (0, _react.useRef)(null);
|
|
52
|
+
var globalIndex = optional && !multiple ? 0 : -1;
|
|
54
53
|
|
|
55
54
|
var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
|
|
56
55
|
if (option.options) {
|
|
@@ -92,9 +91,27 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
92
91
|
}
|
|
93
92
|
};
|
|
94
93
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
94
|
+
(0, _react.useLayoutEffect)(function () {
|
|
95
|
+
if (currentValue && !multiple) {
|
|
96
|
+
var _listEl$scrollTo;
|
|
97
|
+
|
|
98
|
+
var listEl = listboxRef === null || listboxRef === void 0 ? void 0 : listboxRef.current;
|
|
99
|
+
var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
|
|
100
|
+
listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
|
|
101
|
+
top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}, [currentValue, multiple]);
|
|
105
|
+
(0, _react.useLayoutEffect)(function () {
|
|
106
|
+
var _listboxRef$current, _visualFocusedOptionE;
|
|
107
|
+
|
|
108
|
+
var visualFocusedOptionEl = listboxRef === null || listboxRef === void 0 ? void 0 : (_listboxRef$current = listboxRef.current) === null || _listboxRef$current === void 0 ? void 0 : _listboxRef$current.querySelectorAll("[role='option']")[visualFocusIndex];
|
|
109
|
+
visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
|
|
110
|
+
block: "nearest",
|
|
111
|
+
inline: "start"
|
|
112
|
+
});
|
|
113
|
+
}, [visualFocusIndex]);
|
|
114
|
+
return /*#__PURE__*/_react["default"].createElement(ListboxContainer, {
|
|
98
115
|
id: id,
|
|
99
116
|
onClick: function onClick(event) {
|
|
100
117
|
event.stopPropagation();
|
|
@@ -102,10 +119,10 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
102
119
|
onMouseDown: function onMouseDown(event) {
|
|
103
120
|
event.preventDefault();
|
|
104
121
|
},
|
|
105
|
-
ref:
|
|
122
|
+
ref: listboxRef,
|
|
106
123
|
role: "listbox",
|
|
107
124
|
"aria-multiselectable": multiple,
|
|
108
|
-
|
|
125
|
+
style: styles
|
|
109
126
|
}, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, _Icons["default"].searchOff), translatedLabels.select.noMatchesErrorMessage) : optional && !multiple && /*#__PURE__*/_react["default"].createElement(_Option["default"], {
|
|
110
127
|
key: "option-".concat(optionalItem.value),
|
|
111
128
|
id: "option-".concat(0),
|
|
@@ -116,10 +133,10 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
116
133
|
isGroupedOption: false,
|
|
117
134
|
isLastOption: lastOptionIndex === 0,
|
|
118
135
|
isSelected: multiple ? currentValue.includes(optionalItem.value) : currentValue === optionalItem.value
|
|
119
|
-
}), options.map(mapOptionFunc))
|
|
120
|
-
}
|
|
136
|
+
}), options.map(mapOptionFunc));
|
|
137
|
+
};
|
|
121
138
|
|
|
122
|
-
var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n
|
|
139
|
+
var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n max-height: 304px;\n overflow-y: auto;\n margin: 0;\n padding: 0.25rem 0;\n background-color: ", ";\n border: 1px solid ", ";\n border-radius: 0.25rem;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n cursor: default;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n"])), function (props) {
|
|
123
140
|
return props.theme.listDialogBackgroundColor;
|
|
124
141
|
}, function (props) {
|
|
125
142
|
return props.theme.listDialogBorderColor;
|
package/select/Option.js
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
@@ -13,19 +11,13 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
|
|
|
13
11
|
|
|
14
12
|
var _react = _interopRequireDefault(require("react"));
|
|
15
13
|
|
|
16
|
-
var _styledComponents =
|
|
17
|
-
|
|
18
|
-
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
14
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
19
15
|
|
|
20
16
|
var _Checkbox = _interopRequireDefault(require("../checkbox/Checkbox"));
|
|
21
17
|
|
|
22
18
|
var _Icons = _interopRequireDefault(require("./Icons"));
|
|
23
19
|
|
|
24
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6
|
|
25
|
-
|
|
26
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
-
|
|
28
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
20
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
29
21
|
|
|
30
22
|
var Option = function Option(_ref) {
|
|
31
23
|
var id = _ref.id,
|
|
@@ -37,10 +29,7 @@ var Option = function Option(_ref) {
|
|
|
37
29
|
isGroupedOption = _ref$isGroupedOption === void 0 ? false : _ref$isGroupedOption,
|
|
38
30
|
isLastOption = _ref.isLastOption,
|
|
39
31
|
isSelected = _ref.isSelected;
|
|
40
|
-
|
|
41
|
-
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
42
|
-
theme: colorsTheme.select
|
|
43
|
-
}, /*#__PURE__*/_react["default"].createElement(OptionItem, {
|
|
32
|
+
return /*#__PURE__*/_react["default"].createElement(OptionItem, {
|
|
44
33
|
id: id,
|
|
45
34
|
onClick: function onClick() {
|
|
46
35
|
_onClick(option);
|
|
@@ -62,13 +51,13 @@ var Option = function Option(_ref) {
|
|
|
62
51
|
grouped: isGroupedOption,
|
|
63
52
|
multiple: multiple,
|
|
64
53
|
role: !(typeof option.icon === "string") ? "img" : undefined
|
|
65
|
-
}, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement(
|
|
54
|
+
}, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
66
55
|
src: option.icon
|
|
67
56
|
}) : option.icon), /*#__PURE__*/_react["default"].createElement(OptionContent, {
|
|
68
57
|
grouped: isGroupedOption,
|
|
69
58
|
hasIcon: option.icon ? true : false,
|
|
70
59
|
multiple: multiple
|
|
71
|
-
}, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, option.label), !multiple && isSelected && /*#__PURE__*/_react["default"].createElement(OptionSelectedIndicator, null, _Icons["default"].selected))))
|
|
60
|
+
}, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, option.label), !multiple && isSelected && /*#__PURE__*/_react["default"].createElement(OptionSelectedIndicator, null, _Icons["default"].selected))));
|
|
72
61
|
};
|
|
73
62
|
|
|
74
63
|
var OptionItem = _styledComponents["default"].li(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0 0.5rem;\n box-shadow: inset 0 0 0 2px transparent;\n ", "\n ", ";\n line-height: 1.715em;\n cursor: pointer;\n\n &:hover {\n ", ";\n }\n &:active {\n ", ";\n }\n"])), function (props) {
|
|
@@ -87,21 +76,19 @@ var StyledOption = _styledComponents["default"].span(_templateObject2 || (_templ
|
|
|
87
76
|
return props.last || props.visualFocused || props.selected ? "border-bottom: 1px solid transparent" : "border-bottom: 1px solid ".concat(props.theme.listOptionDividerColor);
|
|
88
77
|
});
|
|
89
78
|
|
|
90
|
-
var OptionIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n
|
|
91
|
-
return props.grouped && !props.multiple ? "
|
|
79
|
+
var OptionIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.125rem;\n margin-left: ", ";\n color: ", ";\n\n svg,\n img {\n height: 20px;\n width: 20px;\n }\n"])), function (props) {
|
|
80
|
+
return props.grouped && !props.multiple ? "16px" : "8px";
|
|
92
81
|
}, function (props) {
|
|
93
82
|
return props.theme.listOptionIconColor;
|
|
94
83
|
});
|
|
95
84
|
|
|
96
|
-
var OptionContent = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n width: 100%;\n overflow: hidden;\n ", "
|
|
97
|
-
return props.grouped && !props.multiple && !props.hasIcon ? "
|
|
85
|
+
var OptionContent = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n gap: 0.25rem;\n width: 100%;\n overflow: hidden;\n margin-left: ", ";\n"])), function (props) {
|
|
86
|
+
return props.grouped && !props.multiple && !props.hasIcon ? "16px" : "8px";
|
|
98
87
|
});
|
|
99
88
|
|
|
100
|
-
var
|
|
101
|
-
|
|
102
|
-
var OptionLabel = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
|
|
89
|
+
var OptionLabel = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
|
|
103
90
|
|
|
104
|
-
var OptionSelectedIndicator = _styledComponents["default"].span(
|
|
91
|
+
var OptionSelectedIndicator = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n color: ", ";\n\n svg {\n width: 16px;\n height: 16px;\n }\n"])), function (props) {
|
|
105
92
|
return props.theme.selectedListOptionIconColor;
|
|
106
93
|
});
|
|
107
94
|
|
package/select/Select.js
CHANGED
|
@@ -35,6 +35,8 @@ var _Icons = _interopRequireDefault(require("./Icons"));
|
|
|
35
35
|
|
|
36
36
|
var _Listbox = _interopRequireDefault(require("./Listbox"));
|
|
37
37
|
|
|
38
|
+
var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
|
|
39
|
+
|
|
38
40
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
|
|
39
41
|
|
|
40
42
|
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); }
|
|
@@ -138,6 +140,28 @@ var notOptionalCheck = function notOptionalCheck(value, multiple, optional) {
|
|
|
138
140
|
return !optional && (multiple ? value.length === 0 : value === "");
|
|
139
141
|
};
|
|
140
142
|
|
|
143
|
+
var useWidth = function useWidth(target) {
|
|
144
|
+
var _useState = (0, _react.useState)(0),
|
|
145
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
146
|
+
width = _useState2[0],
|
|
147
|
+
setWidth = _useState2[1];
|
|
148
|
+
|
|
149
|
+
(0, _react.useEffect)(function () {
|
|
150
|
+
if (target != null) {
|
|
151
|
+
setWidth(target.getBoundingClientRect().width);
|
|
152
|
+
var triggerObserver = new ResizeObserver(function (entries) {
|
|
153
|
+
var rect = entries[0].target.getBoundingClientRect();
|
|
154
|
+
setWidth(rect === null || rect === void 0 ? void 0 : rect.width);
|
|
155
|
+
});
|
|
156
|
+
triggerObserver.observe(target);
|
|
157
|
+
return function () {
|
|
158
|
+
triggerObserver.unobserve(target);
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}, [target]);
|
|
162
|
+
return width;
|
|
163
|
+
};
|
|
164
|
+
|
|
141
165
|
var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
142
166
|
var _selectedOption$label;
|
|
143
167
|
|
|
@@ -167,37 +191,37 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
167
191
|
_ref$tabIndex = _ref.tabIndex,
|
|
168
192
|
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
|
|
169
193
|
|
|
170
|
-
var
|
|
171
|
-
|
|
172
|
-
selectId =
|
|
194
|
+
var _useState3 = (0, _react.useState)("select-".concat((0, _uuid.v4)())),
|
|
195
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
|
|
196
|
+
selectId = _useState4[0];
|
|
173
197
|
|
|
174
198
|
var selectLabelId = "label-".concat(selectId);
|
|
175
199
|
var errorId = "error-".concat(selectId);
|
|
176
200
|
var optionsListId = "".concat(selectId, "-listbox");
|
|
177
201
|
|
|
178
|
-
var
|
|
179
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
180
|
-
innerValue = _useState4[0],
|
|
181
|
-
setInnerValue = _useState4[1];
|
|
182
|
-
|
|
183
|
-
var _useState5 = (0, _react.useState)(""),
|
|
202
|
+
var _useState5 = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : ""),
|
|
184
203
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
185
|
-
|
|
186
|
-
|
|
204
|
+
innerValue = _useState6[0],
|
|
205
|
+
setInnerValue = _useState6[1];
|
|
187
206
|
|
|
188
|
-
var _useState7 = (0, _react.useState)(
|
|
207
|
+
var _useState7 = (0, _react.useState)(""),
|
|
189
208
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
190
|
-
|
|
191
|
-
|
|
209
|
+
searchValue = _useState8[0],
|
|
210
|
+
setSearchValue = _useState8[1];
|
|
192
211
|
|
|
193
|
-
var _useState9 = (0, _react.useState)(
|
|
212
|
+
var _useState9 = (0, _react.useState)(-1),
|
|
194
213
|
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
195
|
-
|
|
196
|
-
|
|
214
|
+
visualFocusIndex = _useState10[0],
|
|
215
|
+
changeVisualFocusIndex = _useState10[1];
|
|
216
|
+
|
|
217
|
+
var _useState11 = (0, _react.useState)(false),
|
|
218
|
+
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
219
|
+
isOpen = _useState12[0],
|
|
220
|
+
changeIsOpen = _useState12[1];
|
|
197
221
|
|
|
198
|
-
var
|
|
222
|
+
var selectRef = (0, _react.useRef)(null);
|
|
199
223
|
var selectSearchInputRef = (0, _react.useRef)(null);
|
|
200
|
-
var
|
|
224
|
+
var width = useWidth(selectRef.current);
|
|
201
225
|
var colorsTheme = (0, _useTheme["default"])();
|
|
202
226
|
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
203
227
|
var optionalItem = {
|
|
@@ -275,9 +299,9 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
275
299
|
};
|
|
276
300
|
|
|
277
301
|
var handleSelectOnKeyDown = function handleSelectOnKeyDown(event) {
|
|
278
|
-
switch (event.
|
|
279
|
-
case
|
|
280
|
-
|
|
302
|
+
switch (event.key) {
|
|
303
|
+
case "Down":
|
|
304
|
+
case "ArrowDown":
|
|
281
305
|
event.preventDefault();
|
|
282
306
|
singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
|
|
283
307
|
if (visualFocusIndex < lastOptionIndex) return visualFocusIndex + 1;else if (visualFocusIndex === lastOptionIndex) return 0;
|
|
@@ -285,8 +309,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
285
309
|
openOptions();
|
|
286
310
|
break;
|
|
287
311
|
|
|
288
|
-
case
|
|
289
|
-
|
|
312
|
+
case "Up":
|
|
313
|
+
case "ArrowUp":
|
|
290
314
|
event.preventDefault();
|
|
291
315
|
singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
|
|
292
316
|
return visualFocusIndex === 0 || visualFocusIndex === -1 ? lastOptionIndex : visualFocusIndex - 1;
|
|
@@ -294,15 +318,14 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
294
318
|
openOptions();
|
|
295
319
|
break;
|
|
296
320
|
|
|
297
|
-
case
|
|
298
|
-
|
|
321
|
+
case "Esc":
|
|
322
|
+
case "Escape":
|
|
299
323
|
event.preventDefault();
|
|
300
324
|
closeOptions();
|
|
301
325
|
setSearchValue("");
|
|
302
326
|
break;
|
|
303
327
|
|
|
304
|
-
case
|
|
305
|
-
// Enter
|
|
328
|
+
case "Enter":
|
|
306
329
|
if (isOpen && visualFocusIndex >= 0) {
|
|
307
330
|
var accLength = optional && !multiple ? 1 : 0;
|
|
308
331
|
|
|
@@ -359,26 +382,6 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
359
382
|
!multiple && closeOptions();
|
|
360
383
|
setSearchValue("");
|
|
361
384
|
}, [handleSelectChangeValue, closeOptions, multiple]);
|
|
362
|
-
(0, _react.useLayoutEffect)(function () {
|
|
363
|
-
if (isOpen && singleSelectionIndex) {
|
|
364
|
-
var _listEl$scrollTo;
|
|
365
|
-
|
|
366
|
-
var listEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : selectOptionsListRef.current;
|
|
367
|
-
var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
|
|
368
|
-
listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
|
|
369
|
-
top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
}, [isOpen]);
|
|
373
|
-
(0, _react.useLayoutEffect)(function () {
|
|
374
|
-
var _selectOptionsListRef, _visualFocusedOptionE;
|
|
375
|
-
|
|
376
|
-
var visualFocusedOptionEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : (_selectOptionsListRef = selectOptionsListRef.current) === null || _selectOptionsListRef === void 0 ? void 0 : _selectOptionsListRef.querySelectorAll("[role='option']")[visualFocusIndex];
|
|
377
|
-
visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
|
|
378
|
-
block: "nearest",
|
|
379
|
-
inline: "start"
|
|
380
|
-
});
|
|
381
|
-
}, [visualFocusIndex]);
|
|
382
385
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
383
386
|
theme: colorsTheme.select
|
|
384
387
|
}, /*#__PURE__*/_react["default"].createElement(SelectContainer, {
|
|
@@ -389,12 +392,17 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
389
392
|
id: selectLabelId,
|
|
390
393
|
disabled: disabled,
|
|
391
394
|
onClick: function onClick() {
|
|
392
|
-
|
|
395
|
+
selectRef.current.focus();
|
|
393
396
|
},
|
|
394
397
|
helperText: helperText
|
|
395
398
|
}, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
|
|
396
399
|
disabled: disabled
|
|
397
|
-
}, helperText), /*#__PURE__*/_react["default"].createElement(
|
|
400
|
+
}, helperText), /*#__PURE__*/_react["default"].createElement(Popover.Root, {
|
|
401
|
+
open: isOpen
|
|
402
|
+
}, /*#__PURE__*/_react["default"].createElement(Popover.Trigger, {
|
|
403
|
+
asChild: true,
|
|
404
|
+
type: undefined
|
|
405
|
+
}, /*#__PURE__*/_react["default"].createElement(Select, {
|
|
398
406
|
id: selectId,
|
|
399
407
|
disabled: disabled,
|
|
400
408
|
error: error,
|
|
@@ -402,16 +410,16 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
402
410
|
onClick: handleSelectOnClick,
|
|
403
411
|
onFocus: handleSelectOnFocus,
|
|
404
412
|
onKeyDown: handleSelectOnKeyDown,
|
|
405
|
-
ref:
|
|
406
|
-
tabIndex: tabIndex,
|
|
413
|
+
ref: selectRef,
|
|
414
|
+
tabIndex: disabled ? -1 : tabIndex,
|
|
407
415
|
role: "combobox",
|
|
408
416
|
"aria-controls": optionsListId,
|
|
409
417
|
"aria-disabled": disabled,
|
|
410
418
|
"aria-expanded": isOpen,
|
|
411
419
|
"aria-haspopup": "listbox",
|
|
412
|
-
"aria-labelledby": selectLabelId,
|
|
420
|
+
"aria-labelledby": label ? selectLabelId : undefined,
|
|
413
421
|
"aria-activedescendant": visualFocusIndex >= 0 ? "option-".concat(visualFocusIndex) : undefined,
|
|
414
|
-
"aria-invalid": error ?
|
|
422
|
+
"aria-invalid": error ? true : false,
|
|
415
423
|
"aria-errormessage": error ? errorId : undefined,
|
|
416
424
|
"aria-required": !disabled && !optional
|
|
417
425
|
}, multiple && selectedOption.length > 0 && /*#__PURE__*/_react["default"].createElement(SelectionIndicator, null, /*#__PURE__*/_react["default"].createElement(SelectionNumber, {
|
|
@@ -428,6 +436,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
428
436
|
"aria-label": translatedLabels.select.actionClearSelectionTitle
|
|
429
437
|
}, _Icons["default"].clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
|
|
430
438
|
name: name,
|
|
439
|
+
disabled: disabled,
|
|
431
440
|
value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
|
|
432
441
|
readOnly: true,
|
|
433
442
|
"aria-hidden": "true"
|
|
@@ -458,7 +467,17 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
458
467
|
"aria-label": translatedLabels.select.actionClearSearchTitle
|
|
459
468
|
}, _Icons["default"].clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
|
|
460
469
|
disabled: disabled
|
|
461
|
-
}, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown),
|
|
470
|
+
}, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown))), /*#__PURE__*/_react["default"].createElement(Popover.Content, {
|
|
471
|
+
sideOffset: 4,
|
|
472
|
+
onOpenAutoFocus: function onOpenAutoFocus(event) {
|
|
473
|
+
// Avoid select to lose focus when the list is opened
|
|
474
|
+
event.preventDefault();
|
|
475
|
+
},
|
|
476
|
+
onCloseAutoFocus: function onCloseAutoFocus(event) {
|
|
477
|
+
// Avoid select to lose focus when the list is closed
|
|
478
|
+
event.preventDefault();
|
|
479
|
+
}
|
|
480
|
+
}, /*#__PURE__*/_react["default"].createElement(_Listbox["default"], {
|
|
462
481
|
id: optionsListId,
|
|
463
482
|
currentValue: value !== null && value !== void 0 ? value : innerValue,
|
|
464
483
|
options: searchable ? filteredOptions : options,
|
|
@@ -469,8 +488,10 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
469
488
|
optionalItem: optionalItem,
|
|
470
489
|
searchable: searchable,
|
|
471
490
|
handleOptionOnClick: handleOptionOnClick,
|
|
472
|
-
|
|
473
|
-
|
|
491
|
+
styles: {
|
|
492
|
+
width: width
|
|
493
|
+
}
|
|
494
|
+
}))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
|
|
474
495
|
id: errorId,
|
|
475
496
|
"aria-live": error ? "assertive" : "off"
|
|
476
497
|
}, error)));
|
|
@@ -569,9 +590,7 @@ var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_te
|
|
|
569
590
|
return props.disabled ? "cursor: not-allowed;" : "cursor: default;";
|
|
570
591
|
});
|
|
571
592
|
|
|
572
|
-
var ClearOptionsAction = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n width: 23px;\n height: 22px;\n
|
|
573
|
-
return props.theme.fontFamily;
|
|
574
|
-
}, function (props) {
|
|
593
|
+
var ClearOptionsAction = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n width: 23px;\n height: 22px;\n border: none;\n padding: 0.25rem;\n ", "\n background-color: ", ";\n color: ", ";\n\n :focus-visible {\n outline: none;\n }\n ", "\n\n svg {\n line-height: 18px;\n }\n"])), function (props) {
|
|
575
594
|
return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
|
|
576
595
|
}, function (props) {
|
|
577
596
|
return props.disabled ? "transparent" : props.theme.enabledSelectionIndicatorActionBackgroundColor;
|