diff --git a/src/components/FloatingActionsButton.tsx b/src/components/FloatingActionsButton.tsx index 2e4eed07..974ca280 100644 --- a/src/components/FloatingActionsButton.tsx +++ b/src/components/FloatingActionsButton.tsx @@ -5,6 +5,8 @@ import Tooltip from '@/components/Tooltip'; import { cn } from '@/lib/helper'; import { Icon } from '@iconify/react'; +import { useAuth } from '@/services/hooks/useAuth'; + type FloatingActionsButtonProps = { actions: { action: 'DETAIL' | 'EDIT' | 'DELETE'; @@ -13,6 +15,7 @@ type FloatingActionsButtonProps = { onClick?: () => void; hidden?: boolean; disabled?: boolean; + permissions?: string | string[]; }[]; approvals: { action: 'APPROVED' | 'REJECTED'; @@ -20,6 +23,7 @@ type FloatingActionsButtonProps = { label?: string; onClick?: () => void; disabled?: boolean; + permissions?: string | string[]; }[]; selectedRowIds: number[]; onClose: () => void; @@ -31,6 +35,7 @@ const FloatingActionsButton = ({ selectedRowIds, onClose, }: FloatingActionsButtonProps) => { + const { permissionCheck } = useAuth(); // Jika tidak ada baris yang dipilih, jangan tampilkan FAB const positionStyles = selectedRowIds.length > 0 @@ -71,7 +76,18 @@ const FloatingActionsButton = ({
{/* Render Aksi dari props.actions */} {actions - .filter((action) => !action.hidden) + .filter((action) => { + if (action.hidden) return false; + if (action.permissions) { + if (typeof action.permissions === 'string') { + return permissionCheck(action.permissions); + } + return action.permissions.some((permission) => + permissionCheck(permission) + ); + } + return true; + }) .map((action, index) => { return ( - ))} + {approvals + .filter((approval) => { + if (approval.permissions) { + if (typeof approval.permissions === 'string') { + return permissionCheck(approval.permissions); + } + return approval.permissions.some((permission) => + permissionCheck(permission) + ); + } + return true; + }) + .map((approval, index) => ( + + ))}
diff --git a/src/components/pages/production/project-flock/ProjectFlockTable.tsx b/src/components/pages/production/project-flock/ProjectFlockTable.tsx index 4be30f7a..7f8ee104 100644 --- a/src/components/pages/production/project-flock/ProjectFlockTable.tsx +++ b/src/components/pages/production/project-flock/ProjectFlockTable.tsx @@ -25,6 +25,8 @@ import { ChangeEventHandler, useEffect, useMemo, useState } from 'react'; import toast from 'react-hot-toast'; import useSWR from 'swr'; +import RequirePermission from '@/components/helper/RequirePermission'; + const RowOptionsMenu = ({ type = 'dropdown', props, @@ -46,50 +48,58 @@ const RowOptionsMenu = ({ )} >
- - {props.row.original.approval.step_name === 'Aktif' && ( + + + {props.row.original.approval.step_name === 'Aktif' && ( + + + )} {props.row.original.approval.step_name === 'Pengajuan' && ( - + + + )} - + + +
); @@ -287,14 +297,16 @@ const ProjectFlockTable = ({ refresh }: { refresh?: () => void }) => {
- + + + {/*
- + + +
))}
diff --git a/src/components/pages/production/project-flock/detail/ProjectFlockDetail.tsx b/src/components/pages/production/project-flock/detail/ProjectFlockDetail.tsx index 41b511c9..0ee3ae32 100644 --- a/src/components/pages/production/project-flock/detail/ProjectFlockDetail.tsx +++ b/src/components/pages/production/project-flock/detail/ProjectFlockDetail.tsx @@ -29,6 +29,7 @@ import { } from '@/config/approval-line'; import useSWR from 'swr'; import { ProjectFlockKandangApi } from '@/services/api/production'; +import RequirePermission from '@/components/helper/RequirePermission'; const ProjectFlockDetail = ({ projectFlock, @@ -110,27 +111,31 @@ const ProjectFlockDetail = ({ leftIconHref='/production/project-flock' subtitle={`Created On ${formatDate(projectFlock.created_at, 'MMM DD, YYYY')}`} > - - - - - - + + + + + + + + + + {/* Informasi Umum */} @@ -418,38 +423,42 @@ const ProjectFlockDetail = ({
- - - - - + + + + - Close - - + + +
diff --git a/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx b/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx index 5ce62733..46830879 100644 --- a/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx +++ b/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx @@ -47,6 +47,7 @@ import Card from '@/components/Card'; import ProjectFlockKandangTable from '@/components/pages/production/project-flock/form/ProjectFlockKandangTable'; import { Nonstock } from '@/types/api/master-data/nonstock'; import { useUiStore } from '@/stores/ui/ui.store'; +import RequirePermission from '@/components/helper/RequirePermission'; import DrawerHeader from '@/components/helper/drawer/DrawerHeader'; interface ProjectFlockFormProps { @@ -734,36 +735,40 @@ const ProjectFlockForm = ({ )} {formType == 'detail' && (
- - + + + + + +
)}
*/} {formType !== 'detail' && ( - + + )}