index.jsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. t={t}
  80. >
  81. <UsersTable {...usersData} />
  82. </CardPro>
  83. </>
  84. );
  85. };
  86. export default UsersPage;