@autobest-ui/components 2.13.12 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/esm/affix/index.d.ts +0 -10
  2. package/esm/affix/index.js +9 -50
  3. package/esm/carousel/index.d.ts +4 -0
  4. package/esm/carousel/index.js +10 -1
  5. package/esm/checkbox/Checkbox.js +3 -19
  6. package/esm/checkbox/style/index.css +1 -1
  7. package/esm/confirm/style/index.css +1 -1
  8. package/esm/index.d.ts +6 -0
  9. package/esm/index.js +4 -1
  10. package/esm/input/Adorn.d.ts +4 -0
  11. package/esm/input/Adorn.js +7 -3
  12. package/esm/input/Input.d.ts +1 -0
  13. package/esm/input/Input.js +5 -1
  14. package/esm/input/TextArea.d.ts +1 -0
  15. package/esm/input/TextArea.js +4 -1
  16. package/esm/input-number/index.d.ts +1 -0
  17. package/esm/input-number/index.js +5 -1
  18. package/esm/input-phone/index.d.ts +1 -0
  19. package/esm/input-phone/index.js +1 -0
  20. package/esm/lazy-image/index.d.ts +10 -30
  21. package/esm/lazy-image/index.js +30 -51
  22. package/esm/lazy-image/style/index.css +1 -1
  23. package/esm/loading-container/index.d.ts +1 -19
  24. package/esm/loading-container/index.js +16 -122
  25. package/esm/loading-icon/index.d.ts +1 -1
  26. package/esm/loading-icon/index.js +3 -21
  27. package/esm/modal/Affix.d.ts +4 -0
  28. package/esm/modal/Affix.js +7 -0
  29. package/esm/modal/index.d.ts +5 -19
  30. package/esm/modal/index.js +17 -18
  31. package/esm/modal/style/index.css +1 -1
  32. package/esm/move/index.d.ts +10 -0
  33. package/esm/move/index.js +12 -7
  34. package/esm/radio/Radio.js +10 -7
  35. package/esm/radio/RadioGroup.js +3 -6
  36. package/esm/radio/style/index.css +1 -1
  37. package/esm/radio/type.d.ts +0 -2
  38. package/esm/read-more/index.d.ts +92 -0
  39. package/esm/read-more/index.js +377 -0
  40. package/esm/read-more/style/index.css +1 -0
  41. package/esm/read-more-html/index.d.ts +89 -0
  42. package/esm/read-more-html/index.js +362 -0
  43. package/esm/read-more-html/style/index.css +1 -0
  44. package/esm/select/index.d.ts +0 -3
  45. package/esm/select/index.js +4 -25
  46. package/esm/select/style/index.css +1 -1
  47. package/esm/show-more/index.d.ts +27 -12
  48. package/esm/show-more/index.js +87 -41
  49. package/esm/show-more/style/index.css +1 -1
  50. package/esm/style.css +1 -1
  51. package/esm/table/style/index.css +1 -1
  52. package/esm/trigger/index.d.ts +3 -10
  53. package/esm/trigger/index.js +19 -39
  54. package/lib/affix/index.d.ts +0 -10
  55. package/lib/affix/index.js +8 -49
  56. package/lib/carousel/index.d.ts +4 -0
  57. package/lib/carousel/index.js +10 -1
  58. package/lib/checkbox/Checkbox.js +3 -19
  59. package/lib/checkbox/style/index.css +1 -1
  60. package/lib/confirm/style/index.css +1 -1
  61. package/lib/index.d.ts +6 -0
  62. package/lib/index.js +20 -0
  63. package/lib/input/Adorn.d.ts +4 -0
  64. package/lib/input/Adorn.js +7 -3
  65. package/lib/input/Input.d.ts +1 -0
  66. package/lib/input/Input.js +5 -1
  67. package/lib/input/TextArea.d.ts +1 -0
  68. package/lib/input/TextArea.js +4 -1
  69. package/lib/input-number/index.d.ts +1 -0
  70. package/lib/input-number/index.js +5 -1
  71. package/lib/input-phone/index.d.ts +1 -0
  72. package/lib/input-phone/index.js +1 -0
  73. package/lib/lazy-image/index.d.ts +10 -30
  74. package/lib/lazy-image/index.js +30 -51
  75. package/lib/lazy-image/style/index.css +1 -1
  76. package/lib/loading-container/index.d.ts +1 -19
  77. package/lib/loading-container/index.js +16 -125
  78. package/lib/loading-icon/index.d.ts +1 -1
  79. package/lib/loading-icon/index.js +3 -21
  80. package/lib/modal/Affix.d.ts +4 -0
  81. package/lib/modal/Affix.js +14 -0
  82. package/lib/modal/index.d.ts +5 -19
  83. package/lib/modal/index.js +17 -18
  84. package/lib/modal/style/index.css +1 -1
  85. package/lib/move/index.d.ts +10 -0
  86. package/lib/move/index.js +12 -7
  87. package/lib/radio/Radio.js +10 -7
  88. package/lib/radio/RadioGroup.js +3 -6
  89. package/lib/radio/style/index.css +1 -1
  90. package/lib/radio/type.d.ts +0 -2
  91. package/lib/read-more/index.d.ts +92 -0
  92. package/lib/read-more/index.js +388 -0
  93. package/lib/read-more/style/index.css +1 -0
  94. package/lib/read-more-html/index.d.ts +89 -0
  95. package/lib/read-more-html/index.js +373 -0
  96. package/lib/read-more-html/style/index.css +1 -0
  97. package/lib/select/index.d.ts +0 -3
  98. package/lib/select/index.js +4 -25
  99. package/lib/select/style/index.css +1 -1
  100. package/lib/show-more/index.d.ts +27 -12
  101. package/lib/show-more/index.js +86 -40
  102. package/lib/show-more/style/index.css +1 -1
  103. package/lib/style.css +1 -1
  104. package/lib/table/style/index.css +1 -1
  105. package/lib/trigger/index.d.ts +3 -10
  106. package/lib/trigger/index.js +19 -39
  107. package/package.json +3 -3
  108. package/esm/affix/observe.d.ts +0 -8
  109. package/esm/affix/observe.js +0 -6
  110. package/lib/affix/observe.d.ts +0 -8
  111. package/lib/affix/observe.js +0 -12
