@dxc-technology/halstack-react 0.0.0-b50ba80 → 0.0.0-b5ec444
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BackgroundColorContext.d.ts +1 -10
- package/BackgroundColorContext.js +5 -22
- package/HalstackContext.d.ts +1245 -6
- package/HalstackContext.js +181 -114
- package/README.md +47 -0
- package/accordion/Accordion.d.ts +1 -1
- package/accordion/Accordion.js +116 -160
- package/accordion/Accordion.stories.tsx +102 -126
- package/accordion/Accordion.test.js +25 -41
- package/accordion/types.d.ts +5 -16
- package/accordion-group/AccordionGroup.d.ts +4 -3
- package/accordion-group/AccordionGroup.js +31 -98
- package/accordion-group/AccordionGroup.stories.tsx +94 -67
- package/accordion-group/AccordionGroup.test.js +52 -105
- package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
- package/accordion-group/AccordionGroupAccordion.js +31 -0
- package/accordion-group/types.d.ts +11 -16
- package/action-icon/ActionIcon.d.ts +4 -0
- package/action-icon/ActionIcon.js +47 -0
- package/action-icon/ActionIcon.stories.tsx +41 -0
- package/action-icon/ActionIcon.test.js +64 -0
- package/action-icon/types.d.ts +26 -0
- package/alert/Alert.js +23 -59
- package/alert/Alert.stories.tsx +28 -0
- package/alert/Alert.test.js +29 -46
- package/alert/types.d.ts +5 -5
- package/badge/Badge.d.ts +1 -1
- package/badge/Badge.js +141 -41
- package/badge/Badge.stories.tsx +210 -0
- package/badge/Badge.test.js +30 -0
- package/badge/types.d.ts +52 -2
- package/bleed/Bleed.js +14 -55
- package/bleed/Bleed.stories.tsx +95 -95
- package/bleed/types.d.ts +2 -2
- package/box/Box.d.ts +1 -1
- package/box/Box.js +30 -81
- package/box/Box.stories.tsx +38 -51
- package/box/Box.test.js +2 -7
- package/box/types.d.ts +3 -14
- package/bulleted-list/BulletedList.d.ts +7 -0
- package/bulleted-list/BulletedList.js +89 -0
- package/bulleted-list/BulletedList.stories.tsx +115 -0
- package/bulleted-list/types.d.ts +38 -0
- package/button/Button.d.ts +1 -1
- package/button/Button.js +63 -117
- package/button/Button.stories.tsx +160 -90
- package/button/Button.test.js +20 -17
- package/button/types.d.ts +12 -8
- package/card/Card.d.ts +1 -1
- package/card/Card.js +64 -107
- package/card/Card.stories.tsx +12 -42
- package/card/Card.test.js +11 -22
- package/card/types.d.ts +6 -11
- package/checkbox/Checkbox.d.ts +2 -2
- package/checkbox/Checkbox.js +142 -181
- package/checkbox/Checkbox.stories.tsx +128 -94
- package/checkbox/Checkbox.test.js +160 -39
- package/checkbox/types.d.ts +11 -3
- package/chip/Chip.js +39 -79
- package/chip/Chip.stories.tsx +121 -26
- package/chip/Chip.test.js +16 -31
- package/chip/types.d.ts +4 -4
- package/common/OpenSans.css +68 -80
- package/common/coreTokens.d.ts +237 -0
- package/common/coreTokens.js +184 -0
- package/common/utils.d.ts +1 -0
- package/common/utils.js +6 -12
- package/common/variables.d.ts +1395 -0
- package/common/variables.js +1025 -1134
- package/container/Container.d.ts +4 -0
- package/container/Container.js +194 -0
- package/container/Container.stories.tsx +214 -0
- package/container/types.d.ts +74 -0
- package/date-input/Calendar.d.ts +4 -0
- package/date-input/Calendar.js +214 -0
- package/date-input/DateInput.js +152 -298
- package/date-input/DateInput.stories.tsx +203 -56
- package/date-input/DateInput.test.js +700 -371
- package/date-input/DatePicker.d.ts +4 -0
- package/date-input/DatePicker.js +115 -0
- package/date-input/Icons.d.ts +6 -0
- package/date-input/Icons.js +58 -0
- package/date-input/YearPicker.d.ts +4 -0
- package/date-input/YearPicker.js +100 -0
- package/date-input/types.d.ts +72 -15
- package/dialog/Dialog.d.ts +1 -1
- package/dialog/Dialog.js +73 -107
- package/dialog/Dialog.stories.tsx +320 -167
- package/dialog/Dialog.test.js +287 -20
- package/dialog/types.d.ts +18 -25
- package/dropdown/Dropdown.d.ts +1 -1
- package/dropdown/Dropdown.js +248 -303
- package/dropdown/Dropdown.stories.tsx +245 -56
- package/dropdown/Dropdown.test.js +575 -165
- package/dropdown/DropdownMenu.d.ts +4 -0
- package/dropdown/DropdownMenu.js +63 -0
- package/dropdown/DropdownMenuItem.d.ts +4 -0
- package/dropdown/DropdownMenuItem.js +67 -0
- package/dropdown/types.d.ts +32 -14
- package/file-input/FileInput.d.ts +2 -2
- package/file-input/FileInput.js +246 -357
- package/file-input/FileInput.stories.tsx +123 -12
- package/file-input/FileInput.test.js +369 -367
- package/file-input/FileItem.d.ts +4 -14
- package/file-input/FileItem.js +45 -96
- package/file-input/types.d.ts +25 -8
- package/flex/Flex.d.ts +4 -0
- package/flex/Flex.js +57 -0
- package/flex/Flex.stories.tsx +112 -0
- package/flex/types.d.ts +97 -0
- package/footer/Footer.d.ts +1 -1
- package/footer/Footer.js +72 -117
- package/footer/Footer.stories.tsx +60 -19
- package/footer/Footer.test.js +33 -57
- package/footer/Icons.d.ts +3 -2
- package/footer/Icons.js +67 -8
- package/footer/types.d.ts +25 -26
- package/grid/Grid.d.ts +7 -0
- package/grid/Grid.js +76 -0
- package/grid/Grid.stories.tsx +219 -0
- package/grid/types.d.ts +115 -0
- package/header/Header.d.ts +4 -3
- package/header/Header.js +90 -170
- package/header/Header.stories.tsx +118 -39
- package/header/Header.test.js +13 -26
- package/header/Icons.d.ts +2 -2
- package/header/Icons.js +4 -9
- package/header/types.d.ts +5 -19
- package/heading/Heading.js +10 -32
- package/heading/Heading.test.js +71 -88
- package/heading/types.d.ts +7 -7
- package/image/Image.d.ts +4 -0
- package/image/Image.js +70 -0
- package/image/Image.stories.tsx +127 -0
- package/image/types.d.ts +72 -0
- package/inset/Inset.js +14 -55
- package/inset/Inset.stories.tsx +37 -36
- package/inset/types.d.ts +2 -2
- package/layout/ApplicationLayout.d.ts +16 -6
- package/layout/ApplicationLayout.js +82 -166
- package/layout/ApplicationLayout.stories.tsx +85 -94
- package/layout/Icons.d.ts +8 -0
- package/layout/Icons.js +51 -48
- package/layout/SidenavContext.d.ts +5 -0
- package/layout/SidenavContext.js +13 -0
- package/layout/types.d.ts +19 -35
- package/link/Link.d.ts +2 -2
- package/link/Link.js +42 -89
- package/link/Link.stories.tsx +73 -6
- package/link/Link.test.js +24 -44
- package/link/types.d.ts +14 -15
- package/main.d.ts +13 -13
- package/main.js +57 -101
- package/nav-tabs/NavTabs.d.ts +8 -0
- package/nav-tabs/NavTabs.js +93 -0
- package/nav-tabs/NavTabs.stories.tsx +276 -0
- package/nav-tabs/NavTabs.test.js +76 -0
- package/nav-tabs/Tab.d.ts +4 -0
- package/nav-tabs/Tab.js +118 -0
- package/nav-tabs/types.d.ts +52 -0
- package/nav-tabs/types.js +5 -0
- package/number-input/NumberInput.d.ts +7 -0
- package/number-input/NumberInput.js +47 -37
- package/number-input/NumberInput.stories.tsx +42 -26
- package/number-input/NumberInput.test.js +860 -377
- package/number-input/types.d.ts +11 -5
- package/package.json +43 -45
- package/paginator/Icons.d.ts +5 -0
- package/paginator/Icons.js +21 -47
- package/paginator/Paginator.js +34 -91
- package/paginator/Paginator.stories.tsx +24 -0
- package/paginator/Paginator.test.js +280 -211
- package/paginator/types.d.ts +3 -3
- package/paragraph/Paragraph.d.ts +5 -0
- package/paragraph/Paragraph.js +22 -0
- package/paragraph/Paragraph.stories.tsx +27 -0
- package/password-input/Icons.d.ts +6 -0
- package/password-input/Icons.js +35 -0
- package/password-input/PasswordInput.js +57 -123
- package/password-input/PasswordInput.stories.tsx +1 -33
- package/password-input/PasswordInput.test.js +160 -143
- package/password-input/types.d.ts +8 -7
- package/progress-bar/ProgressBar.js +65 -91
- package/progress-bar/ProgressBar.stories.tsx +93 -0
- package/progress-bar/ProgressBar.test.js +72 -44
- package/progress-bar/types.d.ts +3 -3
- package/quick-nav/QuickNav.js +71 -44
- package/quick-nav/QuickNav.stories.tsx +146 -27
- package/quick-nav/types.d.ts +10 -10
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +59 -76
- package/radio-group/RadioGroup.js +71 -116
- package/radio-group/RadioGroup.stories.tsx +132 -18
- package/radio-group/RadioGroup.test.js +518 -457
- package/radio-group/types.d.ts +10 -10
- package/resultset-table/Icons.d.ts +7 -0
- package/resultset-table/Icons.js +47 -0
- package/resultset-table/ResultsetTable.d.ts +7 -0
- package/resultset-table/ResultsetTable.js +167 -0
- package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +152 -30
- package/resultset-table/ResultsetTable.test.js +371 -0
- package/{resultsetTable → resultset-table}/types.d.ts +13 -7
- package/resultset-table/types.js +5 -0
- package/select/Icons.d.ts +7 -7
- package/select/Icons.js +1 -5
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +45 -51
- package/select/Option.js +27 -50
- package/select/Select.js +181 -246
- package/select/Select.stories.tsx +525 -136
- package/select/Select.test.js +2009 -1696
- package/select/types.d.ts +16 -20
- package/sidenav/Icons.d.ts +7 -0
- package/sidenav/Icons.js +47 -0
- package/sidenav/Sidenav.d.ts +6 -5
- package/sidenav/Sidenav.js +131 -71
- package/sidenav/Sidenav.stories.tsx +251 -151
- package/sidenav/Sidenav.test.js +26 -45
- package/sidenav/types.d.ts +52 -26
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +148 -181
- package/slider/Slider.test.js +185 -81
- package/slider/types.d.ts +7 -3
- package/spinner/Spinner.js +31 -75
- package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
- package/spinner/Spinner.test.js +26 -35
- package/spinner/types.d.ts +3 -3
- package/status-light/StatusLight.d.ts +4 -0
- package/status-light/StatusLight.js +51 -0
- package/status-light/StatusLight.stories.tsx +74 -0
- package/status-light/StatusLight.test.js +25 -0
- package/status-light/types.d.ts +17 -0
- package/status-light/types.js +5 -0
- package/switch/Switch.d.ts +2 -2
- package/switch/Switch.js +147 -125
- package/switch/Switch.stories.tsx +37 -60
- package/switch/Switch.test.js +138 -56
- package/switch/types.d.ts +7 -3
- package/table/ActionsCell.d.ts +4 -0
- package/table/ActionsCell.js +68 -0
- package/table/DropdownTheme.js +62 -0
- package/table/Table.d.ts +4 -1
- package/table/Table.js +26 -32
- package/table/Table.stories.tsx +658 -0
- package/table/Table.test.js +95 -8
- package/table/types.d.ts +45 -6
- package/tabs/Tab.d.ts +4 -0
- package/tabs/Tab.js +116 -0
- package/tabs/Tabs.js +314 -141
- package/tabs/Tabs.stories.tsx +120 -6
- package/tabs/Tabs.test.js +223 -69
- package/tabs/types.d.ts +28 -18
- package/tag/Tag.js +29 -61
- package/tag/Tag.stories.tsx +14 -1
- package/tag/Tag.test.js +20 -31
- package/tag/types.d.ts +7 -7
- package/text-input/Icons.d.ts +8 -0
- package/text-input/Icons.js +56 -0
- package/text-input/Suggestion.js +40 -28
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +84 -0
- package/text-input/TextInput.js +318 -524
- package/text-input/TextInput.stories.tsx +266 -275
- package/text-input/TextInput.test.js +1419 -1375
- package/text-input/types.d.ts +43 -16
- package/textarea/Textarea.js +79 -131
- package/textarea/Textarea.stories.tsx +174 -0
- package/textarea/Textarea.test.js +152 -183
- package/textarea/types.d.ts +9 -5
- package/toggle-group/ToggleGroup.d.ts +2 -2
- package/toggle-group/ToggleGroup.js +92 -106
- package/toggle-group/ToggleGroup.stories.tsx +49 -4
- package/toggle-group/ToggleGroup.test.js +69 -88
- package/toggle-group/types.d.ts +26 -17
- package/typography/Typography.d.ts +4 -0
- package/typography/Typography.js +23 -0
- package/typography/Typography.stories.tsx +198 -0
- package/typography/types.d.ts +18 -0
- package/typography/types.js +5 -0
- package/useTheme.d.ts +1147 -1
- package/useTheme.js +2 -9
- package/useTranslatedLabels.d.ts +85 -0
- package/useTranslatedLabels.js +14 -0
- package/utils/BaseTypography.d.ts +21 -0
- package/utils/BaseTypography.js +94 -0
- package/utils/FocusLock.d.ts +13 -0
- package/utils/FocusLock.js +124 -0
- package/wizard/Wizard.js +51 -91
- package/wizard/Wizard.stories.tsx +40 -1
- package/wizard/Wizard.test.js +54 -81
- package/wizard/types.d.ts +7 -7
- package/card/ice-cream.jpg +0 -0
- 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/number-input/NumberInputContext.d.ts +0 -4
- package/number-input/NumberInputContext.js +0 -19
- package/number-input/numberInputContextTypes.d.ts +0 -19
- package/progress-bar/ProgressBar.stories.jsx +0 -58
- 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/resultsetTable/ResultsetTable.d.ts +0 -4
- package/resultsetTable/ResultsetTable.js +0 -254
- package/resultsetTable/ResultsetTable.test.js +0 -306
- 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/slider/Slider.stories.tsx +0 -177
- 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/table/Table.stories.jsx +0 -277
- package/text/Text.d.ts +0 -7
- package/text/Text.js +0 -30
- package/text/Text.stories.tsx +0 -19
- package/textarea/Textarea.stories.jsx +0 -157
- /package/{list → action-icon}/types.js +0 -0
- /package/{radio → bulleted-list}/types.js +0 -0
- /package/{resultsetTable → container}/types.js +0 -0
- /package/{row → flex}/types.js +0 -0
- /package/{stack → grid}/types.js +0 -0
- /package/{number-input/numberInputContextTypes.js → image/types.js} +0 -0
package/select/Select.js
CHANGED
|
@@ -1,65 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports["default"] = void 0;
|
|
11
|
-
|
|
12
9
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
|
-
|
|
14
10
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
15
|
-
|
|
16
11
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
17
|
-
|
|
18
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
19
|
-
|
|
20
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
21
|
-
|
|
22
14
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
23
|
-
|
|
24
15
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
25
|
-
|
|
26
|
-
var _variables = require("../common/variables
|
|
27
|
-
|
|
16
|
+
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
17
|
+
var _variables = require("../common/variables");
|
|
28
18
|
var _uuid = require("uuid");
|
|
29
|
-
|
|
30
|
-
var _utils = require("../common/utils.js");
|
|
31
|
-
|
|
19
|
+
var _utils = require("../common/utils");
|
|
32
20
|
var _Icons = _interopRequireDefault(require("./Icons"));
|
|
33
|
-
|
|
34
21
|
var _Listbox = _interopRequireDefault(require("./Listbox"));
|
|
35
|
-
|
|
22
|
+
var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
|
|
36
23
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
|
|
37
|
-
|
|
38
|
-
function
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
var getNotOptionalErrorMessage = function getNotOptionalErrorMessage() {
|
|
43
|
-
return "This field is required. Please, enter a value.";
|
|
24
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
25
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
26
|
+
var isOptionGroup = function isOptionGroup(option) {
|
|
27
|
+
return "options" in option && option.options != null;
|
|
44
28
|
};
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return innerOptions[0].hasOwnProperty("options") ? innerOptions[0].options ? innerOptions.some(function (groupOption) {
|
|
48
|
-
return groupOption.options.length > 0;
|
|
49
|
-
}) : false : true;
|
|
29
|
+
var isArrayOfOptionGroups = function isArrayOfOptionGroups(options) {
|
|
30
|
+
return isOptionGroup(options[0]);
|
|
50
31
|
};
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return filteredOptions !== null && filteredOptions !== void 0 && filteredOptions[0].options ? filteredOptions.some(function (groupOption) {
|
|
32
|
+
var groupsHaveOptions = function groupsHaveOptions(filteredOptions) {
|
|
33
|
+
return isArrayOfOptionGroups(filteredOptions) ? filteredOptions.some(function (groupOption) {
|
|
54
34
|
var _groupOption$options;
|
|
55
|
-
|
|
56
35
|
return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
|
|
57
36
|
}) : true;
|
|
58
37
|
};
|
|
59
|
-
|
|
38
|
+
var canOpenOptions = function canOpenOptions(options, disabled) {
|
|
39
|
+
return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
|
|
40
|
+
};
|
|
60
41
|
var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, searchValue) {
|
|
61
42
|
if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
|
|
62
|
-
if (options
|
|
43
|
+
if (isArrayOfOptionGroups(options)) return options.map(function (optionGroup) {
|
|
63
44
|
var group = {
|
|
64
45
|
label: optionGroup.label,
|
|
65
46
|
options: optionGroup.options.filter(function (option) {
|
|
@@ -72,32 +53,24 @@ var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, se
|
|
|
72
53
|
});
|
|
73
54
|
}
|
|
74
55
|
};
|
|
75
|
-
|
|
76
56
|
var getLastOptionIndex = function getLastOptionIndex(options, filteredOptions, searchable, optional, multiple) {
|
|
77
57
|
var last = 0;
|
|
78
|
-
|
|
79
58
|
var reducer = function reducer(acc, current) {
|
|
80
59
|
var _current$options;
|
|
81
|
-
|
|
82
60
|
return acc + ((_current$options = current.options) === null || _current$options === void 0 ? void 0 : _current$options.length);
|
|
83
61
|
};
|
|
84
|
-
|
|
85
|
-
if (searchable && filteredOptions.length > 0) filteredOptions[0].options ? last = filteredOptions.reduce(reducer, 0) - 1 : last = filteredOptions.length - 1;else if ((options === null || options === void 0 ? void 0 : options.length) > 0) options[0].options ? last = options.reduce(reducer, 0) - 1 : last = options.length - 1;
|
|
62
|
+
if (searchable && (filteredOptions === null || filteredOptions === void 0 ? void 0 : filteredOptions.length) > 0) isArrayOfOptionGroups(filteredOptions) ? last = filteredOptions.reduce(reducer, 0) - 1 : last = filteredOptions.length - 1;else if ((options === null || options === void 0 ? void 0 : options.length) > 0) isArrayOfOptionGroups(options) ? last = options.reduce(reducer, 0) - 1 : last = options.length - 1;
|
|
86
63
|
return optional && !multiple ? last + 1 : last;
|
|
87
64
|
};
|
|
88
|
-
|
|
89
65
|
var getSelectedOption = function getSelectedOption(value, options, multiple, optional, optionalItem) {
|
|
90
66
|
var selectedOption = multiple ? [] : {};
|
|
91
67
|
var singleSelectionIndex;
|
|
92
|
-
|
|
93
68
|
if (multiple) {
|
|
94
69
|
if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
|
|
95
70
|
options.forEach(function (option) {
|
|
96
|
-
if (option.options) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
});
|
|
100
|
-
} else if (value.includes(option.value)) selectedOption.push(option);
|
|
71
|
+
if (isOptionGroup(option)) option.options.forEach(function (singleOption) {
|
|
72
|
+
if (value.includes(singleOption.value) && Array.isArray(selectedOption)) selectedOption.push(singleOption);
|
|
73
|
+
});else if (value.includes(option.value) && Array.isArray(selectedOption)) selectedOption.push(option);
|
|
101
74
|
});
|
|
102
75
|
}
|
|
103
76
|
} else {
|
|
@@ -107,14 +80,13 @@ var getSelectedOption = function getSelectedOption(value, options, multiple, opt
|
|
|
107
80
|
} else if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
|
|
108
81
|
var group_index = 0;
|
|
109
82
|
options.some(function (option, index) {
|
|
110
|
-
if (option
|
|
83
|
+
if (isOptionGroup(option)) {
|
|
111
84
|
option.options.some(function (singleOption) {
|
|
112
85
|
if (singleOption.value === value) {
|
|
113
86
|
selectedOption = singleOption;
|
|
114
87
|
singleSelectionIndex = optional ? group_index + 1 : group_index;
|
|
115
88
|
return true;
|
|
116
89
|
}
|
|
117
|
-
|
|
118
90
|
group_index++;
|
|
119
91
|
});
|
|
120
92
|
} else if (option.value === value) {
|
|
@@ -125,74 +97,95 @@ var getSelectedOption = function getSelectedOption(value, options, multiple, opt
|
|
|
125
97
|
});
|
|
126
98
|
}
|
|
127
99
|
}
|
|
128
|
-
|
|
129
100
|
return {
|
|
130
101
|
selectedOption: selectedOption,
|
|
131
102
|
singleSelectionIndex: singleSelectionIndex
|
|
132
103
|
};
|
|
133
104
|
};
|
|
134
|
-
|
|
135
|
-
var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
105
|
+
var getSelectedOptionLabel = function getSelectedOptionLabel(placeholder, selectedOption) {
|
|
136
106
|
var _selectedOption$label;
|
|
137
|
-
|
|
107
|
+
if (Array.isArray(selectedOption)) return selectedOption.length === 0 ? placeholder : selectedOption.map(function (option) {
|
|
108
|
+
return option.label;
|
|
109
|
+
}).join(", ");else return (_selectedOption$label = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) !== null && _selectedOption$label !== void 0 ? _selectedOption$label : placeholder;
|
|
110
|
+
};
|
|
111
|
+
var notOptionalCheck = function notOptionalCheck(value, multiple, optional) {
|
|
112
|
+
return !optional && (multiple ? value.length === 0 : value === "");
|
|
113
|
+
};
|
|
114
|
+
var useWidth = function useWidth(target) {
|
|
115
|
+
var _useState = (0, _react.useState)(0),
|
|
116
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
117
|
+
width = _useState2[0],
|
|
118
|
+
setWidth = _useState2[1];
|
|
119
|
+
(0, _react.useEffect)(function () {
|
|
120
|
+
if (target != null) {
|
|
121
|
+
setWidth(target.getBoundingClientRect().width);
|
|
122
|
+
var triggerObserver = new ResizeObserver(function (entries) {
|
|
123
|
+
var rect = entries[0].target.getBoundingClientRect();
|
|
124
|
+
setWidth(rect === null || rect === void 0 ? void 0 : rect.width);
|
|
125
|
+
});
|
|
126
|
+
triggerObserver.observe(target);
|
|
127
|
+
return function () {
|
|
128
|
+
triggerObserver.unobserve(target);
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}, [target]);
|
|
132
|
+
return width;
|
|
133
|
+
};
|
|
134
|
+
var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
135
|
+
var _ref4;
|
|
138
136
|
var label = _ref.label,
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
selectId = _useState2[0];
|
|
167
|
-
|
|
137
|
+
_ref$name = _ref.name,
|
|
138
|
+
name = _ref$name === void 0 ? "" : _ref$name,
|
|
139
|
+
defaultValue = _ref.defaultValue,
|
|
140
|
+
value = _ref.value,
|
|
141
|
+
options = _ref.options,
|
|
142
|
+
helperText = _ref.helperText,
|
|
143
|
+
_ref$placeholder = _ref.placeholder,
|
|
144
|
+
placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
|
|
145
|
+
_ref$disabled = _ref.disabled,
|
|
146
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
147
|
+
_ref$optional = _ref.optional,
|
|
148
|
+
optional = _ref$optional === void 0 ? false : _ref$optional,
|
|
149
|
+
_ref$searchable = _ref.searchable,
|
|
150
|
+
searchable = _ref$searchable === void 0 ? false : _ref$searchable,
|
|
151
|
+
_ref$multiple = _ref.multiple,
|
|
152
|
+
multiple = _ref$multiple === void 0 ? false : _ref$multiple,
|
|
153
|
+
onChange = _ref.onChange,
|
|
154
|
+
onBlur = _ref.onBlur,
|
|
155
|
+
error = _ref.error,
|
|
156
|
+
margin = _ref.margin,
|
|
157
|
+
_ref$size = _ref.size,
|
|
158
|
+
size = _ref$size === void 0 ? "medium" : _ref$size,
|
|
159
|
+
_ref$tabIndex = _ref.tabIndex,
|
|
160
|
+
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
|
|
161
|
+
var _useState3 = (0, _react.useState)("select-".concat((0, _uuid.v4)())),
|
|
162
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
|
|
163
|
+
selectId = _useState4[0];
|
|
168
164
|
var selectLabelId = "label-".concat(selectId);
|
|
169
165
|
var errorId = "error-".concat(selectId);
|
|
170
166
|
var optionsListId = "".concat(selectId, "-listbox");
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
var
|
|
188
|
-
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
189
|
-
isOpen = _useState10[0],
|
|
190
|
-
changeIsOpen = _useState10[1];
|
|
191
|
-
|
|
192
|
-
var selectContainerRef = (0, _react.useRef)(null);
|
|
167
|
+
var _useState5 = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : ""),
|
|
168
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
169
|
+
innerValue = _useState6[0],
|
|
170
|
+
setInnerValue = _useState6[1];
|
|
171
|
+
var _useState7 = (0, _react.useState)(""),
|
|
172
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
173
|
+
searchValue = _useState8[0],
|
|
174
|
+
setSearchValue = _useState8[1];
|
|
175
|
+
var _useState9 = (0, _react.useState)(-1),
|
|
176
|
+
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
177
|
+
visualFocusIndex = _useState10[0],
|
|
178
|
+
changeVisualFocusIndex = _useState10[1];
|
|
179
|
+
var _useState11 = (0, _react.useState)(false),
|
|
180
|
+
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
181
|
+
isOpen = _useState12[0],
|
|
182
|
+
changeIsOpen = _useState12[1];
|
|
183
|
+
var selectRef = (0, _react.useRef)(null);
|
|
193
184
|
var selectSearchInputRef = (0, _react.useRef)(null);
|
|
194
|
-
var
|
|
185
|
+
var selectedOptionLabelRef = (0, _react.useRef)(null);
|
|
186
|
+
var width = useWidth(selectRef.current);
|
|
195
187
|
var colorsTheme = (0, _useTheme["default"])();
|
|
188
|
+
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
196
189
|
var optionalItem = {
|
|
197
190
|
label: placeholder,
|
|
198
191
|
value: ""
|
|
@@ -203,122 +196,90 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
203
196
|
var lastOptionIndex = (0, _react.useMemo)(function () {
|
|
204
197
|
return getLastOptionIndex(options, filteredOptions, searchable, optional, multiple);
|
|
205
198
|
}, [options, filteredOptions, searchable, optional, multiple]);
|
|
206
|
-
|
|
207
199
|
var _useMemo = (0, _react.useMemo)(function () {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
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
|
-
|
|
200
|
+
return getSelectedOption(value !== null && value !== void 0 ? value : innerValue, options, multiple, optional, optionalItem);
|
|
201
|
+
}, [value, innerValue, options, multiple, optional, optionalItem]),
|
|
202
|
+
selectedOption = _useMemo.selectedOption,
|
|
203
|
+
singleSelectionIndex = _useMemo.singleSelectionIndex;
|
|
225
204
|
var openOptions = function openOptions() {
|
|
226
|
-
if (!isOpen &&
|
|
205
|
+
if (!isOpen && canOpenOptions(options, disabled)) changeIsOpen(true);
|
|
227
206
|
};
|
|
228
|
-
|
|
229
207
|
var closeOptions = function closeOptions() {
|
|
230
208
|
if (isOpen) {
|
|
231
209
|
changeIsOpen(false);
|
|
232
210
|
changeVisualFocusIndex(-1);
|
|
233
211
|
}
|
|
234
212
|
};
|
|
235
|
-
|
|
236
213
|
var handleSelectChangeValue = function handleSelectChangeValue(newOption) {
|
|
214
|
+
var newValue;
|
|
237
215
|
if (multiple) {
|
|
238
|
-
var
|
|
239
|
-
if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value))
|
|
216
|
+
var _ref2, _ref3;
|
|
217
|
+
if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) newValue = ((_ref2 = value && Array.isArray(value) && value) !== null && _ref2 !== void 0 ? _ref2 : innerValue && Array.isArray(innerValue) && innerValue).filter(function (optionVal) {
|
|
240
218
|
return optionVal !== newOption.value;
|
|
241
|
-
});else
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
}
|
|
250
|
-
value !== null && value !== void 0 ? value : setInnerValue(newOption.value);
|
|
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
|
-
}
|
|
219
|
+
});else newValue = [].concat((0, _toConsumableArray2["default"])((_ref3 = value && Array.isArray(value) && value) !== null && _ref3 !== void 0 ? _ref3 : innerValue && Array.isArray(innerValue) && innerValue), [newOption.value]);
|
|
220
|
+
} else newValue = newOption.value;
|
|
221
|
+
value !== null && value !== void 0 ? value : setInnerValue(newValue);
|
|
222
|
+
notOptionalCheck(newValue, multiple, optional) ? onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
223
|
+
value: newValue,
|
|
224
|
+
error: translatedLabels.formFields.requiredValueErrorMessage
|
|
225
|
+
}) : onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
226
|
+
value: newValue
|
|
227
|
+
});
|
|
258
228
|
};
|
|
259
|
-
|
|
260
229
|
var handleSelectOnClick = function handleSelectOnClick() {
|
|
261
230
|
searchable && selectSearchInputRef.current.focus();
|
|
262
|
-
|
|
263
231
|
if (isOpen) {
|
|
264
232
|
closeOptions();
|
|
265
233
|
setSearchValue("");
|
|
266
234
|
} else openOptions();
|
|
267
235
|
};
|
|
268
|
-
|
|
269
236
|
var handleSelectOnFocus = function handleSelectOnFocus(event) {
|
|
270
237
|
if (!event.currentTarget.contains(event.relatedTarget)) searchable && selectSearchInputRef.current.focus();
|
|
271
238
|
};
|
|
272
|
-
|
|
273
239
|
var handleSelectOnBlur = function handleSelectOnBlur(event) {
|
|
274
|
-
// focus leaves container (outside, not to
|
|
240
|
+
// focus leaves container (outside, not to a child)
|
|
275
241
|
if (!event.currentTarget.contains(event.relatedTarget)) {
|
|
276
242
|
closeOptions();
|
|
277
243
|
setSearchValue("");
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
244
|
+
var currentValue = value !== null && value !== void 0 ? value : innerValue;
|
|
245
|
+
notOptionalCheck(currentValue, multiple, optional) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
246
|
+
value: currentValue,
|
|
247
|
+
error: translatedLabels.formFields.requiredValueErrorMessage
|
|
248
|
+
}) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
249
|
+
value: currentValue
|
|
283
250
|
});
|
|
284
251
|
}
|
|
285
252
|
};
|
|
286
|
-
|
|
287
253
|
var handleSelectOnKeyDown = function handleSelectOnKeyDown(event) {
|
|
288
|
-
switch (event.
|
|
289
|
-
case
|
|
290
|
-
|
|
254
|
+
switch (event.key) {
|
|
255
|
+
case "Down":
|
|
256
|
+
case "ArrowDown":
|
|
291
257
|
event.preventDefault();
|
|
292
258
|
singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
|
|
293
259
|
if (visualFocusIndex < lastOptionIndex) return visualFocusIndex + 1;else if (visualFocusIndex === lastOptionIndex) return 0;
|
|
294
260
|
});
|
|
295
261
|
openOptions();
|
|
296
262
|
break;
|
|
297
|
-
|
|
298
|
-
case
|
|
299
|
-
// Arrow Up
|
|
263
|
+
case "Up":
|
|
264
|
+
case "ArrowUp":
|
|
300
265
|
event.preventDefault();
|
|
301
266
|
singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
|
|
302
267
|
return visualFocusIndex === 0 || visualFocusIndex === -1 ? lastOptionIndex : visualFocusIndex - 1;
|
|
303
268
|
});
|
|
304
269
|
openOptions();
|
|
305
270
|
break;
|
|
306
|
-
|
|
307
|
-
case
|
|
308
|
-
// Esc
|
|
271
|
+
case "Esc":
|
|
272
|
+
case "Escape":
|
|
309
273
|
event.preventDefault();
|
|
310
274
|
closeOptions();
|
|
311
275
|
setSearchValue("");
|
|
312
276
|
break;
|
|
313
|
-
|
|
314
|
-
case 13:
|
|
315
|
-
// Enter
|
|
277
|
+
case "Enter":
|
|
316
278
|
if (isOpen && visualFocusIndex >= 0) {
|
|
317
279
|
var accLength = optional && !multiple ? 1 : 0;
|
|
318
|
-
|
|
319
280
|
if (searchable) {
|
|
320
281
|
if (filteredOptions.length > 0) {
|
|
321
|
-
if (optional && !multiple && visualFocusIndex === 0 &&
|
|
282
|
+
if (optional && !multiple && visualFocusIndex === 0 && groupsHaveOptions(filteredOptions)) handleSelectChangeValue(optionalItem);else isArrayOfOptionGroups(filteredOptions) ? groupsHaveOptions(filteredOptions) && filteredOptions.some(function (groupOption) {
|
|
322
283
|
var groupLength = accLength + groupOption.options.length;
|
|
323
284
|
groupLength > visualFocusIndex && handleSelectChangeValue(groupOption.options[visualFocusIndex - accLength]);
|
|
324
285
|
accLength = groupLength;
|
|
@@ -326,69 +287,48 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
326
287
|
}) : handleSelectChangeValue(filteredOptions[visualFocusIndex - accLength]);
|
|
327
288
|
}
|
|
328
289
|
} else {
|
|
329
|
-
if (optional && !multiple && visualFocusIndex === 0) handleSelectChangeValue(optionalItem);else options
|
|
290
|
+
if (optional && !multiple && visualFocusIndex === 0) handleSelectChangeValue(optionalItem);else isArrayOfOptionGroups(options) ? options.some(function (groupOption) {
|
|
330
291
|
var groupLength = accLength + groupOption.options.length;
|
|
331
292
|
groupLength > visualFocusIndex && handleSelectChangeValue(groupOption.options[visualFocusIndex - accLength]);
|
|
332
293
|
accLength = groupLength;
|
|
333
294
|
return groupLength > visualFocusIndex;
|
|
334
295
|
}) : handleSelectChangeValue(options[visualFocusIndex - accLength]);
|
|
335
296
|
}
|
|
336
|
-
|
|
337
297
|
!multiple && closeOptions();
|
|
338
298
|
setSearchValue("");
|
|
339
299
|
}
|
|
340
|
-
|
|
341
300
|
break;
|
|
342
301
|
}
|
|
343
302
|
};
|
|
344
|
-
|
|
345
303
|
var handleSearchIOnChange = function handleSearchIOnChange(event) {
|
|
346
304
|
setSearchValue(event.target.value);
|
|
347
305
|
changeVisualFocusIndex(-1);
|
|
348
306
|
openOptions();
|
|
349
307
|
};
|
|
350
|
-
|
|
351
308
|
var handleClearOptionsActionOnClick = function handleClearOptionsActionOnClick(event) {
|
|
352
309
|
event.stopPropagation();
|
|
353
310
|
value !== null && value !== void 0 ? value : setInnerValue([]);
|
|
354
311
|
!optional ? onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
355
312
|
value: [],
|
|
356
|
-
error:
|
|
313
|
+
error: translatedLabels.formFields.requiredValueErrorMessage
|
|
357
314
|
}) : onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
358
315
|
value: []
|
|
359
316
|
});
|
|
360
317
|
};
|
|
361
|
-
|
|
362
318
|
var handleClearSearchActionOnClick = function handleClearSearchActionOnClick(event) {
|
|
363
319
|
event.stopPropagation();
|
|
364
320
|
setSearchValue("");
|
|
365
321
|
};
|
|
366
|
-
|
|
367
322
|
var handleOptionOnClick = (0, _react.useCallback)(function (option) {
|
|
368
323
|
handleSelectChangeValue(option);
|
|
369
324
|
!multiple && closeOptions();
|
|
370
325
|
setSearchValue("");
|
|
371
326
|
}, [handleSelectChangeValue, closeOptions, multiple]);
|
|
372
|
-
(0, _react.
|
|
373
|
-
if (
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
var listEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : selectOptionsListRef.current;
|
|
377
|
-
var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
|
|
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
|
-
});
|
|
327
|
+
(0, _react.useEffect)(function () {
|
|
328
|
+
if ((selectedOptionLabelRef === null || selectedOptionLabelRef === void 0 ? void 0 : selectedOptionLabelRef.current) != null) {
|
|
329
|
+
if ((selectedOptionLabelRef === null || selectedOptionLabelRef === void 0 ? void 0 : selectedOptionLabelRef.current.scrollWidth) > (selectedOptionLabelRef === null || selectedOptionLabelRef === void 0 ? void 0 : selectedOptionLabelRef.current.clientWidth)) selectedOptionLabelRef.current.title = getSelectedOptionLabel(placeholder, selectedOption);else selectedOptionLabelRef.current.title = "";
|
|
381
330
|
}
|
|
382
|
-
}, [
|
|
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]);
|
|
331
|
+
}, [placeholder, selectedOption]);
|
|
392
332
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
393
333
|
theme: colorsTheme.select
|
|
394
334
|
}, /*#__PURE__*/_react["default"].createElement(SelectContainer, {
|
|
@@ -399,12 +339,17 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
399
339
|
id: selectLabelId,
|
|
400
340
|
disabled: disabled,
|
|
401
341
|
onClick: function onClick() {
|
|
402
|
-
|
|
342
|
+
selectRef.current.focus();
|
|
403
343
|
},
|
|
404
344
|
helperText: helperText
|
|
405
|
-
}, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null,
|
|
345
|
+
}, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
|
|
406
346
|
disabled: disabled
|
|
407
|
-
}, helperText), /*#__PURE__*/_react["default"].createElement(
|
|
347
|
+
}, helperText), /*#__PURE__*/_react["default"].createElement(Popover.Root, {
|
|
348
|
+
open: isOpen
|
|
349
|
+
}, /*#__PURE__*/_react["default"].createElement(Popover.Trigger, {
|
|
350
|
+
asChild: true,
|
|
351
|
+
type: undefined
|
|
352
|
+
}, /*#__PURE__*/_react["default"].createElement(Select, {
|
|
408
353
|
id: selectId,
|
|
409
354
|
disabled: disabled,
|
|
410
355
|
error: error,
|
|
@@ -412,19 +357,19 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
412
357
|
onClick: handleSelectOnClick,
|
|
413
358
|
onFocus: handleSelectOnFocus,
|
|
414
359
|
onKeyDown: handleSelectOnKeyDown,
|
|
415
|
-
ref:
|
|
416
|
-
tabIndex: tabIndex,
|
|
360
|
+
ref: selectRef,
|
|
361
|
+
tabIndex: disabled ? -1 : tabIndex,
|
|
417
362
|
role: "combobox",
|
|
418
363
|
"aria-controls": optionsListId,
|
|
419
364
|
"aria-disabled": disabled,
|
|
420
365
|
"aria-expanded": isOpen,
|
|
421
366
|
"aria-haspopup": "listbox",
|
|
422
|
-
"aria-labelledby": selectLabelId,
|
|
367
|
+
"aria-labelledby": label ? selectLabelId : undefined,
|
|
423
368
|
"aria-activedescendant": visualFocusIndex >= 0 ? "option-".concat(visualFocusIndex) : undefined,
|
|
424
|
-
"aria-invalid": error ?
|
|
369
|
+
"aria-invalid": error ? true : false,
|
|
425
370
|
"aria-errormessage": error ? errorId : undefined,
|
|
426
371
|
"aria-required": !disabled && !optional
|
|
427
|
-
}, multiple && selectedOption.length > 0 && /*#__PURE__*/_react["default"].createElement(SelectionIndicator, null, /*#__PURE__*/_react["default"].createElement(SelectionNumber, {
|
|
372
|
+
}, multiple && Array.isArray(selectedOption) && selectedOption.length > 0 && /*#__PURE__*/_react["default"].createElement(SelectionIndicator, null, /*#__PURE__*/_react["default"].createElement(SelectionNumber, {
|
|
428
373
|
disabled: disabled
|
|
429
374
|
}, selectedOption.length), /*#__PURE__*/_react["default"].createElement(ClearOptionsAction, {
|
|
430
375
|
disabled: disabled,
|
|
@@ -434,11 +379,12 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
434
379
|
},
|
|
435
380
|
onClick: handleClearOptionsActionOnClick,
|
|
436
381
|
tabIndex: -1,
|
|
437
|
-
title:
|
|
438
|
-
"aria-label":
|
|
382
|
+
title: translatedLabels.select.actionClearSelectionTitle,
|
|
383
|
+
"aria-label": translatedLabels.select.actionClearSelectionTitle
|
|
439
384
|
}, _Icons["default"].clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
|
|
440
385
|
name: name,
|
|
441
|
-
|
|
386
|
+
disabled: disabled,
|
|
387
|
+
value: multiple ? ((_ref4 = value && Array.isArray(value) && value) !== null && _ref4 !== void 0 ? _ref4 : innerValue && Array.isArray(innerValue) && innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
|
|
442
388
|
readOnly: true,
|
|
443
389
|
"aria-hidden": "true"
|
|
444
390
|
}), searchable && /*#__PURE__*/_react["default"].createElement(SearchInput, {
|
|
@@ -449,26 +395,36 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
449
395
|
autoComplete: "nope",
|
|
450
396
|
autoCorrect: "nope",
|
|
451
397
|
size: 1
|
|
452
|
-
}), (!searchable || searchValue === "") &&
|
|
453
|
-
disabled: disabled,
|
|
454
|
-
atBackground: (value !== null && value !== void 0 ? value : innerValue).length === 0 || searchable && isOpen
|
|
455
|
-
}, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, null, selectedOption.map(function (option) {
|
|
456
|
-
return option.label;
|
|
457
|
-
}).join(", ")), selectedOption.length === 0 && placeholder) : /*#__PURE__*/_react["default"].createElement(SelectedOption, {
|
|
398
|
+
}), (!searchable || searchValue === "") && /*#__PURE__*/_react["default"].createElement(SelectedOption, {
|
|
458
399
|
disabled: disabled,
|
|
459
|
-
atBackground: !(value !== null && value !== void 0 ? value : innerValue) || searchable && isOpen
|
|
460
|
-
}, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel,
|
|
400
|
+
atBackground: (multiple ? (value !== null && value !== void 0 ? value : innerValue).length === 0 : !(value !== null && value !== void 0 ? value : innerValue)) || searchable && isOpen
|
|
401
|
+
}, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, {
|
|
402
|
+
ref: selectedOptionLabelRef
|
|
403
|
+
}, getSelectedOptionLabel(placeholder, selectedOption)))), !disabled && error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, null, _Icons["default"].error), searchable && searchValue.length > 0 && /*#__PURE__*/_react["default"].createElement(ClearSearchAction, {
|
|
461
404
|
onMouseDown: function onMouseDown(event) {
|
|
462
405
|
// Avoid input to lose focus
|
|
463
406
|
event.preventDefault();
|
|
464
407
|
},
|
|
465
408
|
onClick: handleClearSearchActionOnClick,
|
|
466
409
|
tabIndex: -1,
|
|
467
|
-
title:
|
|
468
|
-
"aria-label":
|
|
410
|
+
title: translatedLabels.select.actionClearSearchTitle,
|
|
411
|
+
"aria-label": translatedLabels.select.actionClearSearchTitle
|
|
469
412
|
}, _Icons["default"].clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
|
|
470
413
|
disabled: disabled
|
|
471
|
-
}, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown),
|
|
414
|
+
}, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown))), /*#__PURE__*/_react["default"].createElement(Popover.Portal, null, /*#__PURE__*/_react["default"].createElement(Popover.Content, {
|
|
415
|
+
sideOffset: 4,
|
|
416
|
+
style: {
|
|
417
|
+
zIndex: "2147483647"
|
|
418
|
+
},
|
|
419
|
+
onOpenAutoFocus: function onOpenAutoFocus(event) {
|
|
420
|
+
// Avoid select to lose focus when the list is opened
|
|
421
|
+
event.preventDefault();
|
|
422
|
+
},
|
|
423
|
+
onCloseAutoFocus: function onCloseAutoFocus(event) {
|
|
424
|
+
// Avoid select to lose focus when the list is closed
|
|
425
|
+
event.preventDefault();
|
|
426
|
+
}
|
|
427
|
+
}, /*#__PURE__*/_react["default"].createElement(_Listbox["default"], {
|
|
472
428
|
id: optionsListId,
|
|
473
429
|
currentValue: value !== null && value !== void 0 ? value : innerValue,
|
|
474
430
|
options: searchable ? filteredOptions : options,
|
|
@@ -479,24 +435,23 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
479
435
|
optionalItem: optionalItem,
|
|
480
436
|
searchable: searchable,
|
|
481
437
|
handleOptionOnClick: handleOptionOnClick,
|
|
482
|
-
|
|
483
|
-
|
|
438
|
+
styles: {
|
|
439
|
+
width: width
|
|
440
|
+
}
|
|
441
|
+
})))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
|
|
484
442
|
id: errorId,
|
|
485
443
|
"aria-live": error ? "assertive" : "off"
|
|
486
444
|
}, error)));
|
|
487
445
|
});
|
|
488
|
-
|
|
489
446
|
var sizes = {
|
|
490
447
|
small: "240px",
|
|
491
448
|
medium: "360px",
|
|
492
449
|
large: "480px",
|
|
493
450
|
fillParent: "100%"
|
|
494
451
|
};
|
|
495
|
-
|
|
496
452
|
var calculateWidth = function calculateWidth(margin, size) {
|
|
497
453
|
return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
|
|
498
454
|
};
|
|
499
|
-
|
|
500
455
|
var SelectContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"])), function (props) {
|
|
501
456
|
return calculateWidth(props.margin, props.size);
|
|
502
457
|
}, function (props) {
|
|
@@ -510,7 +465,6 @@ var SelectContainer = _styledComponents["default"].div(_templateObject || (_temp
|
|
|
510
465
|
}, function (props) {
|
|
511
466
|
return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
|
|
512
467
|
});
|
|
513
|
-
|
|
514
468
|
var Label = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n cursor: default;\n ", "\n"])), function (props) {
|
|
515
469
|
return props.disabled ? props.theme.disabledColor : props.theme.labelFontColor;
|
|
516
470
|
}, function (props) {
|
|
@@ -526,11 +480,9 @@ var Label = _styledComponents["default"].span(_templateObject2 || (_templateObje
|
|
|
526
480
|
}, function (props) {
|
|
527
481
|
return !props.helperText && "margin-bottom: 0.25rem";
|
|
528
482
|
});
|
|
529
|
-
|
|
530
483
|
var OptionalLabel = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: ", ";\n"])), function (props) {
|
|
531
484
|
return props.theme.optionalLabelFontWeight;
|
|
532
485
|
});
|
|
533
|
-
|
|
534
486
|
var HelperText = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n margin-bottom: 0.25rem;\n"])), function (props) {
|
|
535
487
|
return props.disabled ? props.theme.disabledColor : props.theme.helperTextFontColor;
|
|
536
488
|
}, function (props) {
|
|
@@ -544,7 +496,6 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
|
|
|
544
496
|
}, function (props) {
|
|
545
497
|
return props.theme.helperTextLineHeight;
|
|
546
498
|
});
|
|
547
|
-
|
|
548
499
|
var Select = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n position: relative;\n align-items: center;\n height: calc(2.5rem - 2px);\n padding: 0 0.5rem;\n outline: none;\n ", ";\n box-shadow: 0 0 0 2px transparent;\n border-radius: 4px;\n border: 1px solid\n ", ";\n ", "\n ", ";\n\n ", ";\n"])), function (props) {
|
|
549
500
|
return props.disabled && "background-color: ".concat(props.theme.disabledInputBackgroundColor);
|
|
550
501
|
}, function (props) {
|
|
@@ -556,11 +507,9 @@ var Select = _styledComponents["default"].div(_templateObject5 || (_templateObje
|
|
|
556
507
|
}, function (props) {
|
|
557
508
|
return !props.disabled && "\n &:hover {\n border-color: ".concat(props.error ? "transparent" : props.theme.hoverInputBorderColor, ";\n ").concat(props.error && "box-shadow: 0 0 0 2px ".concat(props.theme.hoverInputErrorBorderColor, ";"), "\n }\n &:focus-within {\n border-color: transparent;\n box-shadow: 0 0 0 2px ").concat(props.theme.focusInputBorderColor, ";\n }\n ");
|
|
558
509
|
});
|
|
559
|
-
|
|
560
510
|
var SelectionIndicator = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n border: 1px solid ", ";\n border-radius: 2px;\n max-height: 22px;\n width: 46px;\n"])), function (props) {
|
|
561
511
|
return props.theme.selectionIndicatorBorderColor;
|
|
562
512
|
});
|
|
563
|
-
|
|
564
513
|
var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n user-select: none;\n ", ";\n border-right: 1px solid ", ";\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n ", "\n"])), function (props) {
|
|
565
514
|
return !props.disabled && "background-color: ".concat(props.theme.selectionIndicatorBackgroundColor);
|
|
566
515
|
}, function (props) {
|
|
@@ -578,10 +527,7 @@ var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_te
|
|
|
578
527
|
}, function (props) {
|
|
579
528
|
return props.disabled ? "cursor: not-allowed;" : "cursor: default;";
|
|
580
529
|
});
|
|
581
|
-
|
|
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 font-size: 1rem;\n font-family: ", ";\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) {
|
|
583
|
-
return props.theme.fontFamily;
|
|
584
|
-
}, function (props) {
|
|
530
|
+
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
531
|
return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
|
|
586
532
|
}, function (props) {
|
|
587
533
|
return props.disabled ? "transparent" : props.theme.enabledSelectionIndicatorActionBackgroundColor;
|
|
@@ -590,9 +536,7 @@ var ClearOptionsAction = _styledComponents["default"].button(_templateObject8 ||
|
|
|
590
536
|
}, function (props) {
|
|
591
537
|
return !props.disabled && "\n &:hover {\n background-color: ".concat(props.theme.hoverSelectionIndicatorActionBackgroundColor, ";\n color: ").concat(props.theme.hoverSelectionIndicatorActionIconColor, ";\n }\n &:active {\n background-color: ").concat(props.theme.activeSelectionIndicatorActionBackgroundColor, ";\n color: ").concat(props.theme.activeSelectionIndicatorActionIconColor, ";\n }\n ");
|
|
592
538
|
});
|
|
593
|
-
|
|
594
539
|
var SearchableValueContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n display: grid;\n width: 100%;\n"])));
|
|
595
|
-
|
|
596
540
|
var SelectedOption = _styledComponents["default"].span(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n grid-area: 1 / 1 / 1 / 1;\n display: inline-flex;\n align-items: center;\n height: calc(2.5rem - 2px);\n padding: 0 0.5rem;\n user-select: none;\n overflow: hidden;\n\n color: ", ";\n\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n"])), function (props) {
|
|
597
541
|
if (props.disabled) return props.theme.disabledColor;else if (props.atBackground) return props.theme.placeholderFontColor;else return props.theme.valueFontColor;
|
|
598
542
|
}, function (props) {
|
|
@@ -604,11 +548,8 @@ var SelectedOption = _styledComponents["default"].span(_templateObject10 || (_te
|
|
|
604
548
|
}, function (props) {
|
|
605
549
|
return props.theme.valueFontWeight;
|
|
606
550
|
});
|
|
607
|
-
|
|
608
551
|
var SelectedOptionLabel = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
|
|
609
|
-
|
|
610
552
|
var ValueInput = _styledComponents["default"].input(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
|
|
611
|
-
|
|
612
553
|
var SearchInput = _styledComponents["default"].input(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n grid-area: 1 / 1 / 1 / 1;\n height: calc(2.5rem - 2px);\n background: none;\n border: none;\n outline: none;\n padding: 0 0.5rem;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: 1.5em;\n"])), function (props) {
|
|
613
554
|
return props.disabled ? props.theme.disabledColor : props.theme.valueFontColor;
|
|
614
555
|
}, function (props) {
|
|
@@ -620,21 +561,17 @@ var SearchInput = _styledComponents["default"].input(_templateObject13 || (_temp
|
|
|
620
561
|
}, function (props) {
|
|
621
562
|
return props.theme.valueFontWeight;
|
|
622
563
|
});
|
|
623
|
-
|
|
624
564
|
var ErrorIcon = _styledComponents["default"].span(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n padding: 3px;\n height: 18px;\n width: 18px;\n margin-left: 0.25rem;\n pointer-events: none;\n color: ", ";\n\n svg {\n line-height: 18px;\n font-size: 1.25rem;\n }\n"])), function (props) {
|
|
625
565
|
return props.theme.errorIconColor;
|
|
626
566
|
});
|
|
627
|
-
|
|
628
567
|
var Error = _styledComponents["default"].span(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 1.5em;\n color: ", ";\n font-family: ", ";\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 1.5em;\n margin-top: 0.25rem;\n"])), function (props) {
|
|
629
568
|
return props.theme.errorMessageColor;
|
|
630
569
|
}, function (props) {
|
|
631
570
|
return props.theme.fontFamily;
|
|
632
571
|
});
|
|
633
|
-
|
|
634
572
|
var CollapseIndicator = _styledComponents["default"].span(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 16px;\n width: 16px;\n padding: 4px;\n margin-left: 0.25rem;\n color: ", ";\n"])), function (props) {
|
|
635
573
|
return props.disabled ? props.theme.disabledColor : props.theme.collapseIndicatorColor;
|
|
636
574
|
});
|
|
637
|
-
|
|
638
575
|
var ClearSearchAction = _styledComponents["default"].button(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n font-size: 1rem;\n font-family: ", ";\n border: 1px solid transparent;\n border-radius: 2px;\n padding: 3px;\n margin-left: 0.25rem;\n background-color: ", ";\n color: ", ";\n\n cursor: pointer;\n &:hover {\n background-color: ", ";\n color: ", ";\n }\n &:active {\n background-color: ", ";\n color: ", ";\n }\n svg {\n line-height: 18px;\n }\n"])), function (props) {
|
|
639
576
|
return props.theme.fontFamily;
|
|
640
577
|
}, function (props) {
|
|
@@ -650,6 +587,4 @@ var ClearSearchAction = _styledComponents["default"].button(_templateObject17 ||
|
|
|
650
587
|
}, function (props) {
|
|
651
588
|
return props.theme.activeActionIconColor;
|
|
652
589
|
});
|
|
653
|
-
|
|
654
|
-
var _default = DxcSelect;
|
|
655
|
-
exports["default"] = _default;
|
|
590
|
+
var _default = exports["default"] = DxcSelect;
|