@douyinfe/semi-ui 2.16.1 → 2.17.0-beta.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.
- package/collapse/__test__/collapse.test.js +22 -2
- package/collapse/_story/accordion.stories.js +2 -2
- package/collapse/item.tsx +20 -6
- package/datePicker/__test__/datePicker.test.js +5 -5
- package/datePicker/_story/datePicker.stories.js +138 -22
- package/datePicker/datePicker.tsx +42 -7
- package/datePicker/monthsGrid.tsx +22 -10
- package/datePicker/quickControl.tsx +62 -16
- package/datePicker/yearAndMonth.tsx +31 -5
- package/dist/css/semi.css +289 -32
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +45706 -45192
- package/dist/umd/semi-ui.js.map +1 -1
- package/dist/umd/semi-ui.min.js +1 -1
- package/dist/umd/semi-ui.min.js.map +1 -1
- package/lib/cjs/collapse/item.d.ts +8 -0
- package/lib/cjs/collapse/item.js +19 -8
- package/lib/cjs/datePicker/datePicker.d.ts +3 -0
- package/lib/cjs/datePicker/datePicker.js +56 -9
- package/lib/cjs/datePicker/monthsGrid.d.ts +3 -0
- package/lib/cjs/datePicker/monthsGrid.js +14 -3
- package/lib/cjs/datePicker/quickControl.d.ts +6 -0
- package/lib/cjs/datePicker/quickControl.js +61 -14
- package/lib/cjs/datePicker/yearAndMonth.d.ts +3 -0
- package/lib/cjs/datePicker/yearAndMonth.js +15 -3
- package/lib/cjs/popover/index.d.ts +3 -0
- package/lib/cjs/popover/index.js +4 -2
- package/lib/cjs/select/index.d.ts +6 -1
- package/lib/cjs/select/index.js +130 -72
- package/lib/cjs/select/option.js +4 -2
- package/lib/cjs/tag/index.js +6 -4
- package/lib/cjs/tag/interface.d.ts +1 -0
- package/lib/cjs/tagInput/index.d.ts +13 -1
- package/lib/cjs/tagInput/index.js +217 -91
- package/lib/cjs/tooltip/index.d.ts +4 -0
- package/lib/cjs/tooltip/index.js +5 -3
- package/lib/es/collapse/item.d.ts +8 -0
- package/lib/es/collapse/item.js +19 -8
- package/lib/es/datePicker/datePicker.d.ts +3 -0
- package/lib/es/datePicker/datePicker.js +56 -9
- package/lib/es/datePicker/monthsGrid.d.ts +3 -0
- package/lib/es/datePicker/monthsGrid.js +14 -3
- package/lib/es/datePicker/quickControl.d.ts +6 -0
- package/lib/es/datePicker/quickControl.js +61 -15
- package/lib/es/datePicker/yearAndMonth.d.ts +3 -0
- package/lib/es/datePicker/yearAndMonth.js +14 -3
- package/lib/es/popover/index.d.ts +3 -0
- package/lib/es/popover/index.js +4 -2
- package/lib/es/select/index.d.ts +6 -1
- package/lib/es/select/index.js +129 -71
- package/lib/es/select/option.js +4 -2
- package/lib/es/tag/index.js +6 -4
- package/lib/es/tag/interface.d.ts +1 -0
- package/lib/es/tagInput/index.d.ts +13 -1
- package/lib/es/tagInput/index.js +217 -93
- package/lib/es/tooltip/index.d.ts +4 -0
- package/lib/es/tooltip/index.js +5 -3
- package/package.json +7 -7
- package/popover/index.tsx +4 -1
- package/select/__test__/select.test.js +5 -3
- package/select/index.tsx +65 -30
- package/select/option.tsx +2 -0
- package/tag/index.tsx +3 -2
- package/tag/interface.ts +1 -0
- package/tagInput/_story/tagInput.stories.js +18 -0
- package/tagInput/index.tsx +126 -26
- package/tooltip/index.tsx +5 -2
|
@@ -10,11 +10,13 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
10
10
|
|
|
11
11
|
exports.default = void 0;
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
14
14
|
|
|
15
15
|
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
16
16
|
|
|
17
|
-
var
|
|
17
|
+
var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
|
|
18
|
+
|
|
19
|
+
var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
|
18
20
|
|
|
19
21
|
var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
|
|
20
22
|
|
|
@@ -54,6 +56,27 @@ var _paragraph = _interopRequireDefault(require("../typography/paragraph"));
|
|
|
54
56
|
|
|
55
57
|
var _semiIcons = require("@douyinfe/semi-icons");
|
|
56
58
|
|
|
59
|
+
var _reactSortableHoc = require("react-sortable-hoc");
|
|
60
|
+
|
|
61
|
+
const SortableItem = (0, _reactSortableHoc.SortableElement)(props => props.item);
|
|
62
|
+
const SortableList = (0, _reactSortableHoc.SortableContainer)(_ref => {
|
|
63
|
+
let {
|
|
64
|
+
items
|
|
65
|
+
} = _ref;
|
|
66
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
67
|
+
style: {
|
|
68
|
+
display: 'flex',
|
|
69
|
+
flexFlow: 'row wrap'
|
|
70
|
+
}
|
|
71
|
+
}, (0, _map.default)(items).call(items, (item, index) =>
|
|
72
|
+
/*#__PURE__*/
|
|
73
|
+
// @ts-ignore skip SortableItem type check
|
|
74
|
+
_react.default.createElement(SortableItem, {
|
|
75
|
+
key: item.key,
|
|
76
|
+
index: index,
|
|
77
|
+
item: item.item
|
|
78
|
+
})));
|
|
79
|
+
});
|
|
57
80
|
const prefixCls = _constants.cssClasses.PREFIX;
|
|
58
81
|
|
|
59
82
|
class TagInput extends _baseComponent.default {
|
|
@@ -94,6 +117,10 @@ class TagInput extends _baseComponent.default {
|
|
|
94
117
|
this.foundation.handleInputMouseLeave();
|
|
95
118
|
};
|
|
96
119
|
|
|
120
|
+
this.handleClick = e => {
|
|
121
|
+
this.foundation.handleClick(e);
|
|
122
|
+
};
|
|
123
|
+
|
|
97
124
|
this.handleInputMouseEnter = e => {
|
|
98
125
|
this.foundation.handleInputMouseEnter();
|
|
99
126
|
};
|
|
@@ -106,14 +133,86 @@ class TagInput extends _baseComponent.default {
|
|
|
106
133
|
this.foundation.handlePreventMouseDown(e);
|
|
107
134
|
};
|
|
108
135
|
|
|
136
|
+
this.getAllTags = () => {
|
|
137
|
+
var _context;
|
|
138
|
+
|
|
139
|
+
const {
|
|
140
|
+
size,
|
|
141
|
+
disabled,
|
|
142
|
+
renderTagItem,
|
|
143
|
+
showContentTooltip,
|
|
144
|
+
draggable
|
|
145
|
+
} = this.props;
|
|
146
|
+
const {
|
|
147
|
+
tagsArray,
|
|
148
|
+
active
|
|
149
|
+
} = this.state;
|
|
150
|
+
const showIconHandler = active && draggable;
|
|
151
|
+
const tagCls = (0, _classnames.default)("".concat(prefixCls, "-wrapper-tag"), {
|
|
152
|
+
[(0, _concat.default)(_context = "".concat(prefixCls, "-wrapper-tag-size-")).call(_context, size)]: size,
|
|
153
|
+
["".concat(prefixCls, "-wrapper-tag-icon")]: showIconHandler
|
|
154
|
+
});
|
|
155
|
+
const typoCls = (0, _classnames.default)("".concat(prefixCls, "-wrapper-typo"), {
|
|
156
|
+
["".concat(prefixCls, "-wrapper-typo-disabled")]: disabled
|
|
157
|
+
});
|
|
158
|
+
const itemWrapperCls = (0, _classnames.default)({
|
|
159
|
+
["".concat(prefixCls, "-drag-item")]: showIconHandler,
|
|
160
|
+
["".concat(prefixCls, "-wrapper-tag-icon")]: showIconHandler
|
|
161
|
+
});
|
|
162
|
+
const DragHandle = (0, _reactSortableHoc.SortableHandle)(() => /*#__PURE__*/_react.default.createElement(_semiIcons.IconHandle, {
|
|
163
|
+
className: "".concat(prefixCls, "-drag-handler")
|
|
164
|
+
}));
|
|
165
|
+
return (0, _map.default)(tagsArray).call(tagsArray, (value, index) => {
|
|
166
|
+
var _context2;
|
|
167
|
+
|
|
168
|
+
const elementKey = showIconHandler ? value : (0, _concat.default)(_context2 = "".concat(index)).call(_context2, value);
|
|
169
|
+
|
|
170
|
+
if ((0, _isFunction2.default)(renderTagItem)) {
|
|
171
|
+
return showIconHandler ? /*#__PURE__*/_react.default.createElement("div", {
|
|
172
|
+
className: itemWrapperCls,
|
|
173
|
+
key: elementKey
|
|
174
|
+
}, /*#__PURE__*/_react.default.createElement(DragHandle, null), renderTagItem(value, index)) : renderTagItem(value, index);
|
|
175
|
+
} else {
|
|
176
|
+
var _context3;
|
|
177
|
+
|
|
178
|
+
return /*#__PURE__*/_react.default.createElement(_tag.default, {
|
|
179
|
+
className: tagCls,
|
|
180
|
+
color: "white",
|
|
181
|
+
size: size === 'small' ? 'small' : 'large',
|
|
182
|
+
type: "light",
|
|
183
|
+
onClose: () => {
|
|
184
|
+
!disabled && this.handleTagClose(index);
|
|
185
|
+
},
|
|
186
|
+
closable: !disabled,
|
|
187
|
+
key: elementKey,
|
|
188
|
+
visible: true,
|
|
189
|
+
"aria-label": (0, _concat.default)(_context3 = "".concat(!disabled ? 'Closable ' : '', "Tag: ")).call(_context3, value)
|
|
190
|
+
}, showIconHandler && /*#__PURE__*/_react.default.createElement(DragHandle, null), /*#__PURE__*/_react.default.createElement(_paragraph.default, {
|
|
191
|
+
className: typoCls,
|
|
192
|
+
ellipsis: {
|
|
193
|
+
showTooltip: showContentTooltip,
|
|
194
|
+
rows: 1
|
|
195
|
+
}
|
|
196
|
+
}, value));
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
this.onSortEnd = callbackProps => {
|
|
202
|
+
this.foundation.handleSortEnd(callbackProps);
|
|
203
|
+
};
|
|
204
|
+
|
|
109
205
|
this.foundation = new _foundation.default(this.adapter);
|
|
110
206
|
this.state = {
|
|
111
207
|
tagsArray: props.defaultValue || [],
|
|
112
208
|
inputValue: '',
|
|
113
209
|
focusing: false,
|
|
114
|
-
hovering: false
|
|
210
|
+
hovering: false,
|
|
211
|
+
active: false
|
|
115
212
|
};
|
|
116
213
|
this.inputRef = /*#__PURE__*/_react.default.createRef();
|
|
214
|
+
this.tagInputRef = /*#__PURE__*/_react.default.createRef();
|
|
215
|
+
this.clickOutsideHandler = null;
|
|
117
216
|
}
|
|
118
217
|
|
|
119
218
|
static getDerivedStateFromProps(nextProps, prevState) {
|
|
@@ -180,6 +279,14 @@ class TagInput extends _baseComponent.default {
|
|
|
180
279
|
hovering
|
|
181
280
|
});
|
|
182
281
|
},
|
|
282
|
+
setActive: active => {
|
|
283
|
+
this.setState({
|
|
284
|
+
active
|
|
285
|
+
});
|
|
286
|
+
},
|
|
287
|
+
getClickOutsideHandler: () => {
|
|
288
|
+
return this.clickOutsideHandler;
|
|
289
|
+
},
|
|
183
290
|
notifyBlur: e => {
|
|
184
291
|
this.props.onBlur(e);
|
|
185
292
|
},
|
|
@@ -200,6 +307,23 @@ class TagInput extends _baseComponent.default {
|
|
|
200
307
|
},
|
|
201
308
|
notifyKeyDown: e => {
|
|
202
309
|
this.props.onKeyDown(e);
|
|
310
|
+
},
|
|
311
|
+
registerClickOutsideHandler: cb => {
|
|
312
|
+
const clickOutsideHandler = e => {
|
|
313
|
+
const tagInputDom = this.tagInputRef && this.tagInputRef.current;
|
|
314
|
+
const target = e.target;
|
|
315
|
+
|
|
316
|
+
if (tagInputDom && !tagInputDom.contains(target)) {
|
|
317
|
+
cb(e);
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
this.clickOutsideHandler = clickOutsideHandler;
|
|
322
|
+
document.addEventListener('click', clickOutsideHandler, false);
|
|
323
|
+
},
|
|
324
|
+
unregisterClickOutsideHandler: () => {
|
|
325
|
+
document.removeEventListener('click', this.clickOutsideHandler, false);
|
|
326
|
+
this.clickOutsideHandler = null;
|
|
203
327
|
}
|
|
204
328
|
});
|
|
205
329
|
}
|
|
@@ -215,7 +339,10 @@ class TagInput extends _baseComponent.default {
|
|
|
215
339
|
this.inputRef.current.focus({
|
|
216
340
|
preventScroll
|
|
217
341
|
});
|
|
342
|
+
this.foundation.handleClick();
|
|
218
343
|
}
|
|
344
|
+
|
|
345
|
+
this.foundation.init();
|
|
219
346
|
}
|
|
220
347
|
|
|
221
348
|
renderClearBtn() {
|
|
@@ -304,71 +431,49 @@ class TagInput extends _baseComponent.default {
|
|
|
304
431
|
}
|
|
305
432
|
|
|
306
433
|
renderTags() {
|
|
307
|
-
var _context;
|
|
308
|
-
|
|
309
434
|
const {
|
|
310
|
-
size,
|
|
311
435
|
disabled,
|
|
312
|
-
renderTagItem,
|
|
313
436
|
maxTagCount,
|
|
314
|
-
showContentTooltip,
|
|
315
437
|
showRestTagsPopover,
|
|
316
|
-
restTagsPopoverProps = {}
|
|
438
|
+
restTagsPopoverProps = {},
|
|
439
|
+
draggable,
|
|
440
|
+
expandRestTagsOnClick
|
|
317
441
|
} = this.props;
|
|
318
442
|
const {
|
|
319
|
-
tagsArray
|
|
443
|
+
tagsArray,
|
|
444
|
+
active
|
|
320
445
|
} = this.state;
|
|
321
|
-
const tagCls = (0, _classnames.default)("".concat(prefixCls, "-wrapper-tag"), {
|
|
322
|
-
[(0, _concat.default)(_context = "".concat(prefixCls, "-wrapper-tag-size-")).call(_context, size)]: size
|
|
323
|
-
});
|
|
324
|
-
const typoCls = (0, _classnames.default)("".concat(prefixCls, "-wrapper-typo"), {
|
|
325
|
-
["".concat(prefixCls, "-wrapper-typo-disabled")]: disabled
|
|
326
|
-
});
|
|
327
446
|
const restTagsCls = (0, _classnames.default)("".concat(prefixCls, "-wrapper-n"), {
|
|
328
447
|
["".concat(prefixCls, "-wrapper-n-disabled")]: disabled
|
|
329
448
|
});
|
|
330
|
-
const
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
let item = null;
|
|
334
|
-
|
|
335
|
-
if ((0, _isFunction2.default)(renderTagItem)) {
|
|
336
|
-
item = renderTagItem(value, index);
|
|
337
|
-
} else {
|
|
338
|
-
var _context2, _context3;
|
|
339
|
-
|
|
340
|
-
item = /*#__PURE__*/_react.default.createElement(_tag.default, {
|
|
341
|
-
className: tagCls,
|
|
342
|
-
color: "white",
|
|
343
|
-
size: size === 'small' ? 'small' : 'large',
|
|
344
|
-
type: "light",
|
|
345
|
-
onClose: () => {
|
|
346
|
-
!disabled && this.handleTagClose(index);
|
|
347
|
-
},
|
|
348
|
-
closable: !disabled,
|
|
349
|
-
key: (0, _concat.default)(_context2 = "".concat(index)).call(_context2, value),
|
|
350
|
-
visible: true,
|
|
351
|
-
"aria-label": (0, _concat.default)(_context3 = "".concat(!disabled ? 'Closable ' : '', "Tag: ")).call(_context3, value)
|
|
352
|
-
}, /*#__PURE__*/_react.default.createElement(_paragraph.default, {
|
|
353
|
-
className: typoCls,
|
|
354
|
-
ellipsis: {
|
|
355
|
-
showTooltip: showContentTooltip,
|
|
356
|
-
rows: 1
|
|
357
|
-
}
|
|
358
|
-
}, value));
|
|
359
|
-
}
|
|
449
|
+
const allTags = this.getAllTags();
|
|
450
|
+
let restTags = [];
|
|
451
|
+
let tags = [...allTags];
|
|
360
452
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
}
|
|
366
|
-
});
|
|
453
|
+
if ((!active || !expandRestTagsOnClick) && maxTagCount && maxTagCount < allTags.length) {
|
|
454
|
+
tags = (0, _slice.default)(allTags).call(allTags, 0, maxTagCount);
|
|
455
|
+
restTags = (0, _slice.default)(allTags).call(allTags, maxTagCount);
|
|
456
|
+
}
|
|
367
457
|
|
|
368
458
|
const restTagsContent = /*#__PURE__*/_react.default.createElement("span", {
|
|
369
459
|
className: restTagsCls
|
|
370
460
|
}, "+", tagsArray.length - maxTagCount);
|
|
371
461
|
|
|
462
|
+
const sortableListItems = (0, _map.default)(allTags).call(allTags, (item, index) => ({
|
|
463
|
+
item: item,
|
|
464
|
+
key: tagsArray[index]
|
|
465
|
+
}));
|
|
466
|
+
|
|
467
|
+
if (active && draggable && sortableListItems.length > 0) {
|
|
468
|
+
// @ts-ignore skip SortableItem type check
|
|
469
|
+
return /*#__PURE__*/_react.default.createElement(SortableList, {
|
|
470
|
+
useDragHandle: true,
|
|
471
|
+
items: sortableListItems,
|
|
472
|
+
onSortEnd: this.onSortEnd,
|
|
473
|
+
axis: "xy"
|
|
474
|
+
});
|
|
475
|
+
}
|
|
476
|
+
|
|
372
477
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, tags, restTags.length > 0 && (showRestTagsPopover ? /*#__PURE__*/_react.default.createElement(_popover.default, (0, _assign.default)({
|
|
373
478
|
content: restTags,
|
|
374
479
|
showArrow: true,
|
|
@@ -379,16 +484,24 @@ class TagInput extends _baseComponent.default {
|
|
|
379
484
|
}
|
|
380
485
|
|
|
381
486
|
blur() {
|
|
382
|
-
this.inputRef.current.blur();
|
|
487
|
+
this.inputRef.current.blur(); // unregister clickOutside event
|
|
488
|
+
|
|
489
|
+
this.foundation.clickOutsideCallBack();
|
|
383
490
|
}
|
|
384
491
|
|
|
385
492
|
focus() {
|
|
386
493
|
const {
|
|
387
|
-
preventScroll
|
|
494
|
+
preventScroll,
|
|
495
|
+
disabled
|
|
388
496
|
} = this.props;
|
|
389
497
|
this.inputRef.current.focus({
|
|
390
498
|
preventScroll
|
|
391
499
|
});
|
|
500
|
+
|
|
501
|
+
if (!disabled) {
|
|
502
|
+
// register clickOutside event
|
|
503
|
+
this.foundation.handleClick();
|
|
504
|
+
}
|
|
392
505
|
}
|
|
393
506
|
|
|
394
507
|
render() {
|
|
@@ -404,10 +517,11 @@ class TagInput extends _baseComponent.default {
|
|
|
404
517
|
focusing,
|
|
405
518
|
hovering,
|
|
406
519
|
tagsArray,
|
|
407
|
-
inputValue
|
|
520
|
+
inputValue,
|
|
521
|
+
active
|
|
408
522
|
} = this.state;
|
|
409
523
|
const tagInputCls = (0, _classnames.default)(prefixCls, className, {
|
|
410
|
-
["".concat(prefixCls, "-focus")]: focusing,
|
|
524
|
+
["".concat(prefixCls, "-focus")]: focusing || active,
|
|
411
525
|
["".concat(prefixCls, "-disabled")]: disabled,
|
|
412
526
|
["".concat(prefixCls, "-hover")]: hovering && !disabled,
|
|
413
527
|
["".concat(prefixCls, "-error")]: validateStatus === 'error',
|
|
@@ -415,41 +529,49 @@ class TagInput extends _baseComponent.default {
|
|
|
415
529
|
});
|
|
416
530
|
const inputCls = (0, _classnames.default)("".concat(prefixCls, "-wrapper-input"));
|
|
417
531
|
const wrapperCls = (0, _classnames.default)("".concat(prefixCls, "-wrapper"));
|
|
418
|
-
return
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
"
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
this.
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
532
|
+
return (
|
|
533
|
+
/*#__PURE__*/
|
|
534
|
+
// eslint-disable-next-line
|
|
535
|
+
_react.default.createElement("div", {
|
|
536
|
+
ref: this.tagInputRef,
|
|
537
|
+
style: style,
|
|
538
|
+
className: tagInputCls,
|
|
539
|
+
"aria-disabled": disabled,
|
|
540
|
+
"aria-label": this.props['aria-label'],
|
|
541
|
+
"aria-invalid": validateStatus === 'error',
|
|
542
|
+
onMouseEnter: e => {
|
|
543
|
+
this.handleInputMouseEnter(e);
|
|
544
|
+
},
|
|
545
|
+
onMouseLeave: e => {
|
|
546
|
+
this.handleInputMouseLeave(e);
|
|
547
|
+
},
|
|
548
|
+
onClick: e => {
|
|
549
|
+
this.handleClick(e);
|
|
550
|
+
}
|
|
551
|
+
}, this.renderPrefix(), /*#__PURE__*/_react.default.createElement("div", {
|
|
552
|
+
className: wrapperCls
|
|
553
|
+
}, this.renderTags(), /*#__PURE__*/_react.default.createElement(_input.default, {
|
|
554
|
+
"aria-label": 'input value',
|
|
555
|
+
ref: this.inputRef,
|
|
556
|
+
className: inputCls,
|
|
557
|
+
disabled: disabled,
|
|
558
|
+
value: inputValue,
|
|
559
|
+
size: size,
|
|
560
|
+
placeholder: tagsArray.length === 0 ? placeholder : '',
|
|
561
|
+
onKeyDown: e => {
|
|
562
|
+
this.handleKeyDown(e);
|
|
563
|
+
},
|
|
564
|
+
onChange: (v, e) => {
|
|
565
|
+
this.handleInputChange(e);
|
|
566
|
+
},
|
|
567
|
+
onBlur: e => {
|
|
568
|
+
this.handleInputBlur(e);
|
|
569
|
+
},
|
|
570
|
+
onFocus: e => {
|
|
571
|
+
this.handleInputFocus(e);
|
|
572
|
+
}
|
|
573
|
+
})), this.renderClearBtn(), this.renderSuffix())
|
|
574
|
+
);
|
|
453
575
|
}
|
|
454
576
|
|
|
455
577
|
}
|
|
@@ -473,6 +595,8 @@ TagInput.propTypes = {
|
|
|
473
595
|
separator: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.array]),
|
|
474
596
|
showClear: _propTypes.default.bool,
|
|
475
597
|
addOnBlur: _propTypes.default.bool,
|
|
598
|
+
draggable: _propTypes.default.bool,
|
|
599
|
+
expandRestTagsOnClick: _propTypes.default.bool,
|
|
476
600
|
autoFocus: _propTypes.default.bool,
|
|
477
601
|
renderTagItem: _propTypes.default.func,
|
|
478
602
|
onBlur: _propTypes.default.func,
|
|
@@ -497,6 +621,8 @@ TagInput.defaultProps = {
|
|
|
497
621
|
allowDuplicates: true,
|
|
498
622
|
showRestTagsPopover: true,
|
|
499
623
|
autoFocus: false,
|
|
624
|
+
draggable: false,
|
|
625
|
+
expandRestTagsOnClick: true,
|
|
500
626
|
showContentTooltip: true,
|
|
501
627
|
separator: ',',
|
|
502
628
|
size: 'default',
|
|
@@ -53,8 +53,10 @@ export interface TooltipProps extends BaseProps {
|
|
|
53
53
|
guardFocus?: boolean;
|
|
54
54
|
returnFocusOnClose?: boolean;
|
|
55
55
|
onEscKeyDown?: (e: React.KeyboardEvent) => void;
|
|
56
|
+
disableArrowKeyDown?: boolean;
|
|
56
57
|
wrapperId?: string;
|
|
57
58
|
preventScroll?: boolean;
|
|
59
|
+
disableFocusListener?: boolean;
|
|
58
60
|
}
|
|
59
61
|
interface TooltipState {
|
|
60
62
|
visible: boolean;
|
|
@@ -139,6 +141,8 @@ export default class Tooltip extends BaseComponent<TooltipProps, TooltipState> {
|
|
|
139
141
|
guardFocus: boolean;
|
|
140
142
|
returnFocusOnClose: boolean;
|
|
141
143
|
onEscKeyDown: (...args: any[]) => void;
|
|
144
|
+
disableFocusListener: boolean;
|
|
145
|
+
disableArrowKeyDown: boolean;
|
|
142
146
|
};
|
|
143
147
|
eventManager: Event;
|
|
144
148
|
triggerEl: React.RefObject<unknown>;
|
package/lib/cjs/tooltip/index.js
CHANGED
|
@@ -721,8 +721,8 @@ class Tooltip extends _baseComponent.default {
|
|
|
721
721
|
ref.current = node;
|
|
722
722
|
}
|
|
723
723
|
},
|
|
724
|
-
tabIndex: 0,
|
|
725
|
-
|
|
724
|
+
tabIndex: children.props.tabIndex || 0 // a11y keyboard, in some condition select's tabindex need to -1 or 0
|
|
725
|
+
|
|
726
726
|
})); // If you do not add a layer of div, in order to bind the events and className in the tooltip, you need to cloneElement children, but this time it may overwrite the children's original ref reference
|
|
727
727
|
// So if the user adds ref to the content, you need to use callback ref: https://github.com/facebook/react/issues/8873
|
|
728
728
|
|
|
@@ -790,5 +790,7 @@ Tooltip.defaultProps = {
|
|
|
790
790
|
closeOnEsc: false,
|
|
791
791
|
guardFocus: false,
|
|
792
792
|
returnFocusOnClose: false,
|
|
793
|
-
onEscKeyDown: _noop2.default
|
|
793
|
+
onEscKeyDown: _noop2.default,
|
|
794
|
+
disableFocusListener: false,
|
|
795
|
+
disableArrowKeyDown: false
|
|
794
796
|
};
|
|
@@ -9,6 +9,8 @@ export interface CollapsePanelProps {
|
|
|
9
9
|
children?: React.ReactNode;
|
|
10
10
|
reCalcKey?: number | string;
|
|
11
11
|
style?: CSSProperties;
|
|
12
|
+
showArrow?: boolean;
|
|
13
|
+
disabled?: boolean;
|
|
12
14
|
}
|
|
13
15
|
export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
|
|
14
16
|
static contextType: React.Context<CollapseContextType>;
|
|
@@ -18,6 +20,12 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
|
|
|
18
20
|
header: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
19
21
|
className: PropTypes.Requireable<string>;
|
|
20
22
|
reCalcKey: PropTypes.Requireable<string | number>;
|
|
23
|
+
showArrow: PropTypes.Requireable<boolean>;
|
|
24
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
25
|
+
};
|
|
26
|
+
static defaultProps: {
|
|
27
|
+
showArrow: boolean;
|
|
28
|
+
disabled: boolean;
|
|
21
29
|
};
|
|
22
30
|
private ariaID;
|
|
23
31
|
context: CollapseContextType;
|
package/lib/es/collapse/item.js
CHANGED
|
@@ -30,6 +30,7 @@ export default class CollapsePanel extends PureComponent {
|
|
|
30
30
|
renderHeader(active) {
|
|
31
31
|
let expandIconEnable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
32
32
|
const {
|
|
33
|
+
showArrow,
|
|
33
34
|
header,
|
|
34
35
|
extra
|
|
35
36
|
} = this.props;
|
|
@@ -58,12 +59,12 @@ export default class CollapsePanel extends PureComponent {
|
|
|
58
59
|
const iconPosLeft = expandIconPosition === 'left';
|
|
59
60
|
|
|
60
61
|
if (typeof header === 'string') {
|
|
61
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, iconPosLeft ? icon : null, /*#__PURE__*/React.createElement("span", null, header), /*#__PURE__*/React.createElement("span", {
|
|
62
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, showArrow && (iconPosLeft ? icon : null), /*#__PURE__*/React.createElement("span", null, header), /*#__PURE__*/React.createElement("span", {
|
|
62
63
|
className: "".concat(cssClasses.PREFIX, "-header-right")
|
|
63
|
-
}, /*#__PURE__*/React.createElement("span", null, extra), iconPosLeft ? null : icon));
|
|
64
|
+
}, /*#__PURE__*/React.createElement("span", null, extra), showArrow && (iconPosLeft ? null : icon)));
|
|
64
65
|
}
|
|
65
66
|
|
|
66
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, iconPosLeft ? icon : null, header, iconPosLeft ? null : icon);
|
|
67
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, showArrow && (iconPosLeft ? icon : null), header, showArrow && (iconPosLeft ? null : icon));
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
render() {
|
|
@@ -74,9 +75,11 @@ export default class CollapsePanel extends PureComponent {
|
|
|
74
75
|
itemKey,
|
|
75
76
|
reCalcKey,
|
|
76
77
|
header,
|
|
77
|
-
extra
|
|
78
|
+
extra,
|
|
79
|
+
showArrow,
|
|
80
|
+
disabled
|
|
78
81
|
} = _a,
|
|
79
|
-
restProps = __rest(_a, ["className", "children", "itemKey", "reCalcKey", "header", "extra"]);
|
|
82
|
+
restProps = __rest(_a, ["className", "children", "itemKey", "reCalcKey", "header", "extra", "showArrow", "disabled"]);
|
|
80
83
|
|
|
81
84
|
const {
|
|
82
85
|
keepDOM,
|
|
@@ -91,6 +94,7 @@ export default class CollapsePanel extends PureComponent {
|
|
|
91
94
|
});
|
|
92
95
|
const headerCls = cls({
|
|
93
96
|
["".concat(cssClasses.PREFIX, "-header")]: true,
|
|
97
|
+
["".concat(cssClasses.PREFIX, "-header-disabled")]: disabled,
|
|
94
98
|
["".concat(cssClasses.PREFIX, "-header-iconLeft")]: expandIconPosition === 'left'
|
|
95
99
|
});
|
|
96
100
|
const contentCls = cls({
|
|
@@ -102,10 +106,11 @@ export default class CollapsePanel extends PureComponent {
|
|
|
102
106
|
role: "button",
|
|
103
107
|
tabIndex: 0,
|
|
104
108
|
className: headerCls,
|
|
109
|
+
"aria-disabled": disabled,
|
|
105
110
|
"aria-expanded": active ? 'true' : 'false',
|
|
106
111
|
"aria-owns": this.ariaID,
|
|
107
|
-
onClick: e => onClick(itemKey, e)
|
|
108
|
-
}, this.renderHeader(active, children !== undefined)), children && /*#__PURE__*/React.createElement(Collapsible, {
|
|
112
|
+
onClick: e => !disabled && onClick(itemKey, e)
|
|
113
|
+
}, this.renderHeader(active, children !== undefined && !disabled)), children && /*#__PURE__*/React.createElement(Collapsible, {
|
|
109
114
|
isOpen: active,
|
|
110
115
|
keepDOM: keepDOM,
|
|
111
116
|
motion: motion,
|
|
@@ -126,5 +131,11 @@ CollapsePanel.propTypes = {
|
|
|
126
131
|
extra: PropTypes.node,
|
|
127
132
|
header: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
|
|
128
133
|
className: PropTypes.string,
|
|
129
|
-
reCalcKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
|
|
134
|
+
reCalcKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
135
|
+
showArrow: PropTypes.bool,
|
|
136
|
+
disabled: PropTypes.bool
|
|
137
|
+
};
|
|
138
|
+
CollapsePanel.defaultProps = {
|
|
139
|
+
showArrow: true,
|
|
140
|
+
disabled: false
|
|
130
141
|
};
|
|
@@ -56,6 +56,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
|
|
|
56
56
|
max: PropTypes.Requireable<number>;
|
|
57
57
|
placeholder: PropTypes.Requireable<string | any[]>;
|
|
58
58
|
presets: PropTypes.Requireable<any[]>;
|
|
59
|
+
presetPosition: PropTypes.Requireable<"top" | "left" | "right" | "bottom">;
|
|
59
60
|
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
60
61
|
onChangeWithDateFirst: PropTypes.Requireable<boolean>;
|
|
61
62
|
weekStartsOn: PropTypes.Requireable<number>;
|
|
@@ -111,6 +112,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
|
|
|
111
112
|
stopPropagation: boolean;
|
|
112
113
|
motion: boolean;
|
|
113
114
|
prefixCls: "semi-datepicker";
|
|
115
|
+
presetPosition: string;
|
|
114
116
|
zIndex: number;
|
|
115
117
|
type: string;
|
|
116
118
|
size: string;
|
|
@@ -172,6 +174,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
|
|
|
172
174
|
disabledDisposeTime: MonthsGridProps['disabledTime'];
|
|
173
175
|
renderMonthGrid(locale: Locale['DatePicker'], localeCode: string, dateFnsLocale: Locale['dateFnsLocale']): JSX.Element;
|
|
174
176
|
renderQuickControls(): JSX.Element;
|
|
177
|
+
renderDateInput(): JSX.Element;
|
|
175
178
|
handleOpenPanel: () => void;
|
|
176
179
|
handleInputChange: DatePickerFoundation['handleInputChange'];
|
|
177
180
|
handleInsetInputChange: (options: InsetInputChangeProps) => void;
|