| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302 |
- import React, { useEffect, useState } from 'react';
- import {
- Avatar,
- Badge,
- Breadcrumb,
- Button,
- Layout,
- Nav,
- Pagination,
- Popover,
- Rating,
- Row,
- Steps,
- Space,
- Tag,
- Timeline,
- Tooltip,
- Col,
- Typography,
- Anchor,
- BackTop,
- Tabs,
- TabPane,
- Calendar,
- Card,
- Collapse,
- Descriptions,
- Dropdown,
- Empty,
- List,
- ButtonGroup,
- Modal,
- OverflowList,
- Slider,
- SideSheet,
- Table,
- Banner,
- Popconfirm,
- Notification,
- Progress,
- Toast,
- Spin,
- Form,
- Select,
- Collapsible,
- Skeleton,
- Tree,
- Transfer
- } from '@douyinfe/semi-ui';
- import {
- IconSemiLogo,
- IconBell,
- IconHelpCircle,
- IconBytedanceLogo,
- IconHome,
- IconHistogram,
- IconLive,
- IconSetting,
- IconEdit,
- IconCamera,
- IconAlarm,
- IconBookmark,
- IconDuration,
- IconFolder,
- IconDelete,
- IconUpload,
- IconSun,
- IconMoon,
- IconSearch
- } from '@douyinfe/semi-icons';
- import {
- IllustrationConstruction,
- IllustrationConstructionDark,
- IllustrationNoResult,
- IllustrationNoResultDark,
- IllustrationSuccess,
- IllustrationSuccessDark,
- IllustrationFailure,
- IllustrationFailureDark,
- IllustrationNoAccess,
- IllustrationNoAccessDark,
- IllustrationNoContent,
- IllustrationNoContentDark,
- IllustrationNotFound,
- IllustrationNotFoundDark,
- IllustrationIdle,
- IllustrationIdleDark
- } from '@douyinfe/semi-illustrations';
- import './a11y.scss';
- SemiA11y.storyName = 'Semi A11y';
- const raw = [
- {
- key: '1',
- name: 'Semi Design 设计稿标题可能有点长这时候应该显示 Tooltip.fig',
- nameIconSrc: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/figma-icon.png',
- size: '2M',
- owner: '姜鹏志',
- updateTime: '2020-02-02 05:13',
- avatarBg: 'grey',
- },
- {
- key: '2',
- name: 'Semi Design 分享演示文稿',
- nameIconSrc: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/docs-icon.png',
- size: '2M',
- owner: '郝宣',
- updateTime: '2020-01-17 05:31',
- avatarBg: 'red',
- },
- {
- key: '3',
- name: '设计文档',
- nameIconSrc: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/docs-icon.png',
- size: '34KB',
- owner: 'Zoey Edwards',
- updateTime: '2020-01-26 11:01',
- avatarBg: 'light-blue',
- },
- {
- key: '4',
- name: 'Semi Pro 设计文档可能也有点长所以也会显示Tooltip',
- nameIconSrc: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/docs-icon.png',
- size: '34KB',
- owner: '姜琪',
- updateTime: '2020-01-26 11:01',
- avatarBg: 'green',
- },
- ];
- const treeData = [
- {
- label: '亚洲',
- value: 'Asia',
- key: '0',
- children: [
- {
- label: '中国',
- value: 'China',
- key: '0-0',
- children: [
- {
- label: '北京',
- value: 'Beijing',
- key: '0-0-0',
- },
- {
- label: '上海',
- value: 'Shanghai',
- key: '0-0-1',
- },
- ],
- },
- ],
- },
- {
- label: '北美洲',
- value: 'North America',
- key: '1',
- }
- ];
- const listData = [
- {
- title: '审核管理平台',
- rating: 4.5,
- feedbacks: 124,
- },
- {
- title: '扁鹊',
- rating: 4,
- feedbacks: 108,
- },
- {
- title: '直播审核平台',
- rating: 3.5,
- feedbacks: 244,
- },
- {
- title: '抖音安全测试',
- feedbacks: 189,
- },
- {
- title: '内容平台',
- rating: 3,
- feedbacks: 128,
- },
- {
- title: '策略平台',
- rating: 4,
- feedbacks: 156,
- },
- ];
- const style = { width: '90%' };
- const initValues = {
- name: 'semi',
- business: ['ulikeCam'],
- role: 'ued',
- switch: true,
- files: [
- {
- uid: '1',
- name: 'vigo.png',
- status: 'success',
- size: '130KB',
- preview: true,
- url:
- 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/vigo.png',
- },
- {
- uid: '2',
- name: 'jiafang1.jpeg',
- status: 'validateFail',
- size: '222KB',
- percent: 50,
- preview: true,
- fileInstance: new File([new ArrayBuffer(2048)], 'jiafang1.jpeg', { type: 'image/jpeg' }),
- url:
- 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/bag.jpeg',
- },
- {
- uid: '3',
- name: 'jiafang2.jpeg',
- status: 'uploading',
- size: '222KB',
- percent: 50,
- preview: true,
- fileInstance: new File([new ArrayBuffer(2048)], 'jiafang2.jpeg', { type: 'image/jpeg' }),
- url:
- 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/bag.jpeg',
- },
- ],
- };
- const listItemStyle = {
- border: '1px solid var(--semi-color-border)',
- backgroundColor: 'var(--semi-color-bg-2)',
- borderRadius: '3px',
- paddingLeft: '20px',
- margin: '8px 2px',
- };
- const descriptionData = [
- { key: '实际用户数量', value: '1,480,000' },
- { key: '7天留存', value: '98%' },
- { key: '安全等级', value: '3级' },
- { key: '垂类标签', value: <Tag style={{ margin: 0 }}>电商</Tag> },
- { key: '认证状态', value: '未认证' },
- ];
- const descriptionStyle = {
- boxShadow: 'var(--semi-shadow-elevated)',
- backgroundColor: 'var(--semi-color-bg-2)',
- borderRadius: '4px',
- padding: '10px',
- margin: '10px',
- width: '200px',
- };
- const emptyStyle = {
- padding: 30,
- };
- const transferData = Array.from({ length: 100 }, (v, i) => {
- return {
- label: `选项名称 ${i}`,
- value: i,
- disabled: false,
- key: i,
- };
- });
- const items = [
- { icon: <IconAlarm style={{ marginRight: 4 }} />, key: 'alarm' },
- { icon: <IconBookmark style={{ marginRight: 4 }} />, key: 'bookmark' },
- { icon: <IconCamera style={{ marginRight: 4 }} />, key: 'camera' },
- { icon: <IconDuration style={{ marginRight: 4 }} />, key: 'duration' },
- { icon: <IconEdit style={{ marginRight: 4 }} />, key: 'edit' },
- { icon: <IconFolder style={{ marginRight: 4 }} />, key: 'folder' },
- ];
- const empty = (
- <Empty
- image={<IllustrationNoResult />}
- darkModeImage={<IllustrationNoResultDark />}
- description={'搜索无结果'}
- />
- );
- const placeholder = (
- <div style={style}>
- <Skeleton.Avatar style={{ marginRight: 12 }} />
- <div>
- <Skeleton.Title style={{ width: 120, marginBottom: 12, marginTop: 12 }} />
- <Skeleton.Paragraph style={{ width: 240 }} rows={3} />
- </div>
- </div>
- );
- export default function SemiA11y() {
- const { Header, Footer, Sider, Content } = Layout;
- const { Title, Text, Paragraph } = Typography;
- const [modalVisible, setModalVisible] = useState(false);
- const [sideSheetVisible, setSideSheetVisible] = useState(false);
- const [overflowWidth, setOverflowWidth] = useState(100);
- const [isOpen, setCollapsibleOpen] = useState(false);
- const [dataSource, setData] = useState(raw);
- const [mode, setMode] = useState('light');
- const [stringData, setStringData] = useState([]);
- const removeRecord = key => {
- let newDataSource = [...dataSource];
- if (key != null) {
- let idx = newDataSource.findIndex(data => data.key === key);
- if (idx > -1) {
- newDataSource.splice(idx, 1);
- setData(newDataSource);
- }
- }
- };
- const columns = [
- {
- title: '标题',
- dataIndex: 'name',
- width: 400,
- render: (text, record, index) => {
- return (
- <span style={{ display: 'flex', alignItems: 'center' }}>
- <Avatar
- size="small"
- shape="square"
- src={record.nameIconSrc}
- style={{ marginRight: 12 }}
- ></Avatar>
- {/* 宽度计算方式为单元格设置宽度 - 非文本内容宽度 */}
- <Text heading={5} ellipsis={{ showTooltip: true }} style={{ width: 'calc(400px - 76px)' }}>
- {text}
- </Text>
- </span>
- );
- },
- },
- {
- title: '大小',
- dataIndex: 'size',
- width: 150,
- },
- {
- title: '所有者',
- dataIndex: 'owner',
- render: (text, record, index) => {
- return (
- <div>
- <Avatar size="small" color={record.avatarBg} style={{ marginRight: 4 }}>
- {typeof text === 'string' && text.slice(0, 1)}
- </Avatar>
- {text}
- </div>
- );
- },
- },
- {
- title: '更新日期',
- dataIndex: 'updateTime',
- },
- {
- title: '',
- width: 100,
- dataIndex: 'operate',
- render: (text, record) => (
- <Button icon={<IconDelete />} theme="borderless" onClick={() => removeRecord(record.key)} />
- ),
- },
- ];
- const onConfirm = () => {
- Toast.success('确认保存!');
- };
- const onCancel = () => {
- Toast.warning('取消保存!');
- };
- const switchMode = () => {
- const body = document.body;
- if (body.hasAttribute('theme-mode')) {
- body.removeAttribute('theme-mode');
- setMode('light');
- } else {
- body.setAttribute('theme-mode', 'dark');
- setMode('dark');
- }
- };
- const handleStringSearch = (value) => {
- let result;
- if (value) {
- result = ['gmail.com', '163.com', 'qq.com'].map(domain => `${value}@${domain}`);
- } else {
- result = [];
- }
- setStringData(result);
- };
- const renderOverflow = items => {
- return items.length ? <Tag style={{ flex: '0 0 auto' }}>+{items.length}</Tag> : null;
- };
- const renderOverflowItem = (item, ind) => {
- return (
- <Tag color="blue" key={item.key} style={{ marginRight: 8, flex: '0 0 auto' }}>
- {item.icon}
- {item.key}
- </Tag>
- );
- };
- useEffect(() => {
- document.body && document.body.setAttribute('data-page', 'a11y');
- return () => {
- document.body && document.body.removeAttribute('data-page');
- };
- }, []);
- return (
- <>
- <Layout style={{ border: '1px solid var(--semi-color-border)' }}>
- <Header style={{ backgroundColor: 'var(--semi-color-bg-1)' }}>
- <div>
- <Nav mode="horizontal" defaultSelectedKeys={['Home']}>
- <Nav.Header>
- <IconSemiLogo style={{ width: '96px', height: '36px', fontSize: 36 }} />
- <span
- style={{
- color: 'var(--semi-color-text-2)',
- }}
- >
- <span
- style={{
- marginRight: '24px',
- color: 'var(--semi-color-text-0)',
- fontWeight: '600',
- }}
- >
- 模版推荐
- </span>
- <span style={{ marginRight: '24px' }}>所有模版</span>
- <span>我的模版</span>
- </span>
- </Nav.Header>
- <Nav.Footer>
- <Button
- theme="borderless"
- icon={mode === 'dark' ? <IconSun size="large" /> : <IconMoon size="large" />}
- style={{
- color: 'var(--semi-color-text-2)',
- marginRight: '12px',
- }}
- onClick={switchMode}
- />
- <Button
- theme="borderless"
- icon={<IconBell size="large" />}
- style={{
- color: 'var(--semi-color-text-2)',
- marginRight: '12px',
- }}
- />
- <Button
- theme="borderless"
- icon={<IconHelpCircle size="large" />}
- style={{
- color: 'var(--semi-color-text-2)',
- marginRight: '12px',
- }}
- />
- <Avatar color="orange" size="small">
- YJ
- </Avatar>
- </Nav.Footer>
- </Nav>
- </div>
- </Header>
- <Layout>
- <Sider style={{ backgroundColor: 'var(--semi-color-bg-1)' }}>
- <Nav
- style={{ maxWidth: 220, height: '100%' }}
- defaultSelectedKeys={['Home']}
- items={[
- { itemKey: 'Home', text: '首页', icon: <IconHome size="large" /> },
- { itemKey: 'Histogram', text: '基础数据', icon: <IconHistogram size="large" /> },
- { itemKey: 'Live', text: '测试功能', icon: <IconLive size="large" /> },
- { itemKey: 'Setting', text: '设置', icon: <IconSetting size="large" /> },
- ]}
- footer={{
- collapseButton: true,
- }}
- />
- </Sider>
- <Content
- style={{
- padding: '24px',
- backgroundColor: 'var(--semi-color-bg-1)',
- maxHeight: 'calc(100vh - 120px)',
- }}
- >
- <Breadcrumb
- style={{
- marginBottom: '24px',
- }}
- routes={['首页', '当这个页面标题很长时需要省略', '上一页', '详情页']}
- />
- <div
- style={{
- borderRadius: '10px',
- border: '1px solid var(--semi-color-border)',
- padding: '32px',
- }}
- className="rows-container"
- >
- <Row id="基本示例">
- <Pagination total={80} showSizeChanger></Pagination>
- <Steps current={1}>
- <Steps.Step title="Finished" description="This is a description." />
- <Steps.Step title="In Progress" description="This is a description." />
- <Steps.Step title="Waiting" description="This is a description." />
- </Steps>
- <Steps current={1} status="error">
- <Steps.Step title="Finished" description="This is a description" />
- <Steps.Step title="In Process" description="This is a description" />
- <Steps.Step title="Waiting" description="This is a description" />
- </Steps>
- </Row>
- <Row>
- <div style={{ display: 'flex' }}>
- <div style={{ padding: 8 }}>
- <Badge count={5} theme="solid">
- <Avatar color="blue" shape="square">
- XZ
- </Avatar>
- </Badge>
- </div>
- <div style={{ padding: 8 }}>
- <Badge count={5} theme="light">
- <Avatar color="cyan" shape="square">
- YB
- </Avatar>
- </Badge>
- </div>
- <div style={{ padding: 8 }}>
- <Badge count={5} theme="inverted">
- <Avatar color="indigo" shape="square">
- LX
- </Avatar>
- </Badge>
- </div>
- <div style={{ padding: 8 }}>
- <Badge dot theme="solid">
- <Avatar color="light-blue" shape="square">
- YZ
- </Avatar>
- </Badge>
- </div>
- <div style={{ padding: 8 }}>
- <Badge dot theme="light">
- <Avatar color="teal" shape="square">
- HW
- </Avatar>
- </Badge>
- </div>
- <div
- style={{
- padding: '8px',
- borderRadius: '4px',
- backgroundColor: 'var(--semi-color-fill-0)',
- }}
- >
- <Badge dot theme="inverted">
- <Avatar color="green" shape="square">
- XM
- </Avatar>
- </Badge>
- </div>
- </div>
- <div>
- <Space wrap>
- <Tag color="grey">grey tag</Tag>
- <Tag color="blue">blue tag</Tag>
- <Tag color="blue" type="ghost">
- ghost tag
- </Tag>
- <Tag color="blue" type="solid">
- solid tag
- </Tag>
- <Tag color="red">red tag</Tag>
- <Tag color="green">green tag</Tag>
- <Tag color="orange">orange tag</Tag>
- <Tag color="teal">teal tag</Tag>
- <Tag color="violet">violet tag</Tag>
- <Tag color="white">white tag</Tag>
- </Space>
- </div>
- <div>
- <Space>
- <Popover content={'hi semi-design'} style={{ padding: 8 }}>
- <Tag style={{ marginRight: 8 }}>I am Popover</Tag>
- </Popover>
- <Tooltip content={'hi semi-design'}>
- <Tag style={{ marginRight: 8 }}>I am Tooltip</Tag>
- </Tooltip>
- <Dropdown
- render={
- <Dropdown.Menu>
- <Dropdown.Item>Menu Item 1</Dropdown.Item>
- <Dropdown.Item>Menu Item 2</Dropdown.Item>
- <Dropdown.Item>Menu Item 3</Dropdown.Item>
- </Dropdown.Menu>
- }
- >
- <Tag>I am dropdown</Tag>
- </Dropdown>
- <Rating defaultValue={3} size="small" style={{ marginRight: 8 }} />
- </Space>
- </div>
- <div className="mt12">
- <Space>
- <Button onClick={() => setModalVisible(true)}>Modal</Button>
- <Button type="tertiary" onClick={() => setSideSheetVisible(true)}>
- SideSheet
- </Button>
- <Button
- type="warning"
- onClick={() =>
- Notification.open({
- title: 'Hi, Bytedance',
- content: 'ies dance dance dance',
- duration: 3,
- })
- }
- >
- Notification
- </Button>
- <Popconfirm
- title="确定是否要保存此修改?"
- content="此修改将不可逆"
- onConfirm={onConfirm}
- onCancel={onCancel}
- >
- <Button type="danger">Popconfirm</Button>
- </Popconfirm>
- <Modal
- title="基本对话框"
- visible={modalVisible}
- onOk={() => setModalVisible(false)}
- onCancel={() => setModalVisible(false)}
- >
- This is the content of a basic modal.
- More content...
- </Modal>
- <SideSheet
- title="滑动侧边栏"
- visible={sideSheetVisible}
- onCancel={() => setSideSheetVisible(false)}
- >
- <p>This is the content of a basic side sheet.</p>
- <p>Here is more content...</p>
- </SideSheet>
- </Space>
- </div>
- </Row>
- <Row>
- <Col span={12} style={{ paddingRight: 24 }}>
- <div style={{ maxWidth: 640 }}>
- <Banner
- className="mb12"
- fullMode={false}
- type="info"
- bordered
- icon={null}
- closeIcon={null}
- title={
- <div style={{ fontWeight: 600, fontSize: '14px', lineHeight: '20px' }}>
- 不知道 AppKey?
- </div>
- }
- description={
- <div>
- 你可先联系对应的研发同学,确认是否已在
- <Text link={{ href: 'https://semi.design/' }}>应用云平台</Text>
- 申请了应用,并填写对应的信息。
- </div>
- }
- />
- <Banner
- className="mb12"
- fullMode={false}
- type="warning"
- bordered
- icon={null}
- closeIcon={null}
- title={
- <div style={{ fontWeight: 600, fontSize: '14px', lineHeight: '20px' }}>
- 不知道 AppKey?
- </div>
- }
- description={
- <div>
- 你可先联系对应的研发同学,确认是否已在
- <Text link={{ href: 'https://semi.design/' }}>应用云平台</Text>
- 申请了应用,并填写对应的信息。
- </div>
- }
- />
- <Banner
- className="mb12"
- fullMode={false}
- type="danger"
- bordered
- icon={null}
- closeIcon={null}
- title={
- <div style={{ fontWeight: 600, fontSize: '14px', lineHeight: '20px' }}>
- 不知道 AppKey?
- </div>
- }
- description={
- <div>
- 你可先联系对应的研发同学,确认是否已在
- <Text link={{ href: 'https://semi.design/' }}>应用云平台</Text>
- 申请了应用,并填写对应的信息。
- </div>
- }
- />
- <Banner
- fullMode={false}
- type="success"
- bordered
- icon={null}
- closeIcon={null}
- title={
- <div style={{ fontWeight: 600, fontSize: '14px', lineHeight: '20px' }}>
- 不知道 AppKey?
- </div>
- }
- description={
- <div>
- 你可先联系对应的研发同学,确认是否已在
- <Text link={{ href: 'https://semi.design/' }}>应用云平台</Text>
- 申请了应用,并填写对应的信息。
- </div>
- }
- />
- </div>
- </Col>
- <Col span={12}>
- <Title style={{ margin: '8px 0' }}>h1. Semi Design</Title>
- <Title heading={2} style={{ margin: '8px 0' }}>
- h2. Semi Design
- </Title>
- <Title heading={3} style={{ margin: '8px 0' }}>
- h3. Semi Design
- </Title>
- <Title heading={4} style={{ margin: '8px 0' }}>
- h4. Semi Design
- </Title>
- <Title heading={5} style={{ margin: '8px 0' }}>
- h5. Semi Design
- </Title>
- <Title heading={6} style={{ margin: '8px 0' }}>
- h6. Semi Design
- </Title>
- </Col>
- </Row>
- <Row id="组件">
- <div style={{ display: 'flex', flexWrap: 'wrap' }}>
- <Empty
- image={<IllustrationSuccess style={{ width: 150, height: 150 }} />}
- darkModeImage={<IllustrationSuccessDark style={{ width: 150, height: 150 }} />}
- description={'创建成功'}
- style={emptyStyle}
- />
- <Empty
- image={<IllustrationFailure style={{ width: 150, height: 150 }} />}
- darkModeImage={<IllustrationFailureDark style={{ width: 150, height: 150 }} />}
- description={'加载失败'}
- style={emptyStyle}
- />
- <Empty
- image={<IllustrationNoAccess style={{ width: 150, height: 150 }} />}
- darkModeImage={<IllustrationNoAccessDark style={{ width: 150, height: 150 }} />}
- description={'没有权限'}
- style={emptyStyle}
- />
- <Empty
- image={<IllustrationNoContent style={{ width: 150, height: 150 }} />}
- darkModeImage={<IllustrationNoContentDark style={{ width: 150, height: 150 }} />}
- description={'暂无内容,请添加'}
- style={emptyStyle}
- />
- <Empty
- image={<IllustrationNotFound style={{ width: 150, height: 150 }} />}
- darkModeImage={<IllustrationNotFoundDark style={{ width: 150, height: 150 }} />}
- description={'页面404'}
- style={emptyStyle}
- />
- <Empty
- image={<IllustrationNoResult style={{ width: 150, height: 150 }} />}
- darkModeImage={<IllustrationNoResultDark style={{ width: 150, height: 150 }} />}
- description={'搜索无结果'}
- style={emptyStyle}
- />
- <Empty
- image={<IllustrationConstruction style={{ width: 150, height: 150 }} />}
- darkModeImage={<IllustrationConstructionDark style={{ width: 150, height: 150 }} />}
- description={'建设中'}
- style={emptyStyle}
- />
- <Empty
- image={<IllustrationIdle style={{ width: 150, height: 150 }} />}
- darkModeImage={<IllustrationIdleDark style={{ width: 150, height: 150 }} />}
- description={'神游四方'}
- style={emptyStyle}
- />
- </div>
- </Row>
- <Row>
- <Timeline>
- <Timeline.Item time="2019-07-14 10:35" type="ongoing">
- 审核中
- </Timeline.Item>
- <Timeline.Item time="2019-06-13 16:17" type="success">
- 发布成功
- </Timeline.Item>
- <Timeline.Item time="2019-05-14 18:34" type="error">
- 审核失败
- </Timeline.Item>
- </Timeline>
- <div style={{ width: 200 }}>
- <Progress className="mb12" percent={10} stroke="#fc8800" aria-label='download progress'/>
- <Progress className="mb12" percent={25} stroke="#f93920" aria-label='download progress'/>
- <Progress className="mb12" percent={50} aria-label='download progress'/>
- <Progress className="mb12" percent={80} aria-label='download progress'/>
- <Progress className="mb12" percent={80} size="large" aria-label='download progress'/>
- <Progress className="mb12" percent={80} style={{ height: '8px' }} aria-label='download progress'/>
- </div>
- <div className="mb12">
- <Skeleton placeholder={placeholder} loading={true} active>
- <div style={{
- display: 'flex',
- alignItems: 'flex-start',
- }}>
- <Avatar color="blue" style={{ marginRight: 12 }}>
- UI
- </Avatar>
- <div>
- <h3>Semi UI</h3>
- <p>Hi, Bytedance dance dance.</p>
- <p>Hi, Bytedance dance dance.</p>
- <p>Hi, Bytedance dance dance.</p>
- </div>
- </div>
- </Skeleton>
- </div>
- <div>
- <Spin size="small" />
- <Spin size="middle" />
- <Spin size="large" />
- </div>
- </Row>
- <Row>
- <div style={{ width: 300 }}>
- <Slider
- step={1}
- value={overflowWidth}
- onChange={value => setOverflowWidth(value)}
- />
- <div style={{ width: `${overflowWidth}%` }}>
- <OverflowList
- items={items}
- overflowRenderer={renderOverflow}
- visibleItemRenderer={renderOverflowItem}
- />
- </div>
- </div>
- </Row>
- <Row id="设计语言">
- <Table
- style={{ minHeight: 350 }}
- columns={columns}
- dataSource={dataSource}
- pagination={false}
- empty={empty}
- />
- </Row>
- <Row id="物料平台">
- <Form
- initValues={initValues}
- style={{ padding: 10, width: '100%' }}
- onValueChange={v => console.log(v)}
- >
- <Form.Section text={'基本信息'}>
- <Row>
- <Col span={12}>
- <Form.Input
- field="name"
- label="名称(Input)"
- initValue={'mikeya'}
- style={style}
- trigger="blur"
- />
- </Col>
- <Col span={12}>
- <Form.DatePicker
- field="date"
- label="日期(DatePicker)"
- style={style}
- initValue={new Date()}
- placeholder="请选择生效日期"
- />
- </Col>
- </Row>
- <Row>
- <Col span={12}>
- <Form.Select
- field="role"
- style={style}
- label="角色(Select)"
- placeholder="请选择你的角色"
- >
- <Select.Option value="operate">运营</Select.Option>
- <Select.Option value="rd">开发</Select.Option>
- <Select.Option value="pm">产品</Select.Option>
- <Select.Option value="ued">设计</Select.Option>
- </Form.Select>
- </Col>
- <Col span={12}>
- <Form.Select
- field="business"
- multiple
- style={style}
- placeholder="请选择业务线"
- label="业务线(多选Select)"
- extraText={
- <div
- style={{
- color: 'rgba(var(--semi-blue-5), 1)',
- fontSize: 14,
- userSelect: 'none',
- cursor: 'pointer',
- }}
- >
- 没有找到合适的业务线?
- </div>
- }
- >
- <Select.Option value="abc">Semi</Select.Option>
- <Select.Option value="ulikeCam">轻颜相机</Select.Option>
- <Select.Option value="toutiao">今日头条</Select.Option>
- </Form.Select>
- </Col>
- </Row>
- <Row>
- <Col span={12}>
- <Form.Cascader
- placeholder="请选择所在地区"
- treeData={treeData}
- field="area"
- label="地区(Cascader)"
- style={style}
- ></Form.Cascader>
- </Col>
- <Col span={12}>
- <Form.TreeSelect
- field="tree"
- style={style}
- label="节点(TreeSelect)"
- placeholder="请选择服务节点"
- treeData={treeData}
- filterTreeNode
- ></Form.TreeSelect>
- </Col>
- </Row>
- <Row>
- <Col span={12}>
- <Form.TagInput
- field="product"
- label="产品(TagInput)"
- placeholder="请输入产品"
- style={style}
- />
- </Col>
- <Col span={12}>
- <Form.AutoComplete
- field="email"
- label="邮箱(AutoComplete)"
- data={stringData}
- showClear
- prefix={<IconSearch />}
- placeholder="搜索... "
- onSearch={handleStringSearch}
- style={style}
- />
- </Col>
- </Row>
- <Row>
- <Col span={24}>
- <Form.Upload
- field="files"
- label="证明文件(Upload)"
- action="//semi.design/api/upload"
- >
- <Button icon={<IconUpload />} theme="light">
- 点击上传
- </Button>
- </Form.Upload>
- </Col>
- </Row>
- </Form.Section>
- <Form.Section text="资源详情">
- <Row>
- <Col span={12}>
- <Form.TextArea
- style={{ ...style, height: 120 }}
- field="description"
- label="申请理由(TextArea)"
- placeholder="请填写申请资源理由"
- />
- </Col>
- <Col span={12}>
- <Form.CheckboxGroup
- field="type"
- direction="horizontal"
- label="申请类型(CheckboxGroup)"
- initValue={['user', 'admin']}
- rules={[{ required: true }]}
- >
- <Form.Checkbox value="admin">admin</Form.Checkbox>
- <Form.Checkbox value="user">user</Form.Checkbox>
- <Form.Checkbox value="guest">guest</Form.Checkbox>
- <Form.Checkbox value="root">root</Form.Checkbox>
- </Form.CheckboxGroup>
- <Form.RadioGroup
- field="isMonopolize"
- label="是否独占资源(Radio)"
- rules={[
- { type: 'boolean' },
- { required: true, message: '必须选择是否独占 ' },
- ]}
- >
- <Form.Radio value={true}>是</Form.Radio>
- <Form.Radio value={false}>否</Form.Radio>
- </Form.RadioGroup>
- </Col>
- </Row>
- <Row>
- <Col span={12}>
- <Form.TimePicker
- field="time"
- label="截止时刻(TimePicker)"
- style={{ width: '90%' }}
- />
- </Col>
- <Col span={12}>
- <Form.InputNumber
- field="number"
- label="申请数量(InputNumber)"
- initValue={20}
- style={style}
- />
- </Col>
- </Row>
- <Row>
- <Col span={12}>
- <Form.Slider
- field="range"
- label="资源使用报警阈值(%)(Slider)"
- initValue={10}
- style={{ width: '90%' }}
- />
- </Col>
- <Col span={12}>
- <Form.Switch field="switch" label="开关(Switch)" />
- </Col>
- </Row>
- <Row>
- <Col span={12}>
- <Form.Rating
- field="rating"
- label="满意度(Rating)"
- initValue={2}
- style={{ width: '90%' }}
- />
- </Col>
- </Row>
- </Form.Section>
- <Form.Checkbox value="false" field="agree" noLabel={true}>
- 我已阅读并清楚相关规定(Checkbox)
- </Form.Checkbox>
- <Button type="primary" htmlType="submit" className="btn-margin-right">
- 提交(submit)
- </Button>
- <Button htmlType="reset">重置(reset)</Button>
- </Form>
- </Row>
- <Row>
- <Col span="12">
- <Tree
- treeData={treeData}
- defaultExpandAll
- style={{
- width: 260,
- height: 420,
- border: '1px solid var(--semi-color-border)'
- }}
- />
- </Col>
- <Col span="12">
- <Transfer
- style={{ width: 568, height: 416 }}
- dataSource={transferData}
- onChange={(values, items) => console.log(values, items)}
- />
- </Col>
- </Row>
- <Row id="主题商店">
- <List
- grid={{
- gutter: 12,
- xs: 0,
- sm: 0,
- md: 12,
- lg: 8,
- xl: 8,
- xxl: 6,
- }}
- dataSource={listData}
- renderItem={item => (
- <List.Item style={listItemStyle}>
- <div>
- <h3 style={{ color: 'var(--semi-color-text-0)', fontWeight: 500 }}>
- {item.title}
- </h3>
- <Descriptions
- align="center"
- size="small"
- row
- data={[
- {
- key: '满意度',
- value: (
- <Rating allowHalf size="small" value={item.rating} />
- ),
- },
- { key: '反馈数', value: item.feedbacks },
- ]}
- />
- <div
- style={{
- margin: '12px 0',
- display: 'flex',
- justifyContent: 'flex-end',
- }}
- >
- <ButtonGroup theme="borderless" style={{ marginTop: 8 }}>
- <Button>编辑</Button>
- <Button>更多</Button>
- </ButtonGroup>
- </div>
- </div>
- </List.Item>
- )}
- />
- <div style={{ display: 'flex', flexWrap: 'wrap' }}>
- <Descriptions align="center" data={descriptionData} style={descriptionStyle} />
- <Descriptions align="justify" data={descriptionData} style={descriptionStyle} />
- <Descriptions align="left" data={descriptionData} style={descriptionStyle} />
- <Descriptions align="plain" data={descriptionData} style={descriptionStyle} />
- </div>
- <div
- style={{
- backgroundColor: 'var(--semi-color-fill-0)',
- padding: 20,
- }}
- >
- <Row gutter={[16, 16]}>
- <Col span={8}>
- <Card title="Card Title" bordered={false}>
- Card Content
- </Card>
- </Col>
- <Col span={8}>
- <Card title="Card Title" bordered={false}>
- Card Content
- </Card>
- </Col>
- <Col span={8}>
- <Card title="Card Title" bordered={false}>
- Card Content
- </Card>
- </Col>
- </Row>
- <Row gutter={[16, 16]}>
- <Col span={16}>
- <Card title="Card Title" bordered={false}>
- Card Content
- </Card>
- </Col>
- <Col span={8}>
- <Card title="Card Title" bordered={false}>
- Card Content
- </Card>
- </Col>
- </Row>
- </div>
- </Row>
- <Row>
- <Calendar mode="month" />
- </Row>
- <Row>
- <Collapse className="mt12">
- <Collapse.Panel header="This is panel header 1" itemKey="1">
- <p>Hi, bytedance dance dance. This is the docsite of Semi UI. </p>
- </Collapse.Panel>
- <Collapse.Panel header="This is panel header 2" itemKey="2">
- <p>Hi, bytedance dance dance. This is the docsite of Semi UI. </p>
- </Collapse.Panel>
- <Collapse.Panel header="This is panel header 3" itemKey="3">
- <p>Hi, bytedance dance dance. This is the docsite of Semi UI. </p>
- </Collapse.Panel>
- </Collapse>
- <Tabs type="button" className="mt12">
- <TabPane tab="文档" itemKey="1">
- 文档
- </TabPane>
- <TabPane tab="快速起步" itemKey="2">
- 快速起步
- </TabPane>
- <TabPane tab="帮助" itemKey="3">
- 帮助
- </TabPane>
- </Tabs>
- <div className="mt12" style={{ height: 200 }}>
- <Button onClick={() => setCollapsibleOpen(!isOpen)}>Toggle</Button>
- <Collapsible isOpen={isOpen}>
- <ul>
- <li>
- <p>Semi Design 以内容优先进行设计。</p>
- </li>
- <li>
- <p>更容易地自定义主题。</p>
- </li>
- <li>
- <p>适用国际化场景。</p>
- </li>
- <li>
- <p>效率场景加入人性化关怀。</p>
- </li>
- </ul>
- </Collapsible>
- </div>
- <Anchor style={{ position: 'fixed', top: 150, right: 50 }}>
- <Anchor.Link href="#基本示例" title="基本示例" />
- <Anchor.Link href="#组件" title="组件" />
- <Anchor.Link href="#设计语言" title="设计语言" />
- <Anchor.Link href="#物料平台" title="物料平台" />
- <Anchor.Link href="#主题商店" title="主题商店" />
- </Anchor>
- <BackTop style={{ bottom: 100, right: 50 }} target={() => document && document.querySelector('.semi-layout-content' || window)} visibilityHeight={-1} />
- </Row>
- </div>
- </Content>
- </Layout>
- <Footer
- style={{
- display: 'flex',
- justifyContent: 'space-between',
- padding: '20px',
- color: 'var(--semi-color-text-2)',
- backgroundColor: 'rgba(var(--semi-grey-0), 1)',
- }}
- >
- <span
- style={{
- display: 'flex',
- alignItems: 'center',
- }}
- >
- <IconBytedanceLogo size="large" style={{ marginRight: '8px' }} />
- <span>{`Copyright © ${(new Date()).getFullYear()} Semi Design. All Rights Reserved. `}</span>
- </span>
- <span>
- <span style={{ marginRight: '24px' }}>平台客服</span>
- <span>反馈建议</span>
- </span>
- </Footer>
- </Layout>
- </>
- );
- }
|