@form-create/core
Version:
FormCreate低代码表单渲染引擎,可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的低代码表单。支持6个UI框架,适配移动端,并且支持生成任何 Vue 组件。
79 lines (73 loc) • 1.8 kB
JavaScript
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) {
}
})