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>
 | 
						|
    );
 | 
						|
}
 |