@mdsfe/mds-ui 0.2.0

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.
Files changed (153) hide show
  1. package/CHANGELOG.md +778 -0
  2. package/LICENSE +21 -0
  3. package/README.md +106 -0
  4. package/dist/_locale/index.js +18 -0
  5. package/dist/_locale/zh-CN.js +123 -0
  6. package/dist/_mixin/emitter.js +35 -0
  7. package/dist/_mixin/focus.js +13 -0
  8. package/dist/_mixin/locale.js +17 -0
  9. package/dist/_mixin/popper.js +192 -0
  10. package/dist/_mixin/tooltip.js +218 -0
  11. package/dist/_util/__test__/switchcase.test.js +43 -0
  12. package/dist/_util/autoprefixer.js +249 -0
  13. package/dist/_util/clickoutside.js +79 -0
  14. package/dist/_util/date.js +368 -0
  15. package/dist/_util/dateUtil.js +311 -0
  16. package/dist/_util/dom.js +240 -0
  17. package/dist/_util/getRequestAnimationFrame.js +50 -0
  18. package/dist/_util/getScroll.js +21 -0
  19. package/dist/_util/loaders/loaders.css.js +52 -0
  20. package/dist/_util/loaders/loading.js +53 -0
  21. package/dist/_util/merge.js +18 -0
  22. package/dist/_util/popper.js +1261 -0
  23. package/dist/_util/popup/index.js +232 -0
  24. package/dist/_util/popup/popup-manager.js +205 -0
  25. package/dist/_util/proptype.js +12 -0
  26. package/dist/_util/repeatClick.js +30 -0
  27. package/dist/_util/resize.js +61 -0
  28. package/dist/_util/resizeEvent.js +59 -0
  29. package/dist/_util/scrollIntoView.js +38 -0
  30. package/dist/_util/scrollbar-width.js +37 -0
  31. package/dist/_util/soda.js +54 -0
  32. package/dist/_util/switchcase.js +22 -0
  33. package/dist/_util/throttleByAnimationFrame.js +70 -0
  34. package/dist/_util/tree/node.js +412 -0
  35. package/dist/_util/tree/tree.js +410 -0
  36. package/dist/_util/util.js +166 -0
  37. package/dist/_util/vue-popper.js +213 -0
  38. package/dist/affix.js +509 -0
  39. package/dist/anchor.js +522 -0
  40. package/dist/avatar.js +437 -0
  41. package/dist/backtop.js +469 -0
  42. package/dist/badge.js +439 -0
  43. package/dist/bordershadow.js +310 -0
  44. package/dist/breadcrumb.js +434 -0
  45. package/dist/button.js +579 -0
  46. package/dist/card.js +514 -0
  47. package/dist/carousel.js +1326 -0
  48. package/dist/cascaderpanel.js +2320 -0
  49. package/dist/checkbox.js +681 -0
  50. package/dist/col.js +546 -0
  51. package/dist/collapse.js +671 -0
  52. package/dist/color.js +306 -0
  53. package/dist/datepicker.js +8089 -0
  54. package/dist/divider.js +346 -0
  55. package/dist/drawer.js +652 -0
  56. package/dist/dropdown.js +687 -0
  57. package/dist/empty.js +416 -0
  58. package/dist/font.js +306 -0
  59. package/dist/form.js +878 -0
  60. package/dist/icon.js +401 -0
  61. package/dist/index.js +1 -0
  62. package/dist/input.js +1251 -0
  63. package/dist/inputnumber.js +689 -0
  64. package/dist/layout.js +786 -0
  65. package/dist/list.js +789 -0
  66. package/dist/loading.js +430 -0
  67. package/dist/mds-ui.min.css +7 -0
  68. package/dist/mds-ui.min.js +64911 -0
  69. package/dist/menu.js +1131 -0
  70. package/dist/message.js +1016 -0
  71. package/dist/modal.js +895 -0
  72. package/dist/notification.js +818 -0
  73. package/dist/pagination.js +1213 -0
  74. package/dist/popconfirm.js +336 -0
  75. package/dist/popover.js +206 -0
  76. package/dist/progress.js +1023 -0
  77. package/dist/radio.js +760 -0
  78. package/dist/rate.js +765 -0
  79. package/dist/row.js +546 -0
  80. package/dist/select.js +4950 -0
  81. package/dist/slider.js +1411 -0
  82. package/dist/slottable.js +1414 -0
  83. package/dist/steps.js +546 -0
  84. package/dist/style/affix.css +5524 -0
  85. package/dist/style/anchor.css +5572 -0
  86. package/dist/style/avatar.css +5587 -0
  87. package/dist/style/backtop.css +34 -0
  88. package/dist/style/badge.css +5655 -0
  89. package/dist/style/bordershadow.css +5601 -0
  90. package/dist/style/breadcrumb.css +5551 -0
  91. package/dist/style/button.css +7679 -0
  92. package/dist/style/card.css +5670 -0
  93. package/dist/style/carousel.css +5731 -0
  94. package/dist/style/cascaderpanel.css +125 -0
  95. package/dist/style/checkbox.css +5700 -0
  96. package/dist/style/col.css +8121 -0
  97. package/dist/style/collapse.css +5593 -0
  98. package/dist/style/color.css +6136 -0
  99. package/dist/style/datepicker.css +5977 -0
  100. package/dist/style/divider.css +5558 -0
  101. package/dist/style/drawer.css +7979 -0
  102. package/dist/style/dropdown.css +7950 -0
  103. package/dist/style/empty.css +5563 -0
  104. package/dist/style/font.css +5559 -0
  105. package/dist/style/form.css +5662 -0
  106. package/dist/style/icon.css +5538 -0
  107. package/dist/style/input.css +6256 -0
  108. package/dist/style/inputnumber.css +5828 -0
  109. package/dist/style/layout.css +5572 -0
  110. package/dist/style/list.css +5655 -0
  111. package/dist/style/loading.css +5540 -0
  112. package/dist/style/menu.css +6183 -0
  113. package/dist/style/message.css +194 -0
  114. package/dist/style/modal.css +5637 -0
  115. package/dist/style/notification.css +5706 -0
  116. package/dist/style/pagination.css +6683 -0
  117. package/dist/style/popconfirm.css +7951 -0
  118. package/dist/style/popover.css +5727 -0
  119. package/dist/style/progress.css +5714 -0
  120. package/dist/style/radio.css +5769 -0
  121. package/dist/style/rate.css +5616 -0
  122. package/dist/style/row.css +8121 -0
  123. package/dist/style/select.css +5729 -0
  124. package/dist/style/slider.css +5594 -0
  125. package/dist/style/slottable.css +5831 -0
  126. package/dist/style/steps.css +6100 -0
  127. package/dist/style/switch.css +5624 -0
  128. package/dist/style/table.css +8392 -0
  129. package/dist/style/tabs.css +6047 -0
  130. package/dist/style/tag.css +5935 -0
  131. package/dist/style/text.css +5636 -0
  132. package/dist/style/timeline.css +5602 -0
  133. package/dist/style/timepicker.css +5904 -0
  134. package/dist/style/tooltip.css +5686 -0
  135. package/dist/style/transfer.css +101 -0
  136. package/dist/style/transition.css +1417 -0
  137. package/dist/style/tree.css +5598 -0
  138. package/dist/style/typography.css +5640 -0
  139. package/dist/style/upload.css +5834 -0
  140. package/dist/switch.js +448 -0
  141. package/dist/table.js +3809 -0
  142. package/dist/tabs.js +1273 -0
  143. package/dist/tag.js +478 -0
  144. package/dist/text.js +1100 -0
  145. package/dist/timeline.js +495 -0
  146. package/dist/timepicker.js +1567 -0
  147. package/dist/tooltip.js +179 -0
  148. package/dist/transfer.js +981 -0
  149. package/dist/transition.js +246 -0
  150. package/dist/tree.js +1866 -0
  151. package/dist/typography.js +469 -0
  152. package/dist/upload.js +1990 -0
  153. package/package.json +144 -0
