houdini/javascripts/src/components/common/Modal.tsx

42 lines
1.1 KiB
TypeScript
Raw Normal View History

2018-10-11 11:35:53 -05:00
// License: LGPL-3.0-or-later
import * as React from 'react';
import { observer } from 'mobx-react';
import AriaModal = require('react-aria-modal');
export interface ModalProps
{
2018-10-19 12:42:50 -05:00
onClose?: () => void // if you want your modal to close, this needs to set modalActive to false
2018-10-11 11:35:53 -05:00
modalActive?: boolean
titleText?: string
focusDialog?:boolean
dialogStyle?:any
childGenerator:() => any
2018-10-11 11:35:53 -05:00
}
2018-10-19 12:42:50 -05:00
class Modal extends React.Component<ModalProps, {}> {
static defaultProps = {
dialogStyle: {minWidth:'768px'}
}
2018-10-11 11:35:53 -05:00
render() {
const modal = this.props.modalActive ?
<AriaModal mounted={this.props.modalActive} titleText={this.props.titleText} focusDialog={this.props.focusDialog}
2018-10-19 12:42:50 -05:00
onExit={this.props.onClose} dialogStyle={this.props.dialogStyle}>
2018-10-11 11:35:53 -05:00
<header className='modal-header'>
<h4 className='modal-header-title'>{this.props.titleText}</h4>
</header>
<div className="modal-body">
{this.props.childGenerator()}
</div>
</AriaModal> : false;
return modal
}
}
2018-10-19 12:42:50 -05:00
export default observer(Modal)
2018-10-11 11:35:53 -05:00