UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

201 lines (166 loc) 6.54 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _bind = require('classnames/bind'); var _bind2 = _interopRequireDefault(_bind); var _md = require('react-icons/lib/md'); var _auto_bind = require('../common/auto_bind'); var _auto_bind2 = _interopRequireDefault(_auto_bind); var _utilities = require('../common/utilities'); var _search_bar = require('./search_bar'); var _search_bar2 = _interopRequireDefault(_search_bar); var _filter = require('./filter'); var _filter2 = _interopRequireDefault(_filter); var _fields = require('../common/fields'); var _base = require('../selectors/base'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var cx = _bind2.default.bind(require('../styles/filterable_table.scss')); var NonExclusiveFieldFilter = function (_Component) { (0, _inherits3.default)(NonExclusiveFieldFilter, _Component); function NonExclusiveFieldFilter(props) { (0, _classCallCheck3.default)(this, NonExclusiveFieldFilter); var _this = (0, _possibleConstructorReturn3.default)(this, (NonExclusiveFieldFilter.__proto__ || (0, _getPrototypeOf2.default)(NonExclusiveFieldFilter)).call(this, props)); _this.state = { query: "", results: [] }; (0, _auto_bind2.default)(_this); return _this; } (0, _createClass3.default)(NonExclusiveFieldFilter, [{ key: 'componentWillReceiveProps', value: function componentWillReceiveProps(props) { if (!props.search_enabled && !(0, _base.tolerant_equal)(props.values, this.props.results)) { this.update_results(props); } } }, { key: 'update_results', value: function update_results(props) { if (!props) { props = this.props; } this.setState({ results: props.values.map(function (value) { return value.id; }) }); } }, { key: 'componentDidMount', value: function componentDidMount() { this.mounted = true; if (!this.props.search_enabled) { this.update_results(); } } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { this.mounted = false; } }, { key: 'on_query_change', value: function on_query_change(query, results) { if (this.mounted && this.props.search_enabled) { this.setState({ query: query, results: results }); } } }, { key: 'render', value: function render() { var _this2 = this; return _react2.default.createElement( _filter2.default, { className: cx('filterable-table__filter', this.props.className), active: !(0, _utilities.for_all)(this.props.values, function (value) { return !value.selected && !value.locked; }), label: this.props.name }, this.props.search_enabled ? _react2.default.createElement(_search_bar2.default, { className: cx('filterable-table__filter-search-bar'), ref: function ref(search_bar) { return _this2.search_bar = search_bar; }, extend: false, make_fuse: _fields.new_values_fuse, items: this.props.values, default_results: this.props.values.map(function (value) { return value.id; }), on_query_change: this.on_query_change }) : null, _react2.default.createElement( 'div', { className: cx('filterable-table__filter-values', { 'filterable-table__filter-values_long': this.state.results.length > 6 }) }, this.state.results.map(function (id) { return (0, _utilities.find_in_array)(_this2.props.values, function (value) { return value.id == id; }); }).filter(Boolean).sort(function (a, b) { return a.name.localeCompare(b.name); }).map(function (value) { return _react2.default.createElement( 'div', { key: value.id, className: cx('filterable-table__filter-value', { 'filterable-table__filter-value_selected': value.selected, 'filterable-table__filter-value_locked': value.locked }), onClick: function onClick() { if (!value.locked) { _this2.props.toggle_filtered_value(value); } } }, _react2.default.createElement( 'div', { className: cx('filterable-table__filter-value-name') }, value.icon ? _react2.default.createElement( 'div', { className: cx('filterable-table__filter-value__icon') }, value.icon ) : null, value.name ), _react2.default.createElement( 'div', { className: cx('filterable-table__filter-value-tick') }, value.locked ? _react2.default.createElement(_md.MdLock, null) : value.selected ? _react2.default.createElement(_md.MdCheck, null) : null ) ); }) ), this.state.results.length == 0 ? _react2.default.createElement( 'div', { className: cx('filterable-table__filter-values-placeholder') }, 'Aucune valeur' ) : null ); } }]); return NonExclusiveFieldFilter; }(_react.Component); NonExclusiveFieldFilter.defaultProps = { values: [], name: "", className: "", editable: false, search_enabled: true, toggle_filtered_value: function toggle_filtered_value(value) {} }; exports.default = NonExclusiveFieldFilter;