Currently, it’s unclear whether an FAQ item is generated from a document, derived from a conversation, or added manually. This PR resolves the issue by providing visibility into the source of each FAQ. Users can now see whether an FAQ was generated or manually added and, if applicable, by whom. - Move the document_id to a polymorphic relation (documentable). - Updated the APIs to accommodate the change. - Update the service to add corresponding references. - Updated the specs. <img width="1007" alt="Screenshot 2025-01-15 at 11 27 56 PM" src="https://github.com/user-attachments/assets/7d58f798-19c0-4407-b3e2-748a919d14af" /> --------- Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com>
85 lines
2.1 KiB
Vue
85 lines
2.1 KiB
Vue
<script setup>
|
|
import Button from 'dashboard/components-next/button/Button.vue';
|
|
import PaginationFooter from 'dashboard/components-next/pagination/PaginationFooter.vue';
|
|
|
|
defineProps({
|
|
currentPage: {
|
|
type: Number,
|
|
default: 1,
|
|
},
|
|
totalCount: {
|
|
type: Number,
|
|
default: 100,
|
|
},
|
|
itemsPerPage: {
|
|
type: Number,
|
|
default: 25,
|
|
},
|
|
headerTitle: {
|
|
type: String,
|
|
default: '',
|
|
},
|
|
buttonLabel: {
|
|
type: String,
|
|
default: '',
|
|
},
|
|
showPaginationFooter: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
});
|
|
|
|
const emit = defineEmits(['click', 'close', 'update:currentPage']);
|
|
|
|
const handleButtonClick = () => {
|
|
emit('click');
|
|
};
|
|
|
|
const handlePageChange = event => {
|
|
emit('update:currentPage', event);
|
|
};
|
|
</script>
|
|
|
|
<template>
|
|
<section class="flex flex-col w-full h-full overflow-hidden bg-n-background">
|
|
<header class="sticky top-0 z-10 px-6 xl:px-0">
|
|
<div class="w-full max-w-[960px] mx-auto">
|
|
<div
|
|
class="flex items-start lg:items-center justify-between w-full py-6 lg:py-0 lg:h-20 gap-4 lg:gap-2 flex-col lg:flex-row"
|
|
>
|
|
<span class="text-xl font-medium text-n-slate-12">
|
|
{{ headerTitle }}
|
|
<slot name="headerTitle" />
|
|
</span>
|
|
<div
|
|
v-on-clickaway="() => emit('close')"
|
|
class="relative group/campaign-button"
|
|
>
|
|
<Button
|
|
:label="buttonLabel"
|
|
icon="i-lucide-plus"
|
|
size="sm"
|
|
class="group-hover/campaign-button:brightness-110"
|
|
@click="handleButtonClick"
|
|
/>
|
|
<slot name="action" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</header>
|
|
<main class="flex-1 px-6 overflow-y-auto xl:px-0">
|
|
<div class="w-full max-w-[960px] mx-auto py-4">
|
|
<slot name="default" />
|
|
</div>
|
|
</main>
|
|
<footer v-if="showPaginationFooter" class="sticky bottom-0 z-10 px-4 pb-4">
|
|
<PaginationFooter
|
|
:current-page="currentPage"
|
|
:total-items="totalCount"
|
|
:items-per-page="itemsPerPage"
|
|
@update:current-page="handlePageChange"
|
|
/>
|
|
</footer>
|
|
</section>
|
|
</template>
|