@entur/dropdown 5.0.0-RC.1 → 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 +28 -13
- 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 +28 -13
- package/dist/dropdown.esm.js.map +1 -1
- package/dist/styles.css +154 -162
- 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",
|
|
@@ -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) {
|
|
@@ -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();
|