Skip to content

Commit 24dd70f

Browse files
MaksimDrobchakstepovat
authored andcommitted
BREAKING CHANGE: Move Search logic to reusable HOC (#140)
* create HOC with serach * connected source_list HOC * add test for with_search * add new snapshot for multi_select * all case coveraga test * corrected HOC and test with HOC * corrected HOC and test with HOC * Case_Teset_For_Deep_Props (#1) Corrected test & add skin-deep * corrected with_search & snapshots
1 parent a035bf3 commit 24dd70f

10 files changed

Lines changed: 1510 additions & 715 deletions

File tree

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
"react-test-renderer": "^16.0.0",
7878
"sass-loader": "^7.1.0",
7979
"semantic-release": "^8.2.0",
80+
"skin-deep": "^1.2.0",
8081
"storybook-readme": "3.0.6",
8182
"style-loader": "^0.23.1",
8283
"webpack": "^4.29.0",

src/components/source_list.js

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
11
import React from "react";
22
import PropTypes from "prop-types";
33
import { List } from "react-virtualized/dist/commonjs/List";
4-
54
import Column from "./column/column";
65
import ItemsList from "./list/items_list";
76
import NoItems from "./items/no_items";
8-
import Search from "./search/search";
97
import SelectAll from "./items/select_all";
108
import Item from "./items/item";
9+
1110
import { groupItems } from "./item_grouping_util";
11+
import withSearch from "./with_search";
1212

1313
const SourceList = ({
14-
searchRenderer,
1514
selectAllRenderer,
16-
showSearch,
17-
filterItems,
18-
searchIcon,
1915
messages,
2016
showSelectAll,
2117
itemHeight,
@@ -30,25 +26,17 @@ const SourceList = ({
3026
selectItem,
3127
noItemsRenderer,
3228
disabled,
33-
searchValue,
3429
withGrouping,
35-
listRenderer
30+
listRenderer,
31+
children
3632
}) => {
37-
const SearchRenderer = searchRenderer;
3833
const SelectAllRenderer = selectAllRenderer;
3934
const updatedFilteredItems = withGrouping
4035
? groupItems(filteredItems)
4136
: filteredItems;
4237
return (
4338
<Column>
44-
{showSearch && (
45-
<SearchRenderer
46-
onChange={filterItems}
47-
searchIcon={searchIcon}
48-
value={searchValue}
49-
searchPlaceholder={messages.searchPlaceholder}
50-
/>
51-
)}
39+
{children}
5240
{showSelectAll && (
5341
<SelectAllRenderer
5442
height={selectAllHeight ? selectAllHeight : itemHeight}
@@ -79,7 +67,6 @@ const SourceList = ({
7967
};
8068

8169
SourceList.propTypes = {
82-
searchRenderer: PropTypes.any,
8370
selectAllRenderer: PropTypes.any,
8471
noItemsRenderer: PropTypes.any,
8572
itemRenderer: PropTypes.any,
@@ -103,7 +90,6 @@ SourceList.propTypes = {
10390
};
10491

10592
SourceList.defaultProps = {
106-
searchRenderer: Search,
10793
selectAllRenderer: SelectAll,
10894
noItemsRenderer: NoItems,
10995
itemRenderer: Item,
@@ -119,5 +105,5 @@ SourceList.defaultProps = {
119105
disabled: false,
120106
withGrouping: false
121107
};
122-
123-
export default SourceList;
108+
export { SourceList };
109+
export default withSearch(SourceList);

src/components/with_search.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import React from "react";
2+
import Search from "./search/search";
3+
4+
const withSearch = WrappedComponent => ({
5+
searchRenderer = Search,
6+
showSearch,
7+
filterItems,
8+
searchIcon,
9+
searchValue,
10+
messages,
11+
...others
12+
}) => {
13+
const SearchRenderer = searchRenderer;
14+
return (
15+
<WrappedComponent {...others}>
16+
{showSearch && (
17+
<SearchRenderer
18+
onChange={filterItems}
19+
searchIcon={searchIcon}
20+
value={searchValue}
21+
searchPlaceholder={messages.searchPlaceholder}
22+
/>
23+
)}
24+
</WrappedComponent>
25+
);
26+
};
27+
export default withSearch;

0 commit comments

Comments
 (0)