import { use } from '../utils'; import { PopupMixin } from '../mixins/popup'; import Button from '../button'; const [sfc, bem, t] = use('dialog'); export default sfc({ mixins: [PopupMixin], props: { title: String, message: String, className: null, callback: Function, beforeClose: Function, messageAlign: String, cancelButtonText: String, cancelButtonColor: String, confirmButtonText: String, confirmButtonColor: String, showCancelButton: Boolean, showConfirmButton: { type: Boolean, default: true }, overlay: { type: Boolean, default: true }, closeOnClickOverlay: { type: Boolean, default: false } }, data() { return { loading: { confirm: false, cancel: false } }; }, methods: { onClickOverlay() { this.handleAction('overlay'); }, handleAction(action) { this.$emit(action); if (this.beforeClose) { this.loading[action] = true; this.beforeClose(action, state => { if (state !== false) { this.onClose(action); } this.loading[action] = false; }); } else { this.onClose(action); } }, onClose(action) { this.close(); if (this.callback) { this.callback(action); } } }, render(h) { if (!this.shouldRender) { return; } const { title, message, messageAlign } = this; const children = this.slots(); const Title = title && (
{title}
); const Content = (children || message) && (
{children || (
)}
); const hasButtons = this.showCancelButton && this.showConfirmButton; const ButtonGroup = (
{this.showCancelButton && (
); return ( ); } });