894391aaa3
Trzeba jeszcze zrobić tak, aby pytania dla kolejnych hostów pojawiały się po kolei - tzn dopiero jak dla poprzedniego hosta hostNeedsQuestions jest false, to pokazujemy następnego. Potem trzeba popracować nad samym generowaniem treści na podstawie wszystkich tych odpowiedzi
48 lines
1.7 KiB
TypeScript
48 lines
1.7 KiB
TypeScript
import { normalizeForClassname } from '../util';
|
|
import { EmailTemplate3Config } from './email-template-3';
|
|
|
|
export default function hostSettingsRadio<
|
|
Field extends keyof EmailTemplate3Config['hosts_settings'][string]
|
|
>({
|
|
options,
|
|
host_id,
|
|
field,
|
|
setConfig,
|
|
value,
|
|
}: {
|
|
host_id: string;
|
|
setConfig: React.Dispatch<React.SetStateAction<EmailTemplate3Config>>;
|
|
field: Field;
|
|
options: Record<Exclude<EmailTemplate3Config['hosts_settings'][string][Field], 'null'>, string>;
|
|
value: EmailTemplate3Config['hosts_settings'][string][Field];
|
|
}) {
|
|
return (
|
|
<div>
|
|
{Object.entries(options).map(([option_value, display]) => (
|
|
<div>
|
|
<input
|
|
type="radio"
|
|
name={normalizeForClassname(host_id + '_consent_problems')}
|
|
value={option_value}
|
|
checked={value == option_value}
|
|
id={normalizeForClassname(option_value + host_id)}
|
|
onChange={(e) => {
|
|
setConfig((v) => ({
|
|
...v,
|
|
hosts_settings: {
|
|
...v.hosts_settings,
|
|
[host_id]: {
|
|
...v.hosts_settings[host_id],
|
|
[field]: e.target.value,
|
|
},
|
|
},
|
|
}));
|
|
}}
|
|
/>
|
|
<label htmlFor={normalizeForClassname(option_value + host_id)}>{display}</label>
|
|
</div>
|
|
))}
|
|
</div>
|
|
);
|
|
}
|