@form-create/element-ui 3.1.27 → 3.1.29

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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @form-create/element-ui v3.1.27
2
+ * @form-create/element-ui v3.1.29
3
3
  * (c) 2018-2024 xaboy
4
4
  * Github https://github.com/xaboy/form-create
5
5
  * Released under the MIT License.
@@ -253,13 +253,16 @@ var Checkbox = defineComponent({
253
253
  var props = _objectSpread2({}, opt);
254
254
 
255
255
  var value = props.value;
256
+ var label = props.label;
256
257
  delete props.value;
258
+ delete props.label;
257
259
  return createVNode(Type, mergeProps$1(props, {
258
260
  "label": value,
259
- "key": name + index + '-' + opt.value
261
+ "value": value,
262
+ "key": name + index + '-' + value
260
263
  }), {
261
264
  "default": function _default() {
262
- return [props.label || props.value || ''];
265
+ return [label || value || ''];
263
266
  }
264
267
  });
265
268
  }), (_this$$slots$default = (_this$$slots = _this.$slots)["default"]) === null || _this$$slots$default === void 0 ? void 0 : _this$$slots$default.call(_this$$slots)];
@@ -997,13 +1000,16 @@ var Radio = defineComponent({
997
1000
  var props = _objectSpread2({}, opt);
998
1001
 
999
1002
  var value = props.value;
1003
+ var label = props.label;
1000
1004
  delete props.value;
1005
+ delete props.label;
1001
1006
  return createVNode(Type, mergeProps$1(props, {
1002
1007
  "label": value,
1003
- "key": name + index + '-' + opt.value
1008
+ "value": value,
1009
+ "key": name + index + '-' + value
1004
1010
  }), {
1005
1011
  "default": function _default() {
1006
- return [props.label || props.value || ''];
1012
+ return [label || value || ''];
1007
1013
  }
1008
1014
  });
1009
1015
  }), (_this$$slots$default = (_this$$slots = _this.$slots)["default"]) === null || _this$$slots$default === void 0 ? void 0 : _this$$slots$default.call(_this$$slots)];
@@ -1415,6 +1421,10 @@ var _extends = Object.assign || function (a) {
1415
1421
  function extend() {
1416
1422
  return _extends.apply(this, arguments);
1417
1423
  }
1424
+ function copy$1(obj) {
1425
+ if (_typeof(obj) !== 'object' || obj === null) return obj;
1426
+ return obj instanceof Array ? _toConsumableArray(obj) : _objectSpread2({}, obj);
1427
+ }
1418
1428
 
1419
1429
  var css_248z$1 = "._fc-group{display:flex;flex-direction:column;justify-content:center;min-height:38px;width:100%}._fc-group-disabled ._fc-group-add,._fc-group-disabled ._fc-group-btn{cursor:not-allowed}._fc-group-handle{background-color:#fff;border:1px dashed #d9d9d9;border-radius:15px;bottom:-15px;display:flex;flex-direction:row;padding:3px 8px;position:absolute;right:30px}._fc-group-btn{cursor:pointer}._fc-group-idx{align-items:center;background:#eee;border-radius:15px;bottom:-15px;display:flex;font-weight:700;height:30px;justify-content:center;left:10px;position:absolute;width:30px}._fc-group-handle ._fc-group-btn+._fc-group-btn{margin-left:7px}._fc-group-container{border:1px dashed #d9d9d9;border-radius:5px;display:flex;flex-direction:column;margin:5px 5px 25px;padding:20px 20px 25px;position:relative}._fc-group-arrow{height:20px;position:relative;width:20px}._fc-group-arrow:before{border-left:2px solid #999;border-top:2px solid #999;content:\"\";height:9px;left:5px;position:absolute;top:8px;transform:rotate(45deg);width:9px}._fc-group-arrow._fc-group-down{transform:rotate(180deg)}._fc-group-plus-minus{cursor:pointer;height:20px;position:relative;width:20px}._fc-group-plus-minus:after,._fc-group-plus-minus:before{background-color:#409eff;content:\"\";height:2px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:60%}._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group-plus-minus._fc-group-minus:before{display:none}._fc-group-plus-minus._fc-group-minus:after{background-color:#f56c6c}._fc-group-add{border:1px solid rgba(64,158,255,.5);border-radius:15px;cursor:pointer;height:25px;width:25px}._fc-group-add._fc-group-plus-minus:after,._fc-group-add._fc-group-plus-minus:before{width:50%}";
1420
1430
  styleInject(css_248z$1);
@@ -1798,7 +1808,7 @@ var Group = defineComponent({
1798
1808
  add: this.add
1799
1809
  }) : createVNode("div", {
1800
1810
  "key": 'a_def',
1801
- "class": "_fc-group-plus-minus _fc-group-add",
1811
+ "class": "_fc-group-plus-minus _fc-group-add fc-clock",
1802
1812
  "onClick": this.add
1803
1813
  }, null) : keys.map(function (key, index) {
1804
1814
  var _this12$cacheRule$key = _this12.cacheRule[key],
@@ -1832,7 +1842,7 @@ var Group = defineComponent({
1832
1842
  }), null), createVNode("div", {
1833
1843
  "class": "_fc-group-idx"
1834
1844
  }, [index + 1]), btn.length ? createVNode("div", {
1835
- "class": "_fc-group-handle"
1845
+ "class": "_fc-group-handle fc-clock"
1836
1846
  }, [btn]) : null]);
1837
1847
  });
