nponiros/bookmarks_manager

View on GitHub
app/src/components/Settings/AddSyncUrl.jsx

Summary

Maintainability
A
40 mins
Test Coverage
import React, { PropTypes, Component } from 'react';
import TextField from 'material-ui/TextField';
import FlatButton from 'material-ui/FlatButton';

import { ADD_SYNC_URL } from '../../constants';

class AddSyncUrl extends Component {
  constructor() {
    super();
    this.state = {
      url: '',
      port: '',
    };

    this.handleChange = this.handleChange.bind(this);
    this.handleAdd = this.handleAdd.bind(this);
  }

  handleChange(key, value) {
    this.setState({
      [key]: value,
    });
  }

  handleAdd() {
    const url = `${this.state.url}${this.state.port ? `:${this.state.port}` : ''}`;
    this.props.handleAction(ADD_SYNC_URL, url);
  }

  render() {
    return (<div style={{ paddingBottom: '20px' }}>
      <TextField
        name="url"
        floatingLabelText="URL"
        onChange={e => this.handleChange('url', e.target.value)}
        fullWidth
      />
      <br />
      <TextField
        name="port"
        floatingLabelText="Port"
        type="number"
        onChange={e => this.handleChange('port', e.target.value)}
        fullWidth
      />
      <br />
      <FlatButton
        label="Add"
        primary
        onTouchTap={(e) => {
          e.preventDefault();
          this.handleAdd();
        }}
      />
    </div>);
  }
}

AddSyncUrl.propTypes = {
  handleAction: PropTypes.func.isRequired,
};

export default AddSyncUrl;