27 lines
1.1 KiB
Vue
27 lines
1.1 KiB
Vue
<template>
|
|
<div class="aa-result" :class="'is-' + type">
|
|
<div class="aa-result-icon">{{ iconMap[type] || 'i' }}</div>
|
|
<div class="aa-result-title">{{ title }}</div>
|
|
<div class="aa-result-desc" v-if="desc">{{ desc }}</div>
|
|
<div class="aa-result-actions" v-if="actionText || secondaryText">
|
|
<button v-if="actionText" class="aa-result-btn primary" @click="emit('action')">{{ actionText }}</button>
|
|
<button v-if="secondaryText" class="aa-result-btn" @click="emit('secondary')">{{ secondaryText }}</button>
|
|
</div>
|
|
<div class="aa-result-extra" v-if="$slots.extra"><slot name="extra" /></div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup>
|
|
const props = defineProps({
|
|
type: { type: String, default: 'success' },
|
|
title: { type: String, default: '' },
|
|
desc: { type: String, default: '' },
|
|
actionText: { type: String, default: '' },
|
|
secondaryText: { type: String, default: '' }
|
|
});
|
|
const emit = defineEmits(['action', 'secondary']);
|
|
const iconMap = { success: '✓', error: '✕', warning: '!', info: 'i' };
|
|
</script>
|
|
|
|
<style src="./ResultVariants.css"></style>
|