vant/packages/dialog/index.js
neverland d8b6ad7d54
[new feature] add i18n support (#310)
* fix: Tabbar icon line-height

* [new feature] progress add showPivot prop

* [new feature] TabItem support vue-router

* [new feature] update document header style

* [Doc] add toast english ducoment

* [new feature] add i18n support

* feat: Extract demos from markdown

* feat: Base components demos

* [new feature] complete demo extract & translate

* [fix] text cases

* fix: add deepAssign test cases

* fix: changelog detail

* [new feature] AddressEdit support i18n
2017-11-15 20:08:51 -06:00

65 lines
1.1 KiB
JavaScript

import Vue from 'vue';
import DialogComponent from './dialog';
let instance;
const defaultConfig = {
value: true,
title: '',
message: '',
confirmButtonText: '',
cancelButtonText: '',
showCancelButton: false,
closeOnClickOverlay: false,
callback: action => {
instance[action === 'confirm' ? 'resolve' : 'reject'](action);
}
};
const initInstance = () => {
const DialogConstructor = Vue.extend(DialogComponent);
instance = new DialogConstructor({
el: document.createElement('div')
});
instance.$on('input', value => {
instance.value = value;
});
document.body.appendChild(instance.$el);
};
const Dialog = options => {
return new Promise((resolve, reject) => {
if (!instance) {
initInstance();
}
Object.assign(instance, {
resolve,
reject,
...options
});
});
};
Dialog.alert = options => Dialog({
...defaultConfig,
...options
});
Dialog.confirm = options => Dialog({
...defaultConfig,
showCancelButton: true,
...options
});
Dialog.close = () => {
instance.value = false;
};
export default Dialog;
export {
DialogComponent as Dialog
};