Files
freeCodeCamp/common/app/Flash/Flash.jsx

44 lines
974 B
JavaScript
Raw Normal View History

2018-01-04 09:18:20 -08:00
import React from 'react';
2018-01-04 16:24:03 -08:00
import PropTypes from 'prop-types';
2018-01-04 09:18:20 -08:00
import { CloseButton } from 'react-bootstrap';
2018-01-04 16:24:03 -08:00
import { connect } from 'react-redux';
2018-01-04 09:18:20 -08:00
import ns from './ns.json';
2018-01-04 16:39:43 -08:00
import {
alertTypes,
latestMessageSelector,
clickOnClose
} from './redux';
2018-01-04 09:18:20 -08:00
2018-01-04 16:24:03 -08:00
const propTypes = {
alertType: PropTypes.oneOf(Object.keys(alertTypes)),
2018-01-04 16:39:43 -08:00
clickOnClose: PropTypes.func.isRequired,
2018-01-04 16:24:03 -08:00
message: PropTypes.string
};
const mapStateToProps = latestMessageSelector;
2018-01-04 16:39:43 -08:00
const mapDispatchToProps = { clickOnClose };
2018-01-04 16:24:03 -08:00
2018-01-04 16:39:43 -08:00
export function Flash({ alertType, clickOnClose, message }) {
2018-01-04 16:24:03 -08:00
if (!message) {
return null;
}
2018-01-04 09:18:20 -08:00
return (
2018-01-04 16:24:03 -08:00
<div className={`${ns}-container bg-${alertType}`}>
2018-01-04 09:18:20 -08:00
<div className={`${ns}-content`}>
<div>
2018-01-04 16:24:03 -08:00
{ message }
2018-01-04 09:18:20 -08:00
</div>
2018-01-04 16:39:43 -08:00
<CloseButton onClick={ clickOnClose }/>
2018-01-04 09:18:20 -08:00
</div>
</div>
);
}
Flash.displayName = 'Flash';
Flash.propTypes = propTypes;
2018-01-04 16:24:03 -08:00
export default connect(
mapStateToProps,
mapDispatchToProps
)(Flash);