@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.
@@ -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 */
@@ -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
- maxTags?: number;
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, maxTags, noMatchesText, onChange, placeholder, readOnly, selectedItems, selectOnBlur, style, variant, ariaLabelChosenSingular, ariaLabelChosenPlural, ariaLabelCloseList, ariaLabelJumpToInput, ariaLabelOpenList, ariaLabelRemoveSelected, ariaLabelSelectedItem, ...rest }: MultiSelectProps) => JSX.Element;
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?: (value: NormalizedDropdownItemType | null) => void;
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: "right",
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", "maxTags", "noMatchesText", "onChange", "placeholder", "readOnly", "selectedItems", "selectOnBlur", "style", "variant", "ariaLabelChosenSingular", "ariaLabelChosenPlural", "ariaLabelCloseList", "ariaLabelJumpToInput", "ariaLabelOpenList", "ariaLabelRemoveSelected", "ariaLabelSelectedItem"];
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$maxTags = _ref.maxTags,
1879
- maxTags = _ref$maxTags === void 0 ? 10 : _ref$maxTags,
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 maxTags
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 (_, _ref4) {
1974
- var changes = _ref4.changes,
1975
- type = _ref4.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(_ref5) {
2046
- var type = _ref5.type,
2047
- clickedItem = _ref5.selectedItem;
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 < maxTags ? React__default["default"].createElement(React__default["default"].Fragment, null, selectedItems.length > 1 ? React__default["default"].createElement(a11y.VisuallyHidden, {
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();