@adonisjs/inertia
Version:
Official Inertia.js adapter for AdonisJS
69 lines (68 loc) • 2.4 kB
TypeScript
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>;