@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.
- package/LICENSE +21 -0
- package/README.md +137 -0
- package/auto-import.d.ts +5 -0
- package/auto-import.js +54 -0
- package/dist/form-create.esm.js +8 -0
- package/dist/form-create.esm.js.map +1 -0
- package/dist/form-create.js +8 -0
- package/dist/form-create.js.map +1 -0
- package/package.json +94 -0
- package/src/components/icon/QuestionCircleOutlined.vue +18 -0
- package/src/components/index.js +7 -0
- package/src/core/alias.js +37 -0
- package/src/core/api.js +150 -0
- package/src/core/config.js +39 -0
- package/src/core/index.js +53 -0
- package/src/core/maker.js +90 -0
- package/src/core/manager.js +303 -0
- package/src/core/modelFields.js +11 -0
- package/src/core/provider.js +55 -0
- package/src/index.js +13 -0
- package/src/parsers/cascader.js +35 -0
- package/src/parsers/checkbox.js +12 -0
- package/src/parsers/datePicker.js +44 -0
- package/src/parsers/hidden.js +13 -0
- package/src/parsers/index.js +27 -0
- package/src/parsers/input.js +30 -0
- package/src/parsers/radio.js +5 -0
- package/src/parsers/rangePicker.js +12 -0
- package/src/parsers/row.js +10 -0
- package/src/parsers/select.js +37 -0
- package/src/parsers/timePicker.js +15 -0
- package/src/parsers/timeRangePicker.js +11 -0
- package/src/parsers/tree.js +16 -0
- package/src/style/index.css +23 -0
- package/types/config.d.ts +152 -0
- package/types/index.d.ts +36 -0
- package/types/maker.d.ts +70 -0
|
@@ -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
|
+
}
|
package/src/core/api.js
ADDED
|
@@ -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
|