@mdsfe/mds-ui 0.4.0-rc.1 → 0.4.0-rc.2

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 (65) hide show
  1. package/dist/affix.js +10 -10
  2. package/dist/alert.js +6 -6
  3. package/dist/anchor.js +6 -6
  4. package/dist/avatar.js +6 -6
  5. package/dist/backtop.js +11 -11
  6. package/dist/badge.js +17 -17
  7. package/dist/bordershadow.js +6 -6
  8. package/dist/breadcrumb.js +6 -6
  9. package/dist/button.js +11 -18
  10. package/dist/card.js +6 -6
  11. package/dist/carousel.js +8 -8
  12. package/dist/cascader.js +21 -21
  13. package/dist/cascaderpanel.js +15 -15
  14. package/dist/checkbox.js +4 -4
  15. package/dist/col.js +8 -8
  16. package/dist/collapse.js +6 -6
  17. package/dist/color.js +6 -6
  18. package/dist/datepicker.js +22 -22
  19. package/dist/divider.js +6 -6
  20. package/dist/drawer.js +8 -8
  21. package/dist/dropdown.js +13 -35
  22. package/dist/empty.js +6 -6
  23. package/dist/font.js +6 -6
  24. package/dist/form.js +10 -10
  25. package/dist/icon.js +6 -6
  26. package/dist/index.js +7 -7
  27. package/dist/input.js +10 -10
  28. package/dist/inputnumber.js +6 -6
  29. package/dist/layout.js +6 -6
  30. package/dist/list.js +6 -6
  31. package/dist/loading.js +6 -6
  32. package/dist/mds-ui.min.css +1 -1
  33. package/dist/mds-ui.min.js +13 -12
  34. package/dist/menu.js +17 -17
  35. package/dist/message.js +4 -4
  36. package/dist/modal.js +11 -11
  37. package/dist/notification.js +10 -10
  38. package/dist/pagination.js +11 -11
  39. package/dist/popconfirm.js +18 -64
  40. package/dist/popover.js +11 -18
  41. package/dist/progress.js +6 -6
  42. package/dist/radio.js +6 -6
  43. package/dist/rate.js +10 -10
  44. package/dist/row.js +8 -8
  45. package/dist/select.js +20 -20
  46. package/dist/slider.js +25 -25
  47. package/dist/slottable.js +18 -18
  48. package/dist/steps.js +6 -6
  49. package/dist/style/dropdown.css +0 -2169
  50. package/dist/style/index.css +1 -1
  51. package/dist/style/popconfirm.css +0 -2304
  52. package/dist/switch.js +6 -6
  53. package/dist/table.js +66 -80
  54. package/dist/tabs.js +6 -6
  55. package/dist/tag.js +6 -6
  56. package/dist/text.js +828 -828
  57. package/dist/timeline.js +6 -6
  58. package/dist/timepicker.js +18 -18
  59. package/dist/tooltip.js +8 -8
  60. package/dist/transfer.js +75 -75
  61. package/dist/transition.js +4 -4
  62. package/dist/tree.js +6 -6
  63. package/dist/typography.js +6 -6
  64. package/dist/upload.js +10 -10
  65. package/package.json +1 -1
package/dist/text.js CHANGED
@@ -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 = 101);
94
+ /******/ return __webpack_require__(__webpack_require__.s = 99);
95
95
  /******/ })
96
96
  /************************************************************************/