package/dist/form.js ADDED
@@ -0,0 +1,878 @@
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory(require("./_mixin/emitter"));
4
+ else if(typeof define === 'function' && define.amd)
5
+ define(["./_mixin/emitter"], factory);
6
+ else {
7
+ var a = typeof exports === 'object' ? factory(require("./_mixin/emitter")) : factory(root["./_mixin/emitter"]);
8
+ for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
9
+ }
10
+ })(window, function(__WEBPACK_EXTERNAL_MODULE__6__) {
11
+ return /******/ (function(modules) { // webpackBootstrap
12
+ /******/ // The module cache
13
+ /******/ var installedModules = {};
14
+ /******/
15
+ /******/ // The require function
16
+ /******/ function __webpack_require__(moduleId) {
17
+ /******/
18
+ /******/ // Check if module is in cache
19
+ /******/ if(installedModules[moduleId]) {
20
+ /******/ return installedModules[moduleId].exports;
21
+ /******/ }
22
+ /******/ // Create a new module (and put it into the cache)
23
+ /******/ var module = installedModules[moduleId] = {
24
+ /******/ i: moduleId,
25
+ /******/ l: false,
26
+ /******/ exports: {}
27
+ /******/ };
28
+ /******/
29
+ /******/ // Execute the module function
30
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31
+ /******/
32
+ /******/ // Flag the module as loaded
33
+ /******/ module.l = true;
34
+ /******/
35
+ /******/ // Return the exports of the module
36
+ /******/ return module.exports;
37
+ /******/ }
38
+ /******/
39
+ /******/
40
+ /******/ // expose the modules object (__webpack_modules__)
41
+ /******/ __webpack_require__.m = modules;
42
+ /******/
43
+ /******/ // expose the module cache
44
+ /******/ __webpack_require__.c = installedModules;
45
+ /******/
46
+ /******/ // define getter function for harmony exports
47
+ /******/ __webpack_require__.d = function(exports, name, getter) {
48
+ /******/ if(!__webpack_require__.o(exports, name)) {
49
+ /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
50
+ /******/ }
51
+ /******/ };
52
+ /******/
53
+ /******/ // define __esModule on exports
54
+ /******/ __webpack_require__.r = function(exports) {
55
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57
+ /******/ }
58
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
59
+ /******/ };
60
+ /******/
61
+ /******/ // create a fake namespace object
62
+ /******/ // mode & 1: value is a module id, require it
63
+ /******/ // mode & 2: merge all properties of value into the ns
64
+ /******/ // mode & 4: return value when already ns object
65
+ /******/ // mode & 8|1: behave like require
66
+ /******/ __webpack_require__.t = function(value, mode) {
67
+ /******/ if(mode & 1) value = __webpack_require__(value);
68
+ /******/ if(mode & 8) return value;
69
+ /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70
+ /******/ var ns = Object.create(null);
71
+ /******/ __webpack_require__.r(ns);
72
+ /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73
+ /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74
+ /******/ return ns;
75
+ /******/ };
76
+ /******/
77
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
78
+ /******/ __webpack_require__.n = function(module) {
79
+ /******/ var getter = module && module.__esModule ?
80
+ /******/ function getDefault() { return module['default']; } :
81
+ /******/ function getModuleExports() { return module; };
82
+ /******/ __webpack_require__.d(getter, 'a', getter);
83
+ /******/ return getter;
84
+ /******/ };
85
+ /******/
86
+ /******/ // Object.prototype.hasOwnProperty.call
87
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88
+ /******/
89
+ /******/ // __webpack_public_path__
90
+ /******/ __webpack_require__.p = "/dist/";
91
+ /******/
92
+ /******/
93
+ /******/ // Load entry module and return exports
94
+ /******/ return __webpack_require__(__webpack_require__.s = 109);
95
+ /******/ })
96
+ /************************************************************************/
97
+ /******/ ({
98
+
99
+ /***/ 0:
100
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
101
+
102
+ "use strict";
103
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return normalizeComponent; });
104
+ /* globals __VUE_SSR_CONTEXT__ */
105
+
106
+ // IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
107
+ // This module is a runtime utility for cleaner component module output and will
108
+ // be included in the final webpack user bundle.
109
+
110
+ function normalizeComponent (
111
+ scriptExports,
112
+ render,
113
+ staticRenderFns,
114
+ functionalTemplate,
115
+ injectStyles,
116
+ scopeId,
117
+ moduleIdentifier, /* server only */
118
+ shadowMode /* vue-cli only */
119
+ ) {
120
+ // Vue.extend constructor export interop
121
+ var options = typeof scriptExports === 'function'
122
+ ? scriptExports.options
123
+ : scriptExports
124
+
125
+ // render functions
126
+ if (render) {
127
+ options.render = render
128
+ options.staticRenderFns = staticRenderFns
129
+ options._compiled = true
130
+ }
131
+
132
+ // functional template
133
+ if (functionalTemplate) {
134
+ options.functional = true
135
+ }
136
+
137
+ // scopedId
138
+ if (scopeId) {
139
+ options._scopeId = 'data-v-' + scopeId
140
+ }
141
+
142
+ var hook
143
+ if (moduleIdentifier) { // server build
144
+ hook = function (context) {
145
+ // 2.3 injection
146
+ context =
147
+ context || // cached call
148
+ (this.$vnode && this.$vnode.ssrContext) || // stateful
149
+ (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
150
+ // 2.2 with runInNewContext: true
151
+ if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
152
+ context = __VUE_SSR_CONTEXT__
153
+ }
154
+ // inject component styles
155
+ if (injectStyles) {
156
+ injectStyles.call(this, context)
157
+ }
158
+ // register component module identifier for async chunk inferrence
159
+ if (context && context._registeredComponents) {
160
+ context._registeredComponents.add(moduleIdentifier)
161
+ }
162
+ }
163
+ // used by ssr in case component is cached and beforeCreate
164
+ // never gets called
165
+ options._ssrRegister = hook
166
+ } else if (injectStyles) {
167
+ hook = shadowMode
168
+ ? function () {
169
+ injectStyles.call(
170
+ this,
171
+ (options.functional ? this.parent : this).$root.$options.shadowRoot
172
+ )
173
+ }
174
+ : injectStyles
175
+ }
176
+
177
+ if (hook) {
178
+ if (options.functional) {
179
+ // for template-only hot-reload because in that case the render fn doesn't
180
+ // go through the normalizer
181
+ options._injectStyles = hook
182
+ // register for functional component in vue file
183
+ var originalRender = options.render
184
+ options.render = function renderWithStyleInjection (h, context) {
185
+ hook.call(context)
186
+ return originalRender(h, context)
187
+ }
188
+ } else {
189
+ // inject component registration as beforeCreate hook
190
+ var existing = options.beforeCreate
191
+ options.beforeCreate = existing
192
+ ? [].concat(existing, hook)
193
+ : [hook]
194
+ }
195
+ }
196
+
197
+ return {
198
+ exports: scriptExports,
199
+ options: options
200
+ }
201
+ }
202
+
203
+
204
+ /***/ }),
205
+
206
+ /***/ 109:
207
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
208
+
209
+ "use strict";
210
+ // ESM COMPAT FLAG
211
+ __webpack_require__.r(__webpack_exports__);
212
+
213
+ // EXTERNAL MODULE: ./components/style/index.less
214
+ var style = __webpack_require__(131);
215
+
216
+ // EXTERNAL MODULE: ./components/form/style/index.less
217
+ var form_style = __webpack_require__(261);
218
+
219
+ // CONCATENATED MODULE: ./components/form/style/index.js
220
+
221
+
222
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/form/form-item.vue?vue&type=template&id=20a3a46c&
223
+ var render = function () {
224
+ var _vm = this
225
+ var _h = _vm.$createElement
226
+ var _c = _vm._self._c || _h
227
+ return _c("div", { class: _vm.classes }, [
228
+ _vm.label || _vm.$slots.label
229
+ ? _c(
230
+ "label",
231
+ { class: _vm.prefixCls + "-label", style: _vm.labelStyle },
232
+ [
233
+ _vm._t("label", [
234
+ _c("div", { class: _vm.prefixCls + "-label-content" }, [
235
+ _vm._v(_vm._s(_vm.label)),
236
+ ]),
237
+ ]),
238
+ ],
239
+ 2
240
+ )
241
+ : _vm._e(),
242
+ _c(
243
+ "div",
244
+ {
245
+ class: _vm.prefixCls + "-content",
246
+ style: { marginLeft: _vm.contentMarginLeft },
247
+ },
248
+ [
249
+ _vm._t("default"),
250
+ _vm.status === "error" && _vm.errorMessage
251
+ ? _c(
252
+ "div",
253
+ { class: _vm.prefixCls + "-content_error" },
254
+ [
255
+ _c("mds-icon", { attrs: { type: "fill-solid-wrong-circle" } }),
256
+ _vm._v("\n " + _vm._s(_vm.errorMessage) + "\n "),
257
+ ],
258
+ 1
259
+ )
260
+ : _vm._e(),
261
+ ],
262
+ 2
263
+ ),
264
+ ])
265
+ }
266
+ var staticRenderFns = []
267
+ render._withStripped = true
268
+
269
+
270
+ // CONCATENATED MODULE: ./components/form/form-item.vue?vue&type=template&id=20a3a46c&
271
+
272
+ // EXTERNAL MODULE: external "babel-runtime/core-js/object/assign"
273
+ var assign_ = __webpack_require__(9);
274
+ var assign_default = /*#__PURE__*/__webpack_require__.n(assign_);
275
+
276
+ // EXTERNAL MODULE: external "babel-runtime/core-js/json/stringify"
277
+ var stringify_ = __webpack_require__(21);
278
+ var stringify_default = /*#__PURE__*/__webpack_require__.n(stringify_);
279
+
280
+ // EXTERNAL MODULE: external "./_mixin/emitter"
281
+ var emitter_ = __webpack_require__(6);
282
+ var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);
283
+
284
+ // EXTERNAL MODULE: external "async-validator"
285
+ var external_async_validator_ = __webpack_require__(70);
286
+ var external_async_validator_default = /*#__PURE__*/__webpack_require__.n(external_async_validator_);
287
+
288
+ // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/form/form-item.vue?vue&type=script&lang=js&
289
+
290
+
291
+ //
292
+ //
293
+ //
294
+ //
295
+ //
296
+ //
297
+ //
298
+ //
299
+ //
300
+ //
301
+ //
302
+ //
303
+ //
304
+ //
305
+ //
306
+ //
307
+ //
308
+ //
309
+ //
310
+ //
311
+ //
312
+ //
313
+ //
314
+ //
315
+
316
+ // import { oneOf } from 'mds-ui/_util/proptype'
317
+
318
+
319
+
320
+ /* harmony default export */ var form_itemvue_type_script_lang_js_ = ({
321
+ name: 'MdsFormItem',
322
+ componentName: 'MdsFormItem',
323
+ props: {
324
+ label: String,
325
+ labelWidth: String | Number,
326
+ prop: String,
327
+ rules: [Object, Array],
328
+ required: {
329
+ type: Boolean,
330
+ default: undefined
331
+ },
332
+ error: String
333
+ },
334
+ mixins: [emitter_default.a],
335
+ inject: ['MdsForm'],
336
+ data: function data() {
337
+ return {
338
+ prefixCls: 'mds-form-item',
339
+ status: '',
340
+ requiredFromRules: undefined,
341
+ errorMessage: '',
342
+ initVal: undefined // 初始值 用于reset
343
+ };
344
+ },
345
+
346
+ watch: {
347
+ error: {
348
+ immediate: true,
349
+ handler: function handler(val) {
350
+ this.errorMessage = val || '';
351
+ this.status = val ? 'error' : '';
352
+ }
353
+ }
354
+ },
355
+ computed: {
356
+ contentMarginLeft: function contentMarginLeft() {
357
+ if (!this.label && !this.$slots.label) {
358
+ if (this.labelWidth !== undefined) {
359
+ return this.labelWidth;
360
+ }
361
+ if (this.form.labelWidth) return this.form.labelWidth;
362
+ }
363
+ },
364
+ classes: function classes() {
365
+ var _this = this;
366
+
367
+ var prefixCls = this.prefixCls;
368
+
369
+ var rules = this.getRules();
370
+ if (this.prop) {
371
+ rules.every(function (rule) {
372
+ if (rule.required) {
373
+ _this.requiredFromRules = true;
374
+ return false;
375
+ }
376
+ return true;
377
+ });
378
+ }
379
+
380
+ var required = (this.requiredFromRules || this.required) && prefixCls + '-required' || '';
381
+
382
+ var tipType = this.status === 'error' ? prefixCls + '-error' : '';
383
+
384
+ return ['' + prefixCls, required, tipType];
385
+ },
386
+ labelStyle: function labelStyle() {
387
+ var ret = {};
388
+
389
+ if (this.labelWidth !== undefined) {
390
+ ret.width = this.labelWidth;
391
+ } else {
392
+ var labelWidth = this.labelWidth || this.form.labelWidth;
393
+ if (labelWidth && this.showLableWidth()) {
394
+ ret.width = labelWidth;
395
+ }
396
+ }
397
+
398
+ var extAlignArr = ['start', 'end', 'left', 'right', 'center', 'justify'];
399
+ if (this.form.labelPosition && extAlignArr.indexOf(this.form.labelPosition) > -1) {
400
+ ret.textAlign = this.form.labelPosition;
401
+ } else {
402
+ ret.textAlign = 'right';
403
+ }
404
+
405
+ return ret;
406
+ },
407
+
408
+ // contentStyle() {
409
+ // const ret = {}
410
+ // const labelWidth = this.labelWidth || this.form.labelWidth
411
+ // if (labelWidth && this.showLableWidth()) {
412
+ // ret.marginLeft = labelWidth
413
+ // }
414
+ // return ret
415
+ // },
416
+ form: function form() {
417
+ var parent = this.$parent;
418
+ var parentName = parent.$options.name;
419
+ while (parentName !== 'MdsForm') {
420
+ parent = parent.$parent;
421
+ parentName = parent.$options.name;
422
+ }
423
+ return parent;
424
+ },
425
+ selfValue: function selfValue() {
426
+ var model = this.form.model;
427
+ if (!model || !this.prop) return;
428
+
429
+ // form.tableData[1].ehrFieldName
430
+ var _prop = this.prop.replace(/\[(\w+)\]/g, '.$1');
431
+
432
+ var propArr = _prop.split('.');
433
+ var res = model;
434
+ for (var i = 0; i < propArr.length; i++) {
435
+ if (propArr[i]) res = res[propArr[i]];
436
+ }
437
+ console.log('selfValue => ', res);
438
+
439
+ return res;
440
+ }
441
+ },
442
+
443
+ mounted: function mounted() {
444
+ if (this.prop) {
445
+ this.initVal = this.selfValue === undefined ? undefined : JSON.parse(stringify_default()(this.selfValue));
446
+
447
+ this.dispatch('MdsForm', 'formItemValidate', this);
448
+
449
+ this.$on('formItemChange', this.formItemChange);
450
+ this.$on('formItemBlur', this.formItemBlur);
451
+ }
452
+ },
453
+ beforeDestroy: function beforeDestroy() {
454
+ this.dispatch('MdsForm', 'formItemDestroyed', this);
455
+ },
456
+
457
+
458
+ methods: {
459
+ clearValidate: function clearValidate() {
460
+ this.status = '';
461
+ this.errorMessage = '';
462
+ },
463
+
464
+
465
+ // 重置
466
+ resetField: function resetField() {
467
+ var _this2 = this;
468
+
469
+ this.form.model[this.prop] = this.initVal === undefined ? undefined : JSON.parse(stringify_default()(this.initVal));
470
+ this.$nextTick(function () {
471
+ _this2.clearValidate();
472
+ });
473
+ },
474
+ showLableWidth: function showLableWidth() {
475
+ var alignPosition = this.form.alignPosition;
476
+
477
+ return alignPosition === 'horizontal' || alignPosition === '';
478
+ },
479
+
480
+
481
+ // value change 触发validate
482
+ formItemChange: function formItemChange() {
483
+ this.validate('change');
484
+ console.log('formItemChange');
485
+ },
486
+
487
+
488
+ // input blur 触发validate
489
+ formItemBlur: function formItemBlur() {
490
+ this.validate('blur');
491
+ console.log('formItemBlur');
492
+ },
493
+ validate: function validate(trigger) {
494
+ var _this3 = this;
495
+
496
+ var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
497
+
498
+ var rules = trigger ? this.getRules().filter(function (item) {
499
+ return Array.isArray(item.trigger) ? item.trigger.indexOf(trigger) > -1 : item.trigger === trigger;
500
+ }).map(function (item) {
501
+ return assign_default()({}, item);
502
+ }) : this.getRules().map(function (item) {
503
+ return assign_default()({}, item);
504
+ });
505
+
506
+ console.log('rules => ', stringify_default()(rules));
507
+ if ((!rules || !rules.length) && this.required === undefined) {
508
+ callback();
509
+ return true;
510
+ }
511
+
512
+ // 删除trigger 解决部分非String类型表单项提示校验未通过 async-validator: ["xxx is not a string"]
513
+ if (rules && rules.length > 0) {
514
+ rules.forEach(function (rule) {
515
+ delete rule.trigger;
516
+ });
517
+ }
518
+
519
+ var descriptor = {};
520
+ descriptor[this.prop] = rules;
521
+
522
+ var model = {};
523
+ model[this.prop] = this.selfValue; // {name: 'abc'}
524
+
525
+ console.log('descriptor => ', descriptor);
526
+ var validator = new external_async_validator_default.a(descriptor);
527
+ validator.validate(model, { firstFields: true }, function (errors, fields) {
528
+ console.log('errors -> ', errors);
529
+ console.log('fields -> ', fields);
530
+ if (errors) {
531
+ // validation failed, errors is an array of all errors
532
+ // fields is an object keyed by field name with an array of
533
+ // errors per field
534
+ // return handleErrors(errors, fields);
535
+ _this3.status = 'error';
536
+ _this3.errorMessage = errors[0].message;
537
+ } else {
538
+ _this3.status = 'success';
539
+ _this3.errorMessage = '';
540
+ }
541
+ callback(_this3.errorMessage, fields, !errors);
542
+ // this.elForm && this.elForm.$emit('validate', this.prop, !errors, this.validateMessage || null);
543
+ });
544
+ },
545
+
546
+
547
+ // 获取当前rules
548
+ getRules: function getRules() {
549
+ var rulesFromParent = this.MdsForm.rules && this.MdsForm.rules[this.prop];
550
+ var selfRules = this.rules;
551
+ var requiredRule = this.required !== undefined ? { required: !!this.required } : [];
552
+
553
+ var res = [].concat(selfRules || rulesFromParent || []).concat(requiredRule);
554
+ return res;
555
+ }
556
+ }
557
+ });
558
+ // CONCATENATED MODULE: ./components/form/form-item.vue?vue&type=script&lang=js&
559
+ /* harmony default export */ var form_form_itemvue_type_script_lang_js_ = (form_itemvue_type_script_lang_js_);
560
+ // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
561
+ var componentNormalizer = __webpack_require__(0);
562
+
563
+ // CONCATENATED MODULE: ./components/form/form-item.vue
564
+
565
+
566
+
567
+
568
+
569
+ /* normalize component */
570
+
571
+ var component = Object(componentNormalizer["a" /* default */])(
572
+ form_form_itemvue_type_script_lang_js_,
573
+ render,
574
+ staticRenderFns,
575
+ false,
576
+ null,
577
+ null,
578
+ null
579
+
580
+ )
581
+
582
+ /* hot reload */
583
+ if (false) { var api; }
584
+ component.options.__file = "components/form/form-item.vue"
585
+ /* harmony default export */ var form_item = (component.exports);
586
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/form/form.vue?vue&type=template&id=68392104&
587
+ var formvue_type_template_id_68392104_render = function () {
588
+ var _vm = this
589
+ var _h = _vm.$createElement
590
+ var _c = _vm._self._c || _h
591
+ return _c("form", { class: _vm.classes }, [_vm._t("default")], 2)
592
+ }
593
+ var formvue_type_template_id_68392104_staticRenderFns = []
594
+ formvue_type_template_id_68392104_render._withStripped = true
595
+
596
+
597
+ // CONCATENATED MODULE: ./components/form/form.vue?vue&type=template&id=68392104&
598
+
599
+ // EXTERNAL MODULE: external "babel-runtime/core-js/promise"
600
+ var promise_ = __webpack_require__(71);
601
+ var promise_default = /*#__PURE__*/__webpack_require__.n(promise_);
602
+
603
+ // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/form/form.vue?vue&type=script&lang=js&
604
+
605
+
606
+ //
607
+ //
608
+ //
609
+ //
610
+ //
611
+ //
612
+
613
+ // import { oneOf } from 'mds-ui/_util/proptype'
614
+
615
+ /* harmony default export */ var formvue_type_script_lang_js_ = ({
616
+ name: 'MdsForm',
617
+ componentName: 'MdsForm',
618
+ provide: function provide() {
619
+ return {
620
+ MdsForm: this
621
+ };
622
+ },
623
+
624
+ props: {
625
+ labelWidth: {
626
+ type: String,
627
+ default: ''
628
+ },
629
+
630
+ labelPosition: {
631
+ type: String,
632
+ default: 'right'
633
+ },
634
+
635
+ alignPosition: {
636
+ type: String,
637
+ default: ''
638
+ },
639
+
640
+ formSize: {
641
+ type: String,
642
+ default: 'medium'
643
+ },
644
+
645
+ model: {
646
+ type: Object
647
+ },
648
+
649
+ rules: {
650
+ type: Object
651
+ }
652
+ },
653
+ data: function data() {
654
+ return {
655
+ prefixCls: 'mds-form',
656
+ clicked: false,
657
+ timeout: null,
658
+ delayTimeout: null,
659
+ isLoading: false,
660
+ justText: false,
661
+ fields: []
662
+ };
663
+ },
664
+
665
+ watch: {
666
+ rules: function rules(val) {
667
+ console.log('form - watch - rules -> ', val);
668
+ }
669
+ },
670
+ computed: {
671
+ children: function children() {
672
+ return this.$slots.default;
673
+ },
674
+ classes: function classes() {
675
+ var prefixCls = this.prefixCls,
676
+ alignPosition = this.alignPosition,
677
+ formSize = this.formSize;
678
+
679
+
680
+ var alignPositionCls = alignPosition ? prefixCls + '-' + alignPosition : '';
681
+ var sizeCls = !formSize || formSize === 'medium' ? '' : prefixCls + '-size-' + formSize;
682
+ return ['' + prefixCls, alignPositionCls, sizeCls];
683
+ }
684
+ },
685
+ created: function created() {
686
+ var _this = this;
687
+
688
+ this.$on('formItemValidate', function (field) {
689
+ console.log('field -> ', field);
690
+ field.prop && _this.fields.push(field);
691
+ });
692
+ this.$on('formItemDestroyed', function (field) {
693
+ console.log('field -> ', field);
694
+ field.prop && _this.fields.splice(_this.fields.indexOf(field), 1);
695
+ });
696
+ },
697
+
698
+ methods: {
699
+ // 清除校验
700
+ clearValidates: function clearValidates() {
701
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
702
+
703
+ var fields = this.getFields(props);
704
+
705
+ fields.forEach(function (item) {
706
+ item.clearValidate && item.clearValidate();
707
+ });
708
+ },
709
+
710
+
711
+ // 手动校验
712
+ validateFields: function validateFields() {
713
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
714
+
715
+ var fields = this.getFields(props);
716
+
717
+ fields.forEach(function (item) {
718
+ item.clearValidate && item.validate();
719
+ });
720
+ },
721
+
722
+
723
+ // 重置
724
+ resetFields: function resetFields() {
725
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
726
+
727
+ var fields = this.getFields(props);
728
+
729
+ console.log('resetFields - fields -> ', fields);
730
+
731
+ fields.forEach(function (item) {
732
+ item.clearValidate && item.resetField();
733
+ });
734
+ },
735
+ getFields: function getFields(props) {
736
+ if (!this.fields.length) return [];
737
+
738
+ var fields = [].concat(props);
739
+ var resFields = this.fields.filter(function (item) {
740
+ return fields.indexOf(item.prop) > -1;
741
+ });
742
+
743
+ return resFields.length ? resFields : this.fields;
744
+ },
745
+ validate: function validate(callback) {
746
+ var _this2 = this;
747
+
748
+ if (!this.model) {
749
+ console.log('未绑定model');
750
+ return;
751
+ }
752
+
753
+ var promise = void 0;
754
+ if (typeof callback !== 'function') {
755
+ promise = new promise_default.a(function (resolve, reject) {
756
+ callback = function callback(valid) {
757
+ valid ? resolve(valid) : reject(valid);
758
+ };
759
+ });
760
+ }
761
+
762
+ var valid = true;
763
+ var count = 0;
764
+
765
+ if (!this.fields.length) {
766
+ console.log('没有需要验证的 formItem');
767
+ callback(valid);
768
+ return;
769
+ }
770
+
771
+ var failFields = {};
772
+ this.fields.forEach(function (item) {
773
+ item.validate('', function (errorMessage, fields, validateStatus) {
774
+ console.log('表单校验');
775
+ if (!validateStatus) valid = false;
776
+ failFields = assign_default()({}, failFields, fields);
777
+ if (typeof callback === 'function' && ++count === _this2.fields.length) {
778
+ callback(valid, failFields);
779
+ }
780
+ });
781
+ });
782
+
783
+ if (promise) return promise;
784
+ }
785
+ }
786
+ });
787
+ // CONCATENATED MODULE: ./components/form/form.vue?vue&type=script&lang=js&
788
+ /* harmony default export */ var form_formvue_type_script_lang_js_ = (formvue_type_script_lang_js_);
789
+ // CONCATENATED MODULE: ./components/form/form.vue
790
+
791
+
792
+
793
+
794
+
795
+ /* normalize component */
796
+
797
+ var form_component = Object(componentNormalizer["a" /* default */])(
798
+ form_formvue_type_script_lang_js_,
799
+ formvue_type_template_id_68392104_render,
800
+ formvue_type_template_id_68392104_staticRenderFns,
801
+ false,
802
+ null,
803
+ null,
804
+ null
805
+
806
+ )
807
+
808
+ /* hot reload */
809
+ if (false) { var form_api; }
810
+ form_component.options.__file = "components/form/form.vue"
811
+ /* harmony default export */ var form_form = (form_component.exports);
812
+ // CONCATENATED MODULE: ./components/form/index.js
813
+
814
+
815
+
816
+
817
+ form_form.Item = form_item;
818
+ /* istanbul ignore next */
819
+ form_form.install = function (Vue) {
820
+ Vue.component(form_item.name, form_item);
821
+ Vue.component(form_form.name, form_form);
822
+ };
823
+
824
+ /* harmony default export */ var components_form = __webpack_exports__["default"] = (form_form);
825
+
826
+ /***/ }),
827
+
828
+ /***/ 131:
829
+ /***/ (function(module, exports) {
830
+
831
+ // removed by extract-text-webpack-plugin
832
+
833
+ /***/ }),
834
+
835
+ /***/ 21:
836
+ /***/ (function(module, exports) {
837
+
838
+ module.exports = require("babel-runtime/core-js/json/stringify");
839
+
840
+ /***/ }),
841
+
842
+ /***/ 261:
843
+ /***/ (function(module, exports) {
844
+
845
+ // removed by extract-text-webpack-plugin
846
+
847
+ /***/ }),
848
+
849
+ /***/ 6:
850
+ /***/ (function(module, exports) {
851
+
852
+ module.exports = __WEBPACK_EXTERNAL_MODULE__6__;
853
+
854
+ /***/ }),
855
+
856
+ /***/ 70:
857
+ /***/ (function(module, exports) {
858
+
859
+ module.exports = require("async-validator");
860
+
861
+ /***/ }),
862
+
863
+ /***/ 71:
864
+ /***/ (function(module, exports) {
865
+
866
+ module.exports = require("babel-runtime/core-js/promise");
867
+
868
+ /***/ }),
869
+
870
+ /***/ 9:
871
+ /***/ (function(module, exports) {
872
+
873
+ module.exports = require("babel-runtime/core-js/object/assign");
874
+
875
+ /***/ })
876
+
877
+ /******/ });
878
+ });