@dxc-technology/halstack-react 0.0.0-a7970fd → 0.0.0-a7fec42
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 +4 -2
- package/HalstackContext.js +110 -58
- package/accordion/Accordion.js +122 -103
- package/accordion/Accordion.stories.tsx +2 -3
- 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 +5 -2
- package/badge/Badge.d.ts +1 -1
- package/badge/Badge.js +5 -3
- package/badge/types.d.ts +1 -0
- package/bleed/Bleed.js +1 -34
- package/bleed/Bleed.stories.tsx +94 -95
- package/bleed/types.d.ts +1 -1
- package/box/Box.js +23 -33
- 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 +43 -61
- package/button/Button.stories.tsx +9 -0
- package/button/types.d.ts +7 -7
- package/card/Card.js +34 -36
- package/card/types.d.ts +1 -0
- package/checkbox/Checkbox.js +90 -95
- package/checkbox/Checkbox.test.js +93 -16
- package/checkbox/types.d.ts +2 -2
- package/chip/types.d.ts +1 -1
- package/common/variables.js +232 -96
- package/date-input/DateInput.js +8 -5
- package/dialog/Dialog.js +52 -28
- package/dialog/Dialog.stories.tsx +57 -2
- 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 +244 -247
- package/dropdown/Dropdown.stories.tsx +126 -63
- package/dropdown/Dropdown.test.js +509 -108
- package/dropdown/DropdownMenu.d.ts +4 -0
- package/dropdown/DropdownMenu.js +80 -0
- package/dropdown/DropdownMenuItem.d.ts +4 -0
- package/dropdown/DropdownMenuItem.js +92 -0
- package/dropdown/types.d.ts +25 -5
- package/file-input/FileInput.js +9 -6
- package/file-input/FileItem.js +7 -5
- 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/{quick-nav-container → flex}/types.js +0 -0
- package/footer/Footer.js +7 -5
- package/footer/Footer.stories.tsx +8 -1
- package/footer/Icons.js +1 -1
- package/footer/types.d.ts +2 -1
- package/header/Header.js +80 -75
- package/header/Header.stories.tsx +4 -4
- 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 +16 -6
- package/layout/ApplicationLayout.js +70 -117
- package/layout/ApplicationLayout.stories.tsx +84 -93
- package/layout/Icons.d.ts +5 -0
- package/layout/Icons.js +13 -2
- package/layout/SidenavContext.d.ts +5 -0
- package/layout/SidenavContext.js +19 -0
- package/layout/types.d.ts +18 -33
- package/link/Link.d.ts +3 -2
- package/link/Link.js +57 -70
- package/link/Link.stories.tsx +95 -53
- package/link/Link.test.js +7 -15
- package/link/types.d.ts +7 -23
- package/main.d.ts +8 -11
- package/main.js +40 -58
- package/number-input/NumberInput.test.js +1 -1
- package/number-input/types.d.ts +1 -1
- package/package.json +10 -9
- package/paginator/Paginator.js +17 -38
- package/paginator/Paginator.test.js +42 -0
- package/paragraph/Paragraph.d.ts +6 -0
- package/paragraph/Paragraph.js +38 -0
- package/paragraph/Paragraph.stories.tsx +44 -0
- package/password-input/PasswordInput.js +11 -6
- package/password-input/PasswordInput.test.js +14 -14
- package/password-input/types.d.ts +1 -1
- package/progress-bar/ProgressBar.d.ts +2 -2
- package/progress-bar/ProgressBar.js +57 -51
- package/progress-bar/ProgressBar.stories.jsx +13 -11
- package/progress-bar/ProgressBar.test.js +67 -22
- package/progress-bar/types.d.ts +3 -4
- package/quick-nav/QuickNav.js +75 -22
- package/quick-nav/QuickNav.stories.tsx +131 -26
- package/quick-nav/types.d.ts +1 -1
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +43 -28
- package/radio-group/RadioGroup.js +30 -27
- package/radio-group/RadioGroup.stories.tsx +1 -0
- package/radio-group/RadioGroup.test.js +123 -96
- package/radio-group/types.d.ts +2 -2
- package/resultsetTable/ResultsetTable.test.js +42 -0
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +58 -8
- package/select/Select.js +80 -90
- package/select/Select.stories.tsx +145 -100
- package/select/Select.test.js +425 -249
- package/select/types.d.ts +2 -5
- package/sidenav/Sidenav.d.ts +6 -5
- package/sidenav/Sidenav.js +184 -52
- package/sidenav/Sidenav.stories.tsx +154 -156
- package/sidenav/Sidenav.test.js +25 -37
- package/sidenav/types.d.ts +50 -27
- package/slider/Slider.js +116 -92
- package/slider/Slider.stories.tsx +7 -1
- package/slider/Slider.test.js +121 -21
- package/slider/types.d.ts +2 -2
- package/spinner/Spinner.js +1 -1
- package/switch/Switch.d.ts +1 -1
- package/switch/Switch.js +135 -66
- package/switch/Switch.stories.tsx +8 -30
- package/switch/Switch.test.js +144 -17
- package/switch/types.d.ts +3 -4
- package/table/Table.js +1 -1
- package/tabs/Tab.d.ts +4 -0
- package/tabs/Tab.js +135 -0
- package/tabs/Tabs.js +360 -104
- package/tabs/Tabs.stories.tsx +74 -0
- package/tabs/Tabs.test.js +217 -6
- package/tabs/types.d.ts +15 -5
- package/tabs-nav/NavTabs.d.ts +8 -0
- package/tabs-nav/NavTabs.js +125 -0
- package/tabs-nav/NavTabs.stories.tsx +170 -0
- package/tabs-nav/NavTabs.test.js +82 -0
- package/tabs-nav/Tab.d.ts +4 -0
- package/tabs-nav/Tab.js +130 -0
- package/tabs-nav/types.d.ts +53 -0
- package/{radio → tabs-nav}/types.js +0 -0
- package/tag/Tag.js +1 -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.d.ts +4 -0
- package/text-input/Suggestion.js +57 -0
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +134 -0
- package/text-input/TextInput.js +206 -329
- package/text-input/TextInput.stories.tsx +189 -182
- package/text-input/TextInput.test.js +166 -164
- package/text-input/types.d.ts +35 -4
- package/textarea/Textarea.js +10 -19
- package/textarea/types.d.ts +1 -1
- 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/{row → typography}/types.js +0 -0
- package/useTranslatedLabels.d.ts +2 -0
- package/useTranslatedLabels.js +20 -0
- package/wizard/Wizard.js +36 -41
- package/wizard/Wizard.stories.tsx +20 -1
- package/wizard/types.d.ts +5 -4
- 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/quick-nav-container/HeadingLink.d.ts +0 -8
- package/quick-nav-container/HeadingLink.js +0 -58
- package/quick-nav-container/QuickNavContainer.d.ts +0 -4
- package/quick-nav-container/QuickNavContainer.js +0 -69
- package/quick-nav-container/Section.d.ts +0 -9
- package/quick-nav-container/Section.js +0 -37
- package/quick-nav-container/types.d.ts +0 -34
- package/radio/Radio.d.ts +0 -4
- package/radio/Radio.js +0 -173
- package/radio/Radio.stories.tsx +0 -192
- package/radio/Radio.test.js +0 -71
- package/radio/types.d.ts +0 -54
- package/row/Row.d.ts +0 -3
- package/row/Row.js +0 -127
- package/row/Row.stories.tsx +0 -237
- package/row/types.d.ts +0 -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/stack/types.js +0 -5
- package/text/Text.d.ts +0 -7
- package/text/Text.js +0 -30
- package/text/Text.stories.tsx +0 -19
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
6
|
+
|
|
7
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
8
|
+
|
|
5
9
|
var _react = _interopRequireDefault(require("react"));
|
|
6
10
|
|
|
7
11
|
var _react2 = require("@testing-library/react");
|
|
@@ -10,6 +14,44 @@ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
|
10
14
|
|
|
11
15
|
var _ResultsetTable = _interopRequireDefault(require("./ResultsetTable"));
|
|
12
16
|
|
|
17
|
+
// Mocking DOMRect for Radix Primitive Popover
|
|
18
|
+
global.globalThis = global;
|
|
19
|
+
|
|
20
|
+
global.ResizeObserver = /*#__PURE__*/function () {
|
|
21
|
+
function ResizeObserver(cb) {
|
|
22
|
+
(0, _classCallCheck2["default"])(this, ResizeObserver);
|
|
23
|
+
this.cb = cb;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
(0, _createClass2["default"])(ResizeObserver, [{
|
|
27
|
+
key: "observe",
|
|
28
|
+
value: function observe() {
|
|
29
|
+
this.cb([{
|
|
30
|
+
borderBoxSize: {
|
|
31
|
+
inlineSize: 0,
|
|
32
|
+
blockSize: 0
|
|
33
|
+
}
|
|
34
|
+
}]);
|
|
35
|
+
}
|
|
36
|
+
}, {
|
|
37
|
+
key: "unobserve",
|
|
38
|
+
value: function unobserve() {}
|
|
39
|
+
}]);
|
|
40
|
+
return ResizeObserver;
|
|
41
|
+
}();
|
|
42
|
+
|
|
43
|
+
global.DOMRect = {
|
|
44
|
+
fromRect: function fromRect() {
|
|
45
|
+
return {
|
|
46
|
+
top: 0,
|
|
47
|
+
left: 0,
|
|
48
|
+
bottom: 0,
|
|
49
|
+
right: 0,
|
|
50
|
+
width: 0,
|
|
51
|
+
height: 0
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
};
|
|
13
55
|
var columns = [{
|
|
14
56
|
displayValue: "Id",
|
|
15
57
|
isSortable: false
|
package/select/Listbox.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { ListboxProps } from "./types";
|
|
3
|
-
declare const _default: React.MemoExoticComponent<
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ id, currentValue, options, visualFocusIndex, lastOptionIndex, multiple, optional, optionalItem, searchable, handleOptionOnClick, getSelectWidth, }: ListboxProps) => JSX.Element>;
|
|
4
4
|
export default _default;
|
package/select/Listbox.js
CHANGED
|
@@ -11,12 +11,16 @@ exports["default"] = void 0;
|
|
|
11
11
|
|
|
12
12
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
17
|
|
|
16
18
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
17
19
|
|
|
18
20
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
19
21
|
|
|
22
|
+
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
23
|
+
|
|
20
24
|
var _Option = _interopRequireDefault(require("./Option"));
|
|
21
25
|
|
|
22
26
|
var _Icons = _interopRequireDefault(require("./Icons"));
|
|
@@ -35,7 +39,7 @@ var groupsHaveOptions = function groupsHaveOptions(options) {
|
|
|
35
39
|
}) : true;
|
|
36
40
|
};
|
|
37
41
|
|
|
38
|
-
var Listbox =
|
|
42
|
+
var Listbox = function Listbox(_ref) {
|
|
39
43
|
var id = _ref.id,
|
|
40
44
|
currentValue = _ref.currentValue,
|
|
41
45
|
options = _ref.options,
|
|
@@ -45,8 +49,17 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
45
49
|
optional = _ref.optional,
|
|
46
50
|
optionalItem = _ref.optionalItem,
|
|
47
51
|
searchable = _ref.searchable,
|
|
48
|
-
handleOptionOnClick = _ref.handleOptionOnClick
|
|
52
|
+
handleOptionOnClick = _ref.handleOptionOnClick,
|
|
53
|
+
getSelectWidth = _ref.getSelectWidth;
|
|
49
54
|
var colorsTheme = (0, _useTheme["default"])();
|
|
55
|
+
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
56
|
+
var listboxRef = (0, _react.useRef)(null);
|
|
57
|
+
|
|
58
|
+
var _useState = (0, _react.useState)(null),
|
|
59
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
60
|
+
styles = _useState2[0],
|
|
61
|
+
setStyles = _useState2[1];
|
|
62
|
+
|
|
50
63
|
var globalIndex = optional && !multiple ? 0 : -1; // index for options, starting from 0 to options.length -1
|
|
51
64
|
|
|
52
65
|
var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
|
|
@@ -89,6 +102,42 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
89
102
|
}
|
|
90
103
|
};
|
|
91
104
|
|
|
105
|
+
(0, _react.useLayoutEffect)(function () {
|
|
106
|
+
if (currentValue && !multiple) {
|
|
107
|
+
var _listEl$scrollTo;
|
|
108
|
+
|
|
109
|
+
var listEl = listboxRef === null || listboxRef === void 0 ? void 0 : listboxRef.current;
|
|
110
|
+
var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
|
|
111
|
+
listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
|
|
112
|
+
top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}, [currentValue, multiple]);
|
|
116
|
+
(0, _react.useLayoutEffect)(function () {
|
|
117
|
+
var _listboxRef$current, _visualFocusedOptionE;
|
|
118
|
+
|
|
119
|
+
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];
|
|
120
|
+
visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
|
|
121
|
+
block: "nearest",
|
|
122
|
+
inline: "start"
|
|
123
|
+
});
|
|
124
|
+
}, [visualFocusIndex]);
|
|
125
|
+
|
|
126
|
+
var handleResize = function handleResize() {
|
|
127
|
+
setStyles({
|
|
128
|
+
width: getSelectWidth()
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
(0, _react.useLayoutEffect)(function () {
|
|
133
|
+
handleResize();
|
|
134
|
+
}, [getSelectWidth]);
|
|
135
|
+
(0, _react.useEffect)(function () {
|
|
136
|
+
window.addEventListener("resize", handleResize);
|
|
137
|
+
return function () {
|
|
138
|
+
window.removeEventListener("resize", handleResize);
|
|
139
|
+
};
|
|
140
|
+
}, [getSelectWidth]);
|
|
92
141
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
93
142
|
theme: colorsTheme.select
|
|
94
143
|
}, /*#__PURE__*/_react["default"].createElement(ListboxContainer, {
|
|
@@ -99,11 +148,12 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
99
148
|
onMouseDown: function onMouseDown(event) {
|
|
100
149
|
event.preventDefault();
|
|
101
150
|
},
|
|
102
|
-
ref:
|
|
151
|
+
ref: listboxRef,
|
|
103
152
|
role: "listbox",
|
|
104
153
|
"aria-multiselectable": multiple,
|
|
105
|
-
|
|
106
|
-
}, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, _Icons["default"].searchOff),
|
|
154
|
+
style: styles
|
|
155
|
+
}, 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"], {
|
|
156
|
+
key: "option-".concat(optionalItem.value),
|
|
107
157
|
id: "option-".concat(0),
|
|
108
158
|
option: optionalItem,
|
|
109
159
|
onClick: handleOptionOnClick,
|
|
@@ -113,9 +163,9 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
113
163
|
isLastOption: lastOptionIndex === 0,
|
|
114
164
|
isSelected: multiple ? currentValue.includes(optionalItem.value) : currentValue === optionalItem.value
|
|
115
165
|
}), options.map(mapOptionFunc)));
|
|
116
|
-
}
|
|
166
|
+
};
|
|
117
167
|
|
|
118
|
-
var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n
|
|
168
|
+
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) {
|
|
119
169
|
return props.theme.listDialogBackgroundColor;
|
|
120
170
|
}, function (props) {
|
|
121
171
|
return props.theme.listDialogBorderColor;
|
package/select/Select.js
CHANGED
|
@@ -23,6 +23,8 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
|
23
23
|
|
|
24
24
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
25
25
|
|
|
26
|
+
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
27
|
+
|
|
26
28
|
var _variables = require("../common/variables.js");
|
|
27
29
|
|
|
28
30
|
var _uuid = require("uuid");
|
|
@@ -33,16 +35,14 @@ var _Icons = _interopRequireDefault(require("./Icons"));
|
|
|
33
35
|
|
|
34
36
|
var _Listbox = _interopRequireDefault(require("./Listbox"));
|
|
35
37
|
|
|
38
|
+
var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
|
|
39
|
+
|
|
36
40
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
|
|
37
41
|
|
|
38
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); }
|
|
39
43
|
|
|
40
44
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(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; }
|
|
41
45
|
|
|
42
|
-
var getNotOptionalErrorMessage = function getNotOptionalErrorMessage() {
|
|
43
|
-
return "This field is required. Please, enter a value.";
|
|
44
|
-
};
|
|
45
|
-
|
|
46
46
|
var groupsHaveOptions = function groupsHaveOptions(innerOptions) {
|
|
47
47
|
return innerOptions[0].hasOwnProperty("options") ? innerOptions[0].options ? innerOptions.some(function (groupOption) {
|
|
48
48
|
return groupOption.options.length > 0;
|
|
@@ -57,6 +57,10 @@ var filteredGroupsHaveOptions = function filteredGroupsHaveOptions(filteredOptio
|
|
|
57
57
|
}) : true;
|
|
58
58
|
};
|
|
59
59
|
|
|
60
|
+
var canOpenOptions = function canOpenOptions(options, disabled) {
|
|
61
|
+
return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
|
|
62
|
+
};
|
|
63
|
+
|
|
60
64
|
var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, searchValue) {
|
|
61
65
|
if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
|
|
62
66
|
if (options[0].options) return options.map(function (optionGroup) {
|
|
@@ -132,6 +136,10 @@ var getSelectedOption = function getSelectedOption(value, options, multiple, opt
|
|
|
132
136
|
};
|
|
133
137
|
};
|
|
134
138
|
|
|
139
|
+
var notOptionalCheck = function notOptionalCheck(value, multiple, optional) {
|
|
140
|
+
return !optional && (multiple ? value.length === 0 : value === "");
|
|
141
|
+
};
|
|
142
|
+
|
|
135
143
|
var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
136
144
|
var _selectedOption$label;
|
|
137
145
|
|
|
@@ -189,10 +197,10 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
189
197
|
isOpen = _useState10[0],
|
|
190
198
|
changeIsOpen = _useState10[1];
|
|
191
199
|
|
|
192
|
-
var
|
|
200
|
+
var selectRef = (0, _react.useRef)(null);
|
|
193
201
|
var selectSearchInputRef = (0, _react.useRef)(null);
|
|
194
|
-
var selectOptionsListRef = (0, _react.useRef)(null);
|
|
195
202
|
var colorsTheme = (0, _useTheme["default"])();
|
|
203
|
+
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
196
204
|
var optionalItem = {
|
|
197
205
|
label: placeholder,
|
|
198
206
|
value: ""
|
|
@@ -210,20 +218,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
210
218
|
selectedOption = _useMemo.selectedOption,
|
|
211
219
|
singleSelectionIndex = _useMemo.singleSelectionIndex;
|
|
212
220
|
|
|
213
|
-
var notOptionalCheck = function notOptionalCheck(value) {
|
|
214
|
-
return !optional && value === "";
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
var notOptionalMultipleCheck = function notOptionalMultipleCheck(value) {
|
|
218
|
-
return !optional && value.length === 0;
|
|
219
|
-
};
|
|
220
|
-
|
|
221
|
-
var canBeOpenOptions = function canBeOpenOptions() {
|
|
222
|
-
return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
|
|
223
|
-
};
|
|
224
|
-
|
|
225
221
|
var openOptions = function openOptions() {
|
|
226
|
-
if (!isOpen &&
|
|
222
|
+
if (!isOpen && canOpenOptions(options, disabled)) changeIsOpen(true);
|
|
227
223
|
};
|
|
228
224
|
|
|
229
225
|
var closeOptions = function closeOptions() {
|
|
@@ -234,27 +230,21 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
234
230
|
};
|
|
235
231
|
|
|
236
232
|
var handleSelectChangeValue = function handleSelectChangeValue(newOption) {
|
|
233
|
+
var newValue;
|
|
234
|
+
|
|
237
235
|
if (multiple) {
|
|
238
|
-
|
|
239
|
-
if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) res = (value !== null && value !== void 0 ? value : innerValue).filter(function (optionVal) {
|
|
236
|
+
if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) newValue = (value !== null && value !== void 0 ? value : innerValue).filter(function (optionVal) {
|
|
240
237
|
return optionVal !== newOption.value;
|
|
241
|
-
});else
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
if (notOptionalCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
252
|
-
value: newOption.value,
|
|
253
|
-
error: getNotOptionalErrorMessage()
|
|
254
|
-
});else onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
255
|
-
value: newOption.value
|
|
256
|
-
});
|
|
257
|
-
}
|
|
238
|
+
});else newValue = [].concat((0, _toConsumableArray2["default"])(value !== null && value !== void 0 ? value : innerValue), [newOption.value]);
|
|
239
|
+
} else newValue = newOption.value;
|
|
240
|
+
|
|
241
|
+
value !== null && value !== void 0 ? value : setInnerValue(newValue);
|
|
242
|
+
notOptionalCheck(newValue, multiple, optional) ? onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
243
|
+
value: newValue,
|
|
244
|
+
error: translatedLabels.formFields.requiredValueErrorMessage
|
|
245
|
+
}) : onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
246
|
+
value: newValue
|
|
247
|
+
});
|
|
258
248
|
};
|
|
259
249
|
|
|
260
250
|
var handleSelectOnClick = function handleSelectOnClick() {
|
|
@@ -275,19 +265,20 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
275
265
|
if (!event.currentTarget.contains(event.relatedTarget)) {
|
|
276
266
|
closeOptions();
|
|
277
267
|
setSearchValue("");
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
268
|
+
var currentValue = value !== null && value !== void 0 ? value : innerValue;
|
|
269
|
+
notOptionalCheck(currentValue, multiple, optional) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
270
|
+
value: currentValue,
|
|
271
|
+
error: translatedLabels.formFields.requiredValueErrorMessage
|
|
272
|
+
}) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
273
|
+
value: currentValue
|
|
283
274
|
});
|
|
284
275
|
}
|
|
285
276
|
};
|
|
286
277
|
|
|
287
278
|
var handleSelectOnKeyDown = function handleSelectOnKeyDown(event) {
|
|
288
|
-
switch (event.
|
|
289
|
-
case
|
|
290
|
-
|
|
279
|
+
switch (event.key) {
|
|
280
|
+
case "Down":
|
|
281
|
+
case "ArrowDown":
|
|
291
282
|
event.preventDefault();
|
|
292
283
|
singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
|
|
293
284
|
if (visualFocusIndex < lastOptionIndex) return visualFocusIndex + 1;else if (visualFocusIndex === lastOptionIndex) return 0;
|
|
@@ -295,8 +286,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
295
286
|
openOptions();
|
|
296
287
|
break;
|
|
297
288
|
|
|
298
|
-
case
|
|
299
|
-
|
|
289
|
+
case "Up":
|
|
290
|
+
case "ArrowUp":
|
|
300
291
|
event.preventDefault();
|
|
301
292
|
singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
|
|
302
293
|
return visualFocusIndex === 0 || visualFocusIndex === -1 ? lastOptionIndex : visualFocusIndex - 1;
|
|
@@ -304,15 +295,14 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
304
295
|
openOptions();
|
|
305
296
|
break;
|
|
306
297
|
|
|
307
|
-
case
|
|
308
|
-
|
|
298
|
+
case "Esc":
|
|
299
|
+
case "Escape":
|
|
309
300
|
event.preventDefault();
|
|
310
301
|
closeOptions();
|
|
311
302
|
setSearchValue("");
|
|
312
303
|
break;
|
|
313
304
|
|
|
314
|
-
case
|
|
315
|
-
// Enter
|
|
305
|
+
case "Enter":
|
|
316
306
|
if (isOpen && visualFocusIndex >= 0) {
|
|
317
307
|
var accLength = optional && !multiple ? 1 : 0;
|
|
318
308
|
|
|
@@ -353,7 +343,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
353
343
|
value !== null && value !== void 0 ? value : setInnerValue([]);
|
|
354
344
|
!optional ? onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
355
345
|
value: [],
|
|
356
|
-
error:
|
|
346
|
+
error: translatedLabels.formFields.requiredValueErrorMessage
|
|
357
347
|
}) : onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
358
348
|
value: []
|
|
359
349
|
});
|
|
@@ -369,26 +359,12 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
369
359
|
!multiple && closeOptions();
|
|
370
360
|
setSearchValue("");
|
|
371
361
|
}, [handleSelectChangeValue, closeOptions, multiple]);
|
|
372
|
-
(0, _react.
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
|
|
379
|
-
top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
|
|
380
|
-
});
|
|
381
|
-
}
|
|
382
|
-
}, [isOpen]);
|
|
383
|
-
(0, _react.useLayoutEffect)(function () {
|
|
384
|
-
var _selectOptionsListRef, _visualFocusedOptionE;
|
|
385
|
-
|
|
386
|
-
var visualFocusedOptionEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : (_selectOptionsListRef = selectOptionsListRef.current) === null || _selectOptionsListRef === void 0 ? void 0 : _selectOptionsListRef.querySelectorAll("[role='option']")[visualFocusIndex];
|
|
387
|
-
visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
|
|
388
|
-
block: "nearest",
|
|
389
|
-
inline: "start"
|
|
390
|
-
});
|
|
391
|
-
}, [visualFocusIndex]);
|
|
362
|
+
var getSelectWidth = (0, _react.useCallback)(function () {
|
|
363
|
+
var _selectRef$current;
|
|
364
|
+
|
|
365
|
+
var rect = selectRef === null || selectRef === void 0 ? void 0 : (_selectRef$current = selectRef.current) === null || _selectRef$current === void 0 ? void 0 : _selectRef$current.getBoundingClientRect();
|
|
366
|
+
return rect === null || rect === void 0 ? void 0 : rect.width;
|
|
367
|
+
}, []);
|
|
392
368
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
393
369
|
theme: colorsTheme.select
|
|
394
370
|
}, /*#__PURE__*/_react["default"].createElement(SelectContainer, {
|
|
@@ -399,12 +375,17 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
399
375
|
id: selectLabelId,
|
|
400
376
|
disabled: disabled,
|
|
401
377
|
onClick: function onClick() {
|
|
402
|
-
|
|
378
|
+
selectRef.current.focus();
|
|
403
379
|
},
|
|
404
380
|
helperText: helperText
|
|
405
|
-
}, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null,
|
|
381
|
+
}, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
|
|
406
382
|
disabled: disabled
|
|
407
|
-
}, helperText), /*#__PURE__*/_react["default"].createElement(
|
|
383
|
+
}, helperText), /*#__PURE__*/_react["default"].createElement(Popover.Root, {
|
|
384
|
+
open: isOpen
|
|
385
|
+
}, /*#__PURE__*/_react["default"].createElement(Popover.Trigger, {
|
|
386
|
+
asChild: true,
|
|
387
|
+
type: undefined
|
|
388
|
+
}, /*#__PURE__*/_react["default"].createElement(Select, {
|
|
408
389
|
id: selectId,
|
|
409
390
|
disabled: disabled,
|
|
410
391
|
error: error,
|
|
@@ -412,16 +393,16 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
412
393
|
onClick: handleSelectOnClick,
|
|
413
394
|
onFocus: handleSelectOnFocus,
|
|
414
395
|
onKeyDown: handleSelectOnKeyDown,
|
|
415
|
-
ref:
|
|
416
|
-
tabIndex: tabIndex,
|
|
396
|
+
ref: selectRef,
|
|
397
|
+
tabIndex: disabled ? -1 : tabIndex,
|
|
417
398
|
role: "combobox",
|
|
418
399
|
"aria-controls": optionsListId,
|
|
419
400
|
"aria-disabled": disabled,
|
|
420
401
|
"aria-expanded": isOpen,
|
|
421
402
|
"aria-haspopup": "listbox",
|
|
422
|
-
"aria-labelledby": selectLabelId,
|
|
403
|
+
"aria-labelledby": label ? selectLabelId : undefined,
|
|
423
404
|
"aria-activedescendant": visualFocusIndex >= 0 ? "option-".concat(visualFocusIndex) : undefined,
|
|
424
|
-
"aria-invalid": error ?
|
|
405
|
+
"aria-invalid": error ? true : false,
|
|
425
406
|
"aria-errormessage": error ? errorId : undefined,
|
|
426
407
|
"aria-required": !disabled && !optional
|
|
427
408
|
}, multiple && selectedOption.length > 0 && /*#__PURE__*/_react["default"].createElement(SelectionIndicator, null, /*#__PURE__*/_react["default"].createElement(SelectionNumber, {
|
|
@@ -434,10 +415,11 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
434
415
|
},
|
|
435
416
|
onClick: handleClearOptionsActionOnClick,
|
|
436
417
|
tabIndex: -1,
|
|
437
|
-
title:
|
|
438
|
-
"aria-label":
|
|
418
|
+
title: translatedLabels.select.actionClearSelectionTitle,
|
|
419
|
+
"aria-label": translatedLabels.select.actionClearSelectionTitle
|
|
439
420
|
}, _Icons["default"].clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
|
|
440
421
|
name: name,
|
|
422
|
+
disabled: disabled,
|
|
441
423
|
value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
|
|
442
424
|
readOnly: true,
|
|
443
425
|
"aria-hidden": "true"
|
|
@@ -464,11 +446,21 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
464
446
|
},
|
|
465
447
|
onClick: handleClearSearchActionOnClick,
|
|
466
448
|
tabIndex: -1,
|
|
467
|
-
title:
|
|
468
|
-
"aria-label":
|
|
449
|
+
title: translatedLabels.select.actionClearSearchTitle,
|
|
450
|
+
"aria-label": translatedLabels.select.actionClearSearchTitle
|
|
469
451
|
}, _Icons["default"].clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
|
|
470
452
|
disabled: disabled
|
|
471
|
-
}, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown),
|
|
453
|
+
}, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown))), /*#__PURE__*/_react["default"].createElement(Popover.Content, {
|
|
454
|
+
sideOffset: 4,
|
|
455
|
+
onOpenAutoFocus: function onOpenAutoFocus(event) {
|
|
456
|
+
// Avoid select to lose focus when the list is opened
|
|
457
|
+
event.preventDefault();
|
|
458
|
+
},
|
|
459
|
+
onCloseAutoFocus: function onCloseAutoFocus(event) {
|
|
460
|
+
// Avoid select to lose focus when the list is closed
|
|
461
|
+
event.preventDefault();
|
|
462
|
+
}
|
|
463
|
+
}, /*#__PURE__*/_react["default"].createElement(_Listbox["default"], {
|
|
472
464
|
id: optionsListId,
|
|
473
465
|
currentValue: value !== null && value !== void 0 ? value : innerValue,
|
|
474
466
|
options: searchable ? filteredOptions : options,
|
|
@@ -479,8 +471,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
479
471
|
optionalItem: optionalItem,
|
|
480
472
|
searchable: searchable,
|
|
481
473
|
handleOptionOnClick: handleOptionOnClick,
|
|
482
|
-
|
|
483
|
-
})), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
|
|
474
|
+
getSelectWidth: getSelectWidth
|
|
475
|
+
}))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
|
|
484
476
|
id: errorId,
|
|
485
477
|
"aria-live": error ? "assertive" : "off"
|
|
486
478
|
}, error)));
|
|
@@ -579,9 +571,7 @@ var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_te
|
|
|
579
571
|
return props.disabled ? "cursor: not-allowed;" : "cursor: default;";
|
|
580
572
|
});
|
|
581
573
|
|
|
582
|
-
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
|
|
583
|
-
return props.theme.fontFamily;
|
|
584
|
-
}, function (props) {
|
|
574
|
+
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) {
|
|
585
575
|
return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
|
|
586
576
|
}, function (props) {
|
|
587
577
|
return props.disabled ? "transparent" : props.theme.enabledSelectionIndicatorActionBackgroundColor;
|