97
97
  /******/ ({
@@ -201,35 +201,183 @@ function normalizeComponent(
201
201
 
202
202
  /***/ }),
203
203
 
204
- /***/ 101:
205
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
204
+ /***/ 14:
205
+ /***/ (function(module, exports) {
206
206
 
207
- "use strict";
208
- // ESM COMPAT FLAG
209
- __webpack_require__.r(__webpack_exports__);
207
+ module.exports = __WEBPACK_EXTERNAL_MODULE__14__;
210
208
 
211
- // EXTERNAL MODULE: ./components/style/mixins-only.less
212
- var mixins_only = __webpack_require__(142);
209
+ /***/ }),
213
210
 
214
- // EXTERNAL MODULE: ./components/text/style/index.less
215
- var style = __webpack_require__(264);
211
+ /***/ 140:
212
+ /***/ (function(module, exports) {
216
213
 
217
- // CONCATENATED MODULE: ./components/text/style/index.js
214
+ // removed by extract-text-webpack-plugin
218
215
 
216
+ /***/ }),
219
217
 
220
- // 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=9eb235b4
218
+ /***/ 262:
219
+ /***/ (function(module, exports) {
220
+
221
+ // removed by extract-text-webpack-plugin
222
+
223
+ /***/ }),
224
+
225
+ /***/ 44:
226
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
227
+
228
+ "use strict";
229
+
230
+ // 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=55f2aeec
221
231
  var render = function () {
222
232
  var _vm = this
223
233
  var _h = _vm.$createElement
224
234
  var _c = _vm._self._c || _h
225
235
  return _c(
226
- "span",
227
- { class: ["mds-text", _vm.classNames] },
236
+ "div",
237
+ { class: _vm.prefixCls + "-content " + (_vm.disabled ? "disable" : "") },
228
238
  [
229
- _vm.icon.length > 0
230
- ? _c("mds-icon", { attrs: { type: _vm.icon } })
231
- : _vm._e(),
232
- _vm._t("default"),
239
+ _vm.showLimitPosition === "inside"
240
+ ? _c("div", { staticClass: "mds-input-textarea-wrapper" }, [
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.max_length
281
+ ? _c(
282
+ "span",
283
+ {
284
+ class: [
285
+ "mds-input-show-limit",
286
+ "mds-input-show-limit--inside",
287
+ ],
288
+ },
289
+ [_vm._v(_vm._s(_vm.number) + "/" + _vm._s(_vm.max_length))]
290
+ )
291
+ : _vm._e(),
292
+ ])
293
+ : _vm.showLimitPosition === "outside"
294
+ ? [
295
+ _c("textarea", {
296
+ directives: [
297
+ {
298
+ name: "model",
299
+ rawName: "v-model",
300
+ value: _vm.valueData,
301
+ expression: "valueData",
302
+ },
303
+ ],
304
+ ref: "textAreaRef",
305
+ class: [
306
+ _vm.prefixCls + " " + _vm.prefixCls + "-textarea",
307
+ _vm.disabled ? "mds-input-disabled" : "",
308
+ ],
309
+ style: _vm.textareaStyles,
310
+ attrs: {
311
+ maxlength: _vm.max_length,
312
+ minlength: _vm.min_length,
313
+ rows: _vm.rows,
314
+ placeholder: _vm.placeholder,
315
+ disabled: _vm.disabled,
316
+ },
317
+ domProps: { value: _vm.valueData },
318
+ on: {
319
+ input: [
320
+ function ($event) {
321
+ if ($event.target.composing) {
322
+ return
323
+ }
324
+ _vm.valueData = $event.target.value
325
+ },
326
+ _vm.handleInput,
327
+ ],
328
+ keypress: _vm.handleKeyDown,
329
+ change: _vm.handleChange,
330
+ focus: _vm.handleFocus,
331
+ blur: _vm.handleBlur,
332
+ },
333
+ }),
334
+ _vm.max_length
335
+ ? _c("span", { class: ["mds-input-show-limit"] }, [
336
+ _vm._v(_vm._s(_vm.number) + "/" + _vm._s(_vm.max_length)),
337
+ ])
338
+ : _vm._e(),
339
+ ]
340
+ : [
341
+ _c("textarea", {
342
+ directives: [
343
+ {
344
+ name: "model",
345
+ rawName: "v-model",
346
+ value: _vm.valueData,
347
+ expression: "valueData",
348
+ },
349
+ ],
350
+ ref: "textAreaRef",
351
+ class: [
352
+ _vm.prefixCls + " " + _vm.prefixCls + "-textarea",
353
+ _vm.disabled ? "mds-input-disabled" : "",
354
+ ],
355
+ style: _vm.textareaStyles,
356
+ attrs: {
357
+ maxlength: _vm.max_length,
358
+ minlength: _vm.min_length,
359
+ rows: _vm.rows,
360
+ placeholder: _vm.placeholder,
361
+ disabled: _vm.disabled,
362
+ },
363
+ domProps: { value: _vm.valueData },
364
+ on: {
365
+ input: [
366
+ function ($event) {
367
+ if ($event.target.composing) {
368
+ return
369
+ }
370
+ _vm.valueData = $event.target.value
371
+ },
372
+ _vm.handleInput,
373
+ ],
374
+ keypress: _vm.handleKeyDown,
375
+ change: _vm.handleChange,
376
+ focus: _vm.handleFocus,
377
+ blur: _vm.handleBlur,
378
+ },
379
+ }),
380
+ ],
233
381
  ],
234
382
  2
235
383
  )
@@ -238,325 +386,184 @@ var staticRenderFns = []
238
386
  render._withStripped = true
239
387
 
240
388
 
241
- // CONCATENATED MODULE: ./components/text/text.vue?vue&type=template&id=9eb235b4
389
+ // CONCATENATED MODULE: ./components/input/textarea.vue?vue&type=template&id=55f2aeec
242
390
 
243
- // EXTERNAL MODULE: external "./icon"
244
- var external_icon_ = __webpack_require__(7);
245
- var external_icon_default = /*#__PURE__*/__webpack_require__.n(external_icon_);
391
+ // CONCATENATED MODULE: ./components/input/calculateNodeHeight.js
392
+ // Thanks to https://github.com/andreypopp/react-textarea-autosize/
246
393
 
247
- // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/text/text.vue?vue&type=script&lang=js
248
- //
249
- //
250
- //
251
- //
252
- //
253
- //
394
+ /**
395
+ * calculateNodeHeight(uiTextNode, useCache = false)
396
+ */
254
397
 
398
+ 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';
255
399
 
256
- /* harmony default export */ var textvue_type_script_lang_js = ({
257
- name: 'MdsText',
258
- components: {
259
- MdsIcon: external_icon_default.a
260
- },
261
- props: {
262
- type: {
263
- type: String,
264
- default: 'primary'
265
- },
266
- mark: {
267
- type: Boolean,
268
- default: false
269
- },
270
- code: {
271
- type: Boolean,
272
- default: false
273
- },
274
- underline: {
275
- type: Boolean,
276
- default: false
277
- },
278
- delete: {
279
- type: Boolean,
280
- default: false
281
- },
282
- strong: {
283
- type: Boolean,
284
- default: false
285
- },
286
- icon: {
287
- type: String,
288
- default: ''
289
- }
290
- },
291
- data: function data() {
292
- return {
293
- editing: false,
294
- copied: false,
295
- textContent: ''
296
- };
297
- },
400
+ 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'];
298
401
 
299
- computed: {
300
- classNames: function classNames() {
301
- var res = [];
302
- var pre = 'mds-text-';
303
- switch (this.type) {
304
- case 'primary':
305
- res.push(pre + 'primary');
306
- break;
307
- case 'secondary':
308
- res.push(pre + 'secondary');
309
- break;
310
- case 'dark':
311
- res.push(pre + 'dark');
312
- break;
313
- case 'disabled':
314
- res.push(pre + 'disabled');
315
- break;
316
- case 'danger':
317
- res.push(pre + 'danger');
318
- break;
319
- case 'success':
320
- res.push(pre + 'success');
321
- break;
322
- case 'warning':
323
- res.push(pre + 'warning');
324
- break;
325
- case 'info':
326
- res.push(pre + 'info');
327
- break;
328
- default:
329
- break;
330
- }
331
- if (this.mark) {
332
- res.push(pre + 'mark');
333
- }
334
- if (this.code) {
335
- res.push(pre + 'code');
336
- }
337
- if (this.underline) {
338
- res.push(pre + 'underline');
339
- }
340
- if (this.delete) {
341
- res.push(pre + 'delete');
342
- }
343
- if (this.strong) {
344
- res.push(pre + 'strong');
345
- }
346
- return res;
347
- }
348
- },
349
- methods: {},
350
- mounted: function mounted() {}
351
- });
352
- // CONCATENATED MODULE: ./components/text/text.vue?vue&type=script&lang=js
353
- /* harmony default export */ var text_textvue_type_script_lang_js = (textvue_type_script_lang_js);
354
- // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
355
- var componentNormalizer = __webpack_require__(0);
402
+ var computedStyleCache = {};
403
+ var hiddenTextarea = void 0;
356
404
 
357
- // CONCATENATED MODULE: ./components/text/text.vue
405
+ function calculateNodeStyling(node) {
406
+ var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
358
407
 
408
+ var nodeRef = node.getAttribute('id') || node.getAttribute('data-reactid') || node.getAttribute('name');
359
409
 
410
+ if (useCache && computedStyleCache[nodeRef]) {
411
+ return computedStyleCache[nodeRef];
412
+ }
360
413
 
414
+ var style = window.getComputedStyle(node);
361
415
 
416
+ var boxSizing = style.getPropertyValue('box-sizing') || style.getPropertyValue('-moz-box-sizing') || style.getPropertyValue('-webkit-box-sizing');
362
417
 
363
- /* normalize component */
418
+ var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));
364
419
 
365
- var component = Object(componentNormalizer["a" /* default */])(
366
- text_textvue_type_script_lang_js,
367
- render,
368
- staticRenderFns,
369
- false,
370
- null,
371
- null,
372
- null
373
-
374
- )
420
+ var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));
375
421
 
376
- /* harmony default export */ var text_text = (component.exports);
377
- // 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=06061700
378
- var linkvue_type_template_id_06061700_render = function () {
379
- var _vm = this
380
- var _h = _vm.$createElement
381
- var _c = _vm._self._c || _h
382
- return _c(
383
- "a",
384
- {
385
- class: ["mds-link", _vm.underline ? "has-underline" : ""],
386
- attrs: { href: _vm.url, target: _vm.target },
387
- },
388
- [_vm._t("default")],
389
- 2
390
- )
422
+ var sizingStyle = SIZING_STYLE.map(function (name) {
423
+ return name + ':' + style.getPropertyValue(name);
424
+ }).join(';');
425
+
426
+ var nodeInfo = {
427
+ sizingStyle: sizingStyle,
428
+ paddingSize: paddingSize,
429
+ borderSize: borderSize,
430
+ boxSizing: boxSizing
431
+ };
432
+
433
+ if (useCache && nodeRef) {
434
+ computedStyleCache[nodeRef] = nodeInfo;
435
+ }
436
+
437
+ return nodeInfo;
391
438
  }
392
- var linkvue_type_template_id_06061700_staticRenderFns = []
393
- linkvue_type_template_id_06061700_render._withStripped = true
394
439
 
