@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 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
- value: NormalizedDropdownItemType;
7
- onChange: (value: NormalizedDropdownItemType | undefined | null) => void;
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", "value", "onChange", "label", "placeholder", "clearable", "openOnFocus", "className"];
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.value,
1805
+ value = _ref.selectedItem,
1805
1806
  onChange = _ref.onChange,
1806
- _ref$label = _ref.label,
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
- return item ? item.value : '';
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
- React.useEffect(function () {
1875
- if (inputValue.toLowerCase() === (value == null ? void 0 : value.label.toLowerCase()) || inputValue.toLowerCase() === (value == null ? void 0 : value.value.toLowerCase())) setInputValue('');
1876
- }, [value]);
1877
- return React__default["default"].createElement("div", null, React__default["default"].createElement(form.BaseFormControl, _extends({
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: false,
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-dropdown-list', {
1916
- 'eds-dropdown-list--open': isOpen
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(), rest), isOpen ? filteredItems.map(function (item, index) {
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-dropdown-list__item', {
1922
- 'eds-dropdown-list__item--highlighted': highlightedIndex === index,
1923
- 'eds-dropdown-list__item--selected': selectedItem === item
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-dropdown-list__item-icon"
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
- if (loading) {
1951
- return React__default["default"].createElement(DropdownLoadingDots, null, loadingText);
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-dropdown__clear-button",
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-dropdown__divider"
1979
+ className: "eds-searchable-dropdown-appendix__divider"
1972
1980
  })), React__default["default"].createElement("button", _extends({}, getToggleButtonProps({
1973
- className: classNames__default["default"]('eds-dropdown__toggle-button', {
1974
- 'eds-dropdown__toggle-button--open': isOpen
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",