MNEMO / client /src /components /EntryForm.jsx
Akeno
Deploy to Hugging Face Spaces
d63472e
Raw
History Blame Contribute Delete
1.46 kB
import { useEffect, useState } from "react";
const initialState = {
question: "",
answer: ""
};
export function EntryForm({ onSubmit, onCancel, initialValue, saving }) {
const [form, setForm] = useState(initialState);
useEffect(() => {
setForm(initialValue || initialState);
}, [initialValue]);
return (
<form
className="editor-panel"
onSubmit={(event) => {
event.preventDefault();
onSubmit(form);
}}
>
<label className="field-label" htmlFor="question">
Question
</label>
<input
id="question"
value={form.question}
onChange={(event) => setForm((current) => ({ ...current, question: event.target.value }))}
placeholder="What do you want to remember?"
/>
<label className="field-label" htmlFor="answer">
Answer (Markdown supported)
</label>
<textarea
id="answer"
rows="10"
value={form.answer}
onChange={(event) => setForm((current) => ({ ...current, answer: event.target.value }))}
placeholder="Markdown renders as formatted answer output."
/>
<div className="form-actions">
<button className="button-primary" disabled={saving} type="submit">
{saving ? "Saving..." : "Save Entry"}
</button>
<button className="button-ghost" onClick={onCancel} type="button">
Cancel
</button>
</div>
</form>
);
}