Redirect to detail view of newly created record

This commit is contained in:
Francisco Gaona
2025-12-22 09:55:15 +01:00
parent f4067c56b4
commit cdc202454f
2 changed files with 12 additions and 6 deletions

View File

@@ -308,12 +308,13 @@ export const useViewState = <T extends { id?: string }>(
} }
const handleSave = async (data: T) => { const handleSave = async (data: T) => {
let savedRecord
if (data.id) { if (data.id) {
await updateRecord(data.id, data) savedRecord = await updateRecord(data.id, data)
} else { } else {
await createRecord(data) savedRecord = await createRecord(data)
} }
showDetail(currentRecord.value!) return savedRecord
} }
return { return {

View File

@@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, computed, onMounted, watch } from 'vue' import { ref, computed, onMounted, watch, nextTick } from 'vue'
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { useApi } from '@/composables/useApi' import { useApi } from '@/composables/useApi'
import { useFields, useViewState } from '@/composables/useFieldViews' import { useFields, useViewState } from '@/composables/useFieldViews'
@@ -111,8 +111,13 @@ const handleDelete = async (rows: any[]) => {
const handleSaveRecord = async (data: any) => { const handleSaveRecord = async (data: any) => {
try { try {
await handleSave(data) const savedRecord = await handleSave(data)
router.push(`/app/objects/${objectApiName.value}/${currentRecord.value?.id || data.id}/detail`) if (savedRecord?.id) {
router.push(`/app/objects/${objectApiName.value}/${savedRecord.id}/detail`)
} else {
// Fallback to list if no ID available
router.push(`/app/objects/${objectApiName.value}/`)
}
} catch (e: any) { } catch (e: any) {
error.value = e.message || 'Failed to save record' error.value = e.message || 'Failed to save record'
} }