@mdsfe/mds-ui 0.2.11-rc.8 → 0.3.0-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/dist/_locale/default.js +18 -0
  3. package/dist/_locale/format.js +54 -0
  4. package/dist/_locale/index.js +56 -6
  5. package/dist/_locale/lang/en.js +144 -0
  6. package/dist/_locale/{zh-CN.js → lang/zh-CN.js} +22 -3
  7. package/dist/_mixin/locale.js +1 -1
  8. package/dist/_util/iconfont/index.js +12 -13
  9. package/dist/_util/util.js +7 -0
  10. package/dist/affix.js +6 -6
  11. package/dist/alert.js +6 -6
  12. package/dist/anchor.js +6 -6
  13. package/dist/avatar.js +17 -8
  14. package/dist/backtop.js +11 -11
  15. package/dist/badge.js +17 -17
  16. package/dist/bordershadow.js +6 -6
  17. package/dist/breadcrumb.js +6 -6
  18. package/dist/button.js +6 -6
  19. package/dist/card.js +6 -6
  20. package/dist/carousel.js +80 -80
  21. package/dist/cascader.js +96 -61
  22. package/dist/cascaderpanel.js +54 -29
  23. package/dist/checkbox.js +10 -10
  24. package/dist/col.js +10 -10
  25. package/dist/collapse.js +6 -6
  26. package/dist/color.js +6 -6
  27. package/dist/datepicker.js +287 -280
  28. package/dist/divider.js +6 -6
  29. package/dist/drawer.js +20 -20
  30. package/dist/dropdown.js +19 -19
  31. package/dist/empty.js +31 -14
  32. package/dist/font/iconfont.06f3ab6.woff2 +0 -0
  33. package/dist/font/{iconfont.78779fe.ttf → iconfont.3bffbc2.ttf} +0 -0
  34. package/dist/font/iconfont.dd6d5df.woff +0 -0
  35. package/dist/font.js +6 -6
  36. package/dist/form.js +14 -14
  37. package/dist/icon.js +6 -6
  38. package/dist/index.js +1 -1
  39. package/dist/input.js +16 -16
  40. package/dist/inputnumber.js +13 -13
  41. package/dist/layout.js +6 -6
  42. package/dist/list.js +6 -6
  43. package/dist/loading.js +6 -6
  44. package/dist/mds-ui.min.css +1 -1
  45. package/dist/mds-ui.min.js +1884 -1386
  46. package/dist/menu.js +18 -18
  47. package/dist/message.js +10 -10
  48. package/dist/modal.js +60 -38
  49. package/dist/notification.js +20 -20
  50. package/dist/pagination.js +75 -35
  51. package/dist/popconfirm.js +561 -31
  52. package/dist/popover.js +27 -27
  53. package/dist/progress.js +6 -6
  54. package/dist/radio.js +10 -10
  55. package/dist/rate.js +10 -10
  56. package/dist/row.js +10 -10
  57. package/dist/select.js +99 -79
  58. package/dist/slider.js +58 -37
  59. package/dist/slottable.js +75 -50
  60. package/dist/steps.js +6 -6
  61. package/dist/style/affix.css +299 -2
  62. package/dist/style/alert.css +299 -2
  63. package/dist/style/anchor.css +299 -2
  64. package/dist/style/avatar.css +299 -2
  65. package/dist/style/badge.css +299 -2
  66. package/dist/style/bordershadow.css +299 -2
  67. package/dist/style/breadcrumb.css +299 -2
  68. package/dist/style/button.css +299 -2
  69. package/dist/style/card.css +299 -2
  70. package/dist/style/carousel.css +299 -2
  71. package/dist/style/checkbox.css +299 -2
  72. package/dist/style/col.css +299 -2
  73. package/dist/style/collapse.css +299 -2
  74. package/dist/style/color.css +299 -2
  75. package/dist/style/datepicker.css +299 -2
  76. package/dist/style/divider.css +299 -2
  77. package/dist/style/drawer.css +299 -2
  78. package/dist/style/dropdown.css +299 -2
  79. package/dist/style/empty.css +299 -2
  80. package/dist/style/font.css +299 -2
  81. package/dist/style/form.css +299 -2
  82. package/dist/style/icon.css +299 -2
  83. package/dist/style/input.css +299 -2
  84. package/dist/style/inputnumber.css +299 -2
  85. package/dist/style/layout.css +299 -2
  86. package/dist/style/list.css +299 -2
  87. package/dist/style/loading.css +299 -2
  88. package/dist/style/menu.css +299 -2
  89. package/dist/style/modal.css +299 -2
  90. package/dist/style/notification.css +299 -2
  91. package/dist/style/pagination.css +299 -2
  92. package/dist/style/popconfirm.css +299 -2
  93. package/dist/style/popover.css +299 -2
  94. package/dist/style/progress.css +299 -2
  95. package/dist/style/radio.css +299 -2
  96. package/dist/style/rate.css +299 -2
  97. package/dist/style/row.css +299 -2
  98. package/dist/style/select.css +299 -2
  99. package/dist/style/slider.css +299 -2
  100. package/dist/style/slottable.css +299 -2
  101. package/dist/style/steps.css +299 -2
  102. package/dist/style/switch.css +299 -2
  103. package/dist/style/table.css +299 -2
  104. package/dist/style/tabs.css +299 -2
  105. package/dist/style/tag.css +299 -2
  106. package/dist/style/text.css +299 -2
  107. package/dist/style/timeline.css +299 -2
  108. package/dist/style/timepicker.css +299 -2
  109. package/dist/style/tooltip.css +299 -2
  110. package/dist/style/tree.css +299 -2
  111. package/dist/style/typography.css +299 -2
  112. package/dist/style/upload.css +299 -2
  113. package/dist/switch.js +10 -10
  114. package/dist/table.js +261 -166
  115. package/dist/tabs.js +6 -6
  116. package/dist/tag.js +6 -6
  117. package/dist/text.js +681 -681
  118. package/dist/timeline.js +6 -6
  119. package/dist/timepicker.js +571 -41
  120. package/dist/tooltip.js +25 -25
  121. package/dist/transfer.js +48 -34
  122. package/dist/transition.js +4 -4
  123. package/dist/tree.js +77 -77
  124. package/dist/typography.js +6 -6
  125. package/dist/upload.js +60 -32
  126. package/package.json +4 -2
  127. package/dist/font/iconfont.7f549f9.woff +0 -0
  128. package/dist/font/iconfont.9a16feb.woff2 +0 -0
package/dist/text.js CHANGED
@@ -7,7 +7,7 @@
7
7
  var a = typeof exports === 'object' ? factory(require("./icon"), require("./_mixin/emitter")) : factory(root["./icon"], root["./_mixin/emitter"]);
8
8
  for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
9
9
  }
