@inertiajs/core 2.3.2 → 2.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inertiajs/core",
3
- "version": "2.3.2",
3
+ "version": "2.3.3",
4
4
  "license": "MIT",
5
5
  "description": "A framework for creating server-driven single page apps.",
6
6
  "contributors": [
package/types/events.d.ts CHANGED
@@ -11,3 +11,4 @@ export declare const fireStartEvent: GlobalEventTrigger<'start'>;
11
11
  export declare const fireSuccessEvent: GlobalEventTrigger<'success'>;
12
12
  export declare const firePrefetchedEvent: GlobalEventTrigger<'prefetched'>;
13
13
  export declare const firePrefetchingEvent: GlobalEventTrigger<'prefetching'>;
14
+ export declare const fireFlashEvent: GlobalEventTrigger<'flash'>;
package/types/page.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- import { Component, Page, PageEvent, PageHandler, PageResolver, RouterInitParams, Visit } from './types';
1
+ import { Component, FlashData, Page, PageEvent, PageHandler, PageResolver, RouterInitParams, Visit } from './types';
2
2
  declare class CurrentPage {
3
3
  protected page: Page;
4
4
  protected swapComponent: PageHandler<any>;
5
5
  protected resolveComponent: PageResolver;
6
+ protected onFlashCallback?: (flash: Page['flash']) => void;
6
7
  protected componentId: {};
7
8
  protected listeners: {
8
9
  event: PageEvent;
@@ -11,7 +12,7 @@ declare class CurrentPage {
11
12
  protected isFirstPageLoad: boolean;
12
13
  protected cleared: boolean;
13
14
  protected pendingDeferredProps: Pick<Page, 'deferredProps' | 'url' | 'component'> | null;
14
- init<ComponentType = Component>({ initialPage, swapComponent, resolveComponent, }: RouterInitParams<ComponentType>): this;
15
+ init<ComponentType = Component>({ initialPage, swapComponent, resolveComponent, onFlash, }: RouterInitParams<ComponentType>): this;
15
16
  set(page: Page, { replace, preserveScroll, preserveState, viewTransition, }?: {
16
17
  replace?: boolean;
17
18
  preserveScroll?: boolean;
@@ -24,8 +25,10 @@ declare class CurrentPage {
24
25
  clear(): void;
25
26
  isCleared(): boolean;
26
27
  get(): Page;
28
+ getWithoutFlashData(): Page;
27
29
  hasOnceProps(): boolean;
28
30
  merge(data: Partial<Page>): void;
31
+ setFlash(flash: FlashData): void;
29
32
  setUrlHash(hash: string): void;
30
33
  remember(data: Page['rememberedState']): void;
31
34
  swap({ component, page, preserveState, viewTransition, }: {
package/types/router.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import Queue from './queue';
2
2
  import { RequestStream } from './requestStream';
3
- import { ActiveVisit, ClientSideVisitOptions, Component, GlobalEvent, GlobalEventNames, GlobalEventResult, InFlightPrefetch, Page, PendingVisit, PendingVisitOptions, PollOptions, PrefetchedResponse, PrefetchOptions, ReloadOptions, RequestPayload, RouterInitParams, UrlMethodPair, VisitCallbacks, VisitHelperOptions, VisitOptions } from './types';
3
+ import { ActiveVisit, ClientSideVisitOptions, Component, FlashData, GlobalEvent, GlobalEventNames, GlobalEventResult, InFlightPrefetch, Page, PageFlashData, PendingVisit, PendingVisitOptions, PollOptions, PrefetchedResponse, PrefetchOptions, ReloadOptions, RequestPayload, RouterInitParams, UrlMethodPair, VisitCallbacks, VisitHelperOptions, VisitOptions } from './types';
4
4
  export declare class Router {
5
5
  protected syncRequestStream: RequestStream;
6
6
  protected asyncRequestStream: RequestStream;
7
7
  protected clientVisitQueue: Queue<Promise<void>>;
8
- init<ComponentType = Component>({ initialPage, resolveComponent, swapComponent, }: RouterInitParams<ComponentType>): void;
8
+ init<ComponentType = Component>({ initialPage, resolveComponent, swapComponent, onFlash, }: RouterInitParams<ComponentType>): void;
9
9
  get<T extends RequestPayload = RequestPayload>(url: URL | string | UrlMethodPair, data?: T, options?: VisitHelperOptions<T>): void;
10
10
  post<T extends RequestPayload = RequestPayload>(url: URL | string | UrlMethodPair, data?: T, options?: VisitHelperOptions<T>): void;
11
11
  put<T extends RequestPayload = RequestPayload>(url: URL | string | UrlMethodPair, data?: T, options?: VisitHelperOptions<T>): void;
@@ -39,6 +39,7 @@ export declare class Router {
39
39
  appendToProp<TProps = Page['props']>(name: string, value: unknown | unknown[] | ((oldValue: unknown, props: TProps) => unknown | unknown[]), options?: Pick<ClientSideVisitOptions, 'onError' | 'onFinish' | 'onSuccess'>): void;
40
40
  prependToProp<TProps = Page['props']>(name: string, value: unknown | unknown[] | ((oldValue: unknown, props: TProps) => unknown | unknown[]), options?: Pick<ClientSideVisitOptions, 'onError' | 'onFinish' | 'onSuccess'>): void;
41
41
  push<TProps = Page['props']>(params: ClientSideVisitOptions<TProps>): void;
42
+ flash<TFlash extends PageFlashData = PageFlashData>(keyOrData: string | ((flash: FlashData) => TFlash) | TFlash, value?: unknown): void;
42
43
  protected clientVisit<TProps = Page['props']>(params: ClientSideVisitOptions<TProps>, { replace }?: {
43
44
  replace?: boolean;
44
45
  }): void;
package/types/types.d.ts CHANGED
@@ -6,8 +6,12 @@ declare module 'axios' {
6
6
  percentage: number | undefined;
7
7
  }
8
8
  }
9
+ export interface PageFlashData {
10
+ [key: string]: unknown;
11
+ }
9
12
  export type DefaultInertiaConfig = {
10
13
  errorValueType: string;
14
+ flashDataType: PageFlashData;
11
15
  sharedPageProps: PageProps;
12
16
  };
13
17
  /**
@@ -20,9 +24,11 @@ export type DefaultInertiaConfig = {
20
24
  * declare module '@inertiajs/core' {
21
25
  * export interface InertiaConfig {
22
26
  * errorValueType: string[]
27
+ * flashDataType: {
28
+ * toast?: { type: 'success' | 'error', message: string }
29
+ * }
23
30
  * sharedPageProps: {
24
31
  * auth: { user: User | null }
25
- * flash: { success?: string; error?: string }
26
32
  * }
27
33
  * }
28
34
  * }
@@ -32,6 +38,7 @@ export interface InertiaConfig {
32
38
  }
33
39
  export type InertiaConfigFor<Key extends keyof DefaultInertiaConfig> = Key extends keyof InertiaConfig ? InertiaConfig[Key] : DefaultInertiaConfig[Key];
34
40
  export type ErrorValue = InertiaConfigFor<'errorValueType'>;
41
+ export type FlashData = InertiaConfigFor<'flashDataType'>;
35
42
  export type SharedPageProps = InertiaConfigFor<'sharedPageProps'>;
36
43
  export type Errors = Record<string, ErrorValue>;
37
44
  export type ErrorBag = Record<string, Errors>;
@@ -94,6 +101,7 @@ export interface Page<SharedProps extends PageProps = PageProps> {
94
101
  deepMergeProps?: string[];
95
102
  matchPropsOn?: string[];
96
103
  scrollProps?: Record<keyof PageProps, ScrollProp>;
104
+ flash: FlashData;
97
105
  onceProps?: Record<string, {
98
106
  prop: keyof PageProps;
99
107
  expiresAt?: number | null;
@@ -109,6 +117,7 @@ export interface ClientSideVisitOptions<TProps = Page['props']> {
109
117
  component?: Page['component'];
110
118
  url?: Page['url'];
111
119
  props?: ((props: TProps) => PageProps) | PageProps;
120
+ flash?: ((flash: FlashData) => PageFlashData) | PageFlashData;
112
121
  clearHistory?: Page['clearHistory'];
113
122
  encryptHistory?: Page['encryptHistory'];
114
123
  preserveScroll?: VisitOptions['preserveScroll'];
@@ -117,6 +126,7 @@ export interface ClientSideVisitOptions<TProps = Page['props']> {
117
126
  viewTransition?: VisitOptions['viewTransition'];
118
127
  onError?: (errors: Errors) => void;
119
128
  onFinish?: (visit: ClientSideVisitOptions<TProps>) => void;
129
+ onFlash?: (flash: FlashData) => void;
120
130
  onSuccess?: (page: Page) => void;
121
131
  }
122
132
  export type PageResolver = (name: string) => Component;
@@ -248,6 +258,13 @@ export type GlobalEventsMap<T extends RequestPayload = RequestPayload> = {
248
258
  };
249
259
  result: void;
250
260
  };
261
+ flash: {
262
+ parameters: [Page['flash']];
263
+ details: {
264
+ flash: Page['flash'];
265
+ };
266
+ result: void;
267
+ };
251
268
  };
252
269
  export type PageEvent = 'newComponent' | 'firstLoad';
253
270
  export type GlobalEventNames<T extends RequestPayload = RequestPayload> = keyof GlobalEventsMap<T>;
@@ -268,6 +285,7 @@ export type VisitCallbacks<T extends RequestPayload = RequestPayload> = {
268
285
  onCancel: GlobalEventCallback<'cancel', T>;
269
286
  onSuccess: GlobalEventCallback<'success', T>;
270
287
  onError: GlobalEventCallback<'error', T>;
288
+ onFlash: GlobalEventCallback<'flash', T>;
271
289
  onPrefetched: GlobalEventCallback<'prefetched', T>;
272
290
  onPrefetching: GlobalEventCallback<'prefetching', T>;
273
291
  };
@@ -282,6 +300,7 @@ export type RouterInitParams<ComponentType = Component> = {
282
300
  initialPage: Page;
283
301
  resolveComponent: PageResolver;
284
302
  swapComponent: PageHandler<ComponentType>;
303
+ onFlash?: (flash: Page['flash']) => void;
285
304
  };
286
305
  export type PendingVisitOptions = {
287
306
  url: URL;
@@ -554,6 +573,7 @@ declare global {
554
573
  'inertia:finish': GlobalEvent<'finish'>;
555
574
  'inertia:beforeUpdate': GlobalEvent<'beforeUpdate'>;
556
575
  'inertia:navigate': GlobalEvent<'navigate'>;
576
+ 'inertia:flash': GlobalEvent<'flash'>;
557
577
  }
558
578
  }
559
579
  export {};