@form-create/element-ui 3.1.35 → 3.2.1

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.35
2
+ * @form-create/element-ui v3.2.1
3
3
  * (c) 2018-2024 xaboy
4
4
  * Github https://github.com/xaboy/form-create
5
5
  * Released under the MIT License.
@@ -213,9 +213,9 @@
213
213
  return Array.isArray(value) ? value : [null, undefined, ''].indexOf(value) > -1 ? [] : [value];
214
214
  }
215
215
 
216
- var NAME$9 = 'fcCheckbox';
216
+ var NAME$8 = 'fcCheckbox';
217
217
  var Checkbox = vue.defineComponent({
218
- name: NAME$9,
218
+ name: NAME$8,
219
219
  inheritAttrs: false,
220
220
  props: {
221
221
  formCreateInject: Object,
@@ -525,9 +525,9 @@
525
525
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
526
526
  }
527
527
 
528
- var NAME$8 = 'fcFrame';
528
+ var NAME$7 = 'fcFrame';
529
529
  var Frame = vue.defineComponent({
530
- name: NAME$8,
530
+ name: NAME$7,
531
531
  props: {
532
532
  type: {
533
533
  type: String,
@@ -1008,9 +1008,9 @@
1008
1008
  }
1009
1009
  });
1010
1010
 
1011
- var NAME$7 = 'fcRadio';
1011
+ var NAME$6 = 'fcRadio';
1012
1012
  var Radio = vue.defineComponent({
1013
- name: NAME$7,
1013
+ name: NAME$6,
1014
1014
  inheritAttrs: false,
1015
1015
  props: {
1016
1016
  formCreateInject: Object,
@@ -1161,9 +1161,9 @@
1161
1161
  return {}.hasOwnProperty.call(rule, k);
1162
1162
  }
1163
1163
 
1164
- var NAME$6 = 'fcSelect';
1164
+ var NAME$5 = 'fcSelect';
1165
1165
  var Select = vue.defineComponent({
1166
- name: NAME$6,
1166
+ name: NAME$5,
1167
1167
  inheritAttrs: false,
1168
1168
  props: {
1169
1169
  formCreateInject: Object,
@@ -1231,9 +1231,9 @@
1231
1231
  }
1232
1232
  });
1233
1233
 
1234
- var NAME$5 = 'fcTree';
1234
+ var NAME$4 = 'fcTree';
1235
1235
  var Tree = vue.defineComponent({
1236
- name: NAME$5,
1236
+ name: NAME$4,
1237
1237
  inheritAttrs: false,
1238
1238
  formCreateParser: {
1239
1239
  mergeProp: function mergeProp(ctx) {
@@ -1333,9 +1333,9 @@
1333
1333
  return ('' + file).split('/').pop();
1334
1334
  }
1335
1335
 
1336
- var NAME$4 = 'fcUpload';
1336
+ var NAME$3 = 'fcUpload';
1337
1337
  var Upload = vue.defineComponent({
1338
- name: NAME$4,
1338
+ name: NAME$3,
1339
1339
  inheritAttrs: false,
1340
1340
  formCreateParser: {
1341
1341
  toFormValue: function toFormValue(value) {
@@ -1527,9 +1527,9 @@
1527
1527
  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%}";
1528
1528
  styleInject(css_248z$1);
1529
1529
 
1530
- var NAME$3 = 'fcGroup';
1530
+ var NAME$2 = 'fcGroup';
1531
1531
  var Group = vue.defineComponent({
1532
- name: NAME$3,
1532
+ name: NAME$2,
1533
1533
  props: {
1534
1534
  field: String,
1535
1535
  rule: Array,
@@ -1939,9 +1939,9 @@
1939
1939
  }
1940
1940
  });
1941
1941
 
1942
- var NAME$2 = 'fcSubForm';
1942
+ var NAME$1 = 'fcSubForm';
1943
1943
  var Sub = vue.defineComponent({
1944
- name: NAME$2,
1944
+ name: NAME$1,
1945
1945
  props: {
1946
1946
  rule: Array,
1947
1947
  options: {
@@ -2046,8 +2046,20 @@
2046
2046
 
2047
2047
  var components = [Checkbox, Frame, Radio, Select, Tree, Upload, Group, Sub, script];
2048
2048
 
2049
- function toString(val) {
2050
- return val == null ? '' : _typeof(val) === 'object' ? JSON.stringify(val, null, 2) : String(val);
2049
+ function debounce(fn, wait) {
2050
+ var timeout = null;
2051
+ return function () {
2052
+ var _this = this;
2053
+
2054
+ for (var _len = arguments.length, arg = new Array(_len), _key = 0; _key < _len; _key++) {
2055
+ arg[_key] = arguments[_key];
2056
+ }
2057
+
2058
+ if (timeout !== null) clearTimeout(timeout);
2059
+ timeout = setTimeout(function () {
2060
+ return fn.call.apply(fn, [_this].concat(arg));
2061
+ }, wait);
2062
+ };
2051
2063
  }
2052
2064
 
2053
2065
  function toLine(name) {
@@ -2059,131 +2071,6 @@
2059
2071
  return str.replace(str[0], str[0].toLocaleUpperCase());
2060
2072
  }
2061
2073
 
2062
- function format(type, msg, rule) {
2063
- return "[form-create ".concat(type, "]: ").concat(msg) + (rule ? '\n\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule) : '');
2064
- }
2065
- function err(msg, rule) {
2066
- console.error(format('err', msg, rule));
2067
- }
2068
- function logError(e) {
2069
- err(e.toString());
2070
- console.error(e);
2071
- }
2072
-
2073
- var PREFIX = '[[FORM-CREATE-PREFIX-';
2074
- var SUFFIX = '-FORM-CREATE-SUFFIX]]';
2075
- var $T = '$FN:';
2076
- var $TX = '$FNX:';
2077
- var $ON = '$GLOBAL:';
2078
- var FUNCTION = 'function';
2079
- function toJson(obj, space) {
2080
- return JSON.stringify(deepExtend(Array.isArray(obj) ? [] : {}, obj, true), function (key, val) {
2081
- if (val && val._isVue === true) return undefined;
2082
-
2083
- if (_typeof(val) !== FUNCTION) {
2084
- return val;
2085
- }
2086
-
2087
- if (val.__json) {
2088
- return val.__json;
2089
- }
2090
-
2091
- if (val.__origin) val = val.__origin;
2092
- if (val.__emit) return undefined;
2093
- return PREFIX + val + SUFFIX;
2094
- }, space);
2095
- }
2096
-
2097
- function makeFn(fn) {
2098
- return new Function('return ' + fn)();
2099
- }
2100
-
2101
- function parseFn(fn, mode) {
2102
- if (fn && is.String(fn) && fn.length > 4) {
2103
- var v = fn.trim();
2104
- var flag = false;
2105
-
2106
- try {
2107
- if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {
2108
- v = v.replace(SUFFIX, '').replace(PREFIX, '');
2109
- flag = true;
2110
- } else if (v.indexOf($T) === 0) {
2111
- v = v.replace($T, '');
2112
- flag = true;
2113
- } else if (v.indexOf($ON) === 0) {
2114
- var name = v.replace($ON, '');
2115
-
2116
- v = function v() {
2117
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2118
- args[_key] = arguments[_key];
2119
- }
2120
-
2121
- var callback = args[0].api.getGlobalEvent(name);
2122
-
2123
- if (callback) {
2124
- return callback.call.apply(callback, [this].concat(args));
2125
- }
2126
-
2127
- return undefined;
2128
- };
2129
-
2130
- v.__json = fn;
2131
- v.__inject = true;
2132
- return v;
2133
- } else if (v.indexOf($TX) === 0) {
2134
- v = makeFn('function($inject){' + v.replace($TX, '') + '}');
2135
- v.__json = fn;
2136
- v.__inject = true;
2137
- return v;
2138
- } else if (!mode && v.indexOf(FUNCTION) === 0 && v !== FUNCTION) {
2139
- flag = true;
2140
- }
2141
-
2142
- if (!flag) return fn;
2143
- var val = makeFn(v.indexOf(FUNCTION) === -1 && v.indexOf('(') !== 0 ? FUNCTION + ' ' + v : v);
2144
- val.__json = fn;
2145
- return val;
2146
- } catch (e) {
2147
- err("\u89E3\u6790\u5931\u8D25:".concat(v, "\n\nerr: ").concat(e));
2148
- return undefined;
2149
- }
2150
- }
2151
-
2152
- return fn;
2153
- }
2154
- function parseJson(json, mode) {
2155
- return JSON.parse(json, function (k, v) {
2156
- if (is.Undef(v) || !v.indexOf) return v;
2157
- return parseFn(v, mode);
2158
- });
2159
- }
2160
-
2161
- var id$2 = 0;
2162
- function uniqueId() {
2163
- var num = 370 + ++id$2;
2164
- return 'F' + Math.random().toString(36).substr(3, 3) + Number("".concat(Date.now())).toString(36) + num.toString(36) + 'c';
2165
- }
2166
-
2167
- function deepSet(data, idx, val) {
2168
- var _data = data,
2169
- to;
2170
- (idx || '').split('.').forEach(function (v) {
2171
- if (to) {
2172
- if (!_data[to] || _typeof(_data[to]) != 'object') {
2173
- _data[to] = {};
2174
- }
2175
-
2176
- _data = _data[to];
2177
- }
2178
-
2179
- to = v;
2180
- });
2181
- _data[to] = val;
2182
- return _data;
2183
- }
2184
-
2185
- var NAME$1 = 'FormCreate';
2186
-
2187
2074
  var getRuleInject = function getRuleInject(vm, parent) {
2188
2075
  if (!vm || vm === parent) {
2189
2076
  return;
@@ -2200,7 +2087,7 @@
2200
2087
 
2201
2088
  function $FormCreate(FormCreate, components, directives) {
2202
2089
  return vue.defineComponent({
2203
- name: NAME$1,
2090
+ name: 'FormCreate' + (FormCreate.isMobile ? 'Mobile' : ''),
2204
2091
  components: components,
2205
2092
  directives: directives,
2206
2093
  props: {
@@ -2328,10 +2215,24 @@
2328
2215
  document.head.appendChild(styleEl);
2329
2216
  }
2330
2217
  });
2218
+ var emit$topForm = debounce(function () {
2219
+ fc.bus.$emit('$loadData.$topForm');
2220
+ }, 100);
2221
+ var emit$form = debounce(function () {
2222
+ fc.bus.$emit('$loadData.$form');
2223
+ }, 100);
2331
2224
  vue.onMounted(function () {
2225
+ if (parent) {
2226
+ fapi.top.bus.$on('$loadData.$form', emit$topForm);
2227
+ }
2228
+
2332
2229
  fc.mounted();
2333
2230
  });
2334
2231
  vue.onBeforeUnmount(function () {
2232
+ if (parent) {
2233
+ fapi.top.bus.$off('$loadData.$form', emit$topForm);
2234
+ }
2235
+
2335
2236
  styleEl && document.head.removeChild(styleEl);
2336
2237
  rmSubForm();
2337
2238
  data.destroyed = true;
@@ -2394,6 +2295,13 @@
2394
2295
 
2395
2296
  data.updateValue = json;
2396
2297
  vm.emit('update:modelValue', value);
2298
+ vue.nextTick(function () {
2299
+ emit$form();
2300
+
2301
+ if (!parent) {
2302
+ emit$topForm();
2303
+ }
2304
+ });
2397
2305
  }
2398
2306
  });
2399
2307
  },
@@ -2481,6 +2389,105 @@
2481
2389
  return [].concat(keyAttrs, _toConsumableArray(normalMerge), _toConsumableArray(toArrayMerge), _toConsumableArray(functionalMerge), arrayAttrs, normalAttrs);
2482
2390
  }
2483
2391
 
2392
+ function format(type, msg, rule) {
2393
+ return "[form-create ".concat(type, "]: ").concat(msg) + (rule ? '\n\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule) : '');
2394
+ }
2395
+ function err(msg, rule) {
2396
+ console.error(format('err', msg, rule));
2397
+ }
2398
+ function logError(e) {
2399
+ err(e.toString());
2400
+ console.error(e);
2401
+ }
2402
+
2403
+ var PREFIX = '[[FORM-CREATE-PREFIX-';
2404
+ var SUFFIX = '-FORM-CREATE-SUFFIX]]';
2405
+ var $T = '$FN:';
2406
+ var $TX = '$FNX:';
2407
+ var $ON = '$GLOBAL:';
2408
+ var FUNCTION = 'function';
2409
+ function toJson(obj, space) {
2410
+ return JSON.stringify(deepExtend(Array.isArray(obj) ? [] : {}, obj, true), function (key, val) {
2411
+ if (val && val._isVue === true) return undefined;
2412
+
2413
+ if (_typeof(val) !== FUNCTION) {
2414
+ return val;
2415
+ }
2416
+
2417
+ if (val.__json) {
2418
+ return val.__json;
2419
+ }
2420
+
2421
+ if (val.__origin) val = val.__origin;
2422
+ if (val.__emit) return undefined;
2423
+ return PREFIX + val + SUFFIX;
2424
+ }, space);
2425
+ }
2426
+
2427
+ function makeFn(fn) {
2428
+ return new Function('return ' + fn)();
2429
+ }
2430
+
2431
+ function parseFn(fn, mode) {
2432
+ if (fn && is.String(fn) && fn.length > 4) {
2433
+ var v = fn.trim();
2434
+ var flag = false;
2435
+
2436
+ try {
2437
+ if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {
2438
+ v = v.replace(SUFFIX, '').replace(PREFIX, '');
2439
+ flag = true;
2440
+ } else if (v.indexOf($T) === 0) {
2441
+ v = v.replace($T, '');
2442
+ flag = true;
2443
+ } else if (v.indexOf($ON) === 0) {
2444
+ var name = v.replace($ON, '');
2445
+
2446
+ v = function v() {
2447
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2448
+ args[_key] = arguments[_key];
2449
+ }
2450
+
2451
+ var callback = args[0].api.getGlobalEvent(name);
2452
+
2453
+ if (callback) {
2454
+ return callback.call.apply(callback, [this].concat(args));
2455
+ }
2456
+
2457
+ return undefined;
2458
+ };
2459
+
2460
+ v.__json = fn;
2461
+ v.__inject = true;
2462
+ return v;
2463
+ } else if (v.indexOf($TX) === 0) {
2464
+ v = makeFn('function($inject){' + v.replace($TX, '') + '}');
2465
+ v.__json = fn;
2466
+ v.__inject = true;
2467
+ return v;
2468
+ } else if (!mode && v.indexOf(FUNCTION) === 0 && v !== FUNCTION) {
2469
+ flag = true;
2470
+ }
2471
+
2472
+ if (!flag) return fn;
2473
+ var val = makeFn(v.indexOf(FUNCTION) === -1 && v.indexOf('(') !== 0 ? FUNCTION + ' ' + v : v);
2474
+ val.__json = fn;
2475
+ return val;
2476
+ } catch (e) {
2477
+ err("\u89E3\u6790\u5931\u8D25:".concat(v, "\n\nerr: ").concat(e));
2478
+ return undefined;
2479
+ }
2480
+ }
2481
+
2482
+ return fn;
2483
+ }
2484
+ function parseJson(json, mode) {
2485
+ return JSON.parse(json, function (k, v) {
2486
+ if (is.Undef(v) || !v.indexOf) return v;
2487
+ return parseFn(v, mode);
2488
+ });
2489
+ }
2490
+
2484
2491
  function enumerable(value, writable) {
2485
2492
  return {
2486
2493
  value: value,
@@ -2698,7 +2705,28 @@
2698
2705
  pattern: function pattern(a, b) {
2699
2706
  return new RegExp(b, 'g').test(a);
2700
2707
  }
2701
- };
2708
+ };
2709
+ function deepGet(val, split) {
2710
+ (Array.isArray(split) ? split : (split || '').split('.')).forEach(function (k) {
2711
+ if (val != null) {
2712
+ val = val[k];
2713
+ }
2714
+ });
2715
+ return val;
2716
+ }
2717
+ function extractVar(str) {
2718
+ var regex = /{{\s*(.*?)\s*}}/g;
2719
+ var match;
2720
+ var matches = {};
2721
+
2722
+ while ((match = regex.exec(str)) !== null) {
2723
+ if (match[1]) {
2724
+ matches[match[1]] = true;
2725
+ }
2726
+ }
2727
+
2728
+ return Object.keys(matches);
2729
+ }
2702
2730
 
2703
2731
  function baseRule() {
2704
2732
  return {
@@ -2838,7 +2866,7 @@
2838
2866
 
2839
2867
  var headers = option.headers || {};
2840
2868
  Object.keys(headers).forEach(function (item) {
2841
- if (headers[item] !== null) {
2869
+ if (headers[item] != null) {
2842
2870
  xhr.setRequestHeader(item, headers[item]);
2843
2871
  }
2844
2872
  });
@@ -2858,12 +2886,7 @@
2858
2886
  fn = parse;
2859
2887
  } else if (parse && is.String(parse)) {
2860
2888
  fn = function fn(v) {
2861
- parse.split('.').forEach(function (k) {
2862
- if (v) {
2863
- v = v[k];
2864
- }
2865
- });
2866
- return v;
2889
+ return deepGet(v, parse);
2867
2890
  };
2868
2891
  }
2869
2892
 
@@ -3328,6 +3351,18 @@
3328
3351
  findRules(ctx ? ctx.loadChildrenPending() : rule.children);
3329
3352
  return rules;
3330
3353
  },
3354
+ getParentSubRule: function getParentSubRule(id) {
3355
+ var flag = _typeof(id) === 'object';
3356
+ var ctx = flag ? byCtx(id) : h.getCtx(id);
3357
+
3358
+ if (ctx) {
3359
+ var group = ctx.getParentGroup();
3360
+
3361
+ if (group) {
3362
+ return group.rule;
3363
+ }
3364
+ }
3365
+ },
3331
3366
  getChildrenFormData: function getChildrenFormData(id) {
3332
3367
  var rules = api.getChildrenRuleList(id);
3333
3368
  return rules.reduce(function (formData, rule) {
@@ -3337,12 +3372,14 @@
3337
3372
  },
3338
3373
  setChildrenFormData: function setChildrenFormData(id, formData, cover) {
3339
3374
  var rules = api.getChildrenRuleList(id);
3340
- rules.forEach(function (rule) {
3341
- if (hasProperty(formData, rule.field)) {
3342
- rule.value = formData[rule.field];
3343
- } else if (cover) {
3344
- rule.value = undefined;
3345
- }
3375
+ h.deferSyncValue(function () {
3376
+ rules.forEach(function (rule) {
3377
+ if (hasProperty(formData, rule.field)) {
3378
+ rule.value = formData[rule.field];
3379
+ } else if (cover) {
3380
+ rule.value = undefined;
3381
+ }
3382
+ });
3346
3383
  });
3347
3384
  },
3348
3385
  getGlobalEvent: function getGlobalEvent(name) {
@@ -3404,7 +3441,7 @@
3404
3441
  });
3405
3442
  },
3406
3443
  getData: function getData(id, def) {
3407
- return h.fc.getData(id, def);
3444
+ return h.fc.getLoadData(id, def);
3408
3445
  },
3409
3446
  setData: function setData(id, data) {
3410
3447
  return h.fc.setData(id, data);
@@ -3487,6 +3524,34 @@
3487
3524
  return str.replace(str[0], str[0].toLowerCase());
3488
3525
  }
3489
3526
 
3527
+ function toString(val) {
3528
+ return val == null ? '' : _typeof(val) === 'object' ? JSON.stringify(val, null, 2) : String(val);
3529
+ }
3530
+
3531
+ var id$2 = 0;
3532
+ function uniqueId() {
3533
+ var num = 370 + ++id$2;
3534
+ return 'F' + Math.random().toString(36).substr(3, 3) + Number("".concat(Date.now())).toString(36) + num.toString(36) + 'c';
3535
+ }
3536
+
3537
+ function deepSet(data, idx, val) {
3538
+ var _data = data,
3539
+ to;
3540
+ (idx || '').split('.').forEach(function (v) {
3541
+ if (to) {
3542
+ if (!_data[to] || _typeof(_data[to]) != 'object') {
3543
+ _data[to] = {};
3544
+ }
3545
+
3546
+ _data = _data[to];
3547
+ }
3548
+
3549
+ to = v;
3550
+ });
3551
+ _data[to] = val;
3552
+ return _data;
3553
+ }
3554
+
3490
3555
  function useRender$1(Render) {
3491
3556
  extend(Render.prototype, {
3492
3557
  initRender: function initRender() {
@@ -3798,6 +3863,9 @@
3798
3863
 
3799
3864
  _this7.onMounted(ctx, vn.el);
3800
3865
  },
3866
+ 'fc.updateValue': function fcUpdateValue(data) {
3867
+ _this7.$handle.onUpdateValue(ctx, data);
3868
+ },
3801
3869
  'fc.el': function fcEl(el) {
3802
3870
  ctx.exportEl = el;
3803
3871
 
@@ -4068,6 +4136,52 @@
4068
4136
  fn.__origin = _fn;
4069
4137
  fn.__json = _fn.__json;
4070
4138
  return fn;
4139
+ },
4140
+ loadStrVar: function loadStrVar(str, get) {
4141
+ var _this3 = this;
4142
+
4143
+ if (str && typeof str === 'string' && str.indexOf('{{') > -1 && str.indexOf('}}') > -1) {
4144
+ var vars = extractVar(str);
4145
+ vars.forEach(function (v) {
4146
+ var split = v.split('||');
4147
+ var field = split[0].trim();
4148
+
4149
+ if (field) {
4150
+ var def = (split[1] || '').trim();
4151
+ var val = get ? get(field, def) : _this3.fc.getLoadData(field, def);
4152
+ str = str.replaceAll("{{".concat(v, "}}"), val == null ? '' : val);
4153
+ }
4154
+ });
4155
+ }
4156
+
4157
+ return str;
4158
+ },
4159
+ loadFetchVar: function loadFetchVar(options, get) {
4160
+ var _this4 = this;
4161
+
4162
+ var loadVal = function loadVal(str) {
4163
+ return _this4.loadStrVar(str, get);
4164
+ };
4165
+
4166
+ options.action = loadVal(options.action);
4167
+
4168
+ if (options.headers) {
4169
+ var _headers = {};
4170
+ Object.keys(options.headers).forEach(function (k) {
4171
+ _headers[loadVal(k)] = loadVal(options.headers[k]);
4172
+ });
4173
+ options.headers = _headers;
4174
+ }
4175
+
4176
+ if (options.data) {
4177
+ var _data = {};
4178
+ Object.keys(options.data).forEach(function (k) {
4179
+ _data[loadVal(k)] = loadVal(options.data[k]);
4180
+ });
4181
+ options.data = _data;
4182
+ }
4183
+
4184
+ return options;
4071
4185
  }
4072
4186
  });
4073
4187
  }
@@ -4187,7 +4301,6 @@
4187
4301
  defaultValue: isInput ? deepCopy(defaultValue) : undefined,
4188
4302
  field: rule.field || undefined
4189
4303
  });
4190
- this.updateType();
4191
4304
  this.updateKey();
4192
4305
  bind(this);
4193
4306
  this.update(handle, true);
@@ -4323,6 +4436,7 @@
4323
4436
  updateType: function updateType() {
4324
4437
  this.originType = this.rule.type;
4325
4438
  this.type = toCase(this.rule.type);
4439
+ this.trueType = this.$handle.getType(this.originType);
4326
4440
  },
4327
4441
  setParser: function setParser(parser) {
4328
4442
  this.parser = parser;
@@ -4411,7 +4525,6 @@
4411
4525
  computed: {},
4412
4526
  el: undef,
4413
4527
  $handle: undef,
4414
- $render: undef,
4415
4528
  $api: undef,
4416
4529
  vm: undef,
4417
4530
  vNode: undef,
@@ -4467,7 +4580,6 @@
4467
4580
  $render: handle.$render,
4468
4581
  $api: handle.api,
4469
4582
  vm: handle.vm,
4470
- trueType: handle.getType(this.originType),
4471
4583
  vNode: handle.$render.vNode,
4472
4584
  updated: false,
4473
4585
  cacheValue: this.rule.value
@@ -4475,6 +4587,7 @@
4475
4587
  !init && this.unwatch();
4476
4588
  this.watchTo();
4477
4589
  this.link();
4590
+ this.updateType();
4478
4591
  }
4479
4592
  });
4480
4593
 
@@ -4946,6 +5059,28 @@
4946
5059
  this.setValue(ctx, val, value);
4947
5060
  }
4948
5061
  },
5062
+ onUpdateValue: function onUpdateValue(ctx, data) {
5063
+ var _this = this;
5064
+
5065
+ this.deferSyncValue(function () {
5066
+ var group = ctx.getParentGroup();
5067
+ var subForm = group ? _this.subRuleData[group.id] : null;
5068
+ var subData = {};
5069
+ Object.keys(data || {}).forEach(function (k) {
5070
+ if (subForm && hasProperty(subForm, k)) {
5071
+ subData[k] = data[k];
5072
+ } else if (hasProperty(_this.api.form, k)) {
5073
+ _this.api.form[k] = data[k];
5074
+ } else if (_this.api.top !== _this.api && hasProperty(_this.api.top.form, k)) {
5075
+ _this.api.top.form[k] = data[k];
5076
+ }
5077
+ });
5078
+
5079
+ if (Object.keys(subData).length) {
5080
+ _this.api.setChildrenFormData(group.rule, subData);
5081
+ }
5082
+ });
5083
+ },
4949
5084
  onBaseInput: function onBaseInput(ctx, value) {
4950
5085
  this.setFormData(ctx, value);
4951
5086
  ctx.modelValue = value;
@@ -4977,11 +5112,11 @@
4977
5112
  return this.formData[ctx.id];
4978
5113
  },
4979
5114
  syncForm: function syncForm() {
4980
- var _this = this;
5115
+ var _this2 = this;
4981
5116
 
4982
5117
  var data = vue.reactive({});
4983
5118
  this.fields().reduce(function (initial, field) {
4984
- var ctx = _this.getCtx(field);
5119
+ var ctx = _this2.getCtx(field);
4985
5120
 
4986
5121
  initial[field] = vue.toRef(ctx.rule, 'value');
4987
5122
  return initial;
@@ -5030,11 +5165,11 @@
5030
5165
  return (is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;
5031
5166
  },
5032
5167
  refreshUpdate: function refreshUpdate(ctx, val, origin, field) {
5033
- var _this2 = this;
5168
+ var _this3 = this;
5034
5169
 
5035
5170
  if (is.Function(ctx.rule.update)) {
5036
5171
  var state = invoke(function () {
5037
- return ctx.rule.update(val, ctx.origin, _this2.api, {
5172
+ return ctx.rule.update(val, ctx.origin, _this3.api, {
5038
5173
  origin: origin || 'change',
5039
5174
  linkField: field
5040
5175
  });
@@ -5058,18 +5193,18 @@
5058
5193
  this.refreshUpdate(ctx, val, origin, field);
5059
5194
  },
5060
5195
  appendLink: function appendLink(ctx) {
5061
- var _this3 = this;
5196
+ var _this4 = this;
5062
5197
 
5063
5198
  var link = ctx.rule.link;
5064
5199
  is.trueArray(link) && link.forEach(function (field) {
5065
5200
  var fn = function fn() {
5066
- return _this3.refreshRule(ctx, ctx.rule.value, 'link', field);
5201
+ return _this4.refreshRule(ctx, ctx.rule.value, 'link', field);
5067
5202
  };
5068
5203
 
5069
- _this3.bus.$on('change-' + field, fn);
5204
+ _this4.bus.$on('change-' + field, fn);
5070
5205
 
5071
5206
  ctx.linkOn.push(function () {
5072
- return _this3.bus.$off('change-' + field, fn);
5207
+ return _this4.bus.$off('change-' + field, fn);
5073
5208
  });
5074
5209
  });
5075
5210
  },
@@ -5920,39 +6055,37 @@
5920
6055
  var loadData = {
5921
6056
  name: 'loadData',
5922
6057
  _fn: [],
5923
- created: function created(inject, rule, api) {
6058
+ mounted: function mounted(inject, rule, api) {
5924
6059
  this.deleted(inject);
5925
6060
  var attrs = toArray(inject.getValue());
5926
- var events = [];
6061
+ var unwatchs = [];
5927
6062
  attrs.forEach(function (attr) {
5928
- if (attr) {
5929
- var on = function on() {
5930
- if (attr.watch !== false) {
5931
- fc.bus.$off('p.loadData.' + attr.attr, on);
5932
- fc.bus.$once('p.loadData.' + attr.attr, on);
5933
- }
6063
+ if (attr && (attr.attr || attr.template)) {
6064
+ var unwatch = fc.watchLoadData(debounce(function (get) {
6065
+ var value;
5934
6066
 
5935
- var value = undefined;
5936
-
5937
- if (attr.attr) {
5938
- value = fc.loadData[attr.attr] || attr["default"];
6067
+ if (attr.template) {
6068
+ value = fc.$handle.loadStrVar(attr.template, get);
6069
+ } else {
6070
+ value = get(attr.attr, attr["default"]);
6071
+ }
5939
6072
 
5940
- if (attr.copy !== false) {
5941
- value = deepCopy(value);
5942
- }
6073
+ if (attr.copy !== false) {
6074
+ value = deepCopy(value);
5943
6075
  }
5944
6076
 
5945
6077
  deepSet(inject.getProp(), attr.to || 'options', value);
5946
6078
  api.sync(rule);
5947
- };
6079
+ }, attr.wait || 300));
5948
6080
 
5949
- events.push(function () {
5950
- return fc.bus.$off('p.loadData.' + attr.attr, on);
5951
- });
5952
- on();
6081
+ if (attr.watch !== false) {
6082
+ unwatchs.push(unwatch);
6083
+ } else {
6084
+ unwatch();
6085
+ }
5953
6086
  }
5954
6087
  });
5955
- this._fn[inject.id] = events;
6088
+ this._fn[inject.id] = unwatchs;
5956
6089
  },
5957
6090
  deleted: function deleted(inject) {
5958
6091
  if (this._fn[inject.id]) {
@@ -6015,6 +6148,7 @@
6015
6148
 
6016
6149
  function run(inject, rule, api) {
6017
6150
  var option = inject.value;
6151
+ fetchAttr.deleted(inject);
6018
6152
 
6019
6153
  if (is.Function(option)) {
6020
6154
  option = option(rule, api);
@@ -6069,76 +6203,85 @@
6069
6203
  }
6070
6204
  };
6071
6205
 
6072
- var config = _objectSpread2(_objectSpread2({
6073
- headers: {}
6074
- }, option), {}, {
6075
- onSuccess: function onSuccess(body, flag) {
6076
- if (check()) return;
6077
-
6078
- var fn = function fn(v) {
6079
- return flag ? v : hasProperty(v, 'data') ? v.data : v;
6080
- };
6206
+ fetchAttr._fn[inject.id] = fc.watchLoadData(debounce(function (get) {
6207
+ var _option = fc.$handle.loadFetchVar(deepCopy(option), get);
6081
6208
 
6082
- var parse = parseFn(option.parse);
6209
+ var config = _objectSpread2(_objectSpread2({
6210
+ headers: {}
6211
+ }, _option), {}, {
6212
+ onSuccess: function onSuccess(body, flag) {
6213
+ if (check()) return;
6083
6214
 
6084
- if (is.Function(parse)) {
6085
- fn = parse;
6086
- } else if (parse && is.String(parse)) {
6087
- fn = function fn(v) {
6088
- parse.split('.').forEach(function (k) {
6089
- if (v) {
6090
- v = v[k];
6091
- }
6092
- });
6093
- return v;
6215
+ var fn = function fn(v) {
6216
+ return flag ? v : hasProperty(v, 'data') ? v.data : v;
6094
6217
  };
6095
- }
6096
6218
 
6097
- set(fn(body, rule, api));
6098
- api.sync(rule);
6099
- },
6100
- onError: function onError(e) {
6101
- set(undefined);
6102
- if (check()) return;
6219
+ var parse = parseFn(_option.parse);
6103
6220
 
6104
- (_onError || function (e) {
6105
- return err(e.message || 'fetch fail ' + option.action);
6106
- })(e, rule, api);
6107
- }
6108
- });
6221
+ if (is.Function(parse)) {
6222
+ fn = parse;
6223
+ } else if (parse && is.String(parse)) {
6224
+ fn = function fn(v) {
6225
+ return deepGet(v, parse);
6226
+ };
6227
+ }
6109
6228
 
6110
- fc.$handle.beforeFetch(config, {
6111
- rule: rule,
6112
- api: api
6113
- }).then(function () {
6114
- if (is.Function(option.action)) {
6115
- option.action(rule, api).then(function (val) {
6116
- config.onSuccess(val, true);
6117
- })["catch"](function (e) {
6118
- config.onError(e);
6119
- });
6120
- return;
6121
- }
6229
+ set(fn(body, rule, api));
6230
+ api.sync(rule);
6231
+ },
6232
+ onError: function onError(e) {
6233
+ set(undefined);
6234
+ if (check()) return;
6122
6235
 
6123
- invoke(function () {
6124
- return fc.create.fetch(config, {
6125
- inject: inject,
6126
- rule: rule,
6127
- api: api
6236
+ (_onError || function (e) {
6237
+ return err(e.message || 'fetch fail ' + _option.action);
6238
+ })(e, rule, api);
6239
+ }
6240
+ });
6241
+
6242
+ fc.$handle.beforeFetch(config, {
6243
+ rule: rule,
6244
+ api: api
6245
+ }).then(function () {
6246
+ if (is.Function(_option.action)) {
6247
+ _option.action(rule, api).then(function (val) {
6248
+ config.onSuccess(val, true);
6249
+ })["catch"](function (e) {
6250
+ config.onError(e);
6251
+ });
6252
+
6253
+ return;
6254
+ }
6255
+
6256
+ invoke(function () {
6257
+ return fc.create.fetch(config, {
6258
+ inject: inject,
6259
+ rule: rule,
6260
+ api: api
6261
+ });
6128
6262
  });
6129
6263
  });
6130
- });
6264
+ }, option.wait || 1000));
6131
6265
  }
6132
6266
 
6133
- return {
6267
+ var fetchAttr = {
6134
6268
  name: 'fetch',
6135
- loaded: function loaded() {
6269
+ _fn: [],
6270
+ mounted: function mounted() {
6136
6271
  run.apply(void 0, arguments);
6137
6272
  },
6138
6273
  watch: function watch() {
6139
6274
  run.apply(void 0, arguments);
6275
+ },
6276
+ deleted: function deleted(inject) {
6277
+ if (this._fn[inject.id]) {
6278
+ this._fn[inject.id]();
6279
+ }
6280
+
6281
+ inject.clearProp();
6140
6282
  }
6141
6283
  };
6284
+ return fetchAttr;
6142
6285
  };
6143
6286
 
6144
6287
  var $provider = {
@@ -6166,6 +6309,71 @@
6166
6309
  }
6167
6310
  };
6168
6311
 
6312
+ function getCookie(name) {
6313
+ name = name + '=';
6314
+ var decodedCookie = decodeURIComponent(document.cookie);
6315
+ var cookieArray = decodedCookie.split(';');
6316
+
6317
+ for (var i = 0; i < cookieArray.length; i++) {
6318
+ var cookie = cookieArray[i];
6319
+
6320
+ while (cookie.charAt(0) === ' ') {
6321
+ cookie = cookie.substring(1);
6322
+ }
6323
+
6324
+ if (cookie.indexOf(name) === 0) {
6325
+ cookie = cookie.substring(name.length, cookie.length);
6326
+
6327
+ try {
6328
+ return JSON.parse(cookie);
6329
+ } catch (e) {
6330
+ return cookie;
6331
+ }
6332
+ }
6333
+ }
6334
+
6335
+ return null;
6336
+ }
6337
+
6338
+ function getLocalStorage(name) {
6339
+ var value = localStorage.getItem(name);
6340
+
6341
+ if (value) {
6342
+ try {
6343
+ return JSON.parse(value);
6344
+ } catch (e) {
6345
+ return value;
6346
+ }
6347
+ }
6348
+
6349
+ return null;
6350
+ }
6351
+
6352
+ function baseDriver(driver, name) {
6353
+ if (!name) {
6354
+ return null;
6355
+ }
6356
+
6357
+ var split = name.split('.');
6358
+ var value = driver(split.shift());
6359
+
6360
+ if (!split.length) {
6361
+ return value;
6362
+ }
6363
+
6364
+ if (value == null) {
6365
+ return null;
6366
+ }
6367
+
6368
+ return deepGet(value, split);
6369
+ }
6370
+ function cookieDriver(name) {
6371
+ return baseDriver(getCookie, name);
6372
+ }
6373
+ function localStorageDriver(name) {
6374
+ return baseDriver(getLocalStorage, name);
6375
+ }
6376
+
6169
6377
  function parseProp(name, id) {
6170
6378
  var prop;
6171
6379
 
@@ -6206,6 +6414,7 @@
6206
6414
  var directives = {};
6207
6415
  var modelFields = {};
6208
6416
  var useApps = [];
6417
+ var listener = [];
6209
6418
  var extendApiFn = [config.extendApi];
6210
6419
 
6211
6420
  var providers = _objectSpread2({}, $provider);
@@ -6217,6 +6426,7 @@
6217
6426
  var loadData = vue.reactive({});
6218
6427
  var CreateNode = CreateNodeFactory();
6219
6428
  var formulas = {};
6429
+ var isMobile = config.isMobile === true;
6220
6430
  exportAttrs(config.attrs || {});
6221
6431
 
6222
6432
  function getApi(name) {
@@ -6361,23 +6571,53 @@
6361
6571
  formulas[name] = fn;
6362
6572
  }
6363
6573
 
6364
- function _emitData(id) {
6574
+ function emitData(id) {
6365
6575
  Object.keys(instance).forEach(function (v) {
6366
6576
  var apis = Array.isArray(instance[v]) ? instance[v] : [instance[v]];
6367
6577
  apis.forEach(function (that) {
6368
- that.bus.$emit('p.loadData.' + id);
6578
+ that.bus.$emit('$loadData.' + id);
6369
6579
  });
6370
6580
  });
6371
6581
  }
6372
6582
 
6373
6583
  function setData(id, data) {
6374
6584
  loadData[id] = data;
6585
+ emitData(id);
6586
+ }
6587
+
6588
+ function setDataDriver(id, data) {
6589
+ var callback = function callback() {
6590
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
6591
+ args[_key] = arguments[_key];
6592
+ }
6593
+
6594
+ return invoke(function () {
6595
+ return data.apply(void 0, args);
6596
+ });
6597
+ };
6375
6598
 
6376
- _emitData(id);
6599
+ callback._driver = true;
6600
+ setData(id, callback);
6377
6601
  }
6378
6602
 
6379
6603
  function getData(id, def) {
6380
- return hasProperty(loadData, id) ? loadData[id] : def;
6604
+ var split = (id || '').split('.');
6605
+ id = split.shift();
6606
+ var field = split.join('.');
6607
+
6608
+ if (hasProperty(loadData, id)) {
6609
+ var val = loadData[id];
6610
+
6611
+ if (val && val._driver) {
6612
+ val = val(field);
6613
+ } else if (split.length) {
6614
+ val = deepGet(val, split);
6615
+ }
6616
+
6617
+ return val == null || val === '' ? def : val;
6618
+ } else {
6619
+ return def;
6620
+ }
6381
6621
  }
6382
6622
 
6383
6623
  function extendApi(fn) {
@@ -6386,8 +6626,14 @@
6386
6626
 
6387
6627
  function removeData(id) {
6388
6628
  delete loadData[id];
6629
+ emitData(id);
6630
+ }
6389
6631
 
6390
- _emitData(id);
6632
+ function on(name, callback) {
6633
+ listener.push({
6634
+ name: name,
6635
+ callback: callback
6636
+ });
6391
6637
  }
6392
6638
 
6393
6639
  function FormCreate(vm) {
@@ -6402,6 +6648,7 @@
6402
6648
  providers: providers,
6403
6649
  modelFields: modelFields,
6404
6650
  formulas: formulas,
6651
+ isMobile: isMobile,
6405
6652
  rules: vm.props.rule,
6406
6653
  name: vm.props.name || uniqueId(),
6407
6654
  inFor: vm.props.inFor,
@@ -6411,12 +6658,17 @@
6411
6658
  },
6412
6659
  setData: setData,
6413
6660
  getData: getData,
6661
+ emitData: emitData,
6414
6662
  loadData: loadData,
6415
6663
  CreateNode: CreateNode,
6416
6664
  bus: new Mitt(),
6417
6665
  unwatch: null,
6418
6666
  options: vue.ref({}),
6419
- extendApiFn: extendApiFn
6667
+ extendApiFn: extendApiFn,
6668
+ fetchCache: new WeakMap()
6669
+ });
6670
+ listener.forEach(function (item) {
6671
+ _this.bus.$on(item.name, item.callback);
6420
6672
  });
6421
6673
  vue.nextTick(function () {
6422
6674
  vue.watch(_this.options, function () {
@@ -6441,6 +6693,7 @@
6441
6693
  }
6442
6694
  }
6443
6695
 
6696
+ FormCreate.isMobile = isMobile;
6444
6697
  extend(FormCreate.prototype, {
6445
6698
  init: function init() {
6446
6699
  var _this2 = this;
@@ -6460,6 +6713,159 @@
6460
6713
  this.initOptions();
6461
6714
  this.$handle.init();
6462
6715
  },
6716
+ globalDataDriver: function globalDataDriver(id) {
6717
+ var _this3 = this;
6718
+
6719
+ var split = id.split('.');
6720
+ var key = split.shift();
6721
+ var option = this.options.value.globalData && this.options.value.globalData[key];
6722
+
6723
+ if (option) {
6724
+ if (option.type === 'static') {
6725
+ return deepGet(option.data, split);
6726
+ } else {
6727
+ var val;
6728
+ var res = this.fetchCache.get(option);
6729
+
6730
+ if (res) {
6731
+ if (res.status) {
6732
+ val = deepGet(res.data, split);
6733
+ }
6734
+
6735
+ if (!res.loading) {
6736
+ return val;
6737
+ }
6738
+
6739
+ res.loading = false;
6740
+ this.fetchCache.set(option, res);
6741
+ } else {
6742
+ this.fetchCache.set(option, {
6743
+ status: false
6744
+ });
6745
+ }
6746
+
6747
+ var reload = debounce(function () {
6748
+ unwatch();
6749
+
6750
+ var res = _this3.fetchCache.get(option);
6751
+
6752
+ if (_this3.options.value.globalData && Object.values(_this3.options.value.globalData).indexOf(option) !== -1) {
6753
+ if (res) {
6754
+ res.loading = true;
6755
+
6756
+ _this3.fetchCache.set(option, res);
6757
+ }
6758
+
6759
+ _this3.bus.$emit('$loadData.$globalData');
6760
+ } else {
6761
+ _this3.fetchCache["delete"](option);
6762
+ }
6763
+ }, option.wait || 1000);
6764
+
6765
+ var callback = function callback(get, change) {
6766
+ if (change) {
6767
+ reload();
6768
+ return;
6769
+ }
6770
+
6771
+ var options = _this3.$handle.loadFetchVar(copy$1(option), get);
6772
+
6773
+ _this3.$handle.api.fetch(options).then(function (res) {
6774
+ _this3.fetchCache.set(option, {
6775
+ status: true,
6776
+ data: res
6777
+ });
6778
+
6779
+ _this3.bus.$emit('$loadData.$globalData');
6780
+ });
6781
+ };
6782
+
6783
+ var unwatch = this.watchLoadData(callback);
6784
+ return val;
6785
+ }
6786
+ }
6787
+ },
6788
+ getLoadData: function getLoadData(id, def) {
6789
+ var val = null;
6790
+
6791
+ if (id != null) {
6792
+ var split = id.split('.');
6793
+ var key = split.shift();
6794
+
6795
+ if (key === '$form') {
6796
+ val = this.$handle.api.top.formData();
6797
+ } else if (key === '$subForm') {
6798
+ val = this.$handle.api.formData();
6799
+ } else if (key === '$options') {
6800
+ val = this.options.value;
6801
+ } else if (key === '$globalData') {
6802
+ val = this.globalDataDriver(split.join('.'));
6803
+ split = [];
6804
+ } else {
6805
+ val = getData(id, def);
6806
+ split = [];
6807
+ }
6808
+
6809
+ if (split.length) {
6810
+ val = deepGet(val, split);
6811
+ }
6812
+ }
6813
+
6814
+ console.log(id, val);
6815
+ return val == null || val === '' ? def : val;
6816
+ },
6817
+ watchLoadData: function watchLoadData(fn) {
6818
+ var _this4 = this;
6819
+
6820
+ var unwatch = {};
6821
+
6822
+ var run = function run(flag) {
6823
+ invoke(function () {
6824
+ fn(get, flag);
6825
+ });
6826
+ };
6827
+
6828
+ var get = function get(id, def) {
6829
+ if (unwatch[id]) {
6830
+ return unwatch[id].val;
6831
+ }
6832
+
6833
+ var val = _this4.getLoadData(id, def);
6834
+
6835
+ var key = id.split('.').shift();
6836
+
6837
+ var callback = function callback() {
6838
+ if (key !== id) {
6839
+ var temp = _this4.getLoadData(id, def);
6840
+
6841
+ if (JSON.stringify(temp) !== JSON.stringify(unwatch[id].val)) {
6842
+ unwatch[id].val = temp;
6843
+ run(true);
6844
+ }
6845
+ } else {
6846
+ run(true);
6847
+ }
6848
+ };
6849
+
6850
+ _this4.bus.$on('$loadData.' + key, callback);
6851
+
6852
+ unwatch[id] = {
6853
+ fn: function fn() {
6854
+ _this4.bus.$off('$loadData.' + key, callback);
6855
+ },
6856
+ val: val
6857
+ };
6858
+ return val;
6859
+ };
6860
+
6861
+ run(false);
6862
+ return function () {
6863
+ Object.keys(unwatch).forEach(function (k) {
6864
+ return unwatch[k].fn();
6865
+ });
6866
+ unwatch = {};
6867
+ };
6868
+ },
6463
6869
  isSub: function isSub() {
6464
6870
  return this.vm.setupState.parent && this.vm.props.extendOption;
6465
6871
  },
@@ -6498,6 +6904,7 @@
6498
6904
  updateOptions: function updateOptions(options) {
6499
6905
  this.options.value = this.mergeOptions(this.options.value, options);
6500
6906
  this.$handle.$manager.updateOptions(this.options.value);
6907
+ this.bus.$emit('$loadData.$options');
6501
6908
  },
6502
6909
  api: function api() {
6503
6910
  return this.$handle.api;
@@ -6509,6 +6916,8 @@
6509
6916
  this.$handle.mounted();
6510
6917
  },
6511
6918
  unmount: function unmount() {
6919
+ var _this5 = this;
6920
+
6512
6921
  if (this.name) {
6513
6922
  if (this.inFor) {
6514
6923
  var idx = instance[this.name].indexOf(this);
@@ -6518,14 +6927,17 @@
6518
6927
  }
6519
6928
  }
6520
6929
 
6930
+ listener.forEach(function (item) {
6931
+ _this5.bus.$off(item.name, item.callback);
6932
+ });
6521
6933
  this.unwatch && this.unwatch();
6522
6934
  this.$handle.reloadRule([]);
6523
6935
  },
6524
6936
  updated: function updated() {
6525
- var _this3 = this;
6937
+ var _this6 = this;
6526
6938
 
6527
6939
  this.$handle.bindNextTick(function () {
6528
- return _this3.bus.$emit('next-tick', _this3.$handle.api);
6940
+ return _this6.bus.$emit('next-tick', _this6.$handle.api);
6529
6941
  });
6530
6942
  }
6531
6943
  });
@@ -6536,6 +6948,7 @@
6536
6948
  ui: config.ui,
6537
6949
  extendApi: extendApi,
6538
6950
  getData: getData,
6951
+ setDataDriver: setDataDriver,
6539
6952
  setData: setData,
6540
6953
  removeData: removeData,
6541
6954
  maker: maker,
@@ -6557,17 +6970,20 @@
6557
6970
  parseJson: parseJson,
6558
6971
  toJson: toJson,
6559
6972
  useApp: useApp,
6560
- getApi: getApi
6973
+ getApi: getApi,
6974
+ on: on
6561
6975
  });
6562
6976
  }
6563
6977
 
6564
6978
  function useStatic(formCreate) {
6565
6979
  extend(formCreate, {
6566
6980
  create: create,
6981
+ isMobile: isMobile,
6567
6982
  install: function install(app, options) {
6568
6983
  globalConfig = _objectSpread2(_objectSpread2({}, globalConfig), options || {});
6569
- if (app._installedFormCreate === true) return;
6570
- app._installedFormCreate = true;
6984
+ var key = '_installedFormCreate_' + config.ui;
6985
+ if (app[key] === true) return;
6986
+ app[key] = true;
6571
6987
 
6572
6988
  var $formCreate = function $formCreate(rules) {
6573
6989
  var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -6576,7 +6992,8 @@
6576
6992
 
6577
6993
  useAttr($formCreate);
6578
6994
  app.config.globalProperties.$formCreate = $formCreate;
6579
- app.component('FormCreate', $form());
6995
+ var $component = $form();
6996
+ app.component($component.name, $component);
6580
6997
  useApps.forEach(function (v) {
6581
6998
  invoke(function () {
6582
6999
  return v(formCreate, app);
@@ -6588,6 +7005,8 @@
6588
7005
 
6589
7006
  useAttr(create);
6590
7007
  useStatic(create);
7008
+ setDataDriver('$cookie', cookieDriver);
7009
+ setDataDriver('$localStorage', localStorageDriver);
6591
7010
  CreateNode.use({
6592
7011
  fragment: 'fcFragment'
6593
7012
  });
@@ -6612,7 +7031,10 @@
6612
7031
  inherit.formulas && extend(formulas, inherit.formulas);
6613
7032
  }
6614
7033
 
6615
- return create;
7034
+ var FcComponent = $form();
7035
+ setPrototypeOf(FcComponent, create);
7036
+ FcComponent.util = create;
7037
+ return FcComponent;
6616
7038
  }
6617
7039
 
6618
7040
  var DEFAULT_FORMATS = {
@@ -7119,6 +7541,7 @@
7119
7541
  return this.$r({
7120
7542
  type: 'button',
7121
7543
  props: resetBtn,
7544
+ "class": '_fc-reset-btn',
7122
7545
  style: {
7123
7546
  width: resetBtn.width
7124
7547
  },
@@ -7144,6 +7567,7 @@
7144
7567
  return this.$r({
7145
7568
  type: 'button',
7146
7569
  props: submitBtn,
7570
+ "class": '_fc-submit-btn',
7147
7571
  style: {
7148
7572
  width: submitBtn.width
7149
7573
  },
@@ -7240,7 +7664,7 @@
7240
7664
  return maker;
7241
7665
  }
7242
7666
 
7243
- 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}.form-create.is-preview .el-form-item.is-required>.el-form-item__label-wrap>.el-form-item__label:before,.form-create.is-preview .el-form-item.is-required>.el-form-item__label:before{content:\"\"!important}";
7667
+ 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 .el-form-item.is-required>.el-form-item__label-wrap>.el-form-item__label:before,.form-create.is-preview .el-form-item.is-required>.el-form-item__label:before,.form-create.is-preview .fc-clock{display:none!important}.fc-wrap-left .el-form-item__label{justify-content:flex-start;justify-content:flex-end}.fc-wrap-top.el-form-item{display:block}.fc-wrap-top.el-form-item .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;text-align:left}.el-form--large .fc-wrap-top.el-form-item .el-form-item__label{line-height:22px;margin-bottom:12px}.el-form--default .fc-wrap-top.el-form-item .el-form-item__label{line-height:22px;margin-bottom:8px}.el-form--small .fc-wrap-top.el-form-item .el-form-item__label{line-height:20px;margin-bottom:4px}";
7244
7668
  styleInject(css_248z);
7245
7669
 
7246
7670
  function tidyBtnProp(btn, def) {
@@ -7493,7 +7917,7 @@
7493
7917
  function elmFormCreate() {
7494
7918
  return FormCreateFactory({
7495
7919
  ui: 'element-ui',
7496
- version: '3.1.35',
7920
+ version: '3.2.1',
7497
7921
  manager: manager,
7498
7922
  extendApi: extendApi,
7499
7923
  install: install,