@douyinfe/semi-ui 2.5.0 → 2.6.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/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 +21 -8
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +232 -92
- 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/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/scrollList/scrollItem.d.ts +2 -1
- package/lib/cjs/scrollList/scrollItem.js +13 -3
- package/lib/es/_base/base.css +5 -5
- 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/scrollList/scrollItem.d.ts +2 -1
- package/lib/es/scrollList/scrollItem.js +13 -3
- 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/_story/Perf/Virtualized/index.jsx +6 -0
- package/table/_story/v2/FixedHeaderMerge/index.jsx +1 -1
- package/table/_story/v2/defaultFilteredValue.tsx +0 -9
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);
|
|
@@ -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)));
|
package/lib/es/_base/base.css
CHANGED
|
@@ -19,7 +19,7 @@ body .semi-always-light {
|
|
|
19
19
|
--semi-blue-2: 152,205,253;
|
|
20
20
|
--semi-blue-3: 101,178,252;
|
|
21
21
|
--semi-blue-4: 50,149,251;
|
|
22
|
-
--semi-blue-5: 0,
|
|
22
|
+
--semi-blue-5: 0,100,250;
|
|
23
23
|
--semi-blue-6: 0,98,214;
|
|
24
24
|
--semi-blue-7: 0,79,179;
|
|
25
25
|
--semi-blue-8: 0,61,143;
|
|
@@ -410,7 +410,7 @@ body, body[theme-mode=dark] .semi-always-light {
|
|
|
410
410
|
--semi-color-bg-4: rgba(var(--semi-white), 1);
|
|
411
411
|
--semi-color-text-0: rgba(var(--semi-grey-9), 1);
|
|
412
412
|
--semi-color-text-1: rgba(var(--semi-grey-9), .8);
|
|
413
|
-
--semi-color-text-2: rgba(var(--semi-grey-9), .
|
|
413
|
+
--semi-color-text-2: rgba(var(--semi-grey-9), .62);
|
|
414
414
|
--semi-color-text-3: rgba(var(--semi-grey-9), .35);
|
|
415
415
|
--semi-shadow-elevated: 0 0 1px rgba(0, 0, 0, .3), 0 4px 14px rgba(0, 0, 0, .1);
|
|
416
416
|
--semi-border-radius-extra-small: 3px;
|
|
@@ -487,9 +487,9 @@ body[theme-mode=dark], body .semi-always-dark {
|
|
|
487
487
|
--semi-color-nav-bg: rgba(35, 36, 41, 1);
|
|
488
488
|
--semi-shadow-elevated: inset 0 0 0 1px rgba(255, 255, 255, .1), 0 4px 14px rgba(0, 0, 0, .25);
|
|
489
489
|
--semi-color-overlay-bg: rgba(22, 22, 26, .6);
|
|
490
|
-
--semi-color-fill-0: rgba(var(--semi-white), .
|
|
491
|
-
--semi-color-fill-1: rgba(var(--semi-white), .
|
|
492
|
-
--semi-color-fill-2: rgba(var(--semi-white), .
|
|
490
|
+
--semi-color-fill-0: rgba(var(--semi-white), .12);
|
|
491
|
+
--semi-color-fill-1: rgba(var(--semi-white), .16);
|
|
492
|
+
--semi-color-fill-2: rgba(var(--semi-white), .20);
|
|
493
493
|
--semi-color-border: rgba(var(--semi-white), .08);
|
|
494
494
|
--semi-color-shadow: rgba(var(--semi-black), .04);
|
|
495
495
|
--semi-color-bg-0: rgba(22, 22, 26, 1);
|
|
@@ -6,6 +6,8 @@ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
|
|
6
6
|
import _bindInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/bind";
|
|
7
7
|
import _Map from "@babel/runtime-corejs3/core-js-stable/map";
|
|
8
8
|
import _Object$assign from "@babel/runtime-corejs3/core-js-stable/object/assign";
|
|
9
|
+
|
|
10
|
+
/* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role */
|
|
9
11
|
import React from 'react';
|
|
10
12
|
import ReactDOM from 'react-dom';
|
|
11
13
|
import cls from 'classnames';
|
|
@@ -62,11 +64,13 @@ export default class monthCalendar extends BaseComponent {
|
|
|
62
64
|
} = this.props;
|
|
63
65
|
this.monthlyData = this.foundation.getMonthlyData(displayValue, dateFnsLocale);
|
|
64
66
|
return /*#__PURE__*/React.createElement("div", {
|
|
65
|
-
className: "".concat(prefixCls, "-header")
|
|
67
|
+
className: "".concat(prefixCls, "-header"),
|
|
68
|
+
role: "presentation"
|
|
66
69
|
}, /*#__PURE__*/React.createElement("div", {
|
|
67
|
-
role: "
|
|
70
|
+
role: "presentation",
|
|
68
71
|
className: "".concat(prefixCls, "-grid")
|
|
69
72
|
}, /*#__PURE__*/React.createElement("ul", {
|
|
73
|
+
role: "row",
|
|
70
74
|
className: "".concat(prefixCls, "-grid-row")
|
|
71
75
|
}, _mapInstanceProperty(_context = this.monthlyData[0]).call(_context, day => {
|
|
72
76
|
const {
|
|
@@ -76,6 +80,8 @@ export default class monthCalendar extends BaseComponent {
|
|
|
76
80
|
["".concat(cssClasses.PREFIX, "-weekend")]: markWeekend && day.isWeekend
|
|
77
81
|
});
|
|
78
82
|
return /*#__PURE__*/React.createElement("li", {
|
|
83
|
+
role: "columnheader",
|
|
84
|
+
"aria-label": weekday,
|
|
79
85
|
key: "".concat(weekday, "-monthheader"),
|
|
80
86
|
className: listCls
|
|
81
87
|
}, /*#__PURE__*/React.createElement("span", null, weekday));
|
|
@@ -158,7 +164,10 @@ export default class monthCalendar extends BaseComponent {
|
|
|
158
164
|
const pos = showCard && showCard[key] ? showCard[key][1] : 'leftTopOver';
|
|
159
165
|
const text = /*#__PURE__*/React.createElement(LocaleConsumer, {
|
|
160
166
|
componentName: "Calendar"
|
|
161
|
-
}, locale =>
|
|
167
|
+
}, locale =>
|
|
168
|
+
/*#__PURE__*/
|
|
169
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
170
|
+
React.createElement("div", {
|
|
162
171
|
className: "".concat(cardCls, "-wrapper"),
|
|
163
172
|
style: {
|
|
164
173
|
bottom: 0
|
|
@@ -226,11 +235,12 @@ export default class monthCalendar extends BaseComponent {
|
|
|
226
235
|
day
|
|
227
236
|
} = events;
|
|
228
237
|
return /*#__PURE__*/React.createElement("div", {
|
|
229
|
-
role: "
|
|
238
|
+
role: "presentation",
|
|
230
239
|
className: "".concat(prefixCls, "-weekrow"),
|
|
231
240
|
ref: _this.cellDom,
|
|
232
241
|
key: "".concat(index, "-weekrow")
|
|
233
242
|
}, /*#__PURE__*/React.createElement("ul", {
|
|
243
|
+
role: "row",
|
|
234
244
|
className: "".concat(prefixCls, "-skeleton")
|
|
235
245
|
}, _mapInstanceProperty(weekDay).call(weekDay, each => {
|
|
236
246
|
const {
|
|
@@ -249,6 +259,9 @@ export default class monthCalendar extends BaseComponent {
|
|
|
249
259
|
});
|
|
250
260
|
const shouldRenderCollapsed = Boolean(day && day[ind] && day[ind].length > itemLimit);
|
|
251
261
|
const inner = /*#__PURE__*/React.createElement("li", {
|
|
262
|
+
role: "gridcell",
|
|
263
|
+
"aria-label": date.toLocaleDateString(),
|
|
264
|
+
"aria-current": isToday ? "date" : false,
|
|
252
265
|
key: "".concat(date, "-weeksk"),
|
|
253
266
|
className: listCls,
|
|
254
267
|
onClick: e => _this.handleClick(e, [date])
|
|
@@ -271,9 +284,10 @@ export default class monthCalendar extends BaseComponent {
|
|
|
271
284
|
parsedEvents
|
|
272
285
|
} = this.state;
|
|
273
286
|
return /*#__PURE__*/React.createElement("div", {
|
|
274
|
-
role: "
|
|
287
|
+
role: "presentation",
|
|
275
288
|
className: "".concat(prefixCls, "-week")
|
|
276
289
|
}, /*#__PURE__*/React.createElement("ul", {
|
|
290
|
+
role: "presentation",
|
|
277
291
|
className: "".concat(prefixCls, "-grid-col")
|
|
278
292
|
}, _mapInstanceProperty(_context3 = _Object$keys(this.monthlyData)).call(_context3, weekInd => this.renderWeekRow(weekInd, this.monthlyData[weekInd], parsedEvents[weekInd]))));
|
|
279
293
|
};
|
|
@@ -404,12 +418,15 @@ export default class monthCalendar extends BaseComponent {
|
|
|
404
418
|
return /*#__PURE__*/React.createElement(LocaleConsumer, {
|
|
405
419
|
componentName: "Calendar"
|
|
406
420
|
}, (locale, localeCode, dateFnsLocale) => /*#__PURE__*/React.createElement("div", {
|
|
421
|
+
role: "grid",
|
|
407
422
|
className: monthCls,
|
|
408
423
|
key: this.state.itemLimit,
|
|
409
424
|
style: monthStyle
|
|
410
425
|
}, /*#__PURE__*/React.createElement("div", {
|
|
426
|
+
role: "presentation",
|
|
411
427
|
className: "".concat(prefixCls, "-sticky-top")
|
|
412
428
|
}, header, this.renderHeader(dateFnsLocale)), /*#__PURE__*/React.createElement("div", {
|
|
429
|
+
role: "presentation",
|
|
413
430
|
className: "".concat(prefixCls, "-grid-wrapper")
|
|
414
431
|
}, this.renderMonthGrid())));
|
|
415
432
|
}
|