diff --git a/src/components/Users/UserDepartmentsTab.tsx b/src/components/Users/UserDepartmentsTab.tsx index 1daa8d10751..ff4d69a5214 100644 --- a/src/components/Users/UserDepartmentsTab.tsx +++ b/src/components/Users/UserDepartmentsTab.tsx @@ -7,6 +7,7 @@ import CareIcon from "@/CAREUI/icons/CareIcon"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; +import { Input } from "@/components/ui/input"; import { CardGridSkeleton } from "@/components/Common/SkeletonLoading"; @@ -14,6 +15,7 @@ import { userChildProps } from "@/components/Common/UserColumns"; import LinkUserToDepartmentSheet from "@/components/Users/LinkUserToDepartmentSheet"; import query from "@/Utils/request/query"; +import useFilters from "@/hooks/useFilters"; import EditFacilityUserRoleSheet from "@/pages/Facility/settings/organizations/components/EditFacilityUserRoleSheet"; import useCurrentFacility from "@/pages/Facility/utils/useCurrentFacility"; import { @@ -113,31 +115,32 @@ function DepartmentCard({ export default function UserDepartmentsTab({ userData }: userChildProps) { const { t } = useTranslation(); const { facilityId } = useCurrentFacility(); + const { qParams, updateQuery, Pagination, resultsPerPage } = useFilters({ + limit: 15, + disableCache: true, + }); const { data: departmentsData, isLoading } = useQuery({ - queryKey: ["facilityOrganizations", "byUser", facilityId, userData.id], - queryFn: query(facilityOrganizationApi.list, { + queryKey: [ + "facilityOrganizations", + "byUser", + facilityId, + userData.id, + qParams, + resultsPerPage, + ], + queryFn: query.debounced(facilityOrganizationApi.list, { pathParams: { facilityId: facilityId! }, queryParams: { containing_user: userData.id, + name: qParams.name || undefined, + limit: resultsPerPage, + offset: ((qParams.page || 1) - 1) * resultsPerPage, }, }), enabled: !!facilityId, }); - if (isLoading) { - return ( -
-

- {t("departments")} -

-
- -
-
- ); - } - const departments = departmentsData?.results ?? []; return ( @@ -151,27 +154,49 @@ export default function UserDepartmentsTab({ userData }: userChildProps) { facilityId={facilityId} /> - - {departments.length === 0 ? ( + updateQuery({ name: e.target.value || undefined })} + className="w-full max-w-sm" + /> + + {isLoading ? ( +
+ +
+ ) : departments.length === 0 ? (
-

- {t("no_departments_assigned")} -

-

- {t("click_link_department_to_get_started")} -

+ {qParams.name ? ( +

+ {t("no_departments_found")} +

+ ) : ( + <> +

+ {t("no_departments_assigned")} +

+

+ {t("click_link_department_to_get_started")} +

+ + )}
) : ( -
- {departments.map((department) => ( - - ))} +
+
+ {departments.map((department) => ( + + ))} +
+
)}
diff --git a/src/pages/Facility/settings/organizations/components/EditFacilityUserRoleSheet.tsx b/src/pages/Facility/settings/organizations/components/EditFacilityUserRoleSheet.tsx index 2ac4be57d5d..32d7126291e 100644 --- a/src/pages/Facility/settings/organizations/components/EditFacilityUserRoleSheet.tsx +++ b/src/pages/Facility/settings/organizations/components/EditFacilityUserRoleSheet.tsx @@ -40,7 +40,9 @@ export default function EditUserRoleSheet({ }: Props) { const queryClient = useQueryClient(); const [open, setOpen] = useState(false); - const [selectedRole, setSelectedRole] = useState(); + const [selectedRole, setSelectedRole] = useState({ + ...userRole.role, + }); const [showRemoveDialog, setShowRemoveDialog] = useState(false); const { t } = useTranslation();