feat: enhance filter navigation with role-based visibility and active position handling

This commit is contained in:
riefive
2025-12-03 13:22:25 +07:00
parent 6a27c1f346
commit 4c670701c4
2 changed files with 20 additions and 12 deletions
+15 -10
View File
@@ -34,8 +34,13 @@ const props = defineProps<{
const { setOpen } = useSidebar()
setOpen(true)
// Role reactivities
const { getActiveRole } = useUserStore()
// Main data
const data = ref([])
const dataFiltered = ref([])
const activeServicePosition = ref(getServicePosition(getActiveRole()))
const isLoading = reactive<DataTableLoader>({
summary: false,
isTableLoading: false,
@@ -46,17 +51,18 @@ const recItem = ref<any>(null)
const isFilterFormDialogOpen = ref(false)
const isRecordConfirmationOpen = ref(false)
const isRecordCancelOpen = ref(false)
const isRoleRegistration = activeServicePosition.value === 'registration'
// Headers
const hreaderPrep: CH.Config = {
title: 'Kunjungan',
icon: 'i-lucide-users',
addNav: {
addNav: isRoleRegistration ? {
label: 'Tambah',
onClick: () => {
navigateTo(`/${props.classCode}/encounter/add`)
},
},
} : {} as any,
}
if (!props.canCreate) {
delete hreaderPrep.addNav
@@ -87,19 +93,17 @@ const filter = ref<{
schema: {},
})
// Role reactivities
const { getActiveRole } = useUserStore()
const activeServicePosition = ref(getServicePosition(getActiveRole()))
provide('activeServicePosition', activeServicePosition)
watch(getActiveRole, (role? : string) => {
activeServicePosition.value = getServicePosition(role)
})
// Recrod reactivities
provide('activeServicePosition', activeServicePosition)
provide('rec_id', recId)
provide('rec_action', recAction)
provide('rec_item', recItem)
provide('table_data_loader', isLoading)
watch(getActiveRole, (role? : string) => {
activeServicePosition.value = getServicePosition(role)
})
watch(() => recAction.value, () => {
const basePath = `/${props.classCode}/encounter`
// console.log(`${basePath}/${recId.value}`, recAction.value)
@@ -240,6 +244,7 @@ function handleRemoveConfirmation() {
<template>
<CH.ContentHeader v-bind="hreaderPrep">
<FilterNav
:active-positon="activeServicePosition"
@onFilterClick="() => isFilterFormDialogOpen = true"
@onExportPdf="() => {}"
@onExportExcel="() => {}"