1838
1848
  return createVNode("div", {
@@ -1990,6 +2000,7 @@ function $FormCreate(FormCreate, components, directives) {
1990
2000
  },
1991
2001
  extendOption: Boolean,
1992
2002
  modelValue: Object,
2003
+ disabled: Boolean,
1993
2004
  api: Object,
1994
2005
  name: String,
1995
2006
  subForm: {
@@ -2019,7 +2030,7 @@ function $FormCreate(FormCreate, components, directives) {
2019
2030
  isShow: true,
2020
2031
  unique: 1,
2021
2032
  renderRule: _toConsumableArray(rule.value || []),
2022
- updateValue: JSON.stringify(modelValue || {})
2033
+ updateValue: JSON.stringify(modelValue.value || {})
2023
2034
  });
2024
2035
  var fc = new FormCreate(vm);
2025
2036
  var fapi = fc.api();
@@ -2088,8 +2099,8 @@ function $FormCreate(FormCreate, components, directives) {
2088
2099
  });
2089
2100
  watch(function () {
2090
2101
  return props.option;
2091
- }, function (n) {
2092
- fc.initOptions(n);
2102
+ }, function () {
2103
+ fc.initOptions();
2093
2104
  fapi.refresh();
2094
2105
  }, {
2095
2106
  deep: true
@@ -2100,6 +2111,11 @@ function $FormCreate(FormCreate, components, directives) {
2100
2111
  }, {
2101
2112
  deep: true
2102
2113
  });
2114
+ watch(function () {
2115
+ return props.disabled;
2116
+ }, function (n) {
2117
+ fapi.disabled(!!n);
2118
+ });
2103
2119
  return _objectSpread2(_objectSpread2({
2104
2120
  fc: markRaw(fc),
2105
2121
  parent: parent ? markRaw(parent) : parent,
@@ -2122,6 +2138,7 @@ function $FormCreate(FormCreate, components, directives) {
2122
2138
  var vm = getCurrentInstance();
2123
2139
  vm.setupState.fc.init();
2124
2140
  vm.emit('update:api', vm.setupState.fapi);
2141
+ vm.props.disabled && vm.setupState.fapi.disabled(true);
2125
2142
  }
2126
2143
  });
2127
2144
  }
@@ -2195,7 +2212,7 @@ var mergeFn = function mergeFn(fn1, fn2) {
2195
2212
  };
2196
2213
  };
2197
2214
 
2198
- var keyAttrs = ['type', 'slot', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key', 'slotUpdate', 'computed', 'preview', 'component', 'cache'];
2215
+ var keyAttrs = ['type', 'slot', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key', 'slotUpdate', 'computed', 'preview', 'component', 'cache', 'modelEmit'];
2199
2216
  var arrayAttrs = ['validate', 'children', 'control'];
2200
2217
  var normalAttrs = ['effect'];
2201
2218
  function attrs() {
@@ -2226,6 +2243,7 @@ var PREFIX = '[[FORM-CREATE-PREFIX-';
2226
2243
  var SUFFIX = '-FORM-CREATE-SUFFIX]]';
2227
2244
  var $T = '$FN:';
2228
2245
  var $TX = '$FNX:';
2246
+ var $ON = '$GLOBAL:';
2229
2247
  var FUNCTION = 'function';
2230
2248
  function toJson(obj, space) {
2231
2249
  return JSON.stringify(deepExtend([], obj, true), function (key, val) {
@@ -2261,6 +2279,26 @@ function parseFn(fn, mode) {
2261
2279
  } else if (v.indexOf($T) === 0) {
2262
2280
  v = v.replace($T, '');
2263
2281
  flag = true;
2282
+ } else if (v.indexOf($ON) === 0) {
2283
+ var name = v.replace($ON, '');
2284
+
2285
+ v = function v() {
2286
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2287
+ args[_key] = arguments[_key];
2288
+ }
2289
+
2290
+ var callback = args[0].api.getGlobalEvent(name);
2291
+
2292
+ if (callback) {
2293
+ return callback.call.apply(callback, [this].concat(args));
2294
+ }
2295
+
2296
+ return undefined;
2297
+ };
2298
+
2299
+ v.__json = fn;
2300
+ v.__inject = true;
2301
+ return v;
2264
2302
  } else if (v.indexOf($TX) === 0) {
2265
2303
  v = makeFn('function($inject){' + v.replace($TX, '') + '}');
2266
2304
  v.__json = fn;
@@ -2445,6 +2483,10 @@ function toProps(rule) {
2445
2483
  if (prop.slot) delete prop.slot;
2446
2484
  return prop;
2447
2485
  }
2486
+ function setPrototypeOf(o, proto) {
2487
+ Object.setPrototypeOf(o, proto);
2488
+ return o;
2489
+ }
2448
2490
 
2449
2491
  function baseRule() {
2450
2492
  return {
@@ -2521,6 +2563,107 @@ function makerFactory() {
2521
2563
  };
2522
2564
  }
2523
2565
 
2566
+ function getError(action, option, xhr) {
2567
+ var msg = "fail to ".concat(action, " ").concat(xhr.status, "'");
2568
+ var err = new Error(msg);
2569
+ err.status = xhr.status;
2570
+ err.url = action;
2571
+ return err;
2572
+ }
2573
+
2574
+ function getBody(xhr) {
2575
+ var text = xhr.responseText || xhr.response;
2576
+
2577
+ if (!text) {
2578
+ return text;
2579
+ }
2580
+
2581
+ try {
2582
+ return JSON.parse(text);
2583
+ } catch (e) {
2584
+ return text;
2585
+ }
2586
+ }
2587
+
2588
+ function fetch$1(option) {
2589
+ if (typeof XMLHttpRequest === 'undefined') {
2590
+ return;
2591
+ }
2592
+
2593
+ var xhr = new XMLHttpRequest();
2594
+ var action = option.action;
2595
+
2596
+ xhr.onerror = function error(e) {
2597
+ option.onError(e);
2598
+ };
2599
+
2600
+ xhr.onload = function onload() {
2601
+ if (xhr.status < 200 || xhr.status >= 300) {
2602
+ return option.onError(getError(action, option, xhr), getBody(xhr));
2603
+ }
2604
+
2605
+ option.onSuccess(getBody(xhr));
2606
+ };
2607
+
2608
+ xhr.open(option.method || 'get', action, true);
2609
+ var formData;
2610
+
2611
+ if (option.data) {
2612
+ if ((option.dataType || '').toLowerCase() !== 'json') {
2613
+ formData = new FormData();
2614
+ Object.keys(option.data).map(function (key) {
2615
+ formData.append(key, option.data[key]);
2616
+ });
2617
+ } else {
2618
+ formData = JSON.stringify(option.data);
2619
+ xhr.setRequestHeader('content-type', 'application/json');
2620
+ }
2621
+ }
2622
+
2623
+ if (option.withCredentials && 'withCredentials' in xhr) {
2624
+ xhr.withCredentials = true;
2625
+ }
2626
+
2627
+ var headers = option.headers || {};
2628
+ Object.keys(headers).forEach(function (item) {
2629
+ if (headers[item] !== null) {
2630
+ xhr.setRequestHeader(item, headers[item]);
2631
+ }
2632
+ });
2633
+ xhr.send(formData);
2634
+ }
2635
+ function asyncFetch(config) {
2636
+ return new Promise(function (resolve, reject) {
2637
+ fetch$1(_objectSpread2(_objectSpread2({}, config), {}, {
2638
+ onSuccess: function onSuccess(res) {
2639
+ var fn = function fn(v) {
2640
+ return v;
2641
+ };
2642
+
2643
+ var parse = parseFn(config.parse);
2644
+
2645
+ if (is.Function(parse)) {
2646
+ fn = parse;
2647
+ } else if (parse && is.String(parse)) {
2648
+ fn = function fn(v) {
2649
+ parse.split('.').forEach(function (k) {
2650
+ if (v) {
2651
+ v = v[k];
2652
+ }
2653
+ });
2654
+ return v;
2655
+ };
2656
+ }
2657
+
2658
+ resolve(fn(res));
2659
+ },
2660
+ onError: function onError(err) {
2661
+ reject(err);
2662
+ }
2663
+ }));
2664
+ });
2665
+ }
2666
+
2524
2667
  function copy(value) {
2525
2668
  return deepCopy(value);
2526
2669
  }
@@ -2576,7 +2719,15 @@ function Api(h) {
2576
2719
  },
2577
2720
 
2578
2721
  get parent() {
2579
- return h.vm.parent && h.vm.parent.setupState.fapi;
2722
+ return h.vm.setupState.parent && h.vm.setupState.parent.setupState.fapi;
2723
+ },
2724
+
2725
+ get top() {
2726
+ if (api.parent) {
2727
+ return api.parent.top;
2728
+ }
2729
+
2730
+ return api;
2580
2731
  },
2581
2732
 
2582
2733
  get children() {
@@ -2920,6 +3071,84 @@ function Api(h) {
2920
3071
  var ctx = h.getCtx(field);
2921
3072
  return ctx ? h.subForm[ctx.id] : undefined;
2922
3073
  },
3074
+ getChildrenRuleList: function getChildrenRuleList(id) {
3075
+ var flag = _typeof(id) === 'object';
3076
+ var ctx = flag ? byCtx(id) : h.getCtx(id);
3077
+ var rule = ctx ? ctx.rule : flag ? id : api.getRule(id);
3078
+
3079
+ if (!rule) {
3080
+ return [];
3081
+ }
3082
+
3083
+ var rules = [];
3084
+
3085
+ var findRules = function findRules(children) {
3086
+ children && children.forEach(function (item) {
3087
+ if (_typeof(item) !== 'object') {
3088
+ return;
3089
+ }
3090
+
3091
+ if (item.field) {
3092
+ rules.push(item);
3093
+ }
3094
+
3095
+ rules.push.apply(rules, _toConsumableArray(api.getChildrenRuleList(item)));
3096
+ });
3097
+ };
3098
+
3099
+ findRules(ctx ? ctx.loadChildrenPending() : rule.children);
3100
+ return rules;
3101
+ },
3102
+ getChildrenFormData: function getChildrenFormData(id) {
3103
+ var rules = api.getChildrenRuleList(id);
3104
+ return rules.reduce(function (formData, rule) {
3105
+ formData[rule.field] = copy(rule.value);
3106
+ return formData;
3107
+ }, {});
3108
+ },
3109
+ setChildrenFormData: function setChildrenFormData(id, formData, cover) {
3110
+ var rules = api.getChildrenRuleList(id);
3111
+ rules.forEach(function (rule) {
3112
+ if (hasProperty(formData, rule.field)) {
3113
+ rule.value = formData[rule.field];
3114
+ } else if (cover) {
3115
+ rule.value = undefined;
3116
+ }
3117
+ });
3118
+ },
3119
+ getGlobalEvent: function getGlobalEvent(name) {
3120
+ var event = api.options.globalEvent[name];
3121
+
3122
+ if (event) {
3123
+ if (_typeof(event) === 'object') {
3124
+ event = event.handle;
3125
+ }
3126
+
3127
+ return parseFn(event);
3128
+ }
3129
+
3130
+ return undefined;
3131
+ },
3132
+ getGlobalData: function getGlobalData(name) {
3133
+ return new Promise(function (resolve, inject) {
3134
+ var config = api.options.globalData[name];
3135
+
3136
+ if (!config) {
3137
+ resolve(h.fc.loadData[name]);
3138
+ }
3139
+
3140
+ if (config.type === 'fetch') {
3141
+ asyncFetch(config).then(function (res) {
3142
+ resolve({
3143
+ res: res,
3144
+ config: config
3145
+ });
3146
+ })["catch"](inject);
3147
+ } else {
3148
+ resolve(config.data);
3149
+ }
3150
+ });
3151
+ },
2923
3152
  nextTick: function nextTick(fn) {
2924
3153
  h.bus.$once('next-tick', fn);
2925
3154
  h.refresh();
@@ -3016,7 +3245,8 @@ function toString(val) {
3016
3245
 
3017
3246
  var id$2 = 0;
3018
3247
  function uniqueId() {
3019
- return 'F' + Math.random().toString(36).substr(3, 3) + Number("".concat(Date.now()).concat(++id$2)).toString(36);
3248
+ var num = 370 + ++id$2;
3249
+ return 'F' + Math.random().toString(36).substr(3, 3) + Number("".concat(Date.now())).toString(36) + num.toString(36) + 'c';
3020
3250
  }
3021
3251
 
3022
3252
  function deepSet(data, idx, val) {
@@ -3215,7 +3445,7 @@ function useRender$1(Render) {
3215
3445
  inject.children = children;
3216
3446
  _vn = slot(inject);
3217
3447
  } else {
3218
- _vn = preview ? ctx.parser.preview(children, ctx) : ctx.parser.render(children, ctx);
3448
+ _vn = preview ? ctx.parser.preview(copy$1(children), ctx) : ctx.parser.render(copy$1(children), ctx);
3219
3449
  }
3220
3450
 
3221
3451
  _vn = _this4.renderSides(_vn, ctx);
@@ -3225,7 +3455,17 @@ function useRender$1(Render) {
3225
3455
  }
3226
3456
 
3227
3457
  if (ctx.none) {
3228
- _vn = _this4.display(_vn);
3458
+ if (Array.isArray(_vn)) {
3459
+ _vn = _vn.map(function (v) {
3460
+ if (!v || !v.__v_isVNode) {
3461
+ return v;
3462
+ }
3463
+
3464
+ return _this4.none(v);
3465
+ });
3466
+ } else {
3467
+ _vn = _this4.none(_vn);
3468
+ }
3229
3469
  }
3230
3470
 
3231
3471
  cacheFlag && !Object.keys(children).length && _this4.setCache(ctx, function () {
@@ -3257,43 +3497,25 @@ function useRender$1(Render) {
3257
3497
  return;
3258
3498
  }
3259
3499
  },
3260
- getModelField: function getModelField(ctx) {
3261
- return ctx.rule.modelField || ctx.parser.modelField || this.fc.modelFields[this.vNode.aliasMap[ctx.type]] || this.fc.modelFields[ctx.type] || this.fc.modelFields[ctx.originType] || 'modelValue';
3262
- },
3263
- display: function display(vn) {
3264
- var _this5 = this;
3265
-
3266
- if (Array.isArray(vn)) {
3267
- var data = [];
3268
- vn.forEach(function (v) {
3269
- if (Array.isArray(v)) return _this5.display(v);
3270
- if (_this5.none(v)) data.push(v);
3271
- });
3272
- return data;
3273
- } else {
3274
- return this.none(vn);
3275
- }
3276
- },
3277
3500
  none: function none(vn) {
3278
3501
  if (vn) {
3279
- if (Array.isArray(vn.props.style)) {
3280
- vn.props.style.push({
3281
- display: 'none'
3282
- });
3502
+ if (Array.isArray(vn.props["class"])) {
3503
+ vn.props["class"].push('fc-none');
3283
3504
  } else {
3284
- vn.props.style = [vn.props.style, {
3285
- display: 'none'
3286
- }];
3505
+ vn.props["class"] = [vn.props["class"], 'fc-none'];
3287
3506
  }
3288
3507
 
3289
3508
  return vn;
3290
3509
  }
3291
3510
  },
3511
+ getModelField: function getModelField(ctx) {
3512
+ return ctx.rule.modelField || ctx.parser.modelField || this.fc.modelFields[this.vNode.aliasMap[ctx.type]] || this.fc.modelFields[ctx.type] || this.fc.modelFields[ctx.originType] || 'modelValue';
3513
+ },
3292
3514
  isFragment: function isFragment(ctx) {
3293
3515
  return ctx.type === 'fragment' || ctx.type === 'template';
3294
3516
  },
3295
3517
  injectProp: function injectProp(ctx) {
3296
- var _this6 = this;
3518
+ var _this5 = this;
3297
3519
 
3298
3520
  var state = this.vm.setupState;
3299
3521
 
@@ -3302,14 +3524,15 @@ function useRender$1(Render) {
3302
3524
  api: this.$handle.api,
3303
3525
  form: this.fc.create,
3304
3526
  subForm: function subForm(_subForm) {
3305
- _this6.$handle.addSubForm(ctx, _subForm);
3527
+ _this5.$handle.addSubForm(ctx, _subForm);
3306
3528
  },
3307
3529
  getSubForm: function getSubForm() {
3308
- return _this6.$handle.subForm[ctx.id];
3530
+ return _this5.$handle.subForm[ctx.id];
3309
3531
  },
3310
3532
  options: [],
3311
3533
  children: [],
3312
3534
  preview: false,
3535
+ id: ctx.id,
3313
3536
  field: ctx.field,
3314
3537
  rule: ctx.rule,
3315
3538
  input: ctx.input
@@ -3325,7 +3548,7 @@ function useRender$1(Render) {
3325
3548
  return inject;
3326
3549
  },
3327
3550
  ctxProp: function ctxProp(ctx, custom) {
3328
- var _this7 = this;
3551
+ var _this6 = this;
3329
3552
 
3330
3553
  var ref = ctx.ref,
3331
3554
  key = ctx.key,
@@ -3340,7 +3563,7 @@ function useRender$1(Render) {
3340
3563
  vnodeMounted: function vnodeMounted(vn) {
3341
3564
  vn.el.__rule__ = ctx.rule;
3342
3565
 
3343
- _this7.onMounted(ctx, vn.el);
3566
+ _this6.onMounted(ctx, vn.el);
3344
3567
  },
3345
3568
  'fc.el': function fcEl(el) {
3346
3569
  ctx.exportEl = el;
@@ -3356,12 +3579,14 @@ function useRender$1(Render) {
3356
3579
  var field = this.getModelField(ctx);
3357
3580
  var model = {
3358
3581
  callback: function callback(value) {
3359
- _this7.onInput(ctx, value);
3582
+ _this6.onInput(ctx, value);
3360
3583
  },
3361
3584
  value: this.$handle.getFormData(ctx)
3362
3585
  };
3363
3586
  props.push({
3364
- on: _defineProperty({}, "update:".concat(field), model.callback),
3587
+ on: _objectSpread2(_defineProperty({}, "update:".concat(field), model.callback), ctx.prop.modelEmit ? _defineProperty({}, ctx.prop.modelEmit, function () {
3588
+ return _this6.onEmitInput(ctx);
3589
+ }) : {}),
3365
3590
  props: _defineProperty({}, field, model.value)
3366
3591
  });
3367
3592
  ctx.prop.model = model;
@@ -3376,10 +3601,18 @@ function useRender$1(Render) {
3376
3601
  this.$handle.effect(ctx, 'mounted');
3377
3602
  },
3378
3603
  onInput: function onInput(ctx, value) {
3604
+ if (ctx.prop.modelEmit) {
3605
+ this.$handle.onBaseInput(ctx, value);
3606
+ return;
3607
+ }
3608
+
3379
3609
  this.$handle.onInput(ctx, value);
3380
3610
  },
3611
+ onEmitInput: function onEmitInput(ctx) {
3612
+ this.$handle.setValue(ctx, ctx.parser.toValue(ctx.modelValue, ctx), ctx.modelValue);
3613
+ },
3381
3614
  renderChildren: function renderChildren(children, ctx) {
3382
- var _this8 = this;
3615
+ var _this7 = this;
3383
3616
 
3384
3617
  if (!is.trueArray(children)) return {};
3385
3618
  var slotBag = makeSlotBag();
@@ -3388,14 +3621,14 @@ function useRender$1(Render) {
3388
3621
  if (is.String(child)) return slotBag.setSlot(null, child);
3389
3622
 
3390
3623
  if (child.__fc__) {
3391
- return _this8.renderSlot(slotBag, child.__fc__, ctx);
3624
+ return _this7.renderSlot(slotBag, child.__fc__, ctx);
3392
3625
  }
3393
3626
 
3394
3627
  if (child.type) {
3395
3628
  nextTick(function () {
3396
- _this8.$handle.loadChildren(children, ctx);
3629
+ _this7.$handle.loadChildren(children, ctx);
3397
3630
 
3398
- _this8.$handle.refresh();
3631
+ _this7.$handle.refresh();
3399
3632
  });
3400
3633
  }
3401
3634
  });
@@ -3409,7 +3642,7 @@ function useRender$1(Render) {
3409
3642
  return this.vNode.make(lower(ctx.originType), prop, children);
3410
3643
  },
3411
3644
  renderRule: function renderRule(rule, children, origin) {
3412
- var _this9 = this;
3645
+ var _this8 = this;
3413
3646
 
3414
3647
  if (!rule) return undefined;
3415
3648
  if (is.String(rule)) return rule;
@@ -3433,7 +3666,7 @@ function useRender$1(Render) {
3433
3666
  if (is.trueArray(rule.children)) {
3434
3667
  rule.children.forEach(function (v) {
3435
3668
  v && slotBag.setSlot(v === null || v === void 0 ? void 0 : v.slot, function () {
3436
- return _this9.renderRule(v);
3669
+ return _this8.renderRule(v);
3437
3670
  });
3438
3671
  });
3439
3672
  }
@@ -3677,16 +3910,6 @@ function useRender(Handler) {
3677
3910
  });
3678
3911
  }
3679
3912
 
3680
- function isNone(ctx) {
3681
- var none = !(is.Undef(ctx.prop.display) || !!ctx.prop.display);
3682
-
3683
- if (ctx.parent) {
3684
- return ctx.parent.none || none;
3685
- } else {
3686
- return none;
3687
- }
3688
- }
3689
-
3690
3913
  function bind(ctx) {
3691
3914
  Object.defineProperties(ctx.origin, {
3692
3915
  __fc__: enumerable(markRaw(ctx), true)
@@ -3709,7 +3932,9 @@ function RuleContext(handle, rule, defaultValue) {
3709
3932
  linkOn: [],
3710
3933
  root: [],
3711
3934
  ctrlRule: [],
3935
+ children: [],
3712
3936
  parent: null,
3937
+ group: rule.subRule ? this : null,
3713
3938
  cacheConfig: null,
3714
3939
  prop: _objectSpread2({}, rule),
3715
3940
  computed: {},
@@ -3727,6 +3952,17 @@ function RuleContext(handle, rule, defaultValue) {
3727
3952
  this.update(handle, true);
3728
3953
  }
3729
3954
  extend(RuleContext.prototype, {
3955
+ getParentGroup: function getParentGroup() {
3956
+ var ctx = this.parent;
3957
+
3958
+ while (ctx) {
3959
+ if (ctx.group) {
3960
+ return ctx;
3961
+ }
3962
+
3963
+ ctx = ctx.parent;
3964
+ }
3965
+ },
3730
3966
  loadChildrenPending: function loadChildrenPending() {
3731
3967
  var _this = this;
3732
3968
 
@@ -3862,7 +4098,7 @@ extend(RuleContext.prototype, {
3862
4098
  })), [this.computed]));
3863
4099
  },
3864
4100
  initNone: function initNone() {
3865
- this.none = isNone(this);
4101
+ this.none = !(is.Undef(this.prop.display) || !!this.prop.display);
3866
4102
  },
3867
4103
  check: function check(handle) {
3868
4104
  return this.vm === handle.vm;
@@ -3892,6 +4128,11 @@ extend(RuleContext.prototype, {
3892
4128
  this.unwatch();
3893
4129
  this.unlink();
3894
4130
  this.rmCtrl();
4131
+
4132
+ if (this.parent) {
4133
+ this.parent.children.splice(this.parent.children.indexOf(this) >>> 0, 1);
4134
+ }
4135
+
3895
4136
  extend(this, {
3896
4137
  deleted: true,
3897
4138
  prop: _objectSpread2({}, this.rule),
@@ -3903,6 +4144,7 @@ extend(RuleContext.prototype, {
3903
4144
  vm: undef,
3904
4145
  vNode: undef,
3905
4146
  parent: null,
4147
+ children: [],
3906
4148
  cacheConfig: null,
3907
4149
  none: false
3908
4150
  });
@@ -4163,7 +4405,7 @@ function useLoader(Handler) {
4163
4405
  }
4164
4406
  };
4165
4407
 
4166
- rules.map(function (_rule, index) {
4408
+ var ctxs = rules.map(function (_rule, index) {
4167
4409
  if (parent && !is.Object(_rule)) return;
4168
4410
  if (!_this6.pageEnd && !parent && index >= _this6.first) return;
4169
4411
 
@@ -4231,6 +4473,10 @@ function useLoader(Handler) {
4231
4473
  }
4232
4474
 
4233
4475
  _this6.appendValue(ctx.rule);
4476
+
4477
+ if (ctx.parent && ctx.parent !== parent) {
4478
+ _this6.rmSubRuleData(ctx);
4479
+ }
4234
4480
  }
4235
4481
 
4236
4482
  _this6.parseEmit(ctx);
@@ -4278,7 +4524,13 @@ function useLoader(Handler) {
4278
4524
 
4279
4525
  if (_this6.refreshControl(ctx)) _this6.cycleLoad = true;
4280
4526
  return ctx;
4527
+ }).filter(function (v) {
4528
+ return !!v;
4281
4529
  });
4530
+
4531
+ if (parent) {
4532
+ parent.children = ctxs;
4533
+ }
4282
4534
  },
4283
4535
  refreshControl: function refreshControl(ctx) {
4284
4536
  return ctx.input && ctx.rule.control && this.useCtrl(ctx);
@@ -4481,9 +4733,33 @@ function useInput(Handler) {
4481
4733
  this.setValue(ctx, val, value);
4482
4734
  }
4483
4735
  },
4736
+ onBaseInput: function onBaseInput(ctx, value) {
4737
+ this.setFormData(ctx, value);
4738
+ ctx.modelValue = value;
4739
+ this.nextRefresh();
4740
+ this.$render.clearCache(ctx);
4741
+ },
4484
4742
  setFormData: function setFormData(ctx, value) {
4743
+ ctx.modelValue = value;
4744
+ var group = ctx.getParentGroup();
4745
+
4746
+ if (group) {
4747
+ if (!this.subRuleData[group.id]) {
4748
+ this.subRuleData[group.id] = {};
4749
+ }
4750
+
4751
+ this.subRuleData[group.id][ctx.field] = ctx.rule.value;
4752
+ }
4753
+
4485
4754
  $set(this.formData, ctx.id, value);
4486
4755
  },
4756
+ rmSubRuleData: function rmSubRuleData(ctx) {
4757
+ var group = ctx.getParentGroup();
4758
+
4759
+ if (group && this.subRuleData[group.id]) {
4760
+ delete this.subRuleData[group.id][ctx.field];
4761
+ }
4762
+ },
4487
4763
  getFormData: function getFormData(ctx) {
4488
4764
  return this.formData[ctx.id];
4489
4765
  },
@@ -4611,40 +4887,6 @@ var BaseParser = {
4611
4887
  mergeProp: function mergeProp(ctx) {}
4612
4888
  };
4613
4889
 
4614
- var _ = {
4615
- sum: function sum(arr) {
4616
- if (Array.isArray(arr)) {
4617
- var val = 0;
4618
- arr.map(function (v) {
4619
- return val += v || 0;
4620
- });
4621
- return val;
4622
- }
4623
- },
4624
- column: function column(arr, field) {
4625
- if (Array.isArray(arr)) {
4626
- return arr.map(function (v) {
4627
- return v[field];
4628
- });
4629
- }
4630
-
4631
- return [];
4632
- },
4633
- get: function get(obj, field, def) {
4634
- var lst = field.split('.');
4635
- var val = obj;
4636
-
4637
- for (var i = 0; i < lst.length; i++) {
4638
- if (hasProperty(val, lst[i])) {
4639
- val = val[lst[i]];
4640
- } else {
4641
- return def === undefined ? 0 : def;
4642
- }
4643
- }
4644
-
4645
- return val;
4646
- }
4647
- };
4648
4890
  var noneKey = ['field', 'value', 'vm', 'template', 'name', 'config', 'control', 'inject', 'sync', 'payload', 'optionsTo', 'update', 'slotUpdate', 'computed', 'component', 'cache'];
4649
4891
  function useContext(Handler) {
4650
4892
  extend(Handler.prototype, {
@@ -4795,28 +5037,43 @@ function useContext(Handler) {
4795
5037
  }
4796
5038
  }));
4797
5039
  this.bus.$once('load-end', function () {
4798
- var computedRef = toRef(ctx.rule, 'computed');
4799
- ctx.watch.push(watch(function () {
4800
- var computed = computedRef.value;
4801
- if (!computed) return undefined;
4802
- var fn;
4803
-
4804
- if (is.Function(computed)) {
4805
- fn = function fn() {
4806
- return computed(_this.api.form, _this.api);
4807
- };
4808
- } else {
4809
- fn = function fn() {
4810
- return new Function('_', "with(this){ return ".concat(computed, " }")).call(_this.api.form, _);
4811
- };
4812
- }
5040
+ var computed = ctx.rule.computed;
4813
5041
 
4814
- return invoke(fn, undefined);
4815
- }, function (n) {
4816
- val.value = n;
4817
- }, {
4818
- immediate: !!computedRef.value
4819
- }));
5042
+ if (!computed) {
5043
+ return;
5044
+ }
5045
+
5046
+ if (_typeof(computed) !== 'object') {
5047
+ computed = {
5048
+ value: computed
5049
+ };
5050
+ }
5051
+
5052
+ Object.keys(computed).forEach(function (k) {
5053
+ ctx.watch.push(watch(function () {
5054
+ var item = computed[k];
5055
+ if (!item) return undefined;
5056
+ var fn;
5057
+
5058
+ if (is.Function(item)) {
5059
+ fn = function fn() {
5060
+ return item(_this.api.form, _this.api);
5061
+ };
5062
+ } else {
5063
+ var group = ctx.getParentGroup();
5064
+
5065
+ fn = function fn() {
5066
+ return new Function('formulas', 'top', 'group', "with(top){with(this){with(group){with(formulas){ return ".concat(item, " }}}}")).call(_this.api.form, _this.fc.formulas, _this.api.top.form, group ? _this.subRuleData[group.id] || {} : {});
5067
+ };
5068
+ }
5069
+
5070
+ return invoke(fn, undefined);
5071
+ }, function (n) {
5072
+ deepSet(ctx.rule, k, n);
5073
+ }, {
5074
+ immediate: true
5075
+ }));
5076
+ });
4820
5077
  });
4821
5078
  }
4822
5079
 
@@ -4827,7 +5084,7 @@ function useContext(Handler) {
4827
5084
 
4828
5085
  this.deferSyncValue(function () {
4829
5086
  o && o.forEach(function (child) {
4830
- if ((n || []).indexOf(child) === -1 && child && !is.String(child) && child.__fc__ && child.__fc__.parent === ctx && child.__fc__.root === o) {
5087
+ if ((n || []).indexOf(child) === -1 && child && !is.String(child) && child.__fc__ && child.__fc__.parent === ctx && child.__fc__.root !== n) {
4831
5088
  _this2.rmCtx(child.__fc__);
4832
5089
  }
4833
5090
  });
@@ -4858,6 +5115,16 @@ function useContext(Handler) {
4858
5115
  $del(this.formData, id);
4859
5116
  $del(this.subForm, id);
4860
5117
  $del(this.vm.setupState.ctxInject, id);
5118
+ var group = ctx.getParentGroup();
5119
+
5120
+ if (group && this.subRuleData[group.id]) {
5121
+ $del(this.subRuleData[group.id], field);
5122
+ }
5123
+
5124
+ if (ctx.group) {
5125
+ $del(this.subRuleData, id);
5126
+ }
5127
+
4861
5128
  input && this.rmIdCtx(ctx, field, 'field');
4862
5129
  name && this.rmIdCtx(ctx, name, 'name');
4863
5130
 
@@ -5113,6 +5380,7 @@ function Handler(fc) {
5113
5380
  deferSyncFn: null,
5114
5381
  isMounted: false,
5115
5382
  formData: reactive({}),
5383
+ subRuleData: reactive({}),
5116
5384
  subForm: {},
5117
5385
  form: reactive({}),
5118
5386
  appendData: {},
@@ -5162,77 +5430,6 @@ useContext(Handler);
5162
5430
  useLifecycle(Handler);
5163
5431
  useEffect(Handler);
5164
5432
 
5165
- // https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js
5166
- function getError(action, option, xhr) {
5167
- var msg = "fail to ".concat(action, " ").concat(xhr.status, "'");
5168
- var err = new Error(msg);
5169
- err.status = xhr.status;
5170
- err.url = action;
5171
- return err;
5172
- }
5173
-
5174
- function getBody(xhr) {
5175
- var text = xhr.responseText || xhr.response;
5176
-
5177
- if (!text) {
5178
- return text;
5179
- }
5180
-
5181
- try {
5182
- return JSON.parse(text);
5183
- } catch (e) {
5184
- return text;
5185
- }
5186
- }
5187
-
5188
- function fetch$1(option) {
5189
- if (typeof XMLHttpRequest === 'undefined') {
5190
- return;
5191
- }
5192
-
5193
- var xhr = new XMLHttpRequest();
5194
- var action = option.action;
5195
-
5196
- xhr.onerror = function error(e) {
5197
- option.onError(e);
5198
- };
5199
-
5200
- xhr.onload = function onload() {
5201
- if (xhr.status < 200 || xhr.status >= 300) {
5202
- return option.onError(getError(action, option, xhr), getBody(xhr));
5203
- }
5204
-
5205
- option.onSuccess(getBody(xhr));
5206
- };
5207
-
5208
- xhr.open(option.method || 'get', action, true);
5209
- var formData;
5210
-
5211
- if (option.data) {
5212
- if ((option.dataType || '').toLowerCase() !== 'json') {
5213
- formData = new FormData();
5214
- Object.keys(option.data).map(function (key) {
5215
- formData.append(key, option.data[key]);
5216
- });
5217
- } else {
5218
- formData = JSON.stringify(option.data);
5219
- xhr.setRequestHeader('content-type', 'application/json');
5220
- }
5221
- }
5222
-
5223
- if (option.withCredentials && 'withCredentials' in xhr) {
5224
- xhr.withCredentials = true;
5225
- }
5226
-
5227
- var headers = option.headers || {};
5228
- Object.keys(headers).forEach(function (item) {
5229
- if (headers[item] !== null) {
5230
- xhr.setRequestHeader(item, headers[item]);
5231
- }
5232
- });
5233
- xhr.send(formData);
5234
- }
5235
-
5236
5433
  var NAME = 'fcFragment';
5237
5434
  var fragment = defineComponent({
5238
5435
  name: NAME,
@@ -5376,6 +5573,23 @@ extend(Manager.prototype, {
5376
5573
  form: function form() {
5377
5574
  return this.vm.refs[this.ref];
5378
5575
  },
5576
+ getSlot: function getSlot(name) {
5577
+ var _fn = function _fn(vm) {
5578
+ if (vm) {
5579
+ var slot = vm.slots[name];
5580
+
5581
+ if (slot) {
5582
+ return slot;
5583
+ }
5584
+
5585
+ return _fn(vm.setupState.parent);
5586
+ }
5587
+
5588
+ return undefined;
5589
+ };
5590
+
5591
+ return _fn(this.vm);
5592
+ },
5379
5593
  mergeOptions: function mergeOptions(args, opt) {
5380
5594
  var _this2 = this;
5381
5595
 
@@ -5498,22 +5712,23 @@ var fetch = function fetch(fc) {
5498
5712
  function run(inject, rule, api) {
5499
5713
  var option = inject.value;
5500
5714
 
5715
+ if (is.Function(option)) {
5716
+ option = option(rule, api);
5717
+ }
5718
+
5719
+ option = parseOpt(option);
5720
+
5501
5721
  var set = function set(val) {
5502
5722
  if (val === undefined) {
5503
5723
  inject.clearProp();
5504
- api.sync(rule);
5505
5724
  } else {
5506
5725
  deepSet(inject.getProp(), option.to || 'options', val);
5507
5726
  }
5508
- };
5509
-
5510
- if (is.Function(option)) {
5511
- option = option(rule, api);
5512
- }
5513
5727
 
5514
- option = parseOpt(option);
5728
+ api.sync(rule);
5729
+ };
5515
5730
 
5516
- if (!option || !option.action) {
5731
+ if (!option || !option.action && !option.key) {
5517
5732
  set(undefined);
5518
5733
  return;
5519
5734
  }
@@ -5522,6 +5737,22 @@ var fetch = function fetch(fc) {
5522
5737
  option.to = 'options';
5523
5738
  }
5524
5739
 
5740
+ if (option.key) {
5741
+ var item = fc.$handle.options.globalData[option.key];
5742
+
5743
+ if (!item) {
5744
+ set(undefined);
5745
+ return;
5746
+ }
5747
+
5748
+ if (item.type === 'static') {
5749
+ set(item.data);
5750
+ return;
5751
+ } else {
5752
+ option = _objectSpread2(_objectSpread2({}, option), item);
5753
+ }
5754
+ }
5755
+
5525
5756
  var _onError = option.onError;
5526
5757
 
5527
5758
  var check = function check() {
@@ -5542,11 +5773,13 @@ var fetch = function fetch(fc) {
5542
5773
  return flag ? v : v.data;
5543
5774
  };
5544
5775
 
5545
- if (is.Function(option.parse)) {
5546
- fn = option.parse;
5547
- } else if (option.parse && is.String(option.parse)) {
5776
+ var parse = parseFn(option.parse);
5777
+
5778
+ if (is.Function(parse)) {
5779
+ fn = parse;
5780
+ } else if (parse && is.String(parse)) {
5548
5781
  fn = function fn(v) {
5549
- option.parse.split('.').forEach(function (k) {
5782
+ parse.split('.').forEach(function (k) {
5550
5783
  if (v) {
5551
5784
  v = v[k];
5552
5785
  }
@@ -5568,8 +5801,8 @@ var fetch = function fetch(fc) {
5568
5801
  }
5569
5802
  });
5570
5803
 
5571
- fc.options.beforeFetch && invoke(function () {
5572
- return fc.options.beforeFetch(config, {
5804
+ fc.$handle.options.beforeFetch && invoke(function () {
5805
+ return fc.$handle.options.beforeFetch(config, {
5573
5806
  rule: rule,
5574
5807
  api: api
5575
5808
  });
@@ -5678,6 +5911,7 @@ function FormCreateFactory(config) {
5678
5911
  };
5679
5912
  var loadData = {};
5680
5913
  var CreateNode = CreateNodeFactory();
5914
+ var formulas = {};
5681
5915
  exportAttrs(config.attrs || {});
5682
5916
 
5683
5917
  function getApi(name) {
@@ -5714,11 +5948,11 @@ function FormCreateFactory(config) {
5714
5948
 
5715
5949
  function parser() {
5716
5950
  var data = nameProp.apply(void 0, arguments);
5717
- if (!data.id || !data.prop) return;
5951
+ if (!data.id || !data.prop) return BaseParser;
5718
5952
  var name = toCase(data.id);
5719
5953
  var parser = data.prop;
5720
5954
  var base = parser.merge === true ? parsers[name] : undefined;
5721
- parsers[name] = _objectSpread2(_objectSpread2({}, base || BaseParser), parser);
5955
+ parsers[name] = setPrototypeOf(parser, base || BaseParser);
5722
5956
  maker[name] = creatorFactory(name);
5723
5957
  parser.maker && extend(maker, parser.maker);
5724
5958
  }
@@ -5738,8 +5972,13 @@ function FormCreateFactory(config) {
5738
5972
  }
5739
5973
 
5740
5974
  if (!name || !component) return;
5975
+ var nameAlias = toCase(name);
5741
5976
  components[name] = component;
5742
- components[toCase(name)] = component;
5977
+ components[nameAlias] = component;
5978
+ delete CreateNode.aliasMap[name];
5979
+ delete CreateNode.aliasMap[nameAlias];
5980
+ delete parsers[name];
5981
+ delete parsers[nameAlias];
5743
5982
  if (component.formCreateParser) parser(name, component.formCreateParser);
5744
5983
  }
5745
5984
 
@@ -5799,6 +6038,7 @@ function FormCreateFactory(config) {
5799
6038
  providers: providers,
5800
6039
  useApps: useApps,
5801
6040
  maker: maker,
6041
+ formulas: formulas,
5802
6042
  loadData: loadData
5803
6043
  };
5804
6044
  } else {
@@ -5812,6 +6052,10 @@ function FormCreateFactory(config) {
5812
6052
  modelFields[name] = field;
5813
6053
  }
5814
6054
 
6055
+ function setFormula(name, fn) {
6056
+ formulas[name] = fn;
6057
+ }
6058
+
5815
6059
  function _emitData(id) {
5816
6060
  Object.keys(instance).forEach(function (v) {
5817
6061
  var apis = Array.isArray(instance[v]) ? instance[v] : [instance[v]];
@@ -5844,6 +6088,7 @@ function FormCreateFactory(config) {
5844
6088
  parsers: parsers,
5845
6089
  providers: providers,
5846
6090
  modelFields: modelFields,
6091
+ formulas: formulas,
5847
6092
  rules: vm.props.rule,
5848
6093
  name: vm.props.name || uniqueId(),
5849
6094
  inFor: vm.props.inFor,
@@ -5855,7 +6100,7 @@ function FormCreateFactory(config) {
5855
6100
  CreateNode: CreateNode,
5856
6101
  bus: new Mitt(),
5857
6102
  unwatch: null,
5858
- options: ref(vm.props.option || {}),
6103
+ options: ref({}),
5859
6104
  extendApi: config.extendApi || function (api) {
5860
6105
  return api;
5861
6106
  }
@@ -5889,9 +6134,9 @@ function FormCreateFactory(config) {
5889
6134
 
5890
6135
  if (this.isSub()) {
5891
6136
  this.unwatch = watch(function () {
5892
- return _this2.vm.parent.option;
6137
+ return _this2.vm.setupState.parent.setupState.fc.options.value;
5893
6138
  }, function () {
5894
- _this2.initOptions(_this2.options.value);
6139
+ _this2.initOptions();
5895
6140
 
5896
6141
  _this2.$handle.api.refresh();
5897
6142
  }, {
@@ -5899,23 +6144,28 @@ function FormCreateFactory(config) {
5899
6144
  });
5900
6145
  }
5901
6146
 
5902
- this.initOptions(this.options.value);
6147
+ this.initOptions();
5903
6148
  this.$handle.init();
5904
6149
  },
5905
6150
  isSub: function isSub() {
5906
6151
  return this.vm.setupState.parent && this.vm.props.extendOption;
5907
6152
  },
5908
- initOptions: function initOptions(options) {
5909
- this.options.value = _objectSpread2({
6153
+ initOptions: function initOptions() {
6154
+ this.options.value = {};
6155
+
6156
+ var options = _objectSpread2({
5910
6157
  formData: {},
5911
6158
  submitBtn: {},
5912
- resetBtn: {}
6159
+ resetBtn: {},
6160
+ globalEvent: {},
6161
+ globalData: {}
5913
6162
  }, deepCopy(globalConfig));
5914
6163
 
5915
6164
  if (this.isSub()) {
5916
- this.options.value = this.mergeOptions(this.options.value, this.vm.setupState.parent.setupState.fapi.config || {}, true);
6165
+ options = this.mergeOptions(options, this.vm.setupState.parent.setupState.fc.options.value || {}, true);
5917
6166
  }
5918
6167
 
6168
+ options = this.mergeOptions(options, this.vm.props.option);
5919
6169
  this.updateOptions(options);
5920
6170
  },
5921
6171
  mergeOptions: function mergeOptions(target, opt, parent) {
@@ -5977,6 +6227,7 @@ function FormCreateFactory(config) {
5977
6227
  component: component,
5978
6228
  directive: directive,
5979
6229
  setModelField: setModelField,
6230
+ setFormula: setFormula,
5980
6231
  register: register,
5981
6232
  $vnode: $vnode,
5982
6233
  parser: parser,
@@ -6043,6 +6294,7 @@ function FormCreateFactory(config) {
6043
6294
  inherit.useApps && extend(useApps, inherit.useApps);
6044
6295
  inherit.maker && extend(maker, inherit.maker);
6045
6296
  inherit.loadData && extend(loadData, inherit.loadData);
6297
+ inherit.formulas && extend(formulas, inherit.formulas);
6046
6298
  }
6047
6299
 
6048
6300
  return create;
@@ -6322,7 +6574,7 @@ var manager = {
6322
6574
  }
6323
6575
  },
6324
6576
  tidyOptions: function tidyOptions(options) {
6325
- ['submitBtn', 'resetBtn', 'row', 'info', 'wrap', 'col'].forEach(function (name) {
6577
+ ['submitBtn', 'resetBtn', 'row', 'info', 'wrap', 'col', 'title'].forEach(function (name) {
6326
6578
  tidyBool(options, name);
6327
6579
  });
6328
6580
  return options;
@@ -6337,7 +6589,8 @@ var manager = {
6337
6589
  ctx.prop = mergeProps([{
6338
6590
  info: this.options.info || {},
6339
6591
  wrap: this.options.wrap || {},
6340
- col: this.options.col || {}
6592
+ col: this.options.col || {},
6593
+ title: this.options.title || {}
6341
6594
  }, ctx.prop], {
6342
6595
  info: {
6343
6596
  trigger: 'hover',
@@ -6365,7 +6618,7 @@ var manager = {
6365
6618
  e.preventDefault();
6366
6619
  }
6367
6620
  },
6368
- "class": [form.className, form["class"], 'form-create'],
6621
+ "class": [form.className, form["class"], 'form-create', this.options.preview ? 'is-preview' : ''],
6369
6622
  style: form.style,
6370
6623
  type: 'form'
6371
6624
  };
@@ -6385,7 +6638,7 @@ var manager = {
6385
6638
  render: function render(children) {
6386
6639
  var _this2 = this;
6387
6640
 
6388
- if (children.slotLen()) {
6641
+ if (children.slotLen() && !this.options.preview) {
6389
6642
  children.setSlot(undefined, function () {
6390
6643
  return _this2.makeFormBtn();
6391
6644
  });
@@ -6422,7 +6675,7 @@ var manager = {
6422
6675
  }
6423
6676
  }, isTitle ? {
6424
6677
  label: function label() {
6425
- return _this3.makeInfo(rule, uni);
6678
+ return _this3.makeInfo(rule, uni, ctx);
6426
6679
  }
6427
6680
  } : {}));
6428
6681
  return inline === true || isFalse(_col) || isFalse(col.show) ? item : this.makeCol(rule, uni, [item]);
@@ -6432,7 +6685,7 @@ var manager = {
6432
6685
  var title = rule.title;
6433
6686
  return !(!title.title && !title["native"] || isFalse(title.show));
6434
6687
  },
6435
- makeInfo: function makeInfo(rule, uni) {
6688
+ makeInfo: function makeInfo(rule, uni, ctx) {
6436
6689
  var _this4 = this;
6437
6690
 
6438
6691
  var titleProp = _objectSpread2({}, rule.title);
@@ -6441,7 +6694,12 @@ var manager = {
6441
6694
 
6442
6695
  var isTip = isTooltip(infoProp);
6443
6696
  var form = this.options.form;
6444
- var children = [(titleProp.title || '') + (form.labelSuffix || form['label-suffix'] || '')];
6697
+ var titleSlot = this.getSlot('title');
6698
+ var children = [titleSlot ? titleSlot({
6699
+ title: titleProp.title || '',
6700
+ rule: ctx.rule,
6701
+ options: this.options
6702
+ }) : (titleProp.title || '') + (form.labelSuffix || form['label-suffix'] || '')];
6445
6703
 
6446
6704
  if (!isFalse(infoProp.show) && (infoProp.info || infoProp["native"]) && !isFalse(infoProp.icon)) {
6447
6705
  var prop = {
@@ -6667,7 +6925,7 @@ function useFrame(maker) {
6667
6925
  return maker;
6668
6926
  }
6669
6927
 
6670
- var css_248z = ".form-create .form-create .el-form-item{margin-bottom:22px}.form-create{width:100%}";
6928
+ var css_248z = ".form-create .form-create .el-form-item{margin-bottom:22px}.form-create{width:100%}.form-create .fc-none,.form-create.is-preview .fc-clock{display:none!important}";
6671
6929
  styleInject(css_248z);
6672
6930
 
6673
6931
  function tidyBtnProp(btn, def) {
@@ -6920,7 +7178,7 @@ function install(FormCreate) {
6920
7178
  function elmFormCreate() {
6921
7179
  return FormCreateFactory({
6922
7180
  ui: 'element-ui',
6923
- version: '3.1.27',
7181
+ version: '3.1.29',
6924
7182
  manager: manager,
6925
7183
  extendApi: extendApi,
6926
7184
  install: install,