@entur/dropdown 5.0.0-RC.0 → 5.0.0-RC.2
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/Dropdown.d.ts +2 -2
- package/dist/MultiSelect.d.ts +6 -6
- package/dist/SearchableDropdown.d.ts +2 -2
- package/dist/dropdown.cjs.development.js +37 -22
- package/dist/dropdown.cjs.development.js.map +1 -1
- package/dist/dropdown.cjs.production.min.js +1 -1
- package/dist/dropdown.cjs.production.min.js.map +1 -1
- package/dist/dropdown.esm.js +37 -22
- package/dist/dropdown.esm.js.map +1 -1
- package/dist/styles.css +148 -156
- package/package.json +9 -9
package/dist/Dropdown.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { Dispatch, SetStateAction } from 'react';
|
|
2
2
|
import { VariantType } from '@entur/form';
|
|
3
3
|
import { NormalizedDropdownItemType } from './useNormalizedItems';
|
|
4
4
|
import { PotentiallyAsyncDropdownItemType } from './useResolvedItems';
|
|
@@ -9,7 +9,7 @@ export type DropdownProps = {
|
|
|
9
9
|
/** Valgt verdi. Bruk null for ingen verdi. */
|
|
10
10
|
selectedItem: NormalizedDropdownItemType | null;
|
|
11
11
|
/** Callback ved valg som skal oppdatere selectedItem */
|
|
12
|
-
onChange?: (selectedItem: NormalizedDropdownItemType | null) => void
|
|
12
|
+
onChange?: (selectedItem: NormalizedDropdownItemType | null) => void | Dispatch<SetStateAction<NormalizedDropdownItemType | null>>;
|
|
13
13
|
/** Beskrivende tekst som forklarer feltet */
|
|
14
14
|
label: string;
|
|
15
15
|
/** Placeholder-tekst når ingenting er satt */
|
package/dist/MultiSelect.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { Dispatch, SetStateAction } from 'react';
|
|
2
2
|
import { VariantType } from '@entur/form';
|
|
3
3
|
import { NormalizedDropdownItemType } from './useNormalizedItems';
|
|
4
4
|
import { PotentiallyAsyncDropdownItemType } from './useResolvedItems';
|
|
5
5
|
import './Dropdown.scss';
|
|
6
6
|
export type MultiSelectProps = {
|
|
7
|
+
/** Beskrivende tekst som forklarer feltet */
|
|
8
|
+
label: string;
|
|
7
9
|
/** Tilgjengelige valg i MultiSelect */
|
|
8
10
|
items: PotentiallyAsyncDropdownItemType;
|
|
9
11
|
/** Elementer som er valgt blant 'items'. Bruk tom liste for ingen valgte
|
|
@@ -11,13 +13,11 @@ export type MultiSelectProps = {
|
|
|
11
13
|
selectedItems: NormalizedDropdownItemType[];
|
|
12
14
|
/** Callback med alle valgte verdier.
|
|
13
15
|
* Bruk denne til å oppdatere selectedItems-listen */
|
|
14
|
-
onChange?: (selectedItems: NormalizedDropdownItemType[]) => void
|
|
16
|
+
onChange?: (selectedItems: NormalizedDropdownItemType[]) => void | Dispatch<SetStateAction<NormalizedDropdownItemType[]>>;
|
|
15
17
|
/** Filtreringen som brukes når man skriver inn tekst i inputfeltet
|
|
16
18
|
* @default Regex-test som sjekker om item.label inneholder input-teksten
|
|
17
19
|
*/
|
|
18
20
|
itemFilter?: (item: NormalizedDropdownItemType, inputValue: string | undefined) => boolean;
|
|
19
|
-
/** Beskrivende tekst som forklarer feltet */
|
|
20
|
-
label?: string;
|
|
21
21
|
/** Hvilken valideringsvariant som gjelder */
|
|
22
22
|
variant?: VariantType;
|
|
23
23
|
/** Valideringsmelding, brukes sammen med `variant` */
|
|
@@ -51,7 +51,7 @@ export type MultiSelectProps = {
|
|
|
51
51
|
/** Maks antall individuelle valgt-element-tags i MultiSelect-en før de blir til en samle-tag
|
|
52
52
|
* @default 10
|
|
53
53
|
*/
|
|
54
|
-
|
|
54
|
+
maxChips?: number;
|
|
55
55
|
/** Tekst eller ikon som kommer før MultiSelect */
|
|
56
56
|
prepend?: React.ReactNode;
|
|
57
57
|
/** Resetter input etter at et element er valgt i listen
|
|
@@ -108,4 +108,4 @@ export type MultiSelectProps = {
|
|
|
108
108
|
*/
|
|
109
109
|
ariaLabelSelectedItem?: string;
|
|
110
110
|
};
|
|
111
|
-
export declare const MultiSelect: ({ className, clearable, clearInputOnSelect, debounceTimeout, disabled, feedback, hideSelectAll, itemFilter, items: initialItems, label, labelAllItemsSelected, labelClearAllItems, labelSelectAll, listStyle, loadingText,
|
|
111
|
+
export declare const MultiSelect: ({ className, clearable, clearInputOnSelect, debounceTimeout, disabled, feedback, hideSelectAll, itemFilter, items: initialItems, label, labelAllItemsSelected, labelClearAllItems, labelSelectAll, listStyle, loadingText, maxChips, noMatchesText, onChange, placeholder, readOnly, selectedItems, selectOnBlur, style, variant, ariaLabelChosenSingular, ariaLabelChosenPlural, ariaLabelCloseList, ariaLabelJumpToInput, ariaLabelOpenList, ariaLabelRemoveSelected, ariaLabelSelectedItem, ...rest }: MultiSelectProps) => JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { Dispatch, SetStateAction } from 'react';
|
|
2
2
|
import { VariantType } from '@entur/form';
|
|
3
3
|
import { NormalizedDropdownItemType } from './useNormalizedItems';
|
|
4
4
|
import { PotentiallyAsyncDropdownItemType } from './useResolvedItems';
|
|
@@ -9,7 +9,7 @@ export type SearchableDropdownProps = {
|
|
|
9
9
|
/** Valgt element. Bruk null for ingen verdi */
|
|
10
10
|
selectedItem: NormalizedDropdownItemType | null;
|
|
11
11
|
/** Callback ved valg som skal brukes til å oppdatere selectedItem */
|
|
12
|
-
onChange?: (
|
|
12
|
+
onChange?: (selectedItem: NormalizedDropdownItemType | null) => void | Dispatch<SetStateAction<NormalizedDropdownItemType | null>>;
|
|
13
13
|
/** Filtreringen som brukes når man skriver inn tekst i inputfeltet
|
|
14
14
|
* @default Regex-test som sjekker om item.label inneholder input-teksten
|
|
15
15
|
*/
|
|
@@ -1450,8 +1450,9 @@ var ClearableButton = function ClearableButton(_ref4) {
|
|
|
1450
1450
|
focusable = _ref4$focusable === void 0 ? false : _ref4$focusable;
|
|
1451
1451
|
return React__default["default"].createElement(tooltip.Tooltip, {
|
|
1452
1452
|
"aria-hidden": "true",
|
|
1453
|
-
placement: "
|
|
1454
|
-
content: labelClearSelectedItems
|
|
1453
|
+
placement: "top",
|
|
1454
|
+
content: labelClearSelectedItems,
|
|
1455
|
+
className: "eds-dropdown-appendix__clear-button__tooltip"
|
|
1455
1456
|
}, React__default["default"].createElement(button.IconButton, {
|
|
1456
1457
|
className: "eds-dropdown-appendix__clear-button",
|
|
1457
1458
|
type: "button",
|
|
@@ -1785,7 +1786,8 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1785
1786
|
});
|
|
1786
1787
|
};
|
|
1787
1788
|
return React__default["default"].createElement("div", {
|
|
1788
|
-
className: "eds-dropdown__wrapper
|
|
1789
|
+
className: classNames__default["default"]('eds-dropdown__wrapper', className),
|
|
1790
|
+
style: style
|
|
1789
1791
|
}, React__default["default"].createElement(form.BaseFormControl, _extends({
|
|
1790
1792
|
append: React__default["default"].createElement(FieldAppend$1, {
|
|
1791
1793
|
ariaLabelCloseList: ariaLabelCloseList,
|
|
@@ -1801,7 +1803,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1801
1803
|
onClear: handleOnClear,
|
|
1802
1804
|
selectedItems: [selectedItem]
|
|
1803
1805
|
}),
|
|
1804
|
-
className:
|
|
1806
|
+
className: "eds-dropdown",
|
|
1805
1807
|
disabled: disabled,
|
|
1806
1808
|
disableLabelAnimation: disableLabelAnimation,
|
|
1807
1809
|
feedback: feedback,
|
|
@@ -1811,7 +1813,6 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1811
1813
|
labelProps: getLabelProps(),
|
|
1812
1814
|
prepend: prepend,
|
|
1813
1815
|
readOnly: readOnly,
|
|
1814
|
-
style: style,
|
|
1815
1816
|
variant: variant
|
|
1816
1817
|
}, rest), !hideSelectedItem && selectedItem && !inputValue && React__default["default"].createElement("span", {
|
|
1817
1818
|
className: "eds-dropdown__selected-item__wrapper",
|
|
@@ -1850,7 +1851,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1850
1851
|
}));
|
|
1851
1852
|
};
|
|
1852
1853
|
|
|
1853
|
-
var _excluded$2 = ["className", "clearable", "clearInputOnSelect", "debounceTimeout", "disabled", "feedback", "hideSelectAll", "itemFilter", "items", "label", "labelAllItemsSelected", "labelClearAllItems", "labelSelectAll", "listStyle", "loadingText", "
|
|
1854
|
+
var _excluded$2 = ["className", "clearable", "clearInputOnSelect", "debounceTimeout", "disabled", "feedback", "hideSelectAll", "itemFilter", "items", "label", "labelAllItemsSelected", "labelClearAllItems", "labelSelectAll", "listStyle", "loadingText", "maxChips", "noMatchesText", "onChange", "placeholder", "readOnly", "selectedItems", "selectOnBlur", "style", "variant", "ariaLabelChosenSingular", "ariaLabelChosenPlural", "ariaLabelCloseList", "ariaLabelJumpToInput", "ariaLabelOpenList", "ariaLabelRemoveSelected", "ariaLabelSelectedItem"];
|
|
1854
1855
|
var MultiSelect = function MultiSelect(_ref) {
|
|
1855
1856
|
var className = _ref.className,
|
|
1856
1857
|
_ref$clearable = _ref.clearable,
|
|
@@ -1875,8 +1876,8 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1875
1876
|
labelSelectAll = _ref$labelSelectAll === void 0 ? 'Velg alle' : _ref$labelSelectAll,
|
|
1876
1877
|
listStyle = _ref.listStyle,
|
|
1877
1878
|
loadingText = _ref.loadingText,
|
|
1878
|
-
_ref$
|
|
1879
|
-
|
|
1879
|
+
_ref$maxChips = _ref.maxChips,
|
|
1880
|
+
maxChips = _ref$maxChips === void 0 ? 10 : _ref$maxChips,
|
|
1880
1881
|
_ref$onChange = _ref.onChange,
|
|
1881
1882
|
onChange = _ref$onChange === void 0 ? function () {
|
|
1882
1883
|
return undefined;
|
|
@@ -1921,7 +1922,7 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1921
1922
|
label: labelSelectAll
|
|
1922
1923
|
};
|
|
1923
1924
|
// special 'item' used as a replacement selected item tag for when
|
|
1924
|
-
// there are more selected element than
|
|
1925
|
+
// there are more selected element than maxChips
|
|
1925
1926
|
var summarySelectedItems = React__default["default"].useMemo(function () {
|
|
1926
1927
|
return {
|
|
1927
1928
|
value: EMPTY_INPUT,
|
|
@@ -1960,6 +1961,20 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1960
1961
|
var _useMultipleSelection = Downshift.useMultipleSelection({
|
|
1961
1962
|
selectedItems: selectedItems,
|
|
1962
1963
|
itemToString: itemToString,
|
|
1964
|
+
onStateChange: function onStateChange(_ref4) {
|
|
1965
|
+
var newSelectedItems = _ref4.selectedItems,
|
|
1966
|
+
type = _ref4.type;
|
|
1967
|
+
switch (type) {
|
|
1968
|
+
case Downshift.useMultipleSelection.stateChangeTypes.SelectedItemKeyDownBackspace:
|
|
1969
|
+
case Downshift.useMultipleSelection.stateChangeTypes.SelectedItemKeyDownDelete:
|
|
1970
|
+
case Downshift.useMultipleSelection.stateChangeTypes.DropdownKeyDownBackspace:
|
|
1971
|
+
case Downshift.useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem:
|
|
1972
|
+
{
|
|
1973
|
+
if (newSelectedItems !== undefined) onChange(newSelectedItems);
|
|
1974
|
+
break;
|
|
1975
|
+
}
|
|
1976
|
+
}
|
|
1977
|
+
},
|
|
1963
1978
|
// Accessibility
|
|
1964
1979
|
getA11yRemovalMessage: function getA11yRemovalMessage$1(options) {
|
|
1965
1980
|
return getA11yRemovalMessage(_extends({}, options, {
|
|
@@ -1970,9 +1985,9 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1970
1985
|
}),
|
|
1971
1986
|
getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
|
|
1972
1987
|
getDropdownProps = _useMultipleSelection.getDropdownProps;
|
|
1973
|
-
var stateReducer = React__default["default"].useCallback(function (_,
|
|
1974
|
-
var changes =
|
|
1975
|
-
type =
|
|
1988
|
+
var stateReducer = React__default["default"].useCallback(function (_, _ref5) {
|
|
1989
|
+
var changes = _ref5.changes,
|
|
1990
|
+
type = _ref5.type;
|
|
1976
1991
|
if (changes.highlightedIndex !== undefined && (changes == null ? void 0 : changes.highlightedIndex) >= 0) {
|
|
1977
1992
|
setLastHighlightedIndex(changes == null ? void 0 : changes.highlightedIndex);
|
|
1978
1993
|
}
|
|
@@ -2042,9 +2057,9 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2042
2057
|
itemToString: itemToString,
|
|
2043
2058
|
selectedItem: null,
|
|
2044
2059
|
stateReducer: stateReducer,
|
|
2045
|
-
onStateChange: function onStateChange(
|
|
2046
|
-
var type =
|
|
2047
|
-
clickedItem =
|
|
2060
|
+
onStateChange: function onStateChange(_ref6) {
|
|
2061
|
+
var type = _ref6.type,
|
|
2062
|
+
clickedItem = _ref6.selectedItem;
|
|
2048
2063
|
// clickedItem means item chosen either via mouse or keyboard
|
|
2049
2064
|
if (!clickedItem) return;
|
|
2050
2065
|
switch (type) {
|
|
@@ -2096,7 +2111,8 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2096
2111
|
});
|
|
2097
2112
|
};
|
|
2098
2113
|
return React__default["default"].createElement("div", {
|
|
2099
|
-
className: "eds-dropdown__wrapper
|
|
2114
|
+
className: classNames__default["default"]('eds-dropdown__wrapper', className),
|
|
2115
|
+
style: style
|
|
2100
2116
|
}, React__default["default"].createElement(form.BaseFormControl, _extends({
|
|
2101
2117
|
append: React__default["default"].createElement(FieldAppend$1, {
|
|
2102
2118
|
ariaLabelCloseList: ariaLabelCloseList,
|
|
@@ -2112,7 +2128,7 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2112
2128
|
onClear: handleOnClear,
|
|
2113
2129
|
getToggleButtonProps: getToggleButtonProps
|
|
2114
2130
|
}),
|
|
2115
|
-
className:
|
|
2131
|
+
className: "eds-dropdown",
|
|
2116
2132
|
disabled: disabled,
|
|
2117
2133
|
feedback: feedback,
|
|
2118
2134
|
isFilled: hasSelectedItems || inputValue !== EMPTY_INPUT,
|
|
@@ -2120,7 +2136,6 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2120
2136
|
labelId: getLabelProps().id,
|
|
2121
2137
|
labelProps: getLabelProps(),
|
|
2122
2138
|
readOnly: readOnly,
|
|
2123
|
-
style: style,
|
|
2124
2139
|
variant: variant
|
|
2125
2140
|
}, rest), React__default["default"].createElement("div", {
|
|
2126
2141
|
className: classNames__default["default"]('eds-dropdown__selected-items-and-input', {
|
|
@@ -2130,7 +2145,7 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2130
2145
|
var _inputRef$current4;
|
|
2131
2146
|
if (e.target === e.currentTarget) (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.focus();
|
|
2132
2147
|
}
|
|
2133
|
-
}, selectedItems.length <
|
|
2148
|
+
}, selectedItems.length < maxChips ? React__default["default"].createElement(React__default["default"].Fragment, null, selectedItems.length > 1 ? React__default["default"].createElement(a11y.VisuallyHidden, {
|
|
2134
2149
|
onClick: function onClick() {
|
|
2135
2150
|
var _inputRef$current5;
|
|
2136
2151
|
return (_inputRef$current5 = inputRef.current) == null ? void 0 : _inputRef$current5.focus();
|
|
@@ -2252,7 +2267,8 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
2252
2267
|
getToggleButtonProps = _useSelect.getToggleButtonProps,
|
|
2253
2268
|
highlightedIndex = _useSelect.highlightedIndex;
|
|
2254
2269
|
return React__default["default"].createElement("div", {
|
|
2255
|
-
className: "eds-dropdown__wrapper
|
|
2270
|
+
className: classNames__default["default"]('eds-dropdown__wrapper', className),
|
|
2271
|
+
style: style
|
|
2256
2272
|
}, React__default["default"].createElement(form.BaseFormControl, _extends({
|
|
2257
2273
|
append: React__default["default"].createElement(FieldAppend$1, {
|
|
2258
2274
|
ariaHiddenToggleButton: true,
|
|
@@ -2271,7 +2287,7 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
2271
2287
|
disabled: readOnly || disabled,
|
|
2272
2288
|
selectedItems: [selectedItem]
|
|
2273
2289
|
}),
|
|
2274
|
-
className: classNames__default["default"]('eds-dropdown',
|
|
2290
|
+
className: classNames__default["default"]('eds-dropdown', {
|
|
2275
2291
|
'eds-dropdown--not-filled': !isFilled
|
|
2276
2292
|
}),
|
|
2277
2293
|
disabled: disabled,
|
|
@@ -2283,7 +2299,6 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
2283
2299
|
labelProps: getLabelProps(),
|
|
2284
2300
|
prepend: prepend,
|
|
2285
2301
|
readOnly: readOnly,
|
|
2286
|
-
style: style,
|
|
2287
2302
|
variant: variant
|
|
2288
2303
|
}, rest), React__default["default"].createElement("div", _extends({
|
|
2289
2304
|
className: "eds-dropdown__selected-item-button"
|