440
+ function calculateNodeHeight(uiTextNode) {
441
+ var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
442
+ var minRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
443
+ var maxRows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
395
444
 
396
- // CONCATENATED MODULE: ./components/text/link.vue?vue&type=template&id=06061700
445
+ if (!hiddenTextarea) {
446
+ hiddenTextarea = document.createElement('textarea');
447
+ document.body.appendChild(hiddenTextarea);
448
+ }
397
449
 
398
- // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/text/link.vue?vue&type=script&lang=js
399
- //
400
- //
401
- //
402
- //
403
- //
404
- //
450
+ // Fix wrap="off" issue
451
+ // https://github.com/mds-design/mds-design/issues/6577
452
+ if (uiTextNode.getAttribute('wrap')) {
453
+ hiddenTextarea.setAttribute('wrap', uiTextNode.getAttribute('wrap'));
454
+ } else {
455
+ hiddenTextarea.removeAttribute('wrap');
456
+ }
405
457
 
406
- /* harmony default export */ var linkvue_type_script_lang_js = ({
407
- name: 'MdsLink',
408
- props: {
409
- url: {
410
- type: String,
411
- default: ''
412
- },
413
- underline: {
414
- type: Boolean,
415
- default: false
416
- },
417
- target: {
418
- type: String,
419
- default: '_self'
420
- }
421
- },
422
- data: function data() {
423
- return {};
424
- },
458
+ // Copy all CSS properties that have an impact on the height of the content in
459
+ // the textbox
425
460
 
426
- methods: {},
427
- mounted: function mounted() {}
428
- });
429
- // CONCATENATED MODULE: ./components/text/link.vue?vue&type=script&lang=js
430
- /* harmony default export */ var text_linkvue_type_script_lang_js = (linkvue_type_script_lang_js);
431
- // CONCATENATED MODULE: ./components/text/link.vue
461
+ var _calculateNodeStyling = calculateNodeStyling(uiTextNode, useCache),
462
+ paddingSize = _calculateNodeStyling.paddingSize,
463
+ borderSize = _calculateNodeStyling.borderSize,
464
+ boxSizing = _calculateNodeStyling.boxSizing,
465
+ sizingStyle = _calculateNodeStyling.sizingStyle;
432
466
 
467
+ // Need to have the overflow attribute to hide the scrollbar otherwise
468
+ // text-lines will not calculated properly as the shadow will technically be
469
+ // narrower for content
433
470
 
434
471
 
472
+ hiddenTextarea.setAttribute('style', sizingStyle + ';' + HIDDEN_TEXTAREA_STYLE);
473
+ hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || '';
435
474
 
475
+ var minHeight = -Infinity;
476
+ var maxHeight = Infinity;
477
+ var height = hiddenTextarea.scrollHeight;
478
+ var overflowY = void 0;
436
479
 
437
- /* normalize component */
480
+ if (boxSizing === 'border-box') {
481
+ // border-box: add border, since height = content + padding + border
482
+ height = height + borderSize;
483
+ } else if (boxSizing === 'content-box') {
484
+ // remove padding, since height = content
485
+ height = height - paddingSize;
486
+ }
438
487
 
439
- var link_component = Object(componentNormalizer["a" /* default */])(
440
- text_linkvue_type_script_lang_js,
441
- linkvue_type_template_id_06061700_render,
442
- linkvue_type_template_id_06061700_staticRenderFns,
443
- false,
444
- null,
445
- null,
446
- null
447
-
448
- )
488
+ if (minRows !== null || maxRows !== null) {
489
+ // measure height of a textarea with a single row
490
+ hiddenTextarea.value = '';
491
+ var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;
492
+ if (minRows !== null) {
493
+ minHeight = singleRowHeight * minRows;
494
+ if (boxSizing === 'border-box') {
495
+ minHeight = minHeight + paddingSize + borderSize;
496
+ }
497
+ height = Math.max(minHeight, height);
498
+ }
499
+ if (maxRows !== null) {
500
+ maxHeight = singleRowHeight * maxRows;
501
+ if (boxSizing === 'border-box') {
502
+ maxHeight = maxHeight + paddingSize + borderSize;
503
+ }
504
+ overflowY = height > maxHeight ? '' : 'hidden';
505
+ height = Math.min(maxHeight, height);
506
+ }
507
+ }
508
+ // Remove scroll bar flash when autosize without maxRows
509
+ if (!maxRows) {
510
+ overflowY = 'hidden';
511
+ }
512
+ return { height: height + 'px', minHeight: minHeight + 'px', maxHeight: maxHeight + 'px', overflowY: overflowY };
513
+ }
514
+ // EXTERNAL MODULE: external "./_mixin/emitter"
515
+ var emitter_ = __webpack_require__(14);
516
+ var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);
449
517
 
450
- /* harmony default export */ var text_link = (link_component.exports);
451
- // 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=673da844
452
- var customizevue_type_template_id_673da844_render = function () {
453
- var _vm = this
454
- var _h = _vm.$createElement
455
- var _c = _vm._self._c || _h
456
- return _c(
457
- "span",
458
- { staticClass: "mds-text" },
459
- [
460
- _vm.editable
461
- ? [
462
- !_vm.editing
463
- ? _vm._t("default")
464
- : _c("mds-input-textarea", {
465
- ref: "textarea",
466
- attrs: { id: "editTextarea", rows: "1" },
467
- nativeOn: {
468
- keyup: function ($event) {
469
- if (
470
- !$event.type.indexOf("key") &&
471
- _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")
472
- ) {
473
- return null
474
- }
475
- return _vm.finishEdit($event)
476
- },
477
- blur: function ($event) {
478
- return _vm.finishEdit($event)
479
- },
480
- },
481
- model: {
482
- value: _vm.textContent,
483
- callback: function ($$v) {
484
- _vm.textContent = $$v
485
- },
486
- expression: "textContent",
487
- },
488
- }),
489
- _c(
490
- "mds-tooltip",
491
- { attrs: { title: "编辑", mouseLeaveDelay: 0 } },
492
- [
493
- _c("mds-icon", {
494
- directives: [
495
- {
496
- name: "show",
497
- rawName: "v-show",
498
- value: _vm.editable && !_vm.editing,
499
- expression: "editable && !editing",
500
- },
501
- ],
502
- staticClass: "edit-icon",
503
- attrs: { type: "line-format-border-color" },
504
- nativeOn: {
505
- click: function ($event) {
506
- return _vm.handleEdit($event)
507
- },
508
- },
509
- }),
510
- ],
511
- 1
512
- ),
513
- ]
514
- : _vm.copyable
515
- ? [
516
- _c(
517
- "span",
518
- { attrs: { id: "copy-target" } },
519
- [_vm._t("default")],
520
- 2
521
- ),
522
- _c(
523
- "mds-tooltip",
524
- {
525
- attrs: {
526
- title: _vm.copied ? "复制成功" : "复制",
527
- mouseLeaveDelay: 0,
528
- },
529
- },
530
- [
531
- _c("mds-icon", {
532
- attrs: {
533
- type: _vm.copied ? "line-check" : "line-swap-stroke",
534
- },
535
- nativeOn: {
536
- click: function ($event) {
537
- return _vm.handleCopy($event)
538
- },
539
- },
540
- }),
541
- ],
542
- 1
543
- ),
544
- ]
545
- : _vm._e(),
546
- ],
547
- 2
548
- )
549
- }
550
- var customizevue_type_template_id_673da844_staticRenderFns = []
551
- customizevue_type_template_id_673da844_render._withStripped = true
552
-
553
-
554
- // CONCATENATED MODULE: ./components/text/customize.vue?vue&type=template&id=673da844
555
-
556
- // EXTERNAL MODULE: ./components/input/textarea.vue + 5 modules
557
- var input_textarea = __webpack_require__(45);
558
-
559
- // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/text/customize.vue?vue&type=script&lang=js
518
+ // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/input/textarea.vue?vue&type=script&lang=js
519
+ //
520
+ //
521
+ //
522
+ //
523
+ //
524
+ //
525
+ //
526
+ //
527
+ //
528
+ //
529
+ //
530
+ //
531
+ //
532
+ //
533
+ //
534
+ //
535
+ //
536
+ //
537
+ //
538
+ //
539
+ //
540
+ //
541
+ //
542
+ //
543
+ //
544
+ //
545
+ //
546
+ //
547
+ //
548
+ //
549
+ //
550
+ //
551
+ //
552
+ //
553
+ //
554
+ //
555
+ //
556
+ //
557
+ //
558
+ //
559
+ //
560
+ //
561
+ //
562
+ //
563
+ //
564
+ //
565
+ //
566
+ //
560
567
  //