@@ -0,0 +1,373 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ var _utils = require("@autobest-ui/utils");
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
+ var __extends = void 0 && (void 0).__extends || function () {
15
+ var _extendStatics = function extendStatics(d, b) {
16
+ _extendStatics = Object.setPrototypeOf || {
17
+ __proto__: []
18
+ } instanceof Array && function (d, b) {
19
+ d.__proto__ = b;
20
+ } || function (d, b) {
21
+ for (var p in b) {
22
+ if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
23
+ }
24
+ };
25
+ return _extendStatics(d, b);
26
+ };
27
+ return function (d, b) {
28
+ if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
29
+ _extendStatics(d, b);
30
+ function __() {
31
+ this.constructor = d;
32
+ }
33
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
34
+ };
35
+ }();
36
+ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
37
+ function adopt(value) {
38
+ return value instanceof P ? value : new P(function (resolve) {
39
+ resolve(value);
40
+ });
41
+ }
42
+ return new (P || (P = Promise))(function (resolve, reject) {
43
+ function fulfilled(value) {
44
+ try {
45
+ step(generator.next(value));
46
+ } catch (e) {
47
+ reject(e);
48
+ }
49
+ }
50
+ function rejected(value) {
51
+ try {
52
+ step(generator["throw"](value));
53
+ } catch (e) {
54
+ reject(e);
55
+ }
56
+ }
57
+ function step(result) {
58
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
59
+ }
60
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
61
+ });
62
+ };
63
+ var __generator = void 0 && (void 0).__generator || function (thisArg, body) {
64
+ var _ = {
65
+ label: 0,
66
+ sent: function sent() {
67
+ if (t[0] & 1) throw t[1];
68
+ return t[1];
69
+ },
70
+ trys: [],
71
+ ops: []
72
+ },
73
+ f,
74
+ y,
75
+ t,
76
+ g;
77
+ return g = {
78
+ next: verb(0),
79
+ "throw": verb(1),
80
+ "return": verb(2)
81
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
82
+ return this;
83
+ }), g;
84
+ function verb(n) {
85
+ return function (v) {
86
+ return step([n, v]);
87
+ };
88
+ }
89
+ function step(op) {
90
+ if (f) throw new TypeError("Generator is already executing.");
91
+ while (_) {
92
+ try {
93
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
94
+ if (y = 0, t) op = [op[0] & 2, t.value];
95
+ switch (op[0]) {
96
+ case 0:
97
+ case 1:
98
+ t = op;
99
+ break;
100
+ case 4:
101
+ _.label++;
102
+ return {
103
+ value: op[1],
104
+ done: false
105
+ };
106
+ case 5:
107
+ _.label++;
108
+ y = op[1];
109
+ op = [0];
110
+ continue;
111
+ case 7:
112
+ op = _.ops.pop();
113
+ _.trys.pop();
114
+ continue;
115
+ default:
116
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
117
+ _ = 0;
118
+ continue;
119
+ }
120
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
121
+ _.label = op[1];
122
+ break;
123
+ }
124
+ if (op[0] === 6 && _.label < t[1]) {
125
+ _.label = t[1];
126
+ t = op;
127
+ break;
128
+ }
129
+ if (t && _.label < t[2]) {
130
+ _.label = t[2];
131
+ _.ops.push(op);
132
+ break;
133
+ }
134
+ if (t[2]) _.ops.pop();
135
+ _.trys.pop();
136
+ continue;
137
+ }
138
+ op = body.call(thisArg, _);
139
+ } catch (e) {
140
+ op = [6, e];
141
+ y = 0;
142
+ } finally {
143
+ f = t = 0;
144
+ }
145
+ }
146
+ if (op[0] & 5) throw op[1];
147
+ return {
148
+ value: op[0] ? op[1] : void 0,
149
+ done: true
150
+ };
151
+ }
152
+ };
153
+ var ReadMoreHtml = /** @class */function (_super) {
154
+ __extends(ReadMoreHtml, _super);
155
+ function ReadMoreHtml(props) {
156
+ var _this = _super.call(this, props) || this;
157
+ _this.wrapRef = /*#__PURE__*/_react.default.createRef();
158
+ _this.contentRef = /*#__PURE__*/_react.default.createRef();
159
+ _this.prefixCls = 'ab-rdm-html';
160
+ _this.onResizeObserver = function () {
161
+ var debounceCalculate = (0, _utils.debounce)(function (newWidth) {
162
+ if (newWidth !== _this.cacheWrapWidth) {
163
+ _this.cacheWrapWidth = newWidth;
164
+ _this.delayCalculate();
165
+ }
166
+ });
167
+ _this.resizeObserver = new ResizeObserver(function (entries) {
168
+ debounceCalculate(entries[0].contentRect.width);
169
+ });
170
+ _this.resizeObserver.observe(_this.wrapRef.current);
171
+ };
172
+ _this.onChange = function () {
173
+ return __awaiter(_this, void 0, void 0, function () {
174
+ var isCollapsed, _a, nextState;
175
+ var _this = this;
176
+ return __generator(this, function (_b) {
177
+ switch (_b.label) {
178
+ case 0:
179
+ isCollapsed = !this.state.isCollapsed;
180
+ _a = this.props.onBeforeChange;
181
+ if (!_a) return [3 /*break*/, 2];
182
+ return [4 /*yield*/, this.props.onBeforeChange(isCollapsed)];
183
+ case 1:
184
+ _a = !_b.sent();
185
+ _b.label = 2;
186
+ case 2:
187
+ if (_a) {
188
+ return [2 /*return*/];
189
+ }
190
+
191
+ nextState = {};
192
+ nextState.isCollapsed = isCollapsed;
193
+ if (!nextState.isCollapsed) {
194
+ nextState.contentStyle = {
195
+ height: 'auto',
196
+ maxHeight: 'none'
197
+ };
198
+ nextState.wrapStyle = {
199
+ height: 'auto'
200
+ };
201
+ }
202
+ this.setState(nextState, function () {
203
+ if (isCollapsed) {
204
+ _this.delayCalculate();
205
+ } else {
206
+ _this.props.onAfterChange(isCollapsed);
207
+ }
208
+ });
209
+ return [2 /*return*/];
210
+ }
211
+ });
212
+ });
213
+ };
214
+
215
+ _this.state = {
216
+ isCollapsed: props.lines >= 1 && props.defaultCollapsed,
217
+ isShowBtn: false,
218
+ contentStyle: {
219
+ maxHeight: props.defaultContentMaxHeight
220
+ },
221
+ wrapStyle: {
222
+ height: props.defaultWrapHeight
223
+ }
224
+ };
225
+ return _this;
226
+ }
227
+ ReadMoreHtml.prototype.componentDidMount = function () {
228
+ this.delayCalculate();
229
+ if (this.props.isResizeObserver) {
230
+ this.onResizeObserver();
231
+ }
232
+ };
233
+ ReadMoreHtml.prototype.componentDidUpdate = function (prevProps) {
234
+ if (this.props.children !== prevProps.children || this.props.lines !== prevProps.lines) {
235
+ // 执行render,并且跳过shouldComponentUpdate
236
+ this.delayCalculate();
237
+ }
238
+ };
239
+ ReadMoreHtml.prototype.componentWillUnmount = function () {
240
+ if (this.resizeObserver && this.wrapRef.current) {
241
+ this.resizeObserver.unobserve(this.wrapRef.current);
242
+ }
243
+ };
244
+ /**
245
+ * 计算高度并设置样式
246
+ */
247
+ ReadMoreHtml.prototype.delayCalculate = function () {
248
+ var _this = this;
249
+ var wrapElement = this.wrapRef.current;
250
+ var contentElement = this.contentRef.current;
251
+ if (!this.state.isCollapsed || this.props.lines < 1 || !wrapElement || !contentElement || !document.createTreeWalker) {
252
+ this.setState({
253
+ isCollapsed: false,
254
+ contentStyle: {
255
+ height: 'auto',
256
+ maxHeight: 'none'
257
+ },
258
+ wrapStyle: {
259
+ height: 'auto'
260
+ },
261
+ isShowBtn: false
262
+ });
263
+ return;
264
+ }
265
+ var elementRect = contentElement.getBoundingClientRect();
266
+ var _a = this.props,
267
+ ignoreClassList = _a.ignoreClassList,
268
+ lineThreshold = _a.lineThreshold,
269
+ lines = _a.lines;
270
+ var range = document.createRange();
271
+ // 将数组转换为选择器字符串: ".ignore-text1, .ignore-text2"
272
+ var ignoreSelector = (ignoreClassList || []).map(function (cls) {
273
+ return ".".concat(cls);
274
+ }).join(', ');
275
+ var treeWalker = document.createTreeWalker(contentElement, NodeFilter.SHOW_TEXT, {
276
+ acceptNode: function acceptNode(node) {
277
+ // 如果 ignoreClassList 为空,或者当前节点不属于任何忽略名单,则接受
278
+ if (ignoreSelector && node.parentElement.closest(ignoreSelector)) {
279
+ return NodeFilter.FILTER_REJECT;
280
+ }
281
+ return NodeFilter.FILTER_ACCEPT;
282
+ }
283
+ });
284
+ var lineCount = 0;
285
+ var lastTop = -1;
286
+ var node;
287
+ while (node = treeWalker.nextNode()) {
288
+ var text = node.textContent;
289
+ for (var i = 0; i < text.length; i++) {
290
+ if (text[i].trim() === '') continue;
291
+ range.setStart(node, i);
292
+ range.setEnd(node, i + 1);
293
+ var rect = range.getBoundingClientRect();
294
+ if (rect.height > 0) {
295
+ // 利用绝对坐标判断换行
296
+ if (lastTop === -1 || Math.abs(rect.top - lastTop) > lineThreshold) {
297
+ lineCount++;
298
+ lastTop = rect.top;
299
+ // 找到指定行开头的垂直位置
300
+ if (lineCount > lines) {
301
+ this.setState({
302
+ isShowBtn: true,
303
+ contentStyle: {
304
+ height: "".concat(rect.top - elementRect.top, "px"),
305
+ maxHeight: 'none',
306
+ overflow: 'hidden'
307
+ },
308
+ wrapStyle: {
309
+ height: 'auto'
310
+ }
311
+ }, function () {
312
+ _this.props.onAfterChange(_this.state.isCollapsed);
313
+ });
314
+ return;
315
+ }
316
+ }
317
+ }
318
+ }
319
+ }
320
+ if (lineCount <= lines) {
321
+ this.setState({
322
+ isShowBtn: false,
323
+ contentStyle: {
324
+ height: 'auto'
325
+ },
326
+ wrapStyle: {
327
+ height: 'auto'
328
+ }
329
+ }, function () {
330
+ _this.props.onAfterChange(_this.state.isCollapsed);
331
+ });
332
+ }
333
+ };
334
+ ReadMoreHtml.prototype.render = function () {
335
+ var cls = this.prefixCls;
336
+ var _a = this.props,
337
+ className = _a.className,
338
+ children = _a.children,
339
+ expandText = _a.expandText,
340
+ collapseText = _a.collapseText;
341
+ var _b = this.state,
342
+ isCollapsed = _b.isCollapsed,
343
+ isShowBtn = _b.isShowBtn,
344
+ wrapStyle = _b.wrapStyle,
345
+ contentStyle = _b.contentStyle;
346
+ return /*#__PURE__*/_react.default.createElement("div", {
347
+ ref: this.wrapRef,
348
+ style: wrapStyle,
349
+ className: (0, _classnames.default)(cls, className)
350
+ }, /*#__PURE__*/_react.default.createElement("div", {
351
+ ref: this.contentRef,
352
+ style: contentStyle,
353
+ className: "".concat(cls, "-content")
354
+ }, children), isShowBtn && /*#__PURE__*/_react.default.createElement("span", {
355
+ onClick: this.onChange,
356
+ "data-collapse": collapseText,
357
+ "data-expand": expandText,
358
+ className: (0, _classnames.default)("".concat(cls, "-btn"), isCollapsed ? "".concat(cls, "-collapse") : "".concat(cls, "-expand"))
359
+ }));
360
+ };
361
+ ReadMoreHtml.defaultProps = {
362
+ onAfterChange: function onAfterChange() {},
363
+ isResizeObserver: true,
364
+ defaultCollapsed: true,
365
+ expandText: 'Show More',
366
+ collapseText: 'Show Less',
367
+ lineThreshold: 1,
368
+ lines: 2
369
+ };
370
+ return ReadMoreHtml;
371
+ }(_react.Component);
372
+ var _default = ReadMoreHtml;
373
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ .ab-rdm-html,.ab-rdm-html-content{overflow:hidden}.ab-rdm-html-collapse::after,.ab-rdm-html-expand::after{line-height:.18rem;display:block;padding-top:.02rem;cursor:pointer;text-decoration:underline}.ab-rdm-html-collapse::after{content:attr(data-collapse)}.ab-rdm-html-expand::after{content:attr(data-expand)}
@@ -92,7 +92,6 @@ export interface SelectProps extends Pick<TriggerProps, 'windowResizeHidden' | '
92
92
  }
