@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.
@@ -209,9 +209,9 @@ function toArray(value) {
209
209
  return Array.isArray(value) ? value : [null, undefined, ''].indexOf(value) > -1 ? [] : [value];
210
210
  }
211
211
 
212
- var NAME$9 = 'fcCheckbox';
212
+ var NAME$8 = 'fcCheckbox';
213
213
  var Checkbox = defineComponent({
214
- name: NAME$9,
214
+ name: NAME$8,
215
215
  inheritAttrs: false,
216
216
  props: {
217
217
  formCreateInject: Object,
@@ -521,9 +521,9 @@ function _isSlot(s) {
521
521
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !isVNode(s);
522
522
  }
523
523
 
524
- var NAME$8 = 'fcFrame';
524
+ var NAME$7 = 'fcFrame';
525
525
  var Frame = defineComponent({
526
- name: NAME$8,
526
+ name: NAME$7,
527
527
  props: {
528
528
  type: {
529
529
  type: String,
@@ -1004,9 +1004,9 @@ var Frame = defineComponent({
1004
1004
  }
1005
1005
  });
1006
1006
 
1007
- var NAME$7 = 'fcRadio';
1007
+ var NAME$6 = 'fcRadio';
1008
1008
  var Radio = defineComponent({
1009
- name: NAME$7,
1009
+ name: NAME$6,
1010
1010
  inheritAttrs: false,
1011
1011
  props: {
1012
1012
  formCreateInject: Object,
@@ -1157,9 +1157,9 @@ function hasProperty(rule, k) {
1157
1157
  return {}.hasOwnProperty.call(rule, k);
1158
1158
  }
1159
1159
 
1160
- var NAME$6 = 'fcSelect';
1160
+ var NAME$5 = 'fcSelect';
1161
1161
  var Select = defineComponent({
1162
- name: NAME$6,
1162
+ name: NAME$5,
1163
1163
  inheritAttrs: false,
1164
1164
  props: {
1165
1165
  formCreateInject: Object,
@@ -1227,9 +1227,9 @@ var Select = defineComponent({
1227
1227
  }
1228
1228
  });
1229
1229
 
1230
- var NAME$5 = 'fcTree';
1230
+ var NAME$4 = 'fcTree';
1231
1231
  var Tree = defineComponent({
1232
- name: NAME$5,
1232
+ name: NAME$4,
1233
1233
  inheritAttrs: false,
1234
1234
  formCreateParser: {
1235
1235
  mergeProp: function mergeProp(ctx) {
@@ -1329,9 +1329,9 @@ function getFileName(file) {
1329
1329
  return ('' + file).split('/').pop();
1330
1330
  }
1331
1331
 
1332
- var NAME$4 = 'fcUpload';
1332
+ var NAME$3 = 'fcUpload';
1333
1333
  var Upload = defineComponent({
1334
- name: NAME$4,
1334
+ name: NAME$3,
1335
1335
  inheritAttrs: false,
1336
1336
  formCreateParser: {
1337
1337
  toFormValue: function toFormValue(value) {
@@ -1523,9 +1523,9 @@ function copy$1(obj) {
1523
1523
  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%}";
1524
1524
  styleInject(css_248z$1);
1525
1525
 
1526
- var NAME$3 = 'fcGroup';
1526
+ var NAME$2 = 'fcGroup';
1527
1527
  var Group = defineComponent({
1528
- name: NAME$3,
1528
+ name: NAME$2,
1529
1529
  props: {
1530
1530
  field: String,
1531
1531
  rule: Array,
@@ -1935,9 +1935,9 @@ var Group = defineComponent({
1935
1935
  }
1936
1936
  });
1937
1937
 
1938
- var NAME$2 = 'fcSubForm';
1938
+ var NAME$1 = 'fcSubForm';
1939
1939
  var Sub = defineComponent({
1940
- name: NAME$2,
1940
+ name: NAME$1,
1941
1941
  props: {
1942
1942
  rule: Array,
1943
1943
  options: {
@@ -2042,8 +2042,20 @@ script.render = render;
2042
2042
 
2043
2043
  var components = [Checkbox, Frame, Radio, Select, Tree, Upload, Group, Sub, script];
2044
2044
 
2045
- function toString(val) {
2046
- return val == null ? '' : _typeof(val) === 'object' ? JSON.stringify(val, null, 2) : String(val);
2045
+ function debounce(fn, wait) {
2046
+ var timeout = null;
2047
+ return function () {
2048
+ var _this = this;
2049
+
2050
+ for (var _len = arguments.length, arg = new Array(_len), _key = 0; _key < _len; _key++) {
2051
+ arg[_key] = arguments[_key];
2052
+ }
2053
+
2054
+ if (timeout !== null) clearTimeout(timeout);
2055
+ timeout = setTimeout(function () {
2056
+ return fn.call.apply(fn, [_this].concat(arg));
2057
+ }, wait);
2058
+ };
2047
2059
  }
2048
2060
 
2049
2061
  function toLine(name) {
@@ -2055,131 +2067,6 @@ function upper(str) {
2055
2067
  return str.replace(str[0], str[0].toLocaleUpperCase());
2056
2068
  }
2057
2069
 
2058
- function format(type, msg, rule) {
2059
- return "[form-create ".concat(type, "]: ").concat(msg) + (rule ? '\n\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule) : '');
2060
- }
2061
- function err(msg, rule) {
2062
- console.error(format('err', msg, rule));
2063
- }
2064
- function logError(e) {
2065
- err(e.toString());
2066
- console.error(e);
2067
- }
2068
-
2069
- var PREFIX = '[[FORM-CREATE-PREFIX-';
2070
- var SUFFIX = '-FORM-CREATE-SUFFIX]]';
2071
- var $T = '$FN:';
2072
- var $TX = '$FNX:';
2073
- var $ON = '$GLOBAL:';
2074
- var FUNCTION = 'function';
2075
- function toJson(obj, space) {
2076
- return JSON.stringify(deepExtend(Array.isArray(obj) ? [] : {}, obj, true), function (key, val) {
2077
- if (val && val._isVue === true) return undefined;
2078
-
2079
- if (_typeof(val) !== FUNCTION) {
2080
- return val;
2081
- }
2082
-
2083
- if (val.__json) {
2084
- return val.__json;
2085
- }
2086
-
2087
- if (val.__origin) val = val.__origin;
2088
- if (val.__emit) return undefined;
2089
- return PREFIX + val + SUFFIX;
2090
- }, space);
2091
- }
2092
-
2093
- function makeFn(fn) {
2094
- return new Function('return ' + fn)();
2095
- }
2096
-
2097
- function parseFn(fn, mode) {
2098
- if (fn && is.String(fn) && fn.length > 4) {
2099
- var v = fn.trim();
2100
- var flag = false;
2101
-
2102
- try {
2103
- if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {
2104
- v = v.replace(SUFFIX, '').replace(PREFIX, '');
2105
- flag = true;
2106
- } else if (v.indexOf($T) === 0) {
2107
- v = v.replace($T, '');
2108
- flag = true;
2109
- } else if (v.indexOf($ON) === 0) {
2110
- var name = v.replace($ON, '');
2111
-
2112
- v = function v() {
2113
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2114
- args[_key] = arguments[_key];
2115
- }
2116
-
2117
- var callback = args[0].api.getGlobalEvent(name);
2118
-
2119
- if (callback) {
2120
- return callback.call.apply(callback, [this].concat(args));
2121
- }
2122
-
2123
- return undefined;
2124
- };
2125
-
2126
- v.__json = fn;
2127
- v.__inject = true;
2128
- return v;
2129
- } else if (v.indexOf($TX) === 0) {
2130
- v = makeFn('function($inject){' + v.replace($TX, '') + '}');
2131
- v.__json = fn;
2132
- v.__inject = true;
2133
- return v;
2134
- } else if (!mode && v.indexOf(FUNCTION) === 0 && v !== FUNCTION) {
2135
- flag = true;
2136
- }
2137
-
2138
- if (!flag) return fn;
2139
- var val = makeFn(v.indexOf(FUNCTION) === -1 && v.indexOf('(') !== 0 ? FUNCTION + ' ' + v : v);
2140
- val.__json = fn;
2141
- return val;
2142
- } catch (e) {
2143
- err("\u89E3\u6790\u5931\u8D25:".concat(v, "\n\nerr: ").concat(e));
2144
- return undefined;
2145
- }
2146
- }
2147
-
2148
- return fn;
2149
- }
2150
- function parseJson(json, mode) {
2151
- return JSON.parse(json, function (k, v) {
2152
- if (is.Undef(v) || !v.indexOf) return v;
2153
- return parseFn(v, mode);
2154
- });
2155
- }
2156
-
2157
- var id$2 = 0;
2158
- function uniqueId() {
2159
- var num = 370 + ++id$2;
2160
- return 'F' + Math.random().toString(36).substr(3, 3) + Number("".concat(Date.now())).toString(36) + num.toString(36) + 'c';
2161
- }
2162
-
2163
- function deepSet(data, idx, val) {
2164
- var _data = data,
2165
- to;
2166
- (idx || '').split('.').forEach(function (v) {
2167
- if (to) {
2168
- if (!_data[to] || _typeof(_data[to]) != 'object') {
2169
- _data[to] = {};
2170
- }
2171
-
2172
- _data = _data[to];
2173
- }
2174
-
2175
- to = v;
2176
- });
2177
- _data[to] = val;
2178
- return _data;
2179
- }
2180
-
2181
- var NAME$1 = 'FormCreate';
2182
-
2183
2070
  var getRuleInject = function getRuleInject(vm, parent) {
2184
2071
  if (!vm || vm === parent) {
2185
2072
  return;
@@ -2196,7 +2083,7 @@ var getRuleInject = function getRuleInject(vm, parent) {
2196
2083
 
2197
2084
  function $FormCreate(FormCreate, components, directives) {
2198
2085
  return defineComponent({
2199
- name: NAME$1,
2086
+ name: 'FormCreate' + (FormCreate.isMobile ? 'Mobile' : ''),
2200
2087
  components: components,
2201
2088
  directives: directives,
2202
2089
  props: {
@@ -2324,10 +2211,24 @@ function $FormCreate(FormCreate, components, directives) {
2324
2211
  document.head.appendChild(styleEl);
2325
2212
  }
2326
2213
  });
2214
+ var emit$topForm = debounce(function () {
2215
+ fc.bus.$emit('$loadData.$topForm');
2216
+ }, 100);
2217
+ var emit$form = debounce(function () {
2218
+ fc.bus.$emit('$loadData.$form');
2219
+ }, 100);
2327
2220
  onMounted(function () {
2221
+ if (parent) {
2222
+ fapi.top.bus.$on('$loadData.$form', emit$topForm);
2223
+ }
2224
+
2328
2225
  fc.mounted();
2329
2226
  });
2330
2227
  onBeforeUnmount(function () {
2228
+ if (parent) {
2229
+ fapi.top.bus.$off('$loadData.$form', emit$topForm);
2230
+ }
2231
+
2331
2232
  styleEl && document.head.removeChild(styleEl);
2332
2233
  rmSubForm();
2333
2234
  data.destroyed = true;
@@ -2390,6 +2291,13 @@ function $FormCreate(FormCreate, components, directives) {
2390
2291
 
2391
2292
  data.updateValue = json;
2392
2293
  vm.emit('update:modelValue', value);
2294
+ nextTick(function () {
2295
+ emit$form();
2296
+
2297
+ if (!parent) {
2298
+ emit$topForm();
2299
+ }
2300
+ });
2393
2301
  }
2394
2302
  });
2395
2303
  },
@@ -2477,6 +2385,105 @@ function attrs() {
2477
2385
  return [].concat(keyAttrs, _toConsumableArray(normalMerge), _toConsumableArray(toArrayMerge), _toConsumableArray(functionalMerge), arrayAttrs, normalAttrs);
2478
2386
  }
2479
2387
 
2388
+ function format(type, msg, rule) {
2389
+ return "[form-create ".concat(type, "]: ").concat(msg) + (rule ? '\n\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule) : '');
2390
+ }
2391
+ function err(msg, rule) {
2392
+ console.error(format('err', msg, rule));
2393
+ }
2394
+ function logError(e) {
2395
+ err(e.toString());
2396
+ console.error(e);
2397
+ }
2398
+
2399
+ var PREFIX = '[[FORM-CREATE-PREFIX-';
2400
+ var SUFFIX = '-FORM-CREATE-SUFFIX]]';
2401
+ var $T = '$FN:';
2402
+ var $TX = '$FNX:';
2403
+ var $ON = '$GLOBAL:';
2404
+ var FUNCTION = 'function';
2405
+ function toJson(obj, space) {
2406
+ return JSON.stringify(deepExtend(Array.isArray(obj) ? [] : {}, obj, true), function (key, val) {
2407
+ if (val && val._isVue === true) return undefined;
2408
+
2409
+ if (_typeof(val) !== FUNCTION) {
2410
+ return val;
2411
+ }
2412
+
2413
+ if (val.__json) {
2414
+ return val.__json;
2415
+ }
2416
+
2417
+ if (val.__origin) val = val.__origin;
2418
+ if (val.__emit) return undefined;
2419
+ return PREFIX + val + SUFFIX;
2420
+ }, space);
2421
+ }
2422
+
2423
+ function makeFn(fn) {
2424
+ return new Function('return ' + fn)();
2425
+ }
2426
+
2427
+ function parseFn(fn, mode) {
2428
+ if (fn && is.String(fn) && fn.length > 4) {
2429
+ var v = fn.trim();
2430
+ var flag = false;
2431
+
2432
+ try {
2433
+ if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {
2434
+ v = v.replace(SUFFIX, '').replace(PREFIX, '');
2435
+ flag = true;
2436
+ } else if (v.indexOf($T) === 0) {
2437
+ v = v.replace($T, '');
2438
+ flag = true;
2439
+ } else if (v.indexOf($ON) === 0) {
2440
+ var name = v.replace($ON, '');
2441
+
2442
+ v = function v() {
2443
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2444
+ args[_key] = arguments[_key];
2445
+ }
2446
+
2447
+ var callback = args[0].api.getGlobalEvent(name);
2448
+
2449
+ if (callback) {
2450
+ return callback.call.apply(callback, [this].concat(args));
2451
+ }
2452
+
2453
+ return undefined;
2454
+ };
2455
+
2456
+ v.__json = fn;
2457
+ v.__inject = true;
2458
+ return v;
2459
+ } else if (v.indexOf($TX) === 0) {
2460
+ v = makeFn('function($inject){' + v.replace($TX, '') + '}');
2461
+ v.__json = fn;
2462
+ v.__inject = true;
2463
+ return v;
2464
+ } else if (!mode && v.indexOf(FUNCTION) === 0 && v !== FUNCTION) {
2465
+ flag = true;
2466
+ }
2467
+
2468
+ if (!flag) return fn;
2469
+ var val = makeFn(v.indexOf(FUNCTION) === -1 && v.indexOf('(') !== 0 ? FUNCTION + ' ' + v : v);
2470
+ val.__json = fn;
2471
+ return val;
2472
+ } catch (e) {
2473
+ err("\u89E3\u6790\u5931\u8D25:".concat(v, "\n\nerr: ").concat(e));
2474
+ return undefined;
2475
+ }
2476
+ }
2477
+
2478
+ return fn;
2479
+ }
2480
+ function parseJson(json, mode) {
2481
+ return JSON.parse(json, function (k, v) {
2482
+ if (is.Undef(v) || !v.indexOf) return v;
2483
+ return parseFn(v, mode);
2484
+ });
2485
+ }
2486
+
2480
2487
  function enumerable(value, writable) {
2481
2488
  return {
2482
2489
  value: value,
@@ -2694,7 +2701,28 @@ var condition = {
2694
2701
  pattern: function pattern(a, b) {
2695
2702
  return new RegExp(b, 'g').test(a);
2696
2703
  }
2697
- };
2704
+ };
2705
+ function deepGet(val, split) {
2706
+ (Array.isArray(split) ? split : (split || '').split('.')).forEach(function (k) {
2707
+ if (val != null) {
2708
+ val = val[k];
2709
+ }
2710
+ });
2711
+ return val;
2712
+ }
2713
+ function extractVar(str) {
2714
+ var regex = /{{\s*(.*?)\s*}}/g;
2715
+ var match;
2716
+ var matches = {};
2717
+
2718
+ while ((match = regex.exec(str)) !== null) {
2719
+ if (match[1]) {
2720
+ matches[match[1]] = true;
2721
+ }
2722
+ }
2723
+
2724
+ return Object.keys(matches);
2725
+ }
2698
2726
 
2699
2727
  function baseRule() {
2700
2728
  return {
@@ -2834,7 +2862,7 @@ function fetch$1(option) {
2834
2862
 
2835
2863
  var headers = option.headers || {};
2836
2864
  Object.keys(headers).forEach(function (item) {
2837
- if (headers[item] !== null) {
2865
+ if (headers[item] != null) {
2838
2866
  xhr.setRequestHeader(item, headers[item]);
2839
2867
  }
2840
2868
  });
@@ -2854,12 +2882,7 @@ function asyncFetch(config) {
2854
2882
  fn = parse;
2855
2883
  } else if (parse && is.String(parse)) {
2856
2884
  fn = function fn(v) {
2857
- parse.split('.').forEach(function (k) {
2858
- if (v) {
2859
- v = v[k];
2860
- }
2861
- });
2862
- return v;
2885
+ return deepGet(v, parse);
2863
2886
  };
2864
2887
  }
2865
2888
 
@@ -3324,6 +3347,18 @@ function Api(h) {
3324
3347
  findRules(ctx ? ctx.loadChildrenPending() : rule.children);
3325
3348
  return rules;
3326
3349
  },
3350
+ getParentSubRule: function getParentSubRule(id) {
3351
+ var flag = _typeof(id) === 'object';
3352
+ var ctx = flag ? byCtx(id) : h.getCtx(id);
3353
+
3354
+ if (ctx) {
3355
+ var group = ctx.getParentGroup();
3356
+
3357
+ if (group) {
3358
+ return group.rule;
3359
+ }
3360
+ }
3361
+ },
3327
3362
  getChildrenFormData: function getChildrenFormData(id) {
3328
3363
  var rules = api.getChildrenRuleList(id);
3329
3364
  return rules.reduce(function (formData, rule) {
@@ -3333,12 +3368,14 @@ function Api(h) {
3333
3368
  },
3334
3369
  setChildrenFormData: function setChildrenFormData(id, formData, cover) {
3335
3370
  var rules = api.getChildrenRuleList(id);
3336
- rules.forEach(function (rule) {
3337
- if (hasProperty(formData, rule.field)) {
3338
- rule.value = formData[rule.field];
3339
- } else if (cover) {
3340
- rule.value = undefined;
3341
- }
3371
+ h.deferSyncValue(function () {
3372
+ rules.forEach(function (rule) {
3373
+ if (hasProperty(formData, rule.field)) {
3374
+ rule.value = formData[rule.field];
3375
+ } else if (cover) {
3376
+ rule.value = undefined;
3377
+ }
3378
+ });
3342
3379
  });
3343
3380
  },
3344
3381
  getGlobalEvent: function getGlobalEvent(name) {
@@ -3400,7 +3437,7 @@ function Api(h) {
3400
3437
  });
3401
3438
  },
3402
3439
  getData: function getData(id, def) {
3403
- return h.fc.getData(id, def);
3440
+ return h.fc.getLoadData(id, def);
3404
3441
  },
3405
3442
  setData: function setData(id, data) {
3406
3443
  return h.fc.setData(id, data);
@@ -3483,6 +3520,34 @@ function lower(str) {
3483
3520
  return str.replace(str[0], str[0].toLowerCase());
3484
3521
  }
3485
3522
 
3523
+ function toString(val) {
3524
+ return val == null ? '' : _typeof(val) === 'object' ? JSON.stringify(val, null, 2) : String(val);
3525
+ }
3526
+
3527
+ var id$2 = 0;
3528
+ function uniqueId() {
3529
+ var num = 370 + ++id$2;
3530
+ return 'F' + Math.random().toString(36).substr(3, 3) + Number("".concat(Date.now())).toString(36) + num.toString(36) + 'c';
3531
+ }
3532
+
3533
+ function deepSet(data, idx, val) {
3534
+ var _data = data,
3535
+ to;
3536
+ (idx || '').split('.').forEach(function (v) {
3537
+ if (to) {
3538
+ if (!_data[to] || _typeof(_data[to]) != 'object') {
3539
+ _data[to] = {};
3540
+ }
3541
+
3542
+ _data = _data[to];
3543
+ }
3544
+
3545
+ to = v;
3546
+ });
3547
+ _data[to] = val;
3548
+ return _data;
3549
+ }
3550
+
3486
3551
  function useRender$1(Render) {
3487
3552
  extend(Render.prototype, {
3488
3553
  initRender: function initRender() {
@@ -3794,6 +3859,9 @@ function useRender$1(Render) {
3794
3859
 
3795
3860
  _this7.onMounted(ctx, vn.el);
3796
3861
  },
3862
+ 'fc.updateValue': function fcUpdateValue(data) {
3863
+ _this7.$handle.onUpdateValue(ctx, data);
3864
+ },
3797
3865
  'fc.el': function fcEl(el) {
3798
3866
  ctx.exportEl = el;
3799
3867
 
@@ -4064,6 +4132,52 @@ function useInject(Handler) {
4064
4132
  fn.__origin = _fn;
4065
4133
  fn.__json = _fn.__json;
4066
4134
  return fn;
4135
+ },
4136
+ loadStrVar: function loadStrVar(str, get) {
4137
+ var _this3 = this;
4138
+
4139
+ if (str && typeof str === 'string' && str.indexOf('{{') > -1 && str.indexOf('}}') > -1) {
4140
+ var vars = extractVar(str);
4141
+ vars.forEach(function (v) {
4142
+ var split = v.split('||');
4143
+ var field = split[0].trim();
4144
+
4145
+ if (field) {
4146
+ var def = (split[1] || '').trim();
4147
+ var val = get ? get(field, def) : _this3.fc.getLoadData(field, def);
4148
+ str = str.replaceAll("{{".concat(v, "}}"), val == null ? '' : val);
4149
+ }
4150
+ });
4151
+ }
4152
+
4153
+ return str;
4154
+ },
4155
+ loadFetchVar: function loadFetchVar(options, get) {
4156
+ var _this4 = this;
4157
+
4158
+ var loadVal = function loadVal(str) {
4159
+ return _this4.loadStrVar(str, get);
4160
+ };
4161
+
4162
+ options.action = loadVal(options.action);
4163
+
4164
+ if (options.headers) {
4165
+ var _headers = {};
4166
+ Object.keys(options.headers).forEach(function (k) {
4167
+ _headers[loadVal(k)] = loadVal(options.headers[k]);
4168
+ });
4169
+ options.headers = _headers;
4170
+ }
4171
+
4172
+ if (options.data) {
4173
+ var _data = {};
4174
+ Object.keys(options.data).forEach(function (k) {
4175
+ _data[loadVal(k)] = loadVal(options.data[k]);
4176
+ });
4177
+ options.data = _data;
4178
+ }
4179
+
4180
+ return options;
4067
4181
  }
4068
4182
  });
4069
4183
  }
@@ -4183,7 +4297,6 @@ function RuleContext(handle, rule, defaultValue) {
4183
4297
  defaultValue: isInput ? deepCopy(defaultValue) : undefined,
4184
4298
  field: rule.field || undefined
4185
4299
  });
4186
- this.updateType();
4187
4300
  this.updateKey();
4188
4301
  bind(this);
4189
4302
  this.update(handle, true);
@@ -4319,6 +4432,7 @@ extend(RuleContext.prototype, {
4319
4432
  updateType: function updateType() {
4320
4433
  this.originType = this.rule.type;
4321
4434
  this.type = toCase(this.rule.type);
4435
+ this.trueType = this.$handle.getType(this.originType);
4322
4436
  },
4323
4437
  setParser: function setParser(parser) {
4324
4438
  this.parser = parser;
@@ -4407,7 +4521,6 @@ extend(RuleContext.prototype, {
4407
4521
  computed: {},
4408
4522
  el: undef,
4409
4523
  $handle: undef,
4410
- $render: undef,
4411
4524
  $api: undef,
4412
4525
  vm: undef,
4413
4526
  vNode: undef,
@@ -4463,7 +4576,6 @@ extend(RuleContext.prototype, {
4463
4576
  $render: handle.$render,
4464
4577
  $api: handle.api,
4465
4578
  vm: handle.vm,
4466
- trueType: handle.getType(this.originType),
4467
4579
  vNode: handle.$render.vNode,
4468
4580
  updated: false,
4469
4581
  cacheValue: this.rule.value
@@ -4471,6 +4583,7 @@ extend(RuleContext.prototype, {
4471
4583
  !init && this.unwatch();
4472
4584
  this.watchTo();
4473
4585
  this.link();
4586
+ this.updateType();
4474
4587
  }
4475
4588
  });
4476
4589
 
@@ -4942,6 +5055,28 @@ function useInput(Handler) {
4942
5055
  this.setValue(ctx, val, value);
4943
5056
  }
4944
5057
  },
5058
+ onUpdateValue: function onUpdateValue(ctx, data) {
5059
+ var _this = this;
5060
+
5061
+ this.deferSyncValue(function () {
5062
+ var group = ctx.getParentGroup();
5063
+ var subForm = group ? _this.subRuleData[group.id] : null;
5064
+ var subData = {};
5065
+ Object.keys(data || {}).forEach(function (k) {
5066
+ if (subForm && hasProperty(subForm, k)) {
5067
+ subData[k] = data[k];
5068
+ } else if (hasProperty(_this.api.form, k)) {
5069
+ _this.api.form[k] = data[k];
5070
+ } else if (_this.api.top !== _this.api && hasProperty(_this.api.top.form, k)) {
5071
+ _this.api.top.form[k] = data[k];
5072
+ }
5073
+ });
5074
+
5075
+ if (Object.keys(subData).length) {
5076
+ _this.api.setChildrenFormData(group.rule, subData);
5077
+ }
5078
+ });
5079
+ },
4945
5080
  onBaseInput: function onBaseInput(ctx, value) {
4946
5081
  this.setFormData(ctx, value);
4947
5082
  ctx.modelValue = value;
@@ -4973,11 +5108,11 @@ function useInput(Handler) {
4973
5108
  return this.formData[ctx.id];
4974
5109
  },
4975
5110
  syncForm: function syncForm() {
4976
- var _this = this;
5111
+ var _this2 = this;
4977
5112
 
4978
5113
  var data = reactive({});
4979
5114
  this.fields().reduce(function (initial, field) {
4980
- var ctx = _this.getCtx(field);
5115
+ var ctx = _this2.getCtx(field);
4981
5116
 
4982
5117
  initial[field] = toRef(ctx.rule, 'value');
4983
5118
  return initial;
@@ -5026,11 +5161,11 @@ function useInput(Handler) {
5026
5161
  return (is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;
5027
5162
  },
5028
5163
  refreshUpdate: function refreshUpdate(ctx, val, origin, field) {
5029
- var _this2 = this;
5164
+ var _this3 = this;
5030
5165
 
5031
5166
  if (is.Function(ctx.rule.update)) {
5032
5167
  var state = invoke(function () {
5033
- return ctx.rule.update(val, ctx.origin, _this2.api, {
5168
+ return ctx.rule.update(val, ctx.origin, _this3.api, {
5034
5169
  origin: origin || 'change',
5035
5170
  linkField: field
5036
5171
  });
@@ -5054,18 +5189,18 @@ function useInput(Handler) {
5054
5189
  this.refreshUpdate(ctx, val, origin, field);
5055
5190
  },
5056
5191
  appendLink: function appendLink(ctx) {
5057
- var _this3 = this;
5192
+ var _this4 = this;
5058
5193
 
5059
5194
  var link = ctx.rule.link;
5060
5195
  is.trueArray(link) && link.forEach(function (field) {
5061
5196
  var fn = function fn() {
5062
- return _this3.refreshRule(ctx, ctx.rule.value, 'link', field);
5197
+ return _this4.refreshRule(ctx, ctx.rule.value, 'link', field);
5063
5198
  };
5064
5199
 
5065
- _this3.bus.$on('change-' + field, fn);
5200
+ _this4.bus.$on('change-' + field, fn);
5066
5201
 
5067
5202
  ctx.linkOn.push(function () {
5068
- return _this3.bus.$off('change-' + field, fn);
5203
+ return _this4.bus.$off('change-' + field, fn);
5069
5204
  });
5070
5205
  });
5071
5206
  },
@@ -5916,39 +6051,37 @@ var loadData = function loadData(fc) {
5916
6051
  var loadData = {
5917
6052
  name: 'loadData',
5918
6053
  _fn: [],
5919
- created: function created(inject, rule, api) {
6054
+ mounted: function mounted(inject, rule, api) {
5920
6055
  this.deleted(inject);
5921
6056
  var attrs = toArray(inject.getValue());
5922
- var events = [];
6057
+ var unwatchs = [];
5923
6058
  attrs.forEach(function (attr) {
5924
- if (attr) {
5925
- var on = function on() {
5926
- if (attr.watch !== false) {
5927
- fc.bus.$off('p.loadData.' + attr.attr, on);
5928
- fc.bus.$once('p.loadData.' + attr.attr, on);
5929
- }
6059
+ if (attr && (attr.attr || attr.template)) {
6060
+ var unwatch = fc.watchLoadData(debounce(function (get) {
6061
+ var value;
5930
6062
 
5931
- var value = undefined;
5932
-
5933
- if (attr.attr) {
5934
- value = fc.loadData[attr.attr] || attr["default"];
6063
+ if (attr.template) {
6064
+ value = fc.$handle.loadStrVar(attr.template, get);
6065
+ } else {
6066
+ value = get(attr.attr, attr["default"]);
6067
+ }
5935
6068
 
5936
- if (attr.copy !== false) {
5937
- value = deepCopy(value);
5938
- }
6069
+ if (attr.copy !== false) {
6070
+ value = deepCopy(value);
5939
6071
  }
5940
6072
 
5941
6073
  deepSet(inject.getProp(), attr.to || 'options', value);
5942
6074
  api.sync(rule);
5943
- };
6075
+ }, attr.wait || 300));
5944
6076
 
5945
- events.push(function () {
5946
- return fc.bus.$off('p.loadData.' + attr.attr, on);
5947
- });
5948
- on();
6077
+ if (attr.watch !== false) {
6078
+ unwatchs.push(unwatch);
6079
+ } else {
6080
+ unwatch();
6081
+ }
5949
6082
  }
5950
6083
  });
5951
- this._fn[inject.id] = events;
6084
+ this._fn[inject.id] = unwatchs;
5952
6085
  },
5953
6086
  deleted: function deleted(inject) {
5954
6087
  if (this._fn[inject.id]) {
@@ -6011,6 +6144,7 @@ var fetch = function fetch(fc) {
6011
6144
 
6012
6145
  function run(inject, rule, api) {
6013
6146
  var option = inject.value;
6147
+ fetchAttr.deleted(inject);
6014
6148
 
6015
6149
  if (is.Function(option)) {
6016
6150
  option = option(rule, api);
@@ -6065,76 +6199,85 @@ var fetch = function fetch(fc) {
6065
6199
  }
6066
6200
  };
6067
6201
 
6068
- var config = _objectSpread2(_objectSpread2({
6069
- headers: {}
6070
- }, option), {}, {
6071
- onSuccess: function onSuccess(body, flag) {
6072
- if (check()) return;
6073
-
6074
- var fn = function fn(v) {
6075
- return flag ? v : hasProperty(v, 'data') ? v.data : v;
6076
- };
6202
+ fetchAttr._fn[inject.id] = fc.watchLoadData(debounce(function (get) {
6203
+ var _option = fc.$handle.loadFetchVar(deepCopy(option), get);
6077
6204
 
6078
- var parse = parseFn(option.parse);
6205
+ var config = _objectSpread2(_objectSpread2({
6206
+ headers: {}
6207
+ }, _option), {}, {
6208
+ onSuccess: function onSuccess(body, flag) {
6209
+ if (check()) return;
6079
6210
 
6080
- if (is.Function(parse)) {
6081
- fn = parse;
6082
- } else if (parse && is.String(parse)) {
6083
- fn = function fn(v) {
6084
- parse.split('.').forEach(function (k) {
6085
- if (v) {
6086
- v = v[k];
6087
- }
6088
- });
6089
- return v;
6211
+ var fn = function fn(v) {
6212
+ return flag ? v : hasProperty(v, 'data') ? v.data : v;
6090
6213
  };
6091
- }
6092
6214
 
6093
- set(fn(body, rule, api));
6094
- api.sync(rule);
6095
- },
6096
- onError: function onError(e) {
6097
- set(undefined);
6098
- if (check()) return;
6215
+ var parse = parseFn(_option.parse);
6099
6216
 
6100
- (_onError || function (e) {
6101
- return err(e.message || 'fetch fail ' + option.action);
6102
- })(e, rule, api);
6103
- }
6104
- });
6217
+ if (is.Function(parse)) {
6218
+ fn = parse;
6219
+ } else if (parse && is.String(parse)) {
6220
+ fn = function fn(v) {
6221
+ return deepGet(v, parse);
6222
+ };
6223
+ }
6105
6224
 
6106
- fc.$handle.beforeFetch(config, {
6107
- rule: rule,
6108
- api: api
6109
- }).then(function () {
6110
- if (is.Function(option.action)) {
6111
- option.action(rule, api).then(function (val) {
6112
- config.onSuccess(val, true);
6113
- })["catch"](function (e) {
6114
- config.onError(e);
6115
- });
6116
- return;
6117
- }
6225
+ set(fn(body, rule, api));
6226
+ api.sync(rule);
6227
+ },
6228
+ onError: function onError(e) {
6229
+ set(undefined);
6230
+ if (check()) return;
6118
6231
 
6119
- invoke(function () {
6120
- return fc.create.fetch(config, {
6121
- inject: inject,
6122
- rule: rule,
6123
- api: api
6232
+ (_onError || function (e) {
6233
+ return err(e.message || 'fetch fail ' + _option.action);
6234
+ })(e, rule, api);
6235
+ }
6236
+ });
6237
+
6238
+ fc.$handle.beforeFetch(config, {
6239
+ rule: rule,
6240
+ api: api
6241
+ }).then(function () {
6242
+ if (is.Function(_option.action)) {
6243
+ _option.action(rule, api).then(function (val) {
6244
+ config.onSuccess(val, true);
6245
+ })["catch"](function (e) {
6246
+ config.onError(e);
6247
+ });
6248
+
6249
+ return;
6250
+ }
6251
+
6252
+ invoke(function () {
6253
+ return fc.create.fetch(config, {
6254
+ inject: inject,
6255
+ rule: rule,
6256
+ api: api
6257
+ });
6124
6258
  });
6125
6259
  });
6126
- });
6260
+ }, option.wait || 1000));
6127
6261
  }
6128
6262
 
6129
- return {
6263
+ var fetchAttr = {
6130
6264
  name: 'fetch',
6131
- loaded: function loaded() {
6265
+ _fn: [],
6266
+ mounted: function mounted() {
6132
6267
  run.apply(void 0, arguments);
6133
6268
  },
6134
6269
  watch: function watch() {
6135
6270
  run.apply(void 0, arguments);
6271
+ },
6272
+ deleted: function deleted(inject) {
6273
+ if (this._fn[inject.id]) {
6274
+ this._fn[inject.id]();
6275
+ }
6276
+
6277
+ inject.clearProp();
6136
6278
  }
6137
6279
  };
6280
+ return fetchAttr;
6138
6281
  };
6139
6282
 
6140
6283
  var $provider = {
@@ -6162,6 +6305,71 @@ var html = {
6162
6305
  }
6163
6306
  };
6164
6307
 
6308
+ function getCookie(name) {
6309
+ name = name + '=';
6310
+ var decodedCookie = decodeURIComponent(document.cookie);
6311
+ var cookieArray = decodedCookie.split(';');
6312
+
6313
+ for (var i = 0; i < cookieArray.length; i++) {
6314
+ var cookie = cookieArray[i];
6315
+
6316
+ while (cookie.charAt(0) === ' ') {
6317
+ cookie = cookie.substring(1);
6318
+ }
6319
+
6320
+ if (cookie.indexOf(name) === 0) {
6321
+ cookie = cookie.substring(name.length, cookie.length);
6322
+
6323
+ try {
6324
+ return JSON.parse(cookie);
6325
+ } catch (e) {
6326
+ return cookie;
6327
+ }
6328
+ }
6329
+ }
6330
+
6331
+ return null;
6332
+ }
6333
+
6334
+ function getLocalStorage(name) {
6335
+ var value = localStorage.getItem(name);
6336
+
6337
+ if (value) {
6338
+ try {
6339
+ return JSON.parse(value);
6340
+ } catch (e) {
6341
+ return value;
6342
+ }
6343
+ }
6344
+
6345
+ return null;
6346
+ }
6347
+
6348
+ function baseDriver(driver, name) {
6349
+ if (!name) {
6350
+ return null;
6351
+ }
6352
+
6353
+ var split = name.split('.');
6354
+ var value = driver(split.shift());
6355
+
6356
+ if (!split.length) {
6357
+ return value;
6358
+ }
6359
+
6360
+ if (value == null) {
6361
+ return null;
6362
+ }
6363
+
6364
+ return deepGet(value, split);
6365
+ }
6366
+ function cookieDriver(name) {
6367
+ return baseDriver(getCookie, name);
6368
+ }
6369
+ function localStorageDriver(name) {
6370
+ return baseDriver(getLocalStorage, name);
6371
+ }
6372
+
6165
6373
  function parseProp(name, id) {
6166
6374
  var prop;
6167
6375
 
@@ -6202,6 +6410,7 @@ function FormCreateFactory(config) {
6202
6410
  var directives = {};
6203
6411
  var modelFields = {};
6204
6412
  var useApps = [];
6413
+ var listener = [];
6205
6414
  var extendApiFn = [config.extendApi];
6206
6415
 
6207
6416
  var providers = _objectSpread2({}, $provider);
@@ -6213,6 +6422,7 @@ function FormCreateFactory(config) {
6213
6422
  var loadData = reactive({});
6214
6423
  var CreateNode = CreateNodeFactory();
6215
6424
  var formulas = {};
6425
+ var isMobile = config.isMobile === true;
6216
6426
  exportAttrs(config.attrs || {});
6217
6427
 
6218
6428
  function getApi(name) {
@@ -6357,23 +6567,53 @@ function FormCreateFactory(config) {
6357
6567
  formulas[name] = fn;
6358
6568
  }
6359
6569
 
6360
- function _emitData(id) {
6570
+ function emitData(id) {
6361
6571
  Object.keys(instance).forEach(function (v) {
6362
6572
  var apis = Array.isArray(instance[v]) ? instance[v] : [instance[v]];
6363
6573
  apis.forEach(function (that) {
6364
- that.bus.$emit('p.loadData.' + id);
6574
+ that.bus.$emit('$loadData.' + id);
6365
6575
  });
6366
6576
  });
6367
6577
  }
6368
6578
 
6369
6579
  function setData(id, data) {
6370
6580
  loadData[id] = data;
6581
+ emitData(id);
6582
+ }
6583
+
6584
+ function setDataDriver(id, data) {
6585
+ var callback = function callback() {
6586
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
6587
+ args[_key] = arguments[_key];
6588
+ }
6589
+
6590
+ return invoke(function () {
6591
+ return data.apply(void 0, args);
6592
+ });
6593
+ };
6371
6594
 
6372
- _emitData(id);
6595
+ callback._driver = true;
6596
+ setData(id, callback);
6373
6597
  }
6374
6598
 
6375
6599
  function getData(id, def) {
6376
- return hasProperty(loadData, id) ? loadData[id] : def;
6600
+ var split = (id || '').split('.');
6601
+ id = split.shift();
6602
+ var field = split.join('.');
6603
+
6604
+ if (hasProperty(loadData, id)) {
6605
+ var val = loadData[id];
6606
+
6607
+ if (val && val._driver) {
6608
+ val = val(field);
6609
+ } else if (split.length) {
6610
+ val = deepGet(val, split);
6611
+ }
6612
+
6613
+ return val == null || val === '' ? def : val;
6614
+ } else {
6615
+ return def;
6616
+ }
6377
6617
  }
6378
6618
 
6379
6619
  function extendApi(fn) {
@@ -6382,8 +6622,14 @@ function FormCreateFactory(config) {
6382
6622
 
6383
6623
  function removeData(id) {
6384
6624
  delete loadData[id];
6625
+ emitData(id);
6626
+ }
6385
6627
 
6386
- _emitData(id);
6628
+ function on(name, callback) {
6629
+ listener.push({
6630
+ name: name,
6631
+ callback: callback
6632
+ });
6387
6633
  }
6388
6634
 
6389
6635
  function FormCreate(vm) {
@@ -6398,6 +6644,7 @@ function FormCreateFactory(config) {
6398
6644
  providers: providers,
6399
6645
  modelFields: modelFields,
6400
6646
  formulas: formulas,
6647
+ isMobile: isMobile,
6401
6648
  rules: vm.props.rule,
6402
6649
  name: vm.props.name || uniqueId(),
6403
6650
  inFor: vm.props.inFor,
@@ -6407,12 +6654,17 @@ function FormCreateFactory(config) {
6407
6654
  },
6408
6655
  setData: setData,
6409
6656
  getData: getData,
6657
+ emitData: emitData,
6410
6658
  loadData: loadData,
6411
6659
  CreateNode: CreateNode,
6412
6660
  bus: new Mitt(),
6413
6661
  unwatch: null,
6414
6662
  options: ref({}),
6415
- extendApiFn: extendApiFn
6663
+ extendApiFn: extendApiFn,
6664
+ fetchCache: new WeakMap()
6665
+ });
6666
+ listener.forEach(function (item) {
6667
+ _this.bus.$on(item.name, item.callback);
6416
6668
  });
6417
6669
  nextTick(function () {
6418
6670
  watch(_this.options, function () {
@@ -6437,6 +6689,7 @@ function FormCreateFactory(config) {
6437
6689
  }
6438
6690
  }
6439
6691
 
6692
+ FormCreate.isMobile = isMobile;
6440
6693
  extend(FormCreate.prototype, {
6441
6694
  init: function init() {
6442
6695
  var _this2 = this;
@@ -6456,6 +6709,159 @@ function FormCreateFactory(config) {
6456
6709
  this.initOptions();
6457
6710
  this.$handle.init();
6458
6711
  },
6712
+ globalDataDriver: function globalDataDriver(id) {
6713
+ var _this3 = this;
6714
+
6715
+ var split = id.split('.');
6716
+ var key = split.shift();
6717
+ var option = this.options.value.globalData && this.options.value.globalData[key];
6718
+
6719
+ if (option) {
6720
+ if (option.type === 'static') {
6721
+ return deepGet(option.data, split);
6722
+ } else {
6723
+ var val;
6724
+ var res = this.fetchCache.get(option);
6725
+
6726
+ if (res) {
6727
+ if (res.status) {
6728
+ val = deepGet(res.data, split);
6729
+ }
6730
+
6731
+ if (!res.loading) {
6732
+ return val;
6733
+ }
6734
+
6735
+ res.loading = false;
6736
+ this.fetchCache.set(option, res);
6737
+ } else {
6738
+ this.fetchCache.set(option, {
6739
+ status: false
6740
+ });
6741
+ }
6742
+
6743
+ var reload = debounce(function () {
6744
+ unwatch();
6745
+
6746
+ var res = _this3.fetchCache.get(option);
6747
+
6748
+ if (_this3.options.value.globalData && Object.values(_this3.options.value.globalData).indexOf(option) !== -1) {
6749
+ if (res) {
6750
+ res.loading = true;
6751
+
6752
+ _this3.fetchCache.set(option, res);
6753
+ }
6754
+
6755
+ _this3.bus.$emit('$loadData.$globalData');
6756
+ } else {
6757
+ _this3.fetchCache["delete"](option);
6758
+ }
6759
+ }, option.wait || 1000);
6760
+
6761
+ var callback = function callback(get, change) {
6762
+ if (change) {
6763
+ reload();
6764
+ return;
6765
+ }
6766
+
6767
+ var options = _this3.$handle.loadFetchVar(copy$1(option), get);
6768
+
6769
+ _this3.$handle.api.fetch(options).then(function (res) {
6770
+ _this3.fetchCache.set(option, {
6771
+ status: true,
6772
+ data: res
6773
+ });
6774
+
6775
+ _this3.bus.$emit('$loadData.$globalData');
6776
+ });
6777
+ };
6778
+
6779
+ var unwatch = this.watchLoadData(callback);
6780
+ return val;
6781
+ }
6782
+ }
6783
+ },
6784
+ getLoadData: function getLoadData(id, def) {
6785
+ var val = null;
6786
+
6787
+ if (id != null) {
6788
+ var split = id.split('.');
6789
+ var key = split.shift();
6790
+
6791
+ if (key === '$form') {
6792
+ val = this.$handle.api.top.formData();
6793
+ } else if (key === '$subForm') {
6794
+ val = this.$handle.api.formData();
6795
+ } else if (key === '$options') {
6796
+ val = this.options.value;
6797
+ } else if (key === '$globalData') {
6798
+ val = this.globalDataDriver(split.join('.'));
6799
+ split = [];
6800
+ } else {
6801
+ val = getData(id, def);
6802
+ split = [];
6803
+ }
6804
+
6805
+ if (split.length) {
6806
+ val = deepGet(val, split);
6807
+ }
6808
+ }
6809
+
6810
+ console.log(id, val);
6811
+ return val == null || val === '' ? def : val;
6812
+ },
6813
+ watchLoadData: function watchLoadData(fn) {
6814
+ var _this4 = this;
6815
+
6816
+ var unwatch = {};
6817
+
6818
+ var run = function run(flag) {
6819
+ invoke(function () {
6820
+ fn(get, flag);
6821
+ });
6822
+ };
6823
+
6824
+ var get = function get(id, def) {
6825
+ if (unwatch[id]) {
6826
+ return unwatch[id].val;
6827
+ }
6828
+
6829
+ var val = _this4.getLoadData(id, def);
6830
+
6831
+ var key = id.split('.').shift();
6832
+
6833
+ var callback = function callback() {
6834
+ if (key !== id) {
6835
+ var temp = _this4.getLoadData(id, def);
6836
+
6837
+ if (JSON.stringify(temp) !== JSON.stringify(unwatch[id].val)) {
6838
+ unwatch[id].val = temp;
6839
+ run(true);
6840
+ }
6841
+ } else {
6842
+ run(true);
6843
+ }
6844
+ };
6845
+
6846
+ _this4.bus.$on('$loadData.' + key, callback);
6847
+
6848
+ unwatch[id] = {
6849
+ fn: function fn() {
6850
+ _this4.bus.$off('$loadData.' + key, callback);
6851
+ },
6852
+ val: val
6853
+ };
6854
+ return val;
6855
+ };
6856
+
6857
+ run(false);
6858
+ return function () {
6859
+ Object.keys(unwatch).forEach(function (k) {
6860
+ return unwatch[k].fn();
6861
+ });
6862
+ unwatch = {};
6863
+ };
6864
+ },
6459
6865
  isSub: function isSub() {
6460
6866
  return this.vm.setupState.parent && this.vm.props.extendOption;
6461
6867
  },
@@ -6494,6 +6900,7 @@ function FormCreateFactory(config) {
6494
6900
  updateOptions: function updateOptions(options) {
6495
6901
  this.options.value = this.mergeOptions(this.options.value, options);
6496
6902
  this.$handle.$manager.updateOptions(this.options.value);
6903
+ this.bus.$emit('$loadData.$options');
6497
6904
  },
6498
6905
  api: function api() {
6499
6906
  return this.$handle.api;
@@ -6505,6 +6912,8 @@ function FormCreateFactory(config) {
6505
6912
  this.$handle.mounted();
6506
6913
  },
6507
6914
  unmount: function unmount() {
6915
+ var _this5 = this;
6916
+
6508
6917
  if (this.name) {
6509
6918
  if (this.inFor) {
6510
6919
  var idx = instance[this.name].indexOf(this);
@@ -6514,14 +6923,17 @@ function FormCreateFactory(config) {
6514
6923
  }
6515
6924
  }
6516
6925
 
6926
+ listener.forEach(function (item) {
6927
+ _this5.bus.$off(item.name, item.callback);
6928
+ });
6517
6929
  this.unwatch && this.unwatch();
6518
6930
  this.$handle.reloadRule([]);
6519
6931
  },
6520
6932
  updated: function updated() {
6521
- var _this3 = this;
6933
+ var _this6 = this;
6522
6934
 
6523
6935
  this.$handle.bindNextTick(function () {
6524
- return _this3.bus.$emit('next-tick', _this3.$handle.api);
6936
+ return _this6.bus.$emit('next-tick', _this6.$handle.api);
6525
6937
  });
6526
6938
  }
6527
6939
  });
@@ -6532,6 +6944,7 @@ function FormCreateFactory(config) {
6532
6944
  ui: config.ui,
6533
6945
  extendApi: extendApi,
6534
6946
  getData: getData,
6947
+ setDataDriver: setDataDriver,
6535
6948
  setData: setData,
6536
6949
  removeData: removeData,
6537
6950
  maker: maker,
@@ -6553,17 +6966,20 @@ function FormCreateFactory(config) {
6553
6966
  parseJson: parseJson,
6554
6967
  toJson: toJson,
6555
6968
  useApp: useApp,
6556
- getApi: getApi
6969
+ getApi: getApi,
6970
+ on: on
6557
6971
  });
6558
6972
  }
6559
6973
 
6560
6974
  function useStatic(formCreate) {
6561
6975
  extend(formCreate, {
6562
6976
  create: create,
6977
+ isMobile: isMobile,
6563
6978
  install: function install(app, options) {
6564
6979
  globalConfig = _objectSpread2(_objectSpread2({}, globalConfig), options || {});
6565
- if (app._installedFormCreate === true) return;
6566
- app._installedFormCreate = true;
6980
+ var key = '_installedFormCreate_' + config.ui;
6981
+ if (app[key] === true) return;
6982
+ app[key] = true;
6567
6983
 
6568
6984
  var $formCreate = function $formCreate(rules) {
6569
6985
  var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -6572,7 +6988,8 @@ function FormCreateFactory(config) {
6572
6988
 
6573
6989
  useAttr($formCreate);
6574
6990
  app.config.globalProperties.$formCreate = $formCreate;
6575
- app.component('FormCreate', $form());
6991
+ var $component = $form();
6992
+ app.component($component.name, $component);
6576
6993
  useApps.forEach(function (v) {
6577
6994
  invoke(function () {
6578
6995
  return v(formCreate, app);
@@ -6584,6 +7001,8 @@ function FormCreateFactory(config) {
6584
7001
 
6585
7002
  useAttr(create);
6586
7003
  useStatic(create);
7004
+ setDataDriver('$cookie', cookieDriver);
7005
+ setDataDriver('$localStorage', localStorageDriver);
6587
7006
  CreateNode.use({
6588
7007
  fragment: 'fcFragment'
6589
7008
  });
@@ -6608,7 +7027,10 @@ function FormCreateFactory(config) {
6608
7027
  inherit.formulas && extend(formulas, inherit.formulas);
6609
7028
  }
6610
7029
 
6611
- return create;
7030
+ var FcComponent = $form();
7031
+ setPrototypeOf(FcComponent, create);
7032
+ FcComponent.util = create;
7033
+ return FcComponent;
6612
7034
  }
6613
7035
 
6614
7036
  var DEFAULT_FORMATS = {
@@ -7115,6 +7537,7 @@ var manager = {
7115
7537
  return this.$r({
7116
7538
  type: 'button',
7117
7539
  props: resetBtn,
7540
+ "class": '_fc-reset-btn',
7118
7541
  style: {
7119
7542
  width: resetBtn.width
7120
7543
  },
@@ -7140,6 +7563,7 @@ var manager = {
7140
7563
  return this.$r({
7141
7564
  type: 'button',
7142
7565
  props: submitBtn,
7566
+ "class": '_fc-submit-btn',
7143
7567
  style: {
7144
7568
  width: submitBtn.width
7145
7569
  },
@@ -7236,7 +7660,7 @@ function useFrame(maker) {
7236
7660
  return maker;
7237
7661
  }
7238
7662
 
7239
- 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}";
7663
+ 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}";
7240
7664
  styleInject(css_248z);
7241
7665
 
7242
7666
  function tidyBtnProp(btn, def) {
@@ -7489,7 +7913,7 @@ function install(FormCreate) {
7489
7913
  function elmFormCreate() {
7490
7914
  return FormCreateFactory({
7491
7915
  ui: 'element-ui',
7492
- version: '3.1.35',
7916
+ version: '3.2.1',
7493
7917
  manager: manager,
7494
7918
  extendApi: extendApi,
7495
7919
  install: install,