@entur/dropdown 7.0.3 → 7.1.1-beta.0

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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  This package contains the different Dropdown components.
4
4
 
5
- > 💡 Looking for the [documentation](https://design.entur.no/komponenter/skjemaelementer/dropdown)?
5
+ > 💡 Looking for the [documentation](https://linje.entur.no/komponenter/skjemaelementer/dropdown)?
6
6
 
7
7
  ## Installation
8
8
 
@@ -14,4 +14,4 @@ yarn add @entur/dropdown
14
14
 
15
15
  ## Usage
16
16
 
17
- Please refer to the [documentation](https://design.entur.no/komponenter/skjemaelementer/dropdown) for usage information.
17
+ Please refer to the [documentation](https://linje.entur.no/komponenter/skjemaelementer/dropdown) for usage information.
@@ -37,8 +37,10 @@ export type DropdownProps<ValueType> = {
37
37
  variant?: VariantType | typeof error | typeof info;
38
38
  /** Valideringsmelding, brukes sammen med `variant` */
39
39
  feedback?: string;
40
- /** Tekst eller ikon som kommer før dropdown-en */
40
+ /** Tekst eller ikon som kommer først i dropdown-feltet */
41
41
  prepend?: React.ReactNode;
42
+ /** */
43
+ loading?: boolean;
42
44
  /** En tekst som beskriver hva som skjer når man venter på items
43
45
  * @default 'Laster inn …'
44
46
  */
@@ -85,5 +87,5 @@ export type DropdownProps<ValueType> = {
85
87
  */
86
88
  ariaLabelSelectedItem?: string;
87
89
  };
88
- export declare const Dropdown: <ValueType extends unknown>({ ariaLabelChosenSingular, ariaLabelCloseList, ariaLabelOpenList, ariaLabelSelectedItem, className, clearable, disabled, disableLabelAnimation, feedback, items: initialItems, label, labelClearSelectedItem, labelTooltip, listStyle, loadingText, noMatchesText, onChange, placeholder, prepend, readOnly, selectedItem, selectOnBlur, selectOnTab, style, variant, ...rest }: DropdownProps<ValueType>) => React.JSX.Element;
90
+ export declare const Dropdown: <ValueType extends unknown>(props: DropdownProps<ValueType> & React.RefAttributes<HTMLDivElement>) => React.ReactElement | null;
89
91
  export {};
@@ -1,16 +1,8 @@
1
1
  import React, { Dispatch, SetStateAction } from 'react';
2
- import { VariantType } from '@entur/utils';
3
- import { NormalizedDropdownItemType, PotentiallyAsyncDropdownItemType } from './types';
2
+ import { DropdownProps } from './Dropdown';
3
+ import { NormalizedDropdownItemType } from './types';
4
4
  import './Dropdown.scss';
5
- /** @deprecated use variant="information" instead */
6
- declare const info = "info";
7
- /** @deprecated use variant="negative" instead */
8
- declare const error = "error";
9
- export type MultiSelectProps<ValueType> = {
10
- /** Beskrivende tekst som forklarer feltet */
11
- label: string;
12
- /** Tilgjengelige valg i MultiSelect */
13
- items: PotentiallyAsyncDropdownItemType<ValueType>;
5
+ export type MultiSelectProps<ValueType> = Omit<DropdownProps<ValueType>, 'selectedItem' | 'onChange'> & {
14
6
  /** Elementer som er valgt blant 'items'. Bruk tom liste for ingen valgte
15
7
  */
16
8
  selectedItems: NormalizedDropdownItemType<ValueType>[];
@@ -21,30 +13,6 @@ export type MultiSelectProps<ValueType> = {
21
13
  * @default Regex-test som sjekker om item.label inneholder input-teksten
22
14
  */
23
15
  itemFilter?: (item: NormalizedDropdownItemType<ValueType>, inputValue: string | undefined) => boolean;
24
- /** Hvilken valideringsvariant som gjelder */
25
- variant?: VariantType | typeof error | typeof info;
26
- /** Valideringsmelding, brukes sammen med `variant` */
27
- feedback?: string;
28
- /** Om dropdown-en er deaktivert */
29
- disabled?: boolean;
30
- /** Om dropdown-en er i read-only modus */
31
- readOnly?: boolean;
32
- /** Om en knapp for å fjerne alle valg skal vises
33
- * @default true
34
- */
35
- clearable?: boolean;
36
- /** Plasserer ledeteksten statisk på toppen av inputfeltet */
37
- disableLabelAnimation?: boolean;
38
- /** Placeholder-tekst når ingenting er satt */
39
- placeholder?: string;
40
- /** En tekst som beskriver hva som skjer når man venter på items
41
- * @default "Laster inn …"
42
- */
43
- loadingText?: string;
44
- /** Tekst som kommer opp når det ikke er noe treff på filtreringsøket
45
- * @default "Ingen treff for søket"
46
- */
47
- noMatchesText?: string;
48
16
  /** Skjuler «Velg alle» fra listen med valg
49
17
  * @default false
50
18
  */
@@ -57,27 +25,10 @@ export type MultiSelectProps<ValueType> = {
57
25
  * @default 10
58
26
  */
59
27
  maxChips?: number;
60
- /** Tekst eller ikon som kommer før MultiSelect */
61
- prepend?: React.ReactNode;
62
28
  /** Resetter input etter at et element er valgt i listen
63
29
  * @default false
64
30
  */
65
31
  clearInputOnSelect?: boolean;
66
- /** Lar brukeren velge ved å "tab-e" seg ut av komponenten */
67
- selectOnTab?: boolean;
68
- /**
69
- * @deprecated
70
- * Bruk selectOnTab i stedet
71
- *
72
- * Lar brukeren velge ved å "tab-e" seg ut av komponenten */
73
- selectOnBlur?: boolean;
74
- style?: React.CSSProperties;
75
- /** Styling som sendes ned til MultiSelect-lista */
76
- listStyle?: {
77
- [key: string]: any;
78
- };
79
- /** Ekstra klassenavn */
80
- className?: string;
81
32
  /** Teksten som vises for «Velg alle»-elementet i listen
82
33
  * @default "Velg alle"
83
34
  */
@@ -90,8 +41,6 @@ export type MultiSelectProps<ValueType> = {
90
41
  * @default "Fjern valgte"
91
42
  */
92
43
  labelClearAllItems?: string;
93
- /** En tooltip som gir ekstra info om inputfeltet */
94
- labelTooltip?: React.ReactNode;
95
44
  /** Tekst for skjemleser på knapper for å fjerne valgt element
96
45
  * @default "trykk for å fjerne valg"
97
46
  */
@@ -100,27 +49,60 @@ export type MultiSelectProps<ValueType> = {
100
49
  * @default "valgte"
101
50
  */
102
51
  ariaLabelChosenPlural?: string;
103
- /** Tekst for skjemleser for knapp som lukker listen med valg
104
- * @default "Lukk liste med valg"
105
- */
106
- ariaLabelCloseList?: string;
107
- /** Tekst for skjemleser for knapp som åpner listen med valg
108
- * @default "Åpne liste med valg"
109
- */
110
- ariaLabelOpenList?: string;
111
52
  /** Tekst for skjemleser for å hoppe til input-feltet
112
53
  * @default `${selectedItems.length} valgte elementer, trykk for å hoppe til tekstfeltet`
113
54
  */
114
55
  ariaLabelJumpToInput?: string;
115
- /** Ord for at et element er valgt i entall
116
- * eks. 'Element 1, _valgt_'
117
- * @default 'valgt'
56
+ };
57
+ export declare const MultiSelect: <ValueType extends unknown>(props: Omit<DropdownProps<ValueType>, "selectedItem" | "onChange"> & {
58
+ /** Elementer som er valgt blant 'items'. Bruk tom liste for ingen valgte
118
59
  */
119
- ariaLabelChosenSingular?: string;
120
- /** Tekst for skjermleser som beskriver statusen til et element som valgt
121
- * @default ', valgt element, trykk for å fjerne'
60
+ selectedItems: NormalizedDropdownItemType<ValueType>[];
61
+ /** Callback med alle valgte verdier.
62
+ * Bruk denne til å oppdatere selectedItems-listen */
63
+ onChange?: ((selectedItems: NormalizedDropdownItemType<ValueType>[]) => void | React.Dispatch<React.SetStateAction<NormalizedDropdownItemType<ValueType>[]>>) | undefined;
64
+ /** Filtreringen som brukes når man skriver inn tekst i inputfeltet
65
+ * @default Regex-test som sjekker om item.label inneholder input-teksten
122
66
  */
123
- ariaLabelSelectedItem?: string;
124
- };
125
- export declare const MultiSelect: <ValueType extends unknown>({ className, clearable, clearInputOnSelect, debounceTimeout, disabled, disableLabelAnimation, feedback, hideSelectAll, items: initialItems, itemFilter, label, labelAllItemsSelected, labelClearAllItems, labelSelectAll, labelTooltip, listStyle, loadingText, maxChips, noMatchesText, onChange, placeholder, readOnly, selectedItems, selectOnBlur, selectOnTab, style, variant, ariaLabelChosenSingular, ariaLabelChosenPlural, ariaLabelCloseList, ariaLabelJumpToInput, ariaLabelOpenList, ariaLabelRemoveSelected, ariaLabelSelectedItem, ...rest }: MultiSelectProps<ValueType>) => React.JSX.Element;
126
- export {};
67
+ itemFilter?: ((item: NormalizedDropdownItemType<ValueType>, inputValue: string | undefined) => boolean) | undefined;
68
+ /** Skjuler «Velg alle» fra listen med valg
69
+ * @default false
70
+ */
71
+ hideSelectAll?: boolean;
72
+ /** Antall millisekunder man venter før man kaller en potensiell items-funksjon
73
+ * @default 250
74
+ */
75
+ debounceTimeout?: number;
76
+ /** Maks antall individuelle valgt-element-tags i MultiSelect-en før de blir til en samle-tag
77
+ * @default 10
78
+ */
79
+ maxChips?: number;
80
+ /** Resetter input etter at et element er valgt i listen
81
+ * @default false
82
+ */
83
+ clearInputOnSelect?: boolean;
84
+ /** Teksten som vises for «Velg alle»-elementet i listen
85
+ * @default "Velg alle"
86
+ */
87
+ labelSelectAll?: string;
88
+ /** Teksten som vises for «Velg alle»-elementet i listen
89
+ * @default "Alle valgt"
90
+ */
91
+ labelAllItemsSelected?: string;
92
+ /** Skjermleser-tekst som for å fjerne alle valg
93
+ * @default "Fjern valgte"
94
+ */
95
+ labelClearAllItems?: string;
96
+ /** Tekst for skjemleser på knapper for å fjerne valgt element
97
+ * @default "trykk for å fjerne valg"
98
+ */
99
+ ariaLabelRemoveSelected?: string;
100
+ /** Tekst for skjemleser for å indikere at et element er valgt
101
+ * @default "valgte"
102
+ */
103
+ ariaLabelChosenPlural?: string;
104
+ /** Tekst for skjemleser for å hoppe til input-feltet
105
+ * @default `${selectedItems.length} valgte elementer, trykk for å hoppe til tekstfeltet`
106
+ */
107
+ ariaLabelJumpToInput?: string;
108
+ } & React.RefAttributes<HTMLInputElement>) => React.ReactElement | null;
@@ -52,5 +52,5 @@ export type NativeDropdownProps<ValueType> = {
52
52
  disableLabelAnimation?: boolean;
53
53
  [key: string]: any;
54
54
  };
55
- export declare const NativeDropdown: <ValueType extends string | number>({ className, disabled, disableLabelAnimation, feedback, items, label, loadingText, onChange, prepend, readOnly, selectedItem, style, value, variant, ...rest }: NativeDropdownProps<ValueType>) => React.JSX.Element;
55
+ export declare const NativeDropdown: <ValueType extends string | number>(props: NativeDropdownProps<ValueType> & React.RefAttributes<HTMLSelectElement>) => React.ReactElement | null;
56
56
  export {};
@@ -1,95 +1,32 @@
1
- import React, { Dispatch, SetStateAction } from 'react';
2
- import { VariantType } from '@entur/utils';
3
- import { NormalizedDropdownItemType, PotentiallyAsyncDropdownItemType } from './types';
1
+ import React from 'react';
2
+ import { DropdownProps } from './Dropdown';
3
+ import { NormalizedDropdownItemType } from './types';
4
4
  import './Dropdown.scss';
5
- /** @deprecated use variant="information" instead */
6
- declare const info = "info";
7
- /** @deprecated use variant="negative" instead */
8
- declare const error = "error";
9
- export type SearchableDropdownProps<ValueType> = {
10
- /** Tilgjengelige valg i dropdown-en */
11
- items: PotentiallyAsyncDropdownItemType<ValueType>;
12
- /** Valgt element. Bruk null for ingen verdi */
13
- selectedItem: NormalizedDropdownItemType<ValueType> | null;
14
- /** Callback ved valg som skal brukes til å oppdatere selectedItem */
15
- onChange?: (selectedItem: NormalizedDropdownItemType<ValueType> | null) => void | Dispatch<SetStateAction<NormalizedDropdownItemType<ValueType> | null>>;
5
+ export type SearchableDropdownProps<ValueType> = DropdownProps<ValueType> & {
16
6
  /** Filtreringen som brukes når man skriver inn tekst i inputfeltet
17
7
  * @default Regex-test som sjekker om item.label inneholder input-teksten
18
8
  */
19
9
  itemFilter?: (item: NormalizedDropdownItemType<ValueType>, inputValue: string | undefined) => boolean;
20
- /** Beskrivende tekst som forklarer feltet */
21
- label: string;
22
- /** Placeholder-tekst når ingenting er satt */
23
- placeholder?: string;
24
- /** Vis knapp for å nullstille Dropdown-en skal vises
25
- * @default true
26
- */
27
- clearable?: boolean;
28
- /** Plasserer labelen statisk på toppen av inputfeltet
29
- * @default false
30
- */
31
- disableLabelAnimation?: boolean;
32
10
  /** Antall millisekunder man venter etter tekstinput før det gjøres kall for å oppdatere items
33
11
  * Denne er kun relevant hvis du sender inn en funksjon som items.
34
12
  */
35
13
  debounceTimeout?: number;
36
- /** Deaktiver dropdown-en */
37
- disabled?: boolean;
38
- /** Lar brukeren velge ved å "tab-e" seg ut av komponenten */
39
- selectOnTab?: boolean;
40
- /**
41
- * @deprecated
42
- * Bruk selectOnTab i stedet
43
- *
44
- * Lar brukeren velge ved å "tab-e" seg ut av komponenten */
45
- selectOnBlur?: boolean;
46
14
  /** Tekst som kommer opp når det ikke er noe treff på filtreringsøket
47
15
  * @default "Ingen treff for søket"
48
16
  */
49
17
  noMatchesText?: string;
50
- /** Gjør dropdown-en til å kun kunne leses
51
- * @default false
52
- */
53
- readOnly?: boolean;
54
- /** Tekst eller ikon som kommer før dropdown-en */
55
- prepend?: React.ReactNode;
56
- /** En tekst som beskriver hva som skjer når man venter på items */
57
- loadingText?: string;
58
- /** Hvilken valideringsvariant som gjelder*/
59
- variant?: VariantType | typeof error | typeof info;
60
- /** Valideringsmelding, brukes sammen med `variant` */
61
- feedback?: string;
62
- className?: string;
63
- style?: {
64
- [key: string]: any;
65
- };
66
- /** Style som kun påføres listeelementet */
67
- listStyle?: {
68
- [key: string]: any;
69
- };
70
- /** Tekst som beskriver at man fjerner valget sitt
71
- * @default "fjern valgt"
72
- */
73
- labelClearSelectedItem?: string;
74
- /** En tooltip som gir ekstra info om inputfeltet */
75
- labelTooltip?: React.ReactNode;
76
- /** Tekst for skjemleser for knapp som lukker listen med valg
77
- * @default "Lukk liste med valg"
78
- */
79
- ariaLabelCloseList?: string;
80
- /** Tekst for skjemleser for knapp som åpner listen med valg
81
- * @default "Åpne liste med valg"
18
+ };
19
+ export declare const SearchableDropdown: <ValueType extends unknown>(props: DropdownProps<ValueType> & {
20
+ /** Filtreringen som brukes når man skriver inn tekst i inputfeltet
21
+ * @default Regex-test som sjekker om item.label inneholder input-teksten
82
22
  */
83
- ariaLabelOpenList?: string;
84
- /** Ord for at et element er valgt i entall
85
- * eks. 'Element 1, _valgt_'
86
- * @default "valgt"
23
+ itemFilter?: ((item: NormalizedDropdownItemType<ValueType>, inputValue: string | undefined) => boolean) | undefined;
24
+ /** Antall millisekunder man venter etter tekstinput før det gjøres kall for å oppdatere items
25
+ * Denne er kun relevant hvis du sender inn en funksjon som items.
87
26
  */
88
- ariaLabelChosenSingular?: string;
89
- /** Tekst for skjermleser som beskriver statusen til et element som valgt
90
- * @default ", valgt element, trykk for å fjerne"
27
+ debounceTimeout?: number;
28
+ /** Tekst som kommer opp når det ikke er noe treff på filtreringsøket
29
+ * @default "Ingen treff for søket"
91
30
  */
92
- ariaLabelSelectedItem?: string;
93
- };
94
- export declare const SearchableDropdown: <ValueType extends unknown>({ ariaLabelChosenSingular, ariaLabelCloseList, ariaLabelOpenList, ariaLabelSelectedItem, className, clearable, debounceTimeout, disabled, disableLabelAnimation, feedback, items: initialItems, itemFilter, label, labelClearSelectedItem, labelTooltip, listStyle, loadingText, noMatchesText, onChange, placeholder, prepend, readOnly, selectedItem: value, selectOnBlur, selectOnTab, style, variant, ...rest }: SearchableDropdownProps<ValueType>) => React.JSX.Element;
95
- export {};
31
+ noMatchesText?: string;
32
+ } & React.RefAttributes<HTMLInputElement>) => React.ReactElement | null;
@@ -20,7 +20,7 @@ type DropdownListProps<ValueType> = {
20
20
  selectAllCheckboxState?: () => boolean | 'indeterminate';
21
21
  selectAllItem?: NormalizedDropdownItemType<string>;
22
22
  selectedItems: NormalizedDropdownItemType<ValueType>[];
23
- [key: string]: any;
23
+ style?: React.CSSProperties;
24
24
  };
25
- export declare const DropdownList: <ValueType extends unknown>({ ariaLabelChosenSingular, ariaLabelSelectedItem, getItemProps, getMenuProps, inputValue, isOpen, highlightedIndex, listItems, floatingStyles, setListRef, loading, loadingText, noMatchesText, selectAllCheckboxState, selectAllItem, selectedItems, showSelectAllInList, ...rest }: DropdownListProps<ValueType>) => React.JSX.Element;
25
+ export declare const DropdownList: <ValueType extends unknown>({ ariaLabelChosenSingular, ariaLabelSelectedItem, getItemProps, getMenuProps, isOpen, highlightedIndex, listItems, floatingStyles, setListRef, loading, loadingText, noMatchesText, selectAllCheckboxState, selectAllItem, selectedItems, ...rest }: DropdownListProps<ValueType>) => React.JSX.Element;
26
26
  export {};
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { UseComboboxGetToggleButtonPropsOptions, UseMultipleSelectionGetSelectedItemPropsOptions } from 'downshift';
2
+ import { UseComboboxGetToggleButtonPropsReturnValue, UseMultipleSelectionGetSelectedItemPropsOptions } from 'downshift';
3
3
  import { NormalizedDropdownItemType } from '../types';
4
4
  import './FieldComponents.scss';
5
5
  export declare const SelectedItemTag: <ValueType extends unknown>({ ariaLabelRemoveSelected, ariaLabelChosen, disabled, getSelectedItemProps, index, readOnly, removeSelectedItem, selectedItem, }: {
@@ -12,20 +12,22 @@ export declare const SelectedItemTag: <ValueType extends unknown>({ ariaLabelRem
12
12
  removeSelectedItem: (item: NormalizedDropdownItemType<ValueType>) => void;
13
13
  selectedItem: NormalizedDropdownItemType<ValueType>;
14
14
  }) => React.JSX.Element;
15
- type FieldAppendProps<ValueType> = {
16
- ariaHiddenToggleButton?: boolean;
17
- ariaLabelCloseList?: string;
18
- ariaLabelOpenList?: string;
15
+ export declare const DropdownFieldAppendix: (props: Partial<UseComboboxGetToggleButtonPropsReturnValue> & {
16
+ ariaLabelCloseList: string;
17
+ ariaLabelOpenList: string;
19
18
  clearable?: boolean;
20
- labelClearSelectedItems?: string;
19
+ labelClearSelected: string;
21
20
  disabled?: boolean;
22
21
  focusable?: boolean;
23
- getToggleButtonProps: (options?: UseComboboxGetToggleButtonPropsOptions | undefined) => any;
24
22
  isOpen: boolean;
25
- loading?: boolean;
26
- loadingText?: string;
23
+ loading: boolean;
24
+ loadingText: string | undefined;
25
+ onClear: () => void;
26
+ itemIsSelected: boolean;
27
+ } & React.RefAttributes<HTMLButtonElement>) => React.ReactElement | null;
28
+ export declare const ClearableButton: ({ onClear, labelClearSelectedItems, focusable, }: {
27
29
  onClear: () => void;
28
- selectedItems: (NormalizedDropdownItemType<ValueType> | null)[];
29
- };
30
- export declare const FieldAppend: <ValueType extends unknown>({ ariaHiddenToggleButton, ariaLabelCloseList, ariaLabelOpenList, clearable, labelClearSelectedItems, disabled, focusable, getToggleButtonProps, isOpen, loading, loadingText, onClear, selectedItems, }: FieldAppendProps<ValueType>) => React.JSX.Element | null;
31
- export {};
30
+ labelClearSelectedItems?: string;
31
+ focusable?: boolean;
32
+ ariaLabelClearItems?: string;
33
+ }) => React.JSX.Element;