mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-08-26 19:12:50 +00:00
Application Commit
This commit is contained in:
@@ -0,0 +1,88 @@
|
|||||||
|
import { Divider, Paper, Stack, Table, Text, Title } from "@mantine/core";
|
||||||
|
import {
|
||||||
|
conditionHolds,
|
||||||
|
type Attachment,
|
||||||
|
type FormSectionConfig,
|
||||||
|
type LicenseTypeRequirements,
|
||||||
|
} from "@ema-platform/api";
|
||||||
|
import { DocumentSlots } from "./DocumentSlots";
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
/** Every form section (not just the "review" group) in wizard-step order. */
|
||||||
|
sections: FormSectionConfig[];
|
||||||
|
formData: Record<string, Record<string, unknown>>;
|
||||||
|
localized: (value: { en?: string; am?: string } | undefined) => string;
|
||||||
|
config: LicenseTypeRequirements;
|
||||||
|
attachments: Attachment[];
|
||||||
|
applicationId: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read-only "what was filed" view for a submitted application: every
|
||||||
|
* answered section as a labelled table, then the uploaded documents.
|
||||||
|
*
|
||||||
|
* Shown instead of the wizard once there is nothing left to step through —
|
||||||
|
* the stepper is for filling a form in, not for re-reading one that is
|
||||||
|
* already someone else's decision to make.
|
||||||
|
*/
|
||||||
|
export function ApplicationSummary({
|
||||||
|
sections,
|
||||||
|
formData,
|
||||||
|
localized,
|
||||||
|
config,
|
||||||
|
attachments,
|
||||||
|
applicationId,
|
||||||
|
}: Props) {
|
||||||
|
return (
|
||||||
|
<Paper withBorder p="lg" radius="md">
|
||||||
|
<Stack gap="lg">
|
||||||
|
{sections.map((section) => (
|
||||||
|
<div key={section.key}>
|
||||||
|
<Text fw={600} fz="sm" tt="uppercase" c="gray.6" mb="sm">
|
||||||
|
{localized(section.title)}
|
||||||
|
</Text>
|
||||||
|
<Table withTableBorder withColumnBorders>
|
||||||
|
<Table.Tbody>
|
||||||
|
{(section.fields ?? [])
|
||||||
|
.filter((f) => conditionHolds(f.showWhen, formData))
|
||||||
|
.map((field) => (
|
||||||
|
<Table.Tr key={field.key}>
|
||||||
|
<Table.Td w="45%">
|
||||||
|
<Text size="xs" c="dimmed">
|
||||||
|
{localized(field.label)}
|
||||||
|
</Text>
|
||||||
|
</Table.Td>
|
||||||
|
<Table.Td>
|
||||||
|
<Text size="sm">
|
||||||
|
{String(formData[section.key]?.[field.key] ?? "—")}
|
||||||
|
</Text>
|
||||||
|
</Table.Td>
|
||||||
|
</Table.Tr>
|
||||||
|
))}
|
||||||
|
</Table.Tbody>
|
||||||
|
</Table>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<Divider mb="md" />
|
||||||
|
<Title order={5} mb="sm">
|
||||||
|
Documents
|
||||||
|
</Title>
|
||||||
|
<DocumentSlots
|
||||||
|
requirements={config.documentRequirements}
|
||||||
|
attachments={attachments}
|
||||||
|
formData={formData}
|
||||||
|
ownerType="APPLICATION"
|
||||||
|
ownerId={applicationId}
|
||||||
|
readOnly
|
||||||
|
onUploaded={() => {
|
||||||
|
// Read-only here — nothing to react to, but DocumentSlots
|
||||||
|
// requires the callback.
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Stack>
|
||||||
|
</Paper>
|
||||||
|
);
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user