10
- })(window, function(__WEBPACK_EXTERNAL_MODULE__7__, __WEBPACK_EXTERNAL_MODULE__12__) {
10
+ })(window, function(__WEBPACK_EXTERNAL_MODULE__7__, __WEBPACK_EXTERNAL_MODULE__13__) {
11
11
  return /******/ (function(modules) { // webpackBootstrap
12
12
  /******/ // The module cache
13
13
  /******/ var installedModules = {};
@@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap
91
91
  /******/
92
92
  /******/
93
93
  /******/ // Load entry module and return exports
94
- /******/ return __webpack_require__(__webpack_require__.s = 97);
94
+ /******/ return __webpack_require__(__webpack_require__.s = 100);
95
95
  /******/ })
96
96
  /************************************************************************/
97
97
  /******/ ({
@@ -203,222 +203,369 @@ function normalizeComponent (
203
203
 
204
204
  /***/ }),
205
205
 
206
- /***/ 12:
207
- /***/ (function(module, exports) {
208
-
209
- module.exports = __WEBPACK_EXTERNAL_MODULE__12__;
210
-
211
- /***/ }),
212
-
213
- /***/ 139:
214
- /***/ (function(module, exports) {
215
-
216
- // removed by extract-text-webpack-plugin
217
-
218
- /***/ }),
206
+ /***/ 100:
207
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
219
208
 
220
- /***/ 262:
221
- /***/ (function(module, exports) {
209
+ "use strict";
210
+ // ESM COMPAT FLAG
211
+ __webpack_require__.r(__webpack_exports__);
222
212
 
223
- // removed by extract-text-webpack-plugin
213
+ // EXTERNAL MODULE: ./components/style/index.less
214
+ var style = __webpack_require__(142);
224
215
 
225
- /***/ }),
216
+ // EXTERNAL MODULE: ./components/text/style/index.less
217
+ var text_style = __webpack_require__(265);
226
218
 
227
- /***/ 45:
228
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
219
+ // CONCATENATED MODULE: ./components/text/style/index.js
229
220
 
230
- "use strict";
231
221
 
232
- // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/input/textarea.vue?vue&type=template&id=5786ca5a&
222
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/text/text.vue?vue&type=template&id=0c79aab8&
233
223
  var render = function () {
234
224
  var _vm = this
235
225
  var _h = _vm.$createElement
236
226
  var _c = _vm._self._c || _h
237
227
  return _c(
238
- "div",
239
- { class: _vm.prefixCls + "-content " + (_vm.disabled ? "disable" : "") },
228
+ "span",
229
+ { class: ["mds-text", _vm.classNames] },
240
230
  [
241
- _c("textarea", {
242
- directives: [
243
- {
244
- name: "model",
245
- rawName: "v-model",
246
- value: _vm.valueData,
247
- expression: "valueData",
248
- },
249
- ],
250
- ref: "textAreaRef",
251
- class: [
252
- _vm.prefixCls + " " + _vm.prefixCls + "-textarea",
253
- _vm.disabled ? "mds-input-disabled" : "",
254
- ],
255
- style: _vm.textareaStyles,
256
- attrs: {
257
- maxlength: _vm.max_length,
258
- minlength: _vm.min_length,
259
- rows: _vm.rows,
260
- placeholder: _vm.placeholder,
261
- disabled: _vm.disabled,
262
- },
263
- domProps: { value: _vm.valueData },
264
- on: {
265
- input: [
266
- function ($event) {
267
- if ($event.target.composing) {
268
- return
269
- }
270
- _vm.valueData = $event.target.value
271
- },
272
- _vm.handleInput,
273
- ],
274
- keypress: _vm.handleKeyDown,
275
- change: _vm.handleChange,
276
- focus: _vm.handleFocus,
277
- blur: _vm.handleBlur,
278
- },
279
- }),
280
- _vm.showLimit && _vm.max_length
281
- ? _c("span", { class: _vm.prefixCls + "-show-limit" }, [
282
- _vm._v(_vm._s(_vm.number) + "/" + _vm._s(_vm.max_length)),
283
- ])
231
+ _vm.icon.length > 0
232
+ ? _c("mds-icon", { attrs: { type: _vm.icon } })
284
233
  : _vm._e(),
285
- ]
234
+ _vm._t("default"),
235
+ ],
236
+ 2
286
237
  )
287
238
  }
288
239
  var staticRenderFns = []
289
240
  render._withStripped = true
290
241
 
291
242
 
292
- // CONCATENATED MODULE: ./components/input/textarea.vue?vue&type=template&id=5786ca5a&
243
+ // CONCATENATED MODULE: ./components/text/text.vue?vue&type=template&id=0c79aab8&
293
244
 
294
- // CONCATENATED MODULE: ./components/input/calculateNodeHeight.js
295
- // Thanks to https://github.com/andreypopp/react-textarea-autosize/
245
+ // EXTERNAL MODULE: external "./icon"
246
+ var external_icon_ = __webpack_require__(7);
247
+ var external_icon_default = /*#__PURE__*/__webpack_require__.n(external_icon_);
296
248
 
297
- /**
298
- * calculateNodeHeight(uiTextNode, useCache = false)
299
- */
249
+ // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/text/text.vue?vue&type=script&lang=js&
250
+ //
251
+ //
252
+ //
253
+ //
254
+ //
255
+ //
300
256
 
301
- var HIDDEN_TEXTAREA_STYLE = '\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n';
302
257
 
303
- var SIZING_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing'];
258
+ /* harmony default export */ var textvue_type_script_lang_js_ = ({
259
+ name: 'MdsText',
260
+ components: {
261
+ MdsIcon: external_icon_default.a
262
+ },
263
+ props: {
264
+ type: {
265
+ type: String,
266
+ default: 'primary'
267
+ },
268
+ mark: {
269
+ type: Boolean,
270
+ default: false
271
+ },
272
+ code: {
273
+ type: Boolean,
274
+ default: false
275
+ },
276
+ underline: {
277
+ type: Boolean,
278
+ default: false
279
+ },
280
+ delete: {
281
+ type: Boolean,
282
+ default: false
283
+ },
284
+ strong: {
285
+ type: Boolean,
286
+ default: false
287
+ },
288
+ icon: {
289
+ type: String,
290
+ default: ''
291
+ }
292
+ },
293
+ data: function data() {
294
+ return {
295
+ editing: false,
296
+ copied: false,
297
+ textContent: ''
298
+ };
299
+ },
304
300
 
305
- var computedStyleCache = {};
306
- var hiddenTextarea = void 0;
301
+ computed: {
302
+ classNames: function classNames() {
303
+ var res = [];
304
+ var pre = 'mds-text-';
305
+ switch (this.type) {
306
+ case 'primary':
307
+ res.push(pre + 'primary');
308
+ break;
309
+ case 'secondary':
310
+ res.push(pre + 'secondary');
311
+ break;
312
+ case 'dark':
313
+ res.push(pre + 'dark');
314
+ break;
315
+ case 'disabled':
316
+ res.push(pre + 'disabled');
317
+ break;
318
+ case 'danger':
319
+ res.push(pre + 'danger');
320
+ break;
321
+ case 'success':
322
+ res.push(pre + 'success');
323
+ break;
324
+ case 'warning':
325
+ res.push(pre + 'warning');
326
+ break;
327
+ case 'info':
328
+ res.push(pre + 'info');
329
+ break;
330
+ default:
331
+ break;
332
+ }
333
+ if (this.mark) {
334
+ res.push(pre + 'mark');
335
+ }
336
+ if (this.code) {
337
+ res.push(pre + 'code');
338
+ }
339
+ if (this.underline) {
340
+ res.push(pre + 'underline');
341
+ }
342
+ if (this.delete) {
343
+ res.push(pre + 'delete');
344
+ }
345
+ if (this.strong) {
346
+ res.push(pre + 'strong');
347
+ }
348
+ return res;
349
+ }
350
+ },
351
+ methods: {},
352
+ mounted: function mounted() {}
353
+ });
354
+ // CONCATENATED MODULE: ./components/text/text.vue?vue&type=script&lang=js&
355
+ /* harmony default export */ var text_textvue_type_script_lang_js_ = (textvue_type_script_lang_js_);
356
+ // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
357
+ var componentNormalizer = __webpack_require__(0);
307
358
 
308
- function calculateNodeStyling(node) {
309
- var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
359
+ // CONCATENATED MODULE: ./components/text/text.vue
310
360
 
311
- var nodeRef = node.getAttribute('id') || node.getAttribute('data-reactid') || node.getAttribute('name');
312
361
 
313
- if (useCache && computedStyleCache[nodeRef]) {
314
- return computedStyleCache[nodeRef];
315
- }
316
362
 
317
- var style = window.getComputedStyle(node);
318
363
 
319
- var boxSizing = style.getPropertyValue('box-sizing') || style.getPropertyValue('-moz-box-sizing') || style.getPropertyValue('-webkit-box-sizing');
320
364
 
321
- var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));
365
+ /* normalize component */
322
366
 
323
- var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));
367
+ var component = Object(componentNormalizer["a" /* default */])(
368
+ text_textvue_type_script_lang_js_,
369
+ render,
370
+ staticRenderFns,
371
+ false,
372
+ null,
373
+ null,
374
+ null
375
+
376
+ )
324
377
 
