56 lines
1.3 KiB
Vue
56 lines
1.3 KiB
Vue
|
<template>
|
||
|
<div class="notifications">
|
||
|
<slide-y-up-transition :duration="transitionDuration"
|
||
|
group
|
||
|
mode="out-in">
|
||
|
<notification
|
||
|
v-for="notification in notifications"
|
||
|
v-bind="notification"
|
||
|
:clickHandler="notification.onClick"
|
||
|
:key="notification.timestamp.getTime()"
|
||
|
@close="removeNotification"
|
||
|
>
|
||
|
</notification>
|
||
|
</slide-y-up-transition>
|
||
|
</div>
|
||
|
</template>
|
||
|
<script>
|
||
|
import Notification from './Notification.vue';
|
||
|
import { SlideYUpTransition } from 'vue2-transitions';
|
||
|
|
||
|
export default {
|
||
|
components: {
|
||
|
SlideYUpTransition,
|
||
|
Notification
|
||
|
},
|
||
|
props: {
|
||
|
transitionDuration: {
|
||
|
type: Number,
|
||
|
default: 200
|
||
|
},
|
||
|
overlap: {
|
||
|
type: Boolean,
|
||
|
default: false
|
||
|
}
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
notifications: this.$notifications.state
|
||
|
};
|
||
|
},
|
||
|
methods: {
|
||
|
removeNotification(timestamp) {
|
||
|
this.$notifications.removeNotification(timestamp);
|
||
|
}
|
||
|
},
|
||
|
created() {
|
||
|
this.$notifications.settings.overlap = this.overlap;
|
||
|
},
|
||
|
watch: {
|
||
|
overlap: function (newVal) {
|
||
|
this.$notifications.settings.overlap = newVal;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
</script>
|