Skip to content

Commit 2fe2704

Browse files
authored
Add customItemsRenderer prop (#152)
* Add customItemsRenderer prop * del spread props from customItemsRenderer * add new customItemsRenderer prop to readme.md * add selectedItem, forwardIconRenderer to props
1 parent e22c3d4 commit 2fe2704

File tree

2 files changed

+26
-14
lines changed

2 files changed

+26
-14
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ Both options support component customization. - [examples](https://github.com/ke
4848
| `itemsRenderer` | `Component` | `items.js` | `Component to replace the default Items component. ` |
4949
| `forwardIconRenderer` | `Component` | | `Component to replace the default ForwardIcon component. ` |
5050
| `treeContainerRenderer`| `Component` | `tree_container.js` | `Component to replace the default TreeContainer component. ` |
51+
| `customItemsRenderer ` | `Component` | | `Component to replace the default Items && inner Item component.`|
5152
| `markSelectedItem` | `boolean` | `false` | `Toggle to mark selected item. ` |
5253

5354
<br/>

packages/core/src/tree.js

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ const Tree = props => {
3939
itemsRenderer: Items = ItemsRenderer,
4040
forwardIconRenderer,
4141
treeContainerRenderer: TreeContainer = TreeContainerRenderer,
42+
customItemsRenderer,
4243
selectedItem
4344
} = props;
4445

@@ -94,20 +95,30 @@ const Tree = props => {
9495
inputIconRenderer={inputIconRenderer}
9596
clearIconRenderer={clearIconRenderer}
9697
/>
97-
<Items styles={styles} getStyles={getStyles} height={itemsHeight}>
98-
{leaves &&
99-
leaves.length > 0 &&
100-
leaves.map(item => (
101-
<Item
102-
getStyles={getStyles}
103-
searchTerm={searchTerm}
104-
item={item}
105-
onClick={onClick}
106-
forwardIconRenderer={forwardIconRenderer}
107-
selectedItem={selectedItem}
108-
/>
109-
))}
110-
</Items>
98+
{customItemsRenderer ? (
99+
React.cloneElement(customItemsRenderer, {
100+
leaves,
101+
searchTerm,
102+
onClick,
103+
selectedItem,
104+
forwardIconRenderer
105+
})
106+
) : (
107+
<Items styles={styles} getStyles={getStyles} height={itemsHeight}>
108+
{leaves &&
109+
leaves.length > 0 &&
110+
leaves.map(item => (
111+
<Item
112+
getStyles={getStyles}
113+
searchTerm={searchTerm}
114+
item={item}
115+
onClick={onClick}
116+
forwardIconRenderer={forwardIconRenderer}
117+
selectedItem={selectedItem}
118+
/>
119+
))}
120+
</Items>
121+
)}
111122
{leaves && leaves.length === 0 && (
112123
<NoResults
113124
height={itemsHeight}

0 commit comments

Comments
 (0)