import React, { Component } from 'react'
import PropTypes from 'prop-types'
import _ from 'lodash'
import assign from 'object-assign'
import './index.less'
import NormalButton from '../NormalButton'
import CloseButton from '../CloseButton'
import CancelButton from '../CancelButton'
import CheckBox from '../CheckBox'
class OperationConfirm extends Component {
static propTypes = {
style: PropTypes.object,
tipIconUrl: PropTypes.string,
questionaryText: PropTypes.string,
possibleWarnText: PropTypes.string,
onClose: PropTypes.func,
onConfirm: PropTypes.func,
onCheckChange: PropTypes.func,
showCheckBoxButton: PropTypes.bool,
}
static defaultProps = {
style: {},
tipIconUrl: require('~/shared/assets/image/icon-warn-yellow-white-60-60.png'),
questionaryText: '',
possibleWarnText: '',
onClose: _.noop,
onConfirm: _.noop,
onCheckChange: _.noop,
showCheckBoxButton: false,
}
state = {
}
componentDidMount() {
}
componentWillUnmount() {
}
handleClickCloseButton = () => {
this.props.onClose()
}
handleClickCancelButton = () => {
this.props.onClose()
}
handleClickConfirmButton = () => {
this.props.onConfirm()
this.props.onClose()
}
handleClickCheckBoxButton = (checkoutState) => {
this.props.onCheckChange(checkoutState)
}
render() {
const wrapStyles = assign({}, this.props.style)
return (
<div className="operation-confirm-component-wrap" style={wrapStyles}>
<div className="tip-header-wrap">
<div className="header-left-wrap">
<img className="icon" src={this.props.tipIconUrl} alt="" />
<span>提示</span>
</div>
<CloseButton
onClick={this.handleClickCloseButton}
/>
</div>
<div className="spliter" />
<div className="tip-contain-wrap">
<div className="common-tip-container">
<p className="questionary-text">{this.props.questionaryText}</p>
<p className="possible-warn-text">{this.props.possibleWarnText}</p>
</div>
{
this.props.showCheckBoxButton === true && (
<div className="custom-tip-container">
<CheckBox
style={{
fontSize: '12px',
marginLeft: '44px',
marginBottom: '6px',
color: '#364152',
display: 'inline-block',
}}
content="不再提示"
checked
onChange={this.handleClickCheckBoxButton}
/>
</div>
)
}
</div>
<div className="tip-bottom-button-wrap">
<NormalButton
text="确 定"
onClick={this.handleClickConfirmButton}
style={{
marginLeft: '24px',
}}
/>
<CancelButton
text="取 消"
onClick={this.handleClickCancelButton}
style={{
marginLeft: '24px',
}}
/>
</div>
</div>
)
}
}
export default OperationConfirm
.operation-confirm-component-wrap { width: 400px; border-radius: 6px; border: solid 1px #e2e2e2; background-color: #ffffff; box-sizing: border-box; .tip-header-wrap { width: 100%; display: flex; align-items: center; justify-content: space-between; padding: 8px 24px 0px 24px; box-sizing: border-box; .header-left-wrap { display: flex; align-items: center; .icon { display: inline-block; width: 18px; height: 18px; object-fit: contain; } span { margin-left: 6px; color: #3d4e67; font-size: 12px; } } } .spliter { width: 352px; height: 1px; background-color: #f7f8f9; margin: 0 24px; } .tip-contain-wrap { width: 100%; box-sizing: border-box; .common-tip-container { width: 100%; font-size: 12px; color: #3d4e67; padding: 12px 0px; .questionary-text { opacity: 0.8; margin-left: 44px; } .possible-warn-text { opacity: 0.8; margin-left: 50px; } } .custom-tip-container { width: 100%; } } .tip-bottom-button-wrap { width: 100%; height: 48px; background-color: rgba(57, 119, 246, 0.05); display: flex; align-items: center; } }