<script>
import AdvancedSearch from './advanced-search';
import AdvancedSearchString from '!raw-loader!./advanced-search';
import Coordinated from './coordinated';
import CoordinatedString from '!raw-loader!./coordinated';
import CustomizedFormControls from './customized-form-controls';
import CustomizedFormControlsString from '!raw-loader!./customized-form-controls';
import DynamicFormItem from './dynamic-form-item';
import DynamicFormItemString from '!raw-loader!./dynamic-form-item';
import DynamicRule from './dynamic-rule';
import DynamicRuleString from '!raw-loader!./dynamic-rule';
import FormInModal from './form-in-modal';
import FormInModalString from '!raw-loader!./form-in-modal';
import GlobalState from './global-state';
import GlobalStateString from '!raw-loader!./global-state';
import VuexState from './vuex';
import VuexStateString from '!raw-loader!./vuex';
import HorizontalLogin from './horizontal-login';
import HorizontalLoginString from '!raw-loader!./horizontal-login';
import Layout from './layout';
import LayoutString from '!raw-loader!./layout';
import NormalLogin from './normal-login';
import NormalLoginString from '!raw-loader!./normal-login';
import Register from './register';
import RegisterString from '!raw-loader!./register';
import TimeRelatedControls from './time-related-controls';
import TimeRelatedControlsString from '!raw-loader!./time-related-controls';
import ValidateOther from './validate-other';
import ValidateOtherString from '!raw-loader!./validate-other';
import ValidateStatic from './validate-static';
import ValidateStaticString from '!raw-loader!./validate-static';
import WithoutFormCreate from './without-form-create';
import WithoutFormCreateString from '!raw-loader!./without-form-create';

import CN from '../index.zh-CN';
import US from '../index.en-US';

const md = {
  cn: `# Form 表单
           具有数据收集、校验和提交功能的表单,包含复选框、单选框、输入框、下拉选择框等元素。

## 表单

我们为 \`form\` 提供了以下三种排列方式:

- 水平排列:标签和表单控件水平排列;(默认)
- 垂直排列:标签和表单控件上下垂直排列;
- 行内排列:表单项水平行内排列。

## 表单域

表单一定会包含表单域,表单域可以是输入控件,标准表单域,标签,下拉菜单,文本域等。

这里我们封装了表单域 \`<Form.Item />\` 。


 ## 注意: 
1、如果使用 \`Form.create\` 处理表单使其具有自动收集数据并校验的功能,建议使用\`jsx\`。
2、如果不是使用Vue.use(Form)形式注册的\`Form\`组件,你需要自行将\`$form\`挂载到Vue原型上。
\`Vue.prototype.$form = Form\`


## 代码演示
        `,
  us: `# Form
           Form is used to collect, validate, and submit the user input, usually contains various form items including checkbox, radio, input, select, and etc.

## Form

You can align the controls of a \`form\` using the \`layout\` prop:

- \`horizontal\`:to horizontally align the \`label\`s and controls of the fields. (Default)
- \`vertical\`:to vertically align the \`label\`s and controls of the fields.
- \`inline\`:to render form fields in one line.

## Form fields

A form consists of one or more form fields whose type includes input, textarea, checkbox, radio, select, tag, and more.
A form field is defined using \`<Form.Item />\`.

 ## Note:
1. If you use \`Form.create\` to process the form to have the ability to automatically collect data and verify it, it is recommended to use \`jsx\`.
2. If you are not using the \`Form\` component registered in Vue.use(Form) form, you need to mount \`$form\` to the Vue prototype yourself.
\`Vue.prototype.$form = Form\`

## Examples
        `,
};

export default {
  category: 'Components',
  subtitle: '表单',
  type: 'Data Entry',
  zhType: '数据录入',
  cols: 1,
  title: 'Form',
  render() {
    return (
      <div>
        <md cn={md.cn} us={md.us} />
        <demo-container code={CoordinatedString}>
          <Coordinated />
        </demo-container>
        <demo-container code={DynamicRuleString}>
          <DynamicRule />
        </demo-container>
        <demo-container code={HorizontalLoginString}>
          <HorizontalLogin />
        </demo-container>
        <demo-container code={LayoutString}>
          <Layout />
        </demo-container>
        <demo-container code={ValidateStaticString}>
          <ValidateStatic />
        </demo-container>
        <demo-container code={WithoutFormCreateString}>
          <WithoutFormCreate />
        </demo-container>

        <demo-container code={AdvancedSearchString}>
          <AdvancedSearch />
        </demo-container>
        <demo-container code={CustomizedFormControlsString}>
          <CustomizedFormControls />
        </demo-container>
        <demo-container code={DynamicFormItemString}>
          <DynamicFormItem />
        </demo-container>
        <demo-container code={FormInModalString}>
          <FormInModal />
        </demo-container>
        <demo-container code={GlobalStateString}>
          <GlobalState />
        </demo-container>
        <demo-container code={VuexStateString}>
          <VuexState />
        </demo-container>
        <demo-container code={NormalLoginString}>
          <NormalLogin />
        </demo-container>
        <demo-container code={RegisterString}>
          <Register />
        </demo-container>
        <demo-container code={TimeRelatedControlsString}>
          <TimeRelatedControls />
        </demo-container>
        <demo-container code={ValidateOtherString}>
          <ValidateOther />
        </demo-container>
        <api>
          <CN slot="cn" />
          <US />
        </api>
      </div>
    );
  },
};
</script>
<style>
.code-box-demo .ant-form:not(.ant-form-inline):not(.ant-form-vertical) {
  max-width: 600px;
}
.markdown.api-container table td:last-child {
  white-space: nowrap;
  word-wrap: break-word;
}
</style>