|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import React from 'react'; |
|
|
import CardPro from '../../common/ui/CardPro'; |
|
|
import UsersTable from './UsersTable'; |
|
|
import UsersActions from './UsersActions'; |
|
|
import UsersFilters from './UsersFilters'; |
|
|
import UsersDescription from './UsersDescription'; |
|
|
import AddUserModal from './modals/AddUserModal'; |
|
|
import EditUserModal from './modals/EditUserModal'; |
|
|
import { useUsersData } from '../../../hooks/users/useUsersData'; |
|
|
import { useIsMobile } from '../../../hooks/common/useIsMobile'; |
|
|
import { createCardProPagination } from '../../../helpers/utils'; |
|
|
|
|
|
const UsersPage = () => { |
|
|
const usersData = useUsersData(); |
|
|
const isMobile = useIsMobile(); |
|
|
|
|
|
const { |
|
|
|
|
|
showAddUser, |
|
|
showEditUser, |
|
|
editingUser, |
|
|
setShowAddUser, |
|
|
closeAddUser, |
|
|
closeEditUser, |
|
|
refresh, |
|
|
|
|
|
|
|
|
formInitValues, |
|
|
setFormApi, |
|
|
searchUsers, |
|
|
loadUsers, |
|
|
activePage, |
|
|
pageSize, |
|
|
groupOptions, |
|
|
loading, |
|
|
searching, |
|
|
|
|
|
|
|
|
compactMode, |
|
|
setCompactMode, |
|
|
|
|
|
|
|
|
t, |
|
|
} = usersData; |
|
|
|
|
|
return ( |
|
|
<> |
|
|
<AddUserModal |
|
|
refresh={refresh} |
|
|
visible={showAddUser} |
|
|
handleClose={closeAddUser} |
|
|
/> |
|
|
|
|
|
<EditUserModal |
|
|
refresh={refresh} |
|
|
visible={showEditUser} |
|
|
handleClose={closeEditUser} |
|
|
editingUser={editingUser} |
|
|
/> |
|
|
|
|
|
<CardPro |
|
|
type='type1' |
|
|
descriptionArea={ |
|
|
<UsersDescription |
|
|
compactMode={compactMode} |
|
|
setCompactMode={setCompactMode} |
|
|
t={t} |
|
|
/> |
|
|
} |
|
|
actionsArea={ |
|
|
<div className='flex flex-col md:flex-row justify-between items-center gap-2 w-full'> |
|
|
<UsersActions setShowAddUser={setShowAddUser} t={t} /> |
|
|
|
|
|
<UsersFilters |
|
|
formInitValues={formInitValues} |
|
|
setFormApi={setFormApi} |
|
|
searchUsers={searchUsers} |
|
|
loadUsers={loadUsers} |
|
|
activePage={activePage} |
|
|
pageSize={pageSize} |
|
|
groupOptions={groupOptions} |
|
|
loading={loading} |
|
|
searching={searching} |
|
|
t={t} |
|
|
/> |
|
|
</div> |
|
|
} |
|
|
paginationArea={createCardProPagination({ |
|
|
currentPage: usersData.activePage, |
|
|
pageSize: usersData.pageSize, |
|
|
total: usersData.userCount, |
|
|
onPageChange: usersData.handlePageChange, |
|
|
onPageSizeChange: usersData.handlePageSizeChange, |
|
|
isMobile: isMobile, |
|
|
t: usersData.t, |
|
|
})} |
|
|
t={usersData.t} |
|
|
> |
|
|
<UsersTable {...usersData} /> |
|
|
</CardPro> |
|
|
</> |
|
|
); |
|
|
}; |
|
|
|
|
|
export default UsersPage; |
|
|
|