@form-create/element-ui 3.2.20 → 3.2.22

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,10 +1,10 @@
1
1
  /*!
2
- * @form-create/element-ui v3.2.20
2
+ * @form-create/element-ui v3.2.22
3
3
  * (c) 2018-2025 xaboy
4
4
  * Github https://github.com/xaboy/form-create
5
5
  * Released under the MIT License.
6
6
  */
7
- import { defineComponent, toRef, ref, watch, computed, createVNode, resolveComponent, mergeProps as mergeProps$1, openBlock, createElementBlock, createElementVNode, nextTick, markRaw, reactive, getCurrentInstance, provide, inject, toRefs, onBeforeMount, watchEffect, onMounted, onBeforeUnmount, onUpdated, isVNode, withDirectives, resolveDirective, createApp, h } from 'vue';
7
+ import { defineComponent, toRef, ref, watch, computed, createVNode, resolveComponent, mergeProps as mergeProps$1, openBlock, createElementBlock, createElementVNode, nextTick, markRaw, reactive, isVNode, getCurrentInstance, provide, inject, toRefs, onBeforeMount, watchEffect, onMounted, onBeforeUnmount, onUpdated, withDirectives, resolveDirective, createApp, h } from 'vue';
8
8
 
9
9
  function ownKeys(object, enumerableOnly) {
10
10
  var keys = Object.keys(object);
@@ -162,6 +162,10 @@ function _createSuper(Derived) {
162
162
  };
163
163
  }
164
164
 
165
+ function _slicedToArray(arr, i) {
166
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
167
+ }
168
+
165
169
  function _toConsumableArray(arr) {
166
170
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
167
171
  }
@@ -170,10 +174,44 @@ function _arrayWithoutHoles(arr) {
170
174
  if (Array.isArray(arr)) return _arrayLikeToArray(arr);
171
175
  }
172
176
 
177
+ function _arrayWithHoles(arr) {
178
+ if (Array.isArray(arr)) return arr;
179
+ }
180
+
173
181
  function _iterableToArray(iter) {
174
182
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
175
183
  }
176
184
 
