<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>