import React from "react" import Wip from '../Wip/Wip' import Survey from './Survey' import { boolean } from "@storybook/addon-knobs" class SurveyContainer extends React.Component { state = { loading: false, questions: [ { question: 'Do you like food?', answers: [ { label: 'Yes, I do!', selected: true, value: 1, }, { label: 'No, I don\'t!', selected: false, value: 0, }, { label: 'Kinda..', selected: false, value: 2, } ], }, { question: 'Do you like work?', answers: [ { label: 'Yes, I do!', selected: true, value: 1, }, { label: 'No, I don\'t!', selected: false, value: 0, }, { label: 'Kinda..', selected: false, value: 2, } ], } ], submitting: false, } componentWillMount() { this.setState({ canSubmit: false, loading: true, }) setTimeout(() => { this.setState({ canSubmit: true, loading: false, }) }, 1500) } handleOnChange = (qIdx, aIdx) => { const { questions } = this.state for(let answer of questions[qIdx].answers) { answer.selected = false } questions[qIdx].answers[aIdx].selected = true this.setState({ questions }) } handleOnSubmit = () => { this.setState({ showErrors: false, submitting: true, }) setTimeout(() => { this.setState({ showErrors: true, submitting: false, }) }, 1500) } render() { const { canSubmit, loading, questions, submitting, } = this.state const showErrors = boolean("show errors", this.state.showErrors || false) const props = { canSubmit: boolean("canSubmit", canSubmit || true), errors: showErrors ? ["Something wrong", "Something else not right"] : [], loading: boolean("loading", loading || false), onChange: this.handleOnChange, onSubmit: this.handleOnSubmit, questions, submitting: boolean("submitting", submitting || false), } const child = React.cloneElement(this.props.children, props) return ( {child} ) } } export default function SurveyStory(stories) { stories.add("Survey", () => { return ( ) }) }