@synerise/ds-item-picker 0.11.63 → 0.12.1

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,25 @@
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
+ ## [0.12.1](https://github.com/Synerise/synerise-design/compare/@synerise/ds-item-picker@0.12.0...@synerise/ds-item-picker@0.12.1) (2024-07-15)
7
+
8
+ **Note:** Version bump only for package @synerise/ds-item-picker
9
+
10
+
11
+
12
+
13
+
14
+ # [0.12.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-item-picker@0.11.63...@synerise/ds-item-picker@0.12.0) (2024-07-05)
15
+
16
+
17
+ ### Features
18
+
19
+ * **item-picker:** swapped Menu.Item for ListItem ([cb90ba7](https://github.com/Synerise/synerise-design/commit/cb90ba7532bd091b44f62f9bd7394e789c16597e))
20
+
21
+
22
+
23
+
24
+
6
25
  ## [0.11.63](https://github.com/Synerise/synerise-design/compare/@synerise/ds-item-picker@0.11.62...@synerise/ds-item-picker@0.11.63) (2024-07-02)
7
26
 
8
27
  **Note:** Version bump only for package @synerise/ds-item-picker
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { ItemPickerProps } from './ItemPicker.types';
3
3
  declare const _default: React.ForwardRefExoticComponent<import("react-intl").Omit<ItemPickerProps, "intl"> & {
4
4
  forwardedRef?: React.Ref<any> | undefined;
@@ -1,6 +1,6 @@
1
1
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
- import * as React from 'react';
3
+ import React, { useState, useCallback, useMemo, useRef } from 'react';
4
4
  import Label from '@synerise/ds-input/dist/Label/Label';
5
5
  import { Description } from '@synerise/ds-typography';
6
6
  import Dropdown from '@synerise/ds-dropdown';
@@ -69,11 +69,11 @@ var ItemPicker = function ItemPicker(_ref) {
69
69
  withClearConfirmation = _ref.withClearConfirmation,
70
70
  scrollbarProps = _ref.scrollbarProps;
71
71
 
72
- var _React$useState = React.useState(false),
73
- dropdownOpened = _React$useState[0],
74
- setDropdownOpened = _React$useState[1];
72
+ var _useState = useState(false),
73
+ dropdownOpened = _useState[0],
74
+ setDropdownOpened = _useState[1];
75
75
 
76
- var clearSearchBarValue = React.useRef();
76
+ var clearSearchBarValue = useRef();
77
77
 
78
78
  var onVisibilityChange = function onVisibilityChange(state) {
79
79
  setDropdownOpened(state);
@@ -91,15 +91,15 @@ var ItemPicker = function ItemPicker(_ref) {
91
91
  }
92
92
  };
93
93
 
94
- var openDropdown = React.useCallback(function () {
94
+ var openDropdown = useCallback(function () {
95
95
  setDropdownOpened(true);
96
96
  typeof onFocus === 'function' && onFocus();
97
97
  }, [setDropdownOpened, onFocus]);
98
- var closeDropdown = React.useCallback(function () {
98
+ var closeDropdown = useCallback(function () {
99
99
  setDropdownOpened(false);
100
100
  typeof onBlur === 'function' && onBlur();
101
101
  }, [setDropdownOpened, onBlur]);
102
- var dropdownOverlay = React.useMemo(function () {
102
+ var dropdownOverlay = useMemo(function () {
103
103
  return /*#__PURE__*/React.createElement(ItemPickerDropdown, {
104
104
  searchBarProps: searchBarProps,
105
105
  clearSearchQuery: clearSearchBarValue.current,
@@ -116,7 +116,7 @@ var ItemPicker = function ItemPicker(_ref) {
116
116
  scrollbarProps: scrollbarProps
117
117
  });
118
118
  }, [searchBarProps, onChange, dataSource, searchPlaceholder, closeDropdown, noResults, dropdownVisibleRows, dropdownRowHeight, dropdownBottomAction, closeOnBottomAction, dropdownOpened, scrollbarProps]);
119
- var renderTrigger = React.useMemo(function () {
119
+ var renderTrigger = useMemo(function () {
120
120
  return /*#__PURE__*/React.createElement(Trigger, {
121
121
  clear: clear,
122
122
  selected: selectedItem,
@@ -1,29 +1,29 @@
1
- import * as React from 'react';
2
- import { IntlShape } from 'react-intl';
3
- import { SearchBarProps } from '@synerise/ds-search-bar/dist/SearchBar.types';
4
- import { MenuItemProps } from '@synerise/ds-menu/dist/Elements/Item/MenuItem.types';
5
- import { DropdownProps } from '@synerise/ds-dropdown/dist/Dropdown';
6
- import { ScrollbarAdditionalProps } from '@synerise/ds-scrollbar';
1
+ import type { ReactNode } from 'react';
2
+ import type { IntlShape } from 'react-intl';
3
+ import type { SearchBarProps } from '@synerise/ds-search-bar/dist/SearchBar.types';
4
+ import type { DropdownProps } from '@synerise/ds-dropdown';
5
+ import type { ListItemProps } from '@synerise/ds-list-item';
6
+ import type { ScrollbarAdditionalProps } from '@synerise/ds-scrollbar';
7
7
  export type ItemPickerSize = 'small' | 'large';
8
8
  export type ItemPickerProps = {
9
- dataSource: MenuItemProps[];
9
+ dataSource: ListItemProps[];
10
10
  intl: IntlShape;
11
- onChange: (item: MenuItemProps) => void;
11
+ onChange: (item: ListItemProps) => void;
12
12
  onClear?: () => void;
13
- placeholder: string | React.ReactNode;
14
- changeButtonLabel?: string | React.ReactNode;
15
- clear?: string | React.ReactNode;
13
+ placeholder: ReactNode;
14
+ changeButtonLabel?: ReactNode;
15
+ clear?: ReactNode;
16
16
  clearConfirmTitle?: string;
17
17
  closeOnBottomAction?: boolean;
18
- description?: string | React.ReactNode;
18
+ description?: ReactNode;
19
19
  disabled?: boolean;
20
20
  dropdownBottomAction?: React.ReactNode;
21
21
  dropdownProps?: Partial<DropdownProps>;
22
22
  dropdownRowHeight?: number;
23
23
  dropdownVisibleRows?: number;
24
24
  error?: boolean;
25
- errorMessage?: string | React.ReactNode;
26
- label?: string | React.ReactNode;
25
+ errorMessage?: ReactNode;
26
+ label?: ReactNode;
27
27
  onBlur?: () => void;
28
28
  onFocus?: () => void;
29
29
  noResults?: string;
@@ -31,9 +31,9 @@ export type ItemPickerProps = {
31
31
  placeholderIcon?: React.ReactNode;
32
32
  searchPlaceholder?: string;
33
33
  searchBarProps?: Partial<SearchBarProps>;
34
- selectedItem?: MenuItemProps | undefined;
34
+ selectedItem?: ListItemProps | undefined;
35
35
  size?: ItemPickerSize;
36
- tooltip?: string | React.ReactNode;
36
+ tooltip?: ReactNode;
37
37
  withClearConfirmation?: boolean;
38
38
  yesText?: string;
39
39
  scrollbarProps?: ScrollbarAdditionalProps;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
2
- import { Props } from './ItemPickerDropdown.types';
3
- declare const ItemPickerDropdown: React.FC<Props>;
1
+ import React from 'react';
2
+ import { ItemPickerDropdownProps } from './ItemPickerDropdown.types';
3
+ declare const ItemPickerDropdown: ({ onChange, placeholder, dataSource, closeDropdown, noResults, dropdownVisibleRows, dropdownRowHeight, dropdownBottomAction, closeOnBottomAction, isDropdownOpened, searchBarProps, scrollbarProps, clearSearchQuery, }: ItemPickerDropdownProps) => React.JSX.Element;
4
4
  export default ItemPickerDropdown;
@@ -1,8 +1,8 @@
1
1
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
- import * as React from 'react';
3
+ import React, { useState, useMemo, useEffect } from 'react';
4
4
  import SearchBar from '@synerise/ds-search-bar';
5
- import Menu from '@synerise/ds-menu';
5
+ import ListItem from '@synerise/ds-list-item';
6
6
  import Result from '@synerise/ds-result';
7
7
  import Icon, { SearchM } from '@synerise/ds-icon';
8
8
  import { SearchItems } from '@synerise/ds-search/dist/Elements';
@@ -29,15 +29,15 @@ var ItemPickerDropdown = function ItemPickerDropdown(_ref) {
29
29
  var rowCount = dropdownVisibleRows || DEFAULT_VISIBLE_ROWS;
30
30
  var rowHeight = dropdownRowHeight || DEFAULT_ROW_HEIGHT;
31
31
 
32
- var _React$useState = React.useState(''),
33
- searchQuery = _React$useState[0],
34
- setSearchQuery = _React$useState[1];
32
+ var _useState = useState(''),
33
+ searchQuery = _useState[0],
34
+ setSearchQuery = _useState[1];
35
35
 
36
- var _React$useState2 = React.useState(0),
37
- scrollTop = _React$useState2[0],
38
- setScrollTop = _React$useState2[1];
36
+ var _useState2 = useState(0),
37
+ scrollTop = _useState2[0],
38
+ setScrollTop = _useState2[1];
39
39
 
40
- React.useEffect(function () {
40
+ useEffect(function () {
41
41
  if (clearSearchQuery && clearSearchQuery > 0) {
42
42
  setSearchQuery('');
43
43
  }
@@ -53,7 +53,7 @@ var ItemPickerDropdown = function ItemPickerDropdown(_ref) {
53
53
  onChange(item);
54
54
  };
55
55
 
56
- var filteredDataSource = React.useMemo(function () {
56
+ var filteredDataSource = useMemo(function () {
57
57
  return searchQuery ? dataSource.filter(function (item) {
58
58
  return item.text && String(item.text).toLowerCase().includes(searchQuery.toLowerCase());
59
59
  }) : dataSource;
@@ -66,7 +66,9 @@ var ItemPickerDropdown = function ItemPickerDropdown(_ref) {
66
66
  return dropdownBottomAction && /*#__PURE__*/React.createElement(S.DropdownFooter, null, bottomAction);
67
67
  };
68
68
 
69
- return /*#__PURE__*/React.createElement(S.DropdownWrapper, null, /*#__PURE__*/React.createElement(SearchBar, _extends({
69
+ return /*#__PURE__*/React.createElement(S.DropdownWrapper, {
70
+ "data-testid": "ds-item-picker-dropdown"
71
+ }, /*#__PURE__*/React.createElement(SearchBar, _extends({
70
72
  iconLeft: /*#__PURE__*/React.createElement(Icon, {
71
73
  component: /*#__PURE__*/React.createElement(SearchM, null)
72
74
  }),
@@ -77,14 +79,14 @@ var ItemPickerDropdown = function ItemPickerDropdown(_ref) {
77
79
  return setSearchQuery('');
78
80
  },
79
81
  autofocus: isDropdownOpened
80
- }, searchBarProps)), /*#__PURE__*/React.createElement(S.DSMenu, null, (filteredDataSource == null ? void 0 : filteredDataSource.length) === 0 && /*#__PURE__*/React.createElement(Result, {
82
+ }, searchBarProps)), /*#__PURE__*/React.createElement(S.ListWrapper, null, (filteredDataSource == null ? void 0 : filteredDataSource.length) === 0 && /*#__PURE__*/React.createElement(Result, {
81
83
  type: "no-results",
82
84
  description: noResults
83
85
  }), /*#__PURE__*/React.createElement(S.StyledScrollbar, _extends({
84
86
  maxHeight: rowCount * rowHeight,
85
87
  absolute: true,
86
- onScroll: function onScroll(e) {
87
- return setScrollTop(e.currentTarget.scrollTop);
88
+ onScroll: function onScroll(event) {
89
+ return setScrollTop(event.currentTarget.scrollTop);
88
90
  },
89
91
  style: {
90
92
  paddingRight: '8px'
@@ -93,7 +95,7 @@ var ItemPickerDropdown = function ItemPickerDropdown(_ref) {
93
95
  data: filteredDataSource,
94
96
  highlight: (_searchBarProps$value = searchBarProps == null ? void 0 : searchBarProps.value) != null ? _searchBarProps$value : searchQuery,
95
97
  itemRender: function itemRender(item) {
96
- return /*#__PURE__*/React.createElement(Menu.Item, _extends({
98
+ return /*#__PURE__*/React.createElement(ListItem, _extends({
97
99
  key: item == null ? void 0 : item.text
98
100
  }, item));
99
101
  },
@@ -107,7 +109,8 @@ var ItemPickerDropdown = function ItemPickerDropdown(_ref) {
107
109
  scrollTop: scrollTop
108
110
  } // @ts-ignore
109
111
  ,
110
- width: "100%"
112
+ width: "100%",
113
+ renderInMenu: false
111
114
  }))), renderBottomAction());
112
115
  };
113
116
 
@@ -1,8 +1,7 @@
1
1
  /// <reference types="react" />
2
- import Menu from '@synerise/ds-menu';
3
2
  import { ScrollbarProps } from '@synerise/ds-scrollbar/dist/Scrollbar.types';
4
3
  export declare const DropdownWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
5
- export declare const DSMenu: import("styled-components").StyledComponent<typeof Menu, any, {}, never>;
4
+ export declare const ListWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
6
5
  export declare const StyledScrollbar: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<(ScrollbarProps | import("@synerise/ds-scrollbar").VirtualScrollbarProps) & import("react").RefAttributes<HTMLElement>>, any, import("@synerise/ds-scrollbar").ScrollbarAdditionalProps & {
7
6
  children?: import("react").ReactNode;
8
7
  }, never>;
@@ -1,14 +1,16 @@
1
1
  import styled from 'styled-components';
2
- import Menu from '@synerise/ds-menu';
3
2
  import Scrollbar from '@synerise/ds-scrollbar';
4
3
  export var DropdownWrapper = styled.div.withConfig({
5
4
  displayName: "ItemPickerDropdownstyle__DropdownWrapper",
6
5
  componentId: "jxq36p-0"
7
6
  })(["display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;width:100%;"]);
8
- export var DSMenu = styled(Menu).withConfig({
9
- displayName: "ItemPickerDropdownstyle__DSMenu",
7
+ export var ListWrapper = styled.div.withConfig({
8
+ displayName: "ItemPickerDropdownstyle__ListWrapper",
10
9
  componentId: "jxq36p-1"
11
- })(["display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:8px 0 8px 8px;"]);
10
+ })(["display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:8px 0 8px 8px;background:", ";"], function (_ref) {
11
+ var theme = _ref.theme;
12
+ return theme.palette.white;
13
+ });
12
14
  export var StyledScrollbar = styled(Scrollbar).withConfig({
13
15
  displayName: "ItemPickerDropdownstyle__StyledScrollbar",
14
16
  componentId: "jxq36p-2"
@@ -1,19 +1,20 @@
1
- /// <reference types="react" />
2
- import { MenuItemProps } from '@synerise/ds-menu/dist/Elements/Item/MenuItem.types';
1
+ import { ReactNode } from 'react';
2
+ import { ListItemProps } from '@synerise/ds-list-item';
3
3
  import { ScrollbarAdditionalProps } from '@synerise/ds-scrollbar';
4
4
  import { SearchBarProps } from '@synerise/ds-search-bar/dist/SearchBar.types';
5
- export interface Props {
6
- onChange: (item: MenuItemProps) => void;
5
+ export type ItemPickerDropdownProps = {
6
+ onChange: (item: ListItemProps) => void;
7
7
  placeholder: string;
8
8
  clearSearchQuery?: number;
9
- dataSource: MenuItemProps[];
9
+ dataSource: ListItemProps[];
10
10
  closeDropdown: () => void;
11
11
  noResults: string;
12
12
  dropdownVisibleRows?: number;
13
13
  dropdownRowHeight?: number;
14
- dropdownBottomAction?: React.ReactNode;
14
+ dropdownBottomAction?: ReactNode;
15
15
  closeOnBottomAction?: boolean;
16
16
  isDropdownOpened: boolean;
17
17
  searchBarProps?: Partial<SearchBarProps>;
18
18
  scrollbarProps?: ScrollbarAdditionalProps;
19
- }
19
+ };
20
+ export type Props = ItemPickerDropdownProps;
@@ -1,22 +1,23 @@
1
- import * as React from 'react';
2
- import { MenuItemProps } from '@synerise/ds-menu/dist/Elements/Item/MenuItem.types';
1
+ import { ReactNode } from 'react';
2
+ import { ListItemProps } from '@synerise/ds-list-item';
3
3
  import { ItemPickerSize } from '../ItemPicker.types';
4
- export interface Props {
4
+ export type ItemPickerTriggerProps = {
5
5
  openDropdown: () => void;
6
6
  closeDropdown: () => void;
7
7
  size: ItemPickerSize;
8
- clear: string | React.ReactNode;
8
+ clear: ReactNode;
9
9
  onClear?: () => void;
10
10
  opened: boolean;
11
- placeholder: string | React.ReactNode;
12
- placeholderIcon?: React.ReactNode;
11
+ placeholder: ReactNode;
12
+ placeholderIcon?: ReactNode;
13
13
  error?: boolean;
14
14
  disabled?: boolean;
15
- selected?: MenuItemProps;
16
- changeButtonLabel?: string | React.ReactNode;
15
+ selected?: ListItemProps;
16
+ changeButtonLabel?: ReactNode;
17
17
  withChangeButton?: boolean;
18
18
  clearConfirmTitle: string;
19
19
  yesText: string;
20
20
  noText: string;
21
21
  withClearConfirmation: boolean;
22
- }
22
+ };
23
+ export type Props = ItemPickerTriggerProps;
package/dist/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export { default } from './ItemPicker';
2
+ export type { ItemPickerProps } from './ItemPicker.types';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-item-picker",
3
- "version": "0.11.63",
3
+ "version": "0.12.1",
4
4
  "description": "ItemPicker UI Component for the Synerise Design System",
5
5
  "license": "ISC",
6
6
  "repository": "Synerise/synerise-design",
@@ -33,31 +33,24 @@
33
33
  ],
34
34
  "types": "dist/index.d.ts",
35
35
  "dependencies": {
36
- "@synerise/ds-button": "^0.21.1",
37
- "@synerise/ds-dropdown": "^0.18.3",
38
- "@synerise/ds-icon": "^0.63.0",
39
- "@synerise/ds-input": "^0.23.0",
40
- "@synerise/ds-menu": "^0.19.3",
41
- "@synerise/ds-popconfirm": "^0.10.40",
42
- "@synerise/ds-result": "^0.6.58",
43
- "@synerise/ds-scrollbar": "^0.11.2",
44
- "@synerise/ds-search": "^0.8.95",
45
- "@synerise/ds-search-bar": "^0.6.78",
46
- "@synerise/ds-tooltip": "^0.14.31",
47
- "@synerise/ds-typography": "^0.15.0",
36
+ "@synerise/ds-button": "^0.21.3",
37
+ "@synerise/ds-dropdown": "^0.18.5",
38
+ "@synerise/ds-icon": "^0.64.1",
39
+ "@synerise/ds-input": "^0.23.2",
40
+ "@synerise/ds-list-item": "^0.4.1",
41
+ "@synerise/ds-popconfirm": "^0.10.42",
42
+ "@synerise/ds-result": "^0.6.60",
43
+ "@synerise/ds-scrollbar": "^0.11.4",
44
+ "@synerise/ds-search": "^0.9.1",
45
+ "@synerise/ds-search-bar": "^0.6.80",
46
+ "@synerise/ds-tooltip": "^0.14.33",
47
+ "@synerise/ds-typography": "^0.15.1",
48
48
  "react-intl": "3.12.0"
49
49
  },
50
50
  "peerDependencies": {
51
51
  "@synerise/ds-core": "*",
52
- "react": ">=16.9.0 < 17.0.0",
52
+ "react": ">=16.9.0 <= 17.0.2",
53
53
  "styled-components": "5.0.1"
54
54
  },
55
- "devDependencies": {
56
- "@synerise/ds-avatar": "^0.16.6",
57
- "@synerise/ds-flag": "^0.5.0",
58
- "@synerise/ds-utils": "^0.27.0",
59
- "@testing-library/jest-dom": "5.1.1",
60
- "@testing-library/react": "10.0.1"
61
- },
62
- "gitHead": "0692552b018dc9c8042f18c773f88890c9ad3270"
55
+ "gitHead": "6f4996380356c1e5cb9a9d8b553069ad9cea7c27"
63
56
  }