index.jsx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import React from 'react';
  2. import CardPro from '../../common/ui/CardPro';
  3. import UsersTable from './UsersTable.jsx';
  4. import UsersActions from './UsersActions.jsx';
  5. import UsersFilters from './UsersFilters.jsx';
  6. import UsersDescription from './UsersDescription.jsx';
  7. import AddUserModal from './modals/AddUserModal.jsx';
  8. import EditUserModal from './modals/EditUserModal.jsx';
  9. import { useUsersData } from '../../../hooks/users/useUsersData';
  10. const UsersPage = () => {
  11. const usersData = useUsersData();
  12. const {
  13. // Modal state
  14. showAddUser,
  15. showEditUser,
  16. editingUser,
  17. setShowAddUser,
  18. closeAddUser,
  19. closeEditUser,
  20. refresh,
  21. // Form state
  22. formInitValues,
  23. setFormApi,
  24. searchUsers,
  25. loadUsers,
  26. activePage,
  27. pageSize,
  28. groupOptions,
  29. loading,
  30. searching,
  31. // Description state
  32. compactMode,
  33. setCompactMode,
  34. // Translation
  35. t,
  36. } = usersData;
  37. return (
  38. <>
  39. <AddUserModal
  40. refresh={refresh}
  41. visible={showAddUser}
  42. handleClose={closeAddUser}
  43. />
  44. <EditUserModal
  45. refresh={refresh}
  46. visible={showEditUser}
  47. handleClose={closeEditUser}
  48. editingUser={editingUser}
  49. />
  50. <CardPro
  51. type="type1"
  52. descriptionArea={
  53. <UsersDescription
  54. compactMode={compactMode}
  55. setCompactMode={setCompactMode}
  56. t={t}
  57. />
  58. }
  59. actionsArea={
  60. <div className="flex flex-col md:flex-row justify-between items-center gap-2 w-full">
  61. <UsersActions
  62. setShowAddUser={setShowAddUser}
  63. t={t}
  64. />
  65. <UsersFilters
  66. formInitValues={formInitValues}
  67. setFormApi={setFormApi}
  68. searchUsers={searchUsers}
  69. loadUsers={loadUsers}
  70. activePage={activePage}
  71. pageSize={pageSize}
  72. groupOptions={groupOptions}
  73. loading={loading}
  74. searching={searching}
  75. t={t}
  76. />
  77. </div>
  78. }
  79. >
  80. <UsersTable {...usersData} />
  81. </CardPro>
  82. </>
  83. );
  84. };
  85. export default UsersPage;