= {
id: config.id,
header: ({ column }) => (config.sortable ? renderSortableHeader(column, config.header) : config.header),
...(config.accessor && { accessorKey: config.accessor }),
...(config.accessorFn && { accessorFn: config.accessorFn }),
cell: ({ row }) => {
const value = row.getValue(config.id);
return config.cell ? config.cell(value) : {value as React.ReactNode}
;
},
enableSorting: config.sortable !== false,
enableHiding: config.id !== "select" && config.id !== "actions",
};
return column;
});
if (userRole && (hasPermission(userRole, "organization", "read") || hasPermission(userRole, "organization", "update") || hasPermission(userRole, "organization", "delete"))) {
baseColumns.push({
id: "actions",
enableHiding: false,
cell: ({ row }) => {
const organization = row.original;
return (
<>
Aksi
{hasPermission(userRole, "organization", "read") && (
router.push(`/admin/organization/detail/${organization.id}`)} className="flex items-center gap-2">
Lihat Detail
)}
{hasPermission(userRole, "organization", "update") && (
router.push(`/admin/organization/edit/${organization.id}`)} className="flex items-center gap-2">
Edit Perangkat Daerah
)}
{hasPermission(userRole, "organization", "delete") && (
<>
setOrganizationToDelete(organization)} className="flex items-center gap-2 text-destructive focus:text-destructive">
Hapus Perangkat Daerah
>
)}
{organizationToDelete?.id === organization.id && (
deleteMutation.mutate(organizationToDelete.id)} onCancel={() => setOrganizationToDelete(null)} open={true} />
)}
>
);
},
});
}
return baseColumns;
};