93
93
  interface SelectStates {
94
94
  visible: boolean;
95
- isEnter: boolean;
96
95
  list: [SelectOptionItem[]];
97
96
  filterItem?: SelectOptionItem;
98
97
  }
@@ -131,8 +130,6 @@ declare class Select extends React.Component<SelectProps, SelectStates> {
131
130
  triggerSelect: (status?: boolean) => void;
132
131
  onTriggerSelect: () => void;
133
132
  onSelecting(ev: React.MouseEvent | React.TouchEvent, item: any): void;
134
- onMouseEnter: () => void;
135
- onMouseLeave: () => void;
136
133
  renderTitle(): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
137
134
  renderBottom(): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
138
135
  /**
@@ -166,25 +166,8 @@ var Select = /** @class */function (_super) {
166
166
  }
167
167
  _this.triggerSelect(!_this.state.visible);
168
168
  };
169
- _this.onMouseEnter = function () {
170
- if (_this.state.isEnter || _this.props.disabled) {
171
- return;
172
- }
173
- _this.setState({
174
- isEnter: true
175
- });
176
- };
177
- _this.onMouseLeave = function () {
178
- if (!_this.state.isEnter || _this.props.disabled) {
179
- return;
180
- }
181
- _this.setState({
182
- isEnter: false
183
- });
184
- };
185
169
  _this.state = {
186
170
  visible: false,
187
- isEnter: false,
188
171
  list: [[]]
189
172
  };
