// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import $ from 'jquery'; import ReactDOM from 'react-dom'; import UserList from './user_list.jsx'; import {intlShape, injectIntl, defineMessages, FormattedMessage} from 'react-intl'; const holders = defineMessages({ member: { id: 'filtered_user_list.member', defaultMessage: 'Member' }, search: { id: 'filtered_user_list.search', defaultMessage: 'Search members' } }); import React from 'react'; class FilteredUserList extends React.Component { constructor(props) { super(props); this.handleFilterChange = this.handleFilterChange.bind(this); this.state = { filter: '' }; } componentDidUpdate(prevProps, prevState) { if (prevState.filter !== this.state.filter) { $(ReactDOM.findDOMNode(this.refs.userList)).scrollTop(0); } } handleFilterChange(e) { this.setState({ filter: e.target.value }); } render() { const {formatMessage} = this.props.intl; let users = this.props.users; if (this.state.filter) { const filter = this.state.filter.toLowerCase(); users = users.filter((user) => { return user.username.toLowerCase().indexOf(filter) !== -1 || (user.first_name && user.first_name.toLowerCase().indexOf(filter) !== -1) || (user.last_name && user.last_name.toLowerCase().indexOf(filter) !== -1) || (user.nickname && user.nickname.toLowerCase().indexOf(filter) !== -1); }); } let count; if (users.length === this.props.users.length) { count = ( ); } else { count = ( ); } return (
{count}
); } } FilteredUserList.defaultProps = { users: [], actions: [], actionProps: {} }; FilteredUserList.propTypes = { intl: intlShape.isRequired, users: React.PropTypes.arrayOf(React.PropTypes.object), actions: React.PropTypes.arrayOf(React.PropTypes.func), actionProps: React.PropTypes.object, style: React.PropTypes.object }; export default injectIntl(FilteredUserList);