advent22/ui/src/components/MultiModal.vue

61 lines
1.4 KiB
Vue
Raw Normal View History

2022-10-30 02:35:39 +00:00
<template>
2022-12-21 23:51:01 +00:00
<div class="modal is-active" v-if="active" @click="set_active(false)">
2022-10-30 02:35:39 +00:00
<div class="modal-background" />
<div class="modal-content">
2023-09-06 18:44:19 +00:00
<template v-if="progress">
<progress class="progress is-primary" max="100" />
</template>
<template v-else>
2023-09-12 17:42:02 +00:00
<figure>
<div class="image is-square">
<img :src="image_src" alt="Kalender-Bild" />
</div>
2023-09-14 03:36:42 +00:00
<figcaption class="tag is-primary">
2023-09-12 17:42:02 +00:00
{{ figure_caption }}
</figcaption>
</figure>
2023-09-06 18:44:19 +00:00
</template>
2022-10-30 02:35:39 +00:00
</div>
</div>
</template>
<script lang="ts">
2022-12-21 23:51:01 +00:00
import { Vue } from "vue-class-component";
2022-10-30 02:35:39 +00:00
2023-01-24 23:18:09 +00:00
export default class extends Vue {
2023-09-06 16:25:35 +00:00
public active = false;
2023-09-06 18:44:19 +00:00
public progress = false;
2022-12-21 23:51:01 +00:00
public image_src = "";
2023-09-12 17:42:02 +00:00
public figure_caption = "";
2022-10-30 02:35:39 +00:00
2023-09-11 23:37:37 +00:00
private on_keydown(e: KeyboardEvent) {
if (e.key == "Escape") this.set_active(false);
}
public mounted(): void {
window.addEventListener("keydown", this.on_keydown);
}
public beforeUnmount(): void {
window.removeEventListener("keydown", this.on_keydown);
2022-10-30 02:35:39 +00:00
}
2023-01-17 14:28:11 +00:00
public set_active(state: boolean) {
2022-12-21 23:51:01 +00:00
this.active = state;
}
2023-09-12 17:42:02 +00:00
public show_image(src: string, caption: string = "") {
2023-09-06 18:44:19 +00:00
this.progress = false;
2022-12-21 23:51:01 +00:00
this.image_src = src;
2023-09-12 17:42:02 +00:00
this.figure_caption = caption;
2022-12-22 00:16:42 +00:00
this.set_active(true);
2022-10-30 02:35:39 +00:00
}
2023-09-06 18:44:19 +00:00
public show_progress() {
this.progress = true;
this.set_active(true);
}
2022-10-30 02:35:39 +00:00
}
</script>