DDCreationStudios/votingApp

View on GitHub
src/components/singlePollPage/NewAnswer.js

Summary

Maintainability
C
1 day
Test Coverage
import React from 'react';
import PropTypes from 'prop-types';
import shortid from 'shortid';

const NewAnswer = (props) => {
  const answerList = props.state.answers.map((aw, ind) =>
    (<div className="input-field col s10" key={ind}>
      <i className="material-icons prefix">queue</i>
      <input
        id={`answer${ind}`}
        type="text"
        value={aw.answer}
        onChange={event => props.onChange(event, ind)}
        className="validate"
      />
      <label htmlFor={`answer${ind}`}>New Answer</label>
    </div>),
    );

  const renderPre = () =>
        props.poll.answers.map((ans, answerInd) =>
  (<div className="input-field col s10" key={shortid.generate()}>
    <i className="material-icons prefix">done</i>
    <input disabled id={`label${answerInd}and${props.index}`} />
    <label htmlFor={`label${answerInd}and${props.index}`}>
      {ans.answer}
    </label>
  </div>),
        );

  return (
    <div id="modal1" className="modal modal-fixed-footer teal darken-2 center-align">
      <div className="modal-content">
        <h2>Add a new answer</h2>
        <div className="row">
          <form className="col s12" onSubmit={props.addPoll}>
            <div className="row">
              <div className="input-field col s10">
                <i className="material-icons prefix">question_answer</i>
                <input disabled id="icon_prefix" />
                <label htmlFor="icon_prefix">
                  {props.poll.question}
                </label>
              </div>
              {renderPre()}
              {answerList}

              <div className="col s10">
                <a
                  onClick={() => props.addAnswer()}
                  className="waves-effect waves-light btn orange-text left"
                >
                  <i className="orange-text material-icons prefix">queue</i>Add answer
                                </a>
              </div>
            </div>
            <input type="submit" hidden />
          </form>
        </div>
      </div>

      <div className="modal-footer blue-grey darken-4">
        <a
          onClick={() => props.addPoll()}
          className="modal-action modal-close waves-effect waves-green btn blue-grey darken-4 orange-text"
        >
                    Save
                </a>
      </div>
    </div>
  );
};

NewAnswer.propTypes = {
  state: PropTypes.shape({
    answers: PropTypes.arrayOf(
            PropTypes.shape({
  answer: PropTypes.string,
  votes: PropTypes.number,
}).isRequired,
        ),
  }).isRequired,
  poll: PropTypes.shape({
    question: PropTypes.string,
    answers: PropTypes.arrayOf(
            PropTypes.shape({
  answer: PropTypes.string,
  votes: PropTypes.number,
}),
        ),
  }).isRequired,
  addPoll: PropTypes.func.isRequired,
  addAnswer: PropTypes.func.isRequired,
};

export default NewAnswer;