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

Version Path
pages_core-3.15.4 app/javascript/components/TagEditor/AddTagForm.tsx
pages_core-3.15.3 app/javascript/components/TagEditor/AddTagForm.tsx
pages_core-3.15.2 app/javascript/components/TagEditor/AddTagForm.tsx
pages_core-3.15.1 app/javascript/components/TagEditor/AddTagForm.tsx