Commit 66fc774f authored by Shuai Chen's avatar Shuai Chen

doc: better demo

parent 6e97ea92
...@@ -5,44 +5,48 @@ title: 带浮层卡片 ...@@ -5,44 +5,48 @@ title: 带浮层卡片
点击展开通知卡片,展现多种类型的通知,通常放在导航工具栏。 点击展开通知卡片,展现多种类型的通知,通常放在导航工具栏。
````jsx ```jsx
import NoticeIcon from 'ant-design-pro/lib/NoticeIcon'; import NoticeIcon from 'ant-design-pro/lib/NoticeIcon';
import moment from 'moment';
import groupBy from 'lodash/groupBy';
import { Tag } from 'antd'; import { Tag } from 'antd';
const data = [{ const data = [
{
id: '000000001', id: '000000001',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png', avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
title: '你收到了 14 份新周报', title: '你收到了 14 份新周报',
datetime: '2017-08-09', datetime: '2017-08-09',
type: '通知', type: '通知',
}, { },
{
id: '000000002', id: '000000002',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png', avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png',
title: '你推荐的 曲妮妮 已通过第三轮面试', title: '你推荐的 曲妮妮 已通过第三轮面试',
datetime: '2017-08-08', datetime: '2017-08-08',
type: '通知', type: '通知',
}, { },
{
id: '000000003', id: '000000003',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png', avatar: 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png',
title: '这种模板可以区分多种通知类型', title: '这种模板可以区分多种通知类型',
datetime: '2017-08-07', datetime: '2017-08-07',
read: true, read: true,
type: '通知', type: '通知',
}, { },
{
id: '000000004', id: '000000004',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png', avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
title: '左侧图标用于区分不同的类型', title: '左侧图标用于区分不同的类型',
datetime: '2017-08-07', datetime: '2017-08-07',
type: '通知', type: '通知',
}, { },
{
id: '000000005', id: '000000005',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png', avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
title: '内容不要超过两行字,超出时自动截断', title: '内容不要超过两行字,超出时自动截断',
datetime: '2017-08-07', datetime: '2017-08-07',
type: '通知', type: '通知',
}, { },
{
id: '000000006', id: '000000006',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
title: '曲丽丽 评论了你', title: '曲丽丽 评论了你',
...@@ -50,7 +54,8 @@ const data = [{ ...@@ -50,7 +54,8 @@ const data = [{
datetime: '2017-08-07', datetime: '2017-08-07',
type: '消息', type: '消息',
clickClose: true, clickClose: true,
}, { },
{
id: '000000007', id: '000000007',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
title: '朱偏右 回复了你', title: '朱偏右 回复了你',
...@@ -58,7 +63,8 @@ const data = [{ ...@@ -58,7 +63,8 @@ const data = [{
datetime: '2017-08-07', datetime: '2017-08-07',
type: '消息', type: '消息',
clickClose: true, clickClose: true,
}, { },
{
id: '000000008', id: '000000008',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
title: '标题', title: '标题',
...@@ -66,35 +72,40 @@ const data = [{ ...@@ -66,35 +72,40 @@ const data = [{
datetime: '2017-08-07', datetime: '2017-08-07',
type: '消息', type: '消息',
clickClose: true, clickClose: true,
}, { },
{
id: '000000009', id: '000000009',
title: '任务名称', title: '任务名称',
description: '任务需要在 2017-01-12 20:00 前启动', description: '任务需要在 2017-01-12 20:00 前启动',
extra: '未开始', extra: '未开始',
status: 'todo', status: 'todo',
type: '待办', type: '待办',
}, { },
{
id: '000000010', id: '000000010',
title: '第三方紧急代码变更', title: '第三方紧急代码变更',
description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务', description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务',
extra: '马上到期', extra: '马上到期',
status: 'urgent', status: 'urgent',
type: '待办', type: '待办',
}, { },
{
id: '000000011', id: '000000011',
title: '信息安全考试', title: '信息安全考试',
description: '指派竹尔于 2017-01-09 前完成更新并发布', description: '指派竹尔于 2017-01-09 前完成更新并发布',
extra: '已耗时 8 天', extra: '已耗时 8 天',
status: 'doing', status: 'doing',
type: '待办', type: '待办',
}, { },
{
id: '000000012', id: '000000012',
title: 'ABCD 版本发布', title: 'ABCD 版本发布',
description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务', description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务',
extra: '进行中', extra: '进行中',
status: 'processing', status: 'processing',
type: '待办', type: '待办',
}]; },
];
function onItemClick(item, tabProps) { function onItemClick(item, tabProps) {
console.log(item, tabProps); console.log(item, tabProps);
...@@ -108,32 +119,38 @@ function getNoticeData(notices) { ...@@ -108,32 +119,38 @@ function getNoticeData(notices) {
if (notices.length === 0) { if (notices.length === 0) {
return {}; return {};
} }
const newNotices = notices.map((notice) => { const newNotices = notices.map(notice => {
const newNotice = { ...notice }; const newNotice = { ...notice };
if (newNotice.datetime) {
newNotice.datetime = moment(notice.datetime).fromNow();
}
// transform id to item key // transform id to item key
if (newNotice.id) { if (newNotice.id) {
newNotice.key = newNotice.id; newNotice.key = newNotice.id;
} }
if (newNotice.extra && newNotice.status) { if (newNotice.extra && newNotice.status) {
const color = ({ const color = {
todo: '', todo: '',
processing: 'blue', processing: 'blue',
urgent: 'red', urgent: 'red',
doing: 'gold', doing: 'gold',
})[newNotice.status]; }[newNotice.status];
newNotice.extra = <Tag color={color} style={{ marginRight: 0 }}>{newNotice.extra}</Tag>; newNotice.extra = (
<Tag color={color} style={{ marginRight: 0 }}>
{newNotice.extra}
</Tag>
);
} }
return newNotice; return newNotice;
}); });
return groupBy(newNotices, 'type'); return newNotices.reduce((pre, data) => {
if (!pre[data.type]) {
pre[data.type] = [];
}
pre[data.type].push(data);
return pre;
}, {});
} }
const noticeData = getNoticeData(data); const noticeData = getNoticeData(data);
const Demo = () => (
ReactDOM.render(
<div <div
style={{ style={{
textAlign: 'right', textAlign: 'right',
...@@ -144,12 +161,7 @@ ReactDOM.render( ...@@ -144,12 +161,7 @@ ReactDOM.render(
width: '400px', width: '400px',
}} }}
> >
<NoticeIcon <NoticeIcon className="notice-icon" count={5} onItemClick={onItemClick} onClear={onClear}>
className="notice-icon"
count={5}
onItemClick={onItemClick}
onClear={onClear}
>
<NoticeIcon.Tab <NoticeIcon.Tab
list={noticeData['通知']} list={noticeData['通知']}
name="通知" name="通知"
...@@ -173,9 +185,7 @@ ReactDOM.render( ...@@ -173,9 +185,7 @@ ReactDOM.render(
/> />
</NoticeIcon> </NoticeIcon>
</div> </div>
, mountNode); );
````
```css
ReactDOM.render(<Demo />, mountNode);
``` ```
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment