ndla-ui
Version:
UI component library for NDLA.
80 lines (69 loc) • 2.11 kB
JavaScript
import React from 'react';
import BEMHelper from 'react-bem-helper';
import PropTypes from 'prop-types';
import { FilterList } from '../Filter';
var searchFilterClasses = BEMHelper({
prefix: 'c-',
name: 'search-filter',
outputIsString: true
});
var valueShape = PropTypes.oneOfType([PropTypes.string, PropTypes.number]);
var SearchFilter = function SearchFilter(_ref) {
var label = _ref.label,
options = _ref.options,
values = _ref.values,
defaultVisibleCount = _ref.defaultVisibleCount,
showLabel = _ref.showLabel,
hideLabel = _ref.hideLabel,
narrowScreenOnly = _ref.narrowScreenOnly,
contextFilter = _ref.contextFilter,
onChange = _ref.onChange,
noFilterSelectedLabel = _ref.noFilterSelectedLabel,
children = _ref.children;
var modifiers = [];
if (narrowScreenOnly) {
modifiers.push('narrow-screen-only');
}
if (contextFilter) {
modifiers.push('context-filter');
}
return React.createElement(
'div',
{ className: searchFilterClasses('', modifiers) },
React.createElement(FilterList, {
options: options,
label: label,
labelNotVisible: contextFilter,
values: values,
defaultVisibleCount: defaultVisibleCount,
modifiers: !contextFilter ? 'search' : null,
showLabel: showLabel,
hideLabel: hideLabel,
onChange: onChange,
alignedGroup: true,
noFilterSelectedLabel: noFilterSelectedLabel
}),
children
);
};
SearchFilter.propTypes = {
label: PropTypes.string.isRequired,
options: PropTypes.arrayOf(PropTypes.shape({
value: valueShape.isRequired,
title: PropTypes.string.isRequired,
noResults: PropTypes.bool
})).isRequired,
values: PropTypes.arrayOf(valueShape),
defaultVisibleCount: PropTypes.number,
onChange: PropTypes.func,
showLabel: PropTypes.string,
hideLabel: PropTypes.string,
narrowScreenOnly: PropTypes.bool,
noFilterSelectedLabel: PropTypes.string,
contextFilter: PropTypes.bool,
children: PropTypes.node
};
SearchFilter.defaultProps = {
values: []
};
export default SearchFilter;