@longhongguo/form-create-ant-design-vue 3.2.38 → 3.2.39
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/dist/form-create.esm.js +2 -2
- package/dist/form-create.esm.js.map +1 -1
- package/dist/form-create.js +2 -2
- package/dist/form-create.js.map +1 -1
- package/package.json +2 -2
- package/src/core/api.js +60 -0
- package/src/core/manager.js +357 -271
package/dist/form-create.js.map
CHANGED
|
@@ -1 +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","../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","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","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","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","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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"}
|
|
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","../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(\n (name) => {\n tidyBool(options, name)\n }\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(\n [this.options[name] || {}, ctx.prop[name] || {}],\n def[name]\n )\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, {\n key,\n ref,\n class: [\n form.className,\n form.class,\n 'form-create',\n this.$handle.preview ? 'is-preview' : ''\n ]\n })\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(\n this.rule,\n isFalse(this.options.row.show)\n ? children.getSlots()\n : [this.makeRow(children)]\n )\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)\n ? children\n : this.$r(\n mergeProps([\n rule.wrap,\n {\n props: {\n ...tidyRule(rule.wrap || {}),\n hasFeedback: rule.hasFeedback || false,\n name: ctx.id,\n rules: ctx.injectValidate(),\n ...(layout !== 'horizontal'\n ? { labelCol: {}, wrapperCol: {} }\n : {})\n },\n class: this.$render.mergeClass(\n cls || rule.className,\n 'fc-form-item'\n ),\n key: `${uni}fi`,\n ref: ctx.wrapRef,\n type: 'formItem'\n }\n ]),\n {\n default: () => children,\n ...(isTitle ? { label: () => this.makeInfo(rule, uni, ctx) } : {})\n }\n )\n return layout === 'inline' || isFalse(_col) || isFalse(col.show)\n ? item\n : 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))\n return\n const isTip = isTooltip(infoProp)\n const titleSlot = this.getSlot('title')\n const children = [\n titleSlot\n ? titleSlot({\n title: ctx.refRule?.__$title?.value,\n rule: ctx.rule,\n options: this.options\n })\n : ctx.refRule?.__$title?.value\n ]\n\n if (\n !isFalse(infoProp.show) &&\n (infoProp.info || infoProp.native) &&\n !isFalse(infoProp.icon)\n ) {\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'](\n this.$r(mergeProps([infoProp, prop]), {\n [titleProp.slot || 'default']: () =>\n this.$r({\n type:\n infoProp.icon === true\n ? 'QuestionCircleOutlined'\n : infoProp.icon || '',\n props: {\n type:\n infoProp.icon === true\n ? 'QuestionCircleOutlined'\n : infoProp.icon\n },\n key: `${uni}i`\n })\n })\n )\n }\n\n const _prop = mergeProps([\n titleProp,\n {\n props: tidyRule(titleProp),\n key: `${uni}tit`,\n class: 'fc-form-title',\n type: titleProp.type || 'span'\n }\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 {\n class: this.$render.mergeClass(col.class, 'fc-form-col'),\n type: 'col',\n props: col || { span: 24 },\n key: `${uni}col`\n },\n children\n )\n },\n makeRow(children) {\n const row = this.options.row || {}\n return this.$r(\n {\n type: 'row',\n props: row,\n class: this.$render.mergeClass(row.class, 'fc-form-row'),\n key: `${this.key}row`\n },\n children\n )\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 {\n type: 'formItem',\n class: 'fc-form-item fc-form-footer',\n key: `${this.key}fb`,\n props: {\n labelCol,\n wrapperCol,\n label: ' ',\n colon: false\n }\n },\n vn\n )\n\n return layout === 'inline'\n ? item\n : this.$r(\n {\n type: 'col',\n class: 'fc-form-col',\n props: { span: 24 },\n key: `${this.key}fc`\n },\n [item]\n )\n },\n\n makeResetBtn() {\n const resetBtn = { ...this.options.resetBtn }\n const innerText =\n 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 {\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 },\n [innerText]\n )\n },\n makeSubmitBtn() {\n const submitBtn = { ...this.options.submitBtn }\n const innerText =\n 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 {\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 },\n [innerText]\n )\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 * 基于 frame/fetch.js 封装的 fetch 方法\n *\n * @param {string|object} config - 请求配置,可以是 URL 字符串或配置对象\n * @param {string} config.action - 请求地址(必需)\n * @param {string} config.method - 请求方法,默认 'get'\n * @param {object} config.data - 请求数据(POST/PUT等),用于表单或JSON格式\n * @param {object} config.query - 查询参数(GET请求)\n * @param {string} config.dataType - 数据类型:'json' 表示 JSON 格式(默认),其他值表示表单格式(FormData)\n * @param {object} config.headers - 请求头\n * @param {function|string} config.parse - 数据解析函数或路径字符串\n * @returns {Promise} 返回 Promise,resolve 时返回解析后的数据\n *\n * @example\n * // JSON 格式 POST 请求(默认)\n * await this.api.request({\n * action: '/api/check-username',\n * method: 'post',\n * data: { username: 'test' },\n * dataType: 'json' // 或不设置,默认 JSON\n * });\n *\n * @example\n * // 表单格式 POST 请求\n * await this.api.request({\n * action: '/api/check-username',\n * method: 'post',\n * data: { username: 'test' },\n * dataType: 'form' // 或任意非 'json' 的值,会使用 FormData\n * });\n *\n * @example\n * // 在自定义校验规则中使用\n * validator: async function(value, callback) {\n * try {\n * const result = await this.api.request({\n * action: '/api/check-username',\n * method: 'post',\n * data: { username: value }, // 使用 data,不是 params\n * dataType: 'form' // 表单形式\n * });\n * if (result.exists) {\n * callback('用户名已存在');\n * } else {\n * callback();\n * }\n * } catch (error) {\n * callback('校验失败,请稍后重试');\n * }\n * }\n */\n request(config) {\n // 如果传入的是字符串,转换为配置对象\n if (typeof config === 'string') {\n config = { action: config }\n }\n // 使用 api.fetch 方法,它内部使用 frame/fetch.js 封装的 asyncFetch\n return api.fetch(config)\n }\n }\n}\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","hasFeedback","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","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","request","config","action","fetch","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","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
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@longhongguo/form-create-ant-design-vue",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.39",
|
|
4
4
|
"description": "AntDesignVue版本低代码表单|FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的低代码表单生成组件。支持6个UI框架,适配移动端,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定。",
|
|
5
5
|
"main": "./dist/form-create.min.js",
|
|
6
6
|
"module": "./dist/form-create.esm.js",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"bili": "^5.0.5"
|
|
75
75
|
},
|
|
76
76
|
"buildFormCreateOptions": {
|
|
77
|
-
"name": "@form-create
|
|
77
|
+
"name": "@longhongguo/form-create-ant-design-vue",
|
|
78
78
|
"exportName": "formCreate",
|
|
79
79
|
"extendExternals": [
|
|
80
80
|
"ant-design-vue",
|
package/src/core/api.js
CHANGED
|
@@ -145,6 +145,66 @@ export default function extendApi(api, h) {
|
|
|
145
145
|
reject(...args)
|
|
146
146
|
})
|
|
147
147
|
})
|
|
148
|
+
},
|
|
149
|
+
/**
|
|
150
|
+
* 封装请求工具,用于自定义校验规则等场景
|
|
151
|
+
* 基于 frame/fetch.js 封装的 fetch 方法
|
|
152
|
+
*
|
|
153
|
+
* @param {string|object} config - 请求配置,可以是 URL 字符串或配置对象
|
|
154
|
+
* @param {string} config.action - 请求地址(必需)
|
|
155
|
+
* @param {string} config.method - 请求方法,默认 'get'
|
|
156
|
+
* @param {object} config.data - 请求数据(POST/PUT等),用于表单或JSON格式
|
|
157
|
+
* @param {object} config.query - 查询参数(GET请求)
|
|
158
|
+
* @param {string} config.dataType - 数据类型:'json' 表示 JSON 格式(默认),其他值表示表单格式(FormData)
|
|
159
|
+
* @param {object} config.headers - 请求头
|
|
160
|
+
* @param {function|string} config.parse - 数据解析函数或路径字符串
|
|
161
|
+
* @returns {Promise} 返回 Promise,resolve 时返回解析后的数据
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* // JSON 格式 POST 请求(默认)
|
|
165
|
+
* await this.api.request({
|
|
166
|
+
* action: '/api/check-username',
|
|
167
|
+
* method: 'post',
|
|
168
|
+
* data: { username: 'test' },
|
|
169
|
+
* dataType: 'json' // 或不设置,默认 JSON
|
|
170
|
+
* });
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* // 表单格式 POST 请求
|
|
174
|
+
* await this.api.request({
|
|
175
|
+
* action: '/api/check-username',
|
|
176
|
+
* method: 'post',
|
|
177
|
+
* data: { username: 'test' },
|
|
178
|
+
* dataType: 'form' // 或任意非 'json' 的值,会使用 FormData
|
|
179
|
+
* });
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* // 在自定义校验规则中使用
|
|
183
|
+
* validator: async function(value, callback) {
|
|
184
|
+
* try {
|
|
185
|
+
* const result = await this.api.request({
|
|
186
|
+
* action: '/api/check-username',
|
|
187
|
+
* method: 'post',
|
|
188
|
+
* data: { username: value }, // 使用 data,不是 params
|
|
189
|
+
* dataType: 'form' // 表单形式
|
|
190
|
+
* });
|
|
191
|
+
* if (result.exists) {
|
|
192
|
+
* callback('用户名已存在');
|
|
193
|
+
* } else {
|
|
194
|
+
* callback();
|
|
195
|
+
* }
|
|
196
|
+
* } catch (error) {
|
|
197
|
+
* callback('校验失败,请稍后重试');
|
|
198
|
+
* }
|
|
199
|
+
* }
|
|
200
|
+
*/
|
|
201
|
+
request(config) {
|
|
202
|
+
// 如果传入的是字符串,转换为配置对象
|
|
203
|
+
if (typeof config === 'string') {
|
|
204
|
+
config = { action: config }
|
|
205
|
+
}
|
|
206
|
+
// 使用 api.fetch 方法,它内部使用 frame/fetch.js 封装的 asyncFetch
|
|
207
|
+
return api.fetch(config)
|
|
148
208
|
}
|
|
149
209
|
}
|
|
150
210
|
}
|