MCPcopy
hub / github.com/xaboy/form-create / extendApi

Function extendApi

packages/tiny-vue/src/core/api.js:13–154  ·  view source on GitHub ↗
(api, h)

Source from the content-addressed store, hash-verified

11}
12
13export default function extendApi(api, h) {
14 return {
15 formEl() {
16 return h.$manager.form();
17 },
18 wrapEl(id) {
19 const ctx = h.getFieldCtx(id);
20 if (!ctx) return;
21 return h.vm.refs[ctx.wrapRef];
22 },
23 validate(callback) {
24 return new Promise((resolve, reject) => {
25 const forms = api.children;
26 const all = [h.$manager.validate()];
27 forms.filter(v=>!v.isScope).forEach(v => {
28 all.push(v.validate());
29 })
30 Promise.all(all).then(() => {
31 resolve(true);
32 callback && callback(true);
33 }).catch((e) => {
34 reject(e);
35 callback && callback(e);
36 h.vm.emit('validate-fail', e, {api});
37 h.emitEvent('validate-fail', e, {api});
38 })
39 });
40 },
41 validateField(field, callback) {
42 return new Promise((resolve, reject) => {
43 const flag = typeof field === 'object';
44 const ctx = flag ? byCtx(field) : h.getCtx(field);
45 if (!ctx) {
46 resolve(null);
47 callback && callback(null);
48 return;
49 }
50 const sub = h.subForm[ctx.id];
51 const all = [h.$manager.validateField(ctx.id)];
52 toArray(sub).filter(v=>!v.isScope).forEach(v => {
53 all.push(v.validate());
54 })
55 Promise.all(all).then(() => {
56 resolve(null);
57 callback && callback(null);
58 }).catch((e) => {
59 reject(e);
60 callback && callback(e);
61 h.vm.emit('validate-field-fail', e, {field, api});
62 })
63 });
64 },
65 validateFields(fields, callback) {
66 return new Promise((resolve, reject) => {
67 if (!Array.isArray(fields))
68 fields = [fields];
69 const list = fields.map(field => api.validateField(field));
70 Promise.all(list).then(() => {

Callers

nothing calls this directly

Calls 5

extendFunction · 0.85
refreshOptionsMethod · 0.80
tidyBtnPropFunction · 0.70
submitBtnPropsMethod · 0.65
resetBtnPropsMethod · 0.65

Tested by

no test coverage detected