Sha256: 3be2897efae59cf36fe80d9aeb3d20f178f67e62dbc5eb17b5a4127fe9ecf1a1
Contents?: true
Size: 1.08 KB
Versions: 4
Compression:
Stored size: 1.08 KB
Contents
import React, { ChangeEvent, MouseEvent, KeyboardEvent, useState } from "react"; import * as Tags from "../../types/Tags"; interface Props { dispatch: (action: Tags.Action) => void; } export default function AddTagForm(props: Props) { const [tag, setTag] = useState(""); const submit = () => { props.dispatch({ type: "addTag", payload: tag }); setTag(""); }; const handleSubmit = (evt: MouseEvent) => { evt.preventDefault(); submit(); }; const handleKeyDown = (evt: KeyboardEvent<HTMLInputElement>) => { if (evt.which === 13) { evt.preventDefault(); submit(); } }; const handleChange = (evt: ChangeEvent<HTMLInputElement>) => { setTag(evt.target.value); }; return ( <div className="add-tag-form inline-form"> <input name="add-tag" type="text" className="add-tag tight" value={tag} onKeyDown={handleKeyDown} onChange={handleChange} placeholder="Add tag..." /> <button onClick={handleSubmit} disabled={!tag}> Add </button> </div> ); }
Version data entries
4 entries across 4 versions & 1 rubygems