@douyinfe/semi-ui 2.1.6-alpha.0 → 2.2.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/_base/_story/a11y.jsx +1302 -0
- package/_base/_story/a11y.scss +49 -0
- package/_base/_story/index.stories.js +3 -1
- package/_utils/index.ts +2 -1
- package/cascader/__test__/cascader.test.js +221 -0
- package/cascader/_story/cascader.stories.js +138 -0
- package/cascader/index.tsx +37 -21
- package/cascader/item.tsx +4 -2
- package/datePicker/__test__/datePicker.test.js +67 -2
- package/datePicker/_story/datePicker.stories.js +3 -1
- package/datePicker/_story/v2/YearButton.jsx +17 -0
- package/datePicker/_story/v2/index.js +1 -0
- package/datePicker/monthsGrid.tsx +12 -1
- package/datePicker/navigation.tsx +55 -29
- package/descriptions/__test__/descriptions.test.js +27 -1
- package/descriptions/_story/descriptions.stories.js +52 -2
- package/descriptions/item.tsx +1 -1
- package/dist/css/semi.css +38 -20
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +699 -160
- package/dist/umd/semi-ui.js.map +1 -1
- package/dist/umd/semi-ui.min.js +1 -1
- package/dist/umd/semi-ui.min.js.map +1 -1
- package/lib/cjs/_utils/index.d.ts +1 -0
- package/lib/cjs/_utils/index.js +3 -2
- package/lib/cjs/cascader/index.d.ts +7 -0
- package/lib/cjs/cascader/index.js +35 -22
- package/lib/cjs/cascader/item.d.ts +2 -0
- package/lib/cjs/cascader/item.js +4 -2
- package/lib/cjs/datePicker/monthsGrid.d.ts +1 -0
- package/lib/cjs/datePicker/monthsGrid.js +6 -0
- package/lib/cjs/datePicker/navigation.js +47 -7
- package/lib/cjs/descriptions/item.js +1 -1
- package/lib/cjs/form/baseForm.d.ts +6 -1
- package/lib/cjs/form/field.d.ts +6 -1
- package/lib/cjs/locale/source/es.d.ts +7 -0
- package/lib/cjs/locale/source/es.js +168 -0
- package/lib/cjs/rating/item.js +1 -1
- package/lib/cjs/select/index.d.ts +9 -0
- package/lib/cjs/select/index.js +10 -8
- package/lib/cjs/timeline/item.d.ts +3 -0
- package/lib/cjs/timeline/item.js +10 -4
- package/lib/cjs/typography/title.d.ts +1 -1
- package/lib/cjs/upload/fileCard.d.ts +2 -0
- package/lib/cjs/upload/fileCard.js +70 -45
- package/lib/cjs/upload/index.d.ts +23 -2
- package/lib/cjs/upload/index.js +133 -25
- package/lib/cjs/upload/interface.d.ts +3 -0
- package/lib/es/_utils/index.d.ts +1 -0
- package/lib/es/_utils/index.js +3 -2
- package/lib/es/cascader/index.d.ts +7 -0
- package/lib/es/cascader/index.js +34 -25
- package/lib/es/cascader/item.d.ts +2 -0
- package/lib/es/cascader/item.js +4 -2
- package/lib/es/datePicker/monthsGrid.d.ts +1 -0
- package/lib/es/datePicker/monthsGrid.js +6 -0
- package/lib/es/datePicker/navigation.js +48 -8
- package/lib/es/descriptions/item.js +1 -1
- package/lib/es/form/baseForm.d.ts +6 -1
- package/lib/es/form/field.d.ts +6 -1
- package/lib/es/locale/source/es.d.ts +7 -0
- package/lib/es/locale/source/es.js +157 -0
- package/lib/es/rating/item.js +1 -1
- package/lib/es/select/index.d.ts +9 -0
- package/lib/es/select/index.js +14 -8
- package/lib/es/timeline/item.d.ts +3 -0
- package/lib/es/timeline/item.js +9 -4
- package/lib/es/typography/title.d.ts +1 -1
- package/lib/es/upload/fileCard.d.ts +2 -0
- package/lib/es/upload/fileCard.js +69 -44
- package/lib/es/upload/index.d.ts +23 -2
- package/lib/es/upload/index.js +133 -24
- package/lib/es/upload/interface.d.ts +3 -0
- package/locale/source/es.ts +160 -0
- package/package.json +8 -8
- package/popover/Arrow.tsx +1 -1
- package/rating/item.tsx +1 -1
- package/select/_story/select.stories.js +25 -0
- package/select/index.tsx +17 -6
- package/timeline/_story/timeline.stories.js +50 -0
- package/timeline/item.tsx +7 -2
- package/upload/__test__/upload.test.js +50 -1
- package/upload/fileCard.tsx +110 -95
- package/upload/index.tsx +147 -53
- package/upload/interface.ts +3 -0
|
@@ -0,0 +1,1302 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Avatar,
|
|
4
|
+
Badge,
|
|
5
|
+
Breadcrumb,
|
|
6
|
+
Button,
|
|
7
|
+
Layout,
|
|
8
|
+
Nav,
|
|
9
|
+
Pagination,
|
|
10
|
+
Popover,
|
|
11
|
+
Rating,
|
|
12
|
+
Row,
|
|
13
|
+
Steps,
|
|
14
|
+
Space,
|
|
15
|
+
Tag,
|
|
16
|
+
Timeline,
|
|
17
|
+
Tooltip,
|
|
18
|
+
Col,
|
|
19
|
+
Typography,
|
|
20
|
+
Anchor,
|
|
21
|
+
BackTop,
|
|
22
|
+
Tabs,
|
|
23
|
+
TabPane,
|
|
24
|
+
Calendar,
|
|
25
|
+
Card,
|
|
26
|
+
Collapse,
|
|
27
|
+
Descriptions,
|
|
28
|
+
Dropdown,
|
|
29
|
+
Empty,
|
|
30
|
+
List,
|
|
31
|
+
ButtonGroup,
|
|
32
|
+
Modal,
|
|
33
|
+
OverflowList,
|
|
34
|
+
Slider,
|
|
35
|
+
SideSheet,
|
|
36
|
+
Table,
|
|
37
|
+
Banner,
|
|
38
|
+
Popconfirm,
|
|
39
|
+
Notification,
|
|
40
|
+
Progress,
|
|
41
|
+
Toast,
|
|
42
|
+
Spin,
|
|
43
|
+
Form,
|
|
44
|
+
Select,
|
|
45
|
+
Collapsible,
|
|
46
|
+
Skeleton,
|
|
47
|
+
Tree,
|
|
48
|
+
Transfer
|
|
49
|
+
} from '@douyinfe/semi-ui';
|
|
50
|
+
import {
|
|
51
|
+
IconSemiLogo,
|
|
52
|
+
IconBell,
|
|
53
|
+
IconHelpCircle,
|
|
54
|
+
IconBytedanceLogo,
|
|
55
|
+
IconHome,
|
|
56
|
+
IconHistogram,
|
|
57
|
+
IconLive,
|
|
58
|
+
IconSetting,
|
|
59
|
+
IconEdit,
|
|
60
|
+
IconCamera,
|
|
61
|
+
IconAlarm,
|
|
62
|
+
IconBookmark,
|
|
63
|
+
IconDuration,
|
|
64
|
+
IconFolder,
|
|
65
|
+
IconDelete,
|
|
66
|
+
IconUpload,
|
|
67
|
+
IconSun,
|
|
68
|
+
IconMoon,
|
|
69
|
+
IconSearch
|
|
70
|
+
} from '@douyinfe/semi-icons';
|
|
71
|
+
import {
|
|
72
|
+
IllustrationConstruction,
|
|
73
|
+
IllustrationConstructionDark,
|
|
74
|
+
IllustrationNoResult,
|
|
75
|
+
IllustrationNoResultDark,
|
|
76
|
+
IllustrationSuccess,
|
|
77
|
+
IllustrationSuccessDark,
|
|
78
|
+
IllustrationFailure,
|
|
79
|
+
IllustrationFailureDark,
|
|
80
|
+
IllustrationNoAccess,
|
|
81
|
+
IllustrationNoAccessDark,
|
|
82
|
+
IllustrationNoContent,
|
|
83
|
+
IllustrationNoContentDark,
|
|
84
|
+
IllustrationNotFound,
|
|
85
|
+
IllustrationNotFoundDark,
|
|
86
|
+
IllustrationIdle,
|
|
87
|
+
IllustrationIdleDark
|
|
88
|
+
} from '@douyinfe/semi-illustrations';
|
|
89
|
+
import './a11y.scss';
|
|
90
|
+
|
|
91
|
+
SemiA11y.storyName = 'Semi A11y';
|
|
92
|
+
|
|
93
|
+
const raw = [
|
|
94
|
+
{
|
|
95
|
+
key: '1',
|
|
96
|
+
name: 'Semi Design 设计稿标题可能有点长这时候应该显示 Tooltip.fig',
|
|
97
|
+
nameIconSrc: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/figma-icon.png',
|
|
98
|
+
size: '2M',
|
|
99
|
+
owner: '姜鹏志',
|
|
100
|
+
updateTime: '2020-02-02 05:13',
|
|
101
|
+
avatarBg: 'grey',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
key: '2',
|
|
105
|
+
name: 'Semi Design 分享演示文稿',
|
|
106
|
+
nameIconSrc: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/docs-icon.png',
|
|
107
|
+
size: '2M',
|
|
108
|
+
owner: '郝宣',
|
|
109
|
+
updateTime: '2020-01-17 05:31',
|
|
110
|
+
avatarBg: 'red',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
key: '3',
|
|
114
|
+
name: '设计文档',
|
|
115
|
+
nameIconSrc: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/docs-icon.png',
|
|
116
|
+
size: '34KB',
|
|
117
|
+
owner: 'Zoey Edwards',
|
|
118
|
+
updateTime: '2020-01-26 11:01',
|
|
119
|
+
avatarBg: 'light-blue',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
key: '4',
|
|
123
|
+
name: 'Semi Pro 设计文档可能也有点长所以也会显示Tooltip',
|
|
124
|
+
nameIconSrc: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/docs-icon.png',
|
|
125
|
+
size: '34KB',
|
|
126
|
+
owner: '姜琪',
|
|
127
|
+
updateTime: '2020-01-26 11:01',
|
|
128
|
+
avatarBg: 'green',
|
|
129
|
+
},
|
|
130
|
+
];
|
|
131
|
+
|
|
132
|
+
const treeData = [
|
|
133
|
+
{
|
|
134
|
+
label: '亚洲',
|
|
135
|
+
value: 'Asia',
|
|
136
|
+
key: '0',
|
|
137
|
+
children: [
|
|
138
|
+
{
|
|
139
|
+
label: '中国',
|
|
140
|
+
value: 'China',
|
|
141
|
+
key: '0-0',
|
|
142
|
+
children: [
|
|
143
|
+
{
|
|
144
|
+
label: '北京',
|
|
145
|
+
value: 'Beijing',
|
|
146
|
+
key: '0-0-0',
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
label: '上海',
|
|
150
|
+
value: 'Shanghai',
|
|
151
|
+
key: '0-0-1',
|
|
152
|
+
},
|
|
153
|
+
],
|
|
154
|
+
},
|
|
155
|
+
],
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
label: '北美洲',
|
|
159
|
+
value: 'North America',
|
|
160
|
+
key: '1',
|
|
161
|
+
}
|
|
162
|
+
];
|
|
163
|
+
|
|
164
|
+
const listData = [
|
|
165
|
+
{
|
|
166
|
+
title: '审核管理平台',
|
|
167
|
+
rating: 4.5,
|
|
168
|
+
feedbacks: 124,
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
title: '扁鹊',
|
|
172
|
+
rating: 4,
|
|
173
|
+
feedbacks: 108,
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
title: '直播审核平台',
|
|
177
|
+
rating: 3.5,
|
|
178
|
+
feedbacks: 244,
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
title: '抖音安全测试',
|
|
182
|
+
feedbacks: 189,
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
title: '内容平台',
|
|
186
|
+
rating: 3,
|
|
187
|
+
feedbacks: 128,
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
title: '策略平台',
|
|
191
|
+
rating: 4,
|
|
192
|
+
feedbacks: 156,
|
|
193
|
+
},
|
|
194
|
+
];
|
|
195
|
+
|
|
196
|
+
const style = { width: '90%' };
|
|
197
|
+
const initValues = {
|
|
198
|
+
name: 'semi',
|
|
199
|
+
business: ['ulikeCam'],
|
|
200
|
+
role: 'ued',
|
|
201
|
+
switch: true,
|
|
202
|
+
files: [
|
|
203
|
+
{
|
|
204
|
+
uid: '1',
|
|
205
|
+
name: 'vigo.png',
|
|
206
|
+
status: 'success',
|
|
207
|
+
size: '130KB',
|
|
208
|
+
preview: true,
|
|
209
|
+
url:
|
|
210
|
+
'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/vigo.png',
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
uid: '2',
|
|
214
|
+
name: 'jiafang1.jpeg',
|
|
215
|
+
status: 'validateFail',
|
|
216
|
+
size: '222KB',
|
|
217
|
+
percent: 50,
|
|
218
|
+
preview: true,
|
|
219
|
+
fileInstance: new File([new ArrayBuffer(2048)], 'jiafang1.jpeg', { type: 'image/jpeg' }),
|
|
220
|
+
url:
|
|
221
|
+
'https://sf6-cdn-tos.douyinstatic.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/bf8647bffab13c38772c9ff94bf91a9d.jpg',
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
uid: '3',
|
|
225
|
+
name: 'jiafang2.jpeg',
|
|
226
|
+
status: 'uploading',
|
|
227
|
+
size: '222KB',
|
|
228
|
+
percent: 50,
|
|
229
|
+
preview: true,
|
|
230
|
+
fileInstance: new File([new ArrayBuffer(2048)], 'jiafang2.jpeg', { type: 'image/jpeg' }),
|
|
231
|
+
url:
|
|
232
|
+
'https://sf6-cdn-tos.douyinstatic.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/bf8647bffab13c38772c9ff94bf91a9d.jpg',
|
|
233
|
+
},
|
|
234
|
+
],
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
const listItemStyle = {
|
|
238
|
+
border: '1px solid var(--semi-color-border)',
|
|
239
|
+
backgroundColor: 'var(--semi-color-bg-2)',
|
|
240
|
+
borderRadius: '3px',
|
|
241
|
+
paddingLeft: '20px',
|
|
242
|
+
margin: '8px 2px',
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
const descriptionData = [
|
|
246
|
+
{ key: '实际用户数量', value: '1,480,000' },
|
|
247
|
+
{ key: '7天留存', value: '98%' },
|
|
248
|
+
{ key: '安全等级', value: '3级' },
|
|
249
|
+
{ key: '垂类标签', value: <Tag style={{ margin: 0 }}>电商</Tag> },
|
|
250
|
+
{ key: '认证状态', value: '未认证' },
|
|
251
|
+
];
|
|
252
|
+
const descriptionStyle = {
|
|
253
|
+
boxShadow: 'var(--semi-shadow-elevated)',
|
|
254
|
+
backgroundColor: 'var(--semi-color-bg-2)',
|
|
255
|
+
borderRadius: '4px',
|
|
256
|
+
padding: '10px',
|
|
257
|
+
margin: '10px',
|
|
258
|
+
width: '200px',
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
const emptyStyle = {
|
|
262
|
+
padding: 30,
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
const transferData = Array.from({ length: 100 }, (v, i) => {
|
|
266
|
+
return {
|
|
267
|
+
label: `选项名称 ${i}`,
|
|
268
|
+
value: i,
|
|
269
|
+
disabled: false,
|
|
270
|
+
key: i,
|
|
271
|
+
};
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
const items = [
|
|
275
|
+
{ icon: <IconAlarm style={{ marginRight: 4 }} />, key: 'alarm' },
|
|
276
|
+
{ icon: <IconBookmark style={{ marginRight: 4 }} />, key: 'bookmark' },
|
|
277
|
+
{ icon: <IconCamera style={{ marginRight: 4 }} />, key: 'camera' },
|
|
278
|
+
{ icon: <IconDuration style={{ marginRight: 4 }} />, key: 'duration' },
|
|
279
|
+
{ icon: <IconEdit style={{ marginRight: 4 }} />, key: 'edit' },
|
|
280
|
+
{ icon: <IconFolder style={{ marginRight: 4 }} />, key: 'folder' },
|
|
281
|
+
];
|
|
282
|
+
|
|
283
|
+
const empty = (
|
|
284
|
+
<Empty
|
|
285
|
+
image={<IllustrationNoResult />}
|
|
286
|
+
darkModeImage={<IllustrationNoResultDark />}
|
|
287
|
+
description={'搜索无结果'}
|
|
288
|
+
/>
|
|
289
|
+
);
|
|
290
|
+
|
|
291
|
+
const placeholder = (
|
|
292
|
+
<div style={style}>
|
|
293
|
+
<Skeleton.Avatar style={{ marginRight: 12 }} />
|
|
294
|
+
<div>
|
|
295
|
+
<Skeleton.Title style={{ width: 120, marginBottom: 12, marginTop: 12 }} />
|
|
296
|
+
<Skeleton.Paragraph style={{ width: 240 }} rows={3} />
|
|
297
|
+
</div>
|
|
298
|
+
</div>
|
|
299
|
+
);
|
|
300
|
+
|
|
301
|
+
export default function SemiA11y() {
|
|
302
|
+
const { Header, Footer, Sider, Content } = Layout;
|
|
303
|
+
const { Title, Text, Paragraph } = Typography;
|
|
304
|
+
const [modalVisible, setModalVisible] = useState(false);
|
|
305
|
+
const [sideSheetVisible, setSideSheetVisible] = useState(false);
|
|
306
|
+
const [overflowWidth, setOverflowWidth] = useState(100);
|
|
307
|
+
const [isOpen, setCollapsibleOpen] = useState(false);
|
|
308
|
+
const [dataSource, setData] = useState(raw);
|
|
309
|
+
const [mode, setMode] = useState('light');
|
|
310
|
+
const [stringData, setStringData] = useState([]);
|
|
311
|
+
|
|
312
|
+
const removeRecord = key => {
|
|
313
|
+
let newDataSource = [...dataSource];
|
|
314
|
+
if (key != null) {
|
|
315
|
+
let idx = newDataSource.findIndex(data => data.key === key);
|
|
316
|
+
|
|
317
|
+
if (idx > -1) {
|
|
318
|
+
newDataSource.splice(idx, 1);
|
|
319
|
+
setData(newDataSource);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
const columns = [
|
|
325
|
+
{
|
|
326
|
+
title: '标题',
|
|
327
|
+
dataIndex: 'name',
|
|
328
|
+
width: 400,
|
|
329
|
+
render: (text, record, index) => {
|
|
330
|
+
return (
|
|
331
|
+
<span style={{ display: 'flex', alignItems: 'center' }}>
|
|
332
|
+
<Avatar
|
|
333
|
+
size="small"
|
|
334
|
+
shape="square"
|
|
335
|
+
src={record.nameIconSrc}
|
|
336
|
+
style={{ marginRight: 12 }}
|
|
337
|
+
></Avatar>
|
|
338
|
+
{/* 宽度计算方式为单元格设置宽度 - 非文本内容宽度 */}
|
|
339
|
+
<Text heading={5} ellipsis={{ showTooltip: true }} style={{ width: 'calc(400px - 76px)' }}>
|
|
340
|
+
{text}
|
|
341
|
+
</Text>
|
|
342
|
+
</span>
|
|
343
|
+
);
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
title: '大小',
|
|
348
|
+
dataIndex: 'size',
|
|
349
|
+
width: 150,
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
title: '所有者',
|
|
353
|
+
dataIndex: 'owner',
|
|
354
|
+
render: (text, record, index) => {
|
|
355
|
+
return (
|
|
356
|
+
<div>
|
|
357
|
+
<Avatar size="small" color={record.avatarBg} style={{ marginRight: 4 }}>
|
|
358
|
+
{typeof text === 'string' && text.slice(0, 1)}
|
|
359
|
+
</Avatar>
|
|
360
|
+
{text}
|
|
361
|
+
</div>
|
|
362
|
+
);
|
|
363
|
+
},
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
title: '更新日期',
|
|
367
|
+
dataIndex: 'updateTime',
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
title: '',
|
|
371
|
+
width: 100,
|
|
372
|
+
dataIndex: 'operate',
|
|
373
|
+
render: (text, record) => (
|
|
374
|
+
<Button icon={<IconDelete />} theme="borderless" onClick={() => removeRecord(record.key)} />
|
|
375
|
+
),
|
|
376
|
+
},
|
|
377
|
+
];
|
|
378
|
+
|
|
379
|
+
const onConfirm = () => {
|
|
380
|
+
Toast.success('确认保存!');
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
const onCancel = () => {
|
|
384
|
+
Toast.warning('取消保存!');
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
const switchMode = () => {
|
|
388
|
+
const body = document.body;
|
|
389
|
+
if (body.hasAttribute('theme-mode')) {
|
|
390
|
+
body.removeAttribute('theme-mode');
|
|
391
|
+
setMode('light');
|
|
392
|
+
} else {
|
|
393
|
+
body.setAttribute('theme-mode', 'dark');
|
|
394
|
+
setMode('dark');
|
|
395
|
+
}
|
|
396
|
+
};
|
|
397
|
+
|
|
398
|
+
const handleStringSearch = (value) => {
|
|
399
|
+
let result;
|
|
400
|
+
if (value) {
|
|
401
|
+
result = ['gmail.com', '163.com', 'qq.com'].map(domain => `${value}@${domain}`);
|
|
402
|
+
} else {
|
|
403
|
+
result = [];
|
|
404
|
+
}
|
|
405
|
+
setStringData(result);
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
const renderOverflow = items => {
|
|
409
|
+
return items.length ? <Tag style={{ flex: '0 0 auto' }}>+{items.length}</Tag> : null;
|
|
410
|
+
};
|
|
411
|
+
const renderOverflowItem = (item, ind) => {
|
|
412
|
+
return (
|
|
413
|
+
<Tag color="blue" key={item.key} style={{ marginRight: 8, flex: '0 0 auto' }}>
|
|
414
|
+
{item.icon}
|
|
415
|
+
{item.key}
|
|
416
|
+
</Tag>
|
|
417
|
+
);
|
|
418
|
+
};
|
|
419
|
+
|
|
420
|
+
useEffect(() => {
|
|
421
|
+
document.body && document.body.setAttribute('data-page', 'a11y');
|
|
422
|
+
|
|
423
|
+
return () => {
|
|
424
|
+
document.body && document.body.removeAttribute('data-page');
|
|
425
|
+
};
|
|
426
|
+
}, []);
|
|
427
|
+
|
|
428
|
+
return (
|
|
429
|
+
<>
|
|
430
|
+
<Layout style={{ border: '1px solid var(--semi-color-border)' }}>
|
|
431
|
+
<Header style={{ backgroundColor: 'var(--semi-color-bg-1)' }}>
|
|
432
|
+
<div>
|
|
433
|
+
<Nav mode="horizontal" defaultSelectedKeys={['Home']}>
|
|
434
|
+
<Nav.Header>
|
|
435
|
+
<IconSemiLogo style={{ width: '96px', height: '36px', fontSize: 36 }} />
|
|
436
|
+
<span
|
|
437
|
+
style={{
|
|
438
|
+
color: 'var(--semi-color-text-2)',
|
|
439
|
+
}}
|
|
440
|
+
>
|
|
441
|
+
<span
|
|
442
|
+
style={{
|
|
443
|
+
marginRight: '24px',
|
|
444
|
+
color: 'var(--semi-color-text-0)',
|
|
445
|
+
fontWeight: '600',
|
|
446
|
+
}}
|
|
447
|
+
>
|
|
448
|
+
模版推荐
|
|
449
|
+
</span>
|
|
450
|
+
<span style={{ marginRight: '24px' }}>所有模版</span>
|
|
451
|
+
<span>我的模版</span>
|
|
452
|
+
</span>
|
|
453
|
+
</Nav.Header>
|
|
454
|
+
<Nav.Footer>
|
|
455
|
+
<Button
|
|
456
|
+
theme="borderless"
|
|
457
|
+
icon={mode === 'dark' ? <IconSun size="large" /> : <IconMoon size="large" />}
|
|
458
|
+
style={{
|
|
459
|
+
color: 'var(--semi-color-text-2)',
|
|
460
|
+
marginRight: '12px',
|
|
461
|
+
}}
|
|
462
|
+
onClick={switchMode}
|
|
463
|
+
/>
|
|
464
|
+
<Button
|
|
465
|
+
theme="borderless"
|
|
466
|
+
icon={<IconBell size="large" />}
|
|
467
|
+
style={{
|
|
468
|
+
color: 'var(--semi-color-text-2)',
|
|
469
|
+
marginRight: '12px',
|
|
470
|
+
}}
|
|
471
|
+
/>
|
|
472
|
+
<Button
|
|
473
|
+
theme="borderless"
|
|
474
|
+
icon={<IconHelpCircle size="large" />}
|
|
475
|
+
style={{
|
|
476
|
+
color: 'var(--semi-color-text-2)',
|
|
477
|
+
marginRight: '12px',
|
|
478
|
+
}}
|
|
479
|
+
/>
|
|
480
|
+
<Avatar color="orange" size="small">
|
|
481
|
+
YJ
|
|
482
|
+
</Avatar>
|
|
483
|
+
</Nav.Footer>
|
|
484
|
+
</Nav>
|
|
485
|
+
</div>
|
|
486
|
+
</Header>
|
|
487
|
+
<Layout>
|
|
488
|
+
<Sider style={{ backgroundColor: 'var(--semi-color-bg-1)' }}>
|
|
489
|
+
<Nav
|
|
490
|
+
style={{ maxWidth: 220, height: '100%' }}
|
|
491
|
+
defaultSelectedKeys={['Home']}
|
|
492
|
+
items={[
|
|
493
|
+
{ itemKey: 'Home', text: '首页', icon: <IconHome size="large" /> },
|
|
494
|
+
{ itemKey: 'Histogram', text: '基础数据', icon: <IconHistogram size="large" /> },
|
|
495
|
+
{ itemKey: 'Live', text: '测试功能', icon: <IconLive size="large" /> },
|
|
496
|
+
{ itemKey: 'Setting', text: '设置', icon: <IconSetting size="large" /> },
|
|
497
|
+
]}
|
|
498
|
+
footer={{
|
|
499
|
+
collapseButton: true,
|
|
500
|
+
}}
|
|
501
|
+
/>
|
|
502
|
+
</Sider>
|
|
503
|
+
<Content
|
|
504
|
+
style={{
|
|
505
|
+
padding: '24px',
|
|
506
|
+
backgroundColor: 'var(--semi-color-bg-1)',
|
|
507
|
+
maxHeight: 'calc(100vh - 120px)',
|
|
508
|
+
}}
|
|
509
|
+
>
|
|
510
|
+
<Breadcrumb
|
|
511
|
+
style={{
|
|
512
|
+
marginBottom: '24px',
|
|
513
|
+
}}
|
|
514
|
+
routes={['首页', '当这个页面标题很长时需要省略', '上一页', '详情页']}
|
|
515
|
+
/>
|
|
516
|
+
<div
|
|
517
|
+
style={{
|
|
518
|
+
borderRadius: '10px',
|
|
519
|
+
border: '1px solid var(--semi-color-border)',
|
|
520
|
+
padding: '32px',
|
|
521
|
+
}}
|
|
522
|
+
className="rows-container"
|
|
523
|
+
>
|
|
524
|
+
<Row id="基本示例">
|
|
525
|
+
<Pagination total={80} showSizeChanger></Pagination>
|
|
526
|
+
<Steps current={1}>
|
|
527
|
+
<Steps.Step title="Finished" description="This is a description." />
|
|
528
|
+
<Steps.Step title="In Progress" description="This is a description." />
|
|
529
|
+
<Steps.Step title="Waiting" description="This is a description." />
|
|
530
|
+
</Steps>
|
|
531
|
+
<Steps current={1} status="error">
|
|
532
|
+
<Steps.Step title="Finished" description="This is a description" />
|
|
533
|
+
<Steps.Step title="In Process" description="This is a description" />
|
|
534
|
+
<Steps.Step title="Waiting" description="This is a description" />
|
|
535
|
+
</Steps>
|
|
536
|
+
</Row>
|
|
537
|
+
<Row>
|
|
538
|
+
<div style={{ display: 'flex' }}>
|
|
539
|
+
<div style={{ padding: 8 }}>
|
|
540
|
+
<Badge count={5} theme="solid">
|
|
541
|
+
<Avatar color="blue" shape="square">
|
|
542
|
+
XZ
|
|
543
|
+
</Avatar>
|
|
544
|
+
</Badge>
|
|
545
|
+
</div>
|
|
546
|
+
<div style={{ padding: 8 }}>
|
|
547
|
+
<Badge count={5} theme="light">
|
|
548
|
+
<Avatar color="cyan" shape="square">
|
|
549
|
+
YB
|
|
550
|
+
</Avatar>
|
|
551
|
+
</Badge>
|
|
552
|
+
</div>
|
|
553
|
+
<div style={{ padding: 8 }}>
|
|
554
|
+
<Badge count={5} theme="inverted">
|
|
555
|
+
<Avatar color="indigo" shape="square">
|
|
556
|
+
LX
|
|
557
|
+
</Avatar>
|
|
558
|
+
</Badge>
|
|
559
|
+
</div>
|
|
560
|
+
<div style={{ padding: 8 }}>
|
|
561
|
+
<Badge dot theme="solid">
|
|
562
|
+
<Avatar color="light-blue" shape="square">
|
|
563
|
+
YZ
|
|
564
|
+
</Avatar>
|
|
565
|
+
</Badge>
|
|
566
|
+
</div>
|
|
567
|
+
<div style={{ padding: 8 }}>
|
|
568
|
+
<Badge dot theme="light">
|
|
569
|
+
<Avatar color="teal" shape="square">
|
|
570
|
+
HW
|
|
571
|
+
</Avatar>
|
|
572
|
+
</Badge>
|
|
573
|
+
</div>
|
|
574
|
+
<div
|
|
575
|
+
style={{
|
|
576
|
+
padding: '8px',
|
|
577
|
+
borderRadius: '4px',
|
|
578
|
+
backgroundColor: 'var(--semi-color-fill-0)',
|
|
579
|
+
}}
|
|
580
|
+
>
|
|
581
|
+
<Badge dot theme="inverted">
|
|
582
|
+
<Avatar color="green" shape="square">
|
|
583
|
+
XM
|
|
584
|
+
</Avatar>
|
|
585
|
+
</Badge>
|
|
586
|
+
</div>
|
|
587
|
+
</div>
|
|
588
|
+
<div>
|
|
589
|
+
<Space wrap>
|
|
590
|
+
<Tag color="grey">grey tag</Tag>
|
|
591
|
+
<Tag color="blue">blue tag</Tag>
|
|
592
|
+
<Tag color="blue" type="ghost">
|
|
593
|
+
ghost tag
|
|
594
|
+
</Tag>
|
|
595
|
+
<Tag color="blue" type="solid">
|
|
596
|
+
solid tag
|
|
597
|
+
</Tag>
|
|
598
|
+
<Tag color="red">red tag</Tag>
|
|
599
|
+
<Tag color="green">green tag</Tag>
|
|
600
|
+
<Tag color="orange">orange tag</Tag>
|
|
601
|
+
<Tag color="teal">teal tag</Tag>
|
|
602
|
+
<Tag color="violet">violet tag</Tag>
|
|
603
|
+
<Tag color="white">white tag</Tag>
|
|
604
|
+
</Space>
|
|
605
|
+
</div>
|
|
606
|
+
<div>
|
|
607
|
+
<Space>
|
|
608
|
+
<Popover content={'hi semi-design'} style={{ padding: 8 }}>
|
|
609
|
+
<Tag style={{ marginRight: 8 }}>I am Popover</Tag>
|
|
610
|
+
</Popover>
|
|
611
|
+
<Tooltip content={'hi semi-design'}>
|
|
612
|
+
<Tag style={{ marginRight: 8 }}>I am Tooltip</Tag>
|
|
613
|
+
</Tooltip>
|
|
614
|
+
<Dropdown
|
|
615
|
+
render={
|
|
616
|
+
<Dropdown.Menu>
|
|
617
|
+
<Dropdown.Item>Menu Item 1</Dropdown.Item>
|
|
618
|
+
<Dropdown.Item>Menu Item 2</Dropdown.Item>
|
|
619
|
+
<Dropdown.Item>Menu Item 3</Dropdown.Item>
|
|
620
|
+
</Dropdown.Menu>
|
|
621
|
+
}
|
|
622
|
+
>
|
|
623
|
+
<Tag>I am dropdown</Tag>
|
|
624
|
+
</Dropdown>
|
|
625
|
+
<Rating defaultValue={3} size="small" style={{ marginRight: 8 }} />
|
|
626
|
+
</Space>
|
|
627
|
+
</div>
|
|
628
|
+
<div className="mt12">
|
|
629
|
+
<Space>
|
|
630
|
+
<Button onClick={() => setModalVisible(true)}>Modal</Button>
|
|
631
|
+
<Button type="tertiary" onClick={() => setSideSheetVisible(true)}>
|
|
632
|
+
SideSheet
|
|
633
|
+
</Button>
|
|
634
|
+
<Button
|
|
635
|
+
type="warning"
|
|
636
|
+
onClick={() =>
|
|
637
|
+
Notification.open({
|
|
638
|
+
title: 'Hi, Bytedance',
|
|
639
|
+
content: 'ies dance dance dance',
|
|
640
|
+
duration: 3,
|
|
641
|
+
})
|
|
642
|
+
}
|
|
643
|
+
>
|
|
644
|
+
Notification
|
|
645
|
+
</Button>
|
|
646
|
+
<Popconfirm
|
|
647
|
+
title="确定是否要保存此修改?"
|
|
648
|
+
content="此修改将不可逆"
|
|
649
|
+
onConfirm={onConfirm}
|
|
650
|
+
onCancel={onCancel}
|
|
651
|
+
>
|
|
652
|
+
<Button type="danger">Popconfirm</Button>
|
|
653
|
+
</Popconfirm>
|
|
654
|
+
<Modal
|
|
655
|
+
title="基本对话框"
|
|
656
|
+
visible={modalVisible}
|
|
657
|
+
onOk={() => setModalVisible(false)}
|
|
658
|
+
onCancel={() => setModalVisible(false)}
|
|
659
|
+
>
|
|
660
|
+
This is the content of a basic modal.
|
|
661
|
+
More content...
|
|
662
|
+
</Modal>
|
|
663
|
+
<SideSheet
|
|
664
|
+
title="滑动侧边栏"
|
|
665
|
+
visible={sideSheetVisible}
|
|
666
|
+
onCancel={() => setSideSheetVisible(false)}
|
|
667
|
+
>
|
|
668
|
+
<p>This is the content of a basic side sheet.</p>
|
|
669
|
+
<p>Here is more content...</p>
|
|
670
|
+
</SideSheet>
|
|
671
|
+
</Space>
|
|
672
|
+
</div>
|
|
673
|
+
</Row>
|
|
674
|
+
<Row>
|
|
675
|
+
<Col span={12} style={{ paddingRight: 24 }}>
|
|
676
|
+
<div style={{ maxWidth: 640 }}>
|
|
677
|
+
<Banner
|
|
678
|
+
className="mb12"
|
|
679
|
+
fullMode={false}
|
|
680
|
+
type="info"
|
|
681
|
+
bordered
|
|
682
|
+
icon={null}
|
|
683
|
+
closeIcon={null}
|
|
684
|
+
title={
|
|
685
|
+
<div style={{ fontWeight: 600, fontSize: '14px', lineHeight: '20px' }}>
|
|
686
|
+
不知道 AppKey?
|
|
687
|
+
</div>
|
|
688
|
+
}
|
|
689
|
+
description={
|
|
690
|
+
<div>
|
|
691
|
+
你可先联系对应的研发同学,确认是否已在
|
|
692
|
+
<Text link={{ href: 'https://semi.design/' }}>应用云平台</Text>
|
|
693
|
+
申请了应用,并填写对应的信息。
|
|
694
|
+
</div>
|
|
695
|
+
}
|
|
696
|
+
/>
|
|
697
|
+
<Banner
|
|
698
|
+
className="mb12"
|
|
699
|
+
fullMode={false}
|
|
700
|
+
type="warning"
|
|
701
|
+
bordered
|
|
702
|
+
icon={null}
|
|
703
|
+
closeIcon={null}
|
|
704
|
+
title={
|
|
705
|
+
<div style={{ fontWeight: 600, fontSize: '14px', lineHeight: '20px' }}>
|
|
706
|
+
不知道 AppKey?
|
|
707
|
+
</div>
|
|
708
|
+
}
|
|
709
|
+
description={
|
|
710
|
+
<div>
|
|
711
|
+
你可先联系对应的研发同学,确认是否已在
|
|
712
|
+
<Text link={{ href: 'https://semi.design/' }}>应用云平台</Text>
|
|
713
|
+
申请了应用,并填写对应的信息。
|
|
714
|
+
</div>
|
|
715
|
+
}
|
|
716
|
+
/>
|
|
717
|
+
<Banner
|
|
718
|
+
className="mb12"
|
|
719
|
+
fullMode={false}
|
|
720
|
+
type="danger"
|
|
721
|
+
bordered
|
|
722
|
+
icon={null}
|
|
723
|
+
closeIcon={null}
|
|
724
|
+
title={
|
|
725
|
+
<div style={{ fontWeight: 600, fontSize: '14px', lineHeight: '20px' }}>
|
|
726
|
+
不知道 AppKey?
|
|
727
|
+
</div>
|
|
728
|
+
}
|
|
729
|
+
description={
|
|
730
|
+
<div>
|
|
731
|
+
你可先联系对应的研发同学,确认是否已在
|
|
732
|
+
<Text link={{ href: 'https://semi.design/' }}>应用云平台</Text>
|
|
733
|
+
申请了应用,并填写对应的信息。
|
|
734
|
+
</div>
|
|
735
|
+
}
|
|
736
|
+
/>
|
|
737
|
+
<Banner
|
|
738
|
+
fullMode={false}
|
|
739
|
+
type="success"
|
|
740
|
+
bordered
|
|
741
|
+
icon={null}
|
|
742
|
+
closeIcon={null}
|
|
743
|
+
title={
|
|
744
|
+
<div style={{ fontWeight: 600, fontSize: '14px', lineHeight: '20px' }}>
|
|
745
|
+
不知道 AppKey?
|
|
746
|
+
</div>
|
|
747
|
+
}
|
|
748
|
+
description={
|
|
749
|
+
<div>
|
|
750
|
+
你可先联系对应的研发同学,确认是否已在
|
|
751
|
+
<Text link={{ href: 'https://semi.design/' }}>应用云平台</Text>
|
|
752
|
+
申请了应用,并填写对应的信息。
|
|
753
|
+
</div>
|
|
754
|
+
}
|
|
755
|
+
/>
|
|
756
|
+
</div>
|
|
757
|
+
</Col>
|
|
758
|
+
<Col span={12}>
|
|
759
|
+
<Title style={{ margin: '8px 0' }}>h1. Semi Design</Title>
|
|
760
|
+
<Title heading={2} style={{ margin: '8px 0' }}>
|
|
761
|
+
h2. Semi Design
|
|
762
|
+
</Title>
|
|
763
|
+
<Title heading={3} style={{ margin: '8px 0' }}>
|
|
764
|
+
h3. Semi Design
|
|
765
|
+
</Title>
|
|
766
|
+
<Title heading={4} style={{ margin: '8px 0' }}>
|
|
767
|
+
h4. Semi Design
|
|
768
|
+
</Title>
|
|
769
|
+
<Title heading={5} style={{ margin: '8px 0' }}>
|
|
770
|
+
h5. Semi Design
|
|
771
|
+
</Title>
|
|
772
|
+
<Title heading={6} style={{ margin: '8px 0' }}>
|
|
773
|
+
h6. Semi Design
|
|
774
|
+
</Title>
|
|
775
|
+
</Col>
|
|
776
|
+
</Row>
|
|
777
|
+
<Row id="组件">
|
|
778
|
+
<div style={{ display: 'flex', flexWrap: 'wrap' }}>
|
|
779
|
+
<Empty
|
|
780
|
+
image={<IllustrationSuccess style={{ width: 150, height: 150 }} />}
|
|
781
|
+
darkModeImage={<IllustrationSuccessDark style={{ width: 150, height: 150 }} />}
|
|
782
|
+
description={'创建成功'}
|
|
783
|
+
style={emptyStyle}
|
|
784
|
+
/>
|
|
785
|
+
<Empty
|
|
786
|
+
image={<IllustrationFailure style={{ width: 150, height: 150 }} />}
|
|
787
|
+
darkModeImage={<IllustrationFailureDark style={{ width: 150, height: 150 }} />}
|
|
788
|
+
description={'加载失败'}
|
|
789
|
+
style={emptyStyle}
|
|
790
|
+
/>
|
|
791
|
+
<Empty
|
|
792
|
+
image={<IllustrationNoAccess style={{ width: 150, height: 150 }} />}
|
|
793
|
+
darkModeImage={<IllustrationNoAccessDark style={{ width: 150, height: 150 }} />}
|
|
794
|
+
description={'没有权限'}
|
|
795
|
+
style={emptyStyle}
|
|
796
|
+
/>
|
|
797
|
+
<Empty
|
|
798
|
+
image={<IllustrationNoContent style={{ width: 150, height: 150 }} />}
|
|
799
|
+
darkModeImage={<IllustrationNoContentDark style={{ width: 150, height: 150 }} />}
|
|
800
|
+
description={'暂无内容,请添加'}
|
|
801
|
+
style={emptyStyle}
|
|
802
|
+
/>
|
|
803
|
+
<Empty
|
|
804
|
+
image={<IllustrationNotFound style={{ width: 150, height: 150 }} />}
|
|
805
|
+
darkModeImage={<IllustrationNotFoundDark style={{ width: 150, height: 150 }} />}
|
|
806
|
+
description={'页面404'}
|
|
807
|
+
style={emptyStyle}
|
|
808
|
+
/>
|
|
809
|
+
<Empty
|
|
810
|
+
image={<IllustrationNoResult style={{ width: 150, height: 150 }} />}
|
|
811
|
+
darkModeImage={<IllustrationNoResultDark style={{ width: 150, height: 150 }} />}
|
|
812
|
+
description={'搜索无结果'}
|
|
813
|
+
style={emptyStyle}
|
|
814
|
+
/>
|
|
815
|
+
<Empty
|
|
816
|
+
image={<IllustrationConstruction style={{ width: 150, height: 150 }} />}
|
|
817
|
+
darkModeImage={<IllustrationConstructionDark style={{ width: 150, height: 150 }} />}
|
|
818
|
+
description={'建设中'}
|
|
819
|
+
style={emptyStyle}
|
|
820
|
+
/>
|
|
821
|
+
<Empty
|
|
822
|
+
image={<IllustrationIdle style={{ width: 150, height: 150 }} />}
|
|
823
|
+
darkModeImage={<IllustrationIdleDark style={{ width: 150, height: 150 }} />}
|
|
824
|
+
description={'神游四方'}
|
|
825
|
+
style={emptyStyle}
|
|
826
|
+
/>
|
|
827
|
+
</div>
|
|
828
|
+
</Row>
|
|
829
|
+
<Row>
|
|
830
|
+
<Timeline>
|
|
831
|
+
<Timeline.Item time="2019-07-14 10:35" type="ongoing">
|
|
832
|
+
审核中
|
|
833
|
+
</Timeline.Item>
|
|
834
|
+
<Timeline.Item time="2019-06-13 16:17" type="success">
|
|
835
|
+
发布成功
|
|
836
|
+
</Timeline.Item>
|
|
837
|
+
<Timeline.Item time="2019-05-14 18:34" type="error">
|
|
838
|
+
审核失败
|
|
839
|
+
</Timeline.Item>
|
|
840
|
+
</Timeline>
|
|
841
|
+
<div style={{ width: 200 }}>
|
|
842
|
+
<Progress className="mb12" percent={10} stroke="#fc8800" />
|
|
843
|
+
<Progress className="mb12" percent={25} stroke="#f93920" />
|
|
844
|
+
<Progress className="mb12" percent={50} />
|
|
845
|
+
<Progress className="mb12" percent={80} />
|
|
846
|
+
<Progress className="mb12" percent={80} size="large" />
|
|
847
|
+
<Progress className="mb12" percent={80} style={{ height: '8px' }} />
|
|
848
|
+
</div>
|
|
849
|
+
<div className="mb12">
|
|
850
|
+
<Skeleton placeholder={placeholder} loading={true} active>
|
|
851
|
+
<div style={{
|
|
852
|
+
display: 'flex',
|
|
853
|
+
alignItems: 'flex-start',
|
|
854
|
+
}}>
|
|
855
|
+
<Avatar color="blue" style={{ marginRight: 12 }}>
|
|
856
|
+
UI
|
|
857
|
+
</Avatar>
|
|
858
|
+
<div>
|
|
859
|
+
<h3>Semi UI</h3>
|
|
860
|
+
<p>Hi, Bytedance dance dance.</p>
|
|
861
|
+
<p>Hi, Bytedance dance dance.</p>
|
|
862
|
+
<p>Hi, Bytedance dance dance.</p>
|
|
863
|
+
</div>
|
|
864
|
+
</div>
|
|
865
|
+
</Skeleton>
|
|
866
|
+
</div>
|
|
867
|
+
<div>
|
|
868
|
+
<Spin size="small" />
|
|
869
|
+
<Spin size="middle" />
|
|
870
|
+
<Spin size="large" />
|
|
871
|
+
</div>
|
|
872
|
+
</Row>
|
|
873
|
+
<Row>
|
|
874
|
+
<div style={{ width: 300 }}>
|
|
875
|
+
<Slider
|
|
876
|
+
step={1}
|
|
877
|
+
value={overflowWidth}
|
|
878
|
+
onChange={value => setOverflowWidth(value)}
|
|
879
|
+
/>
|
|
880
|
+
<div style={{ width: `${overflowWidth}%` }}>
|
|
881
|
+
<OverflowList
|
|
882
|
+
items={items}
|
|
883
|
+
overflowRenderer={renderOverflow}
|
|
884
|
+
visibleItemRenderer={renderOverflowItem}
|
|
885
|
+
/>
|
|
886
|
+
</div>
|
|
887
|
+
</div>
|
|
888
|
+
</Row>
|
|
889
|
+
<Row id="设计语言">
|
|
890
|
+
<Table
|
|
891
|
+
style={{ minHeight: 350 }}
|
|
892
|
+
columns={columns}
|
|
893
|
+
dataSource={dataSource}
|
|
894
|
+
pagination={false}
|
|
895
|
+
empty={empty}
|
|
896
|
+
/>
|
|
897
|
+
</Row>
|
|
898
|
+
<Row id="物料平台">
|
|
899
|
+
<Form
|
|
900
|
+
initValues={initValues}
|
|
901
|
+
style={{ padding: 10, width: '100%' }}
|
|
902
|
+
onValueChange={v => console.log(v)}
|
|
903
|
+
>
|
|
904
|
+
<Form.Section text={'基本信息'}>
|
|
905
|
+
<Row>
|
|
906
|
+
<Col span={12}>
|
|
907
|
+
<Form.Input
|
|
908
|
+
field="name"
|
|
909
|
+
label="名称(Input)"
|
|
910
|
+
initValue={'mikeya'}
|
|
911
|
+
style={style}
|
|
912
|
+
trigger="blur"
|
|
913
|
+
/>
|
|
914
|
+
</Col>
|
|
915
|
+
<Col span={12}>
|
|
916
|
+
<Form.DatePicker
|
|
917
|
+
field="date"
|
|
918
|
+
label="日期(DatePicker)"
|
|
919
|
+
style={style}
|
|
920
|
+
initValue={new Date()}
|
|
921
|
+
placeholder="请选择生效日期"
|
|
922
|
+
/>
|
|
923
|
+
</Col>
|
|
924
|
+
</Row>
|
|
925
|
+
<Row>
|
|
926
|
+
<Col span={12}>
|
|
927
|
+
<Form.Select
|
|
928
|
+
field="role"
|
|
929
|
+
style={style}
|
|
930
|
+
label="角色(Select)"
|
|
931
|
+
placeholder="请选择你的角色"
|
|
932
|
+
>
|
|
933
|
+
<Select.Option value="operate">运营</Select.Option>
|
|
934
|
+
<Select.Option value="rd">开发</Select.Option>
|
|
935
|
+
<Select.Option value="pm">产品</Select.Option>
|
|
936
|
+
<Select.Option value="ued">设计</Select.Option>
|
|
937
|
+
</Form.Select>
|
|
938
|
+
</Col>
|
|
939
|
+
<Col span={12}>
|
|
940
|
+
<Form.Select
|
|
941
|
+
field="business"
|
|
942
|
+
multiple
|
|
943
|
+
style={style}
|
|
944
|
+
placeholder="请选择业务线"
|
|
945
|
+
label="业务线(多选Select)"
|
|
946
|
+
extraText={
|
|
947
|
+
<div
|
|
948
|
+
style={{
|
|
949
|
+
color: 'rgba(var(--semi-blue-5), 1)',
|
|
950
|
+
fontSize: 14,
|
|
951
|
+
userSelect: 'none',
|
|
952
|
+
cursor: 'pointer',
|
|
953
|
+
}}
|
|
954
|
+
>
|
|
955
|
+
没有找到合适的业务线?
|
|
956
|
+
</div>
|
|
957
|
+
}
|
|
958
|
+
>
|
|
959
|
+
<Select.Option value="abc">Semi</Select.Option>
|
|
960
|
+
<Select.Option value="ulikeCam">轻颜相机</Select.Option>
|
|
961
|
+
<Select.Option value="toutiao">今日头条</Select.Option>
|
|
962
|
+
</Form.Select>
|
|
963
|
+
</Col>
|
|
964
|
+
</Row>
|
|
965
|
+
<Row>
|
|
966
|
+
<Col span={12}>
|
|
967
|
+
<Form.Cascader
|
|
968
|
+
placeholder="请选择所在地区"
|
|
969
|
+
treeData={treeData}
|
|
970
|
+
field="area"
|
|
971
|
+
label="地区(Cascader)"
|
|
972
|
+
style={style}
|
|
973
|
+
></Form.Cascader>
|
|
974
|
+
</Col>
|
|
975
|
+
<Col span={12}>
|
|
976
|
+
<Form.TreeSelect
|
|
977
|
+
field="tree"
|
|
978
|
+
style={style}
|
|
979
|
+
label="节点(TreeSelect)"
|
|
980
|
+
placeholder="请选择服务节点"
|
|
981
|
+
treeData={treeData}
|
|
982
|
+
filterTreeNode
|
|
983
|
+
></Form.TreeSelect>
|
|
984
|
+
</Col>
|
|
985
|
+
</Row>
|
|
986
|
+
<Row>
|
|
987
|
+
<Col span={12}>
|
|
988
|
+
<Form.TagInput
|
|
989
|
+
field="product"
|
|
990
|
+
label="产品(TagInput)"
|
|
991
|
+
placeholder="请输入产品"
|
|
992
|
+
style={style}
|
|
993
|
+
/>
|
|
994
|
+
</Col>
|
|
995
|
+
<Col span={12}>
|
|
996
|
+
<Form.AutoComplete
|
|
997
|
+
field="email"
|
|
998
|
+
label="邮箱(AutoComplete)"
|
|
999
|
+
data={stringData}
|
|
1000
|
+
showClear
|
|
1001
|
+
prefix={<IconSearch />}
|
|
1002
|
+
placeholder="搜索... "
|
|
1003
|
+
onSearch={handleStringSearch}
|
|
1004
|
+
style={style}
|
|
1005
|
+
/>
|
|
1006
|
+
</Col>
|
|
1007
|
+
</Row>
|
|
1008
|
+
<Row>
|
|
1009
|
+
<Col span={24}>
|
|
1010
|
+
<Form.Upload
|
|
1011
|
+
field="files"
|
|
1012
|
+
label="证明文件(Upload)"
|
|
1013
|
+
action="//semi.design/api/upload"
|
|
1014
|
+
>
|
|
1015
|
+
<Button icon={<IconUpload />} theme="light">
|
|
1016
|
+
点击上传
|
|
1017
|
+
</Button>
|
|
1018
|
+
</Form.Upload>
|
|
1019
|
+
</Col>
|
|
1020
|
+
</Row>
|
|
1021
|
+
</Form.Section>
|
|
1022
|
+
<Form.Section text="资源详情">
|
|
1023
|
+
<Row>
|
|
1024
|
+
<Col span={12}>
|
|
1025
|
+
<Form.TextArea
|
|
1026
|
+
style={{ ...style, height: 120 }}
|
|
1027
|
+
field="description"
|
|
1028
|
+
label="申请理由(TextArea)"
|
|
1029
|
+
placeholder="请填写申请资源理由"
|
|
1030
|
+
/>
|
|
1031
|
+
</Col>
|
|
1032
|
+
<Col span={12}>
|
|
1033
|
+
<Form.CheckboxGroup
|
|
1034
|
+
field="type"
|
|
1035
|
+
direction="horizontal"
|
|
1036
|
+
label="申请类型(CheckboxGroup)"
|
|
1037
|
+
initValue={['user', 'admin']}
|
|
1038
|
+
rules={[{ required: true }]}
|
|
1039
|
+
>
|
|
1040
|
+
<Form.Checkbox value="admin">admin</Form.Checkbox>
|
|
1041
|
+
<Form.Checkbox value="user">user</Form.Checkbox>
|
|
1042
|
+
<Form.Checkbox value="guest">guest</Form.Checkbox>
|
|
1043
|
+
<Form.Checkbox value="root">root</Form.Checkbox>
|
|
1044
|
+
</Form.CheckboxGroup>
|
|
1045
|
+
<Form.RadioGroup
|
|
1046
|
+
field="isMonopolize"
|
|
1047
|
+
label="是否独占资源(Radio)"
|
|
1048
|
+
rules={[
|
|
1049
|
+
{ type: 'boolean' },
|
|
1050
|
+
{ required: true, message: '必须选择是否独占 ' },
|
|
1051
|
+
]}
|
|
1052
|
+
>
|
|
1053
|
+
<Form.Radio value={true}>是</Form.Radio>
|
|
1054
|
+
<Form.Radio value={false}>否</Form.Radio>
|
|
1055
|
+
</Form.RadioGroup>
|
|
1056
|
+
</Col>
|
|
1057
|
+
</Row>
|
|
1058
|
+
<Row>
|
|
1059
|
+
<Col span={12}>
|
|
1060
|
+
<Form.TimePicker
|
|
1061
|
+
field="time"
|
|
1062
|
+
label="截止时刻(TimePicker)"
|
|
1063
|
+
style={{ width: '90%' }}
|
|
1064
|
+
/>
|
|
1065
|
+
</Col>
|
|
1066
|
+
<Col span={12}>
|
|
1067
|
+
<Form.InputNumber
|
|
1068
|
+
field="number"
|
|
1069
|
+
label="申请数量(InputNumber)"
|
|
1070
|
+
initValue={20}
|
|
1071
|
+
style={style}
|
|
1072
|
+
/>
|
|
1073
|
+
</Col>
|
|
1074
|
+
</Row>
|
|
1075
|
+
<Row>
|
|
1076
|
+
<Col span={12}>
|
|
1077
|
+
<Form.Slider
|
|
1078
|
+
field="range"
|
|
1079
|
+
label="资源使用报警阈值(%)(Slider)"
|
|
1080
|
+
initValue={10}
|
|
1081
|
+
style={{ width: '90%' }}
|
|
1082
|
+
/>
|
|
1083
|
+
</Col>
|
|
1084
|
+
<Col span={12}>
|
|
1085
|
+
<Form.Switch field="switch" label="开关(Switch)" />
|
|
1086
|
+
</Col>
|
|
1087
|
+
</Row>
|
|
1088
|
+
<Row>
|
|
1089
|
+
<Col span={12}>
|
|
1090
|
+
<Form.Rating
|
|
1091
|
+
field="rating"
|
|
1092
|
+
label="满意度(Rating)"
|
|
1093
|
+
initValue={2}
|
|
1094
|
+
style={{ width: '90%' }}
|
|
1095
|
+
/>
|
|
1096
|
+
</Col>
|
|
1097
|
+
</Row>
|
|
1098
|
+
</Form.Section>
|
|
1099
|
+
<Form.Checkbox value="false" field="agree" noLabel={true}>
|
|
1100
|
+
我已阅读并清楚相关规定(Checkbox)
|
|
1101
|
+
</Form.Checkbox>
|
|
1102
|
+
<Button type="primary" htmlType="submit" className="btn-margin-right">
|
|
1103
|
+
提交(submit)
|
|
1104
|
+
</Button>
|
|
1105
|
+
<Button htmlType="reset">重置(reset)</Button>
|
|
1106
|
+
</Form>
|
|
1107
|
+
</Row>
|
|
1108
|
+
<Row>
|
|
1109
|
+
<Col span="12">
|
|
1110
|
+
<Tree
|
|
1111
|
+
treeData={treeData}
|
|
1112
|
+
defaultExpandAll
|
|
1113
|
+
style={{
|
|
1114
|
+
width: 260,
|
|
1115
|
+
height: 420,
|
|
1116
|
+
border: '1px solid var(--semi-color-border)'
|
|
1117
|
+
}}
|
|
1118
|
+
/>
|
|
1119
|
+
</Col>
|
|
1120
|
+
<Col span="12">
|
|
1121
|
+
<Transfer
|
|
1122
|
+
style={{ width: 568, height: 416 }}
|
|
1123
|
+
dataSource={transferData}
|
|
1124
|
+
onChange={(values, items) => console.log(values, items)}
|
|
1125
|
+
/>
|
|
1126
|
+
</Col>
|
|
1127
|
+
</Row>
|
|
1128
|
+
<Row id="主题商店">
|
|
1129
|
+
<List
|
|
1130
|
+
grid={{
|
|
1131
|
+
gutter: 12,
|
|
1132
|
+
xs: 0,
|
|
1133
|
+
sm: 0,
|
|
1134
|
+
md: 12,
|
|
1135
|
+
lg: 8,
|
|
1136
|
+
xl: 8,
|
|
1137
|
+
xxl: 6,
|
|
1138
|
+
}}
|
|
1139
|
+
dataSource={listData}
|
|
1140
|
+
renderItem={item => (
|
|
1141
|
+
<List.Item style={listItemStyle}>
|
|
1142
|
+
<div>
|
|
1143
|
+
<h3 style={{ color: 'var(--semi-color-text-0)', fontWeight: 500 }}>
|
|
1144
|
+
{item.title}
|
|
1145
|
+
</h3>
|
|
1146
|
+
<Descriptions
|
|
1147
|
+
align="center"
|
|
1148
|
+
size="small"
|
|
1149
|
+
row
|
|
1150
|
+
data={[
|
|
1151
|
+
{
|
|
1152
|
+
key: '满意度',
|
|
1153
|
+
value: (
|
|
1154
|
+
<Rating allowHalf size="small" value={item.rating} />
|
|
1155
|
+
),
|
|
1156
|
+
},
|
|
1157
|
+
{ key: '反馈数', value: item.feedbacks },
|
|
1158
|
+
]}
|
|
1159
|
+
/>
|
|
1160
|
+
<div
|
|
1161
|
+
style={{
|
|
1162
|
+
margin: '12px 0',
|
|
1163
|
+
display: 'flex',
|
|
1164
|
+
justifyContent: 'flex-end',
|
|
1165
|
+
}}
|
|
1166
|
+
>
|
|
1167
|
+
<ButtonGroup theme="borderless" style={{ marginTop: 8 }}>
|
|
1168
|
+
<Button>编辑</Button>
|
|
1169
|
+
<Button>更多</Button>
|
|
1170
|
+
</ButtonGroup>
|
|
1171
|
+
</div>
|
|
1172
|
+
</div>
|
|
1173
|
+
</List.Item>
|
|
1174
|
+
)}
|
|
1175
|
+
/>
|
|
1176
|
+
<div style={{ display: 'flex', flexWrap: 'wrap' }}>
|
|
1177
|
+
<Descriptions align="center" data={descriptionData} style={descriptionStyle} />
|
|
1178
|
+
<Descriptions align="justify" data={descriptionData} style={descriptionStyle} />
|
|
1179
|
+
<Descriptions align="left" data={descriptionData} style={descriptionStyle} />
|
|
1180
|
+
<Descriptions align="plain" data={descriptionData} style={descriptionStyle} />
|
|
1181
|
+
</div>
|
|
1182
|
+
<div
|
|
1183
|
+
style={{
|
|
1184
|
+
backgroundColor: 'var(--semi-color-fill-0)',
|
|
1185
|
+
padding: 20,
|
|
1186
|
+
}}
|
|
1187
|
+
>
|
|
1188
|
+
<Row gutter={[16, 16]}>
|
|
1189
|
+
<Col span={8}>
|
|
1190
|
+
<Card title="Card Title" bordered={false}>
|
|
1191
|
+
Card Content
|
|
1192
|
+
</Card>
|
|
1193
|
+
</Col>
|
|
1194
|
+
<Col span={8}>
|
|
1195
|
+
<Card title="Card Title" bordered={false}>
|
|
1196
|
+
Card Content
|
|
1197
|
+
</Card>
|
|
1198
|
+
</Col>
|
|
1199
|
+
<Col span={8}>
|
|
1200
|
+
<Card title="Card Title" bordered={false}>
|
|
1201
|
+
Card Content
|
|
1202
|
+
</Card>
|
|
1203
|
+
</Col>
|
|
1204
|
+
</Row>
|
|
1205
|
+
<Row gutter={[16, 16]}>
|
|
1206
|
+
<Col span={16}>
|
|
1207
|
+
<Card title="Card Title" bordered={false}>
|
|
1208
|
+
Card Content
|
|
1209
|
+
</Card>
|
|
1210
|
+
</Col>
|
|
1211
|
+
<Col span={8}>
|
|
1212
|
+
<Card title="Card Title" bordered={false}>
|
|
1213
|
+
Card Content
|
|
1214
|
+
</Card>
|
|
1215
|
+
</Col>
|
|
1216
|
+
</Row>
|
|
1217
|
+
</div>
|
|
1218
|
+
</Row>
|
|
1219
|
+
<Row>
|
|
1220
|
+
<Calendar mode="month" />
|
|
1221
|
+
</Row>
|
|
1222
|
+
<Row>
|
|
1223
|
+
<Collapse className="mt12">
|
|
1224
|
+
<Collapse.Panel header="This is panel header 1" itemKey="1">
|
|
1225
|
+
<p>Hi, bytedance dance dance. This is the docsite of Semi UI. </p>
|
|
1226
|
+
</Collapse.Panel>
|
|
1227
|
+
<Collapse.Panel header="This is panel header 2" itemKey="2">
|
|
1228
|
+
<p>Hi, bytedance dance dance. This is the docsite of Semi UI. </p>
|
|
1229
|
+
</Collapse.Panel>
|
|
1230
|
+
<Collapse.Panel header="This is panel header 3" itemKey="3">
|
|
1231
|
+
<p>Hi, bytedance dance dance. This is the docsite of Semi UI. </p>
|
|
1232
|
+
</Collapse.Panel>
|
|
1233
|
+
</Collapse>
|
|
1234
|
+
<Tabs type="button" className="mt12">
|
|
1235
|
+
<TabPane tab="文档" itemKey="1">
|
|
1236
|
+
文档
|
|
1237
|
+
</TabPane>
|
|
1238
|
+
<TabPane tab="快速起步" itemKey="2">
|
|
1239
|
+
快速起步
|
|
1240
|
+
</TabPane>
|
|
1241
|
+
<TabPane tab="帮助" itemKey="3">
|
|
1242
|
+
帮助
|
|
1243
|
+
</TabPane>
|
|
1244
|
+
</Tabs>
|
|
1245
|
+
<div className="mt12" style={{ height: 200 }}>
|
|
1246
|
+
<Button onClick={() => setCollapsibleOpen(!isOpen)}>Toggle</Button>
|
|
1247
|
+
<Collapsible isOpen={isOpen}>
|
|
1248
|
+
<ul>
|
|
1249
|
+
<li>
|
|
1250
|
+
<p>Semi Design 以内容优先进行设计。</p>
|
|
1251
|
+
</li>
|
|
1252
|
+
<li>
|
|
1253
|
+
<p>更容易地自定义主题。</p>
|
|
1254
|
+
</li>
|
|
1255
|
+
<li>
|
|
1256
|
+
<p>适用国际化场景。</p>
|
|
1257
|
+
</li>
|
|
1258
|
+
<li>
|
|
1259
|
+
<p>效率场景加入人性化关怀。</p>
|
|
1260
|
+
</li>
|
|
1261
|
+
</ul>
|
|
1262
|
+
</Collapsible>
|
|
1263
|
+
</div>
|
|
1264
|
+
<Anchor style={{ position: 'fixed', top: 150, right: 50 }}>
|
|
1265
|
+
<Anchor.Link href="#基本示例" title="基本示例" />
|
|
1266
|
+
<Anchor.Link href="#组件" title="组件" />
|
|
1267
|
+
<Anchor.Link href="#设计语言" title="设计语言" />
|
|
1268
|
+
<Anchor.Link href="#物料平台" title="物料平台" />
|
|
1269
|
+
<Anchor.Link href="#主题商店" title="主题商店" />
|
|
1270
|
+
</Anchor>
|
|
1271
|
+
<BackTop style={{ bottom: 100, right: 50 }} target={() => document && document.querySelector('.semi-layout-content' || window)} visibilityHeight={-1} />
|
|
1272
|
+
</Row>
|
|
1273
|
+
</div>
|
|
1274
|
+
</Content>
|
|
1275
|
+
</Layout>
|
|
1276
|
+
<Footer
|
|
1277
|
+
style={{
|
|
1278
|
+
display: 'flex',
|
|
1279
|
+
justifyContent: 'space-between',
|
|
1280
|
+
padding: '20px',
|
|
1281
|
+
color: 'var(--semi-color-text-2)',
|
|
1282
|
+
backgroundColor: 'rgba(var(--semi-grey-0), 1)',
|
|
1283
|
+
}}
|
|
1284
|
+
>
|
|
1285
|
+
<span
|
|
1286
|
+
style={{
|
|
1287
|
+
display: 'flex',
|
|
1288
|
+
alignItems: 'center',
|
|
1289
|
+
}}
|
|
1290
|
+
>
|
|
1291
|
+
<IconBytedanceLogo size="large" style={{ marginRight: '8px' }} />
|
|
1292
|
+
<span>{`Copyright © ${(new Date()).getFullYear()} Semi Design. All Rights Reserved. `}</span>
|
|
1293
|
+
</span>
|
|
1294
|
+
<span>
|
|
1295
|
+
<span style={{ marginRight: '24px' }}>平台客服</span>
|
|
1296
|
+
<span>反馈建议</span>
|
|
1297
|
+
</span>
|
|
1298
|
+
</Footer>
|
|
1299
|
+
</Layout>
|
|
1300
|
+
</>
|
|
1301
|
+
);
|
|
1302
|
+
}
|