# Pull Request Template ## Description **This PR includes:** 1. Added URL-based filter persistence for the responses pages, including page and search parameters. 2. Introduced a new empty state variant for pending FAQs — without a backdrop and with a “Clear Filters” option. 3. Made the actions, filter, and search row remain fixed at the top while scrolling. Fixes https://linear.app/chatwoot/issue/CW-5852/improvements-in-pending-faqs ## Type of change - [x] New feature (non-breaking change which adds functionality) ## How Has This Been Tested? ### Loom video https://www.loom.com/share/1d9eee68c0684f0ab05e08b4ca1e0ce9 ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules
71 lines
1.8 KiB
Vue
71 lines
1.8 KiB
Vue
<script setup>
|
|
import Policy from 'dashboard/components/policy.vue';
|
|
|
|
defineProps({
|
|
title: {
|
|
type: String,
|
|
required: true,
|
|
},
|
|
subtitle: {
|
|
type: String,
|
|
required: true,
|
|
},
|
|
actionPerms: {
|
|
type: Array,
|
|
default: () => [],
|
|
},
|
|
showBackdrop: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
});
|
|
</script>
|
|
|
|
<template>
|
|
<section
|
|
class="relative flex flex-col items-center justify-center w-full h-full overflow-hidden"
|
|
>
|
|
<div
|
|
class="relative w-full max-w-[60rem] mx-auto overflow-hidden h-full max-h-[28rem]"
|
|
>
|
|
<div
|
|
v-if="showBackdrop"
|
|
class="w-full h-full space-y-4 overflow-y-hidden opacity-50 pointer-events-none"
|
|
>
|
|
<slot name="empty-state-item" />
|
|
</div>
|
|
<div
|
|
class="flex flex-col items-center justify-end w-full h-full pb-20"
|
|
:class="{
|
|
'absolute inset-x-0 bottom-0 bg-gradient-to-t from-n-background from-25% dark:from-n-background to-transparent':
|
|
showBackdrop,
|
|
}"
|
|
>
|
|
<div
|
|
class="flex flex-col items-center justify-center gap-6"
|
|
:class="{
|
|
'mt-48': !showBackdrop,
|
|
}"
|
|
>
|
|
<div class="flex flex-col items-center justify-center gap-3">
|
|
<h2
|
|
class="text-3xl font-medium text-center text-n-slate-12 font-interDisplay"
|
|
>
|
|
{{ title }}
|
|
</h2>
|
|
<p
|
|
v-if="subtitle"
|
|
class="max-w-xl text-base text-center text-n-slate-11 font-interDisplay tracking-[0.3px]"
|
|
>
|
|
{{ subtitle }}
|
|
</p>
|
|
</div>
|
|
<Policy :permissions="actionPerms">
|
|
<slot name="actions" />
|
|
</Policy>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</template>
|