Skip to content

use/useViewCreate

Overview

Provides all reactive state and behaviour for a create view that collects field values from a form and submits a new model instance to the server. Handles model configuration, initial value derivation, form context setup, action availability, error combination, and submission handling.

Used directly by ViewCreate.vue and intended as a building block for custom create-view shells in consuming projects.

Examples

vue
<script setup>
import FormConfirmDialog from "@vueda/form/confirm/FormConfirmDialog.vue";
import { useViewCreate } from "@vueda/use/useViewCreate.js";
import { memoizedStartCase } from "@vueda/utils/case.js";
import { onMounted, toRef } from "vue";

const props = defineProps({ app: String, model: String, redirectAfter: String });
const emit = defineEmits(["form-object", "form-context"]);
const { formContext, objectForm, instance, actions } = useViewCreate(props);

onMounted(() => {
    emit("form-object", toRef(() => formContext.state.values));
    emit("form-context", formContext);
});
</script>
<template>
    <!-- ...form markup (see examples below)... -->
    <!-- Required: resolves submit-time warning confirmations (HTTP 409); without it warned saves are cancelled. -->
    <FormConfirmDialog :controller="objectForm.confirmation" />
</template>
html
<h1>{{ instance.titleStr }}</h1>
html
<error-display
    :error="instance.combinedError"
    :errored="instance.combinedErrored"
    :ignore-form-validation-errors="true"
    :while-text="instance.combinedWhileText"
/>
<form :id="instance.formId" @submit.prevent="objectForm.submit">
    <form-model
        :app="app"
        :model="model"
        view="create"
        v-bind="instance.combinedFormProps"
    />
</form>
html
<Button :form="instance.formId" :disabled="objectForm.state.loading" type="submit">
    Submit
</Button>

Methods

  • useViewCreate - Extracts all reactive state and wiring for a create view of a model instance.

Types

ViewCreateActionsGroup

ViewCreateContext

ViewCreateInstanceGroup

ViewCreateOptions

Required identification.

Source

client/lib/use/useViewCreate.js:1

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