diff --git a/js/components/ascribe_piece_list_toolbar/piece_list_toolbar.js b/js/components/ascribe_piece_list_toolbar/piece_list_toolbar.js index ea609155..0890db00 100644 --- a/js/components/ascribe_piece_list_toolbar/piece_list_toolbar.js +++ b/js/components/ascribe_piece_list_toolbar/piece_list_toolbar.js @@ -17,7 +17,15 @@ let PieceListToolbar = React.createClass({ filterParams: React.PropTypes.arrayOf( React.PropTypes.shape({ label: React.PropTypes.string, - items: React.PropTypes.array + items: React.PropTypes.arrayOf( + React.PropTypes.oneOfType([ + React.PropTypes.string, + React.PropTypes.shape({ + key: React.PropTypes.string, + label: React.PropTypes.string + }) + ]) + ) }) ), filterBy: React.PropTypes.object, diff --git a/js/components/ascribe_piece_list_toolbar/piece_list_toolbar_filter_widget.js b/js/components/ascribe_piece_list_toolbar/piece_list_toolbar_filter_widget.js index 9591f970..eb36bbd5 100644 --- a/js/components/ascribe_piece_list_toolbar/piece_list_toolbar_filter_widget.js +++ b/js/components/ascribe_piece_list_toolbar/piece_list_toolbar_filter_widget.js @@ -3,23 +3,24 @@ import React from 'react'; import DropdownButton from 'react-bootstrap/lib/DropdownButton'; -import MenuItem from 'react-bootstrap/lib/MenuItem'; import { getLangText } from '../../utils/lang_utils.js'; + let PieceListToolbarFilterWidgetFilter = React.createClass({ propTypes: { - // An array of either strings (which represent acl enums) or objects of the form - // - // { - // key: , - // label: - // } - // filterParams: React.PropTypes.arrayOf( React.PropTypes.shape({ label: React.PropTypes.string, - items: React.PropTypes.array + items: React.PropTypes.arrayOf( + React.PropTypes.oneOfType([ + React.PropTypes.string, + React.PropTypes.shape({ + key: React.PropTypes.string, + label: React.PropTypes.string + }) + ]) + ) }) ).isRequired, filterBy: React.PropTypes.object, @@ -93,8 +94,6 @@ let PieceListToolbarFilterWidgetFilter = React.createClass({ {label}: {items.map((param, j) => { - let label; - if(typeof param !== 'string') { label = param.label; param = param.key; diff --git a/js/components/piece_list_filter_display.js b/js/components/piece_list_filter_display.js index 971adb82..e1cbf9bd 100644 --- a/js/components/piece_list_filter_display.js +++ b/js/components/piece_list_filter_display.js @@ -2,8 +2,6 @@ import React from 'react'; -import { getLangText } from '../utils/lang_utils'; - let PieceListFilterDisplay = React.createClass({ propTypes: { @@ -11,7 +9,15 @@ let PieceListFilterDisplay = React.createClass({ filterParams: React.PropTypes.arrayOf( React.PropTypes.shape({ label: React.PropTypes.string, - items: React.PropTypes.array + items: React.PropTypes.arrayOf( + React.PropTypes.oneOfType([ + React.PropTypes.string, + React.PropTypes.shape({ + key: React.PropTypes.string, + label: React.PropTypes.string + }) + ]) + ) }) ) }, @@ -34,10 +40,10 @@ let PieceListFilterDisplay = React.createClass({ key: item, label: item.split('acl_')[1].replace(/_/g, ' '), value: filterBy[item] ? filterBy[item] : false - } + }; } }) - } + }; }); }, @@ -55,7 +61,7 @@ let PieceListFilterDisplay = React.createClass({ .join(', '); if(activeFilterWithLabel) { - return filterWithLabel.label + ': ' + activeFilterWithLabel + return filterWithLabel.label + ': ' + activeFilterWithLabel; } }) .filter((filterText) => !!filterText)