mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-23 23:05:46 +00:00
60 lines
1.7 KiB
TypeScript
60 lines
1.7 KiB
TypeScript
'use client';
|
|
|
|
import { usePathname, useRouter } from 'next/navigation';
|
|
import Drawer from '@/components/Drawer';
|
|
import React, { ReactNode } from 'react';
|
|
import ProjectFlockTable from '@/components/pages/production/project-flock/ProjectFlockTable';
|
|
import { useUiStore } from '@/stores/ui/ui.store';
|
|
|
|
export default function ProjectFlockLayout({
|
|
children,
|
|
}: {
|
|
children: ReactNode;
|
|
}) {
|
|
const pathname = usePathname();
|
|
const router = useRouter();
|
|
const toggleValidate = useUiStore((s) => s.toggleValidate);
|
|
|
|
const isAdd = pathname.endsWith('/add');
|
|
const isEdit = pathname.includes('/detail/edit');
|
|
const isDetail = pathname.includes('/detail');
|
|
const isChickin = pathname.includes('/chickin/add/kandang');
|
|
const isClosing = pathname.includes('/closing');
|
|
|
|
const isOpen = isAdd || isEdit || isDetail || isChickin || isClosing;
|
|
|
|
const handleBackdropClick = () => {
|
|
const unsub = useUiStore.getState().subscribeIsValid((isValid) => {
|
|
if (isValid) {
|
|
unsub(); // berhenti listen
|
|
router.push('/production/project-flock');
|
|
}
|
|
});
|
|
|
|
toggleValidate();
|
|
};
|
|
|
|
return (
|
|
<>
|
|
{/* List page always rendered */}
|
|
<div className='min-h-sceen w-full relative'>
|
|
<ProjectFlockTable
|
|
refresh={() => !isOpen && router.push('/production/project-flock')}
|
|
/>
|
|
</div>
|
|
|
|
{/* Render Drawer only on /add */}
|
|
<Drawer
|
|
open={isOpen}
|
|
setOpen={(v) => {
|
|
if (!v) router.push('/production/project-flock');
|
|
}}
|
|
closeOnBackdropClick={isDetail ? true : false}
|
|
onBackdropClick={handleBackdropClick}
|
|
variant='right'
|
|
sidebarContent={isOpen && <div className=''>{children}</div>}
|
|
/>
|
|
</>
|
|
);
|
|
}
|