@longhongguo/form-create-ant-design-vue 3.2.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-create.js","sources":["../src/components/icon/QuestionCircleOutlined.vue","../src/components/icon/QuestionCircleOutlined.vue?vue&type=template&id=72badc20&lang.js","../src/components/index.js","../src/parsers/checkbox.js","../src/parsers/radio.js","../src/parsers/select.js","../src/parsers/cascader.js","../src/parsers/datePicker.js","../src/parsers/hidden.js","../src/parsers/input.js","../src/parsers/timePicker.js","../src/parsers/tree.js","../src/parsers/row.js","../src/parsers/timeRangePicker.js","../src/parsers/index.js","../src/parsers/rangePicker.js","../src/core/alias.js","../src/core/manager.js","../src/core/config.js","../src/core/maker.js","../src/core/api.js","../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/core/modelFields.js","../src/core/provider.js","../src/core/index.js","../src/index.js"],"sourcesContent":["<template>\n <span class=\"anticon\">\n <svg height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\n <path\n d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448s448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372s372 166.6 372 372s-166.6 372-372 372z\"\n fill=\"currentColor\"></path>\n <path\n d=\"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7c-21.2 8.1-39.2 22.3-52.1 40.9c-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5c.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1 0 80 0a40 40 0 1 0-80 0z\"\n fill=\"currentColor\"></path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: 'QuestionCircleOutlined'\n}\n</script>\n","<template>\n <span class=\"anticon\">\n <svg height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\n <path\n d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448s448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372s372 166.6 372 372s-166.6 372-372 372z\"\n fill=\"currentColor\"></path>\n <path\n d=\"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7c-21.2 8.1-39.2 22.3-52.1 40.9c-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5c.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1 0 80 0a40 40 0 1 0-80 0z\"\n fill=\"currentColor\"></path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: 'QuestionCircleOutlined'\n}\n</script>\n","import upload from '@form-create/component-antdv-upload/src/index'\nimport frame from '@form-create/component-antdv-frame/src/index'\nimport group from '@form-create/component-antdv-group/src/index'\nimport subForm from '@form-create/component-subform/src/index'\nimport QuestionCircleOutlined from './icon/QuestionCircleOutlined.vue'\n\nexport default [upload, frame, group, subForm, QuestionCircleOutlined]\n","import {hasProperty} from '@form-create/utils/lib/type';\n\nexport default {\n name: 'checkbox',\n modelField: 'value',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n\n}\n","import checkbox from './checkbox';\n\nexport default {\n ...checkbox, name: 'radio'\n};\n","import checkbox from './checkbox'\nimport { hasProperty } from '@form-create/utils/lib/type'\n\nexport default {\n ...checkbox,\n name: 'select',\n mergeProp(ctx) {\n const props = ctx.prop.props\n if (!hasProperty(props, 'options')) props.options = ctx.prop.options || []\n\n // 检测 loading 状态:从 effectData('fetch') 中获取 loading 状态\n const fetchData = ctx.effectData('fetch')\n const isLoading = fetchData && fetchData.loading === true\n\n // 如果正在加载,设置 disabled 和 loading\n if (isLoading) {\n props.disabled = true\n props.loading = true\n }\n },\n render(children, ctx) {\n // 检测 loading 状态(与 mergeProp 中的逻辑保持一致)\n const fetchData = ctx.effectData('fetch')\n const isLoading = fetchData && fetchData.loading === true\n\n // 如果有 loading 插槽且正在加载,将 loading 插槽传递给组件的 notFoundContent 插槽\n if (isLoading && children.loading) {\n // 将 loading 插槽合并到 children 中,作为 notFoundContent\n const newChildren = { ...children }\n newChildren.notFoundContent = children.loading\n return ctx.$render.defaultRender(ctx, newChildren)\n }\n\n // 调用默认渲染\n return ctx.$render.defaultRender(ctx, children)\n }\n}\n","import { hasProperty } from '@form-create/utils/lib/type'\r\n\r\nexport default {\r\n name: 'cascader',\r\n mergeProp(ctx) {\r\n const props = ctx.prop.props\r\n if (!hasProperty(props, 'options')) props.options = ctx.prop.options || []\r\n\r\n // 检测 loading 状态:从 effectData('fetch') 中获取 loading 状态\r\n const fetchData = ctx.effectData('fetch')\r\n const isLoading = fetchData && fetchData.loading === true\r\n\r\n // 如果正在加载,设置 disabled 和 loading\r\n if (isLoading) {\r\n props.disabled = true\r\n props.loading = true\r\n }\r\n },\r\n render(children, ctx) {\r\n // 检测 loading 状态(与 mergeProp 中的逻辑保持一致)\r\n const fetchData = ctx.effectData('fetch')\r\n const isLoading = fetchData && fetchData.loading === true\r\n\r\n // 如果有 loading 插槽且正在加载,将 loading 插槽传递给组件的 notFoundContent 插槽\r\n if (isLoading && children.loading) {\r\n // 将 loading 插槽合并到 children 中,作为 notFoundContent\r\n const newChildren = { ...children }\r\n newChildren.notFoundContent = children.loading\r\n return ctx.$render.defaultRender(ctx, newChildren)\r\n }\r\n\r\n // 调用默认渲染\r\n return ctx.$render.defaultRender(ctx, children)\r\n }\r\n}\r\n","import { creatorFactory } from '@longhongguo/form-create-core/src/index'\n\nconst FORMAT_TYPE = {\n date: 'YYYY-MM-DD',\n month: 'YYYY-MM',\n week: 'YYYY-wo',\n quarter: 'YYYY-qQ',\n year: 'YYYY'\n}\n\nconst name = 'datePicker'\n\nexport default {\n name,\n maker: (function () {\n return ['date', 'month', 'week'].reduce(\n (initial, type) => {\n initial[type] = creatorFactory(name, { type })\n return initial\n },\n {\n dateRange: creatorFactory(name, { type: 'range' }),\n datetimeRange: creatorFactory(name, (m) =>\n m.props({ type: 'range', showTime: true })\n )\n }\n )\n })(),\n modelField: 'value',\n mergeProp(ctx) {\n const props = ctx.prop.props\n const type = props.type || props.picker\n if (!props.valueFormat) {\n props.valueFormat =\n (FORMAT_TYPE[type] || FORMAT_TYPE['date']) +\n (props.showTime && (!type || type === 'date') ? ' HH:mm:ss' : '')\n }\n },\n render(children, ctx) {\n return ctx.$render.vNode[\n (ctx.prop.props.range === true ? 'range' : 'date') + 'Picker'\n ](ctx.prop, children)\n }\n}\n","import { creatorFactory } from '@longhongguo/form-create-core/src/index'\n\nconst name = 'hidden'\n\nexport default {\n name,\n maker: {\n [name]: (field, value) => creatorFactory(name)('', field, value)\n },\n render() {\n return []\n }\n}\n","import { creatorFactory } from '@longhongguo/form-create-core/src/index'\n\nconst name = 'input'\nexport default {\n name,\n maker: (function () {\n return ['password', 'url', 'email', 'text', 'textarea', 'search'].reduce(\n (maker, type) => {\n maker[type] = creatorFactory(name, { type })\n return maker\n },\n {\n idate: creatorFactory(name, { type: 'date' })\n }\n )\n })(),\n modelField: 'value',\n render(children, ctx) {\n let type = ctx.prop.props.type\n if (['textarea', 'search', 'password'].indexOf(type) === -1) type = 'input'\n\n type =\n {\n textarea: 'aTextarea',\n search: 'aInputSearch',\n password: 'aInputPassword'\n }[type] || 'aInput'\n return ctx.$render.vNode.make(type, ctx.prop, children)\n }\n}\n","export default {\n name: 'timePicker',\n modelField: 'value',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!props.valueFormat) {\n props.valueFormat = 'HH:mm:ss';\n }\n },\n render(children, ctx) {\n return ctx.$render.vNode['time' +( ctx.prop.props.range === true ? 'Range' : '') + 'Picker'](ctx.prop, children);\n }\n\n}\n\n","export default {\n name: 'tree',\n modelField: 'checkedKeys',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!props.fieldNames)\n props.fieldNames = {\n key: 'id'\n };\n else if (!props.fieldNames.key) props.fieldNames.key = 'id';\n props.checkedKeys = ctx.rule.value;\n props.checkable = true;\n },\n\n}\n\n","export default {\n name: 'FcRow',\n render(_, ctx) {\n return ctx.vNode.col({props: {span: 24}}, {\n default: () => [\n ctx.vNode.row(ctx.prop, _)\n ]\n })\n }\n}\n","import timePicker from './timePicker';\n\nconst name = 'timeRangePicker';\n\nexport default {\n ...timePicker,\n name,\n render(children, ctx) {\n return ctx.$render.vNode['timeRangePicker'](ctx.prop, children);\n }\n}\n","import checkbox from './checkbox'\nimport radio from './radio'\nimport select from './select'\nimport cascader from './cascader'\nimport datePicker from './datePicker'\nimport hidden from './hidden'\nimport input from './input'\nimport timePicker from './timePicker'\nimport tree from './tree'\nimport row from './row'\nimport rangePicker from './rangePicker'\nimport timeRangePicker from './timeRangePicker'\n\nexport default [\n checkbox,\n datePicker,\n rangePicker,\n hidden,\n input,\n timePicker,\n timeRangePicker,\n tree,\n radio,\n select,\n cascader,\n row\n]\n","import datePicker from './datePicker';\n\nconst name = 'rangePicker';\n\nexport default {\n ...datePicker,\n name,\n maker: {},\n render(children, ctx) {\n return ctx.$render.vNode['rangePicker'](ctx.prop, children);\n }\n}\n","const PRE = 'a'\nexport default {\n tooltip: PRE + 'Tooltip',\n popover: PRE + 'Popover',\n button: PRE + 'Button',\n icon: PRE + 'Icon',\n slider: PRE + 'Slider',\n rate: PRE + 'Rate',\n upload: 'fcUpload',\n cascader: PRE + 'Cascader',\n timePicker: PRE + 'TimePicker',\n timeRangePicker: PRE + 'TimeRangePicker',\n datePicker: PRE + 'DatePicker',\n rangePicker: PRE + 'RangePicker',\n switch: PRE + 'Switch',\n select: PRE + 'Select',\n checkbox: PRE + 'CheckboxGroup',\n radio: PRE + 'RadioGroup',\n input: PRE + 'Input',\n inputNumber: PRE + 'InputNumber',\n treeSelect: PRE + 'TreeSelect',\n search: PRE + 'InputSearch',\n inputPassword: PRE + 'InputPassword',\n textarea: PRE + 'Textarea',\n formItem: PRE + 'FormItem',\n form: PRE + 'Form',\n frame: 'fcFrame',\n col: PRE + 'Col',\n row: PRE + 'Row',\n tree: PRE + 'Tree',\n autoComplete: PRE + 'AutoComplete',\n transfer: PRE + 'Transfer',\n group: 'fcGroup',\n array: 'fcGroup',\n subForm: 'fcSubForm',\n object: 'fcSubForm'\n}\n","import getConfig from './config';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\n\nfunction isTooltip(info) {\n return info.type === 'tooltip';\n}\n\nfunction tidy(props, name) {\n if (!hasProperty(props, name)) return;\n if (is.String(props[name])) {\n props[name] = {[name]: props[name], show: true};\n }\n}\n\nfunction isFalse(val) {\n return val === false;\n}\n\nfunction tidyBool(opt, name) {\n if (hasProperty(opt, name) && !is.Object(opt[name])) {\n opt[name] = {show: !!opt[name]};\n }\n}\n\nfunction tidyRule(rule) {\n const _rule = {...rule};\n delete _rule.children;\n return _rule;\n}\n\nexport default {\n validate() {\n const form = this.form();\n if (form) {\n return form.validate();\n } else {\n return new Promise(v => v());\n }\n },\n validateField(field) {\n const form = this.form();\n if (form) {\n return form.validateFields(field);\n } else {\n return new Promise(v => v());\n }\n },\n clearValidateState(ctx) {\n const fItem = this.vm.refs[ctx.wrapRef];\n if (fItem) {\n fItem.clearValidate();\n }\n },\n tidyOptions(options) {\n ['submitBtn', 'resetBtn', 'row', 'info', 'wrap', 'col', 'title'].forEach(name => {\n tidyBool(options, name);\n })\n return options;\n },\n tidyRule({prop}) {\n tidy(prop, 'title');\n tidy(prop, 'info');\n return prop;\n },\n mergeProp(ctx) {\n const def = {\n info: {\n type: 'popover',\n placement: 'topLeft',\n icon: 'QuestionCircleOutlined'\n },\n title: {},\n col: {span: 24},\n wrap: {},\n };\n ['info', 'wrap', 'col', 'title'].forEach(name => {\n ctx.prop[name] = mergeProps([this.options[name] || {}, ctx.prop[name] || {}], def[name]);\n });\n },\n getDefaultOptions() {\n return getConfig();\n },\n adapterValidate(validate, validator) {\n validate.validator = (rule, value) => {\n return new Promise((resolve, reject) => {\n const callback = (err) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n }\n return validator(value, callback);\n })\n }\n return validate;\n },\n update() {\n const form = this.options.form;\n this.rule = {\n props: {...form},\n on: {\n submit: (e) => {\n e.preventDefault();\n }\n },\n style: form.style,\n type: 'form',\n };\n },\n beforeRender() {\n const {key, ref, $handle} = this;\n const form = this.options.form;\n extend(this.rule, {key, ref, class: [form.className, form.class, 'form-create', this.$handle.preview ? 'is-preview' : '']});\n extend(this.rule.props, {\n model: $handle.formData,\n });\n },\n render(children) {\n if (children.slotLen() && !this.$handle.preview) {\n children.setSlot(undefined, () => this.makeFormBtn());\n }\n return this.$r(this.rule, isFalse(this.options.row.show) ? children.getSlots() : [this.makeRow(children)]);\n },\n makeWrap(ctx, children) {\n const rule = ctx.prop;\n const uni = `${this.key}${ctx.key}`;\n const col = rule.col;\n const isTitle = this.isTitle(rule) && rule.wrap.title !== false;\n const {layout, col: _col} = this.rule.props;\n const cls = rule.wrap.class;\n delete rule.wrap.class;\n delete rule.wrap.title;\n const item = isFalse(rule.wrap.show) ? children : this.$r(mergeProps([rule.wrap, {\n props: {\n ...tidyRule(rule.wrap || {}),\n name: ctx.id,\n rules: ctx.injectValidate(),\n ...(layout !== 'horizontal' ? {labelCol: {}, wrapperCol: {}} : {})\n },\n class: this.$render.mergeClass(cls || rule.className, 'fc-form-item'),\n key: `${uni}fi`,\n ref: ctx.wrapRef,\n type: 'formItem',\n }]), {default: () => children, ...(isTitle ? {label: () => this.makeInfo(rule, uni, ctx)} : {})});\n return (layout === 'inline' || isFalse(_col) || isFalse(col.show)) ? item : this.makeCol(rule, uni, [item]);\n },\n isTitle(rule) {\n if (this.options.form.title === false) return false;\n const title = rule.title;\n return !((!title.title && !title.native) || isFalse(title.show));\n },\n makeInfo(rule, uni, ctx) {\n const titleProp = {...rule.title};\n const infoProp = {...rule.info};\n if (this.options.form.title === false) return false;\n if ((!titleProp.title && !titleProp.native) || isFalse(titleProp.show)) return;\n const isTip = isTooltip(infoProp);\n const titleSlot = this.getSlot('title');\n const children = [titleSlot ? titleSlot({title: ctx.refRule?.__$title?.value, rule: ctx.rule, options: this.options}) : ctx.refRule?.__$title?.value];\n\n if (!isFalse(infoProp.show) && (infoProp.info || infoProp.native) && !isFalse(infoProp.icon)) {\n const prop = {\n type: infoProp.type || 'popover',\n props: tidyRule(infoProp),\n key: `${uni}pop`,\n };\n\n delete prop.props.icon;\n delete prop.props.show;\n delete prop.props.info;\n delete prop.props.align;\n delete prop.props.native;\n\n const field = isTip ? 'title' : 'content';\n if (infoProp.info && !hasProperty(prop.props, field)) {\n prop.props[field] = ctx.refRule?.__$info?.value;\n }\n children[infoProp.align !== 'left' ? 'unshift' : 'push'](this.$r(mergeProps([infoProp, prop]), {\n [titleProp.slot || 'default']: () => this.$r({\n type: infoProp.icon === true ? 'QuestionCircleOutlined' : (infoProp.icon || ''),\n props: {type: infoProp.icon === true ? 'QuestionCircleOutlined' : infoProp.icon},\n key: `${uni}i`\n })\n }))\n }\n\n const _prop = mergeProps([titleProp, {\n props: tidyRule(titleProp),\n key: `${uni}tit`,\n class: 'fc-form-title',\n type: titleProp.type || 'span',\n }]);\n\n delete _prop.props.show;\n delete _prop.props.title;\n delete _prop.props.native;\n\n return this.$r(_prop, children);\n },\n makeCol(rule, uni, children) {\n const col = rule.col;\n return this.$r({\n class: this.$render.mergeClass(col.class, 'fc-form-col'),\n type: 'col',\n props: col || {span: 24},\n key: `${uni}col`\n }, children);\n },\n makeRow(children) {\n const row = this.options.row || {};\n return this.$r({\n type: 'row',\n props: row,\n class: this.$render.mergeClass(row.class, 'fc-form-row'),\n key: `${this.key}row`\n }, children)\n },\n makeFormBtn() {\n let vn = [];\n if (!isFalse(this.options.submitBtn.show)) {\n vn.push(this.makeSubmitBtn())\n }\n if (!isFalse(this.options.resetBtn.show)) {\n vn.push(this.makeResetBtn())\n }\n if (!vn.length) {\n return;\n }\n let {labelCol, wrapperCol, layout} = this.rule.props;\n if (layout !== 'horizontal') {\n labelCol = wrapperCol = {};\n }\n const item = this.$r({\n type: 'formItem',\n class: 'fc-form-item fc-form-footer',\n key: `${this.key}fb`,\n props: {\n labelCol,\n wrapperCol,\n label: ' ', colon: false\n }\n }, vn);\n\n return layout === 'inline'\n ? item\n : this.$r({\n type: 'col',\n class: 'fc-form-col',\n props: {span: 24},\n key: `${this.key}fc`\n }, [item]);\n },\n\n makeResetBtn() {\n const resetBtn = {...this.options.resetBtn};\n const innerText = resetBtn.innerText || this.$handle.api.t('reset') || '重置';\n delete resetBtn.innerText;\n delete resetBtn.click;\n delete resetBtn.col;\n delete resetBtn.show;\n return this.$r({\n type: 'button',\n props: resetBtn,\n class: 'fc-reset-btn',\n style: {width: resetBtn.width, marginLeft: '10px'},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n this.options.resetBtn.click\n ? this.options.resetBtn.click(fApi)\n : fApi.resetFields();\n }\n },\n key: `${this.key}b2`,\n }, [innerText]);\n },\n makeSubmitBtn() {\n const submitBtn = {...this.options.submitBtn};\n const innerText = submitBtn.innerText || this.$handle.api.t('submit') || '提交';\n delete submitBtn.innerText;\n delete submitBtn.click;\n delete submitBtn.col;\n delete submitBtn.show;\n return this.$r({\n type: 'button',\n props: submitBtn,\n class: 'fc-submit-btn',\n style: {width: submitBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n this.options.submitBtn.click\n ? this.options.submitBtn.click(fApi)\n : fApi.submit().catch(()=>{});\n }\n },\n key: `${this.key}b1`,\n }, [innerText]);\n }\n}\n","const UNDEF = undefined\n\nexport default function getConfig() {\n return {\n form: {\n hideRequiredMark: false,\n layout: 'horizontal',\n labelAlign: 'right',\n labelCol: {\n span: 3\n },\n wrapperCol: {\n span: 21\n },\n validateOnRuleChange: true\n },\n row: {\n gutter: 0\n },\n submitBtn: {\n disabled: false,\n loading: false,\n type: 'primary',\n innerText: '',\n show: false,\n col: UNDEF,\n click: UNDEF\n },\n resetBtn: {\n disabled: false,\n loading: false,\n type: 'default',\n innerText: '',\n show: false,\n col: UNDEF,\n click: UNDEF\n }\n }\n}\n","import { creatorFactory } from '@longhongguo/form-create-core/src/index'\n\nconst maker = {}\n\nfunction useAlias(maker) {\n ;[\n 'treeSelect',\n 'upload',\n 'frame',\n 'autoComplete',\n 'cascader',\n 'datePicker',\n 'frame',\n 'inputNumber',\n 'inputPassword',\n 'radio',\n 'rate',\n 'switch',\n 'rate',\n 'slider',\n 'timePicker'\n ].reduce((maker, name) => {\n maker[name] = creatorFactory(name)\n return maker\n }, maker)\n maker.auto = maker.autoComplete\n maker.number = maker.inputNumber\n maker.time = maker.timePicker\n maker.password = maker.inputPassword\n}\n\nfunction useFrame(maker) {\n const types = {\n frameInputs: ['input', 0],\n frameFiles: ['file', 0],\n frameImages: ['image', 0],\n frameInputOne: ['input', 1],\n frameFileOne: ['file', 1],\n frameImageOne: ['image', 1]\n }\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory('frame', (m) =>\n m.props({ type: types[key][0], maxLength: types[key][1] })\n )\n return maker\n }, maker)\n\n maker.frameInput = maker.frameInputs\n maker.frameFile = maker.frameFiles\n maker.frameImage = maker.frameImages\n}\n\nfunction useSlider(maker) {\n maker['sliderRange'] = creatorFactory('slider', { range: true })\n}\n\nfunction useSelect(m) {\n const name = 'select'\n m.selectMultiple = creatorFactory(name, { mode: 'multiple' })\n m.selectTags = creatorFactory(name, { mode: 'tags' })\n m.selectCombobox = creatorFactory(name, { mode: 'combobox' })\n}\n\nfunction useUpload(maker) {\n const types = {\n image: ['image', 0],\n file: ['file', 0],\n uploadFileOne: ['file', 1],\n uploadImageOne: ['image', 1]\n }\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory('upload', (m) =>\n m.props({ uploadType: types[key][0], maxLength: types[key][1] })\n )\n return maker\n }, maker)\n\n maker.uploadImage = maker.image\n maker.uploadFile = maker.file\n}\n\nuseAlias(maker)\nuseSlider(maker)\nuseFrame(maker)\nuseUpload(maker)\nuseSelect(maker)\n\nexport default maker\n","import extend from '@form-create/utils/lib/extend'\nimport is from '@form-create/utils/lib/type'\nimport { invoke } from '@longhongguo/form-create-core/src/frame/util'\nimport toArray from '@form-create/utils/lib/toarray'\n\nfunction tidyBtnProp(btn, def) {\n if (is.Boolean(btn)) btn = { show: btn }\n else if (!is.Undef(btn) && !is.Object(btn)) btn = { show: def }\n return btn\n}\n\nexport default function extendApi(api, h) {\n return {\n formEl() {\n return h.$manager.form()\n },\n wrapEl(id) {\n const ctx = h.getFieldCtx(id)\n if (!ctx) return\n return h.vm.refs[ctx.wrapRef]\n },\n validate(callback) {\n return new Promise((resolve, reject) => {\n const forms = api.children\n const all = [h.$manager.validate()]\n forms\n .filter((v) => !v.isScope)\n .forEach((v) => {\n all.push(v.validate())\n })\n Promise.all(all)\n .then(() => {\n resolve(true)\n callback && callback(true)\n })\n .catch((e) => {\n reject(e)\n callback && callback(e)\n h.vm.emit('validate-fail', e, { api })\n h.emitEvent('validate-fail', e, { api })\n })\n })\n },\n validateField(field, callback) {\n return new Promise((resolve, reject) => {\n const ctx = h.getFieldCtx(field)\n if (!ctx) return\n const sub = h.subForm[ctx.id]\n const all = [h.$manager.validateField(ctx.id)]\n toArray(sub)\n .filter((v) => !v.isScope)\n .forEach((v) => {\n all.push(v.validate())\n })\n Promise.all(all)\n .then(() => {\n resolve(null)\n callback && callback(null)\n })\n .catch((e) => {\n reject(e)\n callback && callback(e)\n h.vm.emit('validate-field-fail', e, { field, api })\n })\n })\n },\n clearValidateState(fields, clearSub = true) {\n api.helper.tidyFields(fields).forEach((field) => {\n if (clearSub) this.clearSubValidateState(field)\n h.getCtxs(field).forEach((ctx) => {\n h.$manager.clearValidateState(ctx)\n })\n })\n },\n clearSubValidateState(fields) {\n api.helper.tidyFields(fields).forEach((field) => {\n h.getCtxs(field).forEach((ctx) => {\n const subForm = h.subForm[ctx.id]\n if (!subForm) return\n if (Array.isArray(subForm)) {\n subForm.forEach((form) => {\n form.clearValidateState()\n })\n } else if (subForm) {\n subForm.clearValidateState()\n }\n })\n })\n },\n btn: {\n loading: (loading = true) => {\n api.submitBtnProps({ loading: !!loading })\n },\n disabled: (disabled = true) => {\n api.submitBtnProps({ disabled: !!disabled })\n },\n show: (isShow = true) => {\n api.submitBtnProps({ show: !!isShow })\n }\n },\n resetBtn: {\n loading: (loading = true) => {\n api.resetBtnProps({ loading: !!loading })\n },\n disabled: (disabled = true) => {\n api.resetBtnProps({ disabled: !!disabled })\n },\n show: (isShow = true) => {\n api.resetBtnProps({ show: !!isShow })\n }\n },\n submitBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.submitBtn, true)\n extend(btn, props)\n h.options.submitBtn = btn\n api.refreshOptions()\n },\n resetBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.resetBtn, false)\n extend(btn, props)\n h.options.resetBtn = btn\n api.refreshOptions()\n },\n submit(successFn, failFn) {\n return new Promise((resolve, reject) => {\n const promise =\n h.options.validateOnSubmit === false\n ? Promise.resolve()\n : api.validate()\n promise\n .then(() => {\n let formData = api.formData()\n h.beforeSubmit(formData)\n .then(() => {\n is.Function(successFn) && invoke(() => successFn(formData, api))\n is.Function(h.options.onSubmit) &&\n invoke(() => h.options.onSubmit(formData, api))\n h.vm.emit('submit', formData, api)\n resolve(formData)\n })\n .catch((e) => {})\n })\n .catch((...args) => {\n is.Function(failFn) && invoke(() => failFn(api, ...args))\n reject(...args)\n })\n })\n }\n }\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export default {\n autoComplete: 'value',\n cascader: 'value',\n inputNumber: 'value',\n inputPassword: 'value',\n textarea: 'value',\n rate: 'value',\n slider: 'value',\n treeSelect: 'value',\n switch: 'checked',\n}\n","import is from '@form-create/utils/lib/type';\n\nconst required = {\n name: 'required',\n load(inject, rule, api) {\n const val = parseVal(inject.getValue());\n if (val.required === false) {\n inject.clearProp();\n api.clearValidateState([rule.field]);\n } else {\n const validate = {\n required: true,\n validator(_, v) {\n return new Promise((resolve, reject) => {\n is.empty(v) ? reject(validate.message) : resolve();\n })\n },\n ...val,\n };\n const title = rule.__fc__.refRule?.__$title?.value;\n if (!validate.message) {\n validate.message = api.t('required', {title}) || (title + (api.getLocale() === 'en' ? ' is required' : '不能为空'));\n } else {\n const match = validate.message.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n validate.message = api.t(match[1], {title});\n }\n }\n inject.getProp().validate = [validate];\n }\n api.sync(rule);\n },\n watch(...args) {\n required.load(...args);\n }\n}\n\nfunction parseVal(val) {\n if (is.Boolean(val)) {\n return {required: val}\n } else if (is.String(val)) {\n return {message: val};\n } else if (is.Undef(val)) {\n return {required: false};\n } else if (is.Function(val)) {\n return {validator: val};\n } else if (!is.Object(val)) {\n return {};\n } else {\n return val;\n }\n}\n\n\nexport default required\n","import components from '../components'\nimport parsers from '../parsers'\nimport alias from './alias'\nimport manager from './manager'\nimport FormCreateFactory from '@longhongguo/form-create-core/src/index'\nimport makers from './maker'\nimport '../style/index.css'\nimport extendApi from './api'\nimport modelFields from './modelFields'\nimport required from './provider'\n\nfunction install(FormCreate) {\n FormCreate.componentAlias(alias)\n\n Object.keys(modelFields).forEach((k) => {\n FormCreate.setModelField(k, modelFields[k])\n })\n\n components.forEach((component) => {\n FormCreate.component(component.name, component)\n })\n\n FormCreate.register(required)\n\n parsers.forEach((parser) => {\n FormCreate.parser(parser)\n })\n\n Object.keys(makers).forEach((name) => {\n FormCreate.maker[name] = makers[name]\n })\n\n if (typeof window !== 'undefined' && window.antd) {\n FormCreate.useApp((_, app) => {\n app.use(window.antd)\n })\n }\n}\n\nexport default function antdvFormCreate() {\n return FormCreateFactory({\n ui: 'process.env.UI',\n version: 'process.env.VERSION',\n manager,\n install,\n extendApi,\n attrs: {\n normal: ['col', 'wrap'],\n array: ['className'],\n key: ['title', 'info']\n }\n })\n}\n","import antdvFormCreate from './core/index';\n\nconst FormCreate = antdvFormCreate();\n\nif (typeof window !== 'undefined') {\n window.formCreate = FormCreate;\n}\n\nconst maker = FormCreate.maker;\n\nexport {maker}\n\nexport default FormCreate;\n"],"names":["script","name","_hoisted_1","class","_openBlock","openBlock","_createElementBlock","_cache","_createElementVNode","height","width","xmlns","viewBox","createElementVNode","d","fill","components","upload","frame","group","subForm","QuestionCircleOutlined","checkbox","modelField","mergeProp","ctx","props","prop","hasProperty","options","radio","select","fetchData","effectData","loading","disabled","render","children","newChildren","notFoundContent","$render","defaultRender","cascader","FORMAT_TYPE","date","month","week","quarter","year","datePicker","maker","reduce","initial","type","creatorFactory","dateRange","datetimeRange","m","showTime","picker","valueFormat","vNode","range","hidden","field","value","input","idate","indexOf","textarea","search","password","make","timePicker","tree","fieldNames","key","checkedKeys","rule","checkable","row","_","col","span","default","parsers","alias","tooltip","PRE","popover","button","icon","slider","rate","timeRangePicker","rangePicker","switch","inputNumber","treeSelect","inputPassword","formItem","form","autoComplete","transfer","array","object","tidy","is","String","[object Object]","show","isFalse","val","tidyRule","_rule","manager","validate","this","Promise","v","validateField","validateFields","clearValidateState","fItem","vm","refs","wrapRef","clearValidate","tidyOptions","forEach","opt","Object","tidyBool","def","info","placement","title","wrap","mergeProps","getDefaultOptions","hideRequiredMark","layout","labelAlign","labelCol","wrapperCol","validateOnRuleChange","gutter","submitBtn","innerText","undefined","click","resetBtn","adapterValidate","validator","resolve","reject","err","update","on","submit","e","preventDefault","style","beforeRender","ref","$handle","extend","className","preview","model","formData","slotLen","setSlot","makeFormBtn","$r","getSlots","makeRow","makeWrap","uni","isTitle","_col","cls","item","id","rules","injectValidate","mergeClass","label","makeInfo","makeCol","native","_ctx$refRule","_ctx$refRule2","titleProp","infoProp","isTip","titleSlot","getSlot","refRule","__$title","align","_ctx$refRule3","__$info","slot","_prop","vn","push","makeSubmitBtn","makeResetBtn","length","colon","api","t","marginLeft","fApi","resetFields","catch","auto","number","time","useAlias","useSlider","types","frameInputs","frameFiles","frameImages","frameInputOne","frameFileOne","frameImageOne","keys","maxLength","frameInput","frameFile","frameImage","useFrame","image","file","uploadFileOne","uploadImageOne","uploadType","uploadImage","uploadFile","useUpload","selectMultiple","mode","selectTags","selectCombobox","tidyBtnProp","btn","Boolean","Undef","extendApi","h","formEl","$manager","wrapEl","getFieldCtx","callback","forms","all","filter","isScope","then","emit","emitEvent","sub","toArray","fields","clearSub","helper","tidyFields","clearSubValidateState","getCtxs","Array","isArray","submitBtnProps","isShow","resetBtnProps","refreshOptions","successFn","failFn","validateOnSubmit","beforeSubmit","Function","invoke","onSubmit","args","css","insertAt","document","head","getElementsByTagName","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","modelFields","required","load","inject","message","parseVal","getValue","clearProp","_rule$__fc__$refRule","empty","__fc__","match","getLocale","getProp","sync","watch","install","FormCreate","componentAlias","k","setModelField","component","register","parser","makers","window","antd","useApp","app","use","FormCreateFactory","ui","version","attrs","normal","formCreate"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,94 @@
1
+ {
2
+ "name": "@longhongguo/form-create-ant-design-vue",
3
+ "version": "3.2.36",
4
+ "description": "AntDesignVue版本低代码表单|FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的低代码表单生成组件。支持6个UI框架,适配移动端,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定。",
5
+ "main": "./dist/form-create.min.js",
6
+ "module": "./dist/form-create.esm.js",
7
+ "unpkg": "./dist/form-create.min.js",
8
+ "jsdelivr": "./dist/form-create.min.js",
9
+ "typings": "./types/index.d.ts",
10
+ "scripts": {
11
+ "clean": "node -e \"require('fs').rmSync('dist', {recursive:true, force:true})\"",
12
+ "dev:antdv": "vue-cli-service serve",
13
+ "bili": "cross-env UI_LIB=ant-design-vue bili",
14
+ "build": "npm run clean && npm run bili",
15
+ "clean:examples": "node -e \"require('fs').rmSync('dist-examples', {recursive:true, force:true})\"",
16
+ "build:examples": "npm run clean:examples && npm run build:examples:app",
17
+ "build:examples:app": "vue-cli-service build --target app --dest dist-examples examples/main.js"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/xaboy/form-create.git"
22
+ },
23
+ "keywords": [
24
+ "动态表单",
25
+ "低代码",
26
+ "@form-create",
27
+ "form-builder",
28
+ "form",
29
+ "components",
30
+ "vue3",
31
+ "ant-design-vue",
32
+ "lowcode",
33
+ "dynamic-form"
34
+ ],
35
+ "files": [
36
+ "README.md",
37
+ "package.json",
38
+ "LICENSE",
39
+ "auto-import.js",
40
+ "auto-import.d.ts",
41
+ "src",
42
+ "types",
43
+ "dist"
44
+ ],
45
+ "author": "xaboy",
46
+ "license": "MIT",
47
+ "bugs": {
48
+ "url": "https://github.com/xaboy/form-create/issues"
49
+ },
50
+ "homepage": "http://www.form-create.com/v3/",
51
+ "dependencies": {
52
+ "@form-create/component-antdv-frame": "^3.2.31",
53
+ "@form-create/component-antdv-group": "^3.2.31",
54
+ "@form-create/component-antdv-upload": "^3.2.31",
55
+ "@form-create/component-subform": "^3.1.34",
56
+ "@longhongguo/form-create-core": "latest",
57
+ "@form-create/core": "^3.2.33",
58
+ "@form-create/utils": "^3.2.31"
59
+ },
60
+ "publishConfig": {
61
+ "registry": "https://registry.npmjs.org/",
62
+ "access": "public"
63
+ },
64
+ "peerDependencies": {
65
+ "vue": "^3.1.0"
66
+ },
67
+ "devDependencies": {
68
+ "@ant-design/icons-vue": "^6.0.1",
69
+ "@form-create/component-wangeditor": "^3.2.14",
70
+ "@vue/cli-plugin-babel": "~4.5.0",
71
+ "@vue/cli-service": "^4.5.3",
72
+ "ant-design-vue": "^4.0",
73
+ "v-jsoneditor": "^1.4.2",
74
+ "bili": "^5.0.5"
75
+ },
76
+ "buildFormCreateOptions": {
77
+ "name": "@form-create/ant-design-vue",
78
+ "exportName": "formCreate",
79
+ "extendExternals": [
80
+ "ant-design-vue",
81
+ "Antd",
82
+ "@ant-design/icons-vue"
83
+ ],
84
+ "extendGlobal": {
85
+ "vue": "Vue"
86
+ },
87
+ "fileName": "form-create",
88
+ "formats": [
89
+ "umd",
90
+ "esm"
91
+ ]
92
+ },
93
+ "gitHead": "3d024534b3ee103a96da1d3629582c0cdf19d9a8"
94
+ }
@@ -0,0 +1,18 @@
1
+ <template>
2
+ <span class="anticon">
3
+ <svg height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
4
+ <path
5
+ d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448s448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372s372 166.6 372 372s-166.6 372-372 372z"
6
+ fill="currentColor"></path>
7
+ <path
8
+ d="M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7c-21.2 8.1-39.2 22.3-52.1 40.9c-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5c.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1 0 80 0a40 40 0 1 0-80 0z"
9
+ fill="currentColor"></path>
10
+ </svg>
11
+ </span>
12
+ </template>
13
+
14
+ <script>
15
+ export default {
16
+ name: 'QuestionCircleOutlined'
17
+ }
18
+ </script>
@@ -0,0 +1,7 @@
1
+ import upload from '@form-create/component-antdv-upload/src/index'
2
+ import frame from '@form-create/component-antdv-frame/src/index'
3
+ import group from '@form-create/component-antdv-group/src/index'
4
+ import subForm from '@form-create/component-subform/src/index'
5
+ import QuestionCircleOutlined from './icon/QuestionCircleOutlined.vue'
6
+
7
+ export default [upload, frame, group, subForm, QuestionCircleOutlined]
@@ -0,0 +1,37 @@
1
+ const PRE = 'a'
2
+ export default {
3
+ tooltip: PRE + 'Tooltip',
4
+ popover: PRE + 'Popover',
5
+ button: PRE + 'Button',
6
+ icon: PRE + 'Icon',
7
+ slider: PRE + 'Slider',
8
+ rate: PRE + 'Rate',
9
+ upload: 'fcUpload',
10
+ cascader: PRE + 'Cascader',
11
+ timePicker: PRE + 'TimePicker',
12
+ timeRangePicker: PRE + 'TimeRangePicker',
13
+ datePicker: PRE + 'DatePicker',
14
+ rangePicker: PRE + 'RangePicker',
15
+ switch: PRE + 'Switch',
16
+ select: PRE + 'Select',
17
+ checkbox: PRE + 'CheckboxGroup',
18
+ radio: PRE + 'RadioGroup',
19
+ input: PRE + 'Input',
20
+ inputNumber: PRE + 'InputNumber',
21
+ treeSelect: PRE + 'TreeSelect',
22
+ search: PRE + 'InputSearch',
23
+ inputPassword: PRE + 'InputPassword',
24
+ textarea: PRE + 'Textarea',
25
+ formItem: PRE + 'FormItem',
26
+ form: PRE + 'Form',
27
+ frame: 'fcFrame',
28
+ col: PRE + 'Col',
29
+ row: PRE + 'Row',
30
+ tree: PRE + 'Tree',
31
+ autoComplete: PRE + 'AutoComplete',
32
+ transfer: PRE + 'Transfer',
33
+ group: 'fcGroup',
34
+ array: 'fcGroup',
35
+ subForm: 'fcSubForm',
36
+ object: 'fcSubForm'
37
+ }
@@ -0,0 +1,150 @@
1
+ import extend from '@form-create/utils/lib/extend'
2
+ import is from '@form-create/utils/lib/type'
3
+ import { invoke } from '@longhongguo/form-create-core/src/frame/util'
4
+ import toArray from '@form-create/utils/lib/toarray'
5
+
6
+ function tidyBtnProp(btn, def) {
7
+ if (is.Boolean(btn)) btn = { show: btn }
8
+ else if (!is.Undef(btn) && !is.Object(btn)) btn = { show: def }
9
+ return btn
10
+ }
11
+
12
+ export default function extendApi(api, h) {
13
+ return {
14
+ formEl() {
15
+ return h.$manager.form()
16
+ },
17
+ wrapEl(id) {
18
+ const ctx = h.getFieldCtx(id)
19
+ if (!ctx) return
20
+ return h.vm.refs[ctx.wrapRef]
21
+ },
22
+ validate(callback) {
23
+ return new Promise((resolve, reject) => {
24
+ const forms = api.children
25
+ const all = [h.$manager.validate()]
26
+ forms
27
+ .filter((v) => !v.isScope)
28
+ .forEach((v) => {
29
+ all.push(v.validate())
30
+ })
31
+ Promise.all(all)
32
+ .then(() => {
33
+ resolve(true)
34
+ callback && callback(true)
35
+ })
36
+ .catch((e) => {
37
+ reject(e)
38
+ callback && callback(e)
39
+ h.vm.emit('validate-fail', e, { api })
40
+ h.emitEvent('validate-fail', e, { api })
41
+ })
42
+ })
43
+ },
44
+ validateField(field, callback) {
45
+ return new Promise((resolve, reject) => {
46
+ const ctx = h.getFieldCtx(field)
47
+ if (!ctx) return
48
+ const sub = h.subForm[ctx.id]
49
+ const all = [h.$manager.validateField(ctx.id)]
50
+ toArray(sub)
51
+ .filter((v) => !v.isScope)
52
+ .forEach((v) => {
53
+ all.push(v.validate())
54
+ })
55
+ Promise.all(all)
56
+ .then(() => {
57
+ resolve(null)
58
+ callback && callback(null)
59
+ })
60
+ .catch((e) => {
61
+ reject(e)
62
+ callback && callback(e)
63
+ h.vm.emit('validate-field-fail', e, { field, api })
64
+ })
65
+ })
66
+ },
67
+ clearValidateState(fields, clearSub = true) {
68
+ api.helper.tidyFields(fields).forEach((field) => {
69
+ if (clearSub) this.clearSubValidateState(field)
70
+ h.getCtxs(field).forEach((ctx) => {
71
+ h.$manager.clearValidateState(ctx)
72
+ })
73
+ })
74
+ },
75
+ clearSubValidateState(fields) {
76
+ api.helper.tidyFields(fields).forEach((field) => {
77
+ h.getCtxs(field).forEach((ctx) => {
78
+ const subForm = h.subForm[ctx.id]
79
+ if (!subForm) return
80
+ if (Array.isArray(subForm)) {
81
+ subForm.forEach((form) => {
82
+ form.clearValidateState()
83
+ })
84
+ } else if (subForm) {
85
+ subForm.clearValidateState()
86
+ }
87
+ })
88
+ })
89
+ },
90
+ btn: {
91
+ loading: (loading = true) => {
92
+ api.submitBtnProps({ loading: !!loading })
93
+ },
94
+ disabled: (disabled = true) => {
95
+ api.submitBtnProps({ disabled: !!disabled })
96
+ },
97
+ show: (isShow = true) => {
98
+ api.submitBtnProps({ show: !!isShow })
99
+ }
100
+ },
101
+ resetBtn: {
102
+ loading: (loading = true) => {
103
+ api.resetBtnProps({ loading: !!loading })
104
+ },
105
+ disabled: (disabled = true) => {
106
+ api.resetBtnProps({ disabled: !!disabled })
107
+ },
108
+ show: (isShow = true) => {
109
+ api.resetBtnProps({ show: !!isShow })
110
+ }
111
+ },
112
+ submitBtnProps: (props = {}) => {
113
+ let btn = tidyBtnProp(h.options.submitBtn, true)
114
+ extend(btn, props)
115
+ h.options.submitBtn = btn
116
+ api.refreshOptions()
117
+ },
118
+ resetBtnProps: (props = {}) => {
119
+ let btn = tidyBtnProp(h.options.resetBtn, false)
120
+ extend(btn, props)
121
+ h.options.resetBtn = btn
122
+ api.refreshOptions()
123
+ },
124
+ submit(successFn, failFn) {
125
+ return new Promise((resolve, reject) => {
126
+ const promise =
127
+ h.options.validateOnSubmit === false
128
+ ? Promise.resolve()
129
+ : api.validate()
130
+ promise
131
+ .then(() => {
132
+ let formData = api.formData()
133
+ h.beforeSubmit(formData)
134
+ .then(() => {
135
+ is.Function(successFn) && invoke(() => successFn(formData, api))
136
+ is.Function(h.options.onSubmit) &&
137
+ invoke(() => h.options.onSubmit(formData, api))
138
+ h.vm.emit('submit', formData, api)
139
+ resolve(formData)
140
+ })
141
+ .catch((e) => {})
142
+ })
143
+ .catch((...args) => {
144
+ is.Function(failFn) && invoke(() => failFn(api, ...args))
145
+ reject(...args)
146
+ })
147
+ })
148
+ }
149
+ }
150
+ }
@@ -0,0 +1,39 @@
1
+ const UNDEF = undefined
2
+
3
+ export default function getConfig() {
4
+ return {
5
+ form: {
6
+ hideRequiredMark: false,
7
+ layout: 'horizontal',
8
+ labelAlign: 'right',
9
+ labelCol: {
10
+ span: 3
11
+ },
12
+ wrapperCol: {
13
+ span: 21
14
+ },
15
+ validateOnRuleChange: true
16
+ },
17
+ row: {
18
+ gutter: 0
19
+ },
20
+ submitBtn: {
21
+ disabled: false,
22
+ loading: false,
23
+ type: 'primary',
24
+ innerText: '',
25
+ show: false,
26
+ col: UNDEF,
27
+ click: UNDEF
28
+ },
29
+ resetBtn: {
30
+ disabled: false,
31
+ loading: false,
32
+ type: 'default',
33
+ innerText: '',
34
+ show: false,
35
+ col: UNDEF,
36
+ click: UNDEF
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,53 @@
1
+ import components from '../components'
2
+ import parsers from '../parsers'
3
+ import alias from './alias'
4
+ import manager from './manager'
5
+ import FormCreateFactory from '@longhongguo/form-create-core/src/index'
6
+ import makers from './maker'
7
+ import '../style/index.css'
8
+ import extendApi from './api'
9
+ import modelFields from './modelFields'
10
+ import required from './provider'
11
+
12
+ function install(FormCreate) {
13
+ FormCreate.componentAlias(alias)
14
+
15
+ Object.keys(modelFields).forEach((k) => {
16
+ FormCreate.setModelField(k, modelFields[k])
17
+ })
18
+
19
+ components.forEach((component) => {
20
+ FormCreate.component(component.name, component)
21
+ })
22
+
23
+ FormCreate.register(required)
24
+
25
+ parsers.forEach((parser) => {
26
+ FormCreate.parser(parser)
27
+ })
28
+
29
+ Object.keys(makers).forEach((name) => {
30
+ FormCreate.maker[name] = makers[name]
31
+ })
32
+
33
+ if (typeof window !== 'undefined' && window.antd) {
34
+ FormCreate.useApp((_, app) => {
35
+ app.use(window.antd)
36
+ })
37
+ }
38
+ }
39
+
40
+ export default function antdvFormCreate() {
41
+ return FormCreateFactory({
42
+ ui: 'process.env.UI',
43
+ version: 'process.env.VERSION',
44
+ manager,
45
+ install,
46
+ extendApi,
47
+ attrs: {
48
+ normal: ['col', 'wrap'],
49
+ array: ['className'],
50
+ key: ['title', 'info']
51
+ }
52
+ })
53
+ }
@@ -0,0 +1,90 @@
1
+ import { creatorFactory } from '@longhongguo/form-create-core/src/index'
2
+
3
+ const maker = {}
4
+
5
+ function useAlias(maker) {
6
+ ;[
7
+ 'treeSelect',
8
+ 'upload',
9
+ 'frame',
10
+ 'autoComplete',
11
+ 'cascader',
12
+ 'datePicker',
13
+ 'frame',
14
+ 'inputNumber',
15
+ 'inputPassword',
16
+ 'radio',
17
+ 'rate',
18
+ 'switch',
19
+ 'rate',
20
+ 'slider',
21
+ 'timePicker'
22
+ ].reduce((maker, name) => {
23
+ maker[name] = creatorFactory(name)
24
+ return maker
25
+ }, maker)
26
+ maker.auto = maker.autoComplete
27
+ maker.number = maker.inputNumber
28
+ maker.time = maker.timePicker
29
+ maker.password = maker.inputPassword
30
+ }
31
+
32
+ function useFrame(maker) {
33
+ const types = {
34
+ frameInputs: ['input', 0],
35
+ frameFiles: ['file', 0],
36
+ frameImages: ['image', 0],
37
+ frameInputOne: ['input', 1],
38
+ frameFileOne: ['file', 1],
39
+ frameImageOne: ['image', 1]
40
+ }
41
+
42
+ Object.keys(types).reduce((maker, key) => {
43
+ maker[key] = creatorFactory('frame', (m) =>
44
+ m.props({ type: types[key][0], maxLength: types[key][1] })
45
+ )
46
+ return maker
47
+ }, maker)
48
+
49
+ maker.frameInput = maker.frameInputs
50
+ maker.frameFile = maker.frameFiles
51
+ maker.frameImage = maker.frameImages
52
+ }
53
+
54
+ function useSlider(maker) {
55
+ maker['sliderRange'] = creatorFactory('slider', { range: true })
56
+ }
57
+
58
+ function useSelect(m) {
59
+ const name = 'select'
60
+ m.selectMultiple = creatorFactory(name, { mode: 'multiple' })
61
+ m.selectTags = creatorFactory(name, { mode: 'tags' })
62
+ m.selectCombobox = creatorFactory(name, { mode: 'combobox' })
63
+ }
64
+
65
+ function useUpload(maker) {
66
+ const types = {
67
+ image: ['image', 0],
68
+ file: ['file', 0],
69
+ uploadFileOne: ['file', 1],
70
+ uploadImageOne: ['image', 1]
71
+ }
72
+
73
+ Object.keys(types).reduce((maker, key) => {
74
+ maker[key] = creatorFactory('upload', (m) =>
75
+ m.props({ uploadType: types[key][0], maxLength: types[key][1] })
76
+ )
77
+ return maker
78
+ }, maker)
79
+
80
+ maker.uploadImage = maker.image
81
+ maker.uploadFile = maker.file
82
+ }
83
+
84
+ useAlias(maker)
85
+ useSlider(maker)
86
+ useFrame(maker)
87
+ useUpload(maker)
88
+ useSelect(maker)
89
+
90
+ export default maker