123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // @flow
-
- import { FlagGroup } from '@atlaskit/flag';
- import React from 'react';
- import { connect } from 'react-redux';
-
- import AbstractNotificationsContainer, {
- _abstractMapStateToProps as _mapStateToProps,
- type Props
- } from './AbstractNotificationsContainer';
- import Notification from './Notification';
-
- /**
- * Implements a React {@link Component} which displays notifications and handles
- * automatic dismissmal after a notification is shown for a defined timeout
- * period.
- *
- * @extends {Component}
- */
- class NotificationsContainer extends AbstractNotificationsContainer<Props> {
-
- /**
- * Implements React's {@link Component#render()}.
- *
- * @inheritdoc
- * @returns {ReactElement}
- */
- render() {
- return (
- <FlagGroup onDismissed = { this._onDismissed }>
- { this._renderFlags() }
- </FlagGroup>
- );
- }
-
- _onDismissed: number => void;
-
- /**
- * Renders notifications to display as ReactElements. An empty array will
- * be returned if notifications are disabled.
- *
- * @private
- * @returns {ReactElement[]}
- */
- _renderFlags() {
- const { _notifications } = this.props;
-
- return _notifications.map(notification => {
- const { props, uid } = notification;
-
- // The id attribute is necessary as {@code FlagGroup} looks for
- // either id or key to set a key on notifications, but accessing
- // props.key will cause React to print an error.
- return (
- <Notification
- { ...props }
- id = { uid }
- key = { uid }
- uid = { uid } />
-
- );
- });
- }
- }
-
- export default connect(_mapStateToProps)(NotificationsContainer);
|