UNPKG

ndla-ui

Version:

UI component library for NDLA.

80 lines (69 loc) 2.11 kB
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;