UNPKG

@meve/ui

Version:

Argon design system components library

280 lines (246 loc) 8.33 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import Popup from '../popup'; import Button from '../button'; import Icon from '../icon'; import { createNamespace } from '../utils/create'; import { props } from './props'; var _createNamespace = createNamespace('dialog'), createComponent = _createNamespace.createComponent, namespace = _createNamespace.namespace; var DialogPlugin = createComponent({ props: props, data: function data() { return { show: false, localCloseOnClickOverlay: false }; }, watch: { value: { handler: function handler(newValue) { this.show = newValue; }, immediate: true }, closeOnClickOverlay: { handler: function handler(newValue) { if (this.beforeClose) { this.localCloseOnClickOverlay = false; return; } this.localCloseOnClickOverlay = newValue; }, immediate: true } }, methods: { handleOpen: function handleOpen() { this.$emit('open'); }, handleOpened: function handleOpened() { this.$emit('opened'); }, handleClose: function handleClose() { this.$emit('close'); }, handleClosed: function handleClosed() { this.$emit('closed'); }, handleRouteChange: function handleRouteChange() { this.$emit('route-change'); }, done: function done() { this.$emit('input', false); }, handleClickOverlay: function handleClickOverlay() { this.$emit('click-overlay'); if (!this.closeOnClickOverlay) { return; } if (this.beforeClose) { this.beforeClose('close', this.done.bind(this)); return; } this.done(); }, handleClickCloseButton: function handleClickCloseButton() { if (this.beforeClose) { this.beforeClose('close', this.done.bind(this)); return; } this.done(); }, confirm: function confirm() { this.$emit('confirm'); if (this.beforeClose) { this.beforeClose('confirm', this.done.bind(this)); return; } this.done(); }, cancel: function cancel() { this.$emit('cancel'); if (this.beforeClose) { this.beforeClose('cancel', this.done.bind(this)); return; } this.done(); }, renderMessage: function renderMessage() { var h = this.$createElement; if (this.hasSlots()) { return this.slots(); } if (this.message) { return h("div", { "class": namespace('__message'), "style": { textAlign: this.messageAlign } }, [this.message]); } }, renderTitle: function renderTitle() { var _this$title; var h = this.$createElement; if (this.hasSlots('title')) { return this.slots('title'); } return h("div", { "class": namespace('__title') }, [(_this$title = this.title) != null ? _this$title : '提示']); }, renderFooter: function renderFooter() { var _this = this, _this$confirmButtonTe, _this$cancelButtonTex; var h = this.$createElement; if (this.hasSlots('footer')) { return this.slots('footer'); } return h("div", { "class": namespace('__footer') }, [this.confirmButton && h(Button, { "class": namespace('__confirm-button'), "attrs": { "dialog-cover": true, "size": "large", "type": this.confirmButtonType }, "on": _extends({}, { "click": function click($event) { for (var _len = arguments.length, attrs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { attrs[_key - 1] = arguments[_key]; } _this.confirm.apply(_this, [$event].concat(attrs)); } }) }, [(_this$confirmButtonTe = this.confirmButtonText) != null ? _this$confirmButtonTe : '确认']), this.cancelButton && h(Button, { "class": namespace('__cancel-button'), "attrs": { "dialog-cover": true, "size": "large", "type": this.cancelButtonType, "text": true }, "on": _extends({}, { "click": function click($event) { for (var _len2 = arguments.length, attrs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { attrs[_key2 - 1] = arguments[_key2]; } _this.cancel.apply(_this, [$event].concat(attrs)); } }) }, [(_this$cancelButtonTex = this.cancelButtonText) != null ? _this$cancelButtonTex : '取消'])]); } }, render: function render() { var _this2 = this; var h = arguments[0]; var show = this.show, overlay = this.overlay, overlayClass = this.overlayClass, lockScroll = this.lockScroll, localCloseOnClickOverlay = this.localCloseOnClickOverlay, handleOpen = this.handleOpen, handleOpened = this.handleOpened, handleClose = this.handleClose, handleClosed = this.handleClosed, handleClickOverlay = this.handleClickOverlay, handleRouteChange = this.handleRouteChange; return h(Popup, { "class": namespace(), "attrs": { "dialog-cover": true, "value": show, "overlay": overlay, "overlayClass": overlayClass, "lockScroll": lockScroll, "closeOnClickOverlay": localCloseOnClickOverlay }, "on": _extends({}, { "open": function open($event) { for (var _len3 = arguments.length, attrs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { attrs[_key3 - 1] = arguments[_key3]; } handleOpen.apply(void 0, [$event].concat(attrs)); }, "opened": function opened($event) { for (var _len4 = arguments.length, attrs = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { attrs[_key4 - 1] = arguments[_key4]; } handleOpened.apply(void 0, [$event].concat(attrs)); }, "close": function close($event) { for (var _len5 = arguments.length, attrs = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { attrs[_key5 - 1] = arguments[_key5]; } handleClose.apply(void 0, [$event].concat(attrs)); }, "closed": function closed($event) { for (var _len6 = arguments.length, attrs = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) { attrs[_key6 - 1] = arguments[_key6]; } handleClosed.apply(void 0, [$event].concat(attrs)); }, "clickOverlay": function clickOverlay($event) { for (var _len7 = arguments.length, attrs = new Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) { attrs[_key7 - 1] = arguments[_key7]; } handleClickOverlay.apply(void 0, [$event].concat(attrs)); }, "routeChange": function routeChange($event) { for (var _len8 = arguments.length, attrs = new Array(_len8 > 1 ? _len8 - 1 : 0), _key8 = 1; _key8 < _len8; _key8++) { attrs[_key8 - 1] = arguments[_key8]; } handleRouteChange.apply(void 0, [$event].concat(attrs)); } }) }, [h("div", { "class": namespace('__container') }, [h("div", { "class": namespace('__title-wrapper') }, [this.renderTitle(), h(Button, { "class": namespace('__close-button'), "attrs": { "dialog-cover": true, "text": true, "round": true }, "on": _extends({}, { "click": function click($event) { for (var _len9 = arguments.length, attrs = new Array(_len9 > 1 ? _len9 - 1 : 0), _key9 = 1; _key9 < _len9; _key9++) { attrs[_key9 - 1] = arguments[_key9]; } _this2.handleClickCloseButton.apply(_this2, [$event].concat(attrs)); } }) }, [h(Icon, { "attrs": { "name": "close" } })])]), this.renderMessage(), this.renderFooter()])]); } }); export var _DialogComponent = DialogPlugin; export default DialogPlugin;