import { Link } from '@inertiajs/react'; import { useEffect } from 'react'; import { usePublication, type PublicationProps, } from '@/lib/partnership-publication'; import { Field, Errors, control, button, labels, } from '@/pages/partnerships/shared'; const actions: Record = { submit: 'Submeter para publicação', publish: 'Publicar', return: 'Devolver para correcção', reject: 'Rejeitar com fundamento', suspend: 'Suspender publicação', archive: 'Arquivar publicação', renew: 'Renovar em rascunho', }; const fields: Record = { title: 'Título', offer: 'Oferta', seeking: 'Procura', kind: 'Oferta ou procura', partnership_type: 'Tipo de parceria', sector_id: 'Referência do sector', organization_id: 'Referência da organização', deadline: 'Prazo', summary: 'Resumo público', requirements: 'Requisitos', confidentiality: 'Partilha dos detalhes', availability: 'Disponibilidade', consent: 'Autorização de partilha', mandatory: 'Critérios obrigatórios', origins: 'Origens', locations: 'Localizações', }; export default function PartnershipPublication({ p, actorId, onDirty, }: { p: PublicationProps; actorId: number; onDirty: (value: boolean) => void; }) { const edit = usePublication(p, actorId); useEffect(() => { onDirty(edit.dirty); }, [edit.dirty, onDirty]); useEffect(() => () => onDirty(false), [onDirty]); if (!edit.dirty && !p.owner && !p.moderator) return null; const active = edit.current?.actions ?? []; return (

Pré-visualização e publicação

Estado: {labels[p.record.status] ?? p.record.status}. Verificação da organização, sector e localização permanecem por confirmar quando não há evidência.

A acção aplica-se à versão revista da proposta. Submeter encaminha para moderação; renovar prepara um rascunho. Estas acções não decidem candidaturas nem alteram salas ou marcos.

{edit.problem &&

{edit.problem}

} {edit.invalid && (

A resposta ou conta actual não corresponde a esta preparação. A gravação está suspensa.

)} {(edit.stale || edit.needsCompare || edit.recovery) && (

Reveja o contexto antes de outra acção. O motivo preparado foi conservado.

Versão revista: {edit.base?.version} ·{' '} {labels[edit.base?.status ?? '']} → Actual:{' '} {edit.current?.version} ·{' '} {labels[edit.current?.status ?? '']}

{edit.changes.length > 0 && (
{edit.changes.map((key) => ( ))}
Campo Antes Actualmente
{fields[key] ?? key} {edit.base?.values[key] || 'Não indicado'} {edit.current?.values[key] || 'Não indicado'}
)}

Adoptar esta versão conserva o motivo e permite preparar uma nova tentativa. Uma tentativa anterior sem confirmação deixa de ser recuperada por este formulário; o seu registo no processo mantém-se.

{edit.mustRefresh && (

Compare com a proposta actual antes de adoptar uma nova versão.

)}
)} {(active.length > 0 || edit.dirty) && (