190
173
  return _this;
@@ -309,10 +292,8 @@ var Select = /** @class */function (_super) {
309
292
  return null;
310
293
  };
311
294
  Select.prototype.render = function () {
312
- var _a;
313
- var _b = this.state,
314
- visible = _b.visible,
315
- isEnter = _b.isEnter;
295
+ var _a, _b;
296
+ var visible = this.state.visible;
316
297
  var _c = this.props,
317
298
  className = _c.className,
318
299
  placeholder = _c.placeholder,
@@ -334,12 +315,10 @@ var Select = /** @class */function (_super) {
334
315
  popup: this.getSelectPopup(),
335
316
  onVisibleChange: this.triggerSelect
336
317
  }), /*#__PURE__*/_react.default.createElement("div", {
337
- className: (0, _classnames.default)(["".concat(cls, "-input-group"), className, (_a = {}, _a["".concat(cls, "-active")] = visible, _a["".concat(cls, "-enter")] = isEnter || visible, _a["".concat(cls, "-empty")] = !currentName, _a["".concat(cls, "-disabled")] = disabled, _a)]),
338
- onMouseEnter: this.onMouseEnter,
339
- onMouseLeave: this.onMouseLeave,
318
+ className: (0, _classnames.default)(["".concat(cls, "-input-group"), className, (_a = {}, _a["".concat(cls, "-active")] = visible, _a.disabled = disabled, _a)]),
340
319
  onClick: this.onTriggerSelect
341
320
  }, /*#__PURE__*/_react.default.createElement("div", {
342
- className: "".concat(cls, "-input-control")
321
+ className: (0, _classnames.default)(["".concat(cls, "-input-control"), (_b = {}, _b["".concat(cls, "-focused")] = visible, _b["".concat(cls, "-empty")] = !currentName, _b)])
343
322
  }, currentName || placeholder), hiddenIcon ? null : /*#__PURE__*/_react.default.createElement("span", {
344
323
  className: "".concat(cls, "-icon")
345
324
  }, typeof icon === 'function' ? icon() : icon)));