325
- var sizingStyle = SIZING_STYLE.map(function (name) {
326
- return name + ':' + style.getPropertyValue(name);
327
- }).join(';');
378
+ /* hot reload */
379
+ if (false) { var api; }
380
+ component.options.__file = "components/text/text.vue"
381
+ /* harmony default export */ var text_text = (component.exports);
382
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/text/link.vue?vue&type=template&id=7cc366f1&
383
+ var linkvue_type_template_id_7cc366f1_render = function () {
384
+ var _vm = this
385
+ var _h = _vm.$createElement
386
+ var _c = _vm._self._c || _h
387
+ return _c(
388
+ "a",
389
+ {
390
+ class: ["mds-link", _vm.underline ? "has-underline" : ""],
391
+ attrs: { href: _vm.url, target: _vm.target },
392
+ },
393
+ [_vm._t("default")],
394
+ 2
395
+ )
396
+ }
397
+ var linkvue_type_template_id_7cc366f1_staticRenderFns = []
398
+ linkvue_type_template_id_7cc366f1_render._withStripped = true
328
399
 
329
- var nodeInfo = {
330
- sizingStyle: sizingStyle,
331
- paddingSize: paddingSize,
332
- borderSize: borderSize,
333
- boxSizing: boxSizing
334
- };
335
400
 
336
- if (useCache && nodeRef) {
337
- computedStyleCache[nodeRef] = nodeInfo;
338
- }
401
+ // CONCATENATED MODULE: ./components/text/link.vue?vue&type=template&id=7cc366f1&
339
402
 
340
- return nodeInfo;
341
- }
403
+ // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/text/link.vue?vue&type=script&lang=js&
404
+ //
405
+ //
406
+ //
407
+ //
408
+ //
409
+ //
342
410
 
343
- function calculateNodeHeight(uiTextNode) {
344
- var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
345
- var minRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
346
- var maxRows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
411
+ /* harmony default export */ var linkvue_type_script_lang_js_ = ({
412
+ name: 'MdsLink',
413
+ props: {
414
+ url: {
415
+ type: String,
416
+ default: ''
417
+ },
418
+ underline: {
419
+ type: Boolean,
420
+ default: false
421
+ },
422
+ target: {
423
+ type: String,
424
+ default: '_self'
425
+ }
426
+ },
427
+ data: function data() {
428
+ return {};
429
+ },
347
430
 
348
- if (!hiddenTextarea) {
349
- hiddenTextarea = document.createElement('textarea');
350
- document.body.appendChild(hiddenTextarea);
351
- }
431
+ methods: {},
432
+ mounted: function mounted() {}
433
+ });
434
+ // CONCATENATED MODULE: ./components/text/link.vue?vue&type=script&lang=js&
435
+ /* harmony default export */ var text_linkvue_type_script_lang_js_ = (linkvue_type_script_lang_js_);
436
+ // CONCATENATED MODULE: ./components/text/link.vue
352
437
 
353
- // Fix wrap="off" issue
354
- // https://github.com/mds-design/mds-design/issues/6577
355
- if (uiTextNode.getAttribute('wrap')) {
356
- hiddenTextarea.setAttribute('wrap', uiTextNode.getAttribute('wrap'));
357
- } else {
358
- hiddenTextarea.removeAttribute('wrap');
359
- }
360
438
 
361
- // Copy all CSS properties that have an impact on the height of the content in
362
- // the textbox
363
439
 
364
- var _calculateNodeStyling = calculateNodeStyling(uiTextNode, useCache),
365
- paddingSize = _calculateNodeStyling.paddingSize,
366
- borderSize = _calculateNodeStyling.borderSize,
367
- boxSizing = _calculateNodeStyling.boxSizing,
368
- sizingStyle = _calculateNodeStyling.sizingStyle;
369
440
 
370
- // Need to have the overflow attribute to hide the scrollbar otherwise
371
- // text-lines will not calculated properly as the shadow will technically be
372
- // narrower for content
373
441
 
442
+ /* normalize component */
374
443
 
375
- hiddenTextarea.setAttribute('style', sizingStyle + ';' + HIDDEN_TEXTAREA_STYLE);
376
- hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || '';
444
+ var link_component = Object(componentNormalizer["a" /* default */])(
445
+ text_linkvue_type_script_lang_js_,
446
+ linkvue_type_template_id_7cc366f1_render,
447
+ linkvue_type_template_id_7cc366f1_staticRenderFns,
448
+ false,
449
+ null,
450
+ null,
451
+ null
452
+
453
+ )
377
454
 
378
- var minHeight = -Infinity;
379
- var maxHeight = Infinity;
380
- var height = hiddenTextarea.scrollHeight;
381
- var overflowY = void 0;
455
+ /* hot reload */
456
+ if (false) { var link_api; }
457
+ link_component.options.__file = "components/text/link.vue"
458
+ /* harmony default export */ var text_link = (link_component.exports);
459
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/text/customize.vue?vue&type=template&id=56d05148&
460
+ var customizevue_type_template_id_56d05148_render = function () {
461
+ var _vm = this
462
+ var _h = _vm.$createElement
463
+ var _c = _vm._self._c || _h
464
+ return _c(
465
+ "span",
466
+ { staticClass: "mds-text" },
467
+ [
468
+ _vm.editable
469
+ ? [
470
+ !_vm.editing
471
+ ? _vm._t("default")
472
+ : _c("mds-input-textarea", {
473
+ ref: "textarea",
474
+ attrs: { id: "editTextarea", rows: "1" },
475
+ nativeOn: {
476
+ keyup: function ($event) {
477
+ if (
478
+ !$event.type.indexOf("key") &&
479
+ _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")
480
+ ) {
481
+ return null
482
+ }
483
+ return _vm.finishEdit($event)
484
+ },
485
+ blur: function ($event) {
486
+ return _vm.finishEdit($event)
487
+ },
488
+ },
489
+ model: {
490
+ value: _vm.textContent,
491
+ callback: function ($$v) {
492
+ _vm.textContent = $$v
493
+ },
494
+ expression: "textContent",
495
+ },
496
+ }),
497
+ _c(
498
+ "mds-tooltip",
499
+ { attrs: { title: "编辑", mouseLeaveDelay: 0 } },
500
+ [
501
+ _c("mds-icon", {
502
+ directives: [
503
+ {
504
+ name: "show",
505
+ rawName: "v-show",
506
+ value: _vm.editable && !_vm.editing,
507
+ expression: "editable && !editing",
508
+ },
509
+ ],
510
+ staticClass: "edit-icon",
511
+ attrs: { type: "line-format-border-color" },
512
+ nativeOn: {
513
+ click: function ($event) {
514
+ return _vm.handleEdit($event)
515
+ },
516
+ },
517
+ }),
518
+ ],
519
+ 1
520
+ ),
521
+ ]
522
+ : _vm.copyable
523
+ ? [
524
+ _c(
525
+ "span",
526
+ { attrs: { id: "copy-target" } },
527
+ [_vm._t("default")],
528
+ 2
529
+ ),
530
+ _c(
531
+ "mds-tooltip",
532
+ {
533
+ attrs: {
534
+ title: _vm.copied ? "复制成功" : "复制",
535
+ mouseLeaveDelay: 0,
536
+ },
537
+ },
538
+ [
539
+ _c("mds-icon", {
540
+ attrs: {
541
+ type: _vm.copied ? "line-check" : "line-swap-stroke",
542
+ },
543
+ nativeOn: {
544
+ click: function ($event) {
545
+ return _vm.handleCopy($event)
546
+ },
547
+ },
548
+ }),
549
+ ],
550
+ 1
551
+ ),
552
+ ]
553
+ : _vm._e(),
554
+ ],
555
+ 2
556
+ )
557
+ }
558
+ var customizevue_type_template_id_56d05148_staticRenderFns = []
559
+ customizevue_type_template_id_56d05148_render._withStripped = true
382
560
 
383
- if (boxSizing === 'border-box') {
384
- // border-box: add border, since height = content + padding + border
385
- height = height + borderSize;
386
- } else if (boxSizing === 'content-box') {
387
- // remove padding, since height = content
388
- height = height - paddingSize;
389
- }
390
561
 
391
- if (minRows !== null || maxRows !== null) {
392
- // measure height of a textarea with a single row
393
- hiddenTextarea.value = '';
394
- var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;
395
- if (minRows !== null) {
396
- minHeight = singleRowHeight * minRows;
397
- if (boxSizing === 'border-box') {
398
- minHeight = minHeight + paddingSize + borderSize;
399
- }
400
- height = Math.max(minHeight, height);
401
- }
402
- if (maxRows !== null) {
403
- maxHeight = singleRowHeight * maxRows;
404
- if (boxSizing === 'border-box') {
405
- maxHeight = maxHeight + paddingSize + borderSize;
406
- }
407
- overflowY = height > maxHeight ? '' : 'hidden';
408
- height = Math.min(maxHeight, height);
409
- }
410
- }
411
- // Remove scroll bar flash when autosize without maxRows
412
- if (!maxRows) {
413
- overflowY = 'hidden';
414
- }
415
- return { height: height + 'px', minHeight: minHeight + 'px', maxHeight: maxHeight + 'px', overflowY: overflowY };
416
- }
417
- // EXTERNAL MODULE: external "./_mixin/emitter"
418
- var emitter_ = __webpack_require__(12);
419
- var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);
562
+ // CONCATENATED MODULE: ./components/text/customize.vue?vue&type=template&id=56d05148&
420
563
 
