import type { FormEvent } from 'react'; import React, { useState } from 'react'; import type { HttpHeader } from '../lib/models'; import { IconButton } from './IconButton'; import { Input } from './Input'; import { HStack, VStack } from './Stacks'; export function HeaderEditor() { const [headers, setHeaders] = useState([]); const [newHeader, setNewHeader] = useState({ name: '', value: '' }); const handleSubmit = (e: FormEvent) => { e.preventDefault(); setHeaders([...headers, newHeader]); setNewHeader({ name: '', value: '' }); }; const handleDelete = (index: number) => { setHeaders((headers) => headers.filter((_, i) => i !== index)); }; const handleChangeHeader = (header: HttpHeader, index: number) => { setHeaders((headers) => headers.map((h, i) => (i === index ? header : h))); }; return (
{headers.map((header, i) => ( handleChangeHeader(h, i)} onDelete={() => handleDelete(i)} /> ))}
); } function FormRow({ header, addSubmit, onChange, onDelete, }: { header: HttpHeader; addSubmit?: boolean; onChange: (header: HttpHeader) => void; onDelete?: () => void; }) { return (
{ onChange({ name, value: header.value }); }} /> { onChange({ name: header.name, value }); }} /> {onDelete && } {addSubmit && }
); }