/* eslint react/no-multi-comp:0, no-console:0 */

import { createForm } from '../index';
import { regionStyle } from './styles';
import { Switch } from 'ant-design-vue';

const TopForm = {
  props: {
    form: Object,
  },
  render() {
    const { getFieldProps } = this.form;
    return (
      <div style={regionStyle}>
        <div>has email?</div>
        <div>
          <Switch {...getFieldProps('on', { initialValue: true, valuePropName: 'checked' })} />
        </div>
      </div>
    );
  },
};

const BottomForm = {
  props: {
    form: Object,
    on: Boolean,
  },
  render() {
    const { form } = this;
    const on = form.getFieldValue('on');
    const style = {
      ...regionStyle,
      display: on ? 'block' : 'none',
    };
    return (
      <div style={style}>
        <div>email:</div>
        <div>
          <input {...form.getFieldProps('email', { rules: [{ type: 'email' }], hidden: !on })} />
        </div>
      </div>
    );
  },
};

const Form = {
  props: {
    form: Object,
  },
  methods: {
    onSubmit(e) {
      e.preventDefault();
      console.log(this.form.getFieldsValue());
    },
  },

  render() {
    const { form } = this;
    return (
      <div>
        <TopForm form={form} />
        <BottomForm form={form} />
        <div style={regionStyle}>
          <button onClick={this.onSubmit}>submit</button>
        </div>
      </div>
    );
  },
};

const NewForm = createForm()(Form);

export default {
  render() {
    return (
      <div>
        <h2>parallel form</h2>
        <NewForm />
      </div>
    );
  },
};
