` tag.
+
`placeholder` - placeholder text to be displayed in the filter ` `.
`selectedOptions` - list of option objects which are selected, so should no
diff --git a/src/index.js b/src/index.js
index 1393c71..fc6dbf9 100644
--- a/src/index.js
+++ b/src/index.js
@@ -47,6 +47,7 @@ export default React.createClass({
classNames: PropTypes.object,
defaultFilter: PropTypes.string,
disabled: PropTypes.bool,
+ groupProp: PropTypes.string,
placeholder: PropTypes.string,
selectedOptions: PropTypes.array,
size: PropTypes.number,
@@ -61,6 +62,7 @@ export default React.createClass({
classNames: {},
defaultFilter: '',
disabled: false,
+ groupProp: false,
placeholder: 'type to filter',
size: 6,
selectedOptions: [],
@@ -185,8 +187,31 @@ export default React.createClass({
render() {
let {filter, filteredOptions, selectedValues} = this.state
- let {className, disabled, placeholder, size, textProp, valueProp} = this.props
+ let {className, disabled, groupProp, placeholder, size, textProp, valueProp} = this.props
let hasSelectedOptions = selectedValues.length > 0
+ let options = []
+ if (groupProp) {
+ let groups = filteredOptions.reduce((result, option) => {
+ if (!result[option[groupProp]]) {
+ result[option[groupProp]] = []
+ }
+ result[option[groupProp]].push(option)
+ return result
+ }, {})
+ options = Object.keys(groups).map((group) => {
+ return (
+
+ {groups[group].map((option) => {
+ return {option[textProp]}
+ })}
+
+ )
+ })
+ } else {
+ options = filteredOptions.map((option) => {
+ return {option[textProp]}
+ })
+ }
return
- {filteredOptions.map((option) => {
- return {option[textProp]}
- })}
+ {options}