# 快速开始

# 安装

npm install agel-form --save # yarn add agel-form

# 引用

若是完整引入 Element-UI,可直接导入组件进行开发使用;

若是按需引入 Element-UI,至少需要全局引入 Form, FormItem, Row, Col, Input 五个表单组件。

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import agelForm from 'agel-form';

const formConfig = {};

Vue.use(ElementUI);
Vue.use(agelForm,formConfig);

Vue.use(agelForm) 默认会注册所有核心组件到全局,无需再单独引入,组件列表如下:

const coreComponents = [
  agelForm, 
  agelFormItem,
  agelFormGrid, 
  agelFormInline,
  agelFormTableditor,
  agelFormDescriptions,
  agelRadio,
  agelCheckbox, 
  agelSelect,
  agelTreeSelect,
  agelUpload,
  agelText
]

# 引用其他单组件

你也可以根据需求,按需引入其他单组件到项目进行开发使用。

import {
  // 核心组件
  agelForm,
  // 其他组件按需引入
  agelMapInput,
  agelDynamicTags,
  agelSearchPanel,
  agelFormDialog,
  tableditorMenuColumn,
} from "agel-form";

# 全局配置

支持全局属性,配置将被继承到每个表单上和子组件上,子组件配置需函数返回; defaultValue 只有在全局配置生效。

import agelForm from "agel-form";

const formConfig = {
  // 设置所有表单
  form:{
    labelWidth:"auto",
  },
  // 设置日期组件的格式化  
  "el-date-picker": function (item) {
    if (item.type == undefined || item.type == 'date' || item.type == "daterange") {
      return { valueFormat: "yyyy-MM-dd" }
    }
    if (item.type == "datetime" || item.type == "datetimerange") {
      return { valueFormat: "yyyy-MM-dd HH:mm:ss" }
    }
    if (item.type == "month" || item.type == "monthrange") {
      return { valueFormat: "yyyy-MM" }
    }
    if (item.type == "year") {
      return { valueFormat: "yyyy" }
    }
  },
  // 为第三方/自定义组件设置组件默认回填初始值
  "xx-array-input": function () {
    return { defaultValue: [] }
  },
}

Vue.use(agelForm, formConfig);

// use 注册组件 OR component 注册组件

Vue.prototype.$agelFormConfig = formConfig;
Vue.component('agel-form', agelForm);