@douyinfe/semi-ui 2.4.1 → 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/__test__/cascader.test.js +24 -0
- package/cascader/_story/cascader.stories.js +73 -0
- package/cascader/index.tsx +26 -5
- package/cascader/item.tsx +25 -5
- package/datePicker/_story/v2/FixInputRangeFocus.jsx +25 -0
- package/datePicker/_story/v2/index.js +2 -1
- package/datePicker/dateInput.tsx +8 -5
- package/datePicker/datePicker.tsx +9 -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 +71 -35
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +696 -263
- 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/autoComplete/index.d.ts +1 -1
- package/lib/cjs/calendar/monthCalendar.js +21 -5
- package/lib/cjs/cascader/index.d.ts +9 -2
- package/lib/cjs/cascader/index.js +20 -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 +19 -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/dropdown/index.d.ts +1 -1
- package/lib/cjs/form/baseForm.d.ts +1 -1
- package/lib/cjs/form/baseForm.js +2 -2
- package/lib/cjs/form/field.d.ts +1 -1
- 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/cjs/select/index.d.ts +3 -3
- package/lib/cjs/select/index.js +32 -28
- package/lib/cjs/select/option.js +2 -2
- package/lib/cjs/select/virtualRow.js +2 -2
- package/lib/cjs/table/Table.d.ts +1 -1
- package/lib/cjs/table/Table.js +8 -2
- package/lib/cjs/table/interface.d.ts +1 -0
- package/lib/cjs/tabs/interface.d.ts +1 -1
- package/lib/cjs/tooltip/index.d.ts +1 -1
- package/lib/cjs/tooltip/index.js +6 -2
- package/lib/cjs/tree/index.d.ts +2 -0
- package/lib/cjs/tree/index.js +15 -8
- package/lib/cjs/treeSelect/index.d.ts +2 -0
- package/lib/cjs/treeSelect/index.js +64 -27
- package/lib/cjs/upload/fileCard.js +31 -22
- package/lib/cjs/upload/index.d.ts +6 -0
- package/lib/cjs/upload/index.js +15 -8
- package/lib/cjs/upload/interface.d.ts +8 -6
- package/lib/es/_base/base.css +5 -5
- package/lib/es/autoComplete/index.d.ts +1 -1
- package/lib/es/calendar/monthCalendar.js +22 -5
- package/lib/es/cascader/index.d.ts +9 -2
- package/lib/es/cascader/index.js +19 -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 +19 -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/dropdown/index.d.ts +1 -1
- package/lib/es/form/baseForm.d.ts +1 -1
- package/lib/es/form/baseForm.js +2 -2
- package/lib/es/form/field.d.ts +1 -1
- 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/lib/es/select/index.d.ts +3 -3
- package/lib/es/select/index.js +30 -26
- package/lib/es/select/option.js +2 -2
- package/lib/es/select/virtualRow.js +2 -2
- package/lib/es/table/Table.d.ts +1 -1
- package/lib/es/table/Table.js +10 -2
- package/lib/es/table/interface.d.ts +1 -0
- package/lib/es/tabs/interface.d.ts +1 -1
- package/lib/es/tooltip/index.d.ts +1 -1
- package/lib/es/tooltip/index.js +6 -2
- package/lib/es/tree/index.d.ts +2 -0
- package/lib/es/tree/index.js +15 -8
- package/lib/es/treeSelect/index.d.ts +2 -0
- package/lib/es/treeSelect/index.js +64 -27
- package/lib/es/upload/fileCard.js +31 -24
- package/lib/es/upload/index.d.ts +6 -0
- package/lib/es/upload/index.js +14 -8
- package/lib/es/upload/interface.d.ts +8 -6
- 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/select/index.tsx +18 -19
- package/select/option.tsx +2 -2
- package/select/virtualRow.tsx +2 -2
- package/table/Table.tsx +7 -2
- package/table/_story/Perf/Virtualized/index.jsx +6 -0
- package/table/_story/table.stories.js +1 -2
- package/table/_story/v2/FixedHeaderMerge/index.jsx +98 -0
- package/table/_story/v2/FixedResizable/index.jsx +114 -0
- package/table/_story/v2/defaultFilteredValue.tsx +114 -0
- package/table/_story/v2/index.js +5 -0
- package/table/interface.ts +1 -0
- package/tabs/interface.ts +1 -1
- package/tooltip/__test__/tooltip.test.js +48 -4
- package/tooltip/_story/tooltip.stories.js +83 -1
- package/tooltip/index.tsx +4 -4
- package/tree/__test__/treeMultiple.test.js +94 -0
- package/tree/_story/tree.stories.js +169 -0
- package/tree/index.tsx +12 -5
- package/treeSelect/__test__/treeMultiple.test.js +94 -0
- package/treeSelect/_story/treeSelect.stories.js +242 -0
- package/treeSelect/index.tsx +72 -40
- package/upload/_story/upload.stories.js +22 -6
- package/upload/fileCard.tsx +23 -23
- package/upload/index.tsx +15 -6
- package/upload/interface.ts +7 -5
|
@@ -30,7 +30,7 @@ var _semiIcons = require("@douyinfe/semi-icons");
|
|
|
30
30
|
|
|
31
31
|
var _localeConsumer = _interopRequireDefault(require("../locale/localeConsumer"));
|
|
32
32
|
|
|
33
|
-
var _index = _interopRequireDefault(require("../
|
|
33
|
+
var _index = _interopRequireDefault(require("../button/index"));
|
|
34
34
|
|
|
35
35
|
var _index2 = _interopRequireDefault(require("../progress/index"));
|
|
36
36
|
|
|
@@ -200,6 +200,7 @@ class FileCard extends _react.PureComponent {
|
|
|
200
200
|
onPreviewClick,
|
|
201
201
|
showPicInfo,
|
|
202
202
|
renderPicInfo,
|
|
203
|
+
renderPicPreviewIcon,
|
|
203
204
|
renderThumbnail,
|
|
204
205
|
name,
|
|
205
206
|
index
|
|
@@ -207,6 +208,7 @@ class FileCard extends _react.PureComponent {
|
|
|
207
208
|
const showProgress = status === _constants.strings.FILE_STATUS_UPLOADING && percent !== 100;
|
|
208
209
|
const showRetry = status === _constants.strings.FILE_STATUS_UPLOAD_FAIL && this.props.showRetry;
|
|
209
210
|
const showReplace = status === _constants.strings.FILE_STATUS_SUCCESS && this.props.showReplace;
|
|
211
|
+
const showPreview = status === _constants.strings.FILE_STATUS_SUCCESS && !this.props.showReplace;
|
|
210
212
|
const filePicCardCls = (0, _classnames.default)({
|
|
211
213
|
["".concat(prefixCls, "-picture-file-card")]: true,
|
|
212
214
|
["".concat(prefixCls, "-picture-file-card-disabled")]: disabled,
|
|
@@ -214,7 +216,6 @@ class FileCard extends _react.PureComponent {
|
|
|
214
216
|
["".concat(prefixCls, "-picture-file-card-error")]: status === _constants.strings.FILE_STATUS_UPLOAD_FAIL,
|
|
215
217
|
["".concat(prefixCls, "-picture-file-card-uploading")]: showProgress
|
|
216
218
|
});
|
|
217
|
-
const closeCls = "".concat(prefixCls, "-picture-file-card-close");
|
|
218
219
|
|
|
219
220
|
const retry = /*#__PURE__*/_react.default.createElement("div", {
|
|
220
221
|
role: "button",
|
|
@@ -240,6 +241,19 @@ class FileCard extends _react.PureComponent {
|
|
|
240
241
|
className: "".concat(prefixCls, "-picture-file-card-icon-replace")
|
|
241
242
|
})));
|
|
242
243
|
|
|
244
|
+
const preview = /*#__PURE__*/_react.default.createElement("div", {
|
|
245
|
+
className: "".concat(prefixCls, "-picture-file-card-preview")
|
|
246
|
+
}, typeof renderPicPreviewIcon === 'function' ? renderPicPreviewIcon(this.props) : null);
|
|
247
|
+
|
|
248
|
+
const close = /*#__PURE__*/_react.default.createElement("div", {
|
|
249
|
+
role: "button",
|
|
250
|
+
tabIndex: 0,
|
|
251
|
+
className: "".concat(prefixCls, "-picture-file-card-close"),
|
|
252
|
+
onClick: e => this.onRemove(e)
|
|
253
|
+
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClear, {
|
|
254
|
+
className: "".concat(prefixCls, "-picture-file-card-icon-close")
|
|
255
|
+
}));
|
|
256
|
+
|
|
243
257
|
const picInfo = typeof renderPicInfo === 'function' ? renderPicInfo(this.props) : /*#__PURE__*/_react.default.createElement("div", {
|
|
244
258
|
className: "".concat(prefixCls, "-picture-file-card-pic-info")
|
|
245
259
|
}, index + 1);
|
|
@@ -258,14 +272,7 @@ class FileCard extends _react.PureComponent {
|
|
|
258
272
|
size: "small",
|
|
259
273
|
orbitStroke: '#FFF',
|
|
260
274
|
"aria-label": "uploading file progress"
|
|
261
|
-
}) : null, showRetry ? retry : null, showReplace && replace, showPicInfo && picInfo, !disabled &&
|
|
262
|
-
className: closeCls,
|
|
263
|
-
onClick: e => this.onRemove(e)
|
|
264
|
-
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, {
|
|
265
|
-
tabIndex: 0,
|
|
266
|
-
role: "button",
|
|
267
|
-
size: "extra-small"
|
|
268
|
-
})), this.renderPicValidateMsg());
|
|
275
|
+
}) : null, showRetry ? retry : null, showReplace && replace, showPreview && preview, showPicInfo && picInfo, !disabled && close, this.renderPicValidateMsg());
|
|
269
276
|
}
|
|
270
277
|
|
|
271
278
|
renderFile(locale) {
|
|
@@ -280,7 +287,8 @@ class FileCard extends _react.PureComponent {
|
|
|
280
287
|
previewFile,
|
|
281
288
|
status,
|
|
282
289
|
style,
|
|
283
|
-
onPreviewClick
|
|
290
|
+
onPreviewClick,
|
|
291
|
+
renderFileOperation
|
|
284
292
|
} = this.props;
|
|
285
293
|
const fileCardCls = (0, _classnames.default)({
|
|
286
294
|
["".concat(prefixCls, "-file-card")]: true,
|
|
@@ -310,6 +318,14 @@ class FileCard extends _react.PureComponent {
|
|
|
310
318
|
previewContent = previewFile(this.props);
|
|
311
319
|
}
|
|
312
320
|
|
|
321
|
+
const operation = typeof renderFileOperation === 'function' ? renderFileOperation(this.props) : /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
322
|
+
onClick: e => this.onRemove(e),
|
|
323
|
+
type: "tertiary",
|
|
324
|
+
icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, null),
|
|
325
|
+
theme: "borderless",
|
|
326
|
+
size: "small",
|
|
327
|
+
className: closeCls
|
|
328
|
+
});
|
|
313
329
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
314
330
|
role: "listitem",
|
|
315
331
|
className: fileCardCls,
|
|
@@ -352,29 +368,22 @@ class FileCard extends _react.PureComponent {
|
|
|
352
368
|
tabIndex: 0,
|
|
353
369
|
className: "".concat(infoCls, "-retry"),
|
|
354
370
|
onClick: e => this.onRetry(e)
|
|
355
|
-
}, locale.retry) : null)),
|
|
356
|
-
onClick: e => this.onRemove(e),
|
|
357
|
-
type: "tertiary",
|
|
358
|
-
icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, null),
|
|
359
|
-
theme: "borderless",
|
|
360
|
-
size: "small",
|
|
361
|
-
className: closeCls
|
|
362
|
-
}));
|
|
371
|
+
}, locale.retry) : null)), operation);
|
|
363
372
|
}
|
|
364
373
|
|
|
365
374
|
onRemove(e) {
|
|
366
375
|
e.stopPropagation();
|
|
367
|
-
this.props.onRemove(
|
|
376
|
+
this.props.onRemove();
|
|
368
377
|
}
|
|
369
378
|
|
|
370
379
|
onReplace(e) {
|
|
371
380
|
e.stopPropagation();
|
|
372
|
-
this.props.onReplace(
|
|
381
|
+
this.props.onReplace();
|
|
373
382
|
}
|
|
374
383
|
|
|
375
384
|
onRetry(e) {
|
|
376
385
|
e.stopPropagation();
|
|
377
|
-
this.props.onRetry(
|
|
386
|
+
this.props.onRetry();
|
|
378
387
|
}
|
|
379
388
|
|
|
380
389
|
render() {
|
|
@@ -29,6 +29,7 @@ export interface UploadProps {
|
|
|
29
29
|
fileList?: Array<FileItem>;
|
|
30
30
|
fileName?: string;
|
|
31
31
|
headers?: Record<string, any> | ((file: File) => Record<string, string>);
|
|
32
|
+
hotSpotLocation?: 'start' | 'end';
|
|
32
33
|
itemStyle?: CSSProperties;
|
|
33
34
|
limit?: number;
|
|
34
35
|
listType?: UploadListType;
|
|
@@ -56,6 +57,8 @@ export interface UploadProps {
|
|
|
56
57
|
renderFileItem?: (renderFileItemProps: RenderFileItemProps) => ReactNode;
|
|
57
58
|
renderPicInfo?: (renderFileItemProps: RenderFileItemProps) => ReactNode;
|
|
58
59
|
renderThumbnail?: (renderFileItemProps: RenderFileItemProps) => ReactNode;
|
|
60
|
+
renderPicPreviewIcon?: (renderFileItemProps: RenderFileItemProps) => ReactNode;
|
|
61
|
+
renderFileOperation?: (fileItem: RenderFileItemProps) => ReactNode;
|
|
59
62
|
showClear?: boolean;
|
|
60
63
|
showPicInfo?: boolean;
|
|
61
64
|
showReplace?: boolean;
|
|
@@ -99,6 +102,7 @@ declare class Upload extends BaseComponent<UploadProps, UploadState> {
|
|
|
99
102
|
fileList: PropTypes.Requireable<any[]>;
|
|
100
103
|
fileName: PropTypes.Requireable<string>;
|
|
101
104
|
headers: PropTypes.Requireable<object>;
|
|
105
|
+
hotSpotLocation: PropTypes.Requireable<string>;
|
|
102
106
|
itemStyle: PropTypes.Requireable<object>;
|
|
103
107
|
limit: PropTypes.Requireable<number>;
|
|
104
108
|
listType: PropTypes.Requireable<"picture" | "list">;
|
|
@@ -124,6 +128,8 @@ declare class Upload extends BaseComponent<UploadProps, UploadState> {
|
|
|
124
128
|
prompt: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
125
129
|
promptPosition: PropTypes.Requireable<"left" | "right" | "bottom">;
|
|
126
130
|
renderFileItem: PropTypes.Requireable<(...args: any[]) => any>;
|
|
131
|
+
renderPicPreviewIcon: PropTypes.Requireable<(...args: any[]) => any>;
|
|
132
|
+
renderFileOperation: PropTypes.Requireable<(...args: any[]) => any>;
|
|
127
133
|
renderPicInfo: PropTypes.Requireable<(...args: any[]) => any>;
|
|
128
134
|
renderThumbnail: PropTypes.Requireable<(...args: any[]) => any>;
|
|
129
135
|
showClear: PropTypes.Requireable<boolean>;
|
package/lib/cjs/upload/index.js
CHANGED
|
@@ -16,6 +16,8 @@ var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-sta
|
|
|
16
16
|
|
|
17
17
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
18
18
|
|
|
19
|
+
var _pick2 = _interopRequireDefault(require("lodash/pick"));
|
|
20
|
+
|
|
19
21
|
var _noop2 = _interopRequireDefault(require("lodash/noop"));
|
|
20
22
|
|
|
21
23
|
var _react = _interopRequireDefault(require("react"));
|
|
@@ -136,14 +138,14 @@ class Upload extends _baseComponent.default {
|
|
|
136
138
|
previewFile,
|
|
137
139
|
listType,
|
|
138
140
|
itemStyle,
|
|
139
|
-
showRetry,
|
|
140
141
|
showPicInfo,
|
|
141
142
|
renderPicInfo,
|
|
143
|
+
renderPicPreviewIcon,
|
|
144
|
+
renderFileOperation,
|
|
142
145
|
renderFileItem,
|
|
143
146
|
renderThumbnail,
|
|
144
147
|
disabled,
|
|
145
|
-
onPreviewClick
|
|
146
|
-
showReplace
|
|
148
|
+
onPreviewClick
|
|
147
149
|
} = this.props;
|
|
148
150
|
|
|
149
151
|
const onRemove = () => this.remove(file);
|
|
@@ -156,20 +158,20 @@ class Upload extends _baseComponent.default {
|
|
|
156
158
|
this.replace(index);
|
|
157
159
|
};
|
|
158
160
|
|
|
159
|
-
const fileCardProps = (0, _assign.default)((0, _assign.default)({}, file), {
|
|
161
|
+
const fileCardProps = (0, _assign.default)((0, _assign.default)((0, _assign.default)({}, (0, _pick2.default)(this.props, ['showRetry', 'showReplace', ''])), file), {
|
|
160
162
|
previewFile,
|
|
161
163
|
listType,
|
|
162
164
|
onRemove,
|
|
163
165
|
onRetry,
|
|
164
166
|
index,
|
|
165
167
|
key: uid || (0, _concat.default)(_context = "".concat(name)).call(_context, index),
|
|
166
|
-
showRetry: typeof file.showRetry !== 'undefined' ? file.showRetry : showRetry,
|
|
167
168
|
style: itemStyle,
|
|
168
169
|
disabled,
|
|
169
170
|
showPicInfo,
|
|
170
171
|
renderPicInfo,
|
|
172
|
+
renderPicPreviewIcon,
|
|
173
|
+
renderFileOperation,
|
|
171
174
|
renderThumbnail,
|
|
172
|
-
showReplace: typeof file.showReplace !== 'undefined' ? file.showReplace : showReplace,
|
|
173
175
|
onReplace,
|
|
174
176
|
onPreviewClick: typeof onPreviewClick !== 'undefined' ? () => this.foundation.handlePreviewClick(file) : undefined
|
|
175
177
|
});
|
|
@@ -211,7 +213,8 @@ class Upload extends _baseComponent.default {
|
|
|
211
213
|
limit,
|
|
212
214
|
disabled,
|
|
213
215
|
children,
|
|
214
|
-
draggable
|
|
216
|
+
draggable,
|
|
217
|
+
hotSpotLocation
|
|
215
218
|
} = this.props;
|
|
216
219
|
const {
|
|
217
220
|
fileList: stateFileList,
|
|
@@ -269,7 +272,7 @@ class Upload extends _baseComponent.default {
|
|
|
269
272
|
className: mainCls,
|
|
270
273
|
role: "list",
|
|
271
274
|
"aria-label": "picture list"
|
|
272
|
-
}, (0, _map.default)(fileList).call(fileList, (file, index) => this.renderFile(file, index, locale)), showAddTriggerInList ? addContent : null)));
|
|
275
|
+
}, showAddTriggerInList && hotSpotLocation === 'start' ? addContent : null, (0, _map.default)(fileList).call(fileList, (file, index) => this.renderFile(file, index, locale)), showAddTriggerInList && hotSpotLocation === 'end' ? addContent : null)));
|
|
273
276
|
};
|
|
274
277
|
|
|
275
278
|
this.renderFileListDefault = () => {
|
|
@@ -609,6 +612,7 @@ Upload.propTypes = {
|
|
|
609
612
|
fileList: _propTypes.default.array,
|
|
610
613
|
fileName: _propTypes.default.string,
|
|
611
614
|
headers: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func]),
|
|
615
|
+
hotSpotLocation: _propTypes.default.oneOf(['start', 'end']),
|
|
612
616
|
itemStyle: _propTypes.default.object,
|
|
613
617
|
limit: _propTypes.default.number,
|
|
614
618
|
listType: _propTypes.default.oneOf(_constants.strings.LIST_TYPE),
|
|
@@ -634,6 +638,8 @@ Upload.propTypes = {
|
|
|
634
638
|
prompt: _propTypes.default.node,
|
|
635
639
|
promptPosition: _propTypes.default.oneOf(_constants.strings.PROMPT_POSITION),
|
|
636
640
|
renderFileItem: _propTypes.default.func,
|
|
641
|
+
renderPicPreviewIcon: _propTypes.default.func,
|
|
642
|
+
renderFileOperation: _propTypes.default.func,
|
|
637
643
|
renderPicInfo: _propTypes.default.func,
|
|
638
644
|
renderThumbnail: _propTypes.default.func,
|
|
639
645
|
showClear: _propTypes.default.bool,
|
|
@@ -653,6 +659,7 @@ Upload.defaultProps = {
|
|
|
653
659
|
defaultFileList: [],
|
|
654
660
|
disabled: false,
|
|
655
661
|
listType: 'list',
|
|
662
|
+
hotSpotLocation: 'end',
|
|
656
663
|
multiple: false,
|
|
657
664
|
onAcceptInvalid: _noop2.default,
|
|
658
665
|
onChange: _noop2.default,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactNode, CSSProperties
|
|
1
|
+
import { ReactNode, CSSProperties } from 'react';
|
|
2
2
|
import { BaseFileItem } from '@douyinfe/semi-foundation/lib/cjs/upload/foundation';
|
|
3
3
|
import { strings } from '@douyinfe/semi-foundation/lib/cjs/upload/constants';
|
|
4
4
|
import { ArrayElement } from '../_base/base';
|
|
@@ -45,14 +45,16 @@ export interface RenderFileItemProps extends FileItem {
|
|
|
45
45
|
index?: number;
|
|
46
46
|
previewFile?: (fileItem: RenderFileItemProps) => ReactNode;
|
|
47
47
|
listType: UploadListType;
|
|
48
|
-
onRemove: (
|
|
49
|
-
onRetry: (
|
|
50
|
-
onReplace: (
|
|
48
|
+
onRemove: () => void;
|
|
49
|
+
onRetry: () => void;
|
|
50
|
+
onReplace: () => void;
|
|
51
51
|
key: string;
|
|
52
52
|
showPicInfo?: boolean;
|
|
53
53
|
renderPicInfo?: (renderFileItemProps: RenderFileItemProps) => ReactNode;
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
renderPicPreviewIcon?: (renderFileItemProps: RenderFileItemProps) => ReactNode;
|
|
55
|
+
renderFileOperation?: (fileItem: RenderFileItemProps) => ReactNode;
|
|
56
|
+
showRetry?: boolean;
|
|
57
|
+
showReplace?: boolean;
|
|
56
58
|
style?: CSSProperties;
|
|
57
59
|
disabled: boolean;
|
|
58
60
|
onPreviewClick: () => void;
|
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);
|
|
@@ -113,7 +113,7 @@ declare class AutoComplete<T extends AutoCompleteItems> extends BaseComponent<Au
|
|
|
113
113
|
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
114
114
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
115
115
|
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
116
|
-
position: PropTypes.Requireable<"top" | "topLeft" | "topRight" | "left" | "leftTop" | "leftBottom" | "right" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">;
|
|
116
|
+
position: PropTypes.Requireable<"top" | "topLeft" | "topRight" | "left" | "leftTop" | "leftBottom" | "right" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver">;
|
|
117
117
|
placeholder: PropTypes.Requireable<string>;
|
|
118
118
|
prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
119
119
|
onChangeWithObject: PropTypes.Requireable<boolean>;
|
|
@@ -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
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { ReactNode, CSSProperties, MouseEvent } from 'react';
|
|
1
|
+
import React, { ReactNode, CSSProperties, MouseEvent, KeyboardEvent } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { BasicCascaderInnerData, BasicCascaderProps, BasicTriggerRenderProps, BasicScrollPanelProps, CascaderAdapter, CascaderType } from '@douyinfe/semi-foundation/lib/es/cascader/foundation';
|
|
4
4
|
import '@douyinfe/semi-foundation/lib/es/cascader/cascader.css';
|
|
@@ -24,6 +24,7 @@ export interface CascaderProps extends BasicCascaderProps {
|
|
|
24
24
|
'aria-invalid'?: React.AriaAttributes['aria-invalid'];
|
|
25
25
|
'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
|
|
26
26
|
'aria-required'?: React.AriaAttributes['aria-required'];
|
|
27
|
+
'aria-label'?: React.AriaAttributes['aria-label'];
|
|
27
28
|
arrowIcon?: ReactNode;
|
|
28
29
|
defaultValue?: Value;
|
|
29
30
|
dropdownStyle?: CSSProperties;
|
|
@@ -65,6 +66,7 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
|
|
|
65
66
|
'aria-errormessage': PropTypes.Requireable<string>;
|
|
66
67
|
'aria-describedby': PropTypes.Requireable<string>;
|
|
67
68
|
'aria-required': PropTypes.Requireable<boolean>;
|
|
69
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
68
70
|
arrowIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
69
71
|
changeOnSelect: PropTypes.Requireable<boolean>;
|
|
70
72
|
defaultValue: PropTypes.Requireable<string | any[]>;
|
|
@@ -158,6 +160,7 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
|
|
|
158
160
|
onDropdownVisibleChange: (...args: any[]) => void;
|
|
159
161
|
onListScroll: (...args: any[]) => void;
|
|
160
162
|
enableLeafClick: boolean;
|
|
163
|
+
'aria-label': string;
|
|
161
164
|
};
|
|
162
165
|
options: any;
|
|
163
166
|
isEmpty: boolean;
|
|
@@ -177,7 +180,7 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
|
|
|
177
180
|
renderTagItem: (value: string | Array<string>, idx: number, type: string) => React.ReactNode;
|
|
178
181
|
renderTagInput(): JSX.Element;
|
|
179
182
|
renderInput(): JSX.Element;
|
|
180
|
-
handleItemClick: (e: MouseEvent, item: Entity | Data) => void;
|
|
183
|
+
handleItemClick: (e: MouseEvent | KeyboardEvent, item: Entity | Data) => void;
|
|
181
184
|
handleItemHover: (e: MouseEvent, item: Entity) => void;
|
|
182
185
|
onItemCheckboxClick: (item: Entity | Data) => void;
|
|
183
186
|
handleListScroll: (e: React.UIEvent<HTMLUListElement, UIEvent>, ind: number) => void;
|
|
@@ -191,6 +194,10 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
|
|
|
191
194
|
handleMouseOver: () => void;
|
|
192
195
|
handleMouseLeave: () => void;
|
|
193
196
|
handleClear: (e: MouseEvent) => void;
|
|
197
|
+
/**
|
|
198
|
+
* A11y: simulate clear button click
|
|
199
|
+
*/
|
|
200
|
+
handleClearEnterPress: (e: KeyboardEvent) => void;
|
|
194
201
|
showClearBtn: () => boolean;
|
|
195
202
|
renderClearBtn: () => JSX.Element;
|
|
196
203
|
renderArrow: () => JSX.Element;
|
package/lib/es/cascader/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import _isFunction from "lodash/isFunction";
|
|
|
5
5
|
import _isEmpty from "lodash/isEmpty";
|
|
6
6
|
import _isString from "lodash/isString";
|
|
7
7
|
import _isEqual from "lodash/isEqual";
|
|
8
|
+
import _isSet from "lodash/isSet";
|
|
8
9
|
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
|
9
10
|
import _Object$assign from "@babel/runtime-corejs3/core-js-stable/object/assign";
|
|
10
11
|
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
|
|
@@ -329,6 +330,15 @@ class Cascader extends BaseComponent {
|
|
|
329
330
|
e && e.stopPropagation();
|
|
330
331
|
this.foundation.handleClear();
|
|
331
332
|
};
|
|
333
|
+
/**
|
|
334
|
+
* A11y: simulate clear button click
|
|
335
|
+
*/
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
this.handleClearEnterPress = e => {
|
|
339
|
+
e && e.stopPropagation();
|
|
340
|
+
this.foundation.handleClearEnterPress();
|
|
341
|
+
};
|
|
332
342
|
|
|
333
343
|
this.showClearBtn = () => {
|
|
334
344
|
const {
|
|
@@ -355,6 +365,7 @@ class Cascader extends BaseComponent {
|
|
|
355
365
|
return /*#__PURE__*/React.createElement("div", {
|
|
356
366
|
className: clearCls,
|
|
357
367
|
onClick: this.handleClear,
|
|
368
|
+
onKeyPress: this.handleClearEnterPress,
|
|
358
369
|
role: 'button',
|
|
359
370
|
tabIndex: 0
|
|
360
371
|
}, /*#__PURE__*/React.createElement(IconClear, null));
|
|
@@ -444,6 +455,7 @@ class Cascader extends BaseComponent {
|
|
|
444
455
|
style: style,
|
|
445
456
|
ref: this.triggerRef,
|
|
446
457
|
onClick: e => this.foundation.handleClick(e),
|
|
458
|
+
onKeyPress: e => this.foundation.handleSelectionEnterPress(e),
|
|
447
459
|
"aria-invalid": this.props['aria-invalid'],
|
|
448
460
|
"aria-errormessage": this.props['aria-errormessage'],
|
|
449
461
|
"aria-label": this.props['aria-label'],
|
|
@@ -722,6 +734,10 @@ class Cascader extends BaseComponent {
|
|
|
722
734
|
realKeys = formatKeys;
|
|
723
735
|
}
|
|
724
736
|
|
|
737
|
+
if (_isSet(realKeys)) {
|
|
738
|
+
realKeys = [...realKeys];
|
|
739
|
+
}
|
|
740
|
+
|
|
725
741
|
const calRes = calcCheckedKeys(_flatten(realKeys), keyEntities);
|
|
726
742
|
const checkedKeys = new _Set(calRes.checkedKeys);
|
|
727
743
|
const halfCheckedKeys = new _Set(calRes.halfCheckedKeys); // disableStrictly
|
|
@@ -882,6 +898,7 @@ Cascader.propTypes = {
|
|
|
882
898
|
'aria-errormessage': PropTypes.string,
|
|
883
899
|
'aria-describedby': PropTypes.string,
|
|
884
900
|
'aria-required': PropTypes.bool,
|
|
901
|
+
'aria-label': PropTypes.string,
|
|
885
902
|
arrowIcon: PropTypes.node,
|
|
886
903
|
changeOnSelect: PropTypes.bool,
|
|
887
904
|
defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
|
|
@@ -976,6 +993,7 @@ Cascader.defaultProps = {
|
|
|
976
993
|
onClear: _noop,
|
|
977
994
|
onDropdownVisibleChange: _noop,
|
|
978
995
|
onListScroll: _noop,
|
|
979
|
-
enableLeafClick: false
|
|
996
|
+
enableLeafClick: false,
|
|
997
|
+
'aria-label': 'Cascader'
|
|
980
998
|
};
|
|
981
999
|
export default Cascader;
|
|
@@ -22,7 +22,7 @@ export interface CascaderItemProps {
|
|
|
22
22
|
selectedKeys: Set<string>;
|
|
23
23
|
loadedKeys: Set<string>;
|
|
24
24
|
loadingKeys: Set<string>;
|
|
25
|
-
onItemClick: (e: React.MouseEvent, item: Entity | Data) => void;
|
|
25
|
+
onItemClick: (e: React.MouseEvent | React.KeyboardEvent, item: Entity | Data) => void;
|
|
26
26
|
onItemHover: (e: React.MouseEvent, item: Entity) => void;
|
|
27
27
|
showNext: ShowNextType;
|
|
28
28
|
onItemCheckboxClick: (item: Entity | Data) => void;
|
|
@@ -57,7 +57,11 @@ export default class Item extends PureComponent<CascaderItemProps> {
|
|
|
57
57
|
static defaultProps: {
|
|
58
58
|
empty: boolean;
|
|
59
59
|
};
|
|
60
|
-
onClick: (e: React.MouseEvent, item: Entity | Data) => void;
|
|
60
|
+
onClick: (e: React.MouseEvent | React.KeyboardEvent, item: Entity | Data) => void;
|
|
61
|
+
/**
|
|
62
|
+
* A11y: simulate item click
|
|
63
|
+
*/
|
|
64
|
+
handleItemEnterPress: (keyboardEvent: React.KeyboardEvent, item: Entity | Data) => void;
|
|
61
65
|
onHover: (e: React.MouseEvent, item: Entity) => void;
|
|
62
66
|
onCheckboxChange: (e: CheckboxEvent, item: Entity | Data) => void;
|
|
63
67
|
getItemStatus: (key: string) => {
|
package/lib/es/cascader/item.js
CHANGED
|
@@ -2,10 +2,12 @@ import _includes from "lodash/includes";
|
|
|
2
2
|
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
|
3
3
|
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
|
|
4
4
|
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
|
5
|
+
import _Object$assign from "@babel/runtime-corejs3/core-js-stable/object/assign";
|
|
5
6
|
import React, { PureComponent } from 'react';
|
|
6
7
|
import cls from 'classnames';
|
|
7
8
|
import PropTypes from 'prop-types';
|
|
8
9
|
import { cssClasses, strings } from '@douyinfe/semi-foundation/lib/es/cascader/constants';
|
|
10
|
+
import isEnterPress from '@douyinfe/semi-foundation/lib/es/utils/isEnterPress';
|
|
9
11
|
import ConfigContext from '../configProvider/context';
|
|
10
12
|
import LocaleConsumer from '../locale/localeConsumer';
|
|
11
13
|
import { IconChevronRight, IconTick } from '@douyinfe/semi-icons';
|
|
@@ -27,6 +29,16 @@ export default class Item extends PureComponent {
|
|
|
27
29
|
|
|
28
30
|
onItemClick(e, item);
|
|
29
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* A11y: simulate item click
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
this.handleItemEnterPress = (keyboardEvent, item) => {
|
|
38
|
+
if (isEnterPress(keyboardEvent)) {
|
|
39
|
+
this.onClick(keyboardEvent, item);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
30
42
|
|
|
31
43
|
this.onHover = (e, item) => {
|
|
32
44
|
const {
|
|
@@ -106,6 +118,7 @@ export default class Item extends PureComponent {
|
|
|
106
118
|
|
|
107
119
|
case 'empty':
|
|
108
120
|
return /*#__PURE__*/React.createElement("span", {
|
|
121
|
+
"aria-hidden": true,
|
|
109
122
|
className: _concatInstanceProperty(_context3 = "".concat(prefixcls, "-icon ")).call(_context3, prefixcls, "-icon-empty")
|
|
110
123
|
});
|
|
111
124
|
|
|
@@ -169,11 +182,13 @@ export default class Item extends PureComponent {
|
|
|
169
182
|
["".concat(prefixcls, "-disabled")]: disabled
|
|
170
183
|
});
|
|
171
184
|
return /*#__PURE__*/React.createElement("li", {
|
|
185
|
+
role: 'menuitem',
|
|
172
186
|
className: className,
|
|
173
187
|
key: key,
|
|
174
188
|
onClick: e => {
|
|
175
189
|
this.onClick(e, item);
|
|
176
|
-
}
|
|
190
|
+
},
|
|
191
|
+
onKeyPress: e => this.handleItemEnterPress(e, item)
|
|
177
192
|
}, /*#__PURE__*/React.createElement("span", {
|
|
178
193
|
className: "".concat(prefixcls, "-label")
|
|
179
194
|
}, !multiple && this.renderIcon('empty'), multiple && /*#__PURE__*/React.createElement(Checkbox, {
|
|
@@ -198,13 +213,15 @@ export default class Item extends PureComponent {
|
|
|
198
213
|
let showChildItem;
|
|
199
214
|
const ind = content.length;
|
|
200
215
|
content.push( /*#__PURE__*/React.createElement("ul", {
|
|
216
|
+
role: 'menu',
|
|
201
217
|
className: "".concat(prefixcls, "-list"),
|
|
202
218
|
key: renderData[0].key,
|
|
203
219
|
onScroll: e => this.props.onListScroll(e, ind)
|
|
204
220
|
}, _mapInstanceProperty(renderData).call(renderData, item => {
|
|
205
221
|
const {
|
|
206
222
|
data,
|
|
207
|
-
key
|
|
223
|
+
key,
|
|
224
|
+
parentKey
|
|
208
225
|
} = item;
|
|
209
226
|
const {
|
|
210
227
|
children,
|
|
@@ -229,16 +246,26 @@ export default class Item extends PureComponent {
|
|
|
229
246
|
["".concat(prefixcls, "-select")]: selected && !multiple,
|
|
230
247
|
["".concat(prefixcls, "-disabled")]: disabled
|
|
231
248
|
});
|
|
232
|
-
|
|
249
|
+
const otherAriaProps = parentKey ? {
|
|
250
|
+
['aria-owns']: "cascaderItem-".concat(parentKey)
|
|
251
|
+
} : {};
|
|
252
|
+
return /*#__PURE__*/React.createElement("li", _Object$assign({
|
|
253
|
+
role: 'menuitem',
|
|
254
|
+
id: "cascaderItem-".concat(key),
|
|
255
|
+
"aria-expanded": active,
|
|
256
|
+
"aria-haspopup": Boolean(showExpand),
|
|
257
|
+
"aria-disabled": disabled
|
|
258
|
+
}, otherAriaProps, {
|
|
233
259
|
className: className,
|
|
234
260
|
key: key,
|
|
235
261
|
onClick: e => {
|
|
236
262
|
this.onClick(e, item);
|
|
237
263
|
},
|
|
264
|
+
onKeyPress: e => this.handleItemEnterPress(e, item),
|
|
238
265
|
onMouseEnter: e => {
|
|
239
266
|
this.onHover(e, item);
|
|
240
267
|
}
|
|
241
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
268
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
242
269
|
className: "".concat(prefixcls, "-label")
|
|
243
270
|
}, selected && !multiple && this.renderIcon('tick'), !selected && !multiple && this.renderIcon('empty'), multiple && /*#__PURE__*/React.createElement(Checkbox, {
|
|
244
271
|
onChange: e => this.onCheckboxChange(e, item),
|