@equinor/eds-core-react 0.27.0 → 0.28.0-dev12152022
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 +113 -45
- package/dist/esm/components/Autocomplete/Autocomplete.js +62 -20
- package/dist/esm/components/Autocomplete/Autocomplete.tokens.js +20 -4
- package/dist/esm/components/Autocomplete/Option.js +22 -13
- package/dist/types/components/Autocomplete/Autocomplete.d.ts +4 -0
- package/dist/types/components/Autocomplete/Option.d.ts +2 -0
- package/dist/types/components/Slider/Slider.d.ts +4 -4
- package/package.json +6 -5
|
@@ -18,6 +18,7 @@ var reactDomInteractions = require('@floating-ui/react-dom-interactions');
|
|
|
18
18
|
var ReactDom = require('react-dom');
|
|
19
19
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
20
20
|
var downshift = require('downshift');
|
|
21
|
+
var reactVirtual = require('@tanstack/react-virtual');
|
|
21
22
|
|
|
22
23
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
23
24
|
|
|
@@ -1653,7 +1654,7 @@ var Text$2 = styled__default["default"].span.withConfig({
|
|
|
1653
1654
|
displayName: "Label__Text",
|
|
1654
1655
|
componentId: "sc-1gi2bcn-1"
|
|
1655
1656
|
})(["margin:0;"]);
|
|
1656
|
-
var Label$
|
|
1657
|
+
var Label$3 = /*#__PURE__*/react.forwardRef(function Label(props, ref) {
|
|
1657
1658
|
var _props$label = props.label,
|
|
1658
1659
|
label = _props$label === void 0 ? '' : _props$label,
|
|
1659
1660
|
meta = props.meta,
|
|
@@ -1908,7 +1909,7 @@ var HelperText = styled__default["default"](TextfieldHelperText).withConfig({
|
|
|
1908
1909
|
displayName: "InputWrapper__HelperText",
|
|
1909
1910
|
componentId: "sc-v6o9z1-1"
|
|
1910
1911
|
})(["margin-top:8px;margin-left:8px;"]);
|
|
1911
|
-
var Label$
|
|
1912
|
+
var Label$2 = styled__default["default"](Label$3).withConfig({
|
|
1912
1913
|
displayName: "InputWrapper__Label",
|
|
1913
1914
|
componentId: "sc-v6o9z1-2"
|
|
1914
1915
|
})(["margin-left:8px;margin-right:8px;"]);
|
|
@@ -1940,7 +1941,7 @@ var InputWrapper$2 = /*#__PURE__*/react.forwardRef(function InputWrapper(_ref, r
|
|
|
1940
1941
|
theme: token,
|
|
1941
1942
|
children: /*#__PURE__*/jsxRuntime.jsxs(Container$4, _objectSpread__default["default"](_objectSpread__default["default"]({}, other), {}, {
|
|
1942
1943
|
ref: ref,
|
|
1943
|
-
children: [hasLabel && /*#__PURE__*/jsxRuntime.jsx(Label$
|
|
1944
|
+
children: [hasLabel && /*#__PURE__*/jsxRuntime.jsx(Label$2, _objectSpread__default["default"]({}, _objectSpread__default["default"]({
|
|
1944
1945
|
label: label
|
|
1945
1946
|
}, labelProps))), children, hasHelperText && /*#__PURE__*/jsxRuntime.jsx(HelperText, _objectSpread__default["default"]({
|
|
1946
1947
|
color: helperTextColor
|
|
@@ -7244,7 +7245,7 @@ var NativeSelect = /*#__PURE__*/react.forwardRef(function NativeSelect(_ref2, re
|
|
|
7244
7245
|
return /*#__PURE__*/jsxRuntime.jsx(styled.ThemeProvider, {
|
|
7245
7246
|
theme: token,
|
|
7246
7247
|
children: /*#__PURE__*/jsxRuntime.jsxs(Container$2, _objectSpread__default["default"](_objectSpread__default["default"]({}, containerProps), {}, {
|
|
7247
|
-
children: [showLabel && /*#__PURE__*/jsxRuntime.jsx(Label$
|
|
7248
|
+
children: [showLabel && /*#__PURE__*/jsxRuntime.jsx(Label$3, _objectSpread__default["default"]({}, labelProps)), /*#__PURE__*/jsxRuntime.jsx(StyledSelect, _objectSpread__default["default"](_objectSpread__default["default"]({}, selectProps), {}, {
|
|
7248
7249
|
children: children
|
|
7249
7250
|
}))]
|
|
7250
7251
|
}))
|
|
@@ -7946,7 +7947,7 @@ var StyledLabel = styled__default["default"].label.withConfig({
|
|
|
7946
7947
|
var isDisabled = _ref.isDisabled;
|
|
7947
7948
|
return isDisabled ? 'not-allowed' : 'pointer';
|
|
7948
7949
|
});
|
|
7949
|
-
var Label = styled__default["default"].span.withConfig({
|
|
7950
|
+
var Label$1 = styled__default["default"].span.withConfig({
|
|
7950
7951
|
displayName: "Switch__Label",
|
|
7951
7952
|
componentId: "sc-sdaahx-1"
|
|
7952
7953
|
})(function (_ref2) {
|
|
@@ -7982,7 +7983,7 @@ var Switch = /*#__PURE__*/react.forwardRef(function Switch(_ref3, ref) {
|
|
|
7982
7983
|
disabled: disabled
|
|
7983
7984
|
}, rest), {}, {
|
|
7984
7985
|
ref: ref
|
|
7985
|
-
})), label && /*#__PURE__*/jsxRuntime.jsx(Label, {
|
|
7986
|
+
})), label && /*#__PURE__*/jsxRuntime.jsx(Label$1, {
|
|
7986
7987
|
children: label
|
|
7987
7988
|
})]
|
|
7988
7989
|
}) : size === 'small' ? /*#__PURE__*/jsxRuntime.jsx(SwitchSmall, _objectSpread__default["default"](_objectSpread__default["default"]({
|
|
@@ -8019,9 +8020,9 @@ var selectTokens = {
|
|
|
8019
8020
|
boxShadow: boxShadow,
|
|
8020
8021
|
minHeight: straight.minHeight,
|
|
8021
8022
|
spacings: {
|
|
8022
|
-
top:
|
|
8023
|
+
top: '0',
|
|
8023
8024
|
right: spacingLarge,
|
|
8024
|
-
bottom:
|
|
8025
|
+
bottom: '0',
|
|
8025
8026
|
left: spacingLarge
|
|
8026
8027
|
},
|
|
8027
8028
|
typography: _objectSpread__default["default"](_objectSpread__default["default"]({}, typography.navigation.menu_title), {}, {
|
|
@@ -8053,6 +8054,14 @@ var selectTokens = {
|
|
|
8053
8054
|
right: spacingSmall,
|
|
8054
8055
|
top: '6px'
|
|
8055
8056
|
}
|
|
8057
|
+
},
|
|
8058
|
+
label: {
|
|
8059
|
+
spacings: {
|
|
8060
|
+
left: '0',
|
|
8061
|
+
right: '0',
|
|
8062
|
+
top: spacingMedium,
|
|
8063
|
+
bottom: spacingMedium
|
|
8064
|
+
}
|
|
8056
8065
|
}
|
|
8057
8066
|
},
|
|
8058
8067
|
modes: {
|
|
@@ -8060,8 +8069,8 @@ var selectTokens = {
|
|
|
8060
8069
|
spacings: {
|
|
8061
8070
|
left: spacingSmall,
|
|
8062
8071
|
right: spacingSmall,
|
|
8063
|
-
top:
|
|
8064
|
-
bottom:
|
|
8072
|
+
top: '0',
|
|
8073
|
+
bottom: '0'
|
|
8065
8074
|
},
|
|
8066
8075
|
entities: {
|
|
8067
8076
|
button: {
|
|
@@ -8070,6 +8079,14 @@ var selectTokens = {
|
|
|
8070
8079
|
right: spacingSmall,
|
|
8071
8080
|
top: '0'
|
|
8072
8081
|
}
|
|
8082
|
+
},
|
|
8083
|
+
label: {
|
|
8084
|
+
spacings: {
|
|
8085
|
+
left: '0',
|
|
8086
|
+
right: '0',
|
|
8087
|
+
top: spacingSmall,
|
|
8088
|
+
bottom: spacingSmall
|
|
8089
|
+
}
|
|
8073
8090
|
}
|
|
8074
8091
|
}
|
|
8075
8092
|
}
|
|
@@ -8092,8 +8109,8 @@ var multiSelect = mergeDeepRight$1(selectTokens, {
|
|
|
8092
8109
|
}
|
|
8093
8110
|
});
|
|
8094
8111
|
|
|
8095
|
-
var _excluded$6 = ["value", "multiple", "isSelected", "isDisabled", "onClick", "aria-selected"];
|
|
8096
|
-
var StyledListItem = styled__default["default"]
|
|
8112
|
+
var _excluded$6 = ["value", "multiple", "isSelected", "isDisabled", "multiline", "onClick", "aria-selected"];
|
|
8113
|
+
var StyledListItem = styled__default["default"].li.withConfig({
|
|
8097
8114
|
displayName: "Option__StyledListItem",
|
|
8098
8115
|
componentId: "sc-1ly11zu-0"
|
|
8099
8116
|
})(function (_ref) {
|
|
@@ -8102,16 +8119,25 @@ var StyledListItem = styled__default["default"](List$1.Item).withConfig({
|
|
|
8102
8119
|
active = _ref.active,
|
|
8103
8120
|
isdisabled = _ref.isdisabled;
|
|
8104
8121
|
var backgroundColor = highlighted === 'true' ? theme.states.hover.background : active === 'true' ? theme.states.active.background : theme.background;
|
|
8105
|
-
return styled.css(["display:flex;align-items:center;margin:0;list-style:none;background-color:", ";user-select:none;cursor:", ";", " ", " ", ""], backgroundColor, highlighted === 'true' ? 'pointer' : 'default', edsUtils.typographyTemplate(theme.typography), edsUtils.spacingsTemplate(theme.spacings), isdisabled === 'true' ? styled.css(["color:", ";"], theme.states.disabled.typography.color) : '');
|
|
8106
|
-
});
|
|
8107
|
-
var
|
|
8108
|
-
|
|
8109
|
-
|
|
8110
|
-
|
|
8111
|
-
|
|
8112
|
-
|
|
8113
|
-
|
|
8114
|
-
|
|
8122
|
+
return styled.css(["display:flex;grid-area:1 / -1;align-items:center;align-self:start;margin:0;list-style:none;background-color:", ";user-select:none;overflow:hidden;cursor:", ";", " ", " ", ""], backgroundColor, highlighted === 'true' ? 'pointer' : 'default', edsUtils.typographyTemplate(theme.typography), edsUtils.spacingsTemplate(theme.spacings), isdisabled === 'true' ? styled.css(["color:", ";"], theme.states.disabled.typography.color) : '');
|
|
8123
|
+
});
|
|
8124
|
+
var Label = styled__default["default"].span.withConfig({
|
|
8125
|
+
displayName: "Option__Label",
|
|
8126
|
+
componentId: "sc-1ly11zu-1"
|
|
8127
|
+
})(function (_ref2) {
|
|
8128
|
+
var theme = _ref2.theme,
|
|
8129
|
+
multiline = _ref2.multiline;
|
|
8130
|
+
return styled.css(["", " text-overflow:ellipsis;white-space:", ";overflow:", ";overflow-wrap:anywhere;"], edsUtils.spacingsTemplate(theme.entities.label.spacings), multiline ? 'normal' : 'nowrap', multiline ? 'initial' : 'hidden');
|
|
8131
|
+
});
|
|
8132
|
+
var AutocompleteOption = /*#__PURE__*/react.forwardRef(function AutocompleteOption(_ref3, ref) {
|
|
8133
|
+
var value = _ref3.value,
|
|
8134
|
+
multiple = _ref3.multiple,
|
|
8135
|
+
isSelected = _ref3.isSelected,
|
|
8136
|
+
isDisabled = _ref3.isDisabled,
|
|
8137
|
+
multiline = _ref3.multiline,
|
|
8138
|
+
_onClick = _ref3.onClick,
|
|
8139
|
+
ariaSelected = _ref3['aria-selected'],
|
|
8140
|
+
other = _objectWithoutProperties__default["default"](_ref3, _excluded$6);
|
|
8115
8141
|
return /*#__PURE__*/jsxRuntime.jsxs(StyledListItem, _objectSpread__default["default"](_objectSpread__default["default"]({
|
|
8116
8142
|
ref: ref,
|
|
8117
8143
|
isdisabled: isDisabled ? 'true' : 'false',
|
|
@@ -8129,13 +8155,14 @@ var AutocompleteOption = /*#__PURE__*/react.forwardRef(function AutocompleteOpti
|
|
|
8129
8155
|
onChange: function onChange() {
|
|
8130
8156
|
return null;
|
|
8131
8157
|
}
|
|
8132
|
-
}), /*#__PURE__*/jsxRuntime.jsx(
|
|
8158
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Label, {
|
|
8159
|
+
multiline: multiline,
|
|
8133
8160
|
children: value
|
|
8134
8161
|
})]
|
|
8135
8162
|
}));
|
|
8136
8163
|
});
|
|
8137
8164
|
|
|
8138
|
-
var _excluded$5 = ["options", "label", "meta", "className", "style", "disabled", "readOnly", "hideClearButton", "onOptionsChange", "selectedOptions", "multiple", "initialSelectedOptions", "disablePortal", "optionDisabled", "optionsFilter", "autoWidth", "placeholder", "optionLabel", "clearSearchOnChange"];
|
|
8165
|
+
var _excluded$5 = ["options", "label", "meta", "className", "style", "disabled", "readOnly", "hideClearButton", "onOptionsChange", "selectedOptions", "multiple", "initialSelectedOptions", "disablePortal", "optionDisabled", "optionsFilter", "autoWidth", "placeholder", "optionLabel", "clearSearchOnChange", "multiline"];
|
|
8139
8166
|
var Container$1 = styled__default["default"].div.withConfig({
|
|
8140
8167
|
displayName: "Autocomplete__Container",
|
|
8141
8168
|
componentId: "sc-yvif0e-0"
|
|
@@ -8145,7 +8172,7 @@ var StyledList = styled__default["default"](List$1).withConfig({
|
|
|
8145
8172
|
componentId: "sc-yvif0e-1"
|
|
8146
8173
|
})(function (_ref) {
|
|
8147
8174
|
var theme = _ref.theme;
|
|
8148
|
-
return styled.css(["background-color:", ";box-shadow:", ";", " overflow-y:auto;max-height:300px;padding:0;"], theme.background, theme.boxShadow, edsUtils.bordersTemplate(theme.border));
|
|
8175
|
+
return styled.css(["background-color:", ";box-shadow:", ";", " overflow-y:auto;overflow-x:hidden;max-height:300px;padding:0;display:grid;"], theme.background, theme.boxShadow, edsUtils.bordersTemplate(theme.border));
|
|
8149
8176
|
});
|
|
8150
8177
|
var StyledButton = styled__default["default"](Button).withConfig({
|
|
8151
8178
|
displayName: "Autocomplete__StyledButton",
|
|
@@ -8242,6 +8269,8 @@ function AutocompleteInner(props, ref) {
|
|
|
8242
8269
|
optionLabel = props.optionLabel,
|
|
8243
8270
|
_props$clearSearchOnC = props.clearSearchOnChange,
|
|
8244
8271
|
clearSearchOnChange = _props$clearSearchOnC === void 0 ? true : _props$clearSearchOnC,
|
|
8272
|
+
_props$multiline = props.multiline,
|
|
8273
|
+
multiline = _props$multiline === void 0 ? false : _props$multiline,
|
|
8245
8274
|
other = _objectWithoutProperties__default["default"](props, _excluded$5);
|
|
8246
8275
|
var anchorRef = react.useRef(null);
|
|
8247
8276
|
var isControlled = Boolean(selectedOptions);
|
|
@@ -8323,6 +8352,17 @@ function AutocompleteInner(props, ref) {
|
|
|
8323
8352
|
throw new Error('Unable to find label, make sure your are using options as documented');
|
|
8324
8353
|
}
|
|
8325
8354
|
}, [optionLabel]);
|
|
8355
|
+
var scrollContainer = react.useRef(null);
|
|
8356
|
+
var rowVirtualizer = reactVirtual.useVirtualizer({
|
|
8357
|
+
count: availableItems.length,
|
|
8358
|
+
getScrollElement: function getScrollElement() {
|
|
8359
|
+
return scrollContainer.current;
|
|
8360
|
+
},
|
|
8361
|
+
estimateSize: react.useCallback(function () {
|
|
8362
|
+
return 48;
|
|
8363
|
+
}, []),
|
|
8364
|
+
overscan: 25
|
|
8365
|
+
});
|
|
8326
8366
|
var comboBoxProps = {
|
|
8327
8367
|
items: availableItems,
|
|
8328
8368
|
initialSelectedItem: initialSelectedOptions[0],
|
|
@@ -8336,21 +8376,28 @@ function AutocompleteInner(props, ref) {
|
|
|
8336
8376
|
return getLabel(item).toLowerCase().includes(inputValue.toLowerCase());
|
|
8337
8377
|
}));
|
|
8338
8378
|
},
|
|
8339
|
-
|
|
8340
|
-
var
|
|
8379
|
+
onHighlightedIndexChange: function onHighlightedIndexChange(_ref7) {
|
|
8380
|
+
var highlightedIndex = _ref7.highlightedIndex,
|
|
8381
|
+
type = _ref7.type;
|
|
8382
|
+
if (type !== downshift.useCombobox.stateChangeTypes.ItemMouseMove && type !== downshift.useCombobox.stateChangeTypes.MenuMouseLeave && highlightedIndex >= 0) {
|
|
8383
|
+
rowVirtualizer.scrollToIndex(highlightedIndex);
|
|
8384
|
+
}
|
|
8385
|
+
},
|
|
8386
|
+
onIsOpenChange: function onIsOpenChange(_ref8) {
|
|
8387
|
+
var selectedItem = _ref8.selectedItem;
|
|
8341
8388
|
if (!multiple && selectedItem !== null) {
|
|
8342
8389
|
setAvailableItems(options);
|
|
8343
8390
|
}
|
|
8344
8391
|
},
|
|
8345
|
-
onStateChange: function onStateChange(
|
|
8346
|
-
var type =
|
|
8347
|
-
selectedItem =
|
|
8392
|
+
onStateChange: function onStateChange(_ref9) {
|
|
8393
|
+
var type = _ref9.type,
|
|
8394
|
+
selectedItem = _ref9.selectedItem;
|
|
8348
8395
|
switch (type) {
|
|
8349
8396
|
case downshift.useCombobox.stateChangeTypes.InputChange:
|
|
8397
|
+
case downshift.useCombobox.stateChangeTypes.InputBlur:
|
|
8350
8398
|
break;
|
|
8351
8399
|
case downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
8352
8400
|
case downshift.useCombobox.stateChangeTypes.ItemClick:
|
|
8353
|
-
case downshift.useCombobox.stateChangeTypes.InputBlur:
|
|
8354
8401
|
if (selectedItem && !optionDisabled(selectedItem)) {
|
|
8355
8402
|
if (multiple) {
|
|
8356
8403
|
selectedItems.includes(selectedItem) ? removeSelectedItem(selectedItem) : addSelectedItem(selectedItem);
|
|
@@ -8480,10 +8527,10 @@ function AutocompleteInner(props, ref) {
|
|
|
8480
8527
|
middleware: [reactDomInteractions.offset(4), reactDomInteractions.flip(), reactDomInteractions.shift({
|
|
8481
8528
|
padding: 8
|
|
8482
8529
|
}), reactDomInteractions.size({
|
|
8483
|
-
apply: function apply(
|
|
8484
|
-
var rects =
|
|
8485
|
-
availableHeight =
|
|
8486
|
-
elements =
|
|
8530
|
+
apply: function apply(_ref10) {
|
|
8531
|
+
var rects = _ref10.rects,
|
|
8532
|
+
availableHeight = _ref10.availableHeight,
|
|
8533
|
+
elements = _ref10.elements;
|
|
8487
8534
|
var anchorWidth = "".concat(rects.reference.width, "px");
|
|
8488
8535
|
Object.assign(elements.floating.style, {
|
|
8489
8536
|
width: "".concat(autoWidth ? anchorWidth : 'auto'),
|
|
@@ -8528,27 +8575,48 @@ function AutocompleteInner(props, ref) {
|
|
|
8528
8575
|
zIndex: 1500
|
|
8529
8576
|
}
|
|
8530
8577
|
})), {}, {
|
|
8531
|
-
children: /*#__PURE__*/jsxRuntime.
|
|
8532
|
-
'aria-multiselectable': multiple ? 'true' : null
|
|
8578
|
+
children: /*#__PURE__*/jsxRuntime.jsxs(StyledList, _objectSpread__default["default"](_objectSpread__default["default"]({}, getMenuProps({
|
|
8579
|
+
'aria-multiselectable': multiple ? 'true' : null,
|
|
8580
|
+
ref: scrollContainer
|
|
8533
8581
|
}, {
|
|
8534
8582
|
suppressRefError: true
|
|
8535
8583
|
})), {}, {
|
|
8536
|
-
children:
|
|
8584
|
+
children: [isOpen && /*#__PURE__*/jsxRuntime.jsx("li", {
|
|
8585
|
+
role: "presentation",
|
|
8586
|
+
style: {
|
|
8587
|
+
height: "".concat(rowVirtualizer.getTotalSize(), "px"),
|
|
8588
|
+
margin: '0',
|
|
8589
|
+
gridArea: '1 / -1'
|
|
8590
|
+
}
|
|
8591
|
+
}, "total-size"), !isOpen ? null : rowVirtualizer.getVirtualItems().map(function (virtualItem) {
|
|
8592
|
+
var index = virtualItem.index;
|
|
8593
|
+
var item = availableItems[index];
|
|
8537
8594
|
var label = getLabel(item);
|
|
8538
8595
|
var isDisabled = optionDisabled(item);
|
|
8539
8596
|
var isSelected = selectedItemsLabels.includes(label);
|
|
8540
8597
|
return /*#__PURE__*/jsxRuntime.jsx(AutocompleteOption, _objectSpread__default["default"]({
|
|
8598
|
+
"data-index": virtualItem.index,
|
|
8599
|
+
"aria-setsize": availableItems.length,
|
|
8600
|
+
"aria-posinset": index + 1,
|
|
8541
8601
|
value: label,
|
|
8542
8602
|
multiple: multiple,
|
|
8543
8603
|
highlighted: highlightedIndex === index && !isDisabled ? 'true' : 'false',
|
|
8544
8604
|
isSelected: isSelected,
|
|
8545
|
-
isDisabled: isDisabled
|
|
8546
|
-
|
|
8605
|
+
isDisabled: isDisabled,
|
|
8606
|
+
multiline: multiline
|
|
8607
|
+
}, getItemProps(_objectSpread__default["default"](_objectSpread__default["default"]({}, multiline && {
|
|
8608
|
+
ref: rowVirtualizer.measureElement
|
|
8609
|
+
}), {}, {
|
|
8547
8610
|
item: item,
|
|
8548
8611
|
index: index,
|
|
8549
|
-
disabled: disabled
|
|
8550
|
-
|
|
8551
|
-
|
|
8612
|
+
disabled: disabled,
|
|
8613
|
+
style: _objectSpread__default["default"]({
|
|
8614
|
+
transform: "translateY(".concat(virtualItem.start, "px)")
|
|
8615
|
+
}, !multiline && {
|
|
8616
|
+
height: "".concat(virtualItem.size, "px")
|
|
8617
|
+
})
|
|
8618
|
+
}))), virtualItem.key);
|
|
8619
|
+
})]
|
|
8552
8620
|
}))
|
|
8553
8621
|
}));
|
|
8554
8622
|
return /*#__PURE__*/jsxRuntime.jsx(styled.ThemeProvider, {
|
|
@@ -8557,7 +8625,7 @@ function AutocompleteInner(props, ref) {
|
|
|
8557
8625
|
className: className,
|
|
8558
8626
|
style: style,
|
|
8559
8627
|
ref: ref,
|
|
8560
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(Label$
|
|
8628
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Label$3, _objectSpread__default["default"](_objectSpread__default["default"]({}, getLabelProps()), {}, {
|
|
8561
8629
|
label: label,
|
|
8562
8630
|
meta: meta,
|
|
8563
8631
|
disabled: disabled
|
|
@@ -9088,7 +9156,7 @@ exports.EdsProvider = EdsProvider;
|
|
|
9088
9156
|
exports.Icon = Icon$1;
|
|
9089
9157
|
exports.Input = Input$4;
|
|
9090
9158
|
exports.InputWrapper = InputWrapper$2;
|
|
9091
|
-
exports.Label = Label$
|
|
9159
|
+
exports.Label = Label$3;
|
|
9092
9160
|
exports.LinearProgress = LinearProgress;
|
|
9093
9161
|
exports.List = List$1;
|
|
9094
9162
|
exports.Menu = Menu;
|
|
@@ -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';
|
|
@@ -18,7 +19,7 @@ import { useEds } from '../EdsProvider/eds.context.js';
|
|
|
18
19
|
import { Label } from '../Label/Label.js';
|
|
19
20
|
import { Input } from '../Input/Input.js';
|
|
20
21
|
|
|
21
|
-
var _excluded = ["options", "label", "meta", "className", "style", "disabled", "readOnly", "hideClearButton", "onOptionsChange", "selectedOptions", "multiple", "initialSelectedOptions", "disablePortal", "optionDisabled", "optionsFilter", "autoWidth", "placeholder", "optionLabel", "clearSearchOnChange"];
|
|
22
|
+
var _excluded = ["options", "label", "meta", "className", "style", "disabled", "readOnly", "hideClearButton", "onOptionsChange", "selectedOptions", "multiple", "initialSelectedOptions", "disablePortal", "optionDisabled", "optionsFilter", "autoWidth", "placeholder", "optionLabel", "clearSearchOnChange", "multiline"];
|
|
22
23
|
var Container = styled.div.withConfig({
|
|
23
24
|
displayName: "Autocomplete__Container",
|
|
24
25
|
componentId: "sc-yvif0e-0"
|
|
@@ -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",
|
|
@@ -125,6 +126,8 @@ function AutocompleteInner(props, ref) {
|
|
|
125
126
|
optionLabel = props.optionLabel,
|
|
126
127
|
_props$clearSearchOnC = props.clearSearchOnChange,
|
|
127
128
|
clearSearchOnChange = _props$clearSearchOnC === void 0 ? true : _props$clearSearchOnC,
|
|
129
|
+
_props$multiline = props.multiline,
|
|
130
|
+
multiline = _props$multiline === void 0 ? false : _props$multiline,
|
|
128
131
|
other = _objectWithoutProperties(props, _excluded);
|
|
129
132
|
var anchorRef = useRef(null);
|
|
130
133
|
var isControlled = Boolean(selectedOptions);
|
|
@@ -206,6 +209,17 @@ function AutocompleteInner(props, ref) {
|
|
|
206
209
|
throw new Error('Unable to find label, make sure your are using options as documented');
|
|
207
210
|
}
|
|
208
211
|
}, [optionLabel]);
|
|
212
|
+
var scrollContainer = useRef(null);
|
|
213
|
+
var rowVirtualizer = useVirtualizer({
|
|
214
|
+
count: availableItems.length,
|
|
215
|
+
getScrollElement: function getScrollElement() {
|
|
216
|
+
return scrollContainer.current;
|
|
217
|
+
},
|
|
218
|
+
estimateSize: useCallback(function () {
|
|
219
|
+
return 48;
|
|
220
|
+
}, []),
|
|
221
|
+
overscan: 25
|
|
222
|
+
});
|
|
209
223
|
var comboBoxProps = {
|
|
210
224
|
items: availableItems,
|
|
211
225
|
initialSelectedItem: initialSelectedOptions[0],
|
|
@@ -219,21 +233,28 @@ function AutocompleteInner(props, ref) {
|
|
|
219
233
|
return getLabel(item).toLowerCase().includes(inputValue.toLowerCase());
|
|
220
234
|
}));
|
|
221
235
|
},
|
|
222
|
-
|
|
223
|
-
var
|
|
236
|
+
onHighlightedIndexChange: function onHighlightedIndexChange(_ref7) {
|
|
237
|
+
var highlightedIndex = _ref7.highlightedIndex,
|
|
238
|
+
type = _ref7.type;
|
|
239
|
+
if (type !== useCombobox.stateChangeTypes.ItemMouseMove && type !== useCombobox.stateChangeTypes.MenuMouseLeave && highlightedIndex >= 0) {
|
|
240
|
+
rowVirtualizer.scrollToIndex(highlightedIndex);
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
onIsOpenChange: function onIsOpenChange(_ref8) {
|
|
244
|
+
var selectedItem = _ref8.selectedItem;
|
|
224
245
|
if (!multiple && selectedItem !== null) {
|
|
225
246
|
setAvailableItems(options);
|
|
226
247
|
}
|
|
227
248
|
},
|
|
228
|
-
onStateChange: function onStateChange(
|
|
229
|
-
var type =
|
|
230
|
-
selectedItem =
|
|
249
|
+
onStateChange: function onStateChange(_ref9) {
|
|
250
|
+
var type = _ref9.type,
|
|
251
|
+
selectedItem = _ref9.selectedItem;
|
|
231
252
|
switch (type) {
|
|
232
253
|
case useCombobox.stateChangeTypes.InputChange:
|
|
254
|
+
case useCombobox.stateChangeTypes.InputBlur:
|
|
233
255
|
break;
|
|
234
256
|
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
235
257
|
case useCombobox.stateChangeTypes.ItemClick:
|
|
236
|
-
case useCombobox.stateChangeTypes.InputBlur:
|
|
237
258
|
if (selectedItem && !optionDisabled(selectedItem)) {
|
|
238
259
|
if (multiple) {
|
|
239
260
|
selectedItems.includes(selectedItem) ? removeSelectedItem(selectedItem) : addSelectedItem(selectedItem);
|
|
@@ -363,10 +384,10 @@ function AutocompleteInner(props, ref) {
|
|
|
363
384
|
middleware: [offset(4), flip(), shift({
|
|
364
385
|
padding: 8
|
|
365
386
|
}), size({
|
|
366
|
-
apply: function apply(
|
|
367
|
-
var rects =
|
|
368
|
-
availableHeight =
|
|
369
|
-
elements =
|
|
387
|
+
apply: function apply(_ref10) {
|
|
388
|
+
var rects = _ref10.rects,
|
|
389
|
+
availableHeight = _ref10.availableHeight,
|
|
390
|
+
elements = _ref10.elements;
|
|
370
391
|
var anchorWidth = "".concat(rects.reference.width, "px");
|
|
371
392
|
Object.assign(elements.floating.style, {
|
|
372
393
|
width: "".concat(autoWidth ? anchorWidth : 'auto'),
|
|
@@ -411,27 +432,48 @@ function AutocompleteInner(props, ref) {
|
|
|
411
432
|
zIndex: 1500
|
|
412
433
|
}
|
|
413
434
|
})), {}, {
|
|
414
|
-
children: /*#__PURE__*/
|
|
415
|
-
'aria-multiselectable': multiple ? 'true' : null
|
|
435
|
+
children: /*#__PURE__*/jsxs(StyledList, _objectSpread(_objectSpread({}, getMenuProps({
|
|
436
|
+
'aria-multiselectable': multiple ? 'true' : null,
|
|
437
|
+
ref: scrollContainer
|
|
416
438
|
}, {
|
|
417
439
|
suppressRefError: true
|
|
418
440
|
})), {}, {
|
|
419
|
-
children:
|
|
441
|
+
children: [isOpen && /*#__PURE__*/jsx("li", {
|
|
442
|
+
role: "presentation",
|
|
443
|
+
style: {
|
|
444
|
+
height: "".concat(rowVirtualizer.getTotalSize(), "px"),
|
|
445
|
+
margin: '0',
|
|
446
|
+
gridArea: '1 / -1'
|
|
447
|
+
}
|
|
448
|
+
}, "total-size"), !isOpen ? null : rowVirtualizer.getVirtualItems().map(function (virtualItem) {
|
|
449
|
+
var index = virtualItem.index;
|
|
450
|
+
var item = availableItems[index];
|
|
420
451
|
var label = getLabel(item);
|
|
421
452
|
var isDisabled = optionDisabled(item);
|
|
422
453
|
var isSelected = selectedItemsLabels.includes(label);
|
|
423
454
|
return /*#__PURE__*/jsx(AutocompleteOption, _objectSpread({
|
|
455
|
+
"data-index": virtualItem.index,
|
|
456
|
+
"aria-setsize": availableItems.length,
|
|
457
|
+
"aria-posinset": index + 1,
|
|
424
458
|
value: label,
|
|
425
459
|
multiple: multiple,
|
|
426
460
|
highlighted: highlightedIndex === index && !isDisabled ? 'true' : 'false',
|
|
427
461
|
isSelected: isSelected,
|
|
428
|
-
isDisabled: isDisabled
|
|
429
|
-
|
|
462
|
+
isDisabled: isDisabled,
|
|
463
|
+
multiline: multiline
|
|
464
|
+
}, getItemProps(_objectSpread(_objectSpread({}, multiline && {
|
|
465
|
+
ref: rowVirtualizer.measureElement
|
|
466
|
+
}), {}, {
|
|
430
467
|
item: item,
|
|
431
468
|
index: index,
|
|
432
|
-
disabled: disabled
|
|
433
|
-
|
|
434
|
-
|
|
469
|
+
disabled: disabled,
|
|
470
|
+
style: _objectSpread({
|
|
471
|
+
transform: "translateY(".concat(virtualItem.start, "px)")
|
|
472
|
+
}, !multiline && {
|
|
473
|
+
height: "".concat(virtualItem.size, "px")
|
|
474
|
+
})
|
|
475
|
+
}))), virtualItem.key);
|
|
476
|
+
})]
|
|
435
477
|
}))
|
|
436
478
|
}));
|
|
437
479
|
return /*#__PURE__*/jsx(ThemeProvider, {
|
|
@@ -19,9 +19,9 @@ var selectTokens = {
|
|
|
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
|
}
|
|
@@ -2,13 +2,12 @@ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
|
2
2
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
3
3
|
import { forwardRef } from 'react';
|
|
4
4
|
import styled, { css } from 'styled-components';
|
|
5
|
-
import { List } from '../List/index.js';
|
|
6
5
|
import { typographyTemplate, spacingsTemplate } from '@equinor/eds-utils';
|
|
7
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
7
|
import { Checkbox } from '../Checkbox/Checkbox.js';
|
|
9
8
|
|
|
10
|
-
var _excluded = ["value", "multiple", "isSelected", "isDisabled", "onClick", "aria-selected"];
|
|
11
|
-
var StyledListItem = styled
|
|
9
|
+
var _excluded = ["value", "multiple", "isSelected", "isDisabled", "multiline", "onClick", "aria-selected"];
|
|
10
|
+
var StyledListItem = styled.li.withConfig({
|
|
12
11
|
displayName: "Option__StyledListItem",
|
|
13
12
|
componentId: "sc-1ly11zu-0"
|
|
14
13
|
})(function (_ref) {
|
|
@@ -17,16 +16,25 @@ var StyledListItem = styled(List.Item).withConfig({
|
|
|
17
16
|
active = _ref.active,
|
|
18
17
|
isdisabled = _ref.isdisabled;
|
|
19
18
|
var backgroundColor = highlighted === 'true' ? theme.states.hover.background : active === 'true' ? theme.states.active.background : theme.background;
|
|
20
|
-
return css(["display:flex;align-items:center;margin:0;list-style:none;background-color:", ";user-select:none;cursor:", ";", " ", " ", ""], backgroundColor, highlighted === 'true' ? 'pointer' : 'default', typographyTemplate(theme.typography), spacingsTemplate(theme.spacings), isdisabled === 'true' ? css(["color:", ";"], theme.states.disabled.typography.color) : '');
|
|
19
|
+
return css(["display:flex;grid-area:1 / -1;align-items:center;align-self:start;margin:0;list-style:none;background-color:", ";user-select:none;overflow:hidden;cursor:", ";", " ", " ", ""], backgroundColor, highlighted === 'true' ? 'pointer' : 'default', typographyTemplate(theme.typography), spacingsTemplate(theme.spacings), isdisabled === 'true' ? css(["color:", ";"], theme.states.disabled.typography.color) : '');
|
|
21
20
|
});
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
21
|
+
var Label = styled.span.withConfig({
|
|
22
|
+
displayName: "Option__Label",
|
|
23
|
+
componentId: "sc-1ly11zu-1"
|
|
24
|
+
})(function (_ref2) {
|
|
25
|
+
var theme = _ref2.theme,
|
|
26
|
+
multiline = _ref2.multiline;
|
|
27
|
+
return css(["", " text-overflow:ellipsis;white-space:", ";overflow:", ";overflow-wrap:anywhere;"], spacingsTemplate(theme.entities.label.spacings), multiline ? 'normal' : 'nowrap', multiline ? 'initial' : 'hidden');
|
|
28
|
+
});
|
|
29
|
+
var AutocompleteOption = /*#__PURE__*/forwardRef(function AutocompleteOption(_ref3, ref) {
|
|
30
|
+
var value = _ref3.value,
|
|
31
|
+
multiple = _ref3.multiple,
|
|
32
|
+
isSelected = _ref3.isSelected,
|
|
33
|
+
isDisabled = _ref3.isDisabled,
|
|
34
|
+
multiline = _ref3.multiline,
|
|
35
|
+
_onClick = _ref3.onClick,
|
|
36
|
+
ariaSelected = _ref3['aria-selected'],
|
|
37
|
+
other = _objectWithoutProperties(_ref3, _excluded);
|
|
30
38
|
return /*#__PURE__*/jsxs(StyledListItem, _objectSpread(_objectSpread({
|
|
31
39
|
ref: ref,
|
|
32
40
|
isdisabled: isDisabled ? 'true' : 'false',
|
|
@@ -44,7 +52,8 @@ var AutocompleteOption = /*#__PURE__*/forwardRef(function AutocompleteOption(_re
|
|
|
44
52
|
onChange: function onChange() {
|
|
45
53
|
return null;
|
|
46
54
|
}
|
|
47
|
-
}), /*#__PURE__*/jsx(
|
|
55
|
+
}), /*#__PURE__*/jsx(Label, {
|
|
56
|
+
multiline: multiline,
|
|
48
57
|
children: value
|
|
49
58
|
})]
|
|
50
59
|
}));
|
|
@@ -42,6 +42,8 @@ export declare type AutocompleteProps<T> = {
|
|
|
42
42
|
placeholder?: string;
|
|
43
43
|
/** Toggle if input is cleared when an options is selected when `multiple` is `true`*/
|
|
44
44
|
clearSearchOnChange?: boolean;
|
|
45
|
+
/** Will wrap overflowing text at the expence of some performance overhead to calculate item heigths. Mostly relevant in combination with autoWidth */
|
|
46
|
+
multiline?: boolean;
|
|
45
47
|
} & HTMLAttributes<HTMLDivElement>;
|
|
46
48
|
declare function AutocompleteInner<T>(props: AutocompleteProps<T>, ref: React.ForwardedRef<HTMLDivElement>): JSX.Element;
|
|
47
49
|
export declare const Autocomplete: <T>(props: {
|
|
@@ -84,6 +86,8 @@ export declare const Autocomplete: <T>(props: {
|
|
|
84
86
|
placeholder?: string;
|
|
85
87
|
/** Toggle if input is cleared when an options is selected when `multiple` is `true`*/
|
|
86
88
|
clearSearchOnChange?: boolean;
|
|
89
|
+
/** Will wrap overflowing text at the expence of some performance overhead to calculate item heigths. Mostly relevant in combination with autoWidth */
|
|
90
|
+
multiline?: boolean;
|
|
87
91
|
} & HTMLAttributes<HTMLDivElement> & {
|
|
88
92
|
ref?: React.ForwardedRef<HTMLDivElement>;
|
|
89
93
|
displayName?: string | undefined;
|
|
@@ -5,6 +5,7 @@ export declare type AutocompleteOptionProps = {
|
|
|
5
5
|
highlighted: string;
|
|
6
6
|
isSelected: boolean;
|
|
7
7
|
isDisabled?: boolean;
|
|
8
|
+
multiline: boolean;
|
|
8
9
|
} & LiHTMLAttributes<HTMLLIElement>;
|
|
9
10
|
export declare const AutocompleteOption: import("react").ForwardRefExoticComponent<{
|
|
10
11
|
value: string;
|
|
@@ -12,4 +13,5 @@ export declare const AutocompleteOption: import("react").ForwardRefExoticCompone
|
|
|
12
13
|
highlighted: string;
|
|
13
14
|
isSelected: boolean;
|
|
14
15
|
isDisabled?: boolean;
|
|
16
|
+
multiline: boolean;
|
|
15
17
|
} & LiHTMLAttributes<HTMLLIElement> & import("react").RefAttributes<HTMLLIElement>>;
|
|
@@ -11,8 +11,8 @@ export declare type SliderProps = {
|
|
|
11
11
|
onChange?: (event: ChangeEvent<HTMLInputElement>, newValue: number[] | number) => void;
|
|
12
12
|
/** Function to be called when value is committed by mouseup event */
|
|
13
13
|
onChangeCommitted?: (event: MouseEvent | KeyboardEvent, newValue: number[] | number) => void;
|
|
14
|
-
/** Function for formatting the
|
|
15
|
-
outputFunction?: (
|
|
14
|
+
/** Function for formatting the displayed value. E.g. formatting dates, or adding a unit suffix */
|
|
15
|
+
outputFunction?: (value: number) => string;
|
|
16
16
|
/** Max value */
|
|
17
17
|
max?: number;
|
|
18
18
|
/** Min value */
|
|
@@ -38,8 +38,8 @@ export declare const Slider: import("react").ForwardRefExoticComponent<{
|
|
|
38
38
|
onChange?: (event: ChangeEvent<HTMLInputElement>, newValue: number[] | number) => void;
|
|
39
39
|
/** Function to be called when value is committed by mouseup event */
|
|
40
40
|
onChangeCommitted?: (event: MouseEvent | KeyboardEvent, newValue: number[] | number) => void;
|
|
41
|
-
/** Function for formatting the
|
|
42
|
-
outputFunction?: (
|
|
41
|
+
/** Function for formatting the displayed value. E.g. formatting dates, or adding a unit suffix */
|
|
42
|
+
outputFunction?: (value: number) => string;
|
|
43
43
|
/** Max value */
|
|
44
44
|
max?: number;
|
|
45
45
|
/** Min value */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@equinor/eds-core-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.0-dev12152022",
|
|
4
4
|
"description": "The React implementation of the Equinor Design System",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"**/*.css"
|
|
@@ -79,11 +79,12 @@
|
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
81
|
"@babel/runtime": "^7.19.0",
|
|
82
|
-
"@equinor/eds-icons": "0.16.0",
|
|
83
|
-
"@equinor/eds-tokens": "0.9.0",
|
|
84
|
-
"@equinor/eds-utils": "0.7.0",
|
|
85
82
|
"@floating-ui/react-dom-interactions": "^0.10.1",
|
|
86
|
-
"
|
|
83
|
+
"@tanstack/react-virtual": "3.0.0-beta.30",
|
|
84
|
+
"downshift": "^7.0.1",
|
|
85
|
+
"@equinor/eds-icons": "0.17.0",
|
|
86
|
+
"@equinor/eds-tokens": "0.9.0",
|
|
87
|
+
"@equinor/eds-utils": "0.7.0"
|
|
87
88
|
},
|
|
88
89
|
"engines": {
|
|
89
90
|
"pnpm": ">=4",
|