import { useRef, useState } from 'react' import { useLocation } from 'react-router-dom' import { Space, Flex, Card } from 'antd' import useCollapseState from '../../hooks/useCollapseState' import ObjectForm from '../../common/ObjectForm' import ObjectInfo from '../../common/ObjectInfo' import ObjectTable from '../../common/ObjectTable' import ObjectActions from '../../common/ObjectActions' import ViewButton from '../../common/ViewButton' import EditButtons from '../../common/EditButtons' import ActionHandler from '../../common/ActionHandler' import InfoCollapse from '../../common/InfoCollapse' import NotesPanel from '../../common/NotesPanel' import LockIndicator from '../../common/LockIndicator' import InfoCircleIcon from '../../../Icons/InfoCircleIcon' import FilamentStockIcon from '../../../Icons/FilamentStockIcon' import NoteIcon from '../../../Icons/NoteIcon' import AuditLogIcon from '../../../Icons/AuditLogIcon' import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder' const FilamentStockInfo = () => { const location = useLocation() const editFormRef = useRef(null) const actionHandlerRef = useRef(null) const filamentStockId = new URLSearchParams(location.search).get( 'filamentStockId' ) const [collapseState, updateCollapseState] = useCollapseState( 'FilamentStockInfo', { info: true, events: true, notes: true, auditLogs: true } ) const [editFormState, setEditFormState] = useState({ isEditing: false, editLoading: false, formValid: false, lock: null, loading: false }) const actions = { reload: () => { editFormRef?.current?.fetchObject?.() return true }, edit: () => { editFormRef?.current?.startEditing?.() return false }, cancelEdit: () => { editFormRef?.current?.cancelEditing?.() return true }, finishEdit: () => { editFormRef?.current?.handleUpdate?.() return true } } return ( <> { actionHandlerRef.current.callAction('finishEdit') }} cancelEditing={() => { actionHandlerRef.current.callAction('cancelEdit') }} startEditing={() => { actionHandlerRef.current.callAction('edit') }} editLoading={editFormState.editLoading} formValid={editFormState.formValid} disabled={editFormState.lock?.locked || editFormState.loading} loading={editFormState.editLoading} />
} active={collapseState.info} onToggle={(expanded) => updateCollapseState('info', expanded)} collapseKey='info' > { setEditFormState((prev) => ({ ...prev, ...state })) }} > {({ loading, isEditing, objectData }) => ( )} } active={collapseState.events} onToggle={(expanded) => updateCollapseState('events', expanded)} collapseKey='events' > {editFormState.loading ? ( ) : ( )} } active={collapseState.notes} onToggle={(expanded) => updateCollapseState('notes', expanded)} collapseKey='notes' > } active={collapseState.auditLogs} onToggle={(expanded) => updateCollapseState('auditLogs', expanded) } collapseKey='auditLogs' > {editFormState.loading ? ( ) : ( )}
) } export default FilamentStockInfo