Convert Modal component to ES6 class (#7783)

feature/default_network_editable
Whymarrh Whitby 5 years ago committed by GitHub
parent 52a38de567
commit 89e7dc2312
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 100
      ui/app/components/app/modals/modal.js

@ -1,6 +1,6 @@
import PropTypes from 'prop-types'
import React, { Component } from 'react'
import { inherits } from 'util'
import { connect } from 'react-redux'
import * as actions from '../../../store/actions'
import { resetCustomData as resetCustomGasData } from '../../../ducks/gas/gas.duck'
@ -464,61 +464,59 @@ function mapDispatchToProps (dispatch) {
}
}
// Global Modal Component
inherits(Modal, Component)
function Modal () {
Component.call(this)
}
export default connect(mapStateToProps, mapDispatchToProps)(Modal)
class Modal extends Component {
static propTypes = {
active: PropTypes.bool.isRequired,
hideModal: PropTypes.func.isRequired,
hideWarning: PropTypes.func.isRequired,
modalState: PropTypes.object.isRequired,
}
Modal.prototype.render = function () {
const modal = MODALS[this.props.modalState.name || 'DEFAULT']
const { contents: children, disableBackdropClick = false } = modal
const modalStyle = modal[isMobileView() ? 'mobileModalStyle' : 'laptopModalStyle']
const contentStyle = modal.contentStyle || {}
return (
<FadeModal
keyboard={false}
onHide={() => {
if (modal.onHide) {
modal.onHide(this.props)
}
this.onHide(modal.customOnHideOpts)
}}
ref={(ref) => {
this.modalRef = ref
}}
modalStyle={modalStyle}
contentStyle={contentStyle}
backdropStyle={BACKDROPSTYLE}
closeOnClick={!disableBackdropClick}
>
{children}
</FadeModal>
)
}
hide () {
this.modalRef.hide()
}
Modal.prototype.UNSAFE_componentWillReceiveProps = function (nextProps) {
if (nextProps.active) {
this.show()
} else if (this.props.active) {
this.hide()
show () {
this.modalRef.show()
}
}
Modal.prototype.onHide = function (customOnHideOpts) {
if (this.props.onHideCallback) {
this.props.onHideCallback()
UNSAFE_componentWillReceiveProps (nextProps, _) {
if (nextProps.active) {
this.show()
} else if (this.props.active) {
this.hide()
}
}
this.props.hideModal(customOnHideOpts)
}
Modal.prototype.hide = function () {
this.modalRef.hide()
render () {
const modal = MODALS[this.props.modalState.name || 'DEFAULT']
const { contents: children, disableBackdropClick = false } = modal
const modalStyle = modal[isMobileView() ? 'mobileModalStyle' : 'laptopModalStyle']
const contentStyle = modal.contentStyle || {}
return (
<FadeModal
keyboard={false}
onHide={() => {
if (modal.onHide) {
modal.onHide({
hideWarning: this.props.hideWarning,
})
}
this.props.hideModal(modal.customOnHideOpts)
}}
ref={(ref) => {
this.modalRef = ref
}}
modalStyle={modalStyle}
contentStyle={contentStyle}
backdropStyle={BACKDROPSTYLE}
closeOnClick={!disableBackdropClick}
>
{children}
</FadeModal>
)
}
}
Modal.prototype.show = function () {
this.modalRef.show()
}
export default connect(mapStateToProps, mapDispatchToProps)(Modal)

Loading…
Cancel
Save