'use strict';
import React from 'react';
import { connect } from 'react-redux';
import * as types from '../constants/ModalTypes';
import { dismiss } from '../actions/modals';
const MODALS = {
[types.MODAL_ADD_WORKER]: require('../components/modals/AddWorkerModal').default,
[types.MODAL_DEL_WORKER]: require('../components/modals/DeleteWorkerModal').default,
[types.MODAL_EXPORT]: require('../components/modals/ExportModal').default,
[types.MODAL_CPU]: require('../components/modals/CpuModal').default,
[types.MODAL_FEATURE]: require('../components/modals/FeatureModal').default,
[types.MODAL_OCL_PLATFORM]: require('../components/modals/OclPlatformModal').default
};
class ModalContainer extends React.PureComponent {
render() {
return
{this.renderModal()}
;
}
renderModal() {
const Component = MODALS[this.props.type];
if (!Component) {
return;
}
const props = {...this.props.data, dismiss: this.dismiss};
return ;
}
componentDidMount() {
this.$modal = $(this.refs.modal);
this.$modal.on('shown.bs.modal', () => {
this.$modal.find('.autofocus').focus();
});
this.$modal.on('hidden.bs.modal', () => {
this.props.dismiss();
});
}
componentDidUpdate() {
if (this.props.type !== types.MODAL_NONE) {
this.$modal.modal('show');
}
}
dismiss = () => {
this.$modal.modal('hide');
}
}
const mapStateToProps = state => ({
type: state.modal.type,
data: state.modal.data
});
const mapDispatchToProps = (dispatch, ownProps) => ({
dismiss: () => dispatch(dismiss())
});
export default connect(
mapStateToProps,
mapDispatchToProps
)(ModalContainer);