use/useDetailView
Overview
Provides all reactive state and behaviour for a detail view that fetches and displays a single model instance. Handles object fetching, title computation, action and transition availability, error combination, and populating a form initial-values object from the fetched data.
Used directly by DetailView.vue and intended as a building block for custom detail-view shells in consuming projects.
Examples
vue
<script setup>
import { useDetailView } from "@vueda/use/useDetailView.js";
import { useForm } from "@vueda/use/useForm.js";
import { useObjectForm } from "@vueda/use/useObjectForm.js";
import { reactive, toRef } from "vue";
const props = defineProps({ app: String, model: String, pk: String });
const formContextProps = reactive({ initialValues: {} });
useForm(formContextProps);
const { modelConfig, instance, actions } = useDetailView(props, formContextProps.initialValues);
</script>html
<page-title :loading="instance.pageLoading" :title="instance.titleStr" />html
<template v-for="actionName in actions.nonDetailActions" :key="actionName">
<link-model-view :app="app" :model="model" :view="actionName" />
</template>
<template v-for="actionName in actions.detailActions" :key="actionName">
<link-model-view :app="app" :model="model" :pk="pk" :view="actionName" button />
</template>
<template v-for="transition in actions.availableTransitions" :key="transition">
<link-model-view :app="app" :model="model" :pk="pk" :view="transition" button />
</template>html
<error-display
:error="instance.combinedError"
:errored="instance.combinedErrored"
:while-text="instance.combinedWhileText"
/>
<form :id="instance.formId" @submit.prevent="objectForm.submit">
<form-model
:app="app"
:model="model"
:view="viewName"
:widget-props="instance.computedWidgetProps"
v-bind="instance.combinedFormProps"
/>
</form>
<!-- Required: resolves submit-time warning confirmations (HTTP 409); without it warned saves are cancelled. -->
<form-confirm-dialog :controller="objectForm.confirmation" />Methods
- useDetailView - Extracts all reactive state and wiring for a detail view of a single model instance.
Types
DetailViewActionsGroup
DetailViewContext
DetailViewInstanceGroup
DetailViewOptions
Required identification.
Source
client/lib/use/useDetailView.js:1