Vulcan/packages/vulcan-admin/lib/components/users/AdminUsersList.jsx

50 lines
1.5 KiB
React
Raw Normal View History

2017-06-13 04:42:22 -07:00
import React from 'react';
2017-06-17 15:25:41 +09:00
import { Components, withList, AdminColumns } from 'meteor/vulcan:core';
2017-06-13 04:42:22 -07:00
import Users from 'meteor/vulcan:users';
2017-06-13 05:04:19 -07:00
import Button from 'react-bootstrap/lib/Button';
2017-06-17 15:25:41 +09:00
import { FormattedMessage } from 'meteor/vulcan:i18n';
2017-06-13 04:42:22 -07:00
import AdminUsersItem from './AdminUsersItem.jsx';
2017-06-17 15:25:41 +09:00
import '../../modules/columns.js';
2017-06-13 04:42:22 -07:00
const AdminUsersList = ({results, loading, loadMore, count, totalCount, networkStatus}) => {
if (loading) {
return <Components.Loading />;
}
const isLoadingMore = networkStatus === 2;
const hasMore = totalCount > results.length;
return (
<div className="admin-users-list">
<table className="table">
<thead>
<tr>
2017-06-17 15:25:41 +09:00
{_.sortBy(AdminColumns, column => column.order).map(column => <th key={column.name}><FormattedMessage id={`admin.${column.name}`} /></th>)}
2017-06-13 04:42:22 -07:00
</tr>
</thead>
<tbody>
{results.map(user => <AdminUsersItem user={user} key={user._id}/>)}
</tbody>
</table>
<div className="admin-users-load-more">
{hasMore ?
isLoadingMore ?
<Components.Loading/>
2017-06-13 05:04:19 -07:00
: <Button bsStyle="primary" onClick={e => {e.preventDefault(); loadMore();}}>Load More ({count}/{totalCount})</Button>
2017-06-13 04:42:22 -07:00
: null
}
</div>
</div>
)
}
const options = {
collection: Users,
2017-06-17 15:25:41 +09:00
fragmentName: 'UsersAdmin',
2017-06-13 04:42:22 -07:00
terms: {view: 'usersAdmin'},
limit: 20
2017-06-13 04:42:22 -07:00
}
export default withList(options)(AdminUsersList);