185
+ function _iterableToArrayLimit(arr, i) {
186
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
187
+
188
+ if (_i == null) return;
189
+ var _arr = [];
190
+ var _n = true;
191
+ var _d = false;
192
+
193
+ var _s, _e;
194
+
195
+ try {
196
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
197
+ _arr.push(_s.value);
198
+
199
+ if (i && _arr.length === i) break;
200
+ }
201
+ } catch (err) {
202
+ _d = true;
203
+ _e = err;
204
+ } finally {
205
+ try {
206
+ if (!_n && _i["return"] != null) _i["return"]();
207
+ } finally {
208
+ if (_d) throw _e;
209
+ }
210
+ }
211
+
212
+ return _arr;
213
+ }
214
+
177
215
  function _unsupportedIterableToArray(o, minLen) {
178
216
  if (!o) return;
179
217
  if (typeof o === "string") return _arrayLikeToArray(o, minLen);
@@ -195,6 +233,10 @@ function _nonIterableSpread() {
195
233
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
196
234
  }
197
235
 
236
+ function _nonIterableRest() {
237
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
238
+ }
239
+
198
240
  function getSlot(slots, exclude) {
199
241
  return Object.keys(slots).reduce(function (lst, name) {
200
242
  if (!exclude || exclude.indexOf(name) === -1) {
@@ -1757,7 +1799,7 @@ var Group = defineComponent({
1757
1799
  var keys = this.sort;
1758
1800
 
1759
1801
  if (keys.filter(function (k) {
1760
- return cacheRule[k].$f;
1802
+ return cacheRule[k] && cacheRule[k].$f;
1761
1803
  }).length !== keys.length) {
1762
1804
  return;
1763
1805
  }
@@ -1810,6 +1852,7 @@ var Group = defineComponent({
1810
1852
  rule: rule,
1811
1853
  options: options
1812
1854
  };
1855
+ this.sort = Object.keys(this.cacheRule);
1813
1856
 
1814
1857
  if (emit) {
1815
1858
  nextTick(function () {
@@ -1831,6 +1874,7 @@ var Group = defineComponent({
1831
1874
  var index = Object.keys(this.cacheRule).indexOf(key);
1832
1875
  delete this.cacheRule[key];
1833
1876
  delete this.cacheValue[key];
1877
+ this.sort = Object.keys(this.cacheRule);
1834
1878
 
1835
1879
  if (emit) {
1836
1880
  nextTick(function () {
@@ -1953,15 +1997,6 @@ var Group = defineComponent({
1953
1997
  }
1954
1998
  },
1955
1999
  created: function created() {
1956
- var _this12 = this;
1957
-
1958
- watch(function () {
1959
- return _objectSpread2({}, _this12.cacheRule);
1960
- }, function (n) {
1961
- _this12.sort = Object.keys(n);
1962
- }, {
1963
- immediate: true
1964
- });
1965
2000
  var d = (this.expand || 0) - this.modelValue.length;
1966
2001
 
1967
2002
  for (var i = 0; i < this.modelValue.length; i++) {
@@ -1973,7 +2008,7 @@ var Group = defineComponent({
1973
2008
  }
1974
2009
  },
1975
2010
  render: function render() {
1976
- var _this13 = this;
2011
+ var _this12 = this;
1977
2012
 
1978
2013
  var keys = this.sort;
1979
2014
  var button = this.button;
@@ -1987,10 +2022,10 @@ var Group = defineComponent({
1987
2022
  "class": "_fc-group-plus-minus _fc-group-add fc-clock",
1988
2023
  "onClick": this.add
1989
2024
  }, null) : keys.map(function (key, index) {
1990
- var _this13$cacheRule$key = _this13.cacheRule[key],
1991
- rule = _this13$cacheRule$key.rule,
1992
- options = _this13$cacheRule$key.options;
1993
- var btn = button && !disabled ? _this13.makeIcon(keys.length, index, key) : [];
2025
+ var _this12$cacheRule$key = _this12.cacheRule[key],
2026
+ rule = _this12$cacheRule$key.rule,
2027
+ options = _this12$cacheRule$key.options;
2028
+ var btn = button && !disabled ? _this12.makeIcon(keys.length, index, key) : [];
1994
2029
  return createVNode("div", {
1995
2030
  "class": "_fc-group-container",
1996
2031
  "key": key
@@ -1999,20 +2034,20 @@ var Group = defineComponent({
1999
2034
  }, {
2000
2035
  disabled: disabled,
2001
2036
  'onUpdate:modelValue': function onUpdateModelValue(formData) {
2002
- return _this13.formData(key, formData);
2037
+ return _this12.formData(key, formData);
2003
2038
  },
2004
2039
  'onEmit-event': function onEmitEvent(name) {
2005
2040
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
2006
2041
  args[_key - 1] = arguments[_key];
2007
2042
  }
2008
2043
 
2009
- return _this13.emitEvent(name, args, index, key);
2044
+ return _this12.emitEvent(name, args, index, key);
2010
2045
  },
2011
2046
  'onUpdate:api': function onUpdateApi($f) {
2012
- return _this13.add$f(index, key, $f);
2047
+ return _this12.add$f(index, key, $f);
2013
2048
  },
2014
2049
  inFor: true,
2015
- modelValue: _this13.field ? _defineProperty({}, _this13.field, _this13._value(_this13.modelValue[index])) : _this13.modelValue[index],
2050
+ modelValue: _this12.field ? _defineProperty({}, _this12.field, _this12._value(_this12.modelValue[index])) : _this12.modelValue[index],
2016
2051
  rule: rule,
2017
2052
  option: options,
2018
2053
  extendOption: true
@@ -2161,410 +2196,108 @@ function upper(str) {
2161
2196
  return str.replace(str[0], str[0].toLocaleUpperCase());
2162
2197
  }
2163
2198
 
2164
- var _getGroupInject = function getGroupInject(vm, parent) {
2165
- if (!vm || vm === parent) {
2166
- return;
2167
- }
2168
-
2169
- if (vm.props.formCreateInject) {
2170
- return vm.props.formCreateInject;
2171
- }
2172
-
2173
- if (vm.parent) {
2174
- return _getGroupInject(vm.parent, parent);
2175
- }
2176
- };
2199
+ var normalMerge = ['props'];
2200
+ var toArrayMerge = ['class', 'style', 'directives'];
2201
+ var functionalMerge = ['on', 'hook'];
2177
2202
 
2178
- function $FormCreate(FormCreate, components, directives) {
2179
- return defineComponent({
2180
- name: 'FormCreate' + (FormCreate.isMobile ? 'Mobile' : ''),
2181
- components: components,
2182
- directives: directives,
2183
- props: {
2184
- rule: {
2185
- type: Array,
2186
- required: true,
2187
- "default": function _default() {
2188
- return [];
2189
- }
2190
- },
2191
- option: {
2192
- type: Object,
2193
- "default": function _default() {
2194
- return {};
2195
- }
2196
- },
2197
- extendOption: Boolean,
2198
- driver: [String, Object],
2199
- modelValue: Object,
2200
- disabled: {
2201
- type: Boolean,
2202
- "default": undefined
2203
- },
2204
- preview: {
2205
- type: Boolean,
2206
- "default": undefined
2207
- },
2208
- index: [String, Number],
2209
- api: Object,
2210
- locale: [String, Object],
2211
- name: String,
2212
- subForm: {
2213
- type: Boolean,
2214
- "default": true
2215
- },
2216
- inFor: Boolean
2217
- },
2218
- emits: ['update:api', 'update:modelValue', 'mounted', 'submit', 'reset', 'change', 'emit-event', 'control', 'remove-rule', 'remove-field', 'sync', 'reload', 'repeat-field', 'update', 'validate-field-fail', 'validate-fail', 'created'],
2219
- render: function render() {
2220
- return this.fc.render();
2221
- },
2222
- setup: function setup(props) {
2223
- var vm = getCurrentInstance();
2224
- provide('parentFC', vm);
2225
- var parent = inject('parentFC', null);
2226
- var top = parent;
2203
+ var mergeProps = function mergeProps(objects) {
2204
+ var initial = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2205
+ var opt = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
2227
2206
 
2228
- if (parent) {
2229
- while (top.setupState.parent) {
2230
- top = top.setupState.parent;
2231
- }
2232
- } else {
2233
- top = vm;
2234
- }
2207
+ var _normalMerge = [].concat(normalMerge, _toConsumableArray(opt['normal'] || []));
2235
2208
 
2236
- var _toRefs = toRefs(props),
2237
- rule = _toRefs.rule,
2238
- modelValue = _toRefs.modelValue,
2239
- subForm = _toRefs.subForm,
2240
- inFor = _toRefs.inFor;
2209
+ var _toArrayMerge = [].concat(toArrayMerge, _toConsumableArray(opt['array'] || []));
2241
2210
 
2242
- var data = reactive({
2243
- ctxInject: {},
2244
- destroyed: false,
2245
- isShow: true,
2246
- unique: 1,
2247
- renderRule: _toConsumableArray(rule.value || []),
2248
- updateValue: JSON.stringify(modelValue.value || {})
2249
- });
2250
- var fc = new FormCreate(vm);
2251
- var fapi = fc.api();
2252
- var isMore = inFor.value;
2211
+ var _functionalMerge = [].concat(functionalMerge, _toConsumableArray(opt['functional'] || []));
2253
2212
 
2254
- var addSubForm = function addSubForm() {
2255
- if (parent) {
2256
- var _inject = _getGroupInject(vm, parent);
2213
+ var propsMerge = opt['props'] || [];
2214
+ return objects.reduce(function (a, b) {
2215
+ for (var key in b) {
2216
+ if (a[key]) {
2217
+ if (propsMerge.indexOf(key) > -1) {
2218
+ a[key] = mergeProps([b[key]], a[key]);
2219
+ } else if (_normalMerge.indexOf(key) > -1) {
2220
+ a[key] = _objectSpread2(_objectSpread2({}, a[key]), b[key]);
2221
+ } else if (_toArrayMerge.indexOf(key) > -1) {
2222
+ var arrA = a[key] instanceof Array ? a[key] : [a[key]];
2223
+ var arrB = b[key] instanceof Array ? b[key] : [b[key]];
2224
+ a[key] = [].concat(_toConsumableArray(arrA), _toConsumableArray(arrB));
2225
+ } else if (_functionalMerge.indexOf(key) > -1) {
2226
+ for (var event in b[key]) {
2227
+ if (a[key][event]) {
2228
+ var _arrA = a[key][event] instanceof Array ? a[key][event] : [a[key][event]];
2257
2229
 
2258
- if (_inject) {
2259
- var sub;
2230
+ var _arrB = b[key][event] instanceof Array ? b[key][event] : [b[key][event]];
2260
2231
 
2261
- if (isMore) {
2262
- sub = toArray(_inject.getSubForm());
2263
- sub.push(fapi);
2232
+ a[key][event] = [].concat(_toConsumableArray(_arrA), _toConsumableArray(_arrB));
2264
2233
  } else {
2265
- sub = fapi;
2234
+ a[key][event] = b[key][event];
2266
2235
  }
2267
-
2268
- _inject.subForm(sub);
2269
2236
  }
2270
- }
2271
- };
2272
-
2273
- var rmSubForm = function rmSubForm() {
2274
- var inject = _getGroupInject(vm, parent);
2275
-
2276
- if (inject) {
2277
- if (isMore) {
2278
- var sub = toArray(inject.getSubForm());
2279
- var idx = sub.indexOf(fapi);
2280
-
2281
- if (idx > -1) {
2282
- sub.splice(idx, 1);
2237
+ } else if (key === 'hook') {
2238
+ for (var hook in b[key]) {
2239
+ if (a[key][hook]) {
2240
+ a[key][hook] = mergeFn(a[key][hook], b[key][hook]);
2241
+ } else {
2242
+ a[key][hook] = b[key][hook];
2283
2243
  }
2284
- } else {
2285
- inject.subForm();
2286
2244
  }
2245
+ } else {
2246
+ a[key] = b[key];
2287
2247
  }
2288
- };
2248
+ } else {
2249
+ if (_normalMerge.indexOf(key) > -1 || _functionalMerge.indexOf(key) > -1 || propsMerge.indexOf(key) > -1) {
2250
+ a[key] = _objectSpread2({}, b[key]);
2251
+ } else if (_toArrayMerge.indexOf(key) > -1) {
2252
+ a[key] = b[key] instanceof Array ? _toConsumableArray(b[key]) : _typeof(b[key]) === 'object' ? _objectSpread2({}, b[key]) : b[key];
2253
+ } else a[key] = b[key];
2254
+ }
2255
+ }
2289
2256
 
2290
- var styleEl = null;
2291
- onBeforeMount(function () {
2292
- watchEffect(function () {
2293
- var content = '';
2294
- var globalClass = props.option && props.option.globalClass || {};
2295
- Object.keys(globalClass).forEach(function (k) {
2296
- var subCss = '';
2297
- globalClass[k].style && Object.keys(globalClass[k].style).forEach(function (key) {
2298
- subCss += toLine(key) + ':' + globalClass[k].style[key] + ';';
2299
- });
2257
+ return a;
2258
+ }, initial);
2259
+ };
2300
2260
 
2301
- if (globalClass[k].content) {
2302
- subCss += globalClass[k].content + ';';
2303
- }
2261
+ var mergeFn = function mergeFn(fn1, fn2) {
2262
+ return function () {
2263
+ fn1 && fn1.apply(this, arguments);
2264
+ fn2 && fn2.apply(this, arguments);
2265
+ };
2266
+ };
2304
2267
 
2305
- if (subCss) {
2306
- content += ".".concat(k, "{").concat(subCss, "}");
2307
- }
2308
- });
2268
+ var keyAttrs = ['type', 'slot', 'ignore', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key', 'slotUpdate', 'computed', 'preview', 'component', 'cache', 'modelEmit'];
2269
+ var arrayAttrs = ['validate', 'children', 'control'];
2270
+ var normalAttrs = ['effect', 'deep', 'renderSlots'];
2271
+ function attrs() {
2272
+ return [].concat(keyAttrs, _toConsumableArray(normalMerge), _toConsumableArray(toArrayMerge), _toConsumableArray(functionalMerge), arrayAttrs, normalAttrs);
2273
+ }
2309
2274
 
2310
- if (props.option && props.option.style) {
2311
- content += props.option.style;
2312
- }
2275
+ function format(type, msg, rule) {
2276
+ return "[form-create ".concat(type, "]: ").concat(msg) + (rule ? '\n\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule) : '');
2277
+ }
2278
+ function err(msg, rule) {
2279
+ console.error(format('err', msg, rule));
2280
+ }
2281
+ function logError(e) {
2282
+ err(e.toString());
2283
+ console.error(e);
2284
+ }
2313
2285
 
2314
- if (!styleEl) {
2315
- styleEl = document.createElement('style');
2316
- styleEl.type = 'text/css';
2317
- document.head.appendChild(styleEl);
2318
- }
2286
+ function toCase(str) {
2287
+ var to = str.replace(/(-[a-z])/g, function (v) {
2288
+ return v.replace('-', '').toLocaleUpperCase();
2289
+ });
2290
+ return lower(to);
2291
+ }
2292
+ function lower(str) {
2293
+ return str.replace(str[0], str[0].toLowerCase());
2294
+ }
2319
2295
 
2320
- styleEl.innerHTML = content || '';
2321
- });
2322
- });
2323
- var emit$topForm = debounce(function () {
2324
- fc.bus.$emit('$loadData.$topForm');
2325
- }, 100);
2326
- var emit$scopeForm = debounce(function () {
2327
- fc.bus.$emit('$loadData.$scopeForm');
2328
- }, 100);
2329
- var emit$form = debounce(function () {
2330
- fc.bus.$emit('$loadData.$form');
2331
- }, 100);
2332
-
2333
- var emit$change = function emit$change(field) {
2334
- fc.bus.$emit('change-$form.' + field);
2335
- };
2336
-
2337
- onMounted(function () {
2338
- if (parent) {
2339
- fapi.top.bus.$on('$loadData.$form', emit$topForm);
2340
- fapi.top.bus.$on('change', emit$change);
2341
- }
2342
-
2343
- if (fapi !== fapi.scope) {
2344
- fapi.scope.bus.$on('$loadData.$scopeForm', emit$scopeForm);
2345
- }
2346
-
2347
- fc.mounted();
2348
- });
2349
- onBeforeUnmount(function () {
2350
- if (parent) {
2351
- fapi.top.bus.$off('$loadData.$form', emit$topForm);
2352
- fapi.top.bus.$off('change', emit$change);
2353
- }
2354
-
2355
- if (fapi !== fapi.scope) {
2356
- fapi.scope.bus.$off('$loadData.$scopeForm', emit$scopeForm);
2357
- }
2358
-
2359
- styleEl && document.head.removeChild(styleEl);
2360
- rmSubForm();
2361
- data.destroyed = true;
2362
- fc.unmount();
2363
- });
2364
- onUpdated(function () {
2365
- fc.updated();
2366
- });
2367
- watch(subForm, function (n) {
2368
- n ? addSubForm() : rmSubForm();
2369
- }, {
2370
- immediate: true
2371
- });
2372
- watch(function () {
2373
- return props.option;
2374
- }, function () {
2375
- fc.initOptions();
2376
- fapi.refresh();
2377
- }, {
2378
- deep: true
2379
- });
2380
- watch(function () {
2381
- return _toConsumableArray(rule.value);
2382
- }, function (n) {
2383
- if (fc.$handle.isBreakWatch() || n.length === data.renderRule.length && n.every(function (v) {
2384
- return data.renderRule.indexOf(v) > -1;
2385
- })) return;
2386
- fc.$handle.updateAppendData();
2387
- fc.$handle.reloadRule(rule.value);
2388
- vm.setupState.renderRule();
2389
- });
2390
- watch(function () {
2391
- return [props.disabled, props.preview];
2392
- }, function () {
2393
- fapi.refresh();
2394
- });
2395
- watch(modelValue, function (n) {
2396
- if (JSON.stringify(n || {}) === data.updateValue) return;
2397
-
2398
- if (fapi.config.forceCoverValue) {
2399
- fapi.coverValue(n || {});
2400
- } else {
2401
- fapi.setValue(n || {});
2402
- }
2403
- }, {
2404
- deep: true,
2405
- flush: 'post'
2406
- });
2407
- watch(function () {
2408
- return props.index;
2409
- }, function () {
2410
- fapi.coverValue({});
2411
- fc.$handle.updateAppendData();
2412
- nextTick(function () {
2413
- nextTick(function () {
2414
- fapi.clearValidateState();
2415
- });
2416
- });
2417
- }, {
2418
- flush: 'sync'
2419
- });
2420
- return _objectSpread2(_objectSpread2({
2421
- fc: markRaw(fc),
2422
- parent: parent ? markRaw(parent) : parent,
2423
- top: markRaw(top),
2424
- fapi: markRaw(fapi)
2425
- }, toRefs(data)), {}, {
2426
- getGroupInject: function getGroupInject() {
2427
- return _getGroupInject(vm, parent);
2428
- },
2429
- refresh: function refresh() {
2430
- ++data.unique;
2431
- },
2432
- renderRule: function renderRule() {
2433
- data.renderRule = _toConsumableArray(rule.value || []);
2434
- },
2435
- updateValue: function updateValue(value) {
2436
- if (data.destroyed) return;
2437
- var json = JSON.stringify(value);
2438
-
2439
- if (data.updateValue === json) {
2440
- return;
2441
- }
2442
-
2443
- data.updateValue = json;
2444
- vm.emit('update:modelValue', value);
2445
- nextTick(function () {
2446
- emit$form();
2447
-
2448
- if (!parent) {
2449
- emit$topForm();
2450
- emit$scopeForm();
2451
- } else if (!subForm.value) {
2452
- emit$scopeForm();
2453
- }
2454
- });
2455
- }
2456
- });
2457
- },
2458
- created: function created() {
2459
- var vm = getCurrentInstance();
2460
- vm.emit('update:api', vm.setupState.fapi);
2461
- vm.setupState.fc.init();
2462
- }
2463
- });
2464
- }
2465
-
2466
- var normalMerge = ['props'];
2467
- var toArrayMerge = ['class', 'style', 'directives'];
2468
- var functionalMerge = ['on', 'hook'];
2469
-
2470
- var mergeProps = function mergeProps(objects) {
2471
- var initial = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2472
- var opt = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
2473
-
2474
- var _normalMerge = [].concat(normalMerge, _toConsumableArray(opt['normal'] || []));
2475
-
2476
- var _toArrayMerge = [].concat(toArrayMerge, _toConsumableArray(opt['array'] || []));
2477
-
2478
- var _functionalMerge = [].concat(functionalMerge, _toConsumableArray(opt['functional'] || []));
2479
-
2480
- var propsMerge = opt['props'] || [];
2481
- return objects.reduce(function (a, b) {
2482
- for (var key in b) {
2483
- if (a[key]) {
2484
- if (propsMerge.indexOf(key) > -1) {
2485
- a[key] = mergeProps([b[key]], a[key]);
2486
- } else if (_normalMerge.indexOf(key) > -1) {
2487
- a[key] = _objectSpread2(_objectSpread2({}, a[key]), b[key]);
2488
- } else if (_toArrayMerge.indexOf(key) > -1) {
2489
- var arrA = a[key] instanceof Array ? a[key] : [a[key]];
2490
- var arrB = b[key] instanceof Array ? b[key] : [b[key]];
2491
- a[key] = [].concat(_toConsumableArray(arrA), _toConsumableArray(arrB));
2492
- } else if (_functionalMerge.indexOf(key) > -1) {
2493
- for (var event in b[key]) {
2494
- if (a[key][event]) {
2495
- var _arrA = a[key][event] instanceof Array ? a[key][event] : [a[key][event]];
2496
-
2497
- var _arrB = b[key][event] instanceof Array ? b[key][event] : [b[key][event]];
2498
-
2499
- a[key][event] = [].concat(_toConsumableArray(_arrA), _toConsumableArray(_arrB));
2500
- } else {
2501
- a[key][event] = b[key][event];
2502
- }
2503
- }
2504
- } else if (key === 'hook') {
2505
- for (var hook in b[key]) {
2506
- if (a[key][hook]) {
2507
- a[key][hook] = mergeFn(a[key][hook], b[key][hook]);
2508
- } else {
2509
- a[key][hook] = b[key][hook];
2510
- }
2511
- }
2512
- } else {
2513
- a[key] = b[key];
2514
- }
2515
- } else {
2516
- if (_normalMerge.indexOf(key) > -1 || _functionalMerge.indexOf(key) > -1 || propsMerge.indexOf(key) > -1) {
2517
- a[key] = _objectSpread2({}, b[key]);
2518
- } else if (_toArrayMerge.indexOf(key) > -1) {
2519
- a[key] = b[key] instanceof Array ? _toConsumableArray(b[key]) : _typeof(b[key]) === 'object' ? _objectSpread2({}, b[key]) : b[key];
2520
- } else a[key] = b[key];
2521
- }
2522
- }
2523
-
2524
- return a;
2525
- }, initial);
2526
- };
2527
-
2528
- var mergeFn = function mergeFn(fn1, fn2) {
2529
- return function () {
2530
- fn1 && fn1.apply(this, arguments);
2531
- fn2 && fn2.apply(this, arguments);
2532
- };
2533
- };
2534
-
2535
- var keyAttrs = ['type', 'slot', 'ignore', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key', 'slotUpdate', 'computed', 'preview', 'component', 'cache', 'modelEmit'];
2536
- var arrayAttrs = ['validate', 'children', 'control'];
2537
- var normalAttrs = ['effect', 'deep', 'renderSlots'];
2538
- function attrs() {
2539
- return [].concat(keyAttrs, _toConsumableArray(normalMerge), _toConsumableArray(toArrayMerge), _toConsumableArray(functionalMerge), arrayAttrs, normalAttrs);
2540
- }
2541
-
2542
- function format(type, msg, rule) {
2543
- return "[form-create ".concat(type, "]: ").concat(msg) + (rule ? '\n\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule) : '');
2544
- }
2545
- function err(msg, rule) {
2546
- console.error(format('err', msg, rule));
2547
- }
2548
- function logError(e) {
2549
- err(e.toString());
2550
- console.error(e);
2551
- }
2552
-
2553
- function toCase(str) {
2554
- var to = str.replace(/(-[a-z])/g, function (v) {
2555
- return v.replace('-', '').toLocaleUpperCase();
2556
- });
2557
- return lower(to);
2558
- }
2559
- function lower(str) {
2560
- return str.replace(str[0], str[0].toLowerCase());
2561
- }
2562
-
2563
- var PREFIX = '[[FORM-CREATE-PREFIX-';
2564
- var SUFFIX = '-FORM-CREATE-SUFFIX]]';
2565
- function toJson(obj, space) {
2566
- return JSON.stringify(deepExtend(Array.isArray(obj) ? [] : {}, obj, true), function (key, val) {
2567
- if (val && val._isVue === true) return undefined;
2296
+ var PREFIX = '[[FORM-CREATE-PREFIX-';
2297
+ var SUFFIX = '-FORM-CREATE-SUFFIX]]';
2298
+ function toJson(obj, space) {
2299
+ return JSON.stringify(deepExtend(Array.isArray(obj) ? [] : {}, obj, true), function (key, val) {
2300
+ if (val && val._isVue === true) return undefined;
2568
2301
 
2569
2302
  if (typeof val !== 'function') {
2570
2303
  return val;
@@ -2910,10 +2643,308 @@ function convertFieldToConditions(field) {
2910
2643
  } else {
2911
2644
  currentCondition += '.' + part;
2912
2645
  }
2913
-
2914
- conditions.push(currentCondition);
2646
+
2647
+ conditions.push(currentCondition);
2648
+ });
2649
+ return conditions.join(' && ');
2650
+ }
2651
+
2652
+ var _getGroupInject = function getGroupInject(vm, parent) {
2653
+ if (!vm || vm === parent) {
2654
+ return;
2655
+ }
2656
+
2657
+ if (vm.props.formCreateInject) {
2658
+ return vm.props.formCreateInject;
2659
+ }
2660
+
2661
+ if (vm.parent) {
2662
+ return _getGroupInject(vm.parent, parent);
2663
+ }
2664
+ };
2665
+
2666
+ function $FormCreate(FormCreate, components, directives) {
2667
+ return defineComponent({
2668
+ name: 'FormCreate' + (FormCreate.isMobile ? 'Mobile' : ''),
2669
+ components: components,
2670
+ directives: directives,
2671
+ props: {
2672
+ rule: {
2673
+ type: Array,
2674
+ required: true,
2675
+ "default": function _default() {
2676
+ return [];
2677
+ }
2678
+ },
2679
+ option: {
2680
+ type: Object,
2681
+ "default": function _default() {
2682
+ return {};
2683
+ }
2684
+ },
2685
+ extendOption: Boolean,
2686
+ driver: [String, Object],
2687
+ modelValue: Object,
2688
+ disabled: {
2689
+ type: Boolean,
2690
+ "default": undefined
2691
+ },
2692
+ preview: {
2693
+ type: Boolean,
2694
+ "default": undefined
2695
+ },
2696
+ index: [String, Number],
2697
+ api: Object,
2698
+ locale: [String, Object],
2699
+ name: String,
2700
+ subForm: {
2701
+ type: Boolean,
2702
+ "default": true
2703
+ },
2704
+ inFor: Boolean
2705
+ },
2706
+ emits: ['update:api', 'update:modelValue', 'mounted', 'submit', 'reset', 'change', 'emit-event', 'control', 'remove-rule', 'remove-field', 'sync', 'reload', 'repeat-field', 'update', 'validate-field-fail', 'validate-fail', 'created'],
2707
+ render: function render() {
2708
+ return this.fc.render();
2709
+ },
2710
+ setup: function setup(props) {
2711
+ var vm = getCurrentInstance();
2712
+ provide('parentFC', vm);
2713
+ var parent = inject('parentFC', null);
2714
+ var top = parent;
2715
+
2716
+ if (parent) {
2717
+ while (top.setupState.parent) {
2718
+ top = top.setupState.parent;
2719
+ }
2720
+ } else {
2721
+ top = vm;
2722
+ }
2723
+
2724
+ var _toRefs = toRefs(props),
2725
+ rule = _toRefs.rule,
2726
+ modelValue = _toRefs.modelValue,
2727
+ subForm = _toRefs.subForm,
2728
+ inFor = _toRefs.inFor;
2729
+
2730
+ var data = reactive({
2731
+ ctxInject: {},
2732
+ destroyed: false,
2733
+ isShow: true,
2734
+ unique: 1,
2735
+ renderRule: _toConsumableArray(rule.value || []),
2736
+ updateValue: JSON.stringify(modelValue.value || {})
2737
+ });
2738
+ var fc = new FormCreate(vm);
2739
+ var fapi = fc.api();
2740
+ var isMore = inFor.value;
2741
+
2742
+ var addSubForm = function addSubForm() {
2743
+ if (parent) {
2744
+ var _inject = _getGroupInject(vm, parent);
2745
+
2746
+ if (_inject) {
2747
+ var sub;
2748
+
2749
+ if (isMore) {
2750
+ sub = toArray(_inject.getSubForm());
2751
+ sub.push(fapi);
2752
+ } else {
2753
+ sub = fapi;
2754
+ }
2755
+
2756
+ _inject.subForm(sub);
2757
+ }
2758
+ }
2759
+ };
2760
+
2761
+ var rmSubForm = function rmSubForm() {
2762
+ var inject = _getGroupInject(vm, parent);
2763
+
2764
+ if (inject) {
2765
+ if (isMore) {
2766
+ var sub = toArray(inject.getSubForm());
2767
+ var idx = sub.indexOf(fapi);
2768
+
2769
+ if (idx > -1) {
2770
+ sub.splice(idx, 1);
2771
+ }
2772
+ } else {
2773
+ inject.subForm();
2774
+ }
2775
+ }
2776
+ };
2777
+
2778
+ var styleEl = null;
2779
+ onBeforeMount(function () {
2780
+ watchEffect(function () {
2781
+ var content = '';
2782
+ var globalClass = props.option && props.option.globalClass || {};
2783
+ Object.keys(globalClass).forEach(function (k) {
2784
+ var subCss = '';
2785
+ globalClass[k].style && Object.keys(globalClass[k].style).forEach(function (key) {
2786
+ subCss += toLine(key) + ':' + globalClass[k].style[key] + ';';
2787
+ });
2788
+
2789
+ if (globalClass[k].content) {
2790
+ subCss += globalClass[k].content + ';';
2791
+ }
2792
+
2793
+ if (subCss) {
2794
+ content += ".".concat(k, "{").concat(subCss, "}");
2795
+ }
2796
+ });
2797
+
2798
+ if (props.option && props.option.style) {
2799
+ content += props.option.style;
2800
+ }
2801
+
2802
+ if (!styleEl) {
2803
+ styleEl = document.createElement('style');
2804
+ styleEl.type = 'text/css';
2805
+ document.head.appendChild(styleEl);
2806
+ }
2807
+
2808
+ styleEl.innerHTML = content || '';
2809
+ });
2810
+ });
2811
+ var emit$topForm = debounce(function () {
2812
+ fc.bus.$emit('$loadData.$topForm');
2813
+ }, 100);
2814
+ var emit$scopeForm = debounce(function () {
2815
+ fc.bus.$emit('$loadData.$scopeForm');
2816
+ }, 100);
2817
+ var emit$form = debounce(function () {
2818
+ fc.bus.$emit('$loadData.$form');
2819
+ }, 100);
2820
+
2821
+ var emit$change = function emit$change(field) {
2822
+ fc.bus.$emit('change-$form.' + field);
2823
+ };
2824
+
2825
+ onMounted(function () {
2826
+ if (parent) {
2827
+ fapi.top.bus.$on('$loadData.$form', emit$topForm);
2828
+ fapi.top.bus.$on('change', emit$change);
2829
+ }
2830
+
2831
+ if (fapi !== fapi.scope) {
2832
+ fapi.scope.bus.$on('$loadData.$scopeForm', emit$scopeForm);
2833
+ }
2834
+
2835
+ fc.mounted();
2836
+ });
2837
+ onBeforeUnmount(function () {
2838
+ if (parent) {
2839
+ fapi.top.bus.$off('$loadData.$form', emit$topForm);
2840
+ fapi.top.bus.$off('change', emit$change);
2841
+ }
2842
+
2843
+ if (fapi !== fapi.scope) {
2844
+ fapi.scope.bus.$off('$loadData.$scopeForm', emit$scopeForm);
2845
+ }
2846
+
2847
+ styleEl && document.head.removeChild(styleEl);
2848
+ rmSubForm();
2849
+ data.destroyed = true;
2850
+ fc.unmount();
2851
+ });
2852
+ onUpdated(function () {
2853
+ fc.updated();
2854
+ });
2855
+ addSubForm();
2856
+ watch(function () {
2857
+ return props.option;
2858
+ }, function () {
2859
+ fc.initOptions();
2860
+ fapi.refresh();
2861
+ }, {
2862
+ deep: true
2863
+ });
2864
+ watch(function () {
2865
+ return _toConsumableArray(rule.value);
2866
+ }, function (n) {
2867
+ if (fc.$handle.isBreakWatch() || n.length === data.renderRule.length && n.every(function (v) {
2868
+ return data.renderRule.indexOf(v) > -1;
2869
+ })) return;
2870
+ fc.$handle.updateAppendData();
2871
+ fc.$handle.reloadRule(rule.value);
2872
+ vm.setupState.renderRule();
2873
+ });
2874
+ watch(function () {
2875
+ return [props.disabled, props.preview];
2876
+ }, function () {
2877
+ fapi.refresh();
2878
+ });
2879
+ watch(modelValue, function (n) {
2880
+ if (toJson(n || {}) === data.updateValue) return;
2881
+
2882
+ if (fapi.config.forceCoverValue) {
2883
+ fapi.coverValue(n || {});
2884
+ } else {
2885
+ fapi.setValue(n || {});
2886
+ }
2887
+ }, {
2888
+ deep: true,
2889
+ flush: 'post'
2890
+ });
2891
+ watch(function () {
2892
+ return props.index;
2893
+ }, function () {
2894
+ fapi.coverValue({});
2895
+ fc.$handle.updateAppendData();
2896
+ nextTick(function () {
2897
+ nextTick(function () {
2898
+ fapi.clearValidateState();
2899
+ });
2900
+ });
2901
+ }, {
2902
+ flush: 'sync'
2903
+ });
2904
+ return _objectSpread2(_objectSpread2({
2905
+ fc: markRaw(fc),
2906
+ parent: parent ? markRaw(parent) : parent,
2907
+ top: markRaw(top),
2908
+ fapi: markRaw(fapi)
2909
+ }, toRefs(data)), {}, {
2910
+ getGroupInject: function getGroupInject() {
2911
+ return _getGroupInject(vm, parent);
2912
+ },
2913
+ refresh: function refresh() {
2914
+ ++data.unique;
2915
+ },
2916
+ renderRule: function renderRule() {
2917
+ data.renderRule = _toConsumableArray(rule.value || []);
2918
+ },
2919
+ updateValue: function updateValue(value) {
2920
+ if (data.destroyed) return;
2921
+ var json = toJson(value);
2922
+
2923
+ if (data.updateValue === json) {
2924
+ return;
2925
+ }
2926
+
2927
+ data.updateValue = json;
2928
+ vm.emit('update:modelValue', value);
2929
+ nextTick(function () {
2930
+ emit$form();
2931
+
2932
+ if (!parent) {
2933
+ emit$topForm();
2934
+ emit$scopeForm();
2935
+ } else if (!subForm.value) {
2936
+ emit$scopeForm();
2937
+ }
2938
+ });
2939
+ }
2940
+ });
2941
+ },
2942
+ created: function created() {
2943
+ var vm = getCurrentInstance();
2944
+ vm.emit('update:api', vm.setupState.fapi);
2945
+ vm.setupState.fc.init();
2946
+ }
2915
2947
  });
2916
- return conditions.join(' && ');
2917
2948
  }
2918
2949
 
2919
2950
  function baseRule() {
@@ -3121,8 +3152,15 @@ function Api(h) {
3121
3152
  }
3122
3153
 
3123
3154
  function props(fields, key, val) {
3124
- tidyFields(fields).forEach(function (field) {
3125
- h.getCtxs(field).forEach(function (ctx) {
3155
+ if (is.Undef(fields)) {
3156
+ fields = Object.keys(_objectSpread2(_objectSpread2({}, h.fieldCtx), h.nameCtx));
3157
+ } else if (!Array.isArray(fields)) {
3158
+ fields = [fields];
3159
+ }
3160
+
3161
+ fields.forEach(function (field) {
3162
+ var ctxs = h.fieldCtx[field] || h.nameCtx[field];
3163
+ ctxs && ctxs.forEach(function (ctx) {
3126
3164
  $set(ctx.rule, key, val);
3127
3165
  h.$render.clearCache(ctx);
3128
3166
  });
@@ -3140,6 +3178,14 @@ function Api(h) {
3140
3178
  }
3141
3179
 
3142
3180
  var api = {
3181
+ get isScope() {
3182
+ return h.vm.props.subForm === false;
3183
+ },
3184
+
3185
+ get isPreview() {
3186
+ return h.preview;
3187
+ },
3188
+
3143
3189
  get config() {
3144
3190
  return h.options;
3145
3191
  },
@@ -3219,6 +3265,10 @@ function Api(h) {
3219
3265
  return undefined;
3220
3266
  },
3221
3267
 
3268
+ get formulas() {
3269
+ return _objectSpread2({}, h.fc.formulas);
3270
+ },
3271
+
3222
3272
  formData: function formData(fields) {
3223
3273
  if (fields == null || typeof fields === 'boolean') {
3224
3274
  var data = {};
@@ -3649,10 +3699,13 @@ function Api(h) {
3649
3699
  }
3650
3700
  }
3651
3701
  },
3652
- getChildrenFormData: function getChildrenFormData(id) {
3702
+ getChildrenFormData: function getChildrenFormData(id, flag) {
3653
3703
  var rules = api.getChildrenRuleList(id);
3654
3704
  return rules.reduce(function (formData, rule) {
3655
- formData[rule.field] = copy(rule.value);
3705
+ if (rule.ignore !== true || flag === true) {
3706
+ formData[rule.field] = copy(rule.value);
3707
+ }
3708
+
3656
3709
  return formData;
3657
3710
  }, {});
3658
3711
  },
@@ -3745,7 +3798,7 @@ function Api(h) {
3745
3798
  });
3746
3799
  reject(e);
3747
3800
  });
3748
- });
3801
+ })["catch"](function (e) {});
3749
3802
  });
3750
3803
  },
3751
3804
  watchFetch: function watchFetch(opt, callback, error, beforeFetch) {
@@ -3770,7 +3823,7 @@ function Api(h) {
3770
3823
  });
3771
3824
  error && error(e);
3772
3825
  });
3773
- });
3826
+ })["catch"](function (e) {});
3774
3827
  }, opt.wait == null ? 1000 : opt.wait);
3775
3828
  },
3776
3829
  getData: function getData(id, def) {
@@ -5651,7 +5704,7 @@ function useInput(Handler) {
5651
5704
  return JSON.stringify(this.getFormData(ctx), strFn) !== JSON.stringify(value, strFn);
5652
5705
  },
5653
5706
  isQuote: function isQuote(ctx, value) {
5654
- return (is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;
5707
+ return (value instanceof Function || is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;
5655
5708
  },
5656
5709
  refreshUpdate: function refreshUpdate(ctx, val, origin, field) {
5657
5710
  var _this5 = this;
@@ -5931,19 +5984,25 @@ function useContext(Handler) {
5931
5984
  return info;
5932
5985
  });
5933
5986
  ctx.refRule['__$validate'] = computed(function () {
5987
+ var t = function t(msg) {
5988
+ var match = msg.match(/^\{\{\s*\$t\.(.+)\s*\}\}$/);
5989
+
5990
+ if (match) {
5991
+ var _ctx$refRule, _ctx$refRule$__$title;
5992
+
5993
+ return _this.api.t(match[1], {
5994
+ title: (_ctx$refRule = ctx.refRule) === null || _ctx$refRule === void 0 ? void 0 : (_ctx$refRule$__$title = _ctx$refRule.__$title) === null || _ctx$refRule$__$title === void 0 ? void 0 : _ctx$refRule$__$title.value
5995
+ });
5996
+ }
5997
+
5998
+ return msg;
5999
+ };
6000
+
5934
6001
  return toArray(ctx.rule.validate).map(function (item) {
5935
6002
  var temp = _objectSpread2({}, item);
5936
6003
 
5937
6004
  if (temp.message) {
5938
- var match = temp.message.match(/^\{\{\s*\$t\.(.+)\s*\}\}$/);
5939
-
5940
- if (match) {
5941
- var _ctx$refRule, _ctx$refRule$__$title;
5942
-
5943
- temp.message = _this.api.t(match[1], {
5944
- title: (_ctx$refRule = ctx.refRule) === null || _ctx$refRule === void 0 ? void 0 : (_ctx$refRule$__$title = _ctx$refRule.__$title) === null || _ctx$refRule$__$title === void 0 ? void 0 : _ctx$refRule$__$title.value
5945
- });
5946
- }
6005
+ temp.message = t(temp.message);
5947
6006
  }
5948
6007
 
5949
6008
  if (is.Function(temp.validator)) {
@@ -5964,8 +6023,19 @@ function useContext(Handler) {
5964
6023
  api: that.$handle.api
5965
6024
  }].concat(args));
5966
6025
  };
6026
+ }
6027
+
6028
+ if (temp.adapter) {
6029
+ if (_typeof(temp.error) === 'object') {
6030
+ var msg = _objectSpread2({}, temp.error);
6031
+
6032
+ Object.keys(msg).forEach(function (key) {
6033
+ msg[key] = t(msg[key]);
6034
+ });
6035
+ temp.error = msg;
6036
+ }
5967
6037
 
5968
- return temp;
6038
+ return _this.adapterValidate(temp, ctx);
5969
6039
  }
5970
6040
 
5971
6041
  return temp;
@@ -6037,9 +6107,282 @@ function useContext(Handler) {
6037
6107
  });
6038
6108
  this.watchEffect(ctx);
6039
6109
  },
6040
- compute: function compute(ctx, item) {
6110
+ adapterValidate: function adapterValidate(validate, ctx) {
6041
6111
  var _this2 = this;
6042
6112
 
6113
+ var validator = function validator(value, callback) {
6114
+ var before = validate.beforeValidate && invoke(function () {
6115
+ return validate.beforeValidate({
6116
+ value: value,
6117
+ api: _this2.api,
6118
+ validate: validate,
6119
+ rule: ctx.rule
6120
+ });
6121
+ });
6122
+
6123
+ if (before === false) {
6124
+ callback();
6125
+ } else {
6126
+ var key = _this2.validator(value, validate);
6127
+
6128
+ if (!key) {
6129
+ if (validate.validator) {
6130
+ var res = validate.validator && invoke(function () {
6131
+ return validate.validator(value, callback);
6132
+ });
6133
+
6134
+ if (res && is.Function(res.then)) {
6135
+ res.then(function () {
6136
+ return callback();
6137
+ })["catch"](function (e) {
6138
+ return callback(e);
6139
+ });
6140
+ }
6141
+ } else {
6142
+ callback();
6143
+ }
6144
+ } else {
6145
+ var message = '';
6146
+
6147
+ if (_typeof(validate.error) === 'object') {
6148
+ message = validate.error[key] || validate.error["default"];
6149
+ }
6150
+
6151
+ if (!message && typeof validate.message === 'string') {
6152
+ message = validate.message;
6153
+ }
6154
+
6155
+ if (!message) {
6156
+ message = _this2.getValidateMessage(ctx, {
6157
+ key: key,
6158
+ rule: validate[key]
6159
+ });
6160
+ }
6161
+
6162
+ callback(message);
6163
+ }
6164
+ }
6165
+ };
6166
+
6167
+ return this.$manager.adapterValidate({
6168
+ required: validate.required,
6169
+ message: validate.message,
6170
+ target: validate.trigger
6171
+ }, validator);
6172
+ },
6173
+ getValidateMessage: function getValidateMessage(ctx, invalid) {
6174
+ var _ctx$refRule2, _ctx$refRule2$__$titl, _this$api$t;
6175
+
6176
+ var formatRule = Array.isArray(invalid.rule) ? invalid.rule.join(',') : '' + invalid.rule;
6177
+ return this.api.t(invalid.key === 'required' ? invalid.key : 'validate.' + invalid.key, (_this$api$t = {}, _defineProperty(_this$api$t, invalid.key, formatRule), _defineProperty(_this$api$t, "title", (_ctx$refRule2 = ctx.refRule) === null || _ctx$refRule2 === void 0 ? void 0 : (_ctx$refRule2$__$titl = _ctx$refRule2.__$title) === null || _ctx$refRule2$__$titl === void 0 ? void 0 : _ctx$refRule2$__$titl.value), _this$api$t));
6178
+ },
6179
+ validator: function validator(value, validate) {
6180
+ var isEmpty = is.empty(value);
6181
+
6182
+ if (isEmpty) {
6183
+ if (validate.required) {
6184
+ return 'required';
6185
+ }
6186
+
6187
+ return;
6188
+ }
6189
+
6190
+ var _loop = function _loop() {
6191
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
6192
+ key = _Object$entries$_i[0],
6193
+ rule = _Object$entries$_i[1];
6194
+
6195
+ switch (key) {
6196
+ case 'len':
6197
+ case 'maxLen':
6198
+ case 'minLen':
6199
+ var check = function check(val) {
6200
+ if (key === 'len') {
6201
+ return val === rule;
6202
+ } else if (key === 'maxLen') {
6203
+ return val <= rule;
6204
+ } else {
6205
+ return val >= rule;
6206
+ }
6207
+ };
6208
+
6209
+ if (Array.isArray(value)) {
6210
+ if (!check(value.length)) {
6211
+ return {
6212
+ v: key
6213
+ };
6214
+ }
6215
+ } else if (_typeof(value) === 'object') {
6216
+ return {
6217
+ v: key
6218
+ };
6219
+ } else if (!check(('' + value).length)) {
6220
+ return {
6221
+ v: key
6222
+ };
6223
+ }
6224
+
6225
+ break;
6226
+
6227
+ case 'pattern':
6228
+ var reg = typeof rule === 'string' ? new RegExp(rule) : rule;
6229
+
6230
+ if (!reg.test('' + value)) {
6231
+ return {
6232
+ v: key
6233
+ };
6234
+ }
6235
+
6236
+ break;
6237
+
6238
+ case 'uppercase':
6239
+ if (rule && (typeof value !== 'string' || !/^[A-Z]*$/.test(value))) {
6240
+ return {
6241
+ v: key
6242
+ };
6243
+ }
6244
+
6245
+ break;
6246
+
6247
+ case 'lowercase':
6248
+ if (rule && (typeof value !== 'string' || !/^[a-z]*$/.test(value))) {
6249
+ return {
6250
+ v: key
6251
+ };
6252
+ }
6253
+
6254
+ break;
6255
+
6256
+ case 'min':
6257
+ case 'max':
6258
+ case 'positive':
6259
+ case 'negative':
6260
+ case 'integer':
6261
+ case 'number':
6262
+ var num = Number(value);
6263
+
6264
+ if (Number.isNaN(num)) {
6265
+ return {
6266
+ v: key
6267
+ };
6268
+ }
6269
+
6270
+ if (key === 'min' && num < rule) {
6271
+ return {
6272
+ v: key
6273
+ };
6274
+ }
6275
+
6276
+ if (key === 'max' && num > rule) {
6277
+ return {
6278
+ v: key
6279
+ };
6280
+ }
6281
+
6282
+ if (key === 'positive' && num <= 0) {
6283
+ return {
6284
+ v: key
6285
+ };
6286
+ }
6287
+
6288
+ if (key === 'negative' && num >= 0) {
6289
+ return {
6290
+ v: key
6291
+ };
6292
+ }
6293
+
6294
+ if (key === 'integer' && !Number.isInteger(num)) {
6295
+ return {
6296
+ v: key
6297
+ };
6298
+ }
6299
+
6300
+ break;
6301
+
6302
+ case 'equal':
6303
+ if (value !== rule) {
6304
+ return {
6305
+ v: key
6306
+ };
6307
+ }
6308
+
6309
+ break;
6310
+
6311
+ case 'enum':
6312
+ if (Array.isArray(rule) && !rule.includes(value)) {
6313
+ return {
6314
+ v: key
6315
+ };
6316
+ }
6317
+
6318
+ break;
6319
+
6320
+ case 'hasKeys':
6321
+ if (_typeof(value) !== 'object' || Array.isArray(rule) && rule.some(function (key) {
6322
+ return !(key in value);
6323
+ })) {
6324
+ return {
6325
+ v: key
6326
+ };
6327
+ }
6328
+
6329
+ break;
6330
+
6331
+ case 'email':
6332
+ var regexEmail = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
6333
+
6334
+ if (!regexEmail.test('' + value)) {
6335
+ return {
6336
+ v: key
6337
+ };
6338
+ }
6339
+
6340
+ break;
6341
+
6342
+ case 'url':
6343
+ var regexUrl = new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$", 'i');
6344
+
6345
+ if (!regexUrl.test('' + value)) {
6346
+ return {
6347
+ v: key
6348
+ };
6349
+ }
6350
+
6351
+ break;
6352
+
6353
+ case 'ip':
6354
+ var regexIp = /^(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})(\.(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})){3}$/;
6355
+
6356
+ if (!regexIp.test('' + value)) {
6357
+ return {
6358
+ v: key
6359
+ };
6360
+ }
6361
+
6362
+ break;
6363
+
6364
+ case 'phone':
6365
+ var regexPhone = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/;
6366
+
6367
+ if (!regexPhone.test('' + value)) {
6368
+ return {
6369
+ v: key
6370
+ };
6371
+ }
6372
+
6373
+ break;
6374
+ }
6375
+ };
6376
+
6377
+ for (var _i = 0, _Object$entries = Object.entries(validate); _i < _Object$entries.length; _i++) {
6378
+ var _ret = _loop();
6379
+
6380
+ if (_typeof(_ret) === "object") return _ret.v;
6381
+ }
6382
+ },
6383
+ compute: function compute(ctx, item) {
6384
+ var _this3 = this;
6385
+
6043
6386
  var fn;
6044
6387
 
6045
6388
  if (_typeof(item) === 'object') {
@@ -6058,16 +6401,16 @@ function useContext(Handler) {
6058
6401
  var or = item.mode === 'OR';
6059
6402
  var valid = true;
6060
6403
 
6061
- var _loop = function _loop(i) {
6404
+ var _loop2 = function _loop2(i) {
6062
6405
  var one = item.group[i];
6063
6406
  var flag = void 0;
6064
6407
  var field = null;
6065
6408
 
6066
6409
  if (one.variable) {
6067
- field = JSON.stringify(_this2.fc.getLoadData(one.variable) || '');
6410
+ field = JSON.stringify(_this3.fc.getLoadData(one.variable) || '');
6068
6411
  } else if (one.field) {
6069
6412
  field = convertFieldToConditions(one.field || '');
6070
- } else {
6413
+ } else if (!one.mode) {
6071
6414
  return {
6072
6415
  v: true
6073
6416
  };
@@ -6085,11 +6428,11 @@ function useContext(Handler) {
6085
6428
  flag = false;
6086
6429
  } else if (is.Function(one.handler)) {
6087
6430
  flag = invoke(function () {
6088
- return one.handler(_this2.api, ctx.rule);
6431
+ return one.handler(_this3.api, ctx.rule);
6089
6432
  });
6090
6433
  } else {
6091
6434
  flag = invoke(function () {
6092
- return new Function('$condition', '$val', '$form', '$scope', '$group', '$rule', "with($form){with($scope){with(this){with($group){ return $condition['".concat(one.condition, "'](").concat(field, ", ").concat(compare ? compare : '$val', "); }}}}")).call(_this2.api.form, condition, one.value, _this2.api.top.form, _this2.api.top === _this2.api.scope ? {} : _this2.api.scope.form, group ? _this2.subRuleData[group.id] || {} : {}, ctx.rule);
6435
+ return new Function('$condition', '$val', '$form', '$scope', '$group', '$rule', "with($form){with($scope){with(this){with($group){ return $condition['".concat(one.condition, "'](").concat(field, ", ").concat(compare ? compare : '$val', "); }}}}")).call(_this3.api.form, condition, one.value, _this3.api.top.form, _this3.api.top === _this3.api.scope ? {} : _this3.api.scope.form, group ? _this3.subRuleData[group.id] || {} : {}, ctx.rule);
6093
6436
  });
6094
6437
  }
6095
6438
 
@@ -6105,9 +6448,9 @@ function useContext(Handler) {
6105
6448
  };
6106
6449
 
6107
6450
  for (var i = 0; i < item.group.length; i++) {
6108
- var _ret = _loop(i);
6451
+ var _ret2 = _loop2(i);
6109
6452
 
6110
- if (_typeof(_ret) === "object") return _ret.v;
6453
+ if (_typeof(_ret2) === "object") return _ret2.v;
6111
6454
  }
6112
6455
 
6113
6456
  return or ? false : valid;
@@ -6118,26 +6461,28 @@ function useContext(Handler) {
6118
6461
 
6119
6462
  if (item.linkage) {
6120
6463
  return val ? invoke(function () {
6121
- return _this2.computeValue(item.linkage, ctx, group);
6464
+ return _this3.computeValue(item.linkage, ctx, group);
6122
6465
  }, undefined) : oldValueTag;
6123
6466
  }
6124
6467
 
6125
6468
  return val;
6126
6469
  } else if (is.Function(item)) {
6127
6470
  fn = function fn() {
6128
- return item(_this2.api.form, _this2.api);
6471
+ return item(_this3.api.form, _this3.api);
6129
6472
  };
6130
6473
  } else {
6131
6474
  var _group = ctx.getParentGroup();
6132
6475
 
6133
6476
  fn = function fn() {
6134
- return _this2.computeValue(item, ctx, _group);
6477
+ return _this3.computeValue(item, ctx, _group);
6135
6478
  };
6136
6479
  }
6137
6480
 
6138
6481
  return invoke(fn, undefined);
6139
6482
  },
6140
6483
  computeValue: function computeValue(str, ctx, group) {
6484
+ var _this4 = this;
6485
+
6141
6486
  var that = this;
6142
6487
  var formulas = Object.keys(this.fc.formulas).reduce(function (obj, k) {
6143
6488
  obj[k] = function () {
@@ -6157,34 +6502,36 @@ function useContext(Handler) {
6157
6502
 
6158
6503
  return obj;
6159
6504
  }, {});
6160
- return new Function('$formulas', '$form', '$scope', '$group', '$rule', '$api', "with($form){with($scope){with(this){with($group){with($formulas){ return ".concat(str, " }}}}}")).call(this.api.form, formulas, this.api.top.form, this.api.top === this.api.scope ? {} : this.api.scope.form, group ? this.subRuleData[group.id] || {} : {}, ctx.rule, this.api);
6505
+ return invoke(function () {
6506
+ return new Function('$formulas', '$form', '$scope', '$group', '$rule', '$api', "with($form){with($scope){with(this){with($group){with($formulas){ return ".concat(str, " }}}}}")).call(_this4.api.form, formulas, _this4.api.top.form, _this4.api.top === _this4.api.scope ? {} : _this4.api.scope.form, group ? _this4.subRuleData[group.id] || {} : {}, ctx.rule, _this4.api);
6507
+ }, undefined);
6161
6508
  },
6162
6509
  updateChildren: function updateChildren(ctx, n, o) {
6163
- var _this3 = this;
6510
+ var _this5 = this;
6164
6511
 
6165
6512
  this.deferSyncValue(function () {
6166
6513
  o && o.forEach(function (child) {
6167
6514
  if ((n || []).indexOf(child) === -1 && child && !is.String(child) && child.__fc__ && child.__fc__.parent === ctx) {
6168
- _this3.rmCtx(child.__fc__);
6515
+ _this5.rmCtx(child.__fc__);
6169
6516
  }
6170
6517
  });
6171
6518
 
6172
6519
  if (is.trueArray(n)) {
6173
- _this3.loadChildren(n, ctx);
6520
+ _this5.loadChildren(n, ctx);
6174
6521
 
6175
- _this3.bus.$emit('update', _this3.api);
6522
+ _this5.bus.$emit('update', _this5.api);
6176
6523
  }
6177
6524
  });
6178
6525
  },
6179
6526
  rmSub: function rmSub(sub) {
6180
- var _this4 = this;
6527
+ var _this6 = this;
6181
6528
 
6182
6529
  is.trueArray(sub) && sub.forEach(function (r) {
6183
- r && r.__fc__ && _this4.rmCtx(r.__fc__);
6530
+ r && r.__fc__ && _this6.rmCtx(r.__fc__);
6184
6531
  });
6185
6532
  },
6186
6533
  rmCtx: function rmCtx(ctx) {
6187
- var _this5 = this;
6534
+ var _this7 = this;
6188
6535
 
6189
6536
  if (ctx.deleted) return;
6190
6537
  var id = ctx.id,
@@ -6213,19 +6560,19 @@ function useContext(Handler) {
6213
6560
  }
6214
6561
 
6215
6562
  this.deferSyncValue(function () {
6216
- if (!_this5.reloading) {
6563
+ if (!_this7.reloading) {
6217
6564
  if (ctx.parser.loadChildren !== false) {
6218
6565
  var children = ctx.getPending('children', ctx.rule.children);
6219
6566
 
6220
6567
  if (is.trueArray(children)) {
6221
6568
  children.forEach(function (h) {
6222
- return h.__fc__ && _this5.rmCtx(h.__fc__);
6569
+ return h.__fc__ && _this7.rmCtx(h.__fc__);
6223
6570
  });
6224
6571
  }
6225
6572
  }
6226
6573
 
6227
- if (ctx.root === _this5.rules) {
6228
- _this5.vm.setupState.renderRule();
6574
+ if (ctx.root === _this7.rules) {
6575
+ _this7.vm.setupState.renderRule();
6229
6576
  }
6230
6577
  }
6231
6578
  }, input);
@@ -6487,7 +6834,13 @@ function Handler(fc) {
6487
6834
  return fc.bus;
6488
6835
  },
6489
6836
  preview: function preview() {
6490
- return fc.vm.props.preview != null ? fc.vm.props.preview : fc.options.value.preview || false;
6837
+ if (fc.vm.props.preview != null) {
6838
+ return fc.vm.props.preview;
6839
+ } else if (fc.vm.setupState.parent && fc.vm.setupState.parent.props.preview != null) {
6840
+ return fc.vm.setupState.parent.props.preview;
6841
+ }
6842
+
6843
+ return fc.options.value.preview || false;
6491
6844
  }
6492
6845
  });
6493
6846
  extend(this, {
@@ -6593,6 +6946,25 @@ extend(Handler.prototype, {
6593
6946
  }).then(function () {
6594
6947
  return _this3.globalBeforeFetch(opt);
6595
6948
  });
6949
+ },
6950
+ beforeSubmit: function beforeSubmit(formData) {
6951
+ var _this4 = this;
6952
+
6953
+ return new Promise(function (resolve, reject) {
6954
+ var res = _this4.options.beforeSubmit && invoke(function () {
6955
+ return _this4.options.beforeSubmit(formData, {
6956
+ api: _this4.api
6957
+ });
6958
+ });
6959
+
6960
+ if (res && is.Function(res.then)) {
6961
+ res.then(resolve)["catch"](reject);
6962
+ } else if (res === false) {
6963
+ reject();
6964
+ } else {
6965
+ resolve();
6966
+ }
6967
+ });
6596
6968
  }
6597
6969
  });
6598
6970
  useInject(Handler);
@@ -6747,6 +7119,13 @@ extend(Manager.prototype, {
6747
7119
  form: function form() {
6748
7120
  return this.vm.refs[this.ref];
6749
7121
  },
7122
+ adapterValidate: function adapterValidate(validate, validator) {
7123
+ validate.validator = function (rule, value, callback) {
7124
+ return validator(value, callback);
7125
+ };
7126
+
7127
+ return validate;
7128
+ },
6750
7129
  getSlot: function getSlot(name) {
6751
7130
  var _fn = function _fn(vm) {
6752
7131
  if (vm) {
@@ -6794,57 +7173,61 @@ var loadData = function loadData(fc) {
6794
7173
  var loadData = {
6795
7174
  name: 'loadData',
6796
7175
  _fn: [],
6797
- mounted: function mounted(inject, rule, api) {
6798
- this.deleted(inject);
6799
- var attrs = toArray(inject.getValue());
6800
- var unwatchs = [];
6801
- attrs.forEach(function (attr) {
6802
- if (attr && (attr.attr || attr.template)) {
6803
- var fn = function fn(get) {
6804
- var value;
7176
+ loaded: function loaded(inject, rule, api) {
7177
+ var _this = this;
6805
7178
 
6806
- if (attr.template) {
6807
- value = fc.$handle.loadStrVar(attr.template, get);
6808
- } else if (attr.handler && is.Function(attr.handler)) {
6809
- value = attr.handler(get, rule, api);
6810
- } else {
6811
- value = get(attr.attr, attr["default"]);
6812
- }
7179
+ this.deleted(inject);
7180
+ nextTick(function () {
7181
+ var attrs = toArray(inject.getValue());
7182
+ var unwatchs = [];
7183
+ attrs.forEach(function (attr) {
7184
+ if (attr && (attr.attr || attr.template)) {
7185
+ var fn = function fn(get) {
7186
+ var value;
7187
+
7188
+ if (attr.template) {
7189
+ value = fc.$handle.loadStrVar(attr.template, get);
7190
+ } else if (attr.handler && is.Function(attr.handler)) {
7191
+ value = attr.handler(get, rule, api);
7192
+ } else {
7193
+ value = get(attr.attr, attr["default"]);
7194
+ }
6813
7195
 
6814
- if (attr.copy !== false) {
6815
- value = deepCopy(value);
6816
- }
7196
+ if (attr.copy !== false) {
7197
+ value = deepCopy(value);
7198
+ }
6817
7199
 
6818
- var _rule = attr.modify ? rule : inject.getProp();
7200
+ var _rule = attr.modify ? rule : inject.getProp();
6819
7201
 
6820
- if (attr.to === 'child') {
6821
- if (_rule.children) {
6822
- _rule.children[0] = value;
7202
+ if (attr.to === 'child') {
7203
+ if (_rule.children) {
7204
+ _rule.children[0] = value;
7205
+ } else {
7206
+ _rule.children = [value];
7207
+ }
6823
7208
  } else {
6824
- _rule.children = [value];
7209
+ deepSet(_rule, attr.to || 'options', value);
6825
7210
  }
6826
- } else {
6827
- deepSet(_rule, attr.to || 'options', value);
6828
- }
6829
7211
 
6830
- api.sync(rule);
6831
- };
7212
+ api.sync(rule);
7213
+ };
6832
7214
 
6833
- var callback = function callback(get) {
6834
- return fn(get);
6835
- };
7215
+ var callback = function callback(get) {
7216
+ return fn(get);
7217
+ };
6836
7218
 
6837
- var unwatch = fc.watchLoadData(callback);
6838
- fn = debounce(fn, attr.wait || 300);
7219
+ var unwatch = fc.watchLoadData(callback);
7220
+ fn = debounce(fn, attr.wait || 300);
6839
7221
 
6840
- if (attr.watch !== false) {
6841
- unwatchs.push(unwatch);
6842
- } else {
6843
- unwatch();
7222
+ if (attr.watch !== false) {
7223
+ unwatchs.push(unwatch);
7224
+ } else {
7225
+ unwatch();
7226
+ }
6844
7227
  }
6845
- }
7228
+ });
7229
+ _this._fn[inject.id] = unwatchs;
6846
7230
  });
6847
- this._fn[inject.id] = unwatchs;
6848
7231
  },
6849
7232
  deleted: function deleted(inject) {
6850
7233
  if (this._fn[inject.id]) {
@@ -6858,7 +7241,7 @@ var loadData = function loadData(fc) {
6858
7241
  inject.clearProp();
6859
7242
  }
6860
7243
  };
6861
- loadData.watch = loadData.mounted;
7244
+ loadData.watch = loadData.loaded;
6862
7245
  return loadData;
6863
7246
  };
6864
7247
 
@@ -7071,7 +7454,6 @@ var fetch = function fetch(fc) {
7071
7454
  }
7072
7455
 
7073
7456
  set(fn(body, rule, api));
7074
- api.sync(rule);
7075
7457
  },
7076
7458
  onError: function onError(e) {
7077
7459
  set(undefined);
@@ -7104,7 +7486,7 @@ var fetch = function fetch(fc) {
7104
7486
  api: api
7105
7487
  });
7106
7488
  });
7107
- });
7489
+ })["catch"](function (e) {});
7108
7490
  }, option.wait || 600));
7109
7491
  }
7110
7492
 
@@ -7238,6 +7620,57 @@ function sessionStorageDriver(name) {
7238
7620
  return baseDriver(getSessionStorage, name);
7239
7621
  }
7240
7622
 
7623
+ var baseLanguage = {
7624
+ en: {
7625
+ required: '{title} is required',
7626
+ validate: {
7627
+ url: '{title} is not a valid url',
7628
+ email: '{title} is not a valid email',
7629
+ ip: '{title} {title} is not a valid ip',
7630
+ phone: '{title} {title} is not a valid phone',
7631
+ pattern: '{title} does not match pattern {pattern}',
7632
+ uppercase: '{title} must be all uppercase',
7633
+ lowercase: '{title} must be all lowercased',
7634
+ positive: '{title} is not a positive number',
7635
+ negative: '{title} is not a negative number',
7636
+ equal: '{title} is not equal to {equal}',
7637
+ min: '{title} cannot be less than {min}',
7638
+ max: '{title} cannot be greater than {max}',
7639
+ "enum": '{title} must be one of {enum}',
7640
+ hasKeys: '{title} does not contain required fields {hasKeys}',
7641
+ minLen: '{title} must be at least {minLen}',
7642
+ maxLen: '{title} cannot be longer than {maxLen}',
7643
+ len: '{title} must be exactly {len}',
7644
+ integer: '{title} is not an integer',
7645
+ number: '{title} is not an number'
7646
+ }
7647
+ },
7648
+ 'zh-cn': {
7649
+ required: '{title}不能为空',
7650
+ validate: {
7651
+ url: '{title}不是有效的 url 地址',
7652
+ email: '{title}不是有效的邮箱地址',
7653
+ ip: '{title}不是有效的 IP 地址',
7654
+ phone: '{title}不是正确的手机号',
7655
+ pattern: '{title}必须匹配 {pattern}',
7656
+ uppercase: '{title}必须全大写',
7657
+ lowercase: '{title}必须全小写',
7658
+ positive: '{title}不是正数',
7659
+ negative: '{title}不是负数',
7660
+ equal: '{title}必须等于 {equal}',
7661
+ min: '{title}必须大于等于 {min}',
7662
+ max: '{title}必须小于等于 {max}',
7663
+ "enum": '{title}必须是 {enum} 之一',
7664
+ hasKeys: '{title}必须包含 {hasKeys} 字段',
7665
+ minLen: '{title}长度必须大于 {minLen}',
7666
+ maxLen: '{title}长度必须小于 {maxLen}',
7667
+ len: '{title}长度必须为 {len}',
7668
+ integer: '{title}必须为整数',
7669
+ number: '{title}必须为数字'
7670
+ }
7671
+ }
7672
+ };
7673
+
7241
7674
  function parseProp(name, id) {
7242
7675
  var prop;
7243
7676
 
@@ -7761,7 +8194,11 @@ function FormCreateFactory(config) {
7761
8194
 
7762
8195
  var _locale = this.getLocale();
7763
8196
 
7764
- value = deepGet(language[_locale], id);
8197
+ value = deepGet(language[_locale] || {}, id);
8198
+
8199
+ if (value == null) {
8200
+ value = deepGet(baseLanguage[_locale] || {}, id);
8201
+ }
7765
8202
  }
7766
8203
 
7767
8204
  return value;
@@ -7788,7 +8225,7 @@ function FormCreateFactory(config) {
7788
8225
  }
7789
8226
  });
7790
8227
  this.unwatch.push(unwatch);
7791
- return val;
8228
+ return deepGet(val, split);
7792
8229
  }
7793
8230
  }
7794
8231
  },
@@ -8438,7 +8875,6 @@ var manager = {
8438
8875
  e.preventDefault();
8439
8876
  }
8440
8877
  },
8441
- "class": [form.className, form["class"], 'form-create', this.$handle.preview ? 'is-preview' : ''],
8442
8878
  style: form.style,
8443
8879
  type: 'form'
8444
8880
  };
@@ -8447,9 +8883,11 @@ var manager = {
8447
8883
  var key = this.key,
8448
8884
  ref = this.ref,
8449
8885
  $handle = this.$handle;
8886
+ var form = this.options.form;
8450
8887
  extend(this.rule, {
8451
8888
  key: key,
8452
- ref: ref
8889
+ ref: ref,
8890
+ "class": [form.className, form["class"], 'form-create', this.$handle.preview ? 'is-preview' : '']
8453
8891
  });
8454
8892
  extend(this.rule.props, {
8455
8893
  model: $handle.formData
@@ -8783,7 +9221,9 @@ function extendApi(api, h) {
8783
9221
  return new Promise(function (resolve, reject) {
8784
9222
  var forms = api.children;
8785
9223
  var all = [h.$manager.validate()];
8786
- forms.forEach(function (v) {
9224
+ forms.filter(function (v) {
9225
+ return !v.isScope;
9226
+ }).forEach(function (v) {
8787
9227
  all.push(v.validate());
8788
9228
  });
8789
9229
  Promise.all(all).then(function () {
@@ -8804,7 +9244,9 @@ function extendApi(api, h) {
8804
9244
  if (!ctx) return;
8805
9245
  var sub = h.subForm[ctx.id];
8806
9246
  var all = [h.$manager.validateField(ctx.id)];
8807
- toArray(sub).forEach(function (v) {
9247
+ toArray(sub).filter(function (v) {
9248
+ return !v.isScope;
9249
+ }).forEach(function (v) {
8808
9250
  all.push(v.validate());
8809
9251
  });
8810
9252
  Promise.all(all).then(function () {
@@ -8907,16 +9349,19 @@ function extendApi(api, h) {
8907
9349
  },
8908
9350
  submit: function submit(successFn, failFn) {
8909
9351
  return new Promise(function (resolve, reject) {
8910
- api.validate().then(function () {
9352
+ var promise = h.options.validateOnSubmit === false ? Promise.resolve() : api.validate();
9353
+ promise.then(function () {
8911
9354
  var formData = api.formData();
8912
- is.Function(successFn) && invoke(function () {
8913
- return successFn(formData, api);
8914
- });
8915
- is.Function(h.options.onSubmit) && invoke(function () {
8916
- return h.options.onSubmit(formData, api);
8917
- });
8918
- h.vm.emit('submit', formData, api);
8919
- resolve(formData);
9355
+ h.beforeSubmit(formData).then(function () {
9356
+ is.Function(successFn) && invoke(function () {
9357
+ return successFn(formData, api);
9358
+ });
9359
+ is.Function(h.options.onSubmit) && invoke(function () {
9360
+ return h.options.onSubmit(formData, api);
9361
+ });
9362
+ h.vm.emit('submit', formData, api);
9363
+ resolve(formData);
9364
+ })["catch"](function (e) {});
8920
9365
  })["catch"](function () {
8921
9366
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
8922
9367
  args[_key] = arguments[_key];
@@ -9023,7 +9468,7 @@ function install(FormCreate) {
9023
9468
  function elmFormCreate() {
9024
9469
  return FormCreateFactory({
9025
9470
  ui: 'element-ui',
9026
- version: '3.2.20',
9471
+ version: '3.2.22',
9027
9472
  manager: manager,
9028
9473
  extendApi: extendApi,
9029
9474
  install: install,