@dxc-technology/halstack-react 0.0.0-c2834c3 → 0.0.0-c291a0c
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 +1 -4
- 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 +62 -63
- package/bleed/types.d.ts +1 -1
- package/box/Box.js +22 -32
- package/card/Card.js +34 -36
- package/common/variables.js +4 -18
- package/footer/Icons.js +1 -1
- package/inline/Inline.d.ts +4 -0
- package/inline/Inline.js +54 -0
- package/inline/Inline.stories.tsx +264 -0
- package/inline/types.d.ts +32 -0
- package/{radio → inline}/types.js +0 -0
- package/inset/Inset.js +1 -34
- package/inset/Inset.stories.tsx +33 -33
- package/inset/types.d.ts +1 -1
- package/layout/ApplicationLayout.d.ts +4 -3
- package/layout/ApplicationLayout.js +83 -102
- package/layout/ApplicationLayout.stories.tsx +14 -59
- package/layout/Icons.d.ts +5 -0
- package/layout/Icons.js +13 -2
- package/layout/SidenavContext.d.ts +5 -0
- package/layout/SidenavContext.js +19 -0
- package/layout/types.d.ts +5 -10
- package/link/Link.d.ts +2 -2
- package/link/Link.js +23 -49
- package/link/types.d.ts +2 -3
- package/list/List.js +1 -1
- package/list/List.stories.tsx +16 -22
- package/list/types.d.ts +1 -1
- package/main.d.ts +3 -2
- package/main.js +16 -8
- package/package.json +2 -1
- package/paginator/Paginator.test.js +42 -0
- package/progress-bar/ProgressBar.js +1 -1
- package/progress-bar/ProgressBar.stories.jsx +11 -11
- package/quick-nav/QuickNav.js +19 -23
- package/resultsetTable/ResultsetTable.test.js +42 -0
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +30 -7
- package/select/Select.js +73 -67
- package/select/Select.stories.tsx +130 -98
- package/select/Select.test.js +299 -194
- package/select/types.d.ts +3 -4
- package/sidenav/Sidenav.d.ts +1 -1
- package/sidenav/Sidenav.js +20 -9
- package/stack/Stack.d.ts +2 -1
- package/stack/Stack.js +23 -70
- package/stack/Stack.stories.tsx +139 -78
- package/stack/types.d.ts +11 -7
- package/tabs-nav/NavTabs.d.ts +8 -0
- package/tabs-nav/NavTabs.js +125 -0
- package/tabs-nav/NavTabs.stories.tsx +170 -0
- package/tabs-nav/NavTabs.test.js +82 -0
- package/tabs-nav/Tab.d.ts +4 -0
- package/tabs-nav/Tab.js +132 -0
- package/tabs-nav/types.d.ts +53 -0
- package/tabs-nav/types.js +5 -0
- package/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/quick-nav/QuickNav.js
CHANGED
|
@@ -25,13 +25,11 @@ var _Stack = _interopRequireDefault(require("../stack/Stack"));
|
|
|
25
25
|
|
|
26
26
|
var _Inset = _interopRequireDefault(require("../inset/Inset"));
|
|
27
27
|
|
|
28
|
-
var _List = _interopRequireDefault(require("../list/List"));
|
|
29
|
-
|
|
30
28
|
var _Text = _interopRequireDefault(require("../text/Text"));
|
|
31
29
|
|
|
32
30
|
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
33
31
|
|
|
34
|
-
var _templateObject, _templateObject2;
|
|
32
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
35
33
|
|
|
36
34
|
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); }
|
|
37
35
|
|
|
@@ -45,40 +43,34 @@ var DxcQuickNav = function DxcQuickNav(_ref) {
|
|
|
45
43
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
46
44
|
theme: colorsTheme.quickNav
|
|
47
45
|
}, /*#__PURE__*/_react["default"].createElement(QuickNavContainer, null, /*#__PURE__*/_react["default"].createElement(_Stack["default"], {
|
|
48
|
-
gutter: "
|
|
46
|
+
gutter: "0.5rem"
|
|
49
47
|
}, /*#__PURE__*/_react["default"].createElement(_Heading["default"], {
|
|
50
48
|
level: 4,
|
|
51
49
|
text: title || translatedLabels.quickNav.contentTitle
|
|
52
|
-
}), /*#__PURE__*/_react["default"].createElement(
|
|
53
|
-
gutter: "
|
|
50
|
+
}), /*#__PURE__*/_react["default"].createElement(ListColumn, null, /*#__PURE__*/_react["default"].createElement(_Stack["default"], {
|
|
51
|
+
gutter: "0.5rem"
|
|
54
52
|
}, links.map(function (link) {
|
|
55
53
|
var _link$links;
|
|
56
54
|
|
|
57
|
-
return /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
|
|
58
|
-
space: "
|
|
55
|
+
return /*#__PURE__*/_react["default"].createElement(ListRow, null, /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
|
|
56
|
+
space: "0.25rem"
|
|
59
57
|
}, /*#__PURE__*/_react["default"].createElement(_Text["default"], null, /*#__PURE__*/_react["default"].createElement(Link, {
|
|
60
58
|
href: "#".concat((0, _slugify["default"])(link === null || link === void 0 ? void 0 : link.label, {
|
|
61
59
|
lower: true
|
|
62
|
-
}))
|
|
63
|
-
isSelected: location.href.includes("#".concat((0, _slugify["default"])(link === null || link === void 0 ? void 0 : link.label, {
|
|
64
|
-
lower: true
|
|
65
|
-
})))
|
|
60
|
+
}))
|
|
66
61
|
}, link === null || link === void 0 ? void 0 : link.label), (_link$links = link.links) === null || _link$links === void 0 ? void 0 : _link$links.map(function (sublink) {
|
|
67
|
-
return /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
|
|
68
|
-
horizontal: "
|
|
62
|
+
return /*#__PURE__*/_react["default"].createElement(ListRow, null, /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
|
|
63
|
+
horizontal: "0.5rem"
|
|
69
64
|
}, /*#__PURE__*/_react["default"].createElement(_Text["default"], null, /*#__PURE__*/_react["default"].createElement(Link, {
|
|
70
65
|
href: "#".concat((0, _slugify["default"])(sublink === null || sublink === void 0 ? void 0 : sublink.label, {
|
|
71
66
|
lower: true
|
|
72
|
-
}))
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
})))
|
|
76
|
-
}, sublink === null || sublink === void 0 ? void 0 : sublink.label)));
|
|
77
|
-
})));
|
|
67
|
+
}))
|
|
68
|
+
}, sublink === null || sublink === void 0 ? void 0 : sublink.label))));
|
|
69
|
+
}))));
|
|
78
70
|
}))))));
|
|
79
71
|
};
|
|
80
72
|
|
|
81
|
-
var QuickNavContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n border-left: 2px solid ", ";\n
|
|
73
|
+
var QuickNavContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n border-left: 2px solid ", ";\n"])), function (props) {
|
|
82
74
|
return props.theme.paddingTop;
|
|
83
75
|
}, function (props) {
|
|
84
76
|
return props.theme.paddingBottom;
|
|
@@ -90,7 +82,11 @@ var QuickNavContainer = _styledComponents["default"].div(_templateObject || (_te
|
|
|
90
82
|
return props.theme.dividerBorderColor;
|
|
91
83
|
});
|
|
92
84
|
|
|
93
|
-
var
|
|
85
|
+
var ListColumn = _styledComponents["default"].ul(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n list-style-type: none;\n margin: 0;\n padding: 0;\n"])));
|
|
86
|
+
|
|
87
|
+
var ListRow = _styledComponents["default"].li(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])([""])));
|
|
88
|
+
|
|
89
|
+
var Link = _styledComponents["default"].a(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n text-decoration: none;\n font-size: ", ";\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n\n &:hover {\n color: ", ";\n }\n &:focus {\n outline-color: ", ";\n outline-style: ", ";\n outline-width: ", ";\n border-radius: ", ";\n }\n"])), function (props) {
|
|
94
90
|
return props.theme.fontSize;
|
|
95
91
|
}, function (props) {
|
|
96
92
|
return props.theme.fontFamily;
|
|
@@ -99,7 +95,7 @@ var Link = _styledComponents["default"].a(_templateObject2 || (_templateObject2
|
|
|
99
95
|
}, function (props) {
|
|
100
96
|
return props.theme.fontWeight;
|
|
101
97
|
}, function (props) {
|
|
102
|
-
return props.
|
|
98
|
+
return props.theme.fontColor;
|
|
103
99
|
}, function (props) {
|
|
104
100
|
return props.theme.hoverFontColor;
|
|
105
101
|
}, function (props) {
|
|
@@ -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, styles, }: ListboxProps) => JSX.Element>;
|
|
4
4
|
export default _default;
|
package/select/Listbox.js
CHANGED
|
@@ -11,7 +11,7 @@ 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
16
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
17
17
|
|
|
@@ -37,7 +37,7 @@ var groupsHaveOptions = function groupsHaveOptions(options) {
|
|
|
37
37
|
}) : true;
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
-
var Listbox =
|
|
40
|
+
var Listbox = function Listbox(_ref) {
|
|
41
41
|
var id = _ref.id,
|
|
42
42
|
currentValue = _ref.currentValue,
|
|
43
43
|
options = _ref.options,
|
|
@@ -47,9 +47,11 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
47
47
|
optional = _ref.optional,
|
|
48
48
|
optionalItem = _ref.optionalItem,
|
|
49
49
|
searchable = _ref.searchable,
|
|
50
|
-
handleOptionOnClick = _ref.handleOptionOnClick
|
|
50
|
+
handleOptionOnClick = _ref.handleOptionOnClick,
|
|
51
|
+
styles = _ref.styles;
|
|
51
52
|
var colorsTheme = (0, _useTheme["default"])();
|
|
52
53
|
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
54
|
+
var listboxRef = (0, _react.useRef)(null);
|
|
53
55
|
var globalIndex = optional && !multiple ? 0 : -1; // index for options, starting from 0 to options.length -1
|
|
54
56
|
|
|
55
57
|
var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
|
|
@@ -92,6 +94,26 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
92
94
|
}
|
|
93
95
|
};
|
|
94
96
|
|
|
97
|
+
(0, _react.useLayoutEffect)(function () {
|
|
98
|
+
if (currentValue && !multiple) {
|
|
99
|
+
var _listEl$scrollTo;
|
|
100
|
+
|
|
101
|
+
var listEl = listboxRef === null || listboxRef === void 0 ? void 0 : listboxRef.current;
|
|
102
|
+
var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
|
|
103
|
+
listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
|
|
104
|
+
top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}, [currentValue, multiple]);
|
|
108
|
+
(0, _react.useLayoutEffect)(function () {
|
|
109
|
+
var _listboxRef$current, _visualFocusedOptionE;
|
|
110
|
+
|
|
111
|
+
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];
|
|
112
|
+
visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
|
|
113
|
+
block: "nearest",
|
|
114
|
+
inline: "start"
|
|
115
|
+
});
|
|
116
|
+
}, [visualFocusIndex]);
|
|
95
117
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
96
118
|
theme: colorsTheme.select
|
|
97
119
|
}, /*#__PURE__*/_react["default"].createElement(ListboxContainer, {
|
|
@@ -102,10 +124,11 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
102
124
|
onMouseDown: function onMouseDown(event) {
|
|
103
125
|
event.preventDefault();
|
|
104
126
|
},
|
|
105
|
-
ref:
|
|
127
|
+
ref: listboxRef,
|
|
106
128
|
role: "listbox",
|
|
107
129
|
"aria-multiselectable": multiple,
|
|
108
|
-
"aria-orientation": "vertical"
|
|
130
|
+
"aria-orientation": "vertical",
|
|
131
|
+
style: styles
|
|
109
132
|
}, 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
133
|
key: "option-".concat(optionalItem.value),
|
|
111
134
|
id: "option-".concat(0),
|
|
@@ -117,9 +140,9 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
117
140
|
isLastOption: lastOptionIndex === 0,
|
|
118
141
|
isSelected: multiple ? currentValue.includes(optionalItem.value) : currentValue === optionalItem.value
|
|
119
142
|
}), options.map(mapOptionFunc)));
|
|
120
|
-
}
|
|
143
|
+
};
|
|
121
144
|
|
|
122
|
-
var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n
|
|
145
|
+
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
146
|
return props.theme.listDialogBackgroundColor;
|
|
124
147
|
}, function (props) {
|
|
125
148
|
return props.theme.listDialogBorderColor;
|
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); }
|
|
@@ -55,6 +57,10 @@ var filteredGroupsHaveOptions = function filteredGroupsHaveOptions(filteredOptio
|
|
|
55
57
|
}) : true;
|
|
56
58
|
};
|
|
57
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
|
+
|
|
58
64
|
var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, searchValue) {
|
|
59
65
|
if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
|
|
60
66
|
if (options[0].options) return options.map(function (optionGroup) {
|
|
@@ -130,6 +136,10 @@ var getSelectedOption = function getSelectedOption(value, options, multiple, opt
|
|
|
130
136
|
};
|
|
131
137
|
};
|
|
132
138
|
|
|
139
|
+
var notOptionalCheck = function notOptionalCheck(value, multiple, optional) {
|
|
140
|
+
return !optional && (multiple ? value.length === 0 : value === "");
|
|
141
|
+
};
|
|
142
|
+
|
|
133
143
|
var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
134
144
|
var _selectedOption$label;
|
|
135
145
|
|
|
@@ -187,9 +197,13 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
187
197
|
isOpen = _useState10[0],
|
|
188
198
|
changeIsOpen = _useState10[1];
|
|
189
199
|
|
|
190
|
-
var
|
|
200
|
+
var _useState11 = (0, _react.useState)(null),
|
|
201
|
+
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
202
|
+
listboxStyles = _useState12[0],
|
|
203
|
+
setListboxStyles = _useState12[1];
|
|
204
|
+
|
|
205
|
+
var selectRef = (0, _react.useRef)(null);
|
|
191
206
|
var selectSearchInputRef = (0, _react.useRef)(null);
|
|
192
|
-
var selectOptionsListRef = (0, _react.useRef)(null);
|
|
193
207
|
var colorsTheme = (0, _useTheme["default"])();
|
|
194
208
|
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
195
209
|
var optionalItem = {
|
|
@@ -209,20 +223,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
209
223
|
selectedOption = _useMemo.selectedOption,
|
|
210
224
|
singleSelectionIndex = _useMemo.singleSelectionIndex;
|
|
211
225
|
|
|
212
|
-
var notOptionalCheck = function notOptionalCheck(value) {
|
|
213
|
-
return !optional && value === "";
|
|
214
|
-
};
|
|
215
|
-
|
|
216
|
-
var notOptionalMultipleCheck = function notOptionalMultipleCheck(value) {
|
|
217
|
-
return !optional && value.length === 0;
|
|
218
|
-
};
|
|
219
|
-
|
|
220
|
-
var canBeOpenOptions = function canBeOpenOptions() {
|
|
221
|
-
return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
|
|
222
|
-
};
|
|
223
|
-
|
|
224
226
|
var openOptions = function openOptions() {
|
|
225
|
-
if (!isOpen &&
|
|
227
|
+
if (!isOpen && canOpenOptions(options, disabled)) changeIsOpen(true);
|
|
226
228
|
};
|
|
227
229
|
|
|
228
230
|
var closeOptions = function closeOptions() {
|
|
@@ -233,27 +235,21 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
233
235
|
};
|
|
234
236
|
|
|
235
237
|
var handleSelectChangeValue = function handleSelectChangeValue(newOption) {
|
|
238
|
+
var newValue;
|
|
239
|
+
|
|
236
240
|
if (multiple) {
|
|
237
|
-
|
|
238
|
-
if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) res = (value !== null && value !== void 0 ? value : innerValue).filter(function (optionVal) {
|
|
241
|
+
if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) newValue = (value !== null && value !== void 0 ? value : innerValue).filter(function (optionVal) {
|
|
239
242
|
return optionVal !== newOption.value;
|
|
240
|
-
});else
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
if (notOptionalCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
251
|
-
value: newOption.value,
|
|
252
|
-
error: translatedLabels.formFields.requiredValueErrorMessage
|
|
253
|
-
});else onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
254
|
-
value: newOption.value
|
|
255
|
-
});
|
|
256
|
-
}
|
|
243
|
+
});else newValue = [].concat((0, _toConsumableArray2["default"])(value !== null && value !== void 0 ? value : innerValue), [newOption.value]);
|
|
244
|
+
} else newValue = newOption.value;
|
|
245
|
+
|
|
246
|
+
value !== null && value !== void 0 ? value : setInnerValue(newValue);
|
|
247
|
+
notOptionalCheck(newValue, multiple, optional) ? onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
248
|
+
value: newValue,
|
|
249
|
+
error: translatedLabels.formFields.requiredValueErrorMessage
|
|
250
|
+
}) : onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
251
|
+
value: newValue
|
|
252
|
+
});
|
|
257
253
|
};
|
|
258
254
|
|
|
259
255
|
var handleSelectOnClick = function handleSelectOnClick() {
|
|
@@ -274,11 +270,12 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
274
270
|
if (!event.currentTarget.contains(event.relatedTarget)) {
|
|
275
271
|
closeOptions();
|
|
276
272
|
setSearchValue("");
|
|
277
|
-
|
|
278
|
-
|
|
273
|
+
var currentValue = value !== null && value !== void 0 ? value : innerValue;
|
|
274
|
+
notOptionalCheck(currentValue, multiple, optional) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
275
|
+
value: currentValue,
|
|
279
276
|
error: translatedLabels.formFields.requiredValueErrorMessage
|
|
280
|
-
})
|
|
281
|
-
value:
|
|
277
|
+
}) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
278
|
+
value: currentValue
|
|
282
279
|
});
|
|
283
280
|
}
|
|
284
281
|
};
|
|
@@ -368,26 +365,23 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
368
365
|
!multiple && closeOptions();
|
|
369
366
|
setSearchValue("");
|
|
370
367
|
}, [handleSelectChangeValue, closeOptions, multiple]);
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
|
|
379
|
-
});
|
|
380
|
-
}
|
|
381
|
-
}, [isOpen]);
|
|
382
|
-
(0, _react.useLayoutEffect)(function () {
|
|
383
|
-
var _selectOptionsListRef, _visualFocusedOptionE;
|
|
384
|
-
|
|
385
|
-
var visualFocusedOptionEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : (_selectOptionsListRef = selectOptionsListRef.current) === null || _selectOptionsListRef === void 0 ? void 0 : _selectOptionsListRef.querySelectorAll("[role='option']")[visualFocusIndex];
|
|
386
|
-
visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
|
|
387
|
-
block: "nearest",
|
|
388
|
-
inline: "start"
|
|
368
|
+
|
|
369
|
+
var handleListboxResize = function handleListboxResize() {
|
|
370
|
+
var _selectRef$current;
|
|
371
|
+
|
|
372
|
+
var rect = selectRef === null || selectRef === void 0 ? void 0 : (_selectRef$current = selectRef.current) === null || _selectRef$current === void 0 ? void 0 : _selectRef$current.getBoundingClientRect();
|
|
373
|
+
setListboxStyles({
|
|
374
|
+
width: rect === null || rect === void 0 ? void 0 : rect.width
|
|
389
375
|
});
|
|
390
|
-
}
|
|
376
|
+
};
|
|
377
|
+
|
|
378
|
+
(0, _react.useEffect)(function () {
|
|
379
|
+
handleListboxResize();
|
|
380
|
+
window.addEventListener("resize", handleListboxResize);
|
|
381
|
+
return function () {
|
|
382
|
+
window.removeEventListener("resize", handleListboxResize);
|
|
383
|
+
};
|
|
384
|
+
}, [setListboxStyles]);
|
|
391
385
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
392
386
|
theme: colorsTheme.select
|
|
393
387
|
}, /*#__PURE__*/_react["default"].createElement(SelectContainer, {
|
|
@@ -398,12 +392,16 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
398
392
|
id: selectLabelId,
|
|
399
393
|
disabled: disabled,
|
|
400
394
|
onClick: function onClick() {
|
|
401
|
-
|
|
395
|
+
selectRef.current.focus();
|
|
402
396
|
},
|
|
403
397
|
helperText: helperText
|
|
404
398
|
}, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
|
|
405
399
|
disabled: disabled
|
|
406
|
-
}, 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
|
+
}, /*#__PURE__*/_react["default"].createElement(Select, {
|
|
407
405
|
id: selectId,
|
|
408
406
|
disabled: disabled,
|
|
409
407
|
error: error,
|
|
@@ -411,14 +409,14 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
411
409
|
onClick: handleSelectOnClick,
|
|
412
410
|
onFocus: handleSelectOnFocus,
|
|
413
411
|
onKeyDown: handleSelectOnKeyDown,
|
|
414
|
-
ref:
|
|
412
|
+
ref: selectRef,
|
|
415
413
|
tabIndex: tabIndex,
|
|
416
414
|
role: "combobox",
|
|
417
415
|
"aria-controls": optionsListId,
|
|
418
416
|
"aria-disabled": disabled,
|
|
419
417
|
"aria-expanded": isOpen,
|
|
420
418
|
"aria-haspopup": "listbox",
|
|
421
|
-
"aria-labelledby": selectLabelId,
|
|
419
|
+
"aria-labelledby": label ? selectLabelId : undefined,
|
|
422
420
|
"aria-activedescendant": visualFocusIndex >= 0 ? "option-".concat(visualFocusIndex) : undefined,
|
|
423
421
|
"aria-invalid": error ? "true" : "false",
|
|
424
422
|
"aria-errormessage": error ? errorId : undefined,
|
|
@@ -467,7 +465,17 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
467
465
|
"aria-label": translatedLabels.select.actionClearSearchTitle
|
|
468
466
|
}, _Icons["default"].clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
|
|
469
467
|
disabled: disabled
|
|
470
|
-
}, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown),
|
|
468
|
+
}, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown))), /*#__PURE__*/_react["default"].createElement(Popover.Content, {
|
|
469
|
+
sideOffset: 4,
|
|
470
|
+
onOpenAutoFocus: function onOpenAutoFocus(event) {
|
|
471
|
+
// Avoid select to lose focus when the list is opened
|
|
472
|
+
event.preventDefault();
|
|
473
|
+
},
|
|
474
|
+
onCloseAutoFocus: function onCloseAutoFocus(event) {
|
|
475
|
+
// Avoid select to lose focus when the list is closed
|
|
476
|
+
event.preventDefault();
|
|
477
|
+
}
|
|
478
|
+
}, /*#__PURE__*/_react["default"].createElement(_Listbox["default"], {
|
|
471
479
|
id: optionsListId,
|
|
472
480
|
currentValue: value !== null && value !== void 0 ? value : innerValue,
|
|
473
481
|
options: searchable ? filteredOptions : options,
|
|
@@ -478,8 +486,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
478
486
|
optionalItem: optionalItem,
|
|
479
487
|
searchable: searchable,
|
|
480
488
|
handleOptionOnClick: handleOptionOnClick,
|
|
481
|
-
|
|
482
|
-
})), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
|
|
489
|
+
styles: listboxStyles
|
|
490
|
+
}))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
|
|
483
491
|
id: errorId,
|
|
484
492
|
"aria-live": error ? "assertive" : "off"
|
|
485
493
|
}, error)));
|
|
@@ -578,9 +586,7 @@ var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_te
|
|
|
578
586
|
return props.disabled ? "cursor: not-allowed;" : "cursor: default;";
|
|
579
587
|
});
|
|
580
588
|
|
|
581
|
-
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
|
|
582
|
-
return props.theme.fontFamily;
|
|
583
|
-
}, function (props) {
|
|
589
|
+
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) {
|
|
584
590
|
return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
|
|
585
591
|
}, function (props) {
|
|
586
592
|
return props.disabled ? "transparent" : props.theme.enabledSelectionIndicatorActionBackgroundColor;
|