From a3430d221d31fa361ceccf9484744905bffbb181 Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Sun, 22 Feb 2026 23:33:30 +0000 Subject: [PATCH] Added the approval IOutcome capability to the codebase. --- public/locales/bg/verdict.json | 8 + public/locales/cs/verdict.json | 8 + public/locales/de/verdict.json | 8 + public/locales/en/verdict.json | 8 + public/locales/es/verdict.json | 8 + public/locales/fr/verdict.json | 8 + public/locales/ko/verdict.json | 8 + public/locales/nl/verdict.json | 8 + public/locales/pl/verdict.json | 8 + public/locales/pt/verdict.json | 8 + public/locales/uk/verdict.json | 7 + public/locales/ur/verdict.json | 8 + src/components/pickers/VerdictPicker.tsx | 64 ++++++ .../OutcomeOfApprovalVerdictRegistryEntry.tsx | 188 ++++++++++++++++++ 14 files changed, 347 insertions(+) create mode 100644 public/locales/bg/verdict.json create mode 100644 public/locales/cs/verdict.json create mode 100644 public/locales/de/verdict.json create mode 100644 public/locales/en/verdict.json create mode 100644 public/locales/es/verdict.json create mode 100644 public/locales/fr/verdict.json create mode 100644 public/locales/ko/verdict.json create mode 100644 public/locales/nl/verdict.json create mode 100644 public/locales/pl/verdict.json create mode 100644 public/locales/pt/verdict.json create mode 100644 public/locales/uk/verdict.json create mode 100644 public/locales/ur/verdict.json create mode 100644 src/components/pickers/VerdictPicker.tsx create mode 100644 src/modules/manager/workflowTemplates/components/CapabilityEditors/OutcomeOfApprovalVerdictRegistryEntry.tsx diff --git a/public/locales/bg/verdict.json b/public/locales/bg/verdict.json new file mode 100644 index 0000000..52f4885 --- /dev/null +++ b/public/locales/bg/verdict.json @@ -0,0 +1,8 @@ +{ + "Approved": "Утврђено", + "ApprovedWithComments": "Усвојено уз коментаре", + "None": "Ниједан.", + "Pending": "У очекивању", + "Rejected": "Одбијено", + "Reviewed": "Прегледано." +} \ No newline at end of file diff --git a/public/locales/cs/verdict.json b/public/locales/cs/verdict.json new file mode 100644 index 0000000..297928c --- /dev/null +++ b/public/locales/cs/verdict.json @@ -0,0 +1,8 @@ +{ + "Approved": "Schváleno", + "ApprovedWithComments": "Schváleno s poznámkami", + "None": "", + "Pending": "Čeká se na další kroky.", + "Rejected": "Odmítnuto.", + "Reviewed": "Přezkoumáno" +} \ No newline at end of file diff --git a/public/locales/de/verdict.json b/public/locales/de/verdict.json new file mode 100644 index 0000000..80db081 --- /dev/null +++ b/public/locales/de/verdict.json @@ -0,0 +1,8 @@ +{ + "Approved": "Genehmigt", + "ApprovedWithComments": "Genehmigt mit Anmerkungen", + "None": "Nichts.", + "Pending": "Wird noch bearbeitet.", + "Rejected": "Abgelehnt", + "Reviewed": "Überprüft." +} \ No newline at end of file diff --git a/public/locales/en/verdict.json b/public/locales/en/verdict.json new file mode 100644 index 0000000..a3b537d --- /dev/null +++ b/public/locales/en/verdict.json @@ -0,0 +1,8 @@ +{ + "Approved": "Approved", + "ApprovedWithComments": "Approved with Comments", + "None": "None", + "Pending": "Pending", + "Rejected": "Rejected", + "Reviewed": "Reviewed" +} \ No newline at end of file diff --git a/public/locales/es/verdict.json b/public/locales/es/verdict.json new file mode 100644 index 0000000..bdec9c9 --- /dev/null +++ b/public/locales/es/verdict.json @@ -0,0 +1,8 @@ +{ + "Approved": "Aprobado", + "ApprovedWithComments": "Aprobado con comentarios.", + "None": "Ninguno", + "Pending": "Pendiente", + "Rejected": "Rechazado", + "Reviewed": "Revisado" +} \ No newline at end of file diff --git a/public/locales/fr/verdict.json b/public/locales/fr/verdict.json new file mode 100644 index 0000000..58d8d82 --- /dev/null +++ b/public/locales/fr/verdict.json @@ -0,0 +1,8 @@ +{ + "Approved": "Approuvé", + "ApprovedWithComments": "Approuvé avec des observations.", + "None": "Aucun", + "Pending": "En attente", + "Rejected": "Rejeté", + "Reviewed": "Revisé" +} \ No newline at end of file diff --git a/public/locales/ko/verdict.json b/public/locales/ko/verdict.json new file mode 100644 index 0000000..6b9a40e --- /dev/null +++ b/public/locales/ko/verdict.json @@ -0,0 +1,8 @@ +{ + "Approved": "승인됨", + "ApprovedWithComments": "의견을 반영하여 승인되었습니다.", + "None": "", + "Pending": "대기 중", + "Rejected": "거절당했습니다.", + "Reviewed": "리뷰 완료" +} \ No newline at end of file diff --git a/public/locales/nl/verdict.json b/public/locales/nl/verdict.json new file mode 100644 index 0000000..857bc53 --- /dev/null +++ b/public/locales/nl/verdict.json @@ -0,0 +1,8 @@ +{ + "Approved": "Goedkeurd", + "ApprovedWithComments": "Goedkeurd met opmerkingen", + "None": "Niet van toepassing.", + "Pending": "In afwachting", + "Rejected": "Afgekeurd", + "Reviewed": "Beoordeeld." +} \ No newline at end of file diff --git a/public/locales/pl/verdict.json b/public/locales/pl/verdict.json new file mode 100644 index 0000000..3576004 --- /dev/null +++ b/public/locales/pl/verdict.json @@ -0,0 +1,8 @@ +{ + "Approved": "Zatwierdzone", + "ApprovedWithComments": "Zatwierdzone z komentarzami.", + "None": "Nie ma nic.", + "Pending": "W oczekiwaniu.", + "Rejected": "Odrzucono.", + "Reviewed": "Przegłoszono." +} \ No newline at end of file diff --git a/public/locales/pt/verdict.json b/public/locales/pt/verdict.json new file mode 100644 index 0000000..ac90fd0 --- /dev/null +++ b/public/locales/pt/verdict.json @@ -0,0 +1,8 @@ +{ + "Approved": "Aprovado", + "ApprovedWithComments": "Aprovado com comentários.", + "None": "Nenhum.", + "Pending": "A aguardar", + "Rejected": "Rejeitado", + "Reviewed": "Revisado" +} \ No newline at end of file diff --git a/public/locales/uk/verdict.json b/public/locales/uk/verdict.json new file mode 100644 index 0000000..9d6e092 --- /dev/null +++ b/public/locales/uk/verdict.json @@ -0,0 +1,7 @@ +{ + "Approved": "Схвалено", + "ApprovedWithComments": "Схвалено з коментарями", + "Pending": "У підготовці.", + "Rejected": "Відхилено", + "Reviewed": "Оглянуто." +} \ No newline at end of file diff --git a/public/locales/ur/verdict.json b/public/locales/ur/verdict.json new file mode 100644 index 0000000..abfbfce --- /dev/null +++ b/public/locales/ur/verdict.json @@ -0,0 +1,8 @@ +{ + "Approved": "مंजूर कर दिया गया।", + "ApprovedWithComments": "تجویز دیا गया है, साथ ही कुछ टिप्पणियाँ भी की गई हैं।", + "None": "کुछ नहीं।", + "Pending": "**पेंडिंग**", + "Rejected": "رد دیا گया।", + "Reviewed": "سमीक्षा की गई।" +} \ No newline at end of file diff --git a/src/components/pickers/VerdictPicker.tsx b/src/components/pickers/VerdictPicker.tsx new file mode 100644 index 0000000..0cfd4cc --- /dev/null +++ b/src/components/pickers/VerdictPicker.tsx @@ -0,0 +1,64 @@ +import React, { useEffect, useState, useCallback } from "react"; +import Select from "../common/Select"; +import Option from "../common/option"; +import { useTranslation } from "react-i18next"; +import { Namespaces } from "../../i18n/i18n"; + +interface VerdictPickerProps { + name: string; + label: string; + error?: string; + value: string; + onChange?: (name: string, value: string) => void; + includeLabel?: boolean; +} +export default function VerdictPicker({ + name, + label, + error, + value, + onChange, + includeLabel = true, +}: VerdictPickerProps) { + const [options, setOptions] = useState(undefined); + const { t } = useTranslation(Namespaces.Verdict); + + useEffect(() => { + async function load() { + const opts: Option[] = [ + { _id: "None", name: t("None") }, + { _id: "Pending", name: t("Pending") }, + { _id: "ApprovedWithComments", name: t("ApprovedWithComments") }, + { _id: "Approved", name: t("Approved") }, + { _id: "Rejected", name: t("Rejected") }, + { _id: "Reviewed", name: t("Reviewed") }, + ]; + + setOptions(opts); + } + + load(); + }, [t]); + + const handleChange = useCallback( + (e: React.ChangeEvent) => { + const input = e.currentTarget; + + if (onChange) onChange(input.name, input.value); + }, + [onChange], + ); + + return ( +