Add confirm modal

This commit is contained in:
Samuel Elliott 2018-02-19 18:18:55 +00:00
parent 7cf1cf36fa
commit 847d88a628
No known key found for this signature in database
GPG Key ID: 8420C7CDE43DC4D6
3 changed files with 45 additions and 1 deletions

View File

@ -0,0 +1,32 @@
/**
* BetterDiscord Confirm Modal Component
* Copyright (c) 2015-present Jiiks/JsSucks - https://github.com/Jiiks / https://github.com/JsSucks
* All rights reserved.
* https://betterdiscord.net
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
<template>
<Modal :class="['bd-modal-basic', {'bd-modal-out': modal.closing}]" :headerText="modal.title" :close="modal.close">
<div slot="body" class="bd-modal-basic-body">{{ modal.text }}</div>
<div slot="footer" class="bd-modal-controls">
<div class="bd-flex-grow"></div>
<div class="bd-button" @click="modal.close">Cancel</div>
<div class="bd-button bd-ok" @click="() => { modal.confirm(); modal.close(); }">OK</div>
</div>
</Modal>
</template>
<script>
// Imports
import { Modal } from '../../common';
export default {
props: ['modal'],
components: {
Modal
}
}
</script>

View File

@ -1,2 +1,2 @@
export { default as BdSettingsWrapper } from './BdSettingsWrapper.vue';
export { default as BdSettings } from './BdSettings.vue';
export { default as BdSettings } from './BdSettings.vue';

View File

@ -11,6 +11,7 @@
import { Utils, FileUtils } from 'common';
import { Settings, Events, PluginManager, ThemeManager } from 'modules';
import BasicModal from './components/bd/modals/BasicModal.vue';
import ConfirmModal from './components/bd/modals/ConfirmModal.vue';
import ErrorModal from './components/bd/modals/ErrorModal.vue';
import SettingsModal from './components/bd/modals/SettingsModal.vue';
@ -69,6 +70,17 @@ export default class {
return this.add({ title, text }, BasicModal);
}
static confirm(title, text) {
const modal = { title, text };
const promise = new Promise((resolve, reject) => {
modal.confirm = () => resolve(true);
modal.beforeClose = () => reject();
this.add(modal, ConfirmModal);
});
modal.promise = promise;
return modal;
}
static error(event) {
return this.add({ event }, ErrorModal);
}