Skip to content

Commit c5d8935

Browse files
committed
[inertiajs#1864] Merge pull request #6 from james-em/up_to_date_page
[inertiajs#1864] Pass the full page object to resolveComponent
1 parent 4ee2b96 commit c5d8935

File tree

8 files changed

+15
-15
lines changed

8 files changed

+15
-15
lines changed

packages/core/src/router.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ export class Router {
449449
preserveState?: PreserveStateOption
450450
} = {},
451451
): Promise<void> {
452-
return Promise.resolve(this.resolveComponent(page.component)).then((component) => {
452+
return Promise.resolve(this.resolveComponent(page.component, page)).then((component) => {
453453
if (visitId === this.visitId) {
454454
page.scrollRegions = page.scrollRegions || []
455455
page.rememberedState = page.rememberedState || {}
@@ -481,7 +481,7 @@ export class Router {
481481
if (event.state !== null) {
482482
const page = event.state
483483
const visitId = this.createVisitId()
484-
Promise.resolve(this.resolveComponent(page.component)).then((component) => {
484+
Promise.resolve(this.resolveComponent(page.component, page)).then((component) => {
485485
if (visitId === this.visitId) {
486486
this.page = page
487487
this.swapComponent({ component, page, preserveState: false }).then(() => {

packages/core/src/types.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export interface Page<SharedProps extends PageProps = PageProps> {
4343
rememberedState: Record<string, unknown>
4444
}
4545

46-
export type PageResolver = (name: string) => Component
46+
export type PageResolver = (name: string, page: Page) => Component
4747

4848
export type PageHandler = ({
4949
component,

packages/react/src/createInertiaApp.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,11 @@ export default async function createInertiaApp<SharedProps extends PageProps = P
7878
const el = isServer ? null : document.getElementById(id)
7979
const initialPage = page || JSON.parse(el.dataset.page)
8080
// @ts-expect-error
81-
const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)
81+
const resolveComponent = (name, page) => Promise.resolve(resolve(name, page)).then((module) => module.default || module)
8282

8383
let head = []
8484

85-
const reactApp = await resolveComponent(initialPage.component).then((initialComponent) => {
85+
const reactApp = await resolveComponent(initialPage.component, initialPage).then((initialComponent) => {
8686
return setup({
8787
// @ts-expect-error
8888
el,

packages/svelte/src/createInertiaApp.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ export default async function createInertiaApp({ id = 'app', resolve, setup, pro
77
const isServer = typeof window === 'undefined'
88
const el = isServer ? null : document.getElementById(id)
99
const initialPage = page || JSON.parse(el.dataset.page)
10-
const resolveComponent = (name) => Promise.resolve(resolve(name))
10+
const resolveComponent = (name, page) => Promise.resolve(resolve(name, page))
1111

12-
await resolveComponent(initialPage.component).then((initialComponent) => {
12+
await resolveComponent(initialPage.component, initialPage).then((initialComponent) => {
1313
store.set({
1414
component: initialComponent,
1515
page: initialPage,

packages/vue2/src/app.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import useForm from './useForm'
88
export interface InertiaProps {
99
initialPage: Page
1010
initialComponent?: object
11-
resolveComponent?: (name: string) => Component
11+
resolveComponent?: (name: string, page: Page) => Component
1212
titleCallback?: (title: string) => string
1313
onHeadUpdate?: (elements: string[]) => void
1414
}

packages/vue2/src/createInertiaApp.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import App, { InertiaApp, InertiaProps, plugin } from './app'
44

55
interface CreateInertiaAppProps {
66
id?: string
7-
resolve: (name: string) => Component | Promise<Component> | { default: Component }
7+
resolve: (name: string, page: Page) => Component | Promise<Component> | { default: Component }
88
setup: (props: {
99
el: Element
1010
App: InertiaApp
@@ -40,11 +40,11 @@ export default async function createInertiaApp({
4040
const el = isServer ? null : document.getElementById(id)
4141
const initialPage = page || JSON.parse(el.dataset.page)
4242
// @ts-expect-error
43-
const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)
43+
const resolveComponent = (name, page) => Promise.resolve(resolve(name, page)).then((module) => module.default || module)
4444

4545
let head = []
4646

47-
const vueApp = await resolveComponent(initialPage.component).then((initialComponent) => {
47+
const vueApp = await resolveComponent(initialPage.component, initialPage).then((initialComponent) => {
4848
return setup({
4949
el,
5050
App,

packages/vue3/src/app.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import useForm from './useForm'
1818
export interface InertiaAppProps {
1919
initialPage: Page
2020
initialComponent?: object
21-
resolveComponent?: (name: string) => DefineComponent | Promise<DefineComponent>
21+
resolveComponent?: (name: string, page: Page) => DefineComponent | Promise<DefineComponent>
2222
titleCallback?: (title: string) => string
2323
onHeadUpdate?: (elements: string[]) => void
2424
}

packages/vue3/src/createInertiaApp.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import App, { InertiaApp, InertiaAppProps, plugin } from './app'
44

55
interface CreateInertiaAppProps {
66
id?: string
7-
resolve: (name: string) => DefineComponent | Promise<DefineComponent> | { default: DefineComponent }
7+
resolve: (name: string, page: Page) => DefineComponent | Promise<DefineComponent> | { default: DefineComponent }
88
setup: (props: { el: Element; App: InertiaApp; props: InertiaAppProps; plugin: Plugin }) => void | VueApp
99
title?: (title: string) => string
1010
progress?:
@@ -31,11 +31,11 @@ export default async function createInertiaApp({
3131
const isServer = typeof window === 'undefined'
3232
const el = isServer ? null : document.getElementById(id)
3333
const initialPage = page || JSON.parse(el.dataset.page)
34-
const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)
34+
const resolveComponent = (name, page) => Promise.resolve(resolve(name, page)).then((module) => module.default || module)
3535

3636
let head = []
3737

38-
const vueApp = await resolveComponent(initialPage.component).then((initialComponent) => {
38+
const vueApp = await resolveComponent(initialPage.component, initialPage).then((initialComponent) => {
3939
return setup({
4040
el,
4141
App,

0 commit comments

Comments
 (0)