421
- // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/input/textarea.vue?vue&type=script&lang=js&
564
+ // EXTERNAL MODULE: ./components/input/textarea.vue + 5 modules
565
+ var input_textarea = __webpack_require__(45);
566
+
567
+ // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/text/customize.vue?vue&type=script&lang=js&
568
+ //
422
569
  //
423
570
  //
424
571
  //
@@ -449,155 +596,58 @@ var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);
449
596
 
450
597
 
451
598
 
452
-
453
- function onNextFrame(cb) {
454
- if (window.requestAnimationFrame) {
455
- return window.requestAnimationFrame(cb);
456
- }
457
- return window.setTimeout(cb, 1);
458
- }
459
-
460
- function clearNextFrameAction(nextFrameId) {
461
- if (window.cancelAnimationFrame) {
462
- window.cancelAnimationFrame(nextFrameId);
463
- } else {
464
- window.clearTimeout(nextFrameId);
465
- }
466
- }
467
-
468
- /* harmony default export */ var textareavue_type_script_lang_js_ = ({
469
- name: 'MdsInputTextarea',
470
- mixins: [emitter_default.a],
599
+ /* harmony default export */ var customizevue_type_script_lang_js_ = ({
600
+ name: 'MdsTextCustomize',
601
+ components: {
602
+ MdsIcon: external_icon_default.a,
603
+ MdsInputTextarea: input_textarea["a" /* default */]
604
+ },
471
605
  props: {
472
- autosize: {
473
- type: [Boolean, Object],
606
+ editable: {
607
+ type: Boolean,
474
608
  default: false
475
609
  },
476
- prefixCls: {
477
- type: String,
478
- default: 'mds-input'
479
- },
480
- maxlength: {
481
- type: Number
482
- },
483
- minlength: {
484
- type: Number
485
- },
486
- rows: {
487
- type: Number,
488
- default: 4
489
- },
490
- showLimit: {
491
- type: Boolean,
492
- default: false
493
- },
494
- placeholder: {
495
- type: String,
496
- default: ''
497
- },
498
- disabled: {
610
+ copyable: {
499
611
  type: Boolean,
500
612
  default: false
501
- },
502
- value: null
613
+ }
503
614
  },
504
615
  data: function data() {
505
616
  return {
506
- textareaStyles: {},
507
- number: 0
617
+ editing: false,
618
+ copied: false,
619
+ textContent: ''
508
620
  };
509
621
  },
510
622
 
511
- computed: {
512
- valueData: {
513
- get: function get() {
514
- return this.value || '';
515
- },
516
- set: function set(value) {
517
- this.$emit('input', value);
518
- }
519
- },
520
- max_length: function max_length() {
521
- return this.$attrs.maxlength || this.maxlength;
522
- },
523
- min_length: function min_length() {
524
- return this.$attrs.minlength || this.minlength;
525
- }
526
- },
527
- watch: {
528
- valueData: {
529
- immediate: true,
530
- handler: function handler(newVal) {
531
- var _this = this;
532
-
533
- this.$nextTick(function () {
534
- _this.resizeTextarea();
535
- });
536
- if (newVal.length > this.maxlength) {
537
- return false;
538
- } else {
539
- this.number = newVal.length;
540
- }
541
- }
542
- }
543
- },
544
- created: function created() {
545
- this.number = this.valueData.length;
546
- },
547
-
548
623
  methods: {
549
- handleChange: function handleChange(e) {
550
- this.$emit('change', e);
551
- },
552
- handleInput: function handleInput(e) {
553
- if (this.nextFrameActionId) {
554
- clearNextFrameAction(this.nextFrameActionId);
555
- }
556
- this.nextFrameActionId = onNextFrame(this.resizeTextarea);
557
- this.$emit('input', e.target.value);
558
- this.dispatch('MdsFormItem', 'formItemChange', e.target.value);
624
+ handleEdit: function handleEdit() {
625
+ this.textContent = this.$slots.default[0].text;
626
+ this.editing = true;
627
+ this.$nextTick(function () {
628
+ // this.$refs.textarea.focus()
629
+ document.querySelector('#editTextarea').focus();
630
+ });
559
631
  },
560
- handleKeyDown: function handleKeyDown(e) {
561
- if (e.keyCode === 13) {
562
- this.$emit('press-enter', e);
563
- }
564
- this.$emit('keydown', e);
632
+ finishEdit: function finishEdit() {
633
+ this.editing = false;
634
+ this.$slots.default[0].text = this.textContent;
565
635
  },
566
- resizeTextarea: function resizeTextarea() {
567
- if (!this.autosize) {
568
- return false;
636
+ handleCopy: function handleCopy() {
637
+ if (!this.copied) {
638
+ var copyContent = document.querySelector('#copy-target').textContent;
639
+ var that = this;
640
+ this.$copyText(copyContent).then(function () {
641
+ that.copied = true;
642
+ });
569
643
  }
570
- var minRows = this.autosize ? this.autosize.minRows : null;
571
- var maxRows = this.autosize ? this.autosize.maxRows : null;
572
- this.textareaStyles = calculateNodeHeight(this.$refs.textAreaRef, false, minRows, maxRows);
573
- },
574
- handleFocus: function handleFocus(e) {
575
- this.$emit('focus', e);
576
- },
577
- handleBlur: function handleBlur(e) {
578
- this.$emit('blur', e);
579
- this.dispatch('MdsFormItem', 'formItemBlur', e);
580
- },
581
- focus: function focus() {
582
- this.getInput().focus();
583
- },
584
- blur: function blur() {
585
- this.getInput().blur();
586
- },
587
- getInput: function getInput() {
588
- return this.$refs.textAreaRef;
589
644
  }
590
645
  },
591
- mounted: function mounted() {
592
- this.resizeTextarea();
593
- }
646
+ mounted: function mounted() {}
594
647
  });
595
- // CONCATENATED MODULE: ./components/input/textarea.vue?vue&type=script&lang=js&
596
- /* harmony default export */ var input_textareavue_type_script_lang_js_ = (textareavue_type_script_lang_js_);
597
- // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
598
- var componentNormalizer = __webpack_require__(0);
599
-
600
- // CONCATENATED MODULE: ./components/input/textarea.vue
648
+ // CONCATENATED MODULE: ./components/text/customize.vue?vue&type=script&lang=js&
649
+ /* harmony default export */ var text_customizevue_type_script_lang_js_ = (customizevue_type_script_lang_js_);
650
+ // CONCATENATED MODULE: ./components/text/customize.vue
601
651
 
602
652
 
603
653
 
@@ -605,10 +655,10 @@ var componentNormalizer = __webpack_require__(0);
605
655
 
606
656
  /* normalize component */
607
657
 
608
- var component = Object(componentNormalizer["a" /* default */])(
609
- input_textareavue_type_script_lang_js_,
610
- render,
611
- staticRenderFns,
658
+ var customize_component = Object(componentNormalizer["a" /* default */])(
659
+ text_customizevue_type_script_lang_js_,
660
+ customizevue_type_template_id_56d05148_render,
661
+ customizevue_type_template_id_56d05148_staticRenderFns,
612
662
  false,
613
663
  null,
614
664
  null,
@@ -617,382 +667,240 @@ var component = Object(componentNormalizer["a" /* default */])(
617
667
  )
618
668
 
619
669
  /* hot reload */
620
- if (false) { var api; }
621
- component.options.__file = "components/input/textarea.vue"
622
- /* harmony default export */ var input_textarea = __webpack_exports__["a"] = (component.exports);
670
+ if (false) { var customize_api; }
671
+ customize_component.options.__file = "components/text/customize.vue"
672
+ /* harmony default export */ var customize = (customize_component.exports);
673
+ // CONCATENATED MODULE: ./components/text/index.js
674
+
675
+
676
+
677
+
678
+ /* istanbul ignore next */
679
+ text_text.install = function (Vue) {
680
+ Vue.component(text_text.name, text_text);
681
+ Vue.component(text_link.name, text_link);
682
+ Vue.component(customize.name, customize);
683
+ };
684
+ /* harmony default export */ var components_text = __webpack_exports__["default"] = (text_text);
623
685
 
624
686
  /***/ }),
625
687
 
626
- /***/ 7:
688
+ /***/ 13:
627
689
  /***/ (function(module, exports) {
628
690
 
629
- module.exports = __WEBPACK_EXTERNAL_MODULE__7__;
691
+ module.exports = __WEBPACK_EXTERNAL_MODULE__13__;
630
692
 
631
693
  /***/ }),
632
694
 
633
- /***/ 97:
634
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
695
+ /***/ 142:
696
+ /***/ (function(module, exports) {
635
697
 
636
- "use strict";
637
- // ESM COMPAT FLAG
638
- __webpack_require__.r(__webpack_exports__);
698
+ // removed by extract-text-webpack-plugin
639
699
 
640
- // EXTERNAL MODULE: ./components/style/index.less
641
- var style = __webpack_require__(139);
700
+ /***/ }),
642
701
 
643
- // EXTERNAL MODULE: ./components/text/style/index.less
644
- var text_style = __webpack_require__(262);
702
+ /***/ 265:
703
+ /***/ (function(module, exports) {
645
704
 
646
- // CONCATENATED MODULE: ./components/text/style/index.js
705
+ // removed by extract-text-webpack-plugin
647
706
 
707
+ /***/ }),
648
708
 
649
- // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/text/text.vue?vue&type=template&id=0c79aab8&
709
+ /***/ 45:
710
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
711
+
712
+ "use strict";
713
+
714
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/input/textarea.vue?vue&type=template&id=5786ca5a&
650
715
  var render = function () {
651
716
  var _vm = this
652
717
  var _h = _vm.$createElement
653
718
  var _c = _vm._self._c || _h
654
719
  return _c(
655
- "span",
656
- { class: ["mds-text", _vm.classNames] },
720
+ "div",
721
+ { class: _vm.prefixCls + "-content " + (_vm.disabled ? "disable" : "") },
657
722
  [
658
- _vm.icon.length > 0
659
- ? _c("mds-icon", { attrs: { type: _vm.icon } })
723
+ _c("textarea", {
724
+ directives: [
725
+ {
726
+ name: "model",
727
+ rawName: "v-model",
728
+ value: _vm.valueData,
729
+ expression: "valueData",
730
+ },
731
+ ],
732
+ ref: "textAreaRef",
733
+ class: [
734
+ _vm.prefixCls + " " + _vm.prefixCls + "-textarea",
735
+ _vm.disabled ? "mds-input-disabled" : "",
736
+ ],
737
+ style: _vm.textareaStyles,
738
+ attrs: {
739
+ maxlength: _vm.max_length,
740
+ minlength: _vm.min_length,
741
+ rows: _vm.rows,
742
+ placeholder: _vm.placeholder,
743
+ disabled: _vm.disabled,
744
+ },
745
+ domProps: { value: _vm.valueData },
746
+ on: {
747
+ input: [
748
+ function ($event) {
749
+ if ($event.target.composing) {
750
+ return
751
+ }
752
+ _vm.valueData = $event.target.value
753
+ },
754
+ _vm.handleInput,
755
+ ],
756
+ keypress: _vm.handleKeyDown,
757
+ change: _vm.handleChange,
758
+ focus: _vm.handleFocus,
759
+ blur: _vm.handleBlur,
760
+ },
761
+ }),
762
+ _vm.showLimit && _vm.max_length
763
+ ? _c("span", { class: _vm.prefixCls + "-show-limit" }, [
764
+ _vm._v(_vm._s(_vm.number) + "/" + _vm._s(_vm.max_length)),
765
+ ])
660
766
  : _vm._e(),
661
- _vm._t("default"),
662
- ],
663
- 2
767
+ ]
664
768
  )
665
769
  }
666
770
  var staticRenderFns = []
667
771
  render._withStripped = true
668
772
 
669
773
 
670
- // CONCATENATED MODULE: ./components/text/text.vue?vue&type=template&id=0c79aab8&
671
-
672
- // EXTERNAL MODULE: external "./icon"
673
- var external_icon_ = __webpack_require__(7);
674
- var external_icon_default = /*#__PURE__*/__webpack_require__.n(external_icon_);
675
-
676
- // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/text/text.vue?vue&type=script&lang=js&
677
- //
678
- //
679
- //
680
- //
681
- //
682
- //
683
-
684
-
685
- /* harmony default export */ var textvue_type_script_lang_js_ = ({
686
- name: 'MdsText',
687
- components: {
688
- MdsIcon: external_icon_default.a
689
- },
690
- props: {
691
- type: {
692
- type: String,
693
- default: 'primary'
694
- },
695
- mark: {
696
- type: Boolean,
697
- default: false
698
- },
699
- code: {
700
- type: Boolean,
701
- default: false
702
- },
703
- underline: {
704
- type: Boolean,
705
- default: false
706
- },
707
- delete: {
708
- type: Boolean,
709
- default: false
710
- },
711
- strong: {
712
- type: Boolean,
713
- default: false
714
- },
715
- icon: {
716
- type: String,
717
- default: ''
718
- }
719
- },
720
- data: function data() {
721
- return {
722
- editing: false,
723
- copied: false,
724
- textContent: ''
725
- };
726
- },
727
-
728
- computed: {
729
- classNames: function classNames() {
730
- var res = [];
731
- var pre = 'mds-text-';
732
- switch (this.type) {
733
- case 'primary':
734
- res.push(pre + 'primary');
735
- break;
736
- case 'secondary':
737
- res.push(pre + 'secondary');
738
- break;
739
- case 'dark':
740
- res.push(pre + 'dark');
741
- break;
742
- case 'disabled':
743
- res.push(pre + 'disabled');
744
- break;
745
- case 'danger':
746
- res.push(pre + 'danger');
747
- break;
748
- case 'success':
749
- res.push(pre + 'success');
750
- break;
751
- case 'warning':
752
- res.push(pre + 'warning');
753
- break;
754
- case 'info':
755
- res.push(pre + 'info');
756
- break;
757
- default:
758
- break;
759
- }
760
- if (this.mark) {
761
- res.push(pre + 'mark');
762
- }
763
- if (this.code) {
764
- res.push(pre + 'code');
765
- }
766
- if (this.underline) {
767
- res.push(pre + 'underline');
768
- }
769
- if (this.delete) {
770
- res.push(pre + 'delete');
771
- }
772
- if (this.strong) {
773
- res.push(pre + 'strong');
774
- }
775
- return res;
776
- }
777
- },
778
- methods: {},
779
- mounted: function mounted() {}
780
- });
781
- // CONCATENATED MODULE: ./components/text/text.vue?vue&type=script&lang=js&
782
- /* harmony default export */ var text_textvue_type_script_lang_js_ = (textvue_type_script_lang_js_);
783
- // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
784
- var componentNormalizer = __webpack_require__(0);
785
-
786
- // CONCATENATED MODULE: ./components/text/text.vue
774
+ // CONCATENATED MODULE: ./components/input/textarea.vue?vue&type=template&id=5786ca5a&
787
775
 
776
+ // CONCATENATED MODULE: ./components/input/calculateNodeHeight.js
777
+ // Thanks to https://github.com/andreypopp/react-textarea-autosize/
788
778
 
779
+ /**
780
+ * calculateNodeHeight(uiTextNode, useCache = false)
781
+ */
789
782
 
783
+ var HIDDEN_TEXTAREA_STYLE = '\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n';
790
784
 
785
+ var SIZING_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing'];
791
786
 
792
- /* normalize component */
787
+ var computedStyleCache = {};
788
+ var hiddenTextarea = void 0;
793
789
 
794
- var component = Object(componentNormalizer["a" /* default */])(
795
- text_textvue_type_script_lang_js_,
796
- render,
797
- staticRenderFns,
798
- false,
799
- null,
800
- null,
801
- null
802
-
803
- )
790
+ function calculateNodeStyling(node) {
791
+ var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
804
792
 
805
- /* hot reload */
806
- if (false) { var api; }
807
- component.options.__file = "components/text/text.vue"
808
- /* harmony default export */ var text_text = (component.exports);
809
- // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/text/link.vue?vue&type=template&id=7cc366f1&
810
- var linkvue_type_template_id_7cc366f1_render = function () {
811
- var _vm = this
812
- var _h = _vm.$createElement
813
- var _c = _vm._self._c || _h
814
- return _c(
815
- "a",
816
- {
817
- class: ["mds-link", _vm.underline ? "has-underline" : ""],
818
- attrs: { href: _vm.url, target: _vm.target },
819
- },
820
- [_vm._t("default")],
821
- 2
822
- )
823
- }
824
- var linkvue_type_template_id_7cc366f1_staticRenderFns = []
825
- linkvue_type_template_id_7cc366f1_render._withStripped = true
793
+ var nodeRef = node.getAttribute('id') || node.getAttribute('data-reactid') || node.getAttribute('name');
826
794
 
795
+ if (useCache && computedStyleCache[nodeRef]) {
796
+ return computedStyleCache[nodeRef];
797
+ }
827
798
 
828
- // CONCATENATED MODULE: ./components/text/link.vue?vue&type=template&id=7cc366f1&
799
+ var style = window.getComputedStyle(node);
829
800
 
830
- // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/text/link.vue?vue&type=script&lang=js&
831
- //
832
- //
833
- //
834
- //
835
- //
836
- //
801
+ var boxSizing = style.getPropertyValue('box-sizing') || style.getPropertyValue('-moz-box-sizing') || style.getPropertyValue('-webkit-box-sizing');
837
802
 
838
- /* harmony default export */ var linkvue_type_script_lang_js_ = ({
839
- name: 'MdsLink',
840
- props: {
841
- url: {
842
- type: String,
843
- default: ''
844
- },
845
- underline: {
846
- type: Boolean,
847
- default: false
848
- },
849
- target: {
850
- type: String,
851
- default: '_self'
852
- }
853
- },
854
- data: function data() {
855
- return {};
856
- },
803
+ var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));
857
804
 
858
- methods: {},
859
- mounted: function mounted() {}
860
- });
861
- // CONCATENATED MODULE: ./components/text/link.vue?vue&type=script&lang=js&
862
- /* harmony default export */ var text_linkvue_type_script_lang_js_ = (linkvue_type_script_lang_js_);
863
- // CONCATENATED MODULE: ./components/text/link.vue
805
+ var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));
864
806
 
807
+ var sizingStyle = SIZING_STYLE.map(function (name) {
808
+ return name + ':' + style.getPropertyValue(name);
809
+ }).join(';');
865
810
 
811
+ var nodeInfo = {
812
+ sizingStyle: sizingStyle,
813
+ paddingSize: paddingSize,
814
+ borderSize: borderSize,
815
+ boxSizing: boxSizing
816
+ };
866
817
 
818
+ if (useCache && nodeRef) {
819
+ computedStyleCache[nodeRef] = nodeInfo;
820
+ }
867
821
 
822
+ return nodeInfo;
823
+ }
868
824
 
869
- /* normalize component */
825
+ function calculateNodeHeight(uiTextNode) {
826
+ var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
827
+ var minRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
828
+ var maxRows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
870
829
 
871
- var link_component = Object(componentNormalizer["a" /* default */])(
872
- text_linkvue_type_script_lang_js_,
873
- linkvue_type_template_id_7cc366f1_render,
874
- linkvue_type_template_id_7cc366f1_staticRenderFns,
875
- false,
876
- null,
877
- null,
878
- null
879
-
880
- )
830
+ if (!hiddenTextarea) {
831
+ hiddenTextarea = document.createElement('textarea');
832
+ document.body.appendChild(hiddenTextarea);
833
+ }
881
834
 
882
- /* hot reload */
883
- if (false) { var link_api; }
884
- link_component.options.__file = "components/text/link.vue"
885
- /* harmony default export */ var text_link = (link_component.exports);
886
- // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/text/customize.vue?vue&type=template&id=56d05148&
887
- var customizevue_type_template_id_56d05148_render = function () {
888
- var _vm = this
889
- var _h = _vm.$createElement
890
- var _c = _vm._self._c || _h
891
- return _c(
892
- "span",
893
- { staticClass: "mds-text" },
894
- [
895
- _vm.editable
896
- ? [
897
- !_vm.editing
898
- ? _vm._t("default")
899
- : _c("mds-input-textarea", {
900
- ref: "textarea",
901
- attrs: { id: "editTextarea", rows: "1" },
902
- nativeOn: {
903
- keyup: function ($event) {
904
- if (
905
- !$event.type.indexOf("key") &&
906
- _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")
907
- ) {
908
- return null
909
- }
910
- return _vm.finishEdit($event)
911
- },
912
- blur: function ($event) {
913
- return _vm.finishEdit($event)
914
- },
915
- },
916
- model: {
917
- value: _vm.textContent,
918
- callback: function ($$v) {
919
- _vm.textContent = $$v
920
- },
921
- expression: "textContent",
922
- },
923
- }),
924
- _c(
925
- "mds-tooltip",
926
- { attrs: { title: "编辑", mouseLeaveDelay: 0 } },
927
- [
928
- _c("mds-icon", {
929
- directives: [
930
- {
931
- name: "show",
932
- rawName: "v-show",
933
- value: _vm.editable && !_vm.editing,
934
- expression: "editable && !editing",
935
- },
936
- ],
937
- staticClass: "edit-icon",
938
- attrs: { type: "line-format-border-color" },
939
- nativeOn: {
940
- click: function ($event) {
941
- return _vm.handleEdit($event)
942
- },
943
- },
944
- }),
945
- ],
946
- 1
947
- ),
948
- ]
949
- : _vm.copyable
950
- ? [
951
- _c(
952
- "span",
953
- { attrs: { id: "copy-target" } },
954
- [_vm._t("default")],
955
- 2
956
- ),
957
- _c(
958
- "mds-tooltip",
959
- {
960
- attrs: {
961
- title: _vm.copied ? "复制成功" : "复制",
962
- mouseLeaveDelay: 0,
963
- },
964
- },
965
- [
966
- _c("mds-icon", {
967
- attrs: {
968
- type: _vm.copied ? "line-check" : "line-swap-stroke",
969
- },
970
- nativeOn: {
971
- click: function ($event) {
972
- return _vm.handleCopy($event)
973
- },
974
- },
975
- }),
976
- ],
977
- 1
978
- ),
979
- ]
980
- : _vm._e(),
981
- ],
982
- 2
983
- )
984
- }
985
- var customizevue_type_template_id_56d05148_staticRenderFns = []
986
- customizevue_type_template_id_56d05148_render._withStripped = true
835
+ // Fix wrap="off" issue
836
+ // https://github.com/mds-design/mds-design/issues/6577
837
+ if (uiTextNode.getAttribute('wrap')) {
838
+ hiddenTextarea.setAttribute('wrap', uiTextNode.getAttribute('wrap'));
839
+ } else {
840
+ hiddenTextarea.removeAttribute('wrap');
841
+ }
987
842
 
843
+ // Copy all CSS properties that have an impact on the height of the content in
844
+ // the textbox
988
845
 
989
- // CONCATENATED MODULE: ./components/text/customize.vue?vue&type=template&id=56d05148&
846
+ var _calculateNodeStyling = calculateNodeStyling(uiTextNode, useCache),
847
+ paddingSize = _calculateNodeStyling.paddingSize,
848
+ borderSize = _calculateNodeStyling.borderSize,
849
+ boxSizing = _calculateNodeStyling.boxSizing,
850
+ sizingStyle = _calculateNodeStyling.sizingStyle;
990
851
 
991
- // EXTERNAL MODULE: ./components/input/textarea.vue + 5 modules
992
- var input_textarea = __webpack_require__(45);
852
+ // Need to have the overflow attribute to hide the scrollbar otherwise
853
+ // text-lines will not calculated properly as the shadow will technically be
854
+ // narrower for content
993
855
 
994
- // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/text/customize.vue?vue&type=script&lang=js&
995
- //
856
+
857
+ hiddenTextarea.setAttribute('style', sizingStyle + ';' + HIDDEN_TEXTAREA_STYLE);
858
+ hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || '';
859
+
860
+ var minHeight = -Infinity;
861
+ var maxHeight = Infinity;
862
+ var height = hiddenTextarea.scrollHeight;
863
+ var overflowY = void 0;
864
+
865
+ if (boxSizing === 'border-box') {
866
+ // border-box: add border, since height = content + padding + border
867
+ height = height + borderSize;
868
+ } else if (boxSizing === 'content-box') {
869
+ // remove padding, since height = content
870
+ height = height - paddingSize;
871
+ }
872
+
873
+ if (minRows !== null || maxRows !== null) {
874
+ // measure height of a textarea with a single row
875
+ hiddenTextarea.value = '';
876
+ var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;
877
+ if (minRows !== null) {
878
+ minHeight = singleRowHeight * minRows;
879
+ if (boxSizing === 'border-box') {
880
+ minHeight = minHeight + paddingSize + borderSize;
881
+ }
882
+ height = Math.max(minHeight, height);
883
+ }
884
+ if (maxRows !== null) {
885
+ maxHeight = singleRowHeight * maxRows;
886
+ if (boxSizing === 'border-box') {
887
+ maxHeight = maxHeight + paddingSize + borderSize;
888
+ }
889
+ overflowY = height > maxHeight ? '' : 'hidden';
890
+ height = Math.min(maxHeight, height);
891
+ }
892
+ }
893
+ // Remove scroll bar flash when autosize without maxRows
894
+ if (!maxRows) {
895
+ overflowY = 'hidden';
896
+ }
897
+ return { height: height + 'px', minHeight: minHeight + 'px', maxHeight: maxHeight + 'px', overflowY: overflowY };
898
+ }
899
+ // EXTERNAL MODULE: external "./_mixin/emitter"
900
+ var emitter_ = __webpack_require__(13);
901
+ var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);
902
+
903
+ // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/input/textarea.vue?vue&type=script&lang=js&
996
904
  //
997
905
  //
998
906
  //
@@ -1023,58 +931,155 @@ var input_textarea = __webpack_require__(45);
1023
931
 
1024
932
 
1025
933
 
1026
- /* harmony default export */ var customizevue_type_script_lang_js_ = ({
1027
- name: 'MdsTextCustomize',
1028
- components: {
1029
- MdsIcon: external_icon_default.a,
1030
- MdsInputTextarea: input_textarea["a" /* default */]
1031
- },
934
+
935
+ function onNextFrame(cb) {
936
+ if (window.requestAnimationFrame) {
937
+ return window.requestAnimationFrame(cb);
938
+ }
939
+ return window.setTimeout(cb, 1);
940
+ }
941
+
942
+ function clearNextFrameAction(nextFrameId) {
943
+ if (window.cancelAnimationFrame) {
944
+ window.cancelAnimationFrame(nextFrameId);
945
+ } else {
946
+ window.clearTimeout(nextFrameId);
947
+ }
948
+ }
949
+
950
+ /* harmony default export */ var textareavue_type_script_lang_js_ = ({
951
+ name: 'MdsInputTextarea',
952
+ mixins: [emitter_default.a],
1032
953
  props: {
1033
- editable: {
954
+ autosize: {
955
+ type: [Boolean, Object],
956
+ default: false
957
+ },
958
+ prefixCls: {
959
+ type: String,
960
+ default: 'mds-input'
961
+ },
962
+ maxlength: {
963
+ type: Number
964
+ },
965
+ minlength: {
966
+ type: Number
967
+ },
968
+ rows: {
969
+ type: Number,
970
+ default: 4
971
+ },
972
+ showLimit: {
1034
973
  type: Boolean,
1035
974
  default: false
1036
975
  },
1037
- copyable: {
976
+ placeholder: {
977
+ type: String,
978
+ default: ''
979
+ },
980
+ disabled: {
1038
981
  type: Boolean,
1039
982
  default: false
1040
- }
983
+ },
984
+ value: null
1041
985
  },
1042
986
  data: function data() {
1043
987
  return {
1044
- editing: false,
1045
- copied: false,
1046
- textContent: ''
988
+ textareaStyles: {},
989
+ number: 0
1047
990
  };
1048
991
  },
1049
992
 
1050
- methods: {
1051
- handleEdit: function handleEdit() {
1052
- this.textContent = this.$slots.default[0].text;
1053
- this.editing = true;
1054
- this.$nextTick(function () {
1055
- // this.$refs.textarea.focus()
1056
- document.querySelector('#editTextarea').focus();
1057
- });
993
+ computed: {
994
+ valueData: {
995
+ get: function get() {
996
+ return this.value || '';
997
+ },
998
+ set: function set(value) {
999
+ this.$emit('input', value);
1000
+ }
1058
1001
  },
1059
- finishEdit: function finishEdit() {
1060
- this.editing = false;
1061
- this.$slots.default[0].text = this.textContent;
1002
+ max_length: function max_length() {
1003
+ return this.$attrs.maxlength || this.maxlength;
1062
1004
  },
1063
- handleCopy: function handleCopy() {
1064
- if (!this.copied) {
1065
- var copyContent = document.querySelector('#copy-target').textContent;
1066
- var that = this;
1067
- this.$copyText(copyContent).then(function () {
1068
- that.copied = true;
1005
+ min_length: function min_length() {
1006
+ return this.$attrs.minlength || this.minlength;
1007
+ }
1008
+ },
1009
+ watch: {
1010
+ valueData: {
1011
+ immediate: true,
1012
+ handler: function handler(newVal) {
1013
+ var _this = this;
1014
+
1015
+ this.$nextTick(function () {
1016
+ _this.resizeTextarea();
1069
1017
  });
1018
+ if (newVal.length > this.maxlength) {
1019
+ return false;
1020
+ } else {
1021
+ this.number = newVal.length;
1022
+ }
1070
1023
  }
1071
1024
  }
1072
1025
  },
1073
- mounted: function mounted() {}
1026
+ created: function created() {
1027
+ this.number = this.valueData.length;
1028
+ },
1029
+
1030
+ methods: {
1031
+ handleChange: function handleChange(e) {
1032
+ this.$emit('change', e);
1033
+ },
1034
+ handleInput: function handleInput(e) {
1035
+ if (this.nextFrameActionId) {
1036
+ clearNextFrameAction(this.nextFrameActionId);
1037
+ }
1038
+ this.nextFrameActionId = onNextFrame(this.resizeTextarea);
1039
+ this.$emit('input', e.target.value);
1040
+ this.dispatch('MdsFormItem', 'formItemChange', e.target.value);
1041
+ },
1042
+ handleKeyDown: function handleKeyDown(e) {
1043
+ if (e.keyCode === 13) {
1044
+ this.$emit('press-enter', e);
1045
+ }
1046
+ this.$emit('keydown', e);
1047
+ },
1048
+ resizeTextarea: function resizeTextarea() {
1049
+ if (!this.autosize) {
1050
+ return false;
1051
+ }
1052
+ var minRows = this.autosize ? this.autosize.minRows : null;
1053
+ var maxRows = this.autosize ? this.autosize.maxRows : null;
1054
+ this.textareaStyles = calculateNodeHeight(this.$refs.textAreaRef, false, minRows, maxRows);
1055
+ },
1056
+ handleFocus: function handleFocus(e) {
1057
+ this.$emit('focus', e);
1058
+ },
1059
+ handleBlur: function handleBlur(e) {
1060
+ this.$emit('blur', e);
1061
+ this.dispatch('MdsFormItem', 'formItemBlur', e);
1062
+ },
1063
+ focus: function focus() {
1064
+ this.getInput().focus();
1065
+ },
1066
+ blur: function blur() {
1067
+ this.getInput().blur();
1068
+ },
1069
+ getInput: function getInput() {
1070
+ return this.$refs.textAreaRef;
1071
+ }
1072
+ },
1073
+ mounted: function mounted() {
1074
+ this.resizeTextarea();
1075
+ }
1074
1076
  });
1075
- // CONCATENATED MODULE: ./components/text/customize.vue?vue&type=script&lang=js&
1076
- /* harmony default export */ var text_customizevue_type_script_lang_js_ = (customizevue_type_script_lang_js_);
1077
- // CONCATENATED MODULE: ./components/text/customize.vue
1077
+ // CONCATENATED MODULE: ./components/input/textarea.vue?vue&type=script&lang=js&
1078
+ /* harmony default export */ var input_textareavue_type_script_lang_js_ = (textareavue_type_script_lang_js_);
1079
+ // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
1080
+ var componentNormalizer = __webpack_require__(0);
1081
+
1082
+ // CONCATENATED MODULE: ./components/input/textarea.vue
1078
1083
 
1079
1084
 
1080
1085
 
@@ -1082,10 +1087,10 @@ var input_textarea = __webpack_require__(45);
1082
1087
 
1083
1088
  /* normalize component */
1084
1089
 
1085
- var customize_component = Object(componentNormalizer["a" /* default */])(
1086
- text_customizevue_type_script_lang_js_,
1087
- customizevue_type_template_id_56d05148_render,
1088
- customizevue_type_template_id_56d05148_staticRenderFns,
1090
+ var component = Object(componentNormalizer["a" /* default */])(
1091
+ input_textareavue_type_script_lang_js_,
1092
+ render,
1093
+ staticRenderFns,
1089
1094
  false,
1090
1095
  null,
1091
1096
  null,
@@ -1094,21 +1099,16 @@ var customize_component = Object(componentNormalizer["a" /* default */])(
1094
1099
  )
1095
1100
 
1096
1101
  /* hot reload */
1097
- if (false) { var customize_api; }
1098
- customize_component.options.__file = "components/text/customize.vue"
1099
- /* harmony default export */ var customize = (customize_component.exports);
1100
- // CONCATENATED MODULE: ./components/text/index.js
1101
-
1102
+ if (false) { var api; }
1103
+ component.options.__file = "components/input/textarea.vue"
1104
+ /* harmony default export */ var input_textarea = __webpack_exports__["a"] = (component.exports);
1102
1105
 
1106
+ /***/ }),
1103
1107
 
1108
+ /***/ 7:
1109
+ /***/ (function(module, exports) {
1104
1110
 
1105
- /* istanbul ignore next */
1106
- text_text.install = function (Vue) {
1107
- Vue.component(text_text.name, text_text);
1108
- Vue.component(text_link.name, text_link);
1109
- Vue.component(customize.name, customize);
1110
- };
1111
- /* harmony default export */ var components_text = __webpack_exports__["default"] = (text_text);
1111
+ module.exports = __WEBPACK_EXTERNAL_MODULE__7__;
1112
1112
 
1113
1113
  /***/ })
1114
1114