michelson/dante-stories

View on GitHub
app/javascript/components/AddTagPopover.js

Summary

Maintainability
A
1 hr
Test Coverage
import React from 'react';
import ReactDOM from "react-dom";

export default class AddTagPopover extends React.Component {
  constructor(props) {
    super(props);
    this.state = { tagName: '' };
  }

  render () {
    return (
      <div className="add-tag-popover popover bs-popover-top" x-placement="bottom">
        <div className="arrow" />
        <h3 className="popover-header">
          Add your interest
        </h3>
        <div className="popover-body">
          <form onSubmit={this.handleAddTag.bind(this)}>
            <div className="input-group">
              <input
                type="text"
                value={this.state.tagName}
                onChange={this.handleInputChange.bind(this)}
                className="form-control"
              />

              <div className="input-group-append">
                <button 
                  className="btn btn-outline-secondary" 
                  type="button"
                  onClick={this.handleAddTag.bind(this)}>
                  Add
                </button>
              </div>

              
            </div>
          </form>
        </div>
      </div>
    );
  }

  handleInputChange(e) {
    this.setState({ tagName: e.target.value });
  }

  handleAddTag(e) {
    e.preventDefault();
    if (this.state.tagName.length) {
      $.ajax({
        url: `/api/tags?tag_name=${this.state.tagName}`,
        method: 'POST',
        dataType: 'json',
        success: (data) => {
          PubSub.publish('TagFollowButton:onClick');
        }
      });
      this.props.closePopover();
    }
  }
}