@@ -1 +1 @@
1
- .ab-trigger-wrap{position:absolute;top:0;left:0;z-index:101}.ab-trigger-wrap.ab-trigger-hidden{display:none}.ab-trigger-mask{position:fixed;top:0;left:0;bottom:0;right:0;z-index:101;background-color:transparent;display:none}.ab-trigger-mask.ab-trigger-mask-show{display:block}.ab-trigger-fade-appear,.ab-trigger-fade-enter,.ab-trigger-fade-hr-appear,.ab-trigger-fade-hr-enter{opacity:0}.ab-trigger-fade-appear,.ab-trigger-fade-enter{transform:scale(.7)}.ab-trigger-fade-hr-appear,.ab-trigger-fade-hr-enter{opacity:0;transform:scaleY(.7)}.ab-trigger-fade-appear-active,.ab-trigger-fade-enter-active,.ab-trigger-fade-hr-appear-active,.ab-trigger-fade-hr-enter-active{opacity:1;transition:opacity .2s,transform .2s}.ab-trigger-fade-appear-active,.ab-trigger-fade-enter-active{transform:scale(1)}.ab-trigger-fade-hr-appear-active,.ab-trigger-fade-hr-enter-active{transform:scaleY(1)}.ab-trigger-fade-exit,.ab-trigger-fade-hr-exit{opacity:1}.ab-trigger-fade-exit-active,.ab-trigger-fade-hr-exit-active{opacity:0;transition:opacity .2s,transform .2s}.ab-trigger-fade-exit-active{transform:scale(.7)}.ab-trigger-fade-hr-exit-active{transform:scaleY(.7)}.ab-trigger-fade-exit-done,.ab-trigger-fade-hr-exit-done{display:none}.ab-select-wrap{min-width:177px;background-color:#fff;background-clip:padding-box;border-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,.15);display:flex}.ab-select-wrap.ab-trigger-fade-hr-exit-done{display:none}.ab-select-inner{flex:1;width:100%;overflow:auto}.ab-select-bottom,.ab-select-content,.ab-select-title{display:flex}.ab-select-title{padding:.09rem 0;background-color:transparent;cursor:context-menu;border-bottom:1px solid #d7d7d7;font-weight:700;color:#606060;font-size:.12rem;margin:0 .1rem}.ab-select-col{font-size:.12rem;padding-right:.07rem;flex:auto}.ab-select-col:last-child{padding-right:0}.ab-select-col>li{padding:.08rem .11rem;cursor:pointer}.ab-select-col>li:hover{background-color:#eee}.ab-select-col>li.ab-select-active{background-color:#e6f7ff}.ab-select-col>li.ab-select-unselect{background-color:transparent;cursor:context-menu}.ab-select-input-group{position:relative;display:flex;align-items:center;border:1px solid #ccc;cursor:pointer;border-radius:.02rem;user-select:none;padding:.08rem .07rem;font-size:.12rem;background-color:#fff;transition:.2s}.ab-select-input-group.ab-select-active,.ab-select-input-group.ab-select-enter{border-color:#348fee}.ab-select-input-group.ab-select-active{box-shadow:0 0 2px rgba(52,143,238,.8)}.ab-select-input-group.ab-select-empty{color:#888}.ab-select-input-group.ab-select-disabled{cursor:not-allowed}.ab-select-input-control{flex:1;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ab-select-icon{position:relative;margin-left:.04rem;width:.14rem;height:.14rem}.ab-select-icon svg{position:absolute;left:50%;top:50%;color:#ccc;font-size:.12rem;transition:transform .2s;transform:translate(-50%,-50%)}.ab-select-active .ab-select-icon svg{transform:translate(-50%,-50%) rotate(180deg)}@media only screen and (max-width:767px){.ab-select-content{display:block}.ab-select-input-group{font-size:.14rem;padding:.1rem .07rem}.ab-select-col{padding-right:0}}
1
+ .ab-trigger-wrap{position:absolute;top:0;left:0;z-index:101}.ab-trigger-wrap.ab-trigger-hidden{display:none}.ab-trigger-mask{position:fixed;top:0;left:0;bottom:0;right:0;z-index:101;background-color:transparent;display:none}.ab-trigger-mask.ab-trigger-mask-show{display:block}.ab-trigger-fade-appear,.ab-trigger-fade-enter,.ab-trigger-fade-hr-appear,.ab-trigger-fade-hr-enter{opacity:0}.ab-trigger-fade-appear,.ab-trigger-fade-enter{transform:scale(.7)}.ab-trigger-fade-hr-appear,.ab-trigger-fade-hr-enter{opacity:0;transform:scaleY(.7)}.ab-trigger-fade-appear-active,.ab-trigger-fade-enter-active,.ab-trigger-fade-hr-appear-active,.ab-trigger-fade-hr-enter-active{opacity:1;transition:opacity .2s,transform .2s}.ab-trigger-fade-appear-active,.ab-trigger-fade-enter-active{transform:scale(1)}.ab-trigger-fade-hr-appear-active,.ab-trigger-fade-hr-enter-active{transform:scaleY(1)}.ab-trigger-fade-exit,.ab-trigger-fade-hr-exit{opacity:1}.ab-trigger-fade-exit-active,.ab-trigger-fade-hr-exit-active{opacity:0;transition:opacity .2s,transform .2s}.ab-trigger-fade-exit-active{transform:scale(.7)}.ab-trigger-fade-hr-exit-active{transform:scaleY(.7)}.ab-trigger-fade-exit-done,.ab-trigger-fade-hr-exit-done{display:none}.ab-select-wrap{min-width:177px;background-color:#fff;background-clip:padding-box;border-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,.15);display:flex}.ab-select-wrap.ab-trigger-fade-hr-exit-done{display:none}.ab-select-inner{flex:1;width:100%;overflow:auto}.ab-select-bottom,.ab-select-content,.ab-select-title{display:flex}.ab-select-title{padding:.09rem 0;background-color:transparent;cursor:context-menu;border-bottom:1px solid #d7d7d7;font-weight:700;color:#606060;font-size:.12rem;margin:0 .1rem}.ab-select-col{font-size:.12rem;padding-right:.07rem;flex:auto}.ab-select-col:last-child{padding-right:0}.ab-select-col>li{padding:.08rem .11rem;cursor:pointer}.ab-select-col>li:hover{background-color:#eee}.ab-select-col>li.ab-select-active{background-color:#e6f7ff}.ab-select-col>li.ab-select-unselect{background-color:transparent;cursor:context-menu}.ab-select-input-group{position:relative;overflow:hidden}.ab-select-input-control{appearance:none;outline:0;user-select:none;width:100%;border:1px solid #ccc;border-radius:2px;resize:none;transition:.2s;background-color:#fff;text-overflow:ellipsis;padding:.08rem .28rem .07rem .07rem;font-size:.14rem;white-space:nowrap;overflow:hidden;max-width:100%;cursor:pointer}.ab-select-input-control.ab-select-focused{box-shadow:0 0 4px rgba(52,143,238,.8);border-color:rgba(52,143,238,.8)}.ab-select-input-control.ab-select-empty{color:#888}.ab-select-input-control.error{background-color:#fffacd}.ab-select-icon{position:absolute;right:.21rem;top:50%;color:#ccc;font-size:0;transform:translate(100%,-50%);transition:transform .2s}.ab-select-icon svg{font-size:.12rem}.ab-select-active .ab-select-icon{transform:translate(100%,-50%) rotate(180deg)}@media only screen and (max-width:767px){.ab-select-content{display:block}.ab-select-input-control{padding:.1rem .05rem;font-size:.14rem}.ab-select-col{padding-right:0}}
@@ -21,9 +21,9 @@ export interface ShowMoreProps {
21
21
  */
22
22
  lines?: number;
23
23
  /**
24
- * 定义内容宽度,单位:px,建议尽量不要使用此属性,当不使用时,根据父元素进行判断
24
+ * 是否执行resizeObserver监听宽度变化
25
25
  */
26
- width?: number;
26
+ isResizeObserver?: boolean;
27
27
  /**
28
28
  * title属性
29
29
  */
@@ -33,9 +33,17 @@ export interface ShowMoreProps {
33
33
  */
34
34
  expandable?: boolean;
35
35
  /**
36
- * 点击展开后的回调函数
36
+ * 展开后点击收起的文字,若为空则代表没有点击收起的功能
37
37
  */
38
- onAfterChange?: () => void;
38
+ collapseText?: string;
39
+ /**
40
+ * 收起按钮样式, 注意不能加padding样式, 可以通过空格来解决左右间距问题
41
+ */
42
+ collapseClassName?: string;
43
+ /**
44
+ * 点击展开/收起后的回调函数
45
+ */
46
+ onAfterChange?: (isExpand: boolean) => void;
39
47
  /**
40
48
  * 渲染后的回调函数
41
49
  */
@@ -51,34 +59,41 @@ declare class ShowMore extends Component<ShowMoreProps, ShowMoreStates> {
51
59
  static defaultProps: {
52
60
  children: string;
53
61
  ellipsisText: string;
62
+ collapseText: any;
54
63
  lines: number;
55
64
  width: number;
56
65
  expandable: boolean;
66
+ onAfterChange: () => any;
57
67
  };
58
68
  prefixCls: string;
59
- targetElement: HTMLSpanElement | null;
60
- textElement: HTMLSpanElement | null;
61
- setTargetElement: (el: HTMLSpanElement) => HTMLSpanElement;
62
- setChildrenElement: (el: HTMLSpanElement) => HTMLSpanElement;
69
+ wrapRef: React.RefObject<HTMLDivElement>;
70
+ contentRef: React.RefObject<HTMLSpanElement>;
71
+ childrenRef: React.RefObject<HTMLSpanElement>;
72
+ resizeObserver: ResizeObserver;
73
+ wrapWidth: number;
74
+ targetWidth: number;
63
75
  canvasContext: CanvasRenderingContext2D;
76
+ childrenText: string;
64
77
  timer: any;
65
- targetWidth: number;
66
78
  constructor(props: ShowMoreProps);
67
79
  componentDidMount(): void;
68
80
  componentDidUpdate(prevProps: ShowMoreProps): void;
69
81
  componentWillUnmount(): void;
82
+ onResizeObserver: () => void;
70
83
  setHiddenTextStatus: () => void;
71
- delayCalculate(): void;
72
- onChange: () => void;
84
+ delayCalculate(isRefresh?: boolean): void;
85
+ onExpand: () => void;
86
+ onCollapse: () => void;
73
87
  innerText: (node: HTMLSpanElement) => string;
74
88
  calcTargetWidth: (callback?: () => void) => void;
75
89
  measureWidth: (text: string) => number;
90
+ onRefreshChildrenText: () => string;
76
91
  getLines: (targetWidth: number) => {
77
92
  lines: any[];
78
93
  hiddenLineStr: string;
79
94
  };
80
95
  renderLine: (line: React.ReactChild, i: number, arr: React.ReactChild[]) => JSX.Element | JSX.Element[];
81
- setRenderText: (callback: () => void, isHidden?: boolean) => void;
96
+ setRenderText: (callback: () => void, isTruncated: boolean) => void;
82
97
  render(): JSX.Element;
83
98
  }
84
99
  export default ShowMore;