diff --git a/app/composables/useQueryCRUD.ts b/app/composables/useQueryCRUD.ts index f81649bd..655440f6 100644 --- a/app/composables/useQueryCRUD.ts +++ b/app/composables/useQueryCRUD.ts @@ -1,6 +1,58 @@ import { computed } from 'vue' import { useRoute, useRouter } from 'vue-router' +export function useQueryCRUD(modeKey: string = 'mode', recordIdKey: string = 'record-id') { + type params = { + mode: string, + recordId: any + } + + const route = useRoute() + const router = useRouter() + + const crudQueryParams = computed ({ + get: () => { + return { + mode: route.query[modeKey] && route.query[modeKey] === 'entry' ? 'entry' : 'list', + recordId: route.query[recordIdKey] + } + }, + set: (val) => { + router.push({ + path: route.path, + query: { + ...route.query, + [modeKey]: val.mode, + [recordIdKey]: val.recordId, + }, + }) + }, + }) + + const goToEntry = (myRecord_id?: any) => { + if(myRecord_id) { + crudQueryParams.value.mode = 'entry' + crudQueryParams.value.recordId = myRecord_id + } else { + crudQueryParams.value.mode = 'entry' + crudQueryParams.value.recordId = undefined + } + } + + const backToList = () => { + delete route.query[recordIdKey] + router.push({ + path: route.path, + query: { + ...route.query, + mode: 'list', + }, + }) + } + + return { crudQueryParams, goToEntry, backToList } +} + export function useQueryCRUDMode(key: string = 'mode') { const route = useRoute() const router = useRouter()