@entur/dropdown 4.0.0-beta.0 → 4.0.0-beta.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/CHANGELOG.md +13 -0
- package/dist/beta/SearchableDropdown.d.ts +26 -3
- package/dist/dropdown.cjs.development.js +43 -35
- 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 +44 -36
- package/dist/dropdown.esm.js.map +1 -1
- package/dist/styles.css +142 -84
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,19 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [4.0.0-beta.2](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@4.0.0-beta.1...@entur/dropdown@4.0.0-beta.2) (2022-09-30)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **searchable dropdown:** fixes from beta testing ([c460e94](https://bitbucket.org/enturas/design-system/commits/c460e947b2f39fd486b79d433d43a4ac3cdc9bdc))
|
|
11
|
+
|
|
12
|
+
# [4.0.0-beta.1](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@3.0.15...@entur/dropdown@4.0.0-beta.1) (2022-09-27)
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
- **searchable dropdown:** fixes from beta testing ([f88405f](https://bitbucket.org/enturas/design-system/commits/f88405fd45353163bcd0b202b538a470d86e5d8c))
|
|
17
|
+
- **searchable dropdown:** mvp new controlled searchable dropdown component (alpha) ([b8b2d05](https://bitbucket.org/enturas/design-system/commits/b8b2d051461406de0544b92b5169b066c91386ce))
|
|
18
|
+
|
|
6
19
|
## [3.0.14](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@3.0.13...@entur/dropdown@3.0.14) (2022-08-31)
|
|
7
20
|
|
|
8
21
|
**Note:** Version bump only for package @entur/dropdown
|
|
@@ -1,14 +1,37 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { VariantType } from '@entur/form';
|
|
2
3
|
import { NormalizedDropdownItemType } from '../useNormalizedItems';
|
|
3
4
|
import './dropdown.scss';
|
|
4
5
|
export declare type SearchableDropdownProps = {
|
|
6
|
+
/** Tilgjengelige valg i dropdown-en */
|
|
5
7
|
items: NormalizedDropdownItemType[];
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
/** Valgt element. Bruk null for ingen verdi. */
|
|
9
|
+
selectedItem: NormalizedDropdownItemType | null;
|
|
10
|
+
/** Callback for når brukeren endrer valg */
|
|
11
|
+
onChange: (value: NormalizedDropdownItemType | null) => void;
|
|
12
|
+
/** Beskrivende tekst som forklarer feltet */
|
|
8
13
|
label: string;
|
|
14
|
+
/** Placeholder-tekst når ingenting er satt */
|
|
9
15
|
placeholder?: string;
|
|
16
|
+
/** Vis knapp for å nullstille Dropdown-en skal vises
|
|
17
|
+
* @default false
|
|
18
|
+
*/
|
|
10
19
|
clearable?: boolean;
|
|
20
|
+
/** Vis listen med valg skal vises på fokus av inputfeltet
|
|
21
|
+
* @default false
|
|
22
|
+
*/
|
|
11
23
|
openOnFocus?: boolean;
|
|
24
|
+
/** Gjør dropdown-en til å kun kunne leses */
|
|
25
|
+
readonly?: boolean;
|
|
26
|
+
feedback?: string;
|
|
27
|
+
variant?: VariantType;
|
|
12
28
|
className?: string;
|
|
29
|
+
style?: {
|
|
30
|
+
[key: string]: any;
|
|
31
|
+
};
|
|
32
|
+
listStyle?: {
|
|
33
|
+
[key: string]: any;
|
|
34
|
+
};
|
|
35
|
+
[key: string]: any;
|
|
13
36
|
};
|
|
14
|
-
export declare const SearchableDropdownBeta: ({ items, value, onChange, label, placeholder, clearable, openOnFocus, className, ...rest }: SearchableDropdownProps) => JSX.Element;
|
|
37
|
+
export declare const SearchableDropdownBeta: ({ items, selectedItem: value, onChange, label, placeholder, clearable, openOnFocus, readonly, feedback, variant, className, listStyle, ...rest }: SearchableDropdownProps) => JSX.Element;
|
|
@@ -1785,7 +1785,7 @@ function SelectedItemsLabel(items) {
|
|
|
1785
1785
|
}).toString() : items.length + " elementer valgt";
|
|
1786
1786
|
}
|
|
1787
1787
|
|
|
1788
|
-
var _excluded = ["items", "
|
|
1788
|
+
var _excluded = ["items", "selectedItem", "onChange", "label", "placeholder", "clearable", "openOnFocus", "readonly", "feedback", "variant", "className", "listStyle"];
|
|
1789
1789
|
|
|
1790
1790
|
function lowerCaseFilterTest(item, input) {
|
|
1791
1791
|
if (!input) {
|
|
@@ -1795,22 +1795,28 @@ function lowerCaseFilterTest(item, input) {
|
|
|
1795
1795
|
var sanitizeEscapeCharacters = input.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
|
|
1796
1796
|
var inputRegex = new RegExp(sanitizeEscapeCharacters, 'i');
|
|
1797
1797
|
return inputRegex.test(item.label);
|
|
1798
|
-
}
|
|
1798
|
+
} // TODO Husk å @deprecate searchable-prop-en til Dropdown når denne komponenten skal ha official release
|
|
1799
|
+
|
|
1799
1800
|
|
|
1800
1801
|
var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
1801
1802
|
var _selectedItem$label;
|
|
1802
1803
|
|
|
1803
1804
|
var items = _ref.items,
|
|
1804
|
-
value = _ref.
|
|
1805
|
+
value = _ref.selectedItem,
|
|
1805
1806
|
onChange = _ref.onChange,
|
|
1806
|
-
|
|
1807
|
-
label = _ref$label === void 0 ? '!MANGLER LABEL!' : _ref$label,
|
|
1807
|
+
label = _ref.label,
|
|
1808
1808
|
placeholder = _ref.placeholder,
|
|
1809
1809
|
_ref$clearable = _ref.clearable,
|
|
1810
1810
|
clearable = _ref$clearable === void 0 ? false : _ref$clearable,
|
|
1811
1811
|
_ref$openOnFocus = _ref.openOnFocus,
|
|
1812
1812
|
openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
|
|
1813
|
+
_ref$readonly = _ref.readonly,
|
|
1814
|
+
readonly = _ref$readonly === void 0 ? false : _ref$readonly,
|
|
1815
|
+
feedback = _ref.feedback,
|
|
1816
|
+
_ref$variant = _ref.variant,
|
|
1817
|
+
variant = _ref$variant === void 0 ? 'info' : _ref$variant,
|
|
1813
1818
|
className = _ref.className,
|
|
1819
|
+
listStyle = _ref.listStyle,
|
|
1814
1820
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
1815
1821
|
|
|
1816
1822
|
var _React$useState = React__default["default"].useState(items),
|
|
@@ -1849,13 +1855,14 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1849
1855
|
},
|
|
1850
1856
|
items: filteredItems,
|
|
1851
1857
|
itemToString: function itemToString(item) {
|
|
1852
|
-
|
|
1858
|
+
if (item) return item.value;
|
|
1859
|
+
return '';
|
|
1853
1860
|
},
|
|
1854
1861
|
stateReducer: stateReducer,
|
|
1855
1862
|
selectedItem: value,
|
|
1856
1863
|
onSelectedItemChange: function onSelectedItemChange(_ref3) {
|
|
1857
1864
|
var newSelectedItem = _ref3.selectedItem;
|
|
1858
|
-
return onChange(newSelectedItem);
|
|
1865
|
+
return onChange(newSelectedItem != null ? newSelectedItem : null);
|
|
1859
1866
|
}
|
|
1860
1867
|
}, rest)),
|
|
1861
1868
|
isOpen = _useCombobox.isOpen,
|
|
@@ -1868,26 +1875,28 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1868
1875
|
getItemProps = _useCombobox.getItemProps,
|
|
1869
1876
|
selectedItem = _useCombobox.selectedItem,
|
|
1870
1877
|
openMenu = _useCombobox.openMenu,
|
|
1871
|
-
inputValue = _useCombobox.inputValue
|
|
1872
|
-
setInputValue = _useCombobox.setInputValue;
|
|
1878
|
+
inputValue = _useCombobox.inputValue; // TODO Husk å generelt legge inn støtte for typeof value === string
|
|
1873
1879
|
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1880
|
+
|
|
1881
|
+
return React__default["default"].createElement("div", {
|
|
1882
|
+
className: "eds-searchable-dropdown__wrapper"
|
|
1883
|
+
}, React__default["default"].createElement(form.BaseFormControl, _extends({
|
|
1878
1884
|
append: React__default["default"].createElement(Appendix, {
|
|
1879
1885
|
selectedItem: selectedItem,
|
|
1880
1886
|
isOpen: isOpen,
|
|
1881
1887
|
clearable: clearable,
|
|
1882
1888
|
loading: false,
|
|
1883
1889
|
loadingText: '',
|
|
1884
|
-
readOnly:
|
|
1890
|
+
readOnly: readonly,
|
|
1885
1891
|
onChange: onChange,
|
|
1886
1892
|
getToggleButtonProps: getToggleButtonProps
|
|
1887
1893
|
}),
|
|
1888
1894
|
className: classNames__default["default"]('eds-searchable-dropdown', className),
|
|
1889
1895
|
label: label,
|
|
1890
1896
|
isFilled: selectedItem ? true : false,
|
|
1897
|
+
feedback: feedback,
|
|
1898
|
+
variant: variant,
|
|
1899
|
+
readOnly: readonly,
|
|
1891
1900
|
labelProps: getLabelProps()
|
|
1892
1901
|
}, getComboboxProps(), rest), !hideSelectedItem && selectedItem && !inputValue && React__default["default"].createElement("span", {
|
|
1893
1902
|
className: "eds-searchable-dropdown__selected-item__wrapper"
|
|
@@ -1905,22 +1914,23 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1905
1914
|
onFocus: function onFocus() {
|
|
1906
1915
|
if (!isOpen && openOnFocus) openMenu();
|
|
1907
1916
|
setHideSelectedItem(true);
|
|
1908
|
-
}
|
|
1909
|
-
}), {
|
|
1917
|
+
},
|
|
1910
1918
|
onBlur: function onBlur() {
|
|
1911
1919
|
setHideSelectedItem(false);
|
|
1912
1920
|
},
|
|
1913
1921
|
ref: inputRef
|
|
1914
|
-
}))), React__default["default"].createElement("ul", _extends({
|
|
1915
|
-
className: classNames__default["default"]('eds-
|
|
1916
|
-
'eds-
|
|
1922
|
+
})))), React__default["default"].createElement("ul", _extends({
|
|
1923
|
+
className: classNames__default["default"]('eds-searchable-dropdown__list', {
|
|
1924
|
+
'eds-searchable-dropdown__list--open': isOpen
|
|
1917
1925
|
})
|
|
1918
|
-
}, getMenuProps(),
|
|
1926
|
+
}, getMenuProps(), {
|
|
1927
|
+
style: _extends({}, rest.style, listStyle)
|
|
1928
|
+
}), isOpen ? filteredItems.map(function (item, index) {
|
|
1919
1929
|
return (// eslint-disable-next-line react/jsx-key
|
|
1920
1930
|
React__default["default"].createElement("li", _extends({
|
|
1921
|
-
className: classNames__default["default"]('eds-
|
|
1922
|
-
'eds-
|
|
1923
|
-
'eds-
|
|
1931
|
+
className: classNames__default["default"]('eds-searchable-dropdown__list__item', {
|
|
1932
|
+
'eds-searchable-dropdown__list__item--highlighted': highlightedIndex === index,
|
|
1933
|
+
'eds-searchable-dropdown__list__item--selected': (selectedItem == null ? void 0 : selectedItem.value) === item.value
|
|
1924
1934
|
})
|
|
1925
1935
|
}, getItemProps({
|
|
1926
1936
|
key: "" + index + item.value,
|
|
@@ -1930,27 +1940,25 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1930
1940
|
return React__default["default"].createElement(Icon, {
|
|
1931
1941
|
key: index,
|
|
1932
1942
|
inline: true,
|
|
1933
|
-
className: "eds-
|
|
1943
|
+
className: "eds-searchable-dropdown__list__item-icon"
|
|
1934
1944
|
});
|
|
1935
|
-
})), selectedItem === item && React__default["default"].createElement(icons.CheckIcon, null))
|
|
1945
|
+
})), (selectedItem == null ? void 0 : selectedItem.value) === item.value && React__default["default"].createElement(icons.CheckIcon, null))
|
|
1936
1946
|
);
|
|
1937
1947
|
}) : null));
|
|
1938
1948
|
};
|
|
1939
1949
|
|
|
1940
1950
|
var Appendix = function Appendix(_ref4) {
|
|
1941
1951
|
var clearable = _ref4.clearable,
|
|
1942
|
-
loading = _ref4.loading,
|
|
1943
|
-
loadingText = _ref4.loadingText,
|
|
1944
1952
|
readOnly = _ref4.readOnly,
|
|
1945
1953
|
getToggleButtonProps = _ref4.getToggleButtonProps,
|
|
1946
1954
|
selectedItem = _ref4.selectedItem,
|
|
1947
1955
|
isOpen = _ref4.isOpen,
|
|
1948
1956
|
onChange = _ref4.onChange;
|
|
1949
1957
|
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
}
|
|
1953
|
-
|
|
1958
|
+
// TODO implement loading / async
|
|
1959
|
+
// if (loading) {
|
|
1960
|
+
// return <DropdownLoadingDots>{loadingText}</DropdownLoadingDots>;
|
|
1961
|
+
// }
|
|
1954
1962
|
if (readOnly) {
|
|
1955
1963
|
return null;
|
|
1956
1964
|
}
|
|
@@ -1961,17 +1969,17 @@ var Appendix = function Appendix(_ref4) {
|
|
|
1961
1969
|
alignItems: 'center'
|
|
1962
1970
|
}
|
|
1963
1971
|
}, clearable && selectedItem && React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement("button", {
|
|
1964
|
-
className: "eds-
|
|
1972
|
+
className: "eds-searchable-dropdown-appendix__clear-button",
|
|
1965
1973
|
type: "button",
|
|
1966
1974
|
tabIndex: -1,
|
|
1967
1975
|
onClick: function onClick() {
|
|
1968
1976
|
return onChange(null);
|
|
1969
1977
|
}
|
|
1970
1978
|
}, React__default["default"].createElement(icons.CloseSmallIcon, null)), React__default["default"].createElement("div", {
|
|
1971
|
-
className: "eds-
|
|
1979
|
+
className: "eds-searchable-dropdown-appendix__divider"
|
|
1972
1980
|
})), React__default["default"].createElement("button", _extends({}, getToggleButtonProps({
|
|
1973
|
-
className: classNames__default["default"]('eds-
|
|
1974
|
-
'eds-
|
|
1981
|
+
className: classNames__default["default"]('eds-searchable-dropdown-appendix__toggle-button', {
|
|
1982
|
+
'eds-searchable-dropdown-appendix__toggle-button--open': isOpen
|
|
1975
1983
|
})
|
|
1976
1984
|
}), {
|
|
1977
1985
|
tabIndex: "-1",
|