Skip to content

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

Documents matching: server v3.0.0a1.post1client v3.0.0-alpha.2