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;
}
}