You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.9 KiB
69 lines
1.9 KiB
<template>
|
|
<div ref="modal" class="modal fade" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 id="exampleModalLabel" class="modal-title">
|
|
{{ $t("Confirm") }}
|
|
</h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" />
|
|
</div>
|
|
<div class="modal-body">
|
|
<slot />
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn" :class="btnStyle" data-bs-dismiss="modal" @click="yes">
|
|
{{ yesText }}
|
|
</button>
|
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
|
|
{{ noText }}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { Modal } from "bootstrap";
|
|
|
|
export default {
|
|
props: {
|
|
/** Style of button */
|
|
btnStyle: {
|
|
type: String,
|
|
default: "btn-primary",
|
|
},
|
|
/** Text to use as yes */
|
|
yesText: {
|
|
type: String,
|
|
default: "Yes", // TODO: No idea what to translate this
|
|
},
|
|
/** Text to use as no */
|
|
noText: {
|
|
type: String,
|
|
default: "No",
|
|
},
|
|
},
|
|
emits: [ "yes" ],
|
|
data: () => ({
|
|
modal: null,
|
|
}),
|
|
mounted() {
|
|
this.modal = new Modal(this.$refs.modal);
|
|
},
|
|
methods: {
|
|
/** Show the confirm dialog */
|
|
show() {
|
|
this.modal.show();
|
|
},
|
|
/**
|
|
* @emits string "yes" Notify the parent when Yes is pressed
|
|
*/
|
|
yes() {
|
|
this.$emit("yes");
|
|
},
|
|
},
|
|
};
|
|
</script>
|