Raci is now working, and will be translated too.

This commit is contained in:
Colin Dawson 2026-02-17 21:09:47 +00:00
parent 9c86376fc5
commit f2568e1aab
4 changed files with 72 additions and 18 deletions

View File

@ -0,0 +1,6 @@
{
"Responsible": "Responsible",
"Accountable": "Accountable",
"Consulted": "Consulted",
"Informed": "Informed"
}

View File

@ -0,0 +1,63 @@
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 RaciPickerProps {
name: string;
label: string;
error?: string;
value: any;
onChange?: (name: string, value: string) => void;
includeLabel?: boolean;
}
export default function RaciPicker({
name,
label,
error,
value,
onChange,
includeLabel = true,
}: RaciPickerProps) {
const [options, setOptions] = useState<Option[] | undefined>(undefined);
const { t } = useTranslation(Namespaces.Raci);
useEffect(() => {
async function load() {
const opts: Option[] = [
{ _id: "Responsible", name: t("Responsible") },
{ _id: "Accountable", name: t("Accountable") },
{ _id: "Consulted", name: t("Consulted") },
{ _id: "Informed", name: t("Informed") },
];
setOptions(opts);
}
load();
}, [t]);
const handleChange = useCallback(
(e: React.ChangeEvent<HTMLSelectElement>) => {
const input = e.currentTarget;
if (onChange) onChange(input.name, input.value);
},
[onChange],
);
return (
<Select
name={name}
label={label}
error={error}
value={String(value?.id)}
options={options}
includeBlankFirstEntry={false}
onChange={handleChange}
includeLabel={includeLabel}
/>
);
}

View File

@ -10,6 +10,7 @@ export const Namespaces = {
MailTypes: "mailTypes",
HtmlIsland: "htmlIsland",
TaskTypes: "taskTypes",
Raci: "raci",
} as const;
export type Namespace = (typeof Namespaces)[keyof typeof Namespaces];

View File

@ -15,24 +15,7 @@ import ValidationErrorIcon from "../../../../../components/validationErrorIcon";
import ErrorBlock from "../../../../../components/common/ErrorBlock";
import RolePicker from "../../../../../components/pickers/RolePicker";
import { getCurrentUser } from "../../../../frame/services/authenticationService";
// TODO: Replace with your real RaciPicker
const RaciPicker = (props: any) => (
<div className="form-group">
<div style={{ marginBottom: 8 }}>
<select
name={props.name}
value={props.value}
onChange={(e) => props.onChange(props.name, e.target.value)}
>
<option value="Responsible">Responsible</option>
<option value="Accountable">Accountable</option>
<option value="Consulted">Consulted</option>
<option value="Informed">Informed</option>
</select>
</div>
</div>
);
import RaciPicker from "../../../../../components/pickers/RaciPicker";
// ---------------------------
// Domain Interfaces
@ -146,6 +129,7 @@ export const AssigneesOfITaskAssigneeEditor: React.FC<CapabilityEditorProps> = (
</td>
<td>
<RaciPicker
includeLabel={false}
name="raci"
label="RACI"
value={assignee.raci}