adrema/resources/js/components/VNotification.vue

46 lines
1.3 KiB
Vue

<template>
<div class="grid gap-2 has-contents">
<transition-group name="fadeRight" tag="div">
<div v-for="item, index in items" :key="'i'+index"
:class="`${colors[item.type].bg} ${colors[item.type].text} h-12 flex flex-col items-start justify-center shadow-2xl rounded-sm px-6`"
>
<div class="text-sm" v-for="message, mindex in item.messages" :key="mindex" v-text="message"></div>
</div>
</transition-group>
</div>
</template>
<script>
export default {
data: function() {
return {
colors: {
red: {
bg: 'bg-red-300',
text: 'text-red-800'
},
green: {
bg: 'bg-green-300',
text: 'text-green-800'
}
}
};
},
computed: {
items() {
var i = [];
for (const field in this.$page.props.errors) {
i.push({ messages: this.$page.props.errors[field], type: 'red' });
}
if (this.$page.props.flash && this.$page.props.flash.success) {
i.push({ messages: [ this.$page.props.flash.success ], type: 'green' });
}
return i;
}
}
};
</script>