UNPKG

@adonisjs/inertia

Version:

Official Inertia.js adapter for AdonisJS

69 lines (68 loc) 2.4 kB
import type { PropType, SlotsType } from 'vue'; import { Form as InertiaForm } from '@inertiajs/vue3'; import type { RouteParams, RouteParamsFormats, Routes } from '../common.ts'; export type InertiaFormSlots = InstanceType<typeof InertiaForm>['$slots']; export type InertiaFormDefaultSlot = InertiaFormSlots['default']; export type InertiaFormSlotProps = InertiaFormDefaultSlot extends (...args: any[]) => any ? Parameters<InertiaFormDefaultSlot>[0] : never; /** * Parameters required for route navigation with proper type safety. */ export type FormParams<Route extends keyof Routes> = RouteParams<Route>; /** * Type-safe Form component for Inertia.js form submissions. * * Supports both route-based form submission with automatic URL resolution * and direct action for maximum flexibility. * * @example * ```vue * <!-- Route-based form --> * <Form route="users.store" v-slot="{ processing }"> * <input type="text" name="name" /> * <button :disabled="processing">Create</button> * </Form> * * <!-- Direct action form --> * <Form :action="{ url: '/users', method: 'post' }" v-slot="{ processing }"> * <input type="text" name="name" /> * <button :disabled="processing">Create</button> * </Form> * ``` */ export declare const Form: import("vue").DefineComponent<import("vue").ExtractPropTypes<{ route: { type: PropType<keyof Routes>; required: false; }; params: { type: PropType<RouteParamsFormats<keyof Routes>>; required: false; }; action: { type: PropType<{ url: string; method: string; }>; required: false; }; }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{ route: { type: PropType<keyof Routes>; required: false; }; params: { type: PropType<RouteParamsFormats<keyof Routes>>; required: false; }; action: { type: PropType<{ url: string; method: string; }>; required: false; }; }>> & Readonly<{}>, {}, SlotsType<{ default: InertiaFormSlotProps; }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;