@douyinfe/semi-ui 2.5.0 → 2.6.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/button/index.tsx +1 -1
- package/calendar/monthCalendar.tsx +14 -13
- package/cascader/index.tsx +21 -3
- package/cascader/item.tsx +25 -5
- package/datePicker/dateInput.tsx +8 -5
- package/datePicker/datePicker.tsx +6 -1
- package/datePicker/month.tsx +14 -7
- package/datePicker/monthsGrid.tsx +17 -5
- package/datePicker/navigation.tsx +8 -4
- package/datePicker/quickControl.tsx +1 -0
- package/datePicker/yearAndMonth.tsx +1 -1
- package/dist/css/semi.css +22 -8
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +259 -104
- 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/form/__test__/formApi.test.js +182 -0
- package/form/_story/FormApi/arrayDemo.jsx +4 -7
- package/form/_story/Layout/slotDemo.jsx +2 -2
- package/form/_story/demo.jsx +18 -1
- package/form/_story/form.stories.js +6 -6
- package/form/baseForm.tsx +2 -2
- package/form/hoc/withField.tsx +1 -1
- package/lib/cjs/_base/base.css +5 -5
- package/lib/cjs/button/Button.d.ts +4 -4
- package/lib/cjs/button/buttonGroup.d.ts +2 -2
- package/lib/cjs/button/index.d.ts +5 -6
- package/lib/cjs/calendar/monthCalendar.js +21 -5
- package/lib/cjs/cascader/index.d.ts +9 -2
- package/lib/cjs/cascader/index.js +14 -1
- package/lib/cjs/cascader/item.d.ts +6 -2
- package/lib/cjs/cascader/item.js +33 -4
- package/lib/cjs/datePicker/dateInput.d.ts +0 -2
- package/lib/cjs/datePicker/dateInput.js +17 -6
- package/lib/cjs/datePicker/datePicker.js +15 -12
- package/lib/cjs/datePicker/month.d.ts +1 -0
- package/lib/cjs/datePicker/month.js +18 -2
- package/lib/cjs/datePicker/monthsGrid.js +16 -4
- package/lib/cjs/datePicker/navigation.js +8 -0
- package/lib/cjs/datePicker/quickControl.js +1 -0
- package/lib/cjs/datePicker/yearAndMonth.js +1 -0
- package/lib/cjs/form/baseForm.js +2 -2
- package/lib/cjs/form/hoc/withField.js +1 -1
- package/lib/cjs/iconButton/index.d.ts +2 -2
- package/lib/cjs/navigation/Item.d.ts +2 -2
- package/lib/cjs/navigation/Item.js +8 -6
- package/lib/cjs/navigation/SubNav.js +2 -2
- package/lib/cjs/scrollList/scrollItem.d.ts +2 -1
- package/lib/cjs/scrollList/scrollItem.js +13 -3
- package/lib/cjs/table/Body/index.d.ts +2 -0
- package/lib/cjs/table/Body/index.js +13 -4
- package/lib/cjs/tooltip/index.js +6 -2
- package/lib/es/_base/base.css +5 -5
- package/lib/es/button/Button.d.ts +4 -4
- package/lib/es/button/buttonGroup.d.ts +2 -2
- package/lib/es/button/index.d.ts +5 -6
- package/lib/es/calendar/monthCalendar.js +22 -5
- package/lib/es/cascader/index.d.ts +9 -2
- package/lib/es/cascader/index.js +14 -1
- package/lib/es/cascader/item.d.ts +6 -2
- package/lib/es/cascader/item.js +31 -4
- package/lib/es/datePicker/dateInput.d.ts +0 -2
- package/lib/es/datePicker/dateInput.js +17 -6
- package/lib/es/datePicker/datePicker.js +15 -12
- package/lib/es/datePicker/month.d.ts +1 -0
- package/lib/es/datePicker/month.js +18 -2
- package/lib/es/datePicker/monthsGrid.js +16 -4
- package/lib/es/datePicker/navigation.js +8 -0
- package/lib/es/datePicker/quickControl.js +2 -0
- package/lib/es/datePicker/yearAndMonth.js +1 -0
- package/lib/es/form/baseForm.js +2 -2
- package/lib/es/form/hoc/withField.js +1 -1
- package/lib/es/iconButton/index.d.ts +2 -2
- package/lib/es/navigation/Item.d.ts +2 -2
- package/lib/es/navigation/Item.js +8 -6
- package/lib/es/navigation/SubNav.js +2 -2
- package/lib/es/scrollList/scrollItem.d.ts +2 -1
- package/lib/es/scrollList/scrollItem.js +13 -3
- package/lib/es/table/Body/index.d.ts +2 -0
- package/lib/es/table/Body/index.js +13 -4
- package/lib/es/tooltip/index.js +6 -2
- package/navigation/Item.tsx +15 -12
- package/navigation/SubNav.tsx +4 -4
- package/package.json +9 -9
- package/scrollList/_story/ScrollList/index.js +3 -0
- package/scrollList/_story/WheelList/index.js +3 -0
- package/scrollList/scrollItem.tsx +30 -9
- package/table/Body/index.tsx +15 -4
- package/table/__test__/table.test.js +18 -0
- package/table/_story/Perf/Virtualized/index.jsx +6 -0
- package/table/_story/v2/FixedExpandedRow/index.jsx +95 -0
- package/table/_story/v2/FixedHeaderMerge/index.jsx +1 -1
- package/table/_story/v2/defaultFilteredValue.tsx +0 -9
- package/table/_story/v2/index.js +2 -1
- package/tooltip/_story/tooltip.stories.js +702 -625
- package/tooltip/index.tsx +2 -2
package/lib/cjs/cascader/item.js
CHANGED
|
@@ -20,6 +20,8 @@ var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-st
|
|
|
20
20
|
|
|
21
21
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
22
22
|
|
|
23
|
+
var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
|
|
24
|
+
|
|
23
25
|
var _includes2 = _interopRequireDefault(require("lodash/includes"));
|
|
24
26
|
|
|
25
27
|
var _react = _interopRequireWildcard(require("react"));
|
|
@@ -30,6 +32,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
30
32
|
|
|
31
33
|
var _constants = require("@douyinfe/semi-foundation/lib/cjs/cascader/constants");
|
|
32
34
|
|
|
35
|
+
var _isEnterPress = _interopRequireDefault(require("@douyinfe/semi-foundation/lib/cjs/utils/isEnterPress"));
|
|
36
|
+
|
|
33
37
|
var _context7 = _interopRequireDefault(require("../configProvider/context"));
|
|
34
38
|
|
|
35
39
|
var _localeConsumer = _interopRequireDefault(require("../locale/localeConsumer"));
|
|
@@ -61,6 +65,16 @@ class Item extends _react.PureComponent {
|
|
|
61
65
|
|
|
62
66
|
onItemClick(e, item);
|
|
63
67
|
};
|
|
68
|
+
/**
|
|
69
|
+
* A11y: simulate item click
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
this.handleItemEnterPress = (keyboardEvent, item) => {
|
|
74
|
+
if ((0, _isEnterPress.default)(keyboardEvent)) {
|
|
75
|
+
this.onClick(keyboardEvent, item);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
64
78
|
|
|
65
79
|
this.onHover = (e, item) => {
|
|
66
80
|
const {
|
|
@@ -140,6 +154,7 @@ class Item extends _react.PureComponent {
|
|
|
140
154
|
|
|
141
155
|
case 'empty':
|
|
142
156
|
return /*#__PURE__*/_react.default.createElement("span", {
|
|
157
|
+
"aria-hidden": true,
|
|
143
158
|
className: (0, _concat.default)(_context3 = "".concat(prefixcls, "-icon ")).call(_context3, prefixcls, "-icon-empty")
|
|
144
159
|
});
|
|
145
160
|
|
|
@@ -202,11 +217,13 @@ class Item extends _react.PureComponent {
|
|
|
202
217
|
["".concat(prefixcls, "-disabled")]: disabled
|
|
203
218
|
});
|
|
204
219
|
return /*#__PURE__*/_react.default.createElement("li", {
|
|
220
|
+
role: 'menuitem',
|
|
205
221
|
className: className,
|
|
206
222
|
key: key,
|
|
207
223
|
onClick: e => {
|
|
208
224
|
this.onClick(e, item);
|
|
209
|
-
}
|
|
225
|
+
},
|
|
226
|
+
onKeyPress: e => this.handleItemEnterPress(e, item)
|
|
210
227
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
211
228
|
className: "".concat(prefixcls, "-label")
|
|
212
229
|
}, !multiple && this.renderIcon('empty'), multiple && /*#__PURE__*/_react.default.createElement(_checkbox.default, {
|
|
@@ -232,13 +249,15 @@ class Item extends _react.PureComponent {
|
|
|
232
249
|
let showChildItem;
|
|
233
250
|
const ind = content.length;
|
|
234
251
|
content.push( /*#__PURE__*/_react.default.createElement("ul", {
|
|
252
|
+
role: 'menu',
|
|
235
253
|
className: "".concat(prefixcls, "-list"),
|
|
236
254
|
key: renderData[0].key,
|
|
237
255
|
onScroll: e => this.props.onListScroll(e, ind)
|
|
238
256
|
}, (0, _map.default)(renderData).call(renderData, item => {
|
|
239
257
|
const {
|
|
240
258
|
data,
|
|
241
|
-
key
|
|
259
|
+
key,
|
|
260
|
+
parentKey
|
|
242
261
|
} = item;
|
|
243
262
|
const {
|
|
244
263
|
children,
|
|
@@ -263,16 +282,26 @@ class Item extends _react.PureComponent {
|
|
|
263
282
|
["".concat(prefixcls, "-select")]: selected && !multiple,
|
|
264
283
|
["".concat(prefixcls, "-disabled")]: disabled
|
|
265
284
|
});
|
|
266
|
-
|
|
285
|
+
const otherAriaProps = parentKey ? {
|
|
286
|
+
['aria-owns']: "cascaderItem-".concat(parentKey)
|
|
287
|
+
} : {};
|
|
288
|
+
return /*#__PURE__*/_react.default.createElement("li", (0, _assign.default)({
|
|
289
|
+
role: 'menuitem',
|
|
290
|
+
id: "cascaderItem-".concat(key),
|
|
291
|
+
"aria-expanded": active,
|
|
292
|
+
"aria-haspopup": Boolean(showExpand),
|
|
293
|
+
"aria-disabled": disabled
|
|
294
|
+
}, otherAriaProps, {
|
|
267
295
|
className: className,
|
|
268
296
|
key: key,
|
|
269
297
|
onClick: e => {
|
|
270
298
|
this.onClick(e, item);
|
|
271
299
|
},
|
|
300
|
+
onKeyPress: e => this.handleItemEnterPress(e, item),
|
|
272
301
|
onMouseEnter: e => {
|
|
273
302
|
this.onHover(e, item);
|
|
274
303
|
}
|
|
275
|
-
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
304
|
+
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
276
305
|
className: "".concat(prefixcls, "-label")
|
|
277
306
|
}, selected && !multiple && this.renderIcon('tick'), !selected && !multiple && this.renderIcon('empty'), multiple && /*#__PURE__*/_react.default.createElement(_checkbox.default, {
|
|
278
307
|
onChange: e => this.onCheckboxChange(e, item),
|
|
@@ -25,7 +25,6 @@ export default class DateInput extends BaseComponent<DateInputProps, {}> {
|
|
|
25
25
|
value: PropTypes.Requireable<any[]>;
|
|
26
26
|
disabled: PropTypes.Requireable<boolean>;
|
|
27
27
|
type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
|
|
28
|
-
multiple: PropTypes.Requireable<boolean>;
|
|
29
28
|
showClear: PropTypes.Requireable<boolean>;
|
|
30
29
|
format: PropTypes.Requireable<string>;
|
|
31
30
|
inputStyle: PropTypes.Requireable<object>;
|
|
@@ -49,7 +48,6 @@ export default class DateInput extends BaseComponent<DateInputProps, {}> {
|
|
|
49
48
|
onBlur: typeof noop;
|
|
50
49
|
onClear: typeof noop;
|
|
51
50
|
onFocus: typeof noop;
|
|
52
|
-
multiple: boolean;
|
|
53
51
|
type: string;
|
|
54
52
|
inputStyle: {};
|
|
55
53
|
inputReadOnly: boolean;
|
|
@@ -52,6 +52,8 @@ var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
|
52
52
|
}
|
|
53
53
|
return t;
|
|
54
54
|
};
|
|
55
|
+
/* eslint-disable jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/interactive-supports-focus */
|
|
56
|
+
|
|
55
57
|
/* eslint-disable max-lines-per-function */
|
|
56
58
|
|
|
57
59
|
/* eslint-disable no-unused-vars */
|
|
@@ -195,9 +197,14 @@ class DateInput extends _baseComponent.default {
|
|
|
195
197
|
} = this.props;
|
|
196
198
|
const allowClear = (rangeStart || rangeEnd) && showClear;
|
|
197
199
|
return allowClear && !disabled ? /*#__PURE__*/_react.default.createElement("div", {
|
|
200
|
+
role: "button",
|
|
201
|
+
tabIndex: 0,
|
|
202
|
+
"aria-label": "Clear range input value",
|
|
198
203
|
className: "".concat(prefixCls, "-range-input-clearbtn"),
|
|
199
204
|
onMouseDown: e => !disabled && this.handleRangeInputClear(e)
|
|
200
|
-
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClear,
|
|
205
|
+
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClear, {
|
|
206
|
+
"aria-hidden": true
|
|
207
|
+
})) : null;
|
|
201
208
|
}
|
|
202
209
|
|
|
203
210
|
renderRangeSuffix(suffix) {
|
|
@@ -298,6 +305,8 @@ class DateInput extends _baseComponent.default {
|
|
|
298
305
|
validateStatus,
|
|
299
306
|
block,
|
|
300
307
|
prefixCls,
|
|
308
|
+
multiple,
|
|
309
|
+
// Whether to allow multiple values for email and file types
|
|
301
310
|
dateFnsLocale,
|
|
302
311
|
// No need to pass to input
|
|
303
312
|
onBlur,
|
|
@@ -315,11 +324,15 @@ class DateInput extends _baseComponent.default {
|
|
|
315
324
|
rangeInputFocus,
|
|
316
325
|
rangeSeparator
|
|
317
326
|
} = _a,
|
|
318
|
-
rest = __rest(_a, ["placeholder", "type", "value", "inputValue", "inputStyle", "disabled", "showClear", "inputReadOnly", "insetLabel", "validateStatus", "block", "prefixCls", "dateFnsLocale", "onBlur", "onClear", "onFocus", "prefix", "autofocus", "size", "rangeInputStartRef", "rangeInputEndRef", "onRangeClear", "onRangeBlur", "onRangeEndTabPress", "rangeInputFocus", "rangeSeparator"]);
|
|
327
|
+
rest = __rest(_a, ["placeholder", "type", "value", "inputValue", "inputStyle", "disabled", "showClear", "inputReadOnly", "insetLabel", "validateStatus", "block", "prefixCls", "multiple", "dateFnsLocale", "onBlur", "onClear", "onFocus", "prefix", "autofocus", "size", "rangeInputStartRef", "rangeInputEndRef", "onRangeClear", "onRangeBlur", "onRangeEndTabPress", "rangeInputFocus", "rangeSeparator"]);
|
|
319
328
|
|
|
320
|
-
const dateIcon = /*#__PURE__*/_react.default.createElement(_semiIcons.IconCalendar,
|
|
329
|
+
const dateIcon = /*#__PURE__*/_react.default.createElement(_semiIcons.IconCalendar, {
|
|
330
|
+
"aria-hidden": true
|
|
331
|
+
});
|
|
321
332
|
|
|
322
|
-
const dateTimeIcon = /*#__PURE__*/_react.default.createElement(_semiIcons.IconCalendarClock,
|
|
333
|
+
const dateTimeIcon = /*#__PURE__*/_react.default.createElement(_semiIcons.IconCalendarClock, {
|
|
334
|
+
"aria-hidden": true
|
|
335
|
+
});
|
|
323
336
|
|
|
324
337
|
const suffix = (0, _includes.default)(type).call(type, 'Time') ? dateTimeIcon : dateIcon;
|
|
325
338
|
let text = '';
|
|
@@ -375,7 +388,6 @@ DateInput.propTypes = {
|
|
|
375
388
|
value: _propTypes.default.array,
|
|
376
389
|
disabled: _propTypes.default.bool,
|
|
377
390
|
type: _propTypes.default.oneOf(_constants.strings.TYPE_SET),
|
|
378
|
-
multiple: _propTypes.default.bool,
|
|
379
391
|
showClear: _propTypes.default.bool,
|
|
380
392
|
format: _propTypes.default.string,
|
|
381
393
|
inputStyle: _propTypes.default.object,
|
|
@@ -399,7 +411,6 @@ DateInput.defaultProps = {
|
|
|
399
411
|
onBlur: _function.noop,
|
|
400
412
|
onClear: _function.noop,
|
|
401
413
|
onFocus: _function.noop,
|
|
402
|
-
multiple: false,
|
|
403
414
|
type: 'date',
|
|
404
415
|
inputStyle: {},
|
|
405
416
|
inputReadOnly: false,
|
|
@@ -62,6 +62,8 @@ var _yearAndMonth = _interopRequireDefault(require("./yearAndMonth"));
|
|
|
62
62
|
|
|
63
63
|
require("@douyinfe/semi-foundation/lib/cjs/datePicker/datePicker.css");
|
|
64
64
|
|
|
65
|
+
/* eslint-disable jsx-a11y/click-events-have-key-events,jsx-a11y/interactive-supports-focus */
|
|
66
|
+
|
|
65
67
|
/* eslint-disable max-len */
|
|
66
68
|
class DatePicker extends _baseComponent.default {
|
|
67
69
|
constructor(props) {
|
|
@@ -608,18 +610,19 @@ class DatePicker extends _baseComponent.default {
|
|
|
608
610
|
onRangeClear: this.handleRangeInputClear,
|
|
609
611
|
onRangeEndTabPress: this.handleRangeEndTabPress
|
|
610
612
|
});
|
|
611
|
-
return (
|
|
612
|
-
|
|
613
|
-
// eslint-disable-next-line jsx-a11y/
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
613
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
614
|
+
// tooltip will mount a11y props to children
|
|
615
|
+
// eslint-disable-next-line jsx-a11y/role-has-required-aria-props
|
|
616
|
+
role: "combobox",
|
|
617
|
+
"aria-label": (0, _isArray.default)(value) && value.length ? "Change date" : "Choose date",
|
|
618
|
+
"aria-disabled": disabled,
|
|
619
|
+
onClick: this.handleTriggerWrapperClick,
|
|
620
|
+
className: inputCls
|
|
621
|
+
}, typeof triggerRender === 'function' ? /*#__PURE__*/_react.default.createElement(_trigger.default, (0, _assign.default)({}, props, {
|
|
622
|
+
triggerRender: triggerRender,
|
|
623
|
+
componentName: "DatePicker",
|
|
624
|
+
componentProps: (0, _assign.default)({}, this.props)
|
|
625
|
+
})) : /*#__PURE__*/_react.default.createElement(_dateInput.default, (0, _assign.default)({}, props)));
|
|
623
626
|
}
|
|
624
627
|
|
|
625
628
|
render() {
|
|
@@ -33,6 +33,7 @@ export default class Month extends BaseComponent<MonthProps, MonthState> {
|
|
|
33
33
|
endDateOffset: PropTypes.Requireable<(...args: any[]) => any>;
|
|
34
34
|
rangeInputFocus: PropTypes.Requireable<string | boolean>;
|
|
35
35
|
focusRecordsRef: PropTypes.Requireable<object>;
|
|
36
|
+
multiple: PropTypes.Requireable<boolean>;
|
|
36
37
|
};
|
|
37
38
|
static defaultProps: {
|
|
38
39
|
month: Date;
|
|
@@ -40,6 +40,8 @@ var _index = require("@douyinfe/semi-foundation/lib/cjs/datePicker/_utils/index"
|
|
|
40
40
|
|
|
41
41
|
var _dateFns = require("date-fns");
|
|
42
42
|
|
|
43
|
+
/* eslint-disable jsx-a11y/click-events-have-key-events,jsx-a11y/no-noninteractive-element-interactions */
|
|
44
|
+
|
|
43
45
|
/* eslint-disable max-len */
|
|
44
46
|
const prefixCls = _constants.cssClasses.PREFIX;
|
|
45
47
|
|
|
@@ -353,8 +355,10 @@ class Month extends _baseComponent.default {
|
|
|
353
355
|
|
|
354
356
|
const weekdaysText = (0, _map.default)(weekdays).call(weekdays, key => locale.weeks[key]);
|
|
355
357
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
358
|
+
role: "row",
|
|
356
359
|
className: weekdayCls
|
|
357
360
|
}, (0, _map.default)(weekdaysText).call(weekdaysText, (E, i) => /*#__PURE__*/_react.default.createElement("div", {
|
|
361
|
+
role: "columnheader",
|
|
358
362
|
key: E + i,
|
|
359
363
|
className: weekdayItemCls
|
|
360
364
|
}, E)));
|
|
@@ -389,6 +393,7 @@ class Month extends _baseComponent.default {
|
|
|
389
393
|
renderWeek(week, weekIndex) {
|
|
390
394
|
const weekCls = _constants.cssClasses.WEEK;
|
|
391
395
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
396
|
+
role: "row",
|
|
392
397
|
className: weekCls,
|
|
393
398
|
key: weekIndex
|
|
394
399
|
}, (0, _map.default)(week).call(week, (day, dayIndex) => this.renderDay(day, dayIndex)));
|
|
@@ -409,6 +414,8 @@ class Month extends _baseComponent.default {
|
|
|
409
414
|
|
|
410
415
|
if (!fullDate) {
|
|
411
416
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
417
|
+
role: "gridcell",
|
|
418
|
+
tabIndex: -1,
|
|
412
419
|
key: dayNumber + dayIndex,
|
|
413
420
|
className: _constants.cssClasses.DAY
|
|
414
421
|
}, /*#__PURE__*/_react.default.createElement("span", null));
|
|
@@ -444,6 +451,11 @@ class Month extends _baseComponent.default {
|
|
|
444
451
|
const fullDateArgs = [dayNumber, fullDate, dayStatus];
|
|
445
452
|
const customRender = (0, _isFunction2.default)(renderFullDate);
|
|
446
453
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
454
|
+
role: "gridcell",
|
|
455
|
+
tabIndex: dayStatus.isDisabled ? -1 : 0,
|
|
456
|
+
"aria-disabled": dayStatus.isDisabled,
|
|
457
|
+
"aria-selected": dayStatus.isSelected,
|
|
458
|
+
"aria-label": fullDate,
|
|
447
459
|
className: !customRender ? dayCls : _constants.cssClasses.DAY,
|
|
448
460
|
title: fullDate,
|
|
449
461
|
key: dayNumber + dayIndex,
|
|
@@ -457,13 +469,16 @@ class Month extends _baseComponent.default {
|
|
|
457
469
|
|
|
458
470
|
render() {
|
|
459
471
|
const {
|
|
460
|
-
forwardRef
|
|
472
|
+
forwardRef,
|
|
473
|
+
multiple
|
|
461
474
|
} = this.props;
|
|
462
475
|
const weekday = this.renderDayOfWeek();
|
|
463
476
|
const weeks = this.renderWeeks();
|
|
464
477
|
const monthCls = (0, _classnames.default)(_constants.cssClasses.MONTH);
|
|
465
478
|
const ref = forwardRef || this.monthRef;
|
|
466
479
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
480
|
+
role: "grid",
|
|
481
|
+
"aria-multiselectable": multiple,
|
|
467
482
|
ref: ref,
|
|
468
483
|
className: monthCls
|
|
469
484
|
}, weekday, weeks);
|
|
@@ -491,7 +506,8 @@ Month.propTypes = {
|
|
|
491
506
|
startDateOffset: _propTypes.default.func,
|
|
492
507
|
endDateOffset: _propTypes.default.func,
|
|
493
508
|
rangeInputFocus: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool]),
|
|
494
|
-
focusRecordsRef: _propTypes.default.object
|
|
509
|
+
focusRecordsRef: _propTypes.default.object,
|
|
510
|
+
multiple: _propTypes.default.bool
|
|
495
511
|
};
|
|
496
512
|
Month.defaultProps = {
|
|
497
513
|
month: new Date(),
|
|
@@ -54,6 +54,8 @@ var _semiIcons = require("@douyinfe/semi-icons");
|
|
|
54
54
|
|
|
55
55
|
var _getDefaultFormatToken = require("@douyinfe/semi-foundation/lib/cjs/datePicker/_utils/getDefaultFormatToken");
|
|
56
56
|
|
|
57
|
+
/* eslint-disable jsx-a11y/interactive-supports-focus,jsx-a11y/click-events-have-key-events */
|
|
58
|
+
|
|
57
59
|
/* eslint-disable react/no-did-update-set-state */
|
|
58
60
|
|
|
59
61
|
/* eslint-disable max-len */
|
|
@@ -395,7 +397,8 @@ class MonthsGrid extends _baseComponent.default {
|
|
|
395
397
|
endDateOffset,
|
|
396
398
|
density,
|
|
397
399
|
rangeInputFocus,
|
|
398
|
-
syncSwitchMonth
|
|
400
|
+
syncSwitchMonth,
|
|
401
|
+
multiple
|
|
399
402
|
} = this.props;
|
|
400
403
|
let monthText = ''; // i18n monthText
|
|
401
404
|
|
|
@@ -461,7 +464,8 @@ class MonthsGrid extends _baseComponent.default {
|
|
|
461
464
|
onWeeksRowNumChange: weeksRowNum => this.handleWeeksRowNumChange(weeksRowNum, panelType),
|
|
462
465
|
startDateOffset: startDateOffset,
|
|
463
466
|
endDateOffset: endDateOffset,
|
|
464
|
-
focusRecordsRef: this.props.focusRecordsRef
|
|
467
|
+
focusRecordsRef: this.props.focusRecordsRef,
|
|
468
|
+
multiple: multiple
|
|
465
469
|
}));
|
|
466
470
|
}
|
|
467
471
|
|
|
@@ -613,14 +617,22 @@ class MonthsGrid extends _baseComponent.default {
|
|
|
613
617
|
className: switchCls,
|
|
614
618
|
ref: current => this.adapter.setCache("switch-".concat(panelType), current)
|
|
615
619
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
620
|
+
role: "button",
|
|
621
|
+
"aria-label": "Switch to date panel",
|
|
616
622
|
className: dateCls,
|
|
617
623
|
onClick: e => this.foundation.showDatePanel(panelType)
|
|
618
|
-
}, showSwithIcon && /*#__PURE__*/_react.default.createElement(_semiIcons.IconCalendar,
|
|
624
|
+
}, showSwithIcon && /*#__PURE__*/_react.default.createElement(_semiIcons.IconCalendar, {
|
|
625
|
+
"aria-hidden": true
|
|
626
|
+
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
619
627
|
className: textCls
|
|
620
628
|
}, dateText || monthText)), /*#__PURE__*/_react.default.createElement("div", {
|
|
629
|
+
role: "button",
|
|
630
|
+
"aria-label": "Switch to time panel",
|
|
621
631
|
className: timeCls,
|
|
622
632
|
onClick: e => this.foundation.showTimePicker(panelType, true)
|
|
623
|
-
}, showSwithIcon && /*#__PURE__*/_react.default.createElement(_semiIcons.IconClock,
|
|
633
|
+
}, showSwithIcon && /*#__PURE__*/_react.default.createElement(_semiIcons.IconClock, {
|
|
634
|
+
"aria-hidden": true
|
|
635
|
+
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
624
636
|
className: textCls
|
|
625
637
|
}, timeText)));
|
|
626
638
|
}
|
|
@@ -82,7 +82,9 @@ class Navigation extends _react.PureComponent {
|
|
|
82
82
|
ref: ref
|
|
83
83
|
}, /*#__PURE__*/_react.default.createElement(_iconButton.default, {
|
|
84
84
|
key: "double-chevron-left",
|
|
85
|
+
"aria-label": "Previous year",
|
|
85
86
|
icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconDoubleChevronLeft, {
|
|
87
|
+
"aria-hidden": true,
|
|
86
88
|
size: iconBtnSize
|
|
87
89
|
}),
|
|
88
90
|
size: buttonSize,
|
|
@@ -92,7 +94,9 @@ class Navigation extends _react.PureComponent {
|
|
|
92
94
|
style: leftButtonStyle
|
|
93
95
|
}), /*#__PURE__*/_react.default.createElement(_iconButton.default, {
|
|
94
96
|
key: "chevron-left",
|
|
97
|
+
"aria-label": "Previous month",
|
|
95
98
|
icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronLeft, {
|
|
99
|
+
"aria-hidden": true,
|
|
96
100
|
size: iconBtnSize
|
|
97
101
|
}),
|
|
98
102
|
size: buttonSize,
|
|
@@ -108,7 +112,9 @@ class Navigation extends _react.PureComponent {
|
|
|
108
112
|
size: buttonSize
|
|
109
113
|
}, /*#__PURE__*/_react.default.createElement("span", null, monthText))), /*#__PURE__*/_react.default.createElement(_iconButton.default, {
|
|
110
114
|
key: "chevron-right",
|
|
115
|
+
"aria-label": "Next month",
|
|
111
116
|
icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronRight, {
|
|
117
|
+
"aria-hidden": true,
|
|
112
118
|
size: iconBtnSize
|
|
113
119
|
}),
|
|
114
120
|
size: buttonSize,
|
|
@@ -118,7 +124,9 @@ class Navigation extends _react.PureComponent {
|
|
|
118
124
|
style: rightButtonStyle
|
|
119
125
|
}), /*#__PURE__*/_react.default.createElement(_iconButton.default, {
|
|
120
126
|
key: "double-chevron-right",
|
|
127
|
+
"aria-label": "Next year",
|
|
121
128
|
icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconDoubleChevronRight, {
|
|
129
|
+
"aria-hidden": true,
|
|
122
130
|
size: iconBtnSize
|
|
123
131
|
}),
|
|
124
132
|
size: buttonSize,
|
|
@@ -34,6 +34,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
|
|
|
34
34
|
|
|
35
35
|
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; }
|
|
36
36
|
|
|
37
|
+
/* eslint-disable jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events */
|
|
37
38
|
const prefixCls = _constants.cssClasses.PREFIX;
|
|
38
39
|
|
|
39
40
|
class QuickControl extends _react.PureComponent {
|
|
@@ -249,6 +249,7 @@ class YearAndMonth extends _baseComponent.default {
|
|
|
249
249
|
}, /*#__PURE__*/_react.default.createElement(_iconButton.default, {
|
|
250
250
|
noHorizontalPadding: false,
|
|
251
251
|
icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronLeft, {
|
|
252
|
+
"aria-hidden": true,
|
|
252
253
|
size: iconSize
|
|
253
254
|
}),
|
|
254
255
|
size: buttonSize,
|
package/lib/cjs/form/baseForm.js
CHANGED
|
@@ -115,8 +115,8 @@ class Form extends _baseComponent.default {
|
|
|
115
115
|
notifySubmitFail: (errors, values) => {
|
|
116
116
|
this.props.onSubmitFail(errors, values);
|
|
117
117
|
},
|
|
118
|
-
forceUpdate:
|
|
119
|
-
this.forceUpdate();
|
|
118
|
+
forceUpdate: callback => {
|
|
119
|
+
this.forceUpdate(callback);
|
|
120
120
|
},
|
|
121
121
|
notifyChange: formState => {
|
|
122
122
|
this.props.onChange(formState);
|
|
@@ -19,7 +19,7 @@ export interface IconButtonProps extends ButtonProps {
|
|
|
19
19
|
}
|
|
20
20
|
declare class IconButton extends PureComponent<IconButtonProps> {
|
|
21
21
|
static defaultProps: {
|
|
22
|
-
iconPosition:
|
|
22
|
+
iconPosition: "left";
|
|
23
23
|
prefixCls: string;
|
|
24
24
|
loading: boolean;
|
|
25
25
|
noHorizontalPadding: boolean;
|
|
@@ -36,7 +36,7 @@ declare class IconButton extends PureComponent<IconButtonProps> {
|
|
|
36
36
|
noHorizontalPadding: PropTypes.Requireable<string | boolean | any[]>;
|
|
37
37
|
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
38
38
|
theme: PropTypes.Requireable<string>;
|
|
39
|
-
iconPosition: PropTypes.Requireable<
|
|
39
|
+
iconPosition: PropTypes.Requireable<"left" | "right">;
|
|
40
40
|
className: PropTypes.Requireable<string>;
|
|
41
41
|
onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
|
|
42
42
|
onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import BaseComponent, { BaseProps } from '../_base/baseComponent';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
|
-
import ItemFoundation, { ItemProps, SelectedItemProps
|
|
4
|
+
import ItemFoundation, { ItemAdapter, ItemProps, SelectedItemProps } from '@douyinfe/semi-foundation/lib/cjs/navigation/itemFoundation';
|
|
5
5
|
export interface NavItemProps extends ItemProps, BaseProps {
|
|
6
6
|
children?: React.ReactNode;
|
|
7
7
|
disabled?: boolean;
|
|
@@ -63,7 +63,7 @@ export default class NavItem extends BaseComponent<NavItemProps, NavItemState> {
|
|
|
63
63
|
constructor(props: NavItemProps);
|
|
64
64
|
_invokeContextFunc(funcName: string, ...args: any[]): any;
|
|
65
65
|
get adapter(): ItemAdapter<NavItemProps, NavItemState>;
|
|
66
|
-
renderIcon(icon: React.ReactNode, pos: string, isToggleIcon?: boolean): JSX.Element;
|
|
66
|
+
renderIcon(icon: React.ReactNode, pos: string, isToggleIcon?: boolean, key?: number | string): JSX.Element;
|
|
67
67
|
setItemRef: (ref: HTMLLIElement) => void;
|
|
68
68
|
wrapTooltip: (node: React.ReactNode) => JSX.Element;
|
|
69
69
|
handleClick: (e: React.MouseEvent) => void;
|
|
@@ -16,10 +16,10 @@ var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-s
|
|
|
16
16
|
|
|
17
17
|
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
18
18
|
|
|
19
|
-
var _noop2 = _interopRequireDefault(require("lodash/noop"));
|
|
20
|
-
|
|
21
19
|
var _times2 = _interopRequireDefault(require("lodash/times"));
|
|
22
20
|
|
|
21
|
+
var _noop2 = _interopRequireDefault(require("lodash/noop"));
|
|
22
|
+
|
|
23
23
|
var _baseComponent = _interopRequireDefault(require("../_base/baseComponent"));
|
|
24
24
|
|
|
25
25
|
var _react = _interopRequireDefault(require("react"));
|
|
@@ -146,6 +146,7 @@ class NavItem extends _baseComponent.default {
|
|
|
146
146
|
var _context3;
|
|
147
147
|
|
|
148
148
|
let isToggleIcon = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
149
|
+
let key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
|
149
150
|
|
|
150
151
|
if (this.props.isSubNav) {
|
|
151
152
|
return null;
|
|
@@ -166,7 +167,8 @@ class NavItem extends _baseComponent.default {
|
|
|
166
167
|
["".concat(clsPrefix, "-icon-info")]: !isToggleIcon
|
|
167
168
|
});
|
|
168
169
|
return /*#__PURE__*/_react.default.createElement("i", {
|
|
169
|
-
className: className
|
|
170
|
+
className: className,
|
|
171
|
+
key: key
|
|
170
172
|
}, (0, _utils.isSemiIcon)(icon) ? /*#__PURE__*/_react.default.cloneElement(icon, {
|
|
171
173
|
size: icon.props.size || iconSize
|
|
172
174
|
}) : icon);
|
|
@@ -206,12 +208,12 @@ class NavItem extends _baseComponent.default {
|
|
|
206
208
|
|
|
207
209
|
if (mode === _constants.strings.MODE_VERTICAL && !limitIndent && !isCollapsed) {
|
|
208
210
|
const iconAmount = icon && !indent ? level : level - 1;
|
|
209
|
-
placeholderIcons = (0, _times2.default)(iconAmount,
|
|
211
|
+
placeholderIcons = (0, _times2.default)(iconAmount, index => this.renderIcon(null, _constants.strings.ICON_POS_RIGHT, false, index));
|
|
210
212
|
}
|
|
211
213
|
|
|
212
|
-
itemChildren = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, placeholderIcons, this.context.toggleIconPosition === _constants.strings.TOGGLE_ICON_LEFT && this.renderIcon(toggleIcon, _constants.strings.ICON_POS_RIGHT, true), icon || indent || isInSubNav ? this.renderIcon(icon, _constants.strings.ICON_POS_LEFT) : null, !(0, _isNullOrUndefined.default)(text) ? /*#__PURE__*/_react.default.createElement("span", {
|
|
214
|
+
itemChildren = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, placeholderIcons, this.context.toggleIconPosition === _constants.strings.TOGGLE_ICON_LEFT && this.renderIcon(toggleIcon, _constants.strings.ICON_POS_RIGHT, true, 'key-toggle-pos-right'), icon || indent || isInSubNav ? this.renderIcon(icon, _constants.strings.ICON_POS_LEFT, false, 'key-position-left') : null, !(0, _isNullOrUndefined.default)(text) ? /*#__PURE__*/_react.default.createElement("span", {
|
|
213
215
|
className: "".concat(_constants.cssClasses.PREFIX, "-item-text")
|
|
214
|
-
}, text) : '', this.context.toggleIconPosition === _constants.strings.TOGGLE_ICON_RIGHT && this.renderIcon(toggleIcon, _constants.strings.ICON_POS_RIGHT, true));
|
|
216
|
+
}, text) : '', this.context.toggleIconPosition === _constants.strings.TOGGLE_ICON_RIGHT && this.renderIcon(toggleIcon, _constants.strings.ICON_POS_RIGHT, true, 'key-toggle-pos-right'));
|
|
215
217
|
}
|
|
216
218
|
|
|
217
219
|
if (typeof link === 'string') {
|
|
@@ -233,7 +233,7 @@ class SubNav extends _baseComponent.default {
|
|
|
233
233
|
if (mode === _constants.strings.MODE_VERTICAL && !limitIndent && !isCollapsed) {
|
|
234
234
|
/* Different icons' amount means different indents.*/
|
|
235
235
|
const iconAmount = icon && !indent ? level : level - 1;
|
|
236
|
-
placeholderIcons = (0, _times2.default)(iconAmount, index => this.renderIcon(null, _constants.strings.ICON_POS_RIGHT, false,
|
|
236
|
+
placeholderIcons = (0, _times2.default)(iconAmount, index => this.renderIcon(null, _constants.strings.ICON_POS_RIGHT, false, false, index));
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
const titleDiv = /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -245,7 +245,7 @@ class SubNav extends _baseComponent.default {
|
|
|
245
245
|
onKeyPress: this.handleKeyPress
|
|
246
246
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
247
247
|
className: "".concat(prefixCls, "-item-inner")
|
|
248
|
-
}, placeholderIcons, this.context.toggleIconPosition === _constants.strings.TOGGLE_ICON_LEFT && this.renderIcon(toggleIconType, _constants.strings.ICON_POS_RIGHT, withTransition, true, 'key-toggle-position-left'), icon || indent || isInSubNav && mode !== _constants.strings.MODE_HORIZONTAL ? this.renderIcon(icon, _constants.strings.ICON_POS_LEFT,
|
|
248
|
+
}, placeholderIcons, this.context.toggleIconPosition === _constants.strings.TOGGLE_ICON_LEFT && this.renderIcon(toggleIconType, _constants.strings.ICON_POS_RIGHT, withTransition, true, 'key-toggle-position-left'), icon || indent || isInSubNav && mode !== _constants.strings.MODE_HORIZONTAL ? this.renderIcon(icon, _constants.strings.ICON_POS_LEFT, false, false, 'key-inSubNav-position-left') : null, /*#__PURE__*/_react.default.createElement("span", {
|
|
249
249
|
className: "".concat(prefixCls, "-item-text")
|
|
250
250
|
}, text), this.context.toggleIconPosition === _constants.strings.TOGGLE_ICON_RIGHT && this.renderIcon(toggleIconType, _constants.strings.ICON_POS_RIGHT, withTransition, true, 'key-toggle-position-right')));
|
|
251
251
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { AriaAttributes } from 'react';
|
|
2
2
|
import BaseComponent from '../_base/baseComponent';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { Item, ScrollItemAdapter } from '@douyinfe/semi-foundation/lib/cjs/scrollList/itemFoundation';
|
|
@@ -18,6 +18,7 @@ export interface ScrollItemProps<T extends Item> {
|
|
|
18
18
|
motion?: Motion;
|
|
19
19
|
style?: React.CSSProperties;
|
|
20
20
|
type?: string | number;
|
|
21
|
+
'aria-label'?: AriaAttributes['aria-label'];
|
|
21
22
|
}
|
|
22
23
|
export interface ScrollItemState {
|
|
23
24
|
prependCount: number;
|
|
@@ -299,13 +299,14 @@ class ScrollItem extends _baseComponent.default {
|
|
|
299
299
|
transform: itemTrans
|
|
300
300
|
} = item;
|
|
301
301
|
const transform = typeof itemTrans === 'function' ? itemTrans : commonTrans;
|
|
302
|
+
const selected = selectedIndex === index;
|
|
302
303
|
const cls = (0, _classnames.default)({
|
|
303
|
-
["".concat(_constants.cssClasses.PREFIX, "-item-sel")]:
|
|
304
|
+
["".concat(_constants.cssClasses.PREFIX, "-item-sel")]: selected && mode !== wheelMode,
|
|
304
305
|
["".concat(_constants.cssClasses.PREFIX, "-item-disabled")]: Boolean(item.disabled)
|
|
305
306
|
});
|
|
306
307
|
let text = '';
|
|
307
308
|
|
|
308
|
-
if (
|
|
309
|
+
if (selected) {
|
|
309
310
|
if (typeof transform === 'function') {
|
|
310
311
|
text = transform(item.value, item.text);
|
|
311
312
|
} else {
|
|
@@ -329,7 +330,10 @@ class ScrollItem extends _baseComponent.default {
|
|
|
329
330
|
_react.default.createElement("li", (0, _assign.default)({
|
|
330
331
|
key: prefixKey + index
|
|
331
332
|
}, events, {
|
|
332
|
-
className: cls
|
|
333
|
+
className: cls,
|
|
334
|
+
role: "option",
|
|
335
|
+
"aria-selected": selected,
|
|
336
|
+
"aria-disabled": item.disabled
|
|
333
337
|
}), text)
|
|
334
338
|
);
|
|
335
339
|
});
|
|
@@ -348,6 +352,9 @@ class ScrollItem extends _baseComponent.default {
|
|
|
348
352
|
className: wrapperCls,
|
|
349
353
|
ref: this._cacheWrapperNode
|
|
350
354
|
}, /*#__PURE__*/_react.default.createElement("ul", {
|
|
355
|
+
role: "listbox",
|
|
356
|
+
"aria-multiselectable": false,
|
|
357
|
+
"aria-label": this.props['aria-label'],
|
|
351
358
|
ref: this._cacheListNode
|
|
352
359
|
}, inner));
|
|
353
360
|
};
|
|
@@ -402,6 +409,9 @@ class ScrollItem extends _baseComponent.default {
|
|
|
402
409
|
ref: this._cacheWrapperNode,
|
|
403
410
|
onScroll: this.scrollToSelectItem
|
|
404
411
|
}, /*#__PURE__*/_react.default.createElement("ul", {
|
|
412
|
+
role: "listbox",
|
|
413
|
+
"aria-label": this.props['aria-label'],
|
|
414
|
+
"aria-multiselectable": false,
|
|
405
415
|
ref: this._cacheListNode,
|
|
406
416
|
onClick: this.clickToSelectItem
|
|
407
417
|
}, prependList, inner, appendList)));
|
|
@@ -43,6 +43,8 @@ export interface BodyState {
|
|
|
43
43
|
}
|
|
44
44
|
export interface BodyContext {
|
|
45
45
|
getVirtualizedListRef: GetVirtualizedListRef;
|
|
46
|
+
flattenedColumns: ColumnProps[];
|
|
47
|
+
getCellWidths: (flattenedColumns: ColumnProps[]) => number[];
|
|
46
48
|
}
|
|
47
49
|
declare const _default: React.ForwardRefExoticComponent<Omit<BodyProps, "forwardedRef"> & React.RefAttributes<HTMLDivElement>>;
|
|
48
50
|
export default _default;
|