UNPKG

terriajs

Version:

Geospatial data visualization platform.

66 lines (57 loc) 2.31 kB
'use strict'; 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;