import React, { PureComponent } from 'react'; import { Popover, Icon, Tabs, Badge, Spin } from 'antd'; import classNames from 'classnames'; import List from './NoticeList'; import styles from './index.less'; const { TabPane } = Tabs; export default class NoticeIcon extends PureComponent { static Tab = TabPane; static defaultProps = { onItemClick: () => {}, onPopupVisibleChange: () => {}, onTabChange: () => {}, onClear: () => {}, loading: false, locale: { emptyText: 'No notifications', clear: 'Clear', }, emptyImage: 'https://gw.alipayobjects.com/zos/rmsportal/wAhyIChODzsoKIOBHcBk.svg', }; onItemClick = (item, tabProps) => { const { onItemClick } = this.props; onItemClick(item, tabProps); }; onTabChange = tabType => { const { onTabChange } = this.props; onTabChange(tabType); }; getNotificationBox() { const { children, loading, locale, onClear } = this.props; if (!children) { return null; } const panes = React.Children.map(children, child => { const title = child.props.list && child.props.list.length > 0 ? `${child.props.title} (${child.props.list.length})` : child.props.title; return ( this.onItemClick(item, child.props)} onClear={() => onClear(child.props.name)} title={child.props.title} locale={locale} /> ); }); return ( {panes} ); } render() { const { className, count, popupAlign, popupVisible, onPopupVisibleChange, bell } = this.props; const noticeButtonClass = classNames(className, styles.noticeButton); const notificationBox = this.getNotificationBox(); const NoticeBellIcon = bell || ; const trigger = ( {NoticeBellIcon} ); if (!notificationBox) { return trigger; } const popoverProps = {}; if ('popupVisible' in this.props) { popoverProps.visible = popupVisible; } return ( {trigger} ); } }