From f3798c698856e3972655395b74986fe5b1bc9624 Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Thu, 12 Mar 2026 17:29:52 +0000 Subject: [PATCH] Workong on making the outcome editor completely data driven --- public/locales/en/enumValues.json | 13 ++++ public/locales/en/verdict.json | 8 --- src/components/pickers/VerdictPicker.tsx | 64 ----------------- src/i18n/i18n.ts | 2 +- ...AssigneesOfIApprovalTaskAssigneeEditor.tsx | 1 + .../AssigneesOfITaskAssigneeEditor.tsx | 1 + .../BudgetEditorRegistryEntry.tsx | 1 + .../CapabilityEditors/BypassableEditor.tsx | 1 + ...ictRegistryEntry.tsx => OutcomeEditor.tsx} | 72 ++++++++++--------- .../CapabilityEditors/StageEditor.tsx | 1 + .../CapabilityEditors/TagsEditor.tsx | 1 + .../CapabilityEditors/TaskCoreEditor.tsx | 1 + .../components/TaskPicker.tsx | 2 +- .../components/TasksEditor.tsx | 4 +- .../components/capabilityEditorRegistry.ts | 31 ++++---- .../components/useCapabilityDefaults.tsx | 6 +- .../services/WorkflowTemplateService.ts | 2 + 17 files changed, 83 insertions(+), 128 deletions(-) create mode 100644 public/locales/en/enumValues.json delete mode 100644 public/locales/en/verdict.json delete mode 100644 src/components/pickers/VerdictPicker.tsx rename src/modules/manager/workflowTemplates/components/CapabilityEditors/{OutcomeOfApprovalVerdictRegistryEntry.tsx => OutcomeEditor.tsx} (73%) diff --git a/public/locales/en/enumValues.json b/public/locales/en/enumValues.json new file mode 100644 index 0000000..2a82864 --- /dev/null +++ b/public/locales/en/enumValues.json @@ -0,0 +1,13 @@ +{ + "ApprovalVerdict": { + "Approved": "Approved", + "ApprovedWithComments": "Approved with Comments", + "None": "None", + "Pending": "Pending", + "Rejected": "Rejected", + "Reviewed": "Reviewed" + }, + "DefaultOutcome": { + "Complete": "Complete" + } +} diff --git a/public/locales/en/verdict.json b/public/locales/en/verdict.json deleted file mode 100644 index a3b537d..0000000 --- a/public/locales/en/verdict.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "Approved": "Approved", - "ApprovedWithComments": "Approved with Comments", - "None": "None", - "Pending": "Pending", - "Rejected": "Rejected", - "Reviewed": "Reviewed" -} \ No newline at end of file diff --git a/src/components/pickers/VerdictPicker.tsx b/src/components/pickers/VerdictPicker.tsx deleted file mode 100644 index 0cfd4cc..0000000 --- a/src/components/pickers/VerdictPicker.tsx +++ /dev/null @@ -1,64 +0,0 @@ -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 ( -