terriajs
Version:
Geospatial data visualization platform.
66 lines (57 loc) • 2.31 kB
JSX
;
import ObserveModelMixin from '../ObserveModelMixin';
import React from 'react';
import createReactClass from 'create-react-class';
import PropTypes from 'prop-types';
import parseCustomMarkdownToReact from '../Custom/parseCustomMarkdownToReact';
import Styles from './notification-window.scss';
const NotificationWindow = createReactClass({
displayName: 'NotificationWindow',
mixins: [ObserveModelMixin],
propTypes: {
title: PropTypes.string.isRequired,
message: PropTypes.string.isRequired,
confirmText: PropTypes.string,
denyText: PropTypes.string,
onConfirm: PropTypes.func.isRequired,
onDeny: PropTypes.func.isRequired
},
confirm(e) {
e.stopPropagation();
if (this.props.onConfirm) {
this.props.onConfirm();
}
},
deny(e) {
e.stopPropagation();
if (this.props.onDeny) {
this.props.onDeny();
}
},
render() {
const title = this.props.title;
const message = this.props.message;
const confirmText = this.props.confirmText || 'OK';
const denyText = this.props.denyText;
return (
<div className={Styles.wrapper}>
<div className={Styles.notification}>
<div className={Styles.inner}>
<h3 className='title'>{title}</h3>
{window.location.host === 'localhost:3001' && title.toLowerCase().indexOf('error') >= 0 &&
<div><img src='./build/TerriaJS/images/feature.gif'/></div>
}
<div className={Styles.body}>{parseCustomMarkdownToReact(message)}</div>
</div>
<div className={Styles.footer}>
<button type='button' className={Styles.btn} onClick={this.confirm}>{confirmText}</button>
<If condition={denyText}>
<button type='button' className={Styles.btn} onClick={this.deny}>{denyText}</button>
</If>
</div>
</div>
</div>
);
},
});
module.exports = NotificationWindow;