UNPKG

@form-create/core

Version:

FormCreate低代码表单渲染引擎,可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的低代码表单。支持6个UI框架,适配移动端,并且支持生成任何 Vue 组件。

79 lines (73 loc) 1.8 kB
import mergeProps from '@form-create/utils/lib/mergeprops'; import unique from '@form-create/utils/lib/unique'; import extend from '@form-create/utils/lib/extend'; export function createManager(proto) { class CustomManager extends Manager { } Object.assign(CustomManager.prototype, proto); return CustomManager; } export default function Manager(handler) { extend(this, { $handle: handler, vm: handler.vm, options: {}, ref: 'fcForm', mergeOptionsRule: { normal: ['form', 'row', 'info', 'submitBtn', 'resetBtn'] } }); this.updateKey(); this.init(); } extend(Manager.prototype, { __init() { this.$render = this.$handle.$render; this.$r = (...args) => this.$render.renderRule(...args); }, updateKey() { this.key = unique(); }, //TODO interface init() { }, update() { }, beforeRender() { }, form() { return this.vm.$refs[this.ref]; }, getSlot(name){ const _fn = (vm) => { if (vm) { let slot = vm.$scopedSlots[name]; if (slot) { return slot; } return _fn(vm.$pfc); } return undefined; } return _fn(this.vm); }, mergeOptions(args, opt) { return mergeProps(args.map(v => this.tidyOptions(v)), opt, this.mergeOptionsRule); }, updateOptions(options) { this.options = this.mergeOptions([options], this.getDefaultOptions()); this.update(); }, tidyOptions(options) { return options; }, tidyRule(ctx) { }, mergeProp(ctx) { }, getDefaultOptions() { return {}; }, render(children) { } })