@equinor/eds-core-react 0.26.0 → 0.28.0-dev12052022
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/dist/eds-core-react.cjs.js +1603 -2493
- package/dist/esm/components/Accordion/Accordion.js +8 -11
- package/dist/esm/components/Accordion/Accordion.tokens.js +14 -14
- package/dist/esm/components/Accordion/AccordionHeader.js +20 -32
- package/dist/esm/components/Accordion/AccordionHeaderActions.js +5 -7
- package/dist/esm/components/Accordion/AccordionHeaderTitle.js +6 -8
- package/dist/esm/components/Accordion/AccordionItem.js +12 -15
- package/dist/esm/components/Accordion/AccordionPanel.js +8 -9
- package/dist/esm/components/Autocomplete/Autocomplete.js +141 -159
- package/dist/esm/components/Autocomplete/Autocomplete.tokens.js +31 -15
- package/dist/esm/components/Autocomplete/Option.js +21 -16
- package/dist/esm/components/Avatar/Avatar.js +7 -8
- package/dist/esm/components/Banner/Banner.js +6 -10
- package/dist/esm/components/Banner/Banner.tokens.js +12 -12
- package/dist/esm/components/Banner/BannerActions.js +4 -6
- package/dist/esm/components/Banner/BannerIcon.js +5 -8
- package/dist/esm/components/Banner/BannerMessage.js +1 -3
- package/dist/esm/components/Breadcrumbs/Breadcrumb.js +5 -9
- package/dist/esm/components/Breadcrumbs/Breadcrumbs.js +11 -16
- package/dist/esm/components/Breadcrumbs/Breadcrumbs.tokens.js +3 -3
- package/dist/esm/components/Button/Button.js +16 -30
- package/dist/esm/components/Button/ButtonGroup/ButtonGroup.js +2 -4
- package/dist/esm/components/Button/ToggleButton/ToggleButton.js +7 -14
- package/dist/esm/components/Button/tokens/button.js +14 -14
- package/dist/esm/components/Button/tokens/contained.js +9 -9
- package/dist/esm/components/Button/tokens/contained_icon.js +3 -3
- package/dist/esm/components/Button/tokens/ghost.js +9 -9
- package/dist/esm/components/Button/tokens/icon.js +13 -13
- package/dist/esm/components/Button/tokens/outlined.js +10 -10
- package/dist/esm/components/Card/Card.js +5 -8
- package/dist/esm/components/Card/Card.tokens.js +6 -6
- package/dist/esm/components/Card/CardActions.js +5 -8
- package/dist/esm/components/Card/CardContent.js +1 -2
- package/dist/esm/components/Card/CardHeader.js +1 -3
- package/dist/esm/components/Card/CardHeaderTitle.js +1 -3
- package/dist/esm/components/Card/CardMedia.js +4 -6
- package/dist/esm/components/Checkbox/Checkbox.js +6 -7
- package/dist/esm/components/Checkbox/Checkbox.tokens.js +12 -12
- package/dist/esm/components/Checkbox/Input.js +10 -14
- package/dist/esm/components/Chip/Chip.js +20 -31
- package/dist/esm/components/Chip/Chip.tokens.js +20 -20
- package/dist/esm/components/Chip/Icon.js +1 -3
- package/dist/esm/components/Dialog/Dialog.js +11 -16
- package/dist/esm/components/Dialog/Dialog.tokens.js +5 -5
- package/dist/esm/components/Dialog/DialogActions.js +5 -4
- package/dist/esm/components/Dialog/DialogContent.js +4 -6
- package/dist/esm/components/Dialog/DialogHeader.js +1 -3
- package/dist/esm/components/Dialog/DialogTitle.js +2 -3
- package/dist/esm/components/Divider/Divider.js +9 -12
- package/dist/esm/components/Divider/Divider.tokens.js +6 -6
- package/dist/esm/components/EdsProvider/eds.context.js +6 -9
- package/dist/esm/components/Icon/Icon.js +19 -29
- package/dist/esm/components/Icon/library.js +0 -1
- package/dist/esm/components/Input/Input.js +26 -40
- package/dist/esm/components/Input/Input.tokens.js +18 -18
- package/dist/esm/components/InputWrapper/HelperText/HelperText.js +4 -6
- package/dist/esm/components/InputWrapper/HelperText/HelperText.token.js +2 -2
- package/dist/esm/components/InputWrapper/InputWrapper.js +9 -13
- package/dist/esm/components/InputWrapper/InputWrapper.tokens.js +18 -18
- package/dist/esm/components/Label/Label.js +8 -8
- package/dist/esm/components/Label/Label.tokens.js +2 -2
- package/dist/esm/components/List/List.js +4 -5
- package/dist/esm/components/List/ListItem.js +2 -3
- package/dist/esm/components/Menu/Menu.context.js +5 -12
- package/dist/esm/components/Menu/Menu.js +38 -50
- package/dist/esm/components/Menu/Menu.tokens.js +14 -14
- package/dist/esm/components/Menu/MenuItem.js +15 -21
- package/dist/esm/components/Menu/MenuList.js +9 -18
- package/dist/esm/components/Menu/MenuSection.js +5 -3
- package/dist/esm/components/Pagination/Pagination.js +14 -24
- package/dist/esm/components/Pagination/Pagination.tokens.js +3 -3
- package/dist/esm/components/Pagination/PaginationItem.js +3 -5
- package/dist/esm/components/Pagination/paginationControl.js +2 -10
- package/dist/esm/components/Paper/Paper.js +1 -3
- package/dist/esm/components/Paper/Paper.tokens.js +1 -1
- package/dist/esm/components/Popover/Popover.js +32 -48
- package/dist/esm/components/Popover/Popover.tokens.js +8 -8
- package/dist/esm/components/Popover/PopoverActions.js +1 -3
- package/dist/esm/components/Popover/PopoverContent.js +4 -4
- package/dist/esm/components/Popover/PopoverHeader.js +1 -3
- package/dist/esm/components/Popover/PopoverTitle.js +1 -3
- package/dist/esm/components/Progress/Circular/CircularProgress.js +12 -26
- package/dist/esm/components/Progress/Circular/CircularProgress.tokens.js +5 -5
- package/dist/esm/components/Progress/Dots/DotProgress.js +4 -9
- package/dist/esm/components/Progress/Dots/DotProgress.tokens.js +4 -4
- package/dist/esm/components/Progress/Linear/LinearProgress.js +8 -16
- package/dist/esm/components/Progress/Linear/LinearProgress.tokens.js +2 -2
- package/dist/esm/components/Progress/Star/StarProgress.js +8 -12
- package/dist/esm/components/Radio/Radio.js +10 -12
- package/dist/esm/components/Radio/Radio.tokens.js +12 -12
- package/dist/esm/components/Scrim/Scrim.js +5 -9
- package/dist/esm/components/Search/Search.js +6 -13
- package/dist/esm/components/Select/NativeSelect/NativeSelect.js +12 -16
- package/dist/esm/components/Select/NativeSelect/NativeSelect.tokens.js +5 -5
- package/dist/esm/components/SideBar/SideBar.context.js +4 -8
- package/dist/esm/components/SideBar/SideBar.js +17 -22
- package/dist/esm/components/SideBar/SideBar.tokens.js +17 -17
- package/dist/esm/components/SideBar/SideBarButton/index.js +12 -17
- package/dist/esm/components/SideBar/SideBarContent.js +1 -3
- package/dist/esm/components/SideBar/SideBarFooter.js +1 -3
- package/dist/esm/components/SideBar/SideBarToggle.js +7 -10
- package/dist/esm/components/SideBar/SidebarLink/index.js +24 -28
- package/dist/esm/components/SideSheet/SideSheet.js +14 -15
- package/dist/esm/components/SideSheet/SideSheet.tokens.js +6 -6
- package/dist/esm/components/Slider/MinMax.js +2 -2
- package/dist/esm/components/Slider/Output.js +4 -4
- package/dist/esm/components/Slider/Slider.js +27 -48
- package/dist/esm/components/Slider/Slider.tokens.js +14 -14
- package/dist/esm/components/Slider/SliderInput.js +10 -11
- package/dist/esm/components/Snackbar/Snackbar.js +13 -19
- package/dist/esm/components/Snackbar/Snackbar.tokens.js +9 -9
- package/dist/esm/components/Snackbar/SnackbarAction.js +1 -3
- package/dist/esm/components/Switch/Switch.js +8 -10
- package/dist/esm/components/Switch/Switch.styles.js +5 -6
- package/dist/esm/components/Switch/Switch.tokens.js +18 -18
- package/dist/esm/components/Switch/SwitchDefault.js +10 -11
- package/dist/esm/components/Switch/SwitchSmall.js +11 -12
- package/dist/esm/components/Table/Body.js +1 -2
- package/dist/esm/components/Table/Caption.js +1 -1
- package/dist/esm/components/Table/Cell.js +1 -4
- package/dist/esm/components/Table/DataCell/DataCell.js +9 -12
- package/dist/esm/components/Table/DataCell/DataCell.tokens.js +17 -18
- package/dist/esm/components/Table/Head/Head.js +2 -3
- package/dist/esm/components/Table/Head/Head.tokens.js +2 -2
- package/dist/esm/components/Table/HeaderCell/HeaderCell.js +7 -12
- package/dist/esm/components/Table/HeaderCell/HeaderCell.tokens.js +14 -14
- package/dist/esm/components/Table/Row/Row.js +0 -2
- package/dist/esm/components/Table/Row/Row.tokens.js +2 -2
- package/dist/esm/components/Table/Table.js +4 -3
- package/dist/esm/components/TableOfContents/LinkItem.js +1 -2
- package/dist/esm/components/TableOfContents/TableOfContents.js +7 -9
- package/dist/esm/components/TableOfContents/TableOfContents.tokens.js +12 -12
- package/dist/esm/components/Tabs/Tab.js +6 -7
- package/dist/esm/components/Tabs/TabList.js +13 -22
- package/dist/esm/components/Tabs/TabPanel.js +0 -1
- package/dist/esm/components/Tabs/TabPanels.js +3 -5
- package/dist/esm/components/Tabs/Tabs.js +24 -37
- package/dist/esm/components/Tabs/Tabs.tokens.js +13 -13
- package/dist/esm/components/TextField/TextField.js +17 -23
- package/dist/esm/components/Textarea/Textarea.js +11 -19
- package/dist/esm/components/Tooltip/Tooltip.js +37 -50
- package/dist/esm/components/Tooltip/Tooltip.tokens.js +7 -7
- package/dist/esm/components/TopBar/Actions.js +4 -3
- package/dist/esm/components/TopBar/CustomContent.js +4 -3
- package/dist/esm/components/TopBar/Header.js +4 -3
- package/dist/esm/components/TopBar/TopBar.js +10 -12
- package/dist/esm/components/TopBar/TopBar.tokens.js +2 -2
- package/dist/esm/components/Typography/Typography.js +15 -23
- package/dist/esm/components/Typography/Typography.tokens.js +10 -12
- package/dist/esm/index.js +0 -2
- package/dist/esm/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_curry2.js +0 -2
- package/dist/esm/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_curry3.js +0 -3
- package/dist/esm/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeDeepRight.js +2 -2
- package/dist/esm/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeDeepWithKey.js +2 -1
- package/dist/esm/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeWithKey.js +2 -4
- package/dist/types/components/Select/index.d.ts +0 -2
- package/dist/types/components/SideBar/SideBarButton/index.d.ts +6 -3
- package/dist/types/components/SideBar/SideBarToggle.d.ts +2 -2
- package/dist/types/components/Slider/Slider.d.ts +4 -4
- package/package.json +6 -5
- package/dist/esm/components/Select/MultiSelect/MultiSelect.js +0 -226
- package/dist/esm/components/Select/Select.tokens.js +0 -92
- package/dist/esm/components/Select/SingleSelect/SingleSelect.js +0 -160
- package/dist/esm/components/Select/commonStyles.js +0 -43
- package/dist/types/components/Select/MultiSelect/MultiSelect.d.ts +0 -49
- package/dist/types/components/Select/MultiSelect/index.d.ts +0 -1
- package/dist/types/components/Select/Select.tokens.d.ts +0 -3
- package/dist/types/components/Select/SingleSelect/SingleSelect.d.ts +0 -49
- package/dist/types/components/Select/SingleSelect/index.d.ts +0 -1
- package/dist/types/components/Select/commonStyles.d.ts +0 -27
|
@@ -4,6 +4,7 @@ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProper
|
|
|
4
4
|
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
5
5
|
import { forwardRef, useRef, useState, useEffect, useMemo, useCallback } from 'react';
|
|
6
6
|
import { useMultipleSelection, useCombobox } from 'downshift';
|
|
7
|
+
import { useVirtualizer } from '@tanstack/react-virtual';
|
|
7
8
|
import styled, { css, ThemeProvider } from 'styled-components';
|
|
8
9
|
import { Button } from '../Button/index.js';
|
|
9
10
|
import { List } from '../List/index.js';
|
|
@@ -28,7 +29,7 @@ var StyledList = styled(List).withConfig({
|
|
|
28
29
|
componentId: "sc-yvif0e-1"
|
|
29
30
|
})(function (_ref) {
|
|
30
31
|
var theme = _ref.theme;
|
|
31
|
-
return css(["background-color:", ";box-shadow:", ";", " overflow-y:auto;max-height:300px;padding:0;"], theme.background, theme.boxShadow, bordersTemplate(theme.border));
|
|
32
|
+
return css(["background-color:", ";box-shadow:", ";", " overflow-y:auto;overflow-x:hidden;max-height:300px;padding:0;display:grid;"], theme.background, theme.boxShadow, bordersTemplate(theme.border));
|
|
32
33
|
});
|
|
33
34
|
var StyledButton = styled(Button).withConfig({
|
|
34
35
|
displayName: "Autocomplete__StyledButton",
|
|
@@ -37,14 +38,12 @@ var StyledButton = styled(Button).withConfig({
|
|
|
37
38
|
var button = _ref2.theme.entities.button;
|
|
38
39
|
return css(["height:", ";width:", ";"], button.height, button.height);
|
|
39
40
|
});
|
|
40
|
-
|
|
41
41
|
var findIndex = function findIndex(_ref3) {
|
|
42
42
|
var calc = _ref3.calc,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
index = _ref3.index,
|
|
44
|
+
optionDisabled = _ref3.optionDisabled,
|
|
45
|
+
availableItems = _ref3.availableItems;
|
|
46
46
|
var nextItem = availableItems[index];
|
|
47
|
-
|
|
48
47
|
if (optionDisabled(nextItem)) {
|
|
49
48
|
var nextIndex = calc(index);
|
|
50
49
|
return findIndex({
|
|
@@ -54,14 +53,12 @@ var findIndex = function findIndex(_ref3) {
|
|
|
54
53
|
optionDisabled: optionDisabled
|
|
55
54
|
});
|
|
56
55
|
}
|
|
57
|
-
|
|
58
56
|
return index;
|
|
59
57
|
};
|
|
60
|
-
|
|
61
58
|
var findNextIndex = function findNextIndex(_ref4) {
|
|
62
59
|
var index = _ref4.index,
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
optionDisabled = _ref4.optionDisabled,
|
|
61
|
+
availableItems = _ref4.availableItems;
|
|
65
62
|
var options = {
|
|
66
63
|
index: index,
|
|
67
64
|
optionDisabled: optionDisabled,
|
|
@@ -71,21 +68,18 @@ var findNextIndex = function findNextIndex(_ref4) {
|
|
|
71
68
|
}
|
|
72
69
|
};
|
|
73
70
|
var nextIndex = findIndex(options);
|
|
74
|
-
|
|
75
71
|
if (nextIndex > availableItems.length - 1) {
|
|
76
72
|
// jump to start of list
|
|
77
73
|
return findIndex(_objectSpread(_objectSpread({}, options), {}, {
|
|
78
74
|
index: 0
|
|
79
75
|
}));
|
|
80
76
|
}
|
|
81
|
-
|
|
82
77
|
return nextIndex;
|
|
83
78
|
};
|
|
84
|
-
|
|
85
79
|
var findPrevIndex = function findPrevIndex(_ref5) {
|
|
86
80
|
var index = _ref5.index,
|
|
87
|
-
|
|
88
|
-
|
|
81
|
+
optionDisabled = _ref5.optionDisabled,
|
|
82
|
+
availableItems = _ref5.availableItems;
|
|
89
83
|
var options = {
|
|
90
84
|
index: index,
|
|
91
85
|
optionDisabled: optionDisabled,
|
|
@@ -95,70 +89,61 @@ var findPrevIndex = function findPrevIndex(_ref5) {
|
|
|
95
89
|
}
|
|
96
90
|
};
|
|
97
91
|
var prevIndex = findIndex(options);
|
|
98
|
-
|
|
99
92
|
if (prevIndex < 0) {
|
|
100
93
|
// jump to end of list
|
|
101
94
|
return findIndex(_objectSpread(_objectSpread({}, options), {}, {
|
|
102
95
|
index: availableItems.length - 1
|
|
103
96
|
}));
|
|
104
97
|
}
|
|
105
|
-
|
|
106
98
|
return prevIndex;
|
|
107
99
|
};
|
|
108
|
-
|
|
109
100
|
function AutocompleteInner(props, ref) {
|
|
110
101
|
var _props$options = props.options,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
102
|
+
options = _props$options === void 0 ? [] : _props$options,
|
|
103
|
+
label = props.label,
|
|
104
|
+
meta = props.meta,
|
|
105
|
+
className = props.className,
|
|
106
|
+
style = props.style,
|
|
107
|
+
_props$disabled = props.disabled,
|
|
108
|
+
disabled = _props$disabled === void 0 ? false : _props$disabled,
|
|
109
|
+
_props$readOnly = props.readOnly,
|
|
110
|
+
readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
|
|
111
|
+
_props$hideClearButto = props.hideClearButton,
|
|
112
|
+
hideClearButton = _props$hideClearButto === void 0 ? false : _props$hideClearButto,
|
|
113
|
+
onOptionsChange = props.onOptionsChange,
|
|
114
|
+
selectedOptions = props.selectedOptions,
|
|
115
|
+
multiple = props.multiple,
|
|
116
|
+
_props$initialSelecte = props.initialSelectedOptions,
|
|
117
|
+
initialSelectedOptions = _props$initialSelecte === void 0 ? [] : _props$initialSelecte,
|
|
118
|
+
disablePortal = props.disablePortal,
|
|
119
|
+
_props$optionDisabled = props.optionDisabled,
|
|
120
|
+
optionDisabled = _props$optionDisabled === void 0 ? function () {
|
|
121
|
+
return false;
|
|
122
|
+
} : _props$optionDisabled,
|
|
123
|
+
optionsFilter = props.optionsFilter,
|
|
124
|
+
autoWidth = props.autoWidth,
|
|
125
|
+
placeholder = props.placeholder,
|
|
126
|
+
optionLabel = props.optionLabel,
|
|
127
|
+
_props$clearSearchOnC = props.clearSearchOnChange,
|
|
128
|
+
clearSearchOnChange = _props$clearSearchOnC === void 0 ? true : _props$clearSearchOnC,
|
|
129
|
+
other = _objectWithoutProperties(props, _excluded);
|
|
140
130
|
var anchorRef = useRef(null);
|
|
141
131
|
var isControlled = Boolean(selectedOptions);
|
|
142
|
-
|
|
143
132
|
var _useState = useState(options),
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
133
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
134
|
+
inputOptions = _useState2[0],
|
|
135
|
+
setInputOptions = _useState2[1];
|
|
148
136
|
var _useState3 = useState(inputOptions),
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
137
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
138
|
+
availableItems = _useState4[0],
|
|
139
|
+
setAvailableItems = _useState4[1];
|
|
153
140
|
var _useState5 = useState(''),
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
141
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
142
|
+
typedInputValue = _useState6[0],
|
|
143
|
+
setTypedInputValue = _useState6[1];
|
|
158
144
|
useEffect(function () {
|
|
159
145
|
var availableHash = JSON.stringify(inputOptions);
|
|
160
146
|
var optionsHash = JSON.stringify(options);
|
|
161
|
-
|
|
162
147
|
if (availableHash !== optionsHash) {
|
|
163
148
|
setInputOptions(options);
|
|
164
149
|
}
|
|
@@ -169,10 +154,8 @@ function AutocompleteInner(props, ref) {
|
|
|
169
154
|
var disabledItems = useMemo(function () {
|
|
170
155
|
return options.filter(optionDisabled);
|
|
171
156
|
}, [options, optionDisabled]);
|
|
172
|
-
|
|
173
157
|
var _useEds = useEds(),
|
|
174
|
-
|
|
175
|
-
|
|
158
|
+
density = _useEds.density;
|
|
176
159
|
var token = useToken({
|
|
177
160
|
density: density
|
|
178
161
|
}, multiple ? multiSelect : selectTokens);
|
|
@@ -180,7 +163,6 @@ function AutocompleteInner(props, ref) {
|
|
|
180
163
|
var multipleSelectionProps = {
|
|
181
164
|
initialSelectedItems: multiple ? initialSelectedOptions : initialSelectedOptions[0] ? [initialSelectedOptions[0]] : []
|
|
182
165
|
};
|
|
183
|
-
|
|
184
166
|
if (multiple) {
|
|
185
167
|
multipleSelectionProps = _objectSpread(_objectSpread({}, multipleSelectionProps), {}, {
|
|
186
168
|
onSelectedItemsChange: function onSelectedItemsChange(changes) {
|
|
@@ -192,27 +174,23 @@ function AutocompleteInner(props, ref) {
|
|
|
192
174
|
}
|
|
193
175
|
}
|
|
194
176
|
});
|
|
195
|
-
|
|
196
177
|
if (isControlled) {
|
|
197
178
|
multipleSelectionProps = _objectSpread(_objectSpread({}, multipleSelectionProps), {}, {
|
|
198
179
|
selectedItems: selectedOptions
|
|
199
180
|
});
|
|
200
181
|
}
|
|
201
182
|
}
|
|
202
|
-
|
|
203
183
|
var _useMultipleSelection = useMultipleSelection(multipleSelectionProps),
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
184
|
+
getDropdownProps = _useMultipleSelection.getDropdownProps,
|
|
185
|
+
addSelectedItem = _useMultipleSelection.addSelectedItem,
|
|
186
|
+
removeSelectedItem = _useMultipleSelection.removeSelectedItem,
|
|
187
|
+
selectedItems = _useMultipleSelection.selectedItems,
|
|
188
|
+
resetSelection = _useMultipleSelection.reset,
|
|
189
|
+
setSelectedItems = _useMultipleSelection.setSelectedItems;
|
|
211
190
|
var getLabel = useCallback(function (item) {
|
|
212
191
|
if (!item) {
|
|
213
192
|
return '';
|
|
214
193
|
}
|
|
215
|
-
|
|
216
194
|
if (_typeof(item) === 'object') {
|
|
217
195
|
if (optionLabel) {
|
|
218
196
|
return optionLabel(item);
|
|
@@ -220,17 +198,26 @@ function AutocompleteInner(props, ref) {
|
|
|
220
198
|
throw new Error('Missing label. When using objects for options make sure to define the `optionLabel` property');
|
|
221
199
|
}
|
|
222
200
|
}
|
|
223
|
-
|
|
224
201
|
if (typeof item === 'string') {
|
|
225
202
|
return item;
|
|
226
203
|
}
|
|
227
|
-
|
|
228
204
|
try {
|
|
229
205
|
return item === null || item === void 0 ? void 0 : item.toString();
|
|
230
206
|
} catch (error) {
|
|
231
207
|
throw new Error('Unable to find label, make sure your are using options as documented');
|
|
232
208
|
}
|
|
233
209
|
}, [optionLabel]);
|
|
210
|
+
var scrollContainer = useRef(null);
|
|
211
|
+
var rowVirtualizer = useVirtualizer({
|
|
212
|
+
count: availableItems.length,
|
|
213
|
+
getScrollElement: function getScrollElement() {
|
|
214
|
+
return scrollContainer.current;
|
|
215
|
+
},
|
|
216
|
+
estimateSize: useCallback(function () {
|
|
217
|
+
return 48;
|
|
218
|
+
}, []),
|
|
219
|
+
overscan: 10
|
|
220
|
+
});
|
|
234
221
|
var comboBoxProps = {
|
|
235
222
|
items: availableItems,
|
|
236
223
|
initialSelectedItem: initialSelectedOptions[0],
|
|
@@ -241,28 +228,31 @@ function AutocompleteInner(props, ref) {
|
|
|
241
228
|
if (optionsFilter) {
|
|
242
229
|
return optionsFilter(item, inputValue);
|
|
243
230
|
}
|
|
244
|
-
|
|
245
231
|
return getLabel(item).toLowerCase().includes(inputValue.toLowerCase());
|
|
246
232
|
}));
|
|
247
233
|
},
|
|
248
|
-
|
|
249
|
-
var
|
|
250
|
-
|
|
234
|
+
onHighlightedIndexChange: function onHighlightedIndexChange(_ref7) {
|
|
235
|
+
var highlightedIndex = _ref7.highlightedIndex,
|
|
236
|
+
type = _ref7.type;
|
|
237
|
+
if (type !== useCombobox.stateChangeTypes.ItemMouseMove && type !== useCombobox.stateChangeTypes.MenuMouseLeave && highlightedIndex >= 0) {
|
|
238
|
+
rowVirtualizer.scrollToIndex(highlightedIndex);
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
onIsOpenChange: function onIsOpenChange(_ref8) {
|
|
242
|
+
var selectedItem = _ref8.selectedItem;
|
|
251
243
|
if (!multiple && selectedItem !== null) {
|
|
252
244
|
setAvailableItems(options);
|
|
253
245
|
}
|
|
254
246
|
},
|
|
255
|
-
onStateChange: function onStateChange(
|
|
256
|
-
var type =
|
|
257
|
-
|
|
258
|
-
|
|
247
|
+
onStateChange: function onStateChange(_ref9) {
|
|
248
|
+
var type = _ref9.type,
|
|
249
|
+
selectedItem = _ref9.selectedItem;
|
|
259
250
|
switch (type) {
|
|
260
251
|
case useCombobox.stateChangeTypes.InputChange:
|
|
252
|
+
case useCombobox.stateChangeTypes.InputBlur:
|
|
261
253
|
break;
|
|
262
|
-
|
|
263
254
|
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
264
255
|
case useCombobox.stateChangeTypes.ItemClick:
|
|
265
|
-
case useCombobox.stateChangeTypes.InputBlur:
|
|
266
256
|
if (selectedItem && !optionDisabled(selectedItem)) {
|
|
267
257
|
if (multiple) {
|
|
268
258
|
selectedItems.includes(selectedItem) ? removeSelectedItem(selectedItem) : addSelectedItem(selectedItem);
|
|
@@ -270,14 +260,12 @@ function AutocompleteInner(props, ref) {
|
|
|
270
260
|
setSelectedItems([selectedItem]);
|
|
271
261
|
}
|
|
272
262
|
}
|
|
273
|
-
|
|
274
263
|
break;
|
|
275
264
|
}
|
|
276
265
|
},
|
|
277
266
|
stateReducer: function stateReducer(_, actionAndChanges) {
|
|
278
267
|
var changes = actionAndChanges.changes,
|
|
279
|
-
|
|
280
|
-
|
|
268
|
+
type = actionAndChanges.type;
|
|
281
269
|
switch (type) {
|
|
282
270
|
case useCombobox.stateChangeTypes.InputKeyDownArrowDown:
|
|
283
271
|
case useCombobox.stateChangeTypes.InputKeyDownHome:
|
|
@@ -288,7 +276,6 @@ function AutocompleteInner(props, ref) {
|
|
|
288
276
|
optionDisabled: optionDisabled
|
|
289
277
|
})
|
|
290
278
|
});
|
|
291
|
-
|
|
292
279
|
case useCombobox.stateChangeTypes.InputKeyDownArrowUp:
|
|
293
280
|
case useCombobox.stateChangeTypes.InputKeyDownEnd:
|
|
294
281
|
return _objectSpread(_objectSpread({}, changes), {}, {
|
|
@@ -298,13 +285,11 @@ function AutocompleteInner(props, ref) {
|
|
|
298
285
|
optionDisabled: optionDisabled
|
|
299
286
|
})
|
|
300
287
|
});
|
|
301
|
-
|
|
302
288
|
default:
|
|
303
289
|
return changes;
|
|
304
290
|
}
|
|
305
291
|
}
|
|
306
292
|
};
|
|
307
|
-
|
|
308
293
|
if (!multiple) {
|
|
309
294
|
comboBoxProps = _objectSpread(_objectSpread({}, comboBoxProps), {}, {
|
|
310
295
|
onSelectedItemChange: function onSelectedItemChange(changes) {
|
|
@@ -316,22 +301,19 @@ function AutocompleteInner(props, ref) {
|
|
|
316
301
|
}
|
|
317
302
|
}
|
|
318
303
|
});
|
|
319
|
-
|
|
320
304
|
if (isControlled) {
|
|
321
305
|
comboBoxProps = _objectSpread(_objectSpread({}, comboBoxProps), {}, {
|
|
322
306
|
selectedItem: selectedOptions[0] || null
|
|
323
307
|
});
|
|
324
308
|
}
|
|
325
309
|
}
|
|
326
|
-
|
|
327
310
|
if (multiple) {
|
|
328
311
|
placeholderText = typeof placeholderText !== 'undefined' ? placeholderText : "".concat(selectedItems.length, "/").concat(options.length - disabledItems.length, " selected");
|
|
329
312
|
comboBoxProps = _objectSpread(_objectSpread({}, comboBoxProps), {}, {
|
|
330
313
|
selectedItem: null,
|
|
331
314
|
stateReducer: function stateReducer(state, actionAndChanges) {
|
|
332
315
|
var changes = actionAndChanges.changes,
|
|
333
|
-
|
|
334
|
-
|
|
316
|
+
type = actionAndChanges.type;
|
|
335
317
|
switch (type) {
|
|
336
318
|
case useCombobox.stateChangeTypes.InputKeyDownArrowDown:
|
|
337
319
|
case useCombobox.stateChangeTypes.InputKeyDownHome:
|
|
@@ -342,7 +324,6 @@ function AutocompleteInner(props, ref) {
|
|
|
342
324
|
optionDisabled: optionDisabled
|
|
343
325
|
})
|
|
344
326
|
});
|
|
345
|
-
|
|
346
327
|
case useCombobox.stateChangeTypes.InputKeyDownArrowUp:
|
|
347
328
|
case useCombobox.stateChangeTypes.InputKeyDownEnd:
|
|
348
329
|
return _objectSpread(_objectSpread({}, changes), {}, {
|
|
@@ -352,7 +333,6 @@ function AutocompleteInner(props, ref) {
|
|
|
352
333
|
optionDisabled: optionDisabled
|
|
353
334
|
})
|
|
354
335
|
});
|
|
355
|
-
|
|
356
336
|
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
357
337
|
case useCombobox.stateChangeTypes.ItemClick:
|
|
358
338
|
return _objectSpread(_objectSpread({}, changes), {}, {
|
|
@@ -361,79 +341,69 @@ function AutocompleteInner(props, ref) {
|
|
|
361
341
|
highlightedIndex: state.highlightedIndex,
|
|
362
342
|
inputValue: !clearSearchOnChange ? typedInputValue : ''
|
|
363
343
|
});
|
|
364
|
-
|
|
365
344
|
case useCombobox.stateChangeTypes.InputBlur:
|
|
366
345
|
setTypedInputValue('');
|
|
367
346
|
return _objectSpread(_objectSpread({}, changes), {}, {
|
|
368
347
|
inputValue: ''
|
|
369
348
|
});
|
|
370
|
-
|
|
371
349
|
case useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
|
|
372
350
|
return _objectSpread(_objectSpread({}, changes), {}, {
|
|
373
351
|
inputValue: !clearSearchOnChange ? typedInputValue : changes.inputValue
|
|
374
352
|
});
|
|
375
|
-
|
|
376
353
|
default:
|
|
377
354
|
return changes;
|
|
378
355
|
}
|
|
379
356
|
}
|
|
380
357
|
});
|
|
381
358
|
}
|
|
382
|
-
|
|
383
359
|
var _useCombobox = useCombobox(comboBoxProps),
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
resetCombobox = _useCombobox.reset;
|
|
395
|
-
|
|
360
|
+
isOpen = _useCombobox.isOpen,
|
|
361
|
+
getToggleButtonProps = _useCombobox.getToggleButtonProps,
|
|
362
|
+
getLabelProps = _useCombobox.getLabelProps,
|
|
363
|
+
getMenuProps = _useCombobox.getMenuProps,
|
|
364
|
+
getInputProps = _useCombobox.getInputProps,
|
|
365
|
+
highlightedIndex = _useCombobox.highlightedIndex,
|
|
366
|
+
getItemProps = _useCombobox.getItemProps,
|
|
367
|
+
openMenu = _useCombobox.openMenu,
|
|
368
|
+
inputValue = _useCombobox.inputValue,
|
|
369
|
+
resetCombobox = _useCombobox.reset;
|
|
396
370
|
useEffect(function () {
|
|
397
371
|
if (isControlled) {
|
|
398
372
|
setSelectedItems(selectedOptions);
|
|
399
373
|
}
|
|
400
374
|
}, [isControlled, selectedOptions, setSelectedItems]);
|
|
401
|
-
|
|
402
375
|
var openSelect = function openSelect() {
|
|
403
376
|
if (!isOpen && !(disabled || readOnly)) {
|
|
404
377
|
openMenu();
|
|
405
378
|
}
|
|
406
379
|
};
|
|
407
|
-
|
|
408
380
|
var _useFloating = useFloating({
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
availableHeight =
|
|
416
|
-
elements =
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
381
|
+
placement: 'bottom-start',
|
|
382
|
+
middleware: [offset(4), flip(), shift({
|
|
383
|
+
padding: 8
|
|
384
|
+
}), size({
|
|
385
|
+
apply: function apply(_ref10) {
|
|
386
|
+
var rects = _ref10.rects,
|
|
387
|
+
availableHeight = _ref10.availableHeight,
|
|
388
|
+
elements = _ref10.elements;
|
|
389
|
+
var anchorWidth = "".concat(rects.reference.width, "px");
|
|
390
|
+
Object.assign(elements.floating.style, {
|
|
391
|
+
width: "".concat(autoWidth ? anchorWidth : 'auto'),
|
|
392
|
+
maxHeight: "".concat(availableHeight, "px")
|
|
393
|
+
});
|
|
394
|
+
},
|
|
395
|
+
padding: 10
|
|
396
|
+
})]
|
|
397
|
+
}),
|
|
398
|
+
x = _useFloating.x,
|
|
399
|
+
y = _useFloating.y,
|
|
400
|
+
refs = _useFloating.refs,
|
|
401
|
+
update = _useFloating.update,
|
|
402
|
+
reference = _useFloating.reference,
|
|
403
|
+
floating = _useFloating.floating,
|
|
404
|
+
strategy = _useFloating.strategy;
|
|
434
405
|
var _useInteractions = useInteractions([]),
|
|
435
|
-
|
|
436
|
-
|
|
406
|
+
getFloatingProps = _useInteractions.getFloatingProps;
|
|
437
407
|
useEffect(function () {
|
|
438
408
|
reference(anchorRef.current);
|
|
439
409
|
}, [anchorRef, reference]);
|
|
@@ -442,18 +412,15 @@ function AutocompleteInner(props, ref) {
|
|
|
442
412
|
return autoUpdate(refs.reference.current, refs.floating.current, update);
|
|
443
413
|
}
|
|
444
414
|
}, [refs.reference, refs.floating, update, isOpen]);
|
|
445
|
-
|
|
446
415
|
var clear = function clear() {
|
|
447
416
|
resetCombobox();
|
|
448
417
|
resetSelection();
|
|
449
418
|
setTypedInputValue('');
|
|
450
419
|
};
|
|
451
|
-
|
|
452
420
|
var showClearButton = (selectedItems.length > 0 || inputValue) && !readOnly && !hideClearButton;
|
|
453
421
|
var selectedItemsLabels = useMemo(function () {
|
|
454
422
|
return selectedItems.map(getLabel);
|
|
455
423
|
}, [selectedItems, getLabel]);
|
|
456
|
-
|
|
457
424
|
var optionsList = /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({}, getFloatingProps({
|
|
458
425
|
ref: floating,
|
|
459
426
|
style: {
|
|
@@ -463,30 +430,46 @@ function AutocompleteInner(props, ref) {
|
|
|
463
430
|
zIndex: 1500
|
|
464
431
|
}
|
|
465
432
|
})), {}, {
|
|
466
|
-
children: /*#__PURE__*/
|
|
467
|
-
'aria-multiselectable': multiple ? 'true' : null
|
|
433
|
+
children: /*#__PURE__*/jsxs(StyledList, _objectSpread(_objectSpread({}, getMenuProps({
|
|
434
|
+
'aria-multiselectable': multiple ? 'true' : null,
|
|
435
|
+
ref: scrollContainer
|
|
468
436
|
}, {
|
|
469
437
|
suppressRefError: true
|
|
470
438
|
})), {}, {
|
|
471
|
-
children:
|
|
439
|
+
children: [isOpen && /*#__PURE__*/jsx("li", {
|
|
440
|
+
role: "presentation",
|
|
441
|
+
style: {
|
|
442
|
+
height: "".concat(rowVirtualizer.getTotalSize(), "px"),
|
|
443
|
+
margin: '0',
|
|
444
|
+
gridArea: '1 / -1'
|
|
445
|
+
}
|
|
446
|
+
}, "total-size"), !isOpen ? null : rowVirtualizer.getVirtualItems().map(function (virtualItem) {
|
|
447
|
+
var index = virtualItem.index;
|
|
448
|
+
var item = availableItems[index];
|
|
472
449
|
var label = getLabel(item);
|
|
473
450
|
var isDisabled = optionDisabled(item);
|
|
474
451
|
var isSelected = selectedItemsLabels.includes(label);
|
|
475
452
|
return /*#__PURE__*/jsx(AutocompleteOption, _objectSpread({
|
|
453
|
+
"data-index": virtualItem.index,
|
|
454
|
+
"aria-setsize": availableItems.length,
|
|
455
|
+
"aria-posinset": index + 1,
|
|
476
456
|
value: label,
|
|
477
457
|
multiple: multiple,
|
|
478
458
|
highlighted: highlightedIndex === index && !isDisabled ? 'true' : 'false',
|
|
479
459
|
isSelected: isSelected,
|
|
480
460
|
isDisabled: isDisabled
|
|
481
461
|
}, getItemProps({
|
|
462
|
+
ref: rowVirtualizer.measureElement,
|
|
482
463
|
item: item,
|
|
483
464
|
index: index,
|
|
484
|
-
disabled: disabled
|
|
485
|
-
|
|
486
|
-
|
|
465
|
+
disabled: disabled,
|
|
466
|
+
style: {
|
|
467
|
+
transform: "translateY(".concat(virtualItem.start, "px)")
|
|
468
|
+
}
|
|
469
|
+
})), virtualItem.key);
|
|
470
|
+
})]
|
|
487
471
|
}))
|
|
488
472
|
}));
|
|
489
|
-
|
|
490
473
|
return /*#__PURE__*/jsx(ThemeProvider, {
|
|
491
474
|
theme: token,
|
|
492
475
|
children: /*#__PURE__*/jsxs(Container, {
|
|
@@ -497,15 +480,15 @@ function AutocompleteInner(props, ref) {
|
|
|
497
480
|
label: label,
|
|
498
481
|
meta: meta,
|
|
499
482
|
disabled: disabled
|
|
500
|
-
})), /*#__PURE__*/jsx(Container,
|
|
501
|
-
children: /*#__PURE__*/jsx(Input, _objectSpread(_objectSpread({}, getInputProps(
|
|
483
|
+
})), /*#__PURE__*/jsx(Container, {
|
|
484
|
+
children: /*#__PURE__*/jsx(Input, _objectSpread(_objectSpread({}, getInputProps(
|
|
485
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
502
486
|
getDropdownProps({
|
|
503
487
|
preventKeyAction: multiple ? isOpen : undefined,
|
|
504
488
|
disabled: disabled,
|
|
505
489
|
ref: refs.reference,
|
|
506
490
|
onChange: function onChange(e) {
|
|
507
491
|
var _e$currentTarget;
|
|
508
|
-
|
|
509
492
|
return setTypedInputValue(e === null || e === void 0 ? void 0 : (_e$currentTarget = e.currentTarget) === null || _e$currentTarget === void 0 ? void 0 : _e$currentTarget.value);
|
|
510
493
|
}
|
|
511
494
|
}))), {}, {
|
|
@@ -538,14 +521,13 @@ function AutocompleteInner(props, ref) {
|
|
|
538
521
|
}))]
|
|
539
522
|
})
|
|
540
523
|
}, other))
|
|
541
|
-
})
|
|
524
|
+
}), disablePortal ? optionsList : /*#__PURE__*/jsx(FloatingPortal, {
|
|
542
525
|
id: "eds-autocomplete-container",
|
|
543
526
|
children: optionsList
|
|
544
527
|
})]
|
|
545
528
|
})
|
|
546
529
|
});
|
|
547
530
|
}
|
|
548
|
-
|
|
549
531
|
var Autocomplete = /*#__PURE__*/forwardRef(AutocompleteInner);
|
|
550
532
|
|
|
551
533
|
export { Autocomplete };
|
|
@@ -3,25 +3,25 @@ import { tokens } from '@equinor/eds-tokens';
|
|
|
3
3
|
import mergeDeepRight from '../../node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeDeepRight.js';
|
|
4
4
|
|
|
5
5
|
var typography = tokens.typography,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
colors = tokens.colors,
|
|
7
|
+
_tokens$shape = tokens.shape,
|
|
8
|
+
straight = _tokens$shape.straight,
|
|
9
|
+
borderRadius = _tokens$shape.corners.borderRadius,
|
|
10
|
+
_tokens$spacings$comf = tokens.spacings.comfortable,
|
|
11
|
+
spacingSmall = _tokens$spacings$comf.small,
|
|
12
|
+
spacingMediumSmall = _tokens$spacings$comf.medium_small,
|
|
13
|
+
spacingMedium = _tokens$spacings$comf.medium,
|
|
14
|
+
spacingLarge = _tokens$spacings$comf.large,
|
|
15
|
+
xx_small = _tokens$spacings$comf.xx_small,
|
|
16
|
+
boxShadow = tokens.elevation.temporary_nav;
|
|
17
17
|
var selectTokens = {
|
|
18
18
|
background: colors.ui.background__default.rgba,
|
|
19
19
|
boxShadow: boxShadow,
|
|
20
20
|
minHeight: straight.minHeight,
|
|
21
21
|
spacings: {
|
|
22
|
-
top:
|
|
22
|
+
top: '0',
|
|
23
23
|
right: spacingLarge,
|
|
24
|
-
bottom:
|
|
24
|
+
bottom: '0',
|
|
25
25
|
left: spacingLarge
|
|
26
26
|
},
|
|
27
27
|
typography: _objectSpread(_objectSpread({}, typography.navigation.menu_title), {}, {
|
|
@@ -53,6 +53,14 @@ var selectTokens = {
|
|
|
53
53
|
right: spacingSmall,
|
|
54
54
|
top: '6px'
|
|
55
55
|
}
|
|
56
|
+
},
|
|
57
|
+
label: {
|
|
58
|
+
spacings: {
|
|
59
|
+
left: '0',
|
|
60
|
+
right: '0',
|
|
61
|
+
top: spacingMedium,
|
|
62
|
+
bottom: spacingMedium
|
|
63
|
+
}
|
|
56
64
|
}
|
|
57
65
|
},
|
|
58
66
|
modes: {
|
|
@@ -60,8 +68,8 @@ var selectTokens = {
|
|
|
60
68
|
spacings: {
|
|
61
69
|
left: spacingSmall,
|
|
62
70
|
right: spacingSmall,
|
|
63
|
-
top:
|
|
64
|
-
bottom:
|
|
71
|
+
top: '0',
|
|
72
|
+
bottom: '0'
|
|
65
73
|
},
|
|
66
74
|
entities: {
|
|
67
75
|
button: {
|
|
@@ -70,6 +78,14 @@ var selectTokens = {
|
|
|
70
78
|
right: spacingSmall,
|
|
71
79
|
top: '0'
|
|
72
80
|
}
|
|
81
|
+
},
|
|
82
|
+
label: {
|
|
83
|
+
spacings: {
|
|
84
|
+
left: '0',
|
|
85
|
+
right: '0',
|
|
86
|
+
top: spacingSmall,
|
|
87
|
+
bottom: spacingSmall
|
|
88
|
+
}
|
|
73
89
|
}
|
|
74
90
|
}
|
|
75
91
|
}
|