zartui 2.0.81 → 2.0.82

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.
package/lib/index.js CHANGED
@@ -298,6 +298,10 @@ var _tag = _interopRequireDefault(require("./tag"));
298
298
 
299
299
  exports.Tag = _tag.default;
300
300
 
301
+ var _textEllipsis = _interopRequireDefault(require("./text-ellipsis"));
302
+
303
+ exports.TextEllipsis = _textEllipsis.default;
304
+
301
305
  var _timeline = _interopRequireDefault(require("./timeline"));
302
306
 
303
307
  exports.Timeline = _timeline.default;
@@ -309,11 +313,11 @@ exports.Toast = _toast.default;
309
313
  var _uploader = _interopRequireDefault(require("./uploader"));
310
314
 
311
315
  exports.Uploader = _uploader.default;
312
- var version = '2.0.81';
316
+ var version = '2.0.82';
313
317
  exports.version = version;
314
318
 
315
319
  function install(Vue) {
316
- var components = [_actionSheet.default, _area.default, _avatar.default, _backTop.default, _badge.default, _button.default, _calendar.default, _cascader.default, _cell.default, _cellGroup.default, _checkbox.default, _checkboxGroup.default, _col.default, _collapse.default, _collapseItem.default, _countDown.default, _datetimePicker.default, _dialog.default, _divider.default, _dropdownItem.default, _dropdownMenu.default, _empty.default, _field.default, _foldDialog.default, _form.default, _grid.default, _gridItem.default, _hierarchySelect.default, _icon.default, _image.default, _imagePreview.default, _indexAnchor.default, _indexBar.default, _info.default, _lazyload.default, _list.default, _loading.default, _locale.default, _mediaPicker.default, _mediaPlayer.default, _multiplePicker.default, _navBar.default, _noticeBar.default, _numberKeyboard.default, _overlay.default, _passwordInput.default, _picker.default, _popover.default, _popup.default, _pullRefresh.default, _radio.default, _radioGroup.default, _rate.default, _row.default, _search.default, _signature.default, _skeleton.default, _slider.default, _step.default, _stepper.default, _steps.default, _sticky.default, _swipe.default, _swipeCell.default, _swipeItem.default, _switch.default, _switchCell.default, _tab.default, _tabbar.default, _tabbarItem.default, _table.default, _tabs.default, _tag.default, _timeline.default, _toast.default, _uploader.default];
320
+ var components = [_actionSheet.default, _area.default, _avatar.default, _backTop.default, _badge.default, _button.default, _calendar.default, _cascader.default, _cell.default, _cellGroup.default, _checkbox.default, _checkboxGroup.default, _col.default, _collapse.default, _collapseItem.default, _countDown.default, _datetimePicker.default, _dialog.default, _divider.default, _dropdownItem.default, _dropdownMenu.default, _empty.default, _field.default, _foldDialog.default, _form.default, _grid.default, _gridItem.default, _hierarchySelect.default, _icon.default, _image.default, _imagePreview.default, _indexAnchor.default, _indexBar.default, _info.default, _lazyload.default, _list.default, _loading.default, _locale.default, _mediaPicker.default, _mediaPlayer.default, _multiplePicker.default, _navBar.default, _noticeBar.default, _numberKeyboard.default, _overlay.default, _passwordInput.default, _picker.default, _popover.default, _popup.default, _pullRefresh.default, _radio.default, _radioGroup.default, _rate.default, _row.default, _search.default, _signature.default, _skeleton.default, _slider.default, _step.default, _stepper.default, _steps.default, _sticky.default, _swipe.default, _swipeCell.default, _swipeItem.default, _switch.default, _switchCell.default, _tab.default, _tabbar.default, _tabbarItem.default, _table.default, _tabs.default, _tag.default, _textEllipsis.default, _timeline.default, _toast.default, _uploader.default];
317
321
  components.forEach(function (item) {
318
322
  if (item.install) {
319
323
  Vue.use(item);
package/lib/index.less CHANGED
@@ -3,7 +3,6 @@
3
3
  @import "./info/index.less";
4
4
  @import "./icon/index.less";
5
5
  @import "./tag/index.less";
6
- @import "./table/index.less";
7
6
  @import "./tabbar-item/index.less";
8
7
  @import "./step/index.less";
9
8
  @import "./rate/index.less";
@@ -28,6 +27,8 @@
28
27
  @import "./signature/index.less";
29
28
  @import "./multiple-picker/index.less";
30
29
  @import "./dialog/index.less";
30
+ @import "./text-ellipsis/index.less";
31
+ @import "./table/index.less";
31
32
  @import "./calendar/index.less";
32
33
  @import "./picker/index.less";
33
34
  @import "./action-sheet/index.less";
@@ -11,6 +11,8 @@ var _utils = require("../utils");
11
11
 
12
12
  var _index = _interopRequireDefault(require("../icon/index"));
13
13
 
14
+ var _index2 = _interopRequireDefault(require("../text-ellipsis/index"));
15
+
14
16
  var _type = require("./type");
15
17
 
16
18
  var _createNamespace = (0, _utils.createNamespace)('table'),
@@ -134,7 +136,12 @@ var _default = createComponent({
134
136
  return _this2.onHeaderClick(colData);
135
137
  }
136
138
  }
137
- }, [h("span", [colData.label]), colData.sorter ? h("span", {
139
+ }, [colData.ellipsis ? h(_index2.default, {
140
+ "attrs": {
141
+ "content": colData.label,
142
+ "expandType": "dialog"
143
+ }
144
+ }) : colData.label, colData.sorter ? h("span", {
138
145
  "class": bem('head-sort')
139
146
  }, [h(_index.default, {
140
147
  "class": [colData.key === this.sortKey && this.sortOrder === _type.SortOrderEnum.ASCEND ? bem('sort-active') : ''],
@@ -188,7 +195,12 @@ var _default = createComponent({
188
195
  "rowspan": ((_additionalCellProps5 = additionalCellProps) == null ? void 0 : _additionalCellProps5.rowSpan) !== 1 ? (_additionalCellProps6 = additionalCellProps) == null ? void 0 : _additionalCellProps6.rowSpan : null
189
196
  },
190
197
  "style": style
191
- }, [rowData[colData.key]]);
198
+ }, [colData.ellipsis ? h(_index2.default, {
199
+ "attrs": {
200
+ "content": rowData[colData.key],
201
+ "expandType": "dialog"
202
+ }
203
+ }) : rowData[colData.key]]);
192
204
  })]);
193
205
  }
194
206
  },
@@ -1,4 +1,10 @@
1
1
  require('../../style/base.css');
2
+ require('../../overlay/index.css');
2
3
  require('../../info/index.css');
3
4
  require('../../icon/index.css');
5
+ require('../../popup/index.css');
6
+ require('../../loading/index.css');
7
+ require('../../button/index.css');
8
+ require('../../dialog/index.css');
9
+ require('../../text-ellipsis/index.css');
4
10
  require('../index.css');
@@ -1,4 +1,10 @@
1
1
  require('../../style/base.less');
2
+ require('../../overlay/index.less');
2
3
  require('../../info/index.less');
3
4
  require('../../icon/index.less');
5
+ require('../../popup/index.less');
6
+ require('../../loading/index.less');
7
+ require('../../button/index.less');
8
+ require('../../dialog/index.less');
9
+ require('../../text-ellipsis/index.less');
4
10
  require('../index.less');
@@ -0,0 +1 @@
1
+ .zt2-text-ellipsis{width:100%;line-height:calc(200% - 8px);white-space:pre-wrap;word-break:break-all}.zt2-text-ellipsis__action{cursor:pointer;color:#0091fa}
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+
8
+ var _utils = require("../utils");
9
+
10
+ var _index = _interopRequireDefault(require("../dialog/index"));
11
+
12
+ var _createNamespace = (0, _utils.createNamespace)('text-ellipsis'),
13
+ createComponent = _createNamespace[0],
14
+ bem = _createNamespace[1];
15
+
16
+ var _default = createComponent({
17
+ props: {
18
+ rows: {
19
+ type: Number,
20
+ default: 1
21
+ },
22
+ dots: {
23
+ type: String,
24
+ default: '...'
25
+ },
26
+ content: {
27
+ type: String,
28
+ default: ''
29
+ },
30
+ expandText: {
31
+ type: String,
32
+ default: '展开'
33
+ },
34
+ expandType: {
35
+ type: String,
36
+ default: 'flat'
37
+ },
38
+ collapseText: {
39
+ type: String,
40
+ default: '收起'
41
+ },
42
+ position: {
43
+ type: String,
44
+ default: 'end'
45
+ }
46
+ },
47
+ data: function data() {
48
+ return {
49
+ expanded: false,
50
+ ellipsis: false,
51
+ text: ''
52
+ };
53
+ },
54
+ computed: {
55
+ actionText: function actionText() {
56
+ return this.expanded ? this.collapseText : this.expandText;
57
+ },
58
+ propsData: function propsData() {
59
+ return {
60
+ content: this.content,
61
+ rows: this.rows,
62
+ position: this.position
63
+ };
64
+ }
65
+ },
66
+ watch: {
67
+ propsData: function propsData() {
68
+ this.calcEllipsised();
69
+ }
70
+ },
71
+ methods: {
72
+ pxToNum: function pxToNum(value) {
73
+ if (!value) return 0;
74
+ var match = value.match(/^\d*(\.\d*)?/);
75
+ return match ? Number(match[0]) : 0;
76
+ },
77
+ calcEllipsised: function calcEllipsised() {
78
+ var _this = this;
79
+
80
+ var root = this.$refs.root;
81
+
82
+ var cloneContainer = function cloneContainer() {
83
+ if (!root) return;
84
+ var originStyle = window.getComputedStyle(root);
85
+ var container = document.createElement('div');
86
+ var styleNames = Array.prototype.slice.apply(originStyle);
87
+ styleNames.forEach(function (name) {
88
+ container.style.setProperty(name, originStyle.getPropertyValue(name));
89
+ });
90
+ container.style.position = 'fixed';
91
+ container.style.zIndex = '-9999';
92
+ container.style.top = '-9999px';
93
+ container.style.height = 'auto';
94
+ container.style.minHeight = 'auto';
95
+ container.style.maxHeight = 'auto';
96
+ container.innerText = _this.content;
97
+ document.body.appendChild(container);
98
+ return container;
99
+ };
100
+
101
+ var calcEllipsisText = function calcEllipsisText(container, maxHeight) {
102
+ var content = _this.content,
103
+ position = _this.position,
104
+ dots = _this.dots;
105
+ var end = content.length;
106
+
107
+ var calcEllipse = function calcEllipse() {
108
+ // calculate the former or later content
109
+ var tail = function tail(left, right) {
110
+ if (right - left <= 1) {
111
+ if (position === 'end') {
112
+ return content.slice(0, left) + dots;
113
+ }
114
+
115
+ return dots + content.slice(right, end);
116
+ }
117
+
118
+ var middle = Math.round((left + right) / 2); // Set the interception location
119
+
120
+ if (position === 'end') {
121
+ container.innerText = content.slice(0, middle) + dots + _this.actionText;
122
+ } else {
123
+ container.innerText = dots + content.slice(middle, end) + _this.actionText;
124
+ } // The height after interception still does not match the required height
125
+
126
+
127
+ if (container.offsetHeight > maxHeight) {
128
+ if (position === 'end') {
129
+ return tail(left, middle);
130
+ }
131
+
132
+ return tail(middle, right);
133
+ }
134
+
135
+ if (position === 'end') {
136
+ return tail(middle, right);
137
+ }
138
+
139
+ return tail(left, middle);
140
+ };
141
+
142
+ container.innerText = tail(0, end);
143
+ };
144
+
145
+ var middleTail = function middleTail(leftPart, rightPart) {
146
+ if (leftPart[1] - leftPart[0] <= 1 && rightPart[1] - rightPart[0] <= 1) {
147
+ return content.slice(0, leftPart[0]) + dots + content.slice(rightPart[1], end);
148
+ }
149
+
150
+ var leftMiddle = Math.floor((leftPart[0] + leftPart[1]) / 2);
151
+ var rightMiddle = Math.ceil((rightPart[0] + rightPart[1]) / 2);
152
+ container.innerText = _this.content.slice(0, leftMiddle) + _this.dots + _this.content.slice(rightMiddle, end) + _this.expandText;
153
+
154
+ if (container.offsetHeight >= maxHeight) {
155
+ return middleTail([leftPart[0], leftMiddle], [rightMiddle, rightPart[1]]);
156
+ }
157
+
158
+ return middleTail([leftMiddle, leftPart[1]], [rightPart[0], rightMiddle]);
159
+ };
160
+
161
+ var middle = 0 + end >> 1;
162
+ _this.position === 'middle' ? container.innerText = middleTail([0, middle], [middle, end]) : calcEllipse();
163
+ return container.innerText;
164
+ }; // Calculate the interceptional text
165
+
166
+
167
+ var container = cloneContainer();
168
+ if (!container) return;
169
+ var _container$style = container.style,
170
+ paddingBottom = _container$style.paddingBottom,
171
+ paddingTop = _container$style.paddingTop,
172
+ lineHeight = _container$style.lineHeight;
173
+ var maxHeight = Math.ceil((Number(this.rows) + 0.5) * this.pxToNum(lineHeight) + this.pxToNum(paddingTop) + this.pxToNum(paddingBottom));
174
+
175
+ if (maxHeight < container.offsetHeight) {
176
+ this.ellipsis = true;
177
+ this.text = calcEllipsisText(container, maxHeight);
178
+ } else {
179
+ this.text = this.content;
180
+ this.ellipsis = false;
181
+ }
182
+
183
+ document.body.removeChild(container);
184
+ },
185
+ onClickAction: function onClickAction(event) {
186
+ event.stopPropagation();
187
+ event.preventDefault();
188
+ this.expanded = !this.expanded; // emit('clickAction', event);
189
+ },
190
+ renderAction: function renderAction() {
191
+ var h = this.$createElement;
192
+ return h("span", {
193
+ "class": bem('action'),
194
+ "on": {
195
+ "click": this.onClickAction
196
+ }
197
+ }, [this.actionText]);
198
+ },
199
+ onClick: function onClick() {
200
+ if (this.ellipsis && this.expandType === 'dialog') {
201
+ _index.default.alert({
202
+ message: this.content
203
+ }).then(function () {});
204
+ }
205
+ }
206
+ },
207
+ mounted: function mounted() {
208
+ this.calcEllipsised();
209
+ window.addEventListener("resize", this.calcEllipsised);
210
+ },
211
+ render: function render() {
212
+ var h = arguments[0];
213
+ return h("div", {
214
+ "ref": "root",
215
+ "class": bem(),
216
+ "on": {
217
+ "click": this.onClick
218
+ }
219
+ }, [this.expanded ? this.content : this.text, this.expandType !== 'dialog' && this.ellipsis ? this.renderAction() : null]);
220
+ }
221
+ });
222
+
223
+ exports.default = _default;
@@ -0,0 +1,13 @@
1
+ @import '../style/var';
2
+
3
+ .@{base-prefix}-text-ellipsis {
4
+ width: 100%;
5
+ line-height: calc(200% - 8px);
6
+ white-space: pre-wrap;
7
+ word-break: break-all;
8
+
9
+ &__action {
10
+ cursor: pointer;
11
+ color: #0091FA;
12
+ }
13
+ }
@@ -0,0 +1,9 @@
1
+ require('../../style/base.css');
2
+ require('../../overlay/index.css');
3
+ require('../../info/index.css');
4
+ require('../../icon/index.css');
5
+ require('../../popup/index.css');
6
+ require('../../loading/index.css');
7
+ require('../../button/index.css');
8
+ require('../../dialog/index.css');
9
+ require('../index.css');
@@ -0,0 +1,9 @@
1
+ require('../../style/base.less');
2
+ require('../../overlay/index.less');
3
+ require('../../info/index.less');
4
+ require('../../icon/index.less');
5
+ require('../../popup/index.less');
6
+ require('../../loading/index.less');
7
+ require('../../button/index.less');
8
+ require('../../dialog/index.less');
9
+ require('../index.less');
@@ -9,8 +9,7 @@ exports.routeProps = void 0;
9
9
  * Vue Router support
10
10
  */
11
11
  function isRedundantNavigation(err) {
12
- return err.name === 'NavigationDuplicated' || // compatible with vue-router@3.3
13
- err.message && err.message.indexOf('redundant navigation') !== -1;
12
+ return err.name === 'NavigationDuplicated' || err.message && err.message.indexOf('redundant navigation') !== -1;
14
13
  }
15
14
 
16
15
  function route(router, config) {