-
Kasper Seweryn authored
Part-of: <!95>
Kasper Seweryn authoredPart-of: <!95>
Modal.vue 1.05 KiB
<script setup lang="ts">
const title = defineProp<string>('title', { required: true })
const open = defineModel<boolean>({ required: true })
</script>
<template>
<Teleport to="body">
<Transition mode="out-in">
<div v-if="open" @click.exact.stop="open = false" class="funkwhale overlay">
<div @click.stop class="funkwhale modal" :class="$slots.alert && 'has-alert'" >
<h2>
{{ title }}
<FwButton icon="bi-x-lg" color="secondary" variant="ghost" @click="open = false" />
</h2>
<div class="modal-content">
<Transition>
<div v-if="$slots.alert" class="alert-container">
<div>
<slot name="alert" />
</div>
</div>
</Transition>
<slot />
</div>
<div v-if="$slots.actions" class="modal-actions">
<slot name="actions" />
</div>
</div>
</div>
</Transition>
</Teleport>
</template>
<style lang="scss">
@import './style.scss'
</style>