150 lines
5.1 KiB
Vue
150 lines
5.1 KiB
Vue
<template>
|
|
<DocSectionText v-bind="$attrs">
|
|
<p>Custom content inside a message is defined with the <i>content</i> template.</p>
|
|
</DocSectionText>
|
|
<div class="card flex justify-content-center">
|
|
<Toast position="bottom-center" group="bc" @close="onClose">
|
|
<template #message="slotProps">
|
|
<div class="flex flex-column align-items-start" style="flex: 1">
|
|
<div class="flex align-items-center gap-2">
|
|
<Avatar image="https://primefaces.org/cdn/primevue/images/avatar/amyelsner.png" shape="circle" />
|
|
<span class="font-bold text-900">Amy Elsner</span>
|
|
</div>
|
|
<div class="font-medium text-lg my-3 text-900">{{ slotProps.message.summary }}</div>
|
|
<Button class="p-button-sm" label="Reply" @click="onReply()"></Button>
|
|
</div>
|
|
</template>
|
|
</Toast>
|
|
<Button @click="showTemplate" label="View" />
|
|
</div>
|
|
<DocSectionCode :code="code" />
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
data() {
|
|
return {
|
|
visible: false,
|
|
code: {
|
|
basic: `
|
|
<Toast position="bottom-center" group="bc" @close="onClose">
|
|
<template #message="slotProps">
|
|
<div class="flex flex-column align-items-start" style="flex: 1">
|
|
<div class="flex align-items-center gap-2">
|
|
<Avatar image="/images/avatar/amyelsner.png" shape="circle" />
|
|
<span class="font-bold text-900">Amy Elsner</span>
|
|
</div>
|
|
<div class="font-medium text-lg my-3 text-900">{{ slotProps.message.summary }}</div>
|
|
<Button class="p-button-sm" label="Reply" @click="onReply()"></Button>
|
|
</div>
|
|
</template>
|
|
</Toast>
|
|
<Button @click="showTemplate" label="View" />
|
|
`,
|
|
options: `
|
|
<template>
|
|
<div class="card flex justify-content-center">
|
|
<Toast position="bottom-center" group="bc" @close="onClose">
|
|
<template #message="slotProps">
|
|
<div class="flex flex-column align-items-start" style="flex: 1">
|
|
<div class="flex align-items-center gap-2">
|
|
<Avatar image="https://primefaces.org/cdn/primevue/images/avatar/amyelsner.png" shape="circle" />
|
|
<span class="font-bold text-900">Amy Elsner</span>
|
|
</div>
|
|
<div class="font-medium text-lg my-3 text-900">{{ slotProps.message.summary }}</div>
|
|
<Button class="p-button-sm" label="Reply" @click="onReply()"></Button>
|
|
</div>
|
|
</template>
|
|
</Toast>
|
|
<Button @click="showTemplate" label="View" />
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
data() {
|
|
return {
|
|
visible: false
|
|
}
|
|
},
|
|
methods: {
|
|
showTemplate() {
|
|
if (!this.visible) {
|
|
this.$toast.add({ severity: 'success', summary: 'Can you send me the report?', group: 'bc' });
|
|
this.visible = true;
|
|
}
|
|
},
|
|
onReply() {
|
|
this.$toast.removeGroup('bc');
|
|
this.visible = false;
|
|
},
|
|
onClose() {
|
|
this.visible = false;
|
|
}
|
|
}
|
|
};
|
|
<\/script>
|
|
`,
|
|
composition: `
|
|
<template>
|
|
<div class="card flex justify-content-center">
|
|
<Toast position="bottom-center" group="bc" @close="onClose">
|
|
<template #message="slotProps">
|
|
<div class="flex flex-column align-items-start" style="flex: 1">
|
|
<div class="flex align-items-center gap-2">
|
|
<Avatar image="https://primefaces.org/cdn/primevue/images/avatar/amyelsner.png" shape="circle" />
|
|
<span class="font-bold text-900">Amy Elsner</span>
|
|
</div>
|
|
<div class="font-medium text-lg my-3 text-900">{{ slotProps.message.summary }}</div>
|
|
<Button class="p-button-sm" label="Reply" @click="onReply()"></Button>
|
|
</div>
|
|
</template>
|
|
</Toast>
|
|
<Button @click="showTemplate" label="View" />
|
|
</div>
|
|
</template>
|
|
|
|
<script setup>
|
|
import { useToast } from "primevue/usetoast";
|
|
import { ref } from 'vue';
|
|
const toast = useToast();
|
|
const visible = ref(false);
|
|
|
|
const showTemplate = () => {
|
|
if (!visible.value) {
|
|
toast.add({ severity: 'success', summary: 'Can you send me the report?', group: 'bc' });
|
|
visible.value = true;
|
|
}
|
|
};
|
|
|
|
const onReply = () => {
|
|
toast.removeGroup('bc');
|
|
visible.value = false;
|
|
}
|
|
|
|
const onClose = () => {
|
|
visible.value = false;
|
|
}
|
|
<\/script>
|
|
`
|
|
}
|
|
};
|
|
},
|
|
methods: {
|
|
showTemplate() {
|
|
if (!this.visible) {
|
|
this.$toast.add({ severity: 'success', summary: 'Can you send me the report?', group: 'bc' });
|
|
this.visible = true;
|
|
}
|
|
},
|
|
onReply() {
|
|
this.$toast.removeGroup('bc');
|
|
this.visible = false;
|
|
},
|
|
onClose() {
|
|
this.visible = false;
|
|
}
|
|
}
|
|
};
|
|
</script>
|