561
568
  //
562
569
  //
@@ -588,269 +595,218 @@ var input_textarea = __webpack_require__(45);
588
595
 
589
596
 
590
597
 
591
- /* harmony default export */ var customizevue_type_script_lang_js = ({
592
- name: 'MdsTextCustomize',
593
- components: {
594
- MdsIcon: external_icon_default.a,
595
- MdsInputTextarea: input_textarea["a" /* default */]
596
- },
598
+
599
+ function onNextFrame(cb) {
600
+ if (window.requestAnimationFrame) {
601
+ return window.requestAnimationFrame(cb);
602
+ }
603
+ return window.setTimeout(cb, 1);
604
+ }
605
+
606
+ function clearNextFrameAction(nextFrameId) {
607
+ if (window.cancelAnimationFrame) {
608
+ window.cancelAnimationFrame(nextFrameId);
609
+ } else {
610
+ window.clearTimeout(nextFrameId);
611
+ }
612
+ }
613
+
614
+ /* harmony default export */ var textareavue_type_script_lang_js = ({
615
+ name: 'MdsInputTextarea',
616
+ mixins: [emitter_default.a],
597
617
  props: {
598
- editable: {
599
- type: Boolean,
618
+ autosize: {
619
+ type: [Boolean, Object],
600
620
  default: false
601
621
  },
602
- copyable: {
622
+ prefixCls: {
623
+ type: String,
624
+ default: 'mds-input'
625
+ },
626
+ maxlength: {
627
+ type: Number
628
+ },
629
+ minlength: {
630
+ type: Number
631
+ },
632
+ rows: {
633
+ type: Number,
634
+ default: 4
635
+ },
636
+ showLimit: {
637
+ type: [Boolean, String],
638
+ default: undefined
639
+ },
640
+ placeholder: {
641
+ type: String,
642
+ default: ''
643
+ },
644
+ disabled: {
603
645
  type: Boolean,
604
646
  default: false
605
- }
647
+ },
648
+ value: null
606
649
  },
607
650
  data: function data() {
608
651
  return {
609
- editing: false,
610
- copied: false,
611
- textContent: ''
652
+ textareaStyles: {},
653
+ number: 0
612
654
  };
613
655
  },
614
656
 
615
- methods: {
616
- handleEdit: function handleEdit() {
617
- this.textContent = this.$slots.default[0].text;
618
- this.editing = true;
619
- this.$nextTick(function () {
620
- // this.$refs.textarea.focus()
621
- document.querySelector('#editTextarea').focus();
622
- });
657
+ computed: {
658
+ valueData: {
659
+ get: function get() {
660
+ return this.value || '';
661
+ },
662
+ set: function set(value) {
663
+ this.$emit('input', value);
664
+ }
623
665
  },
624
- finishEdit: function finishEdit() {
625
- this.editing = false;
626
- this.$slots.default[0].text = this.textContent;
666
+ max_length: function max_length() {
667
+ return this.$attrs.maxlength || this.maxlength;
627
668
  },
628
- handleCopy: function handleCopy() {
629
- if (!this.copied) {
630
- var copyContent = document.querySelector('#copy-target').textContent;
631
- var that = this;
632
- this.$copyText(copyContent).then(function () {
633
- that.copied = true;
669
+ min_length: function min_length() {
670
+ return this.$attrs.minlength || this.minlength;
671
+ },
672
+ showLimitPosition: function showLimitPosition() {
673
+ if (this.showLimit === 'outside') return 'outside';
674
+ if (this.showLimit === true || this.showLimit === 'inside') return 'inside';
675
+ return null; // 不显示
676
+ }
677
+ },
678
+ watch: {
679
+ valueData: {
680
+ immediate: true,
681
+ handler: function handler(newVal) {
682
+ var _this = this;
683
+
684
+ this.$nextTick(function () {
685
+ _this.resizeTextarea();
634
686
  });
687
+ if (newVal.length > this.maxlength) {
688
+ return false;
689
+ } else {
690
+ this.number = newVal.length;
691
+ }
635
692
  }
636
693
  }
637
694
  },
638
- mounted: function mounted() {}
639
- });
640
- // CONCATENATED MODULE: ./components/text/customize.vue?vue&type=script&lang=js
641
- /* harmony default export */ var text_customizevue_type_script_lang_js = (customizevue_type_script_lang_js);
642
- // CONCATENATED MODULE: ./components/text/customize.vue
643
-
644
-
645
-
646
-
647
-
648
- /* normalize component */
649
-
650
- var customize_component = Object(componentNormalizer["a" /* default */])(
651
- text_customizevue_type_script_lang_js,
652
- customizevue_type_template_id_673da844_render,
653
- customizevue_type_template_id_673da844_staticRenderFns,
654
- false,
655
- null,
656
- null,
657
- null
658
-
659
- )
660
-
661
- /* harmony default export */ var customize = (customize_component.exports);
662
- // CONCATENATED MODULE: ./components/text/index.js
663
-
664
-
665
-
695
+ created: function created() {
696
+ this.number = this.valueData.length;
697
+ },
666
698
 
667
- /* istanbul ignore next */
668
- text_text.install = function (Vue) {
669
- Vue.component(text_text.name, text_text);
670
- Vue.component(text_link.name, text_link);
671
- Vue.component(customize.name, customize);
672
- };
673
- /* harmony default export */ var components_text = __webpack_exports__["default"] = (text_text);
699
+ methods: {
700
+ handleChange: function handleChange(e) {
701
+ this.$emit('change', e);
702
+ },
703
+ handleInput: function handleInput(e) {
704
+ if (this.nextFrameActionId) {
705
+ clearNextFrameAction(this.nextFrameActionId);
706
+ }
707
+ this.nextFrameActionId = onNextFrame(this.resizeTextarea);
708
+ this.$emit('input', e.target.value);
709
+ this.dispatch('MdsFormItem', 'formItemChange', e.target.value);
710
+ },
711
+ handleKeyDown: function handleKeyDown(e) {
712
+ if (e.keyCode === 13) {
713
+ this.$emit('press-enter', e);
714
+ }
715
+ this.$emit('keydown', e);
716
+ },
717
+ resizeTextarea: function resizeTextarea() {
718
+ if (!this.autosize) {
719
+ return false;
720
+ }
721
+ var minRows = this.autosize ? this.autosize.minRows : null;
722
+ var maxRows = this.autosize ? this.autosize.maxRows : null;
723
+ this.textareaStyles = calculateNodeHeight(this.$refs.textAreaRef, false, minRows, maxRows);
724
+ },
725
+ handleFocus: function handleFocus(e) {
726
+ this.$emit('focus', e);
727
+ },
728
+ handleBlur: function handleBlur(e) {
729
+ this.$emit('blur', e);
730
+ this.dispatch('MdsFormItem', 'formItemBlur', e);
731
+ },
732
+ focus: function focus() {
733
+ this.getInput().focus();
734
+ },
735
+ blur: function blur() {
736
+ this.getInput().blur();
737
+ },
738
+ getInput: function getInput() {
739
+ return this.$refs.textAreaRef;
740
+ }
741
+ },
742
+ mounted: function mounted() {
743
+ this.resizeTextarea();
744
+ }
745
+ });
746
+ // CONCATENATED MODULE: ./components/input/textarea.vue?vue&type=script&lang=js
747
+ /* harmony default export */ var input_textareavue_type_script_lang_js = (textareavue_type_script_lang_js);
748
+ // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
749
+ var componentNormalizer = __webpack_require__(0);
674
750
 
675
- /***/ }),
751
+ // CONCATENATED MODULE: ./components/input/textarea.vue
676
752
 
677
- /***/ 14:
678
- /***/ (function(module, exports) {
679
753
 
680
- module.exports = __WEBPACK_EXTERNAL_MODULE__14__;
681
754
 
682
- /***/ }),
683
755
 
684
- /***/ 142:
685
- /***/ (function(module, exports) {
686
756
 
687
- // removed by extract-text-webpack-plugin
757
+ /* normalize component */
758
+
759
+ var component = Object(componentNormalizer["a" /* default */])(
760
+ input_textareavue_type_script_lang_js,
761
+ render,
762
+ staticRenderFns,
763
+ false,
764
+ null,
765
+ null,
766
+ null
767
+
768
+ )
769
+
770
+ /* harmony default export */ var input_textarea = __webpack_exports__["a"] = (component.exports);
688
771
 
689
772
  /***/ }),
690
773
 
691
- /***/ 264:
774
+ /***/ 7:
692
775
  /***/ (function(module, exports) {
693
776
 
694
- // removed by extract-text-webpack-plugin
777
+ module.exports = __WEBPACK_EXTERNAL_MODULE__7__;
695
778
 
696
779
  /***/ }),
697
780
 
698
- /***/ 45:
781
+ /***/ 99:
699
782
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
700
783
 
701
784
  "use strict";
785
+ // ESM COMPAT FLAG
786
+ __webpack_require__.r(__webpack_exports__);
702
787
 
703
- // 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=55f2aeec
788
+ // EXTERNAL MODULE: ./components/style/mixins-only.less
789
+ var mixins_only = __webpack_require__(140);
790
+
791
+ // EXTERNAL MODULE: ./components/text/style/index.less
792
+ var style = __webpack_require__(262);
793
+
794
+ // CONCATENATED MODULE: ./components/text/style/index.js
795
+
796
+
797
+ // 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=9eb235b4
704
798
  var render = function () {
705
799
  var _vm = this
706
800
  var _h = _vm.$createElement
707
801
  var _c = _vm._self._c || _h
708
802
  return _c(
709
- "div",
710
- { class: _vm.prefixCls + "-content " + (_vm.disabled ? "disable" : "") },
803
+ "span",
804
+ { class: ["mds-text", _vm.classNames] },
711
805
  [
712
- _vm.showLimitPosition === "inside"
713
- ? _c("div", { staticClass: "mds-input-textarea-wrapper" }, [
714
- _c("textarea", {
715
- directives: [
716
- {
717
- name: "model",
718
- rawName: "v-model",
719
- value: _vm.valueData,
720
- expression: "valueData",
721
- },
722
- ],
723
- ref: "textAreaRef",
724
- class: [
725
- _vm.prefixCls + " " + _vm.prefixCls + "-textarea",
726
- _vm.disabled ? "mds-input-disabled" : "",
727
- ],
728
- style: _vm.textareaStyles,
729
- attrs: {
730
- maxlength: _vm.max_length,
731
- minlength: _vm.min_length,
732
- rows: _vm.rows,
733
- placeholder: _vm.placeholder,
734
- disabled: _vm.disabled,
735
- },
736
- domProps: { value: _vm.valueData },
737
- on: {
738
- input: [
739
- function ($event) {
740
- if ($event.target.composing) {
741
- return
742
- }
743
- _vm.valueData = $event.target.value
744
- },
745
- _vm.handleInput,
746
- ],
747
- keypress: _vm.handleKeyDown,
748
- change: _vm.handleChange,
749
- focus: _vm.handleFocus,
750
- blur: _vm.handleBlur,
751
- },
752
- }),
753
- _vm.max_length
754
- ? _c(
755
- "span",
756
- {
757
- class: [
758
- "mds-input-show-limit",
759
- "mds-input-show-limit--inside",
760
- ],
761
- },
762
- [_vm._v(_vm._s(_vm.number) + "/" + _vm._s(_vm.max_length))]
763
- )
764
- : _vm._e(),
765
- ])
766
- : _vm.showLimitPosition === "outside"
767
- ? [
768
- _c("textarea", {
769
- directives: [
770
- {
771
- name: "model",
772
- rawName: "v-model",
773
- value: _vm.valueData,
774
- expression: "valueData",
775
- },
776
- ],
777
- ref: "textAreaRef",
778
- class: [
779
- _vm.prefixCls + " " + _vm.prefixCls + "-textarea",
780
- _vm.disabled ? "mds-input-disabled" : "",
781
- ],
782
- style: _vm.textareaStyles,
783
- attrs: {
784
- maxlength: _vm.max_length,
785
- minlength: _vm.min_length,
786
- rows: _vm.rows,
787
- placeholder: _vm.placeholder,
788
- disabled: _vm.disabled,
789
- },
790
- domProps: { value: _vm.valueData },
791
- on: {
792
- input: [
793
- function ($event) {
794
- if ($event.target.composing) {
795
- return
796
- }
797
- _vm.valueData = $event.target.value
798
- },
799
- _vm.handleInput,
800
- ],
801
- keypress: _vm.handleKeyDown,
802
- change: _vm.handleChange,
803
- focus: _vm.handleFocus,
804
- blur: _vm.handleBlur,
805
- },
806
- }),
807
- _vm.max_length
808
- ? _c("span", { class: ["mds-input-show-limit"] }, [
809
- _vm._v(_vm._s(_vm.number) + "/" + _vm._s(_vm.max_length)),
810
- ])
811
- : _vm._e(),
812
- ]
813
- : [
814
- _c("textarea", {
815
- directives: [
816
- {
817
- name: "model",
818
- rawName: "v-model",
819
- value: _vm.valueData,
820
- expression: "valueData",
821
- },
822
- ],
823
- ref: "textAreaRef",
824
- class: [
825
- _vm.prefixCls + " " + _vm.prefixCls + "-textarea",
826
- _vm.disabled ? "mds-input-disabled" : "",
827
- ],
828
- style: _vm.textareaStyles,
829
- attrs: {
830
- maxlength: _vm.max_length,
831
- minlength: _vm.min_length,
832
- rows: _vm.rows,
833
- placeholder: _vm.placeholder,
834
- disabled: _vm.disabled,
835
- },
836
- domProps: { value: _vm.valueData },
837
- on: {
838
- input: [
839
- function ($event) {
840
- if ($event.target.composing) {
841
- return
842
- }
843
- _vm.valueData = $event.target.value
844
- },
845
- _vm.handleInput,
846
- ],
847
- keypress: _vm.handleKeyDown,
848
- change: _vm.handleChange,
849
- focus: _vm.handleFocus,
850
- blur: _vm.handleBlur,
851
- },
852
- }),
853
- ],
806
+ _vm.icon.length > 0
807
+ ? _c("mds-icon", { attrs: { type: _vm.icon } })
808
+ : _vm._e(),
809
+ _vm._t("default"),
854
810
  ],
855
811
  2
856
812
  )
@@ -859,184 +815,325 @@ var staticRenderFns = []
859
815
  render._withStripped = true
860
816
 
861
817
 
862
- // CONCATENATED MODULE: ./components/input/textarea.vue?vue&type=template&id=55f2aeec
818
+ // CONCATENATED MODULE: ./components/text/text.vue?vue&type=template&id=9eb235b4
863
819
 
864
- // CONCATENATED MODULE: ./components/input/calculateNodeHeight.js
865
- // Thanks to https://github.com/andreypopp/react-textarea-autosize/
820
+ // EXTERNAL MODULE: external "./icon"
821
+ var external_icon_ = __webpack_require__(7);
822
+ var external_icon_default = /*#__PURE__*/__webpack_require__.n(external_icon_);
866
823
 
867
- /**
868
- * calculateNodeHeight(uiTextNode, useCache = false)
869
- */
824
+ // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/text/text.vue?vue&type=script&lang=js
825
+ //
826
+ //
827
+ //
828
+ //
829
+ //
830
+ //
870
831
 
871
- 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';
872
832
 
873
- 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'];
874
-
875
- var computedStyleCache = {};
876
- var hiddenTextarea = void 0;
877
-
878
- function calculateNodeStyling(node) {
879
- var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
880
-
881
- var nodeRef = node.getAttribute('id') || node.getAttribute('data-reactid') || node.getAttribute('name');
833
+ /* harmony default export */ var textvue_type_script_lang_js = ({
834
+ name: 'MdsText',
835
+ components: {
836
+ MdsIcon: external_icon_default.a
837
+ },
838
+ props: {
839
+ type: {
840
+ type: String,
841
+ default: 'primary'
842
+ },
843
+ mark: {
844
+ type: Boolean,
845
+ default: false
846
+ },
847
+ code: {
848
+ type: Boolean,
849
+ default: false
850
+ },
851
+ underline: {
852
+ type: Boolean,
853
+ default: false
854
+ },
855
+ delete: {
856
+ type: Boolean,
857
+ default: false
858
+ },
859
+ strong: {
860
+ type: Boolean,
861
+ default: false
862
+ },
863
+ icon: {
864
+ type: String,
865
+ default: ''
866
+ }
867
+ },
868
+ data: function data() {
869
+ return {
870
+ editing: false,
871
+ copied: false,
872
+ textContent: ''
873
+ };
874
+ },
882
875
 
883
- if (useCache && computedStyleCache[nodeRef]) {
884
- return computedStyleCache[nodeRef];
885
- }
876
+ computed: {
877
+ classNames: function classNames() {
878
+ var res = [];
879
+ var pre = 'mds-text-';
880
+ switch (this.type) {
881
+ case 'primary':
882
+ res.push(pre + 'primary');
883
+ break;
884
+ case 'secondary':
885
+ res.push(pre + 'secondary');
886
+ break;
887
+ case 'dark':
888
+ res.push(pre + 'dark');
889
+ break;
890
+ case 'disabled':
891
+ res.push(pre + 'disabled');
892
+ break;
893
+ case 'danger':
894
+ res.push(pre + 'danger');
895
+ break;
896
+ case 'success':
897
+ res.push(pre + 'success');
898
+ break;
899
+ case 'warning':
900
+ res.push(pre + 'warning');
901
+ break;
902
+ case 'info':
903
+ res.push(pre + 'info');
904
+ break;
905
+ default:
906
+ break;
907
+ }
908
+ if (this.mark) {
909
+ res.push(pre + 'mark');
910
+ }
911
+ if (this.code) {
912
+ res.push(pre + 'code');
913
+ }
914
+ if (this.underline) {
915
+ res.push(pre + 'underline');
916
+ }
917
+ if (this.delete) {
918
+ res.push(pre + 'delete');
919
+ }
920
+ if (this.strong) {
921
+ res.push(pre + 'strong');
922
+ }
923
+ return res;
924
+ }
925
+ },
926
+ methods: {},
927
+ mounted: function mounted() {}
928
+ });
929
+ // CONCATENATED MODULE: ./components/text/text.vue?vue&type=script&lang=js
930
+ /* harmony default export */ var text_textvue_type_script_lang_js = (textvue_type_script_lang_js);
931
+ // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
932
+ var componentNormalizer = __webpack_require__(0);
886
933
 
887
- var style = window.getComputedStyle(node);
934
+ // CONCATENATED MODULE: ./components/text/text.vue
888
935
 
889
- var boxSizing = style.getPropertyValue('box-sizing') || style.getPropertyValue('-moz-box-sizing') || style.getPropertyValue('-webkit-box-sizing');
890
936
 
891
- var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));
892
937
 
893
- var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));
894
938
 
895
- var sizingStyle = SIZING_STYLE.map(function (name) {
896
- return name + ':' + style.getPropertyValue(name);
897
- }).join(';');
898
939
 
899
- var nodeInfo = {
900
- sizingStyle: sizingStyle,
901
- paddingSize: paddingSize,
902
- borderSize: borderSize,
903
- boxSizing: boxSizing
904
- };
940
+ /* normalize component */
905
941
 
906
- if (useCache && nodeRef) {
907
- computedStyleCache[nodeRef] = nodeInfo;
908
- }
942
+ var component = Object(componentNormalizer["a" /* default */])(
943
+ text_textvue_type_script_lang_js,
944
+ render,
945
+ staticRenderFns,
946
+ false,
947
+ null,
948
+ null,
949
+ null
950
+
951
+ )
909
952
 
910
- return nodeInfo;
953
+ /* harmony default export */ var text_text = (component.exports);
954
+ // 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=06061700
955
+ var linkvue_type_template_id_06061700_render = function () {
956
+ var _vm = this
957
+ var _h = _vm.$createElement
958
+ var _c = _vm._self._c || _h
959
+ return _c(
960
+ "a",
961
+ {
962
+ class: ["mds-link", _vm.underline ? "has-underline" : ""],
963
+ attrs: { href: _vm.url, target: _vm.target },
964
+ },
965
+ [_vm._t("default")],
966
+ 2
967
+ )
911
968
  }
969
+ var linkvue_type_template_id_06061700_staticRenderFns = []
970
+ linkvue_type_template_id_06061700_render._withStripped = true
912
971
 
913
- function calculateNodeHeight(uiTextNode) {
914
- var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
915
- var minRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
916
- var maxRows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
917
972
 
918
- if (!hiddenTextarea) {
919
- hiddenTextarea = document.createElement('textarea');
920
- document.body.appendChild(hiddenTextarea);
921
- }
973
+ // CONCATENATED MODULE: ./components/text/link.vue?vue&type=template&id=06061700
922
974
 
923
- // Fix wrap="off" issue
924
- // https://github.com/mds-design/mds-design/issues/6577
925
- if (uiTextNode.getAttribute('wrap')) {
926
- hiddenTextarea.setAttribute('wrap', uiTextNode.getAttribute('wrap'));
927
- } else {
928
- hiddenTextarea.removeAttribute('wrap');
929
- }
975
+ // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/text/link.vue?vue&type=script&lang=js
976
+ //
977
+ //
978
+ //
979
+ //
980
+ //
981
+ //
930
982
 
931
- // Copy all CSS properties that have an impact on the height of the content in
932
- // the textbox
983
+ /* harmony default export */ var linkvue_type_script_lang_js = ({
984
+ name: 'MdsLink',
985
+ props: {
986
+ url: {
987
+ type: String,
988
+ default: ''
989
+ },
990
+ underline: {
991
+ type: Boolean,
992
+ default: false
993
+ },
994
+ target: {
995
+ type: String,
996
+ default: '_self'
997
+ }
998
+ },
999
+ data: function data() {
1000
+ return {};
1001
+ },
933
1002
 
934
- var _calculateNodeStyling = calculateNodeStyling(uiTextNode, useCache),
935
- paddingSize = _calculateNodeStyling.paddingSize,
936
- borderSize = _calculateNodeStyling.borderSize,
937
- boxSizing = _calculateNodeStyling.boxSizing,
938
- sizingStyle = _calculateNodeStyling.sizingStyle;
1003
+ methods: {},
1004
+ mounted: function mounted() {}
1005
+ });
1006
+ // CONCATENATED MODULE: ./components/text/link.vue?vue&type=script&lang=js
1007
+ /* harmony default export */ var text_linkvue_type_script_lang_js = (linkvue_type_script_lang_js);
1008
+ // CONCATENATED MODULE: ./components/text/link.vue
939
1009
 
940
- // Need to have the overflow attribute to hide the scrollbar otherwise
941
- // text-lines will not calculated properly as the shadow will technically be
942
- // narrower for content
943
1010
 
944
1011
 
945
- hiddenTextarea.setAttribute('style', sizingStyle + ';' + HIDDEN_TEXTAREA_STYLE);
946
- hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || '';
947
1012
 
948
- var minHeight = -Infinity;
949
- var maxHeight = Infinity;
950
- var height = hiddenTextarea.scrollHeight;
951
- var overflowY = void 0;
952
1013
 
953
- if (boxSizing === 'border-box') {
954
- // border-box: add border, since height = content + padding + border
955
- height = height + borderSize;
956
- } else if (boxSizing === 'content-box') {
957
- // remove padding, since height = content
958
- height = height - paddingSize;
959
- }
1014
+ /* normalize component */
960
1015
 
961
- if (minRows !== null || maxRows !== null) {
962
- // measure height of a textarea with a single row
963
- hiddenTextarea.value = '';
964
- var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;
965
- if (minRows !== null) {
966
- minHeight = singleRowHeight * minRows;
967
- if (boxSizing === 'border-box') {
968
- minHeight = minHeight + paddingSize + borderSize;
969
- }
970
- height = Math.max(minHeight, height);
971
- }
972
- if (maxRows !== null) {
973
- maxHeight = singleRowHeight * maxRows;
974
- if (boxSizing === 'border-box') {
975
- maxHeight = maxHeight + paddingSize + borderSize;
976
- }
977
- overflowY = height > maxHeight ? '' : 'hidden';
978
- height = Math.min(maxHeight, height);
979
- }
980
- }
981
- // Remove scroll bar flash when autosize without maxRows
982
- if (!maxRows) {
983
- overflowY = 'hidden';
984
- }
985
- return { height: height + 'px', minHeight: minHeight + 'px', maxHeight: maxHeight + 'px', overflowY: overflowY };
1016
+ var link_component = Object(componentNormalizer["a" /* default */])(
1017
+ text_linkvue_type_script_lang_js,
1018
+ linkvue_type_template_id_06061700_render,
1019
+ linkvue_type_template_id_06061700_staticRenderFns,
1020
+ false,
1021
+ null,
1022
+ null,
1023
+ null
1024
+
1025
+ )
1026
+
1027
+ /* harmony default export */ var text_link = (link_component.exports);
1028
+ // 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=673da844
1029
+ var customizevue_type_template_id_673da844_render = function () {
1030
+ var _vm = this
1031
+ var _h = _vm.$createElement
1032
+ var _c = _vm._self._c || _h
1033
+ return _c(
1034
+ "span",
1035
+ { staticClass: "mds-text" },
1036
+ [
1037
+ _vm.editable
1038
+ ? [
1039
+ !_vm.editing
1040
+ ? _vm._t("default")
1041
+ : _c("mds-input-textarea", {
1042
+ ref: "textarea",
1043
+ attrs: { id: "editTextarea", rows: "1" },
1044
+ nativeOn: {
1045
+ keyup: function ($event) {
1046
+ if (
1047
+ !$event.type.indexOf("key") &&
1048
+ _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")
1049
+ ) {
1050
+ return null
1051
+ }
1052
+ return _vm.finishEdit($event)
1053
+ },
1054
+ blur: function ($event) {
1055
+ return _vm.finishEdit($event)
1056
+ },
1057
+ },
1058
+ model: {
1059
+ value: _vm.textContent,
1060
+ callback: function ($$v) {
1061
+ _vm.textContent = $$v
1062
+ },
1063
+ expression: "textContent",
1064
+ },
1065
+ }),
1066
+ _c(
1067
+ "mds-tooltip",
1068
+ { attrs: { title: "编辑", mouseLeaveDelay: 0 } },
1069
+ [
1070
+ _c("mds-icon", {
1071
+ directives: [
1072
+ {
1073
+ name: "show",
1074
+ rawName: "v-show",
1075
+ value: _vm.editable && !_vm.editing,
1076
+ expression: "editable && !editing",
1077
+ },
1078
+ ],
1079
+ staticClass: "edit-icon",
1080
+ attrs: { type: "line-format-border-color" },
1081
+ nativeOn: {
1082
+ click: function ($event) {
1083
+ return _vm.handleEdit($event)
1084
+ },
1085
+ },
1086
+ }),
1087
+ ],
1088
+ 1
1089
+ ),
1090
+ ]
1091
+ : _vm.copyable
1092
+ ? [
1093
+ _c(
1094
+ "span",
1095
+ { attrs: { id: "copy-target" } },
1096
+ [_vm._t("default")],
1097
+ 2
1098
+ ),
1099
+ _c(
1100
+ "mds-tooltip",
1101
+ {
1102
+ attrs: {
1103
+ title: _vm.copied ? "复制成功" : "复制",
1104
+ mouseLeaveDelay: 0,
1105
+ },
1106
+ },
1107
+ [
1108
+ _c("mds-icon", {
1109
+ attrs: {
1110
+ type: _vm.copied ? "line-check" : "line-swap-stroke",
1111
+ },
1112
+ nativeOn: {
1113
+ click: function ($event) {
1114
+ return _vm.handleCopy($event)
1115
+ },
1116
+ },
1117
+ }),
1118
+ ],
1119
+ 1
1120
+ ),
1121
+ ]
1122
+ : _vm._e(),
1123
+ ],
1124
+ 2
1125
+ )
986
1126
  }
987
- // EXTERNAL MODULE: external "./_mixin/emitter"
988
- var emitter_ = __webpack_require__(14);
989
- var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);
1127
+ var customizevue_type_template_id_673da844_staticRenderFns = []
1128
+ customizevue_type_template_id_673da844_render._withStripped = true
990
1129
 
991
- // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/input/textarea.vue?vue&type=script&lang=js
992
- //
993
- //
994
- //
995
- //
996
- //
997
- //
998
- //
999
- //
1000
- //
1001
- //
1002
- //
1003
- //
1004
- //
1005
- //
1006
- //
1007
- //
1008
- //
1009
- //
1010
- //
1011
- //
1012
- //
1013
- //
1014
- //
1015
- //
1016
- //
1017
- //
1018
- //
1019
- //
1020
- //
1021
- //
1022
- //
1023
- //
1024
- //
1025
- //
1026
- //
1027
- //
1028
- //
1029
- //
1030
- //
1031
- //
1032
- //
1033
- //
1034
- //
1035
- //
1036
- //
1037
- //
1038
- //
1039
- //
1130
+
1131
+ // CONCATENATED MODULE: ./components/text/customize.vue?vue&type=template&id=673da844
1132
+
1133
+ // EXTERNAL MODULE: ./components/input/textarea.vue + 5 modules
1134
+ var input_textarea = __webpack_require__(44);
1135
+
1136
+ // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/text/customize.vue?vue&type=script&lang=js
1040
1137
  //
1041
1138
  //
1042
1139
  //
@@ -1068,160 +1165,58 @@ var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);
1068
1165
 
1069
1166
 
1070
1167
 
1071
-
1072
- function onNextFrame(cb) {
1073
- if (window.requestAnimationFrame) {
1074
- return window.requestAnimationFrame(cb);
1075
- }
1076
- return window.setTimeout(cb, 1);
1077
- }
1078
-
1079
- function clearNextFrameAction(nextFrameId) {
1080
- if (window.cancelAnimationFrame) {
1081
- window.cancelAnimationFrame(nextFrameId);
1082
- } else {
1083
- window.clearTimeout(nextFrameId);
1084
- }
1085
- }
1086
-
1087
- /* harmony default export */ var textareavue_type_script_lang_js = ({
1088
- name: 'MdsInputTextarea',
1089
- mixins: [emitter_default.a],
1168
+ /* harmony default export */ var customizevue_type_script_lang_js = ({
1169
+ name: 'MdsTextCustomize',
1170
+ components: {
1171
+ MdsIcon: external_icon_default.a,
1172
+ MdsInputTextarea: input_textarea["a" /* default */]
1173
+ },
1090
1174
  props: {
1091
- autosize: {
1092
- type: [Boolean, Object],
1175
+ editable: {
1176
+ type: Boolean,
1093
1177
  default: false
1094
1178
  },
1095
- prefixCls: {
1096
- type: String,
1097
- default: 'mds-input'
1098
- },
1099
- maxlength: {
1100
- type: Number
1101
- },
1102
- minlength: {
1103
- type: Number
1104
- },
1105
- rows: {
1106
- type: Number,
1107
- default: 4
1108
- },
1109
- showLimit: {
1110
- type: [Boolean, String],
1111
- default: undefined
1112
- },
1113
- placeholder: {
1114
- type: String,
1115
- default: ''
1116
- },
1117
- disabled: {
1179
+ copyable: {
1118
1180
  type: Boolean,
1119
1181
  default: false
1120
- },
1121
- value: null
1182
+ }
1122
1183
  },
1123
1184
  data: function data() {
1124
1185
  return {
1125
- textareaStyles: {},
1126
- number: 0
1186
+ editing: false,
1187
+ copied: false,
1188
+ textContent: ''
1127
1189
  };
1128
1190
  },
1129
1191
 
1130
- computed: {
1131
- valueData: {
1132
- get: function get() {
1133
- return this.value || '';
1134
- },
1135
- set: function set(value) {
1136
- this.$emit('input', value);
1137
- }
1138
- },
1139
- max_length: function max_length() {
1140
- return this.$attrs.maxlength || this.maxlength;
1141
- },
1142
- min_length: function min_length() {
1143
- return this.$attrs.minlength || this.minlength;
1144
- },
1145
- showLimitPosition: function showLimitPosition() {
1146
- if (this.showLimit === 'outside') return 'outside';
1147
- if (this.showLimit === true || this.showLimit === 'inside') return 'inside';
1148
- return null; // 不显示
1149
- }
1150
- },
1151
- watch: {
1152
- valueData: {
1153
- immediate: true,
1154
- handler: function handler(newVal) {
1155
- var _this = this;
1156
-
1157
- this.$nextTick(function () {
1158
- _this.resizeTextarea();
1159
- });
1160
- if (newVal.length > this.maxlength) {
1161
- return false;
1162
- } else {
1163
- this.number = newVal.length;
1164
- }
1165
- }
1166
- }
1167
- },
1168
- created: function created() {
1169
- this.number = this.valueData.length;
1170
- },
1171
-
1172
1192
  methods: {
1173
- handleChange: function handleChange(e) {
1174
- this.$emit('change', e);
1175
- },
1176
- handleInput: function handleInput(e) {
1177
- if (this.nextFrameActionId) {
1178
- clearNextFrameAction(this.nextFrameActionId);
1179
- }
1180
- this.nextFrameActionId = onNextFrame(this.resizeTextarea);
1181
- this.$emit('input', e.target.value);
1182
- this.dispatch('MdsFormItem', 'formItemChange', e.target.value);
1193
+ handleEdit: function handleEdit() {
1194
+ this.textContent = this.$slots.default[0].text;
1195
+ this.editing = true;
1196
+ this.$nextTick(function () {
1197
+ // this.$refs.textarea.focus()
1198
+ document.querySelector('#editTextarea').focus();
1199
+ });
1183
1200
  },
1184
- handleKeyDown: function handleKeyDown(e) {
1185
- if (e.keyCode === 13) {
1186
- this.$emit('press-enter', e);
1187
- }
1188
- this.$emit('keydown', e);
1201
+ finishEdit: function finishEdit() {
1202
+ this.editing = false;
1203
+ this.$slots.default[0].text = this.textContent;
1189
1204
  },
1190
- resizeTextarea: function resizeTextarea() {
1191
- if (!this.autosize) {
1192
- return false;
1205
+ handleCopy: function handleCopy() {
1206
+ if (!this.copied) {
1207
+ var copyContent = document.querySelector('#copy-target').textContent;
1208
+ var that = this;
1209
+ this.$copyText(copyContent).then(function () {
1210
+ that.copied = true;
1211
+ });
1193
1212
  }
1194
- var minRows = this.autosize ? this.autosize.minRows : null;
1195
- var maxRows = this.autosize ? this.autosize.maxRows : null;
1196
- this.textareaStyles = calculateNodeHeight(this.$refs.textAreaRef, false, minRows, maxRows);
1197
- },
1198
- handleFocus: function handleFocus(e) {
1199
- this.$emit('focus', e);
1200
- },
1201
- handleBlur: function handleBlur(e) {
1202
- this.$emit('blur', e);
1203
- this.dispatch('MdsFormItem', 'formItemBlur', e);
1204
- },
1205
- focus: function focus() {
1206
- this.getInput().focus();
1207
- },
1208
- blur: function blur() {
1209
- this.getInput().blur();
1210
- },
1211
- getInput: function getInput() {
1212
- return this.$refs.textAreaRef;
1213
1213
  }
1214
1214
  },
1215
- mounted: function mounted() {
1216
- this.resizeTextarea();
1217
- }
1215
+ mounted: function mounted() {}
1218
1216
  });
1219
- // CONCATENATED MODULE: ./components/input/textarea.vue?vue&type=script&lang=js
1220
- /* harmony default export */ var input_textareavue_type_script_lang_js = (textareavue_type_script_lang_js);
1221
- // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
1222
- var componentNormalizer = __webpack_require__(0);
1223
-
1224
- // CONCATENATED MODULE: ./components/input/textarea.vue
1217
+ // CONCATENATED MODULE: ./components/text/customize.vue?vue&type=script&lang=js
1218
+ /* harmony default export */ var text_customizevue_type_script_lang_js = (customizevue_type_script_lang_js);
1219
+ // CONCATENATED MODULE: ./components/text/customize.vue
1225
1220
 
1226
1221
 
1227
1222
 
@@ -1229,10 +1224,10 @@ var componentNormalizer = __webpack_require__(0);
1229
1224
 
1230
1225
  /* normalize component */
1231
1226
 
1232
- var component = Object(componentNormalizer["a" /* default */])(
1233
- input_textareavue_type_script_lang_js,
1234
- render,
1235
- staticRenderFns,
1227
+ var customize_component = Object(componentNormalizer["a" /* default */])(
1228
+ text_customizevue_type_script_lang_js,
1229
+ customizevue_type_template_id_673da844_render,
1230
+ customizevue_type_template_id_673da844_staticRenderFns,
1236
1231
  false,
1237
1232
  null,
1238
1233
  null,
@@ -1240,14 +1235,19 @@ var component = Object(componentNormalizer["a" /* default */])(
1240
1235
 
1241
1236
  )
1242
1237
 
1243
- /* harmony default export */ var input_textarea = __webpack_exports__["a"] = (component.exports);
1238
+ /* harmony default export */ var customize = (customize_component.exports);
1239
+ // CONCATENATED MODULE: ./components/text/index.js
1244
1240
 
1245
- /***/ }),
1246
1241
 
1247
- /***/ 7:
1248
- /***/ (function(module, exports) {
1249
1242
 
1250
- module.exports = __WEBPACK_EXTERNAL_MODULE__7__;
1243
+
1244
+ /* istanbul ignore next */
1245
+ text_text.install = function (Vue) {
1246
+ Vue.component(text_text.name, text_text);
1247
+ Vue.component(text_link.name, text_link);
1248
+ Vue.component(customize.name, customize);
1249
+ };
1250
+ /* harmony default export */ var components_text = __webpack_exports__["default"] = (text_text);
1251
1251
 
1252
1252
  /***/ })
1253
1253