Skip to content

Commit 4c574c1

Browse files
committed
feat: add onItemGroupClick
1 parent 75b3f18 commit 4c574c1

File tree

2 files changed

+40
-5
lines changed

2 files changed

+40
-5
lines changed

src/ListBox.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export default class ListBox extends React.Component {
3838
tabIndex: PropTypes.number,
3939
enableDownUpSelect: PropTypes.bool,
4040
onItemClick: PropTypes.func,
41+
onItemGroupClick: PropTypes.func,
4142
onChange: PropTypes.func,
4243
onFocus: PropTypes.func,
4344
onBlur: PropTypes.func,
@@ -156,11 +157,19 @@ export default class ListBox extends React.Component {
156157
if (e) {
157158
scrollIntoView(e.target, this.getListViewBody());
158159
}
159-
//this.getListView().scrollIntoView(e.target);
160160

161161
if (onItemClick) onItemClick(item);
162162
}
163163

164+
onItemGroupClick = (item, e) => {
165+
const { onItemGroupClick } = this.props;
166+
if (e) {
167+
scrollIntoView(e.target, this.getListViewBody());
168+
}
169+
170+
if (onItemGroupClick) onItemGroupClick(item);
171+
}
172+
164173
transformChangeValue(value) {
165174
const { labelInValue } = this.props;
166175
const { itemsMap } = this.state;
@@ -365,6 +374,7 @@ export default class ListBox extends React.Component {
365374
<ListItemGroup
366375
prefixCls={`${itemPrefixCls}-group`}
367376
key={item[labelField]}
377+
onClick={this.onItemGroupClick}
368378
label={renderMenuGroup ? renderMenuGroup(item[labelField], item) : item[labelField]}
369379
>
370380
{this.renderListItems(item[childrenField] || [], selectedMap)}
@@ -374,7 +384,7 @@ export default class ListBox extends React.Component {
374384
}
375385

376386
renderListChild(children, selectedMap) {
377-
const { labelField, valueField, childrenField, prefixCls, disabled } = this.props;
387+
const { labelField, valueField, prefixCls, disabled } = this.props;
378388
const { itemsMap } = this.state;
379389

380390
const itemPrefixCls = `${prefixCls}-item`;

src/ListItemGroup.js

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,45 @@
11
import React from 'react';
2-
//import PropTypes from 'prop-types';
2+
import PropTypes from 'prop-types';
33

44
export default class ItemGroup extends React.Component {
55

6+
static propTypes = {
7+
label: PropTypes.node,
8+
value: PropTypes.any,
9+
children: PropTypes.node,
10+
prefixCls: PropTypes.string,
11+
}
12+
613
static defaultProps = {
714
prefixCls: 'rw-listbox-item-group',
815
label: '',
916
};
1017

1118
static isListItemGroup = true;
1219

20+
handleClick = (e) => {
21+
const {
22+
value,
23+
label,
24+
children
25+
} = this.props;
26+
27+
if (onClick) {
28+
onClick({
29+
value, label, children
30+
}, e);
31+
}
32+
}
33+
1334
render() {
14-
const { prefixCls, label, children } = this.props;
35+
const { prefixCls, label, children, ...others } = this.props;
1536
return (
1637
<div className={prefixCls}>
17-
<div className={`${prefixCls}-title`}>{label}</div>
38+
<div
39+
{...others}
40+
className={`${prefixCls}-title`}
41+
onClick={this.handleClick}
42+
>{label}</div>
1843
<div className={`${prefixCls}-list`}>
1944
{children}
2045
</div>

0 commit comments

Comments
 (0)