Skip to content

Commit 75b3f18

Browse files
committed
feat: add renderMenu renderMenuItem renderMenuGroup
1 parent 67c7877 commit 75b3f18

File tree

5 files changed

+82
-51
lines changed

5 files changed

+82
-51
lines changed

docs/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@
2020
<body style="background:#F5F5F5">
2121
<div class="demo" id="demo">
2222
</div>
23-
<script src="static\js\vendors.308b581e.chunk.js"></script><script src="static\js\index.dcbccb8c.js"></script></body>
23+
<script src="static\js\vendors.308b581e.chunk.js"></script><script src="static\js\index.f0e21de0.js"></script></body>
2424

2525
</html>

docs/static/js/index.dcbccb8c.js.map

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 52 additions & 36 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/static/js/index.f0e21de0.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ListBox.js

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ export default class ListBox extends React.Component {
4242
onFocus: PropTypes.func,
4343
onBlur: PropTypes.func,
4444
onKeyDown: PropTypes.func,
45+
renderMenu: PropTypes.func,
46+
renderMenuGroup: PropTypes.func,
47+
renderMenuItem: PropTypes.func,
4548
renderHeader: PropTypes.func,
4649
renderFooter: PropTypes.func,
4750
wrapperComponent: PropTypes.node,
@@ -310,7 +313,7 @@ export default class ListBox extends React.Component {
310313
}
311314

312315
renderListItems(items, selectedMap) {
313-
const { labelField, valueField, childrenField, prefixCls, disabled } = this.props;
316+
const { labelField, valueField, childrenField, prefixCls, disabled, renderMenuItem, renderMenuGroup } = this.props;
314317
const { itemsMap } = this.state;
315318

316319
return items.map(item => {
@@ -356,13 +359,13 @@ export default class ListBox extends React.Component {
356359
onMouseEnter={onMouseEnter}
357360
onMouseLeave={onMouseLeave}
358361
>
359-
{item[labelField]}
362+
{renderMenuItem ? renderMenuItem(item[labelField], item) : item[labelField]}
360363
</ListItem>
361364
) : (
362365
<ListItemGroup
363366
prefixCls={`${itemPrefixCls}-group`}
364367
key={item[labelField]}
365-
label={item[labelField]}
368+
label={renderMenuGroup ? renderMenuGroup(item[labelField], item) : item[labelField]}
366369
>
367370
{this.renderListItems(item[childrenField] || [], selectedMap)}
368371
</ListItemGroup>
@@ -483,6 +486,27 @@ export default class ListBox extends React.Component {
483486
return findDOMNode(this._listview_footer);
484487
}
485488

489+
renderMenu() {
490+
const {
491+
bodyWrapperComponent: BodyWrapperComponent,
492+
prefixCls,
493+
bodyStyle = {},
494+
renderMenu,
495+
} = this.props;
496+
497+
const Menu = (
498+
<BodyWrapperComponent
499+
ref={this.saveListViewBody}
500+
className={`${prefixCls}-body`}
501+
style={bodyStyle}
502+
>
503+
{this.renderList()}
504+
</BodyWrapperComponent>
505+
);
506+
507+
return renderMenu ? renderMenu(Menu) : Menu;
508+
}
509+
486510
render() {
487511
const {
488512
className,
@@ -498,10 +522,8 @@ export default class ListBox extends React.Component {
498522
onFocus,
499523
onBlur,
500524
style = {},
501-
bodyStyle = {},
502525
wrapperComponent: WrapperComponent,
503526
headerWrapperComponent: HeaderWrapperComponent,
504-
bodyWrapperComponent: BodyWrapperComponent,
505527
footerWrapperComponent: FooterWrapperComponent,
506528
renderHeader,
507529
renderFooter,
@@ -546,14 +568,7 @@ export default class ListBox extends React.Component {
546568
</HeaderWrapperComponent> :
547569
null
548570
}
549-
550-
<BodyWrapperComponent
551-
ref={this.saveListViewBody}
552-
className={`${prefixCls}-body`}
553-
style={bodyStyle}
554-
>
555-
{this.renderList()}
556-
</BodyWrapperComponent>
571+
{this.renderMenu()}
557572
{
558573
renderFooter ?
559574
<FooterWrapperComponent

0 commit comments

Comments
 (0)