@fext/vue-form-builder
Version:
Build powerful vue form with JSON schema and composition api.
253 lines (231 loc) • 6.66 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var vueUse = require('@fext/vue-use');
var __vue_normalize__ = _interopDefault(require('vue-runtime-helpers/dist/normalize-component.mjs'));
//
var script = {
name: 'ant-form-adaptor',
props: {
tip: String,
tooltip: String,
name: String,
size: {
type: String,
default: 'default'
},
label: String,
rules: {
type: [String, Object]
},
value: {
required: false
},
props: {
type: Object,
default: function _default() {
return {};
},
required: false
},
items: {
type: Array,
default: function _default() {
return [];
},
required: false
},
extend: {
type: Object,
default: function _default() {
return {};
}
},
metadata: {
type: Object,
default: function _default() {
return {};
}
},
formValues: {
type: Object,
required: false
}
},
setup: function setup(props, context) {
var _useFormElement = vueUse.useFormElement(props, context),
dirty = _useFormElement.dirty,
isRequired = _useFormElement.isRequired,
localValue = _useFormElement.localValue,
setInitialValue = _useFormElement.setInitialValue,
updateLocalValue = _useFormElement.updateLocalValue;
return {
dirty: dirty,
isRequired: isRequired,
localValue: localValue,
setInitialValue: setInitialValue,
updateLocalValue: updateLocalValue
};
},
data: function data() {
return {};
},
computed: {
component: function component() {
return this.extend.component || 'a-input';
},
isSelect: function isSelect() {
return this.component === 'a-select';
},
isMultipleSelect: function isMultipleSelect() {
return this.isSelect && this.props.multiple;
},
isRadio: function isRadio() {
return this.component === 'a-radio-group';
},
isCheckbox: function isCheckbox() {
return this.component === 'a-checkbox-group';
}
},
created: function created() {
var localValue = this.localValue,
isMultipleSelect = this.isMultipleSelect,
isCheckbox = this.isCheckbox;
if (localValue == null) {
if (isMultipleSelect || isCheckbox) {
this.setInitialValue([]);
}
}
},
methods: {
updateAntLocalValue: function updateAntLocalValue(source) {
if (source.target) {
this.updateLocalValue(source.target.value);
} else {
this.updateLocalValue(source);
}
}
}
};
/* script */
var __vue_script__ = script;
/* template */
var __vue_render__ = function __vue_render__() {
var _vm = this;
var _h = _vm.$createElement;
var _c = _vm._self._c || _h;
return _c("validation-provider", {
attrs: {
rules: _vm.rules
},
scopedSlots: _vm._u([{
key: "default",
fn: function fn(ref) {
var errors = ref.errors;
return [_c("a-form-item", {
attrs: {
size: _vm.size,
required: _vm.isRequired,
validateStatus: errors.length ? "error" : null,
help: errors[0],
extra: _vm.tip
},
scopedSlots: _vm._u([{
key: "label",
fn: function fn() {
return [_c("span", [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _c("span", [_c("a-tooltip", {
attrs: {
title: _vm.tooltip,
placement: "top"
}
}, [_c("a-icon", {
attrs: {
type: "question-circle"
}
})], 1)], 1) ];
},
proxy: true
}], null, true)
}, [_vm._v(" "), _vm.isSelect ? _c(_vm.component, _vm._b({
tag: "component",
attrs: {
value: _vm.localValue
},
on: {
change: _vm.updateAntLocalValue
}
}, "component", _vm.props, false), _vm._l(_vm.items, function (item) {
return _c("a-select-option", {
key: item.value,
attrs: {
value: item.value
}
}, [_vm._v("\n " + _vm._s(item.text) + "\n ")]);
}), 1) : _vm.isRadio ? _c(_vm.component, _vm._b({
tag: "component",
attrs: {
value: _vm.localValue
},
on: {
change: _vm.updateAntLocalValue
}
}, "component", _vm.props, false), _vm._l(_vm.items, function (item) {
return _c("a-radio", {
key: item.value,
attrs: {
value: item.value
}
}, [_vm._v("\n " + _vm._s(item.text) + "\n ")]);
}), 1) : _vm.isCheckbox ? _c(_vm.component, _vm._b({
tag: "component",
attrs: {
value: _vm.localValue
},
on: {
change: _vm.updateAntLocalValue
}
}, "component", _vm.props, false), _vm._l(_vm.items, function (item) {
return _c("a-checkbox", {
key: item.value,
attrs: {
value: item.value
}
}, [_vm._v("\n " + _vm._s(item.text) + "\n ")]);
}), 1) : _c(_vm.component, _vm._b({
tag: "component",
attrs: {
value: _vm.localValue
},
on: {
change: _vm.updateAntLocalValue
}
}, "component", _vm.props, false))], 1)];
}
}])
});
};
var __vue_staticRenderFns__ = [];
__vue_render__._withStripped = true;
/* style */
var __vue_inject_styles__ = undefined;
/* scoped */
var __vue_scope_id__ = undefined;
/* module identifier */
var __vue_module_identifier__ = undefined;
/* functional template */
var __vue_is_functional_template__ = false;
/* style inject */
/* style inject SSR */
/* style inject shadow dom */
var __vue_component__ = /*#__PURE__*/__vue_normalize__({
render: __vue_render__,
staticRenderFns: __vue_staticRenderFns__
}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);
var install = function installAntFormAdaptor(Vue) {
Vue.component('ant-form-adaptor', __vue_component__);
};
var antFormAdaptor = {
install: install
};
exports.AntFormAdaptor = __vue_component__;
exports.default = antFormAdaptor;