refactor: add reusable select controls and enhance data table columns
This commit is contained in:
@@ -73,6 +73,7 @@ export function RoleTable({
|
||||
}}
|
||||
sorting={sorting}
|
||||
onSortingChange={onSortingChange}
|
||||
actionsSticky
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use client';
|
||||
|
||||
import { useCallback, useState } from 'react';
|
||||
import { useCallback, useEffect, useState } from 'react';
|
||||
import { Plus, ShieldCheck } from 'lucide-react';
|
||||
|
||||
import { PageHeader } from '@/components/page-header';
|
||||
@@ -27,6 +27,7 @@ export default function RolesPage() {
|
||||
(state) => state.user?.organization_id ?? null,
|
||||
);
|
||||
const [isSheetOpen, setIsSheetOpen] = useState(false);
|
||||
const [activeRole, setActiveRole] = useState<Role | null>(null);
|
||||
const {
|
||||
skip,
|
||||
setSkip,
|
||||
@@ -49,6 +50,7 @@ export default function RolesPage() {
|
||||
sorting,
|
||||
});
|
||||
const permissionsQuery = usePermissionsTreeQuery(isSheetOpen);
|
||||
|
||||
const roleForm = useRoleForm({
|
||||
organizationId,
|
||||
permissionTree: permissionsQuery.permissionTree,
|
||||
@@ -72,18 +74,32 @@ export default function RolesPage() {
|
||||
statusMutation;
|
||||
|
||||
const openCreate = useCallback(() => {
|
||||
prepareCreateRole();
|
||||
setActiveRole(null);
|
||||
setIsSheetOpen(true);
|
||||
}, [prepareCreateRole]);
|
||||
}, []);
|
||||
|
||||
const openEdit = useCallback(
|
||||
(role: Role) => {
|
||||
prepareEditRole(role);
|
||||
setActiveRole(role);
|
||||
setIsSheetOpen(true);
|
||||
},
|
||||
[prepareEditRole],
|
||||
[],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
if (!isSheetOpen || permissionsQuery.permissionTree.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
activeRole ? prepareEditRole(activeRole) : prepareCreateRole();
|
||||
}, [
|
||||
activeRole,
|
||||
isSheetOpen,
|
||||
permissionsQuery.permissionTree,
|
||||
prepareCreateRole,
|
||||
prepareEditRole,
|
||||
]);
|
||||
|
||||
const toggleStatus = useCallback(
|
||||
(role: Role) => {
|
||||
updateRoleStatus(role);
|
||||
|
||||
Reference in New Issue
Block a user