import { use } from '../utils'; import Button from '../button'; import Popup from '../mixins/popup'; const [sfc, bem, t] = use('dialog'); export default sfc({ mixins: [Popup], props: { title: String, message: String, callback: Function, className: [String, Object, Array], beforeClose: Function, messageAlign: String, confirmButtonText: String, cancelButtonText: 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: { 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.$emit('input', false); this.callback && this.callback(action); } }, render(h) { if (!this.shouldRender) { return; } const { title, message, messageAlign } = this; const children = this.$slots.default; const Title = title && (