diff --git a/packages/react-bootstrap-table2-filter/src/components/select.js b/packages/react-bootstrap-table2-filter/src/components/select.js
index e505138..a30e691 100644
--- a/packages/react-bootstrap-table2-filter/src/components/select.js
+++ b/packages/react-bootstrap-table2-filter/src/components/select.js
@@ -7,6 +7,14 @@ import { LIKE, EQ } from '../comparison';
import { FILTER_TYPE } from '../const';
function optionsEquals(currOpts, prevOpts) {
+ if (Array.isArray(currOpts)) {
+ for (let i = 0; i < currOpts.length; i += 1) {
+ if (currOpts[i].label !== prevOpts[i].label) {
+ return false;
+ }
+ }
+ return currOpts.length === prevOpts.length;
+ }
const keys = Object.keys(currOpts);
for (let i = 0; i < keys.length; i += 1) {
if (currOpts[keys[i]] !== prevOpts[keys[i]]) {
@@ -16,11 +24,21 @@ function optionsEquals(currOpts, prevOpts) {
return Object.keys(currOpts).length === Object.keys(prevOpts).length;
}
+function getOptionValue(options, key) {
+ if (Array.isArray(options)) {
+ const result = options
+ .filter(({ label }) => label === key)
+ .map(({ value }) => value);
+ return result[0];
+ }
+ return options[key];
+}
+
class SelectFilter extends Component {
constructor(props) {
super(props);
this.filter = this.filter.bind(this);
- const isSelected = props.options[props.defaultValue] !== undefined;
+ const isSelected = getOptionValue(props.options, props.defaultValue) !== undefined;
this.state = { isSelected };
}
@@ -66,9 +84,14 @@ class SelectFilter extends Component {
));
}
- Object.keys(options).forEach(key =>
- optionTags.push()
- );
+ if (Array.isArray(options)) {
+ options.forEach(({ value, label }) =>
+ optionTags.push());
+ } else {
+ Object.keys(options).forEach(key =>
+ optionTags.push()
+ );
+ }
return optionTags;
}
@@ -128,7 +151,7 @@ class SelectFilter extends Component {
SelectFilter.propTypes = {
onFilter: PropTypes.func.isRequired,
column: PropTypes.object.isRequired,
- options: PropTypes.object.isRequired,
+ options: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,
comparator: PropTypes.oneOf([LIKE, EQ]),
placeholder: PropTypes.string,
style: PropTypes.object,