diff --git a/packages/core/src/infiniteScroll/data.ts b/packages/core/src/infiniteScroll/data.ts index 1110c471a..e70e3bcba 100644 --- a/packages/core/src/infiniteScroll/data.ts +++ b/packages/core/src/infiniteScroll/data.ts @@ -54,6 +54,17 @@ export const useInfiniteScrollData = (options: { state.requestCount = rememberedState.requestCount || 0 } + const removeEventListener = router.on('success', () => { + const scrollProp = getScrollPropFromCurrentPage() + + if (scrollProp.reset) { + state.previousPage = scrollProp.previousPage + state.nextPage = scrollProp.nextPage + state.lastLoadedPage = scrollProp.currentPage + state.requestCount = 0 + } + }) + const getScrollPropKeyForSide = (side: Side): ScrollPropPageNames => { return side === 'next' ? 'nextPage' : 'previousPage' } @@ -143,5 +154,6 @@ export const useInfiniteScrollData = (options: { hasNext, fetchNext, fetchPrevious, + removeEventListener, } } diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 3e85820b0..4096cb6c6 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -110,6 +110,7 @@ export type ScrollProp = { previousPage?: number | string nextPage?: number | string currentPage?: number | string + reset: boolean } export interface Page { @@ -532,6 +533,7 @@ export interface UseInfiniteScrollDataManager { hasNext: () => boolean fetchNext: (reloadOptions?: ReloadOptions) => void fetchPrevious: (reloadOptions?: ReloadOptions) => void + removeEventListener: () => void } export interface UseInfiniteScrollElementManager { diff --git a/packages/react/src/InfiniteScroll.ts b/packages/react/src/InfiniteScroll.ts index 4cc67d83c..64a404daf 100644 --- a/packages/react/src/InfiniteScroll.ts +++ b/packages/react/src/InfiniteScroll.ts @@ -212,6 +212,7 @@ const InfiniteScroll = forwardRef( } return () => { + dataManager.removeEventListener() elementManager.flushAll() setInfiniteScroll(null) } diff --git a/packages/react/test-app/Pages/InfiniteScroll/Filtering.tsx b/packages/react/test-app/Pages/InfiniteScroll/Filtering.tsx new file mode 100644 index 000000000..b419c3eab --- /dev/null +++ b/packages/react/test-app/Pages/InfiniteScroll/Filtering.tsx @@ -0,0 +1,80 @@ +import { InfiniteScroll, Link, useForm } from '@inertiajs/react' +import { debounce } from 'lodash-es' +import { useCallback, useEffect } from 'react' +import UserCard, { User } from './UserCard' + +interface Props { + users: { data: User[] } + preserveState: boolean + filter?: string + search?: string +} + +export default ({ users, preserveState, filter, search }: Props) => { + const { data, setData, get } = useForm({ + filter: undefined, + page: undefined, + search: search, + }) + + const debouncedSearch = useCallback( + debounce(() => { + get( + '', + preserveState + ? { + preserveState: true, + replace: true, + only: ['users', 'search', 'filter'], + reset: ['users'], + } + : { + replace: true, + }, + ) + }, 250), + [get], + ) + + useEffect(() => { + if (data.search !== search) { + debouncedSearch() + } + }, [data.search, search, debouncedSearch]) + + const handleSearchChange = (e: React.ChangeEvent) => { + setData('search', e.target.value) + } + + return ( +
+
+ No Filter + A-M + N-Z +
Current filter: {filter || 'none'}
+
Current search: {search || 'none'}
+ +
+ +
Loading...
} + > + {users.data.map((user) => ( + + ))} +
+ +
+ No Filter + A-M + N-Z +
Current filter: {filter || 'none'}
+
Current search: {search || 'none'}
+ +
+
+ ) +} diff --git a/packages/svelte/src/InfiniteScroll.svelte b/packages/svelte/src/InfiniteScroll.svelte index b29703e5d..69db203ad 100644 --- a/packages/svelte/src/InfiniteScroll.svelte +++ b/packages/svelte/src/InfiniteScroll.svelte @@ -182,7 +182,10 @@ : infiniteScrollInstance?.elementManager.disableTriggers() } - onDestroy(() => infiniteScrollInstance?.elementManager.flushAll()) + onDestroy(() => { + infiniteScrollInstance?.dataManager.removeEventListener() + infiniteScrollInstance?.elementManager.flushAll() + }) {#if !startElement && !reverse} diff --git a/packages/svelte/test-app/Pages/InfiniteScroll/Filtering.svelte b/packages/svelte/test-app/Pages/InfiniteScroll/Filtering.svelte new file mode 100644 index 000000000..7c7ef2de3 --- /dev/null +++ b/packages/svelte/test-app/Pages/InfiniteScroll/Filtering.svelte @@ -0,0 +1,77 @@ + + +
+
+ No Filter + A-M + N-Z +
Current filter: {filter || 'none'}
+
Current search: {search || 'none'}
+ +
+ + +
Loading...
+ + {#each users.data as user (user.id)} + + {/each} +
+ +
+ No Filter + A-M + N-Z +
Current filter: {filter || 'none'}
+
Current search: {search || 'none'}
+ +
+
diff --git a/packages/vue3/src/infiniteScroll.ts b/packages/vue3/src/infiniteScroll.ts index a764c79d5..b4ca00069 100644 --- a/packages/vue3/src/infiniteScroll.ts +++ b/packages/vue3/src/infiniteScroll.ts @@ -166,7 +166,10 @@ const InfiniteScroll = defineComponent({ } }) - onUnmounted(elementManager.flushAll) + onUnmounted(() => { + dataManager.removeEventListener() + elementManager.flushAll() + }) watch( () => [autoLoad.value, props.onlyNext, props.onlyPrevious], diff --git a/packages/vue3/test-app/Pages/InfiniteScroll/Filtering.vue b/packages/vue3/test-app/Pages/InfiniteScroll/Filtering.vue new file mode 100644 index 000000000..5607ceec8 --- /dev/null +++ b/packages/vue3/test-app/Pages/InfiniteScroll/Filtering.vue @@ -0,0 +1,70 @@ + + + diff --git a/playgrounds/react/composer.json b/playgrounds/react/composer.json index 9dc8ba89f..bde100326 100644 --- a/playgrounds/react/composer.json +++ b/playgrounds/react/composer.json @@ -10,7 +10,7 @@ "require": { "php": "^8.2", "guzzlehttp/guzzle": "^7.2", - "inertiajs/inertia-laravel": "dev-merge-improvements", + "inertiajs/inertia-laravel": "^2.0.10", "laravel/framework": "^11.0", "laravel/sanctum": "^4.0", "laravel/tinker": "^2.7", diff --git a/playgrounds/react/composer.lock b/playgrounds/react/composer.lock index ba90d40ce..442bcdc7d 100644 --- a/playgrounds/react/composer.lock +++ b/playgrounds/react/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "484483d98f215f47450735793bf7c80e", + "content-hash": "ca5f21340781c64654e3de34b4b0fd53", "packages": [ { "name": "brick/math", @@ -1055,16 +1055,16 @@ }, { "name": "inertiajs/inertia-laravel", - "version": "dev-merge-improvements", + "version": "v2.0.10", "source": { "type": "git", "url": "https://github.com/inertiajs/inertia-laravel.git", - "reference": "1b3a29e970138ea1fd1862492fdc64f407a207d2" + "reference": "07da425d58a3a0e3ace9c296e67bd897a6e47009" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/1b3a29e970138ea1fd1862492fdc64f407a207d2", - "reference": "1b3a29e970138ea1fd1862492fdc64f407a207d2", + "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/07da425d58a3a0e3ace9c296e67bd897a6e47009", + "reference": "07da425d58a3a0e3ace9c296e67bd897a6e47009", "shasum": "" }, "require": { @@ -1119,9 +1119,9 @@ ], "support": { "issues": "https://github.com/inertiajs/inertia-laravel/issues", - "source": "https://github.com/inertiajs/inertia-laravel/tree/merge-improvements" + "source": "https://github.com/inertiajs/inertia-laravel/tree/v2.0.10" }, - "time": "2025-09-09T19:28:26+00:00" + "time": "2025-09-28T21:21:36+00:00" }, { "name": "laravel/framework", @@ -3559,16 +3559,16 @@ }, { "name": "symfony/console", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7" + "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", - "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", + "url": "https://api.github.com/repos/symfony/console/zipball/2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", + "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", "shasum": "" }, "require": { @@ -3633,7 +3633,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.3" + "source": "https://github.com/symfony/console/tree/v7.3.4" }, "funding": [ { @@ -3653,7 +3653,7 @@ "type": "tidelift" } ], - "time": "2025-08-25T06:35:40+00:00" + "time": "2025-09-22T15:31:00+00:00" }, { "name": "symfony/css-selector", @@ -3789,16 +3789,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3" + "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/0b31a944fcd8759ae294da4d2808cbc53aebd0c3", - "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", + "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", "shasum": "" }, "require": { @@ -3846,7 +3846,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.3.2" + "source": "https://github.com/symfony/error-handler/tree/v7.3.4" }, "funding": [ { @@ -3866,7 +3866,7 @@ "type": "tidelift" } ], - "time": "2025-07-07T08:17:57+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/event-dispatcher", @@ -4098,16 +4098,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "7475561ec27020196c49bb7c4f178d33d7d3dc00" + "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7475561ec27020196c49bb7c4f178d33d7d3dc00", - "reference": "7475561ec27020196c49bb7c4f178d33d7d3dc00", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c061c7c18918b1b64268771aad04b40be41dd2e6", + "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6", "shasum": "" }, "require": { @@ -4157,7 +4157,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.3" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.4" }, "funding": [ { @@ -4177,20 +4177,20 @@ "type": "tidelift" } ], - "time": "2025-08-20T08:04:18+00:00" + "time": "2025-09-16T08:38:17+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b" + "reference": "b796dffea7821f035047235e076b60ca2446e3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/72c304de37e1a1cec6d5d12b81187ebd4850a17b", - "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b796dffea7821f035047235e076b60ca2446e3cf", + "reference": "b796dffea7821f035047235e076b60ca2446e3cf", "shasum": "" }, "require": { @@ -4275,7 +4275,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.3.3" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.4" }, "funding": [ { @@ -4295,20 +4295,20 @@ "type": "tidelift" } ], - "time": "2025-08-29T08:23:45+00:00" + "time": "2025-09-27T12:32:17+00:00" }, { "name": "symfony/mailer", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575" + "reference": "ab97ef2f7acf0216955f5845484235113047a31d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/a32f3f45f1990db8c4341d5122a7d3a381c7e575", - "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575", + "url": "https://api.github.com/repos/symfony/mailer/zipball/ab97ef2f7acf0216955f5845484235113047a31d", + "reference": "ab97ef2f7acf0216955f5845484235113047a31d", "shasum": "" }, "require": { @@ -4359,7 +4359,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.3.3" + "source": "https://github.com/symfony/mailer/tree/v7.3.4" }, "funding": [ { @@ -4379,20 +4379,20 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-09-17T05:51:54+00:00" }, { "name": "symfony/mime", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1" + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/e0a0f859148daf1edf6c60b398eb40bfc96697d1", - "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1", + "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35", + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35", "shasum": "" }, "require": { @@ -4447,7 +4447,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.3.2" + "source": "https://github.com/symfony/mime/tree/v7.3.4" }, "funding": [ { @@ -4467,7 +4467,7 @@ "type": "tidelift" } ], - "time": "2025-07-15T13:41:35+00:00" + "time": "2025-09-16T08:38:17+00:00" }, { "name": "symfony/polyfill-ctype", @@ -5140,16 +5140,16 @@ }, { "name": "symfony/process", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "32241012d521e2e8a9d713adb0812bb773b907f1" + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/32241012d521e2e8a9d713adb0812bb773b907f1", - "reference": "32241012d521e2e8a9d713adb0812bb773b907f1", + "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", "shasum": "" }, "require": { @@ -5181,7 +5181,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.3" + "source": "https://github.com/symfony/process/tree/v7.3.4" }, "funding": [ { @@ -5201,20 +5201,20 @@ "type": "tidelift" } ], - "time": "2025-08-18T09:42:54+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/routing", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4" + "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/7614b8ca5fa89b9cd233e21b627bfc5774f586e4", - "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4", + "url": "https://api.github.com/repos/symfony/routing/zipball/8dc648e159e9bac02b703b9fbd937f19ba13d07c", + "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c", "shasum": "" }, "require": { @@ -5266,7 +5266,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.2" + "source": "https://github.com/symfony/routing/tree/v7.3.4" }, "funding": [ { @@ -5286,7 +5286,7 @@ "type": "tidelift" } ], - "time": "2025-07-15T11:36:08+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/service-contracts", @@ -5373,16 +5373,16 @@ }, { "name": "symfony/string", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c" + "reference": "f96476035142921000338bad71e5247fbc138872" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/17a426cce5fd1f0901fefa9b2a490d0038fd3c9c", - "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c", + "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", + "reference": "f96476035142921000338bad71e5247fbc138872", "shasum": "" }, "require": { @@ -5397,7 +5397,6 @@ }, "require-dev": { "symfony/emoji": "^7.1", - "symfony/error-handler": "^6.4|^7.0", "symfony/http-client": "^6.4|^7.0", "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -5440,7 +5439,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.3" + "source": "https://github.com/symfony/string/tree/v7.3.4" }, "funding": [ { @@ -5460,20 +5459,20 @@ "type": "tidelift" } ], - "time": "2025-08-25T06:35:40+00:00" + "time": "2025-09-11T14:36:48+00:00" }, { "name": "symfony/translation", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "e0837b4cbcef63c754d89a4806575cada743a38d" + "reference": "ec25870502d0c7072d086e8ffba1420c85965174" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/e0837b4cbcef63c754d89a4806575cada743a38d", - "reference": "e0837b4cbcef63c754d89a4806575cada743a38d", + "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174", + "reference": "ec25870502d0c7072d086e8ffba1420c85965174", "shasum": "" }, "require": { @@ -5540,7 +5539,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.3.3" + "source": "https://github.com/symfony/translation/tree/v7.3.4" }, "funding": [ { @@ -5560,7 +5559,7 @@ "type": "tidelift" } ], - "time": "2025-08-01T21:02:37+00:00" + "time": "2025-09-07T11:39:36+00:00" }, { "name": "symfony/translation-contracts", @@ -5716,16 +5715,16 @@ }, { "name": "symfony/var-dumper", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f" + "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/34d8d4c4b9597347306d1ec8eb4e1319b1e6986f", - "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", + "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", "shasum": "" }, "require": { @@ -5779,7 +5778,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.3" + "source": "https://github.com/symfony/var-dumper/tree/v7.3.4" }, "funding": [ { @@ -5799,7 +5798,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -7069,16 +7068,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.57", + "version": "10.5.58", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "8e7598bbb17bb5cd80728f4831d3f83223d3a6b3" + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e7598bbb17bb5cd80728f4831d3f83223d3a6b3", - "reference": "8e7598bbb17bb5cd80728f4831d3f83223d3a6b3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e24fb46da450d8e6a5788670513c1af1424f16ca", + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca", "shasum": "" }, "require": { @@ -7150,7 +7149,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.57" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.58" }, "funding": [ { @@ -7174,7 +7173,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T06:30:38+00:00" + "time": "2025-09-28T12:04:46+00:00" }, { "name": "sebastian/cli-parser", @@ -8639,9 +8638,7 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": { - "inertiajs/inertia-laravel": 20 - }, + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { diff --git a/playgrounds/svelte4/composer.json b/playgrounds/svelte4/composer.json index 802a451b3..b17bdcc64 100644 --- a/playgrounds/svelte4/composer.json +++ b/playgrounds/svelte4/composer.json @@ -10,7 +10,7 @@ "require": { "php": "^8.2", "guzzlehttp/guzzle": "^7.2", - "inertiajs/inertia-laravel": "dev-merge-improvements", + "inertiajs/inertia-laravel": "^2.0.10", "laravel/framework": "^11.0", "laravel/sanctum": "^4.0", "laravel/tinker": "^2.7" diff --git a/playgrounds/svelte4/composer.lock b/playgrounds/svelte4/composer.lock index 19018b7a6..e9cbf168b 100644 --- a/playgrounds/svelte4/composer.lock +++ b/playgrounds/svelte4/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7867cb11d70ad58d5bb8aa68d7790bfe", + "content-hash": "f268586ff0f991e4978bca1fa052f588", "packages": [ { "name": "brick/math", @@ -1055,16 +1055,16 @@ }, { "name": "inertiajs/inertia-laravel", - "version": "dev-merge-improvements", + "version": "v2.0.10", "source": { "type": "git", "url": "https://github.com/inertiajs/inertia-laravel.git", - "reference": "1b3a29e970138ea1fd1862492fdc64f407a207d2" + "reference": "07da425d58a3a0e3ace9c296e67bd897a6e47009" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/1b3a29e970138ea1fd1862492fdc64f407a207d2", - "reference": "1b3a29e970138ea1fd1862492fdc64f407a207d2", + "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/07da425d58a3a0e3ace9c296e67bd897a6e47009", + "reference": "07da425d58a3a0e3ace9c296e67bd897a6e47009", "shasum": "" }, "require": { @@ -1119,9 +1119,9 @@ ], "support": { "issues": "https://github.com/inertiajs/inertia-laravel/issues", - "source": "https://github.com/inertiajs/inertia-laravel/tree/merge-improvements" + "source": "https://github.com/inertiajs/inertia-laravel/tree/v2.0.10" }, - "time": "2025-09-09T19:28:26+00:00" + "time": "2025-09-28T21:21:36+00:00" }, { "name": "laravel/framework", @@ -3482,16 +3482,16 @@ }, { "name": "symfony/console", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7" + "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", - "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", + "url": "https://api.github.com/repos/symfony/console/zipball/2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", + "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", "shasum": "" }, "require": { @@ -3556,7 +3556,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.3" + "source": "https://github.com/symfony/console/tree/v7.3.4" }, "funding": [ { @@ -3576,7 +3576,7 @@ "type": "tidelift" } ], - "time": "2025-08-25T06:35:40+00:00" + "time": "2025-09-22T15:31:00+00:00" }, { "name": "symfony/css-selector", @@ -3712,16 +3712,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3" + "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/0b31a944fcd8759ae294da4d2808cbc53aebd0c3", - "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", + "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", "shasum": "" }, "require": { @@ -3769,7 +3769,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.3.2" + "source": "https://github.com/symfony/error-handler/tree/v7.3.4" }, "funding": [ { @@ -3789,7 +3789,7 @@ "type": "tidelift" } ], - "time": "2025-07-07T08:17:57+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/event-dispatcher", @@ -4021,16 +4021,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "7475561ec27020196c49bb7c4f178d33d7d3dc00" + "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7475561ec27020196c49bb7c4f178d33d7d3dc00", - "reference": "7475561ec27020196c49bb7c4f178d33d7d3dc00", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c061c7c18918b1b64268771aad04b40be41dd2e6", + "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6", "shasum": "" }, "require": { @@ -4080,7 +4080,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.3" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.4" }, "funding": [ { @@ -4100,20 +4100,20 @@ "type": "tidelift" } ], - "time": "2025-08-20T08:04:18+00:00" + "time": "2025-09-16T08:38:17+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b" + "reference": "b796dffea7821f035047235e076b60ca2446e3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/72c304de37e1a1cec6d5d12b81187ebd4850a17b", - "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b796dffea7821f035047235e076b60ca2446e3cf", + "reference": "b796dffea7821f035047235e076b60ca2446e3cf", "shasum": "" }, "require": { @@ -4198,7 +4198,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.3.3" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.4" }, "funding": [ { @@ -4218,20 +4218,20 @@ "type": "tidelift" } ], - "time": "2025-08-29T08:23:45+00:00" + "time": "2025-09-27T12:32:17+00:00" }, { "name": "symfony/mailer", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575" + "reference": "ab97ef2f7acf0216955f5845484235113047a31d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/a32f3f45f1990db8c4341d5122a7d3a381c7e575", - "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575", + "url": "https://api.github.com/repos/symfony/mailer/zipball/ab97ef2f7acf0216955f5845484235113047a31d", + "reference": "ab97ef2f7acf0216955f5845484235113047a31d", "shasum": "" }, "require": { @@ -4282,7 +4282,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.3.3" + "source": "https://github.com/symfony/mailer/tree/v7.3.4" }, "funding": [ { @@ -4302,20 +4302,20 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-09-17T05:51:54+00:00" }, { "name": "symfony/mime", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1" + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/e0a0f859148daf1edf6c60b398eb40bfc96697d1", - "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1", + "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35", + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35", "shasum": "" }, "require": { @@ -4370,7 +4370,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.3.2" + "source": "https://github.com/symfony/mime/tree/v7.3.4" }, "funding": [ { @@ -4390,7 +4390,7 @@ "type": "tidelift" } ], - "time": "2025-07-15T13:41:35+00:00" + "time": "2025-09-16T08:38:17+00:00" }, { "name": "symfony/polyfill-ctype", @@ -5063,16 +5063,16 @@ }, { "name": "symfony/process", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "32241012d521e2e8a9d713adb0812bb773b907f1" + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/32241012d521e2e8a9d713adb0812bb773b907f1", - "reference": "32241012d521e2e8a9d713adb0812bb773b907f1", + "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", "shasum": "" }, "require": { @@ -5104,7 +5104,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.3" + "source": "https://github.com/symfony/process/tree/v7.3.4" }, "funding": [ { @@ -5124,20 +5124,20 @@ "type": "tidelift" } ], - "time": "2025-08-18T09:42:54+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/routing", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4" + "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/7614b8ca5fa89b9cd233e21b627bfc5774f586e4", - "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4", + "url": "https://api.github.com/repos/symfony/routing/zipball/8dc648e159e9bac02b703b9fbd937f19ba13d07c", + "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c", "shasum": "" }, "require": { @@ -5189,7 +5189,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.2" + "source": "https://github.com/symfony/routing/tree/v7.3.4" }, "funding": [ { @@ -5209,7 +5209,7 @@ "type": "tidelift" } ], - "time": "2025-07-15T11:36:08+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/service-contracts", @@ -5296,16 +5296,16 @@ }, { "name": "symfony/string", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c" + "reference": "f96476035142921000338bad71e5247fbc138872" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/17a426cce5fd1f0901fefa9b2a490d0038fd3c9c", - "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c", + "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", + "reference": "f96476035142921000338bad71e5247fbc138872", "shasum": "" }, "require": { @@ -5320,7 +5320,6 @@ }, "require-dev": { "symfony/emoji": "^7.1", - "symfony/error-handler": "^6.4|^7.0", "symfony/http-client": "^6.4|^7.0", "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -5363,7 +5362,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.3" + "source": "https://github.com/symfony/string/tree/v7.3.4" }, "funding": [ { @@ -5383,20 +5382,20 @@ "type": "tidelift" } ], - "time": "2025-08-25T06:35:40+00:00" + "time": "2025-09-11T14:36:48+00:00" }, { "name": "symfony/translation", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "e0837b4cbcef63c754d89a4806575cada743a38d" + "reference": "ec25870502d0c7072d086e8ffba1420c85965174" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/e0837b4cbcef63c754d89a4806575cada743a38d", - "reference": "e0837b4cbcef63c754d89a4806575cada743a38d", + "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174", + "reference": "ec25870502d0c7072d086e8ffba1420c85965174", "shasum": "" }, "require": { @@ -5463,7 +5462,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.3.3" + "source": "https://github.com/symfony/translation/tree/v7.3.4" }, "funding": [ { @@ -5483,7 +5482,7 @@ "type": "tidelift" } ], - "time": "2025-08-01T21:02:37+00:00" + "time": "2025-09-07T11:39:36+00:00" }, { "name": "symfony/translation-contracts", @@ -5639,16 +5638,16 @@ }, { "name": "symfony/var-dumper", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f" + "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/34d8d4c4b9597347306d1ec8eb4e1319b1e6986f", - "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", + "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", "shasum": "" }, "require": { @@ -5702,7 +5701,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.3" + "source": "https://github.com/symfony/var-dumper/tree/v7.3.4" }, "funding": [ { @@ -5722,7 +5721,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -6992,16 +6991,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.57", + "version": "10.5.58", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "8e7598bbb17bb5cd80728f4831d3f83223d3a6b3" + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e7598bbb17bb5cd80728f4831d3f83223d3a6b3", - "reference": "8e7598bbb17bb5cd80728f4831d3f83223d3a6b3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e24fb46da450d8e6a5788670513c1af1424f16ca", + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca", "shasum": "" }, "require": { @@ -7073,7 +7072,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.57" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.58" }, "funding": [ { @@ -7097,7 +7096,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T06:30:38+00:00" + "time": "2025-09-28T12:04:46+00:00" }, { "name": "sebastian/cli-parser", @@ -8562,9 +8561,7 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": { - "inertiajs/inertia-laravel": 20 - }, + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { diff --git a/playgrounds/svelte5/composer.json b/playgrounds/svelte5/composer.json index 802a451b3..b17bdcc64 100644 --- a/playgrounds/svelte5/composer.json +++ b/playgrounds/svelte5/composer.json @@ -10,7 +10,7 @@ "require": { "php": "^8.2", "guzzlehttp/guzzle": "^7.2", - "inertiajs/inertia-laravel": "dev-merge-improvements", + "inertiajs/inertia-laravel": "^2.0.10", "laravel/framework": "^11.0", "laravel/sanctum": "^4.0", "laravel/tinker": "^2.7" diff --git a/playgrounds/svelte5/composer.lock b/playgrounds/svelte5/composer.lock index 19018b7a6..e9cbf168b 100644 --- a/playgrounds/svelte5/composer.lock +++ b/playgrounds/svelte5/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7867cb11d70ad58d5bb8aa68d7790bfe", + "content-hash": "f268586ff0f991e4978bca1fa052f588", "packages": [ { "name": "brick/math", @@ -1055,16 +1055,16 @@ }, { "name": "inertiajs/inertia-laravel", - "version": "dev-merge-improvements", + "version": "v2.0.10", "source": { "type": "git", "url": "https://github.com/inertiajs/inertia-laravel.git", - "reference": "1b3a29e970138ea1fd1862492fdc64f407a207d2" + "reference": "07da425d58a3a0e3ace9c296e67bd897a6e47009" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/1b3a29e970138ea1fd1862492fdc64f407a207d2", - "reference": "1b3a29e970138ea1fd1862492fdc64f407a207d2", + "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/07da425d58a3a0e3ace9c296e67bd897a6e47009", + "reference": "07da425d58a3a0e3ace9c296e67bd897a6e47009", "shasum": "" }, "require": { @@ -1119,9 +1119,9 @@ ], "support": { "issues": "https://github.com/inertiajs/inertia-laravel/issues", - "source": "https://github.com/inertiajs/inertia-laravel/tree/merge-improvements" + "source": "https://github.com/inertiajs/inertia-laravel/tree/v2.0.10" }, - "time": "2025-09-09T19:28:26+00:00" + "time": "2025-09-28T21:21:36+00:00" }, { "name": "laravel/framework", @@ -3482,16 +3482,16 @@ }, { "name": "symfony/console", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7" + "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", - "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", + "url": "https://api.github.com/repos/symfony/console/zipball/2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", + "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", "shasum": "" }, "require": { @@ -3556,7 +3556,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.3" + "source": "https://github.com/symfony/console/tree/v7.3.4" }, "funding": [ { @@ -3576,7 +3576,7 @@ "type": "tidelift" } ], - "time": "2025-08-25T06:35:40+00:00" + "time": "2025-09-22T15:31:00+00:00" }, { "name": "symfony/css-selector", @@ -3712,16 +3712,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3" + "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/0b31a944fcd8759ae294da4d2808cbc53aebd0c3", - "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", + "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", "shasum": "" }, "require": { @@ -3769,7 +3769,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.3.2" + "source": "https://github.com/symfony/error-handler/tree/v7.3.4" }, "funding": [ { @@ -3789,7 +3789,7 @@ "type": "tidelift" } ], - "time": "2025-07-07T08:17:57+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/event-dispatcher", @@ -4021,16 +4021,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "7475561ec27020196c49bb7c4f178d33d7d3dc00" + "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7475561ec27020196c49bb7c4f178d33d7d3dc00", - "reference": "7475561ec27020196c49bb7c4f178d33d7d3dc00", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c061c7c18918b1b64268771aad04b40be41dd2e6", + "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6", "shasum": "" }, "require": { @@ -4080,7 +4080,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.3" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.4" }, "funding": [ { @@ -4100,20 +4100,20 @@ "type": "tidelift" } ], - "time": "2025-08-20T08:04:18+00:00" + "time": "2025-09-16T08:38:17+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b" + "reference": "b796dffea7821f035047235e076b60ca2446e3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/72c304de37e1a1cec6d5d12b81187ebd4850a17b", - "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b796dffea7821f035047235e076b60ca2446e3cf", + "reference": "b796dffea7821f035047235e076b60ca2446e3cf", "shasum": "" }, "require": { @@ -4198,7 +4198,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.3.3" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.4" }, "funding": [ { @@ -4218,20 +4218,20 @@ "type": "tidelift" } ], - "time": "2025-08-29T08:23:45+00:00" + "time": "2025-09-27T12:32:17+00:00" }, { "name": "symfony/mailer", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575" + "reference": "ab97ef2f7acf0216955f5845484235113047a31d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/a32f3f45f1990db8c4341d5122a7d3a381c7e575", - "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575", + "url": "https://api.github.com/repos/symfony/mailer/zipball/ab97ef2f7acf0216955f5845484235113047a31d", + "reference": "ab97ef2f7acf0216955f5845484235113047a31d", "shasum": "" }, "require": { @@ -4282,7 +4282,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.3.3" + "source": "https://github.com/symfony/mailer/tree/v7.3.4" }, "funding": [ { @@ -4302,20 +4302,20 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-09-17T05:51:54+00:00" }, { "name": "symfony/mime", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1" + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/e0a0f859148daf1edf6c60b398eb40bfc96697d1", - "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1", + "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35", + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35", "shasum": "" }, "require": { @@ -4370,7 +4370,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.3.2" + "source": "https://github.com/symfony/mime/tree/v7.3.4" }, "funding": [ { @@ -4390,7 +4390,7 @@ "type": "tidelift" } ], - "time": "2025-07-15T13:41:35+00:00" + "time": "2025-09-16T08:38:17+00:00" }, { "name": "symfony/polyfill-ctype", @@ -5063,16 +5063,16 @@ }, { "name": "symfony/process", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "32241012d521e2e8a9d713adb0812bb773b907f1" + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/32241012d521e2e8a9d713adb0812bb773b907f1", - "reference": "32241012d521e2e8a9d713adb0812bb773b907f1", + "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", "shasum": "" }, "require": { @@ -5104,7 +5104,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.3" + "source": "https://github.com/symfony/process/tree/v7.3.4" }, "funding": [ { @@ -5124,20 +5124,20 @@ "type": "tidelift" } ], - "time": "2025-08-18T09:42:54+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/routing", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4" + "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/7614b8ca5fa89b9cd233e21b627bfc5774f586e4", - "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4", + "url": "https://api.github.com/repos/symfony/routing/zipball/8dc648e159e9bac02b703b9fbd937f19ba13d07c", + "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c", "shasum": "" }, "require": { @@ -5189,7 +5189,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.2" + "source": "https://github.com/symfony/routing/tree/v7.3.4" }, "funding": [ { @@ -5209,7 +5209,7 @@ "type": "tidelift" } ], - "time": "2025-07-15T11:36:08+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/service-contracts", @@ -5296,16 +5296,16 @@ }, { "name": "symfony/string", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c" + "reference": "f96476035142921000338bad71e5247fbc138872" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/17a426cce5fd1f0901fefa9b2a490d0038fd3c9c", - "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c", + "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", + "reference": "f96476035142921000338bad71e5247fbc138872", "shasum": "" }, "require": { @@ -5320,7 +5320,6 @@ }, "require-dev": { "symfony/emoji": "^7.1", - "symfony/error-handler": "^6.4|^7.0", "symfony/http-client": "^6.4|^7.0", "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -5363,7 +5362,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.3" + "source": "https://github.com/symfony/string/tree/v7.3.4" }, "funding": [ { @@ -5383,20 +5382,20 @@ "type": "tidelift" } ], - "time": "2025-08-25T06:35:40+00:00" + "time": "2025-09-11T14:36:48+00:00" }, { "name": "symfony/translation", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "e0837b4cbcef63c754d89a4806575cada743a38d" + "reference": "ec25870502d0c7072d086e8ffba1420c85965174" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/e0837b4cbcef63c754d89a4806575cada743a38d", - "reference": "e0837b4cbcef63c754d89a4806575cada743a38d", + "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174", + "reference": "ec25870502d0c7072d086e8ffba1420c85965174", "shasum": "" }, "require": { @@ -5463,7 +5462,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.3.3" + "source": "https://github.com/symfony/translation/tree/v7.3.4" }, "funding": [ { @@ -5483,7 +5482,7 @@ "type": "tidelift" } ], - "time": "2025-08-01T21:02:37+00:00" + "time": "2025-09-07T11:39:36+00:00" }, { "name": "symfony/translation-contracts", @@ -5639,16 +5638,16 @@ }, { "name": "symfony/var-dumper", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f" + "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/34d8d4c4b9597347306d1ec8eb4e1319b1e6986f", - "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", + "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", "shasum": "" }, "require": { @@ -5702,7 +5701,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.3" + "source": "https://github.com/symfony/var-dumper/tree/v7.3.4" }, "funding": [ { @@ -5722,7 +5721,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -6992,16 +6991,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.57", + "version": "10.5.58", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "8e7598bbb17bb5cd80728f4831d3f83223d3a6b3" + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e7598bbb17bb5cd80728f4831d3f83223d3a6b3", - "reference": "8e7598bbb17bb5cd80728f4831d3f83223d3a6b3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e24fb46da450d8e6a5788670513c1af1424f16ca", + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca", "shasum": "" }, "require": { @@ -7073,7 +7072,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.57" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.58" }, "funding": [ { @@ -7097,7 +7096,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T06:30:38+00:00" + "time": "2025-09-28T12:04:46+00:00" }, { "name": "sebastian/cli-parser", @@ -8562,9 +8561,7 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": { - "inertiajs/inertia-laravel": 20 - }, + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { diff --git a/playgrounds/vue3/composer.json b/playgrounds/vue3/composer.json index 9dc8ba89f..bde100326 100644 --- a/playgrounds/vue3/composer.json +++ b/playgrounds/vue3/composer.json @@ -10,7 +10,7 @@ "require": { "php": "^8.2", "guzzlehttp/guzzle": "^7.2", - "inertiajs/inertia-laravel": "dev-merge-improvements", + "inertiajs/inertia-laravel": "^2.0.10", "laravel/framework": "^11.0", "laravel/sanctum": "^4.0", "laravel/tinker": "^2.7", diff --git a/playgrounds/vue3/composer.lock b/playgrounds/vue3/composer.lock index ba90d40ce..442bcdc7d 100644 --- a/playgrounds/vue3/composer.lock +++ b/playgrounds/vue3/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "484483d98f215f47450735793bf7c80e", + "content-hash": "ca5f21340781c64654e3de34b4b0fd53", "packages": [ { "name": "brick/math", @@ -1055,16 +1055,16 @@ }, { "name": "inertiajs/inertia-laravel", - "version": "dev-merge-improvements", + "version": "v2.0.10", "source": { "type": "git", "url": "https://github.com/inertiajs/inertia-laravel.git", - "reference": "1b3a29e970138ea1fd1862492fdc64f407a207d2" + "reference": "07da425d58a3a0e3ace9c296e67bd897a6e47009" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/1b3a29e970138ea1fd1862492fdc64f407a207d2", - "reference": "1b3a29e970138ea1fd1862492fdc64f407a207d2", + "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/07da425d58a3a0e3ace9c296e67bd897a6e47009", + "reference": "07da425d58a3a0e3ace9c296e67bd897a6e47009", "shasum": "" }, "require": { @@ -1119,9 +1119,9 @@ ], "support": { "issues": "https://github.com/inertiajs/inertia-laravel/issues", - "source": "https://github.com/inertiajs/inertia-laravel/tree/merge-improvements" + "source": "https://github.com/inertiajs/inertia-laravel/tree/v2.0.10" }, - "time": "2025-09-09T19:28:26+00:00" + "time": "2025-09-28T21:21:36+00:00" }, { "name": "laravel/framework", @@ -3559,16 +3559,16 @@ }, { "name": "symfony/console", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7" + "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", - "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", + "url": "https://api.github.com/repos/symfony/console/zipball/2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", + "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", "shasum": "" }, "require": { @@ -3633,7 +3633,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.3" + "source": "https://github.com/symfony/console/tree/v7.3.4" }, "funding": [ { @@ -3653,7 +3653,7 @@ "type": "tidelift" } ], - "time": "2025-08-25T06:35:40+00:00" + "time": "2025-09-22T15:31:00+00:00" }, { "name": "symfony/css-selector", @@ -3789,16 +3789,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3" + "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/0b31a944fcd8759ae294da4d2808cbc53aebd0c3", - "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", + "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", "shasum": "" }, "require": { @@ -3846,7 +3846,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.3.2" + "source": "https://github.com/symfony/error-handler/tree/v7.3.4" }, "funding": [ { @@ -3866,7 +3866,7 @@ "type": "tidelift" } ], - "time": "2025-07-07T08:17:57+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/event-dispatcher", @@ -4098,16 +4098,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "7475561ec27020196c49bb7c4f178d33d7d3dc00" + "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7475561ec27020196c49bb7c4f178d33d7d3dc00", - "reference": "7475561ec27020196c49bb7c4f178d33d7d3dc00", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c061c7c18918b1b64268771aad04b40be41dd2e6", + "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6", "shasum": "" }, "require": { @@ -4157,7 +4157,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.3" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.4" }, "funding": [ { @@ -4177,20 +4177,20 @@ "type": "tidelift" } ], - "time": "2025-08-20T08:04:18+00:00" + "time": "2025-09-16T08:38:17+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b" + "reference": "b796dffea7821f035047235e076b60ca2446e3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/72c304de37e1a1cec6d5d12b81187ebd4850a17b", - "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b796dffea7821f035047235e076b60ca2446e3cf", + "reference": "b796dffea7821f035047235e076b60ca2446e3cf", "shasum": "" }, "require": { @@ -4275,7 +4275,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.3.3" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.4" }, "funding": [ { @@ -4295,20 +4295,20 @@ "type": "tidelift" } ], - "time": "2025-08-29T08:23:45+00:00" + "time": "2025-09-27T12:32:17+00:00" }, { "name": "symfony/mailer", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575" + "reference": "ab97ef2f7acf0216955f5845484235113047a31d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/a32f3f45f1990db8c4341d5122a7d3a381c7e575", - "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575", + "url": "https://api.github.com/repos/symfony/mailer/zipball/ab97ef2f7acf0216955f5845484235113047a31d", + "reference": "ab97ef2f7acf0216955f5845484235113047a31d", "shasum": "" }, "require": { @@ -4359,7 +4359,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.3.3" + "source": "https://github.com/symfony/mailer/tree/v7.3.4" }, "funding": [ { @@ -4379,20 +4379,20 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-09-17T05:51:54+00:00" }, { "name": "symfony/mime", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1" + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/e0a0f859148daf1edf6c60b398eb40bfc96697d1", - "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1", + "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35", + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35", "shasum": "" }, "require": { @@ -4447,7 +4447,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.3.2" + "source": "https://github.com/symfony/mime/tree/v7.3.4" }, "funding": [ { @@ -4467,7 +4467,7 @@ "type": "tidelift" } ], - "time": "2025-07-15T13:41:35+00:00" + "time": "2025-09-16T08:38:17+00:00" }, { "name": "symfony/polyfill-ctype", @@ -5140,16 +5140,16 @@ }, { "name": "symfony/process", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "32241012d521e2e8a9d713adb0812bb773b907f1" + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/32241012d521e2e8a9d713adb0812bb773b907f1", - "reference": "32241012d521e2e8a9d713adb0812bb773b907f1", + "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", "shasum": "" }, "require": { @@ -5181,7 +5181,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.3" + "source": "https://github.com/symfony/process/tree/v7.3.4" }, "funding": [ { @@ -5201,20 +5201,20 @@ "type": "tidelift" } ], - "time": "2025-08-18T09:42:54+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/routing", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4" + "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/7614b8ca5fa89b9cd233e21b627bfc5774f586e4", - "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4", + "url": "https://api.github.com/repos/symfony/routing/zipball/8dc648e159e9bac02b703b9fbd937f19ba13d07c", + "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c", "shasum": "" }, "require": { @@ -5266,7 +5266,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.2" + "source": "https://github.com/symfony/routing/tree/v7.3.4" }, "funding": [ { @@ -5286,7 +5286,7 @@ "type": "tidelift" } ], - "time": "2025-07-15T11:36:08+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/service-contracts", @@ -5373,16 +5373,16 @@ }, { "name": "symfony/string", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c" + "reference": "f96476035142921000338bad71e5247fbc138872" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/17a426cce5fd1f0901fefa9b2a490d0038fd3c9c", - "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c", + "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", + "reference": "f96476035142921000338bad71e5247fbc138872", "shasum": "" }, "require": { @@ -5397,7 +5397,6 @@ }, "require-dev": { "symfony/emoji": "^7.1", - "symfony/error-handler": "^6.4|^7.0", "symfony/http-client": "^6.4|^7.0", "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -5440,7 +5439,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.3" + "source": "https://github.com/symfony/string/tree/v7.3.4" }, "funding": [ { @@ -5460,20 +5459,20 @@ "type": "tidelift" } ], - "time": "2025-08-25T06:35:40+00:00" + "time": "2025-09-11T14:36:48+00:00" }, { "name": "symfony/translation", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "e0837b4cbcef63c754d89a4806575cada743a38d" + "reference": "ec25870502d0c7072d086e8ffba1420c85965174" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/e0837b4cbcef63c754d89a4806575cada743a38d", - "reference": "e0837b4cbcef63c754d89a4806575cada743a38d", + "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174", + "reference": "ec25870502d0c7072d086e8ffba1420c85965174", "shasum": "" }, "require": { @@ -5540,7 +5539,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.3.3" + "source": "https://github.com/symfony/translation/tree/v7.3.4" }, "funding": [ { @@ -5560,7 +5559,7 @@ "type": "tidelift" } ], - "time": "2025-08-01T21:02:37+00:00" + "time": "2025-09-07T11:39:36+00:00" }, { "name": "symfony/translation-contracts", @@ -5716,16 +5715,16 @@ }, { "name": "symfony/var-dumper", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f" + "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/34d8d4c4b9597347306d1ec8eb4e1319b1e6986f", - "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", + "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", "shasum": "" }, "require": { @@ -5779,7 +5778,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.3" + "source": "https://github.com/symfony/var-dumper/tree/v7.3.4" }, "funding": [ { @@ -5799,7 +5798,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -7069,16 +7068,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.57", + "version": "10.5.58", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "8e7598bbb17bb5cd80728f4831d3f83223d3a6b3" + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e7598bbb17bb5cd80728f4831d3f83223d3a6b3", - "reference": "8e7598bbb17bb5cd80728f4831d3f83223d3a6b3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e24fb46da450d8e6a5788670513c1af1424f16ca", + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca", "shasum": "" }, "require": { @@ -7150,7 +7149,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.57" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.58" }, "funding": [ { @@ -7174,7 +7173,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T06:30:38+00:00" + "time": "2025-09-28T12:04:46+00:00" }, { "name": "sebastian/cli-parser", @@ -8639,9 +8638,7 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": { - "inertiajs/inertia-laravel": 20 - }, + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { diff --git a/tests/app/eloquent.js b/tests/app/eloquent.js index b6e12f0e0..d8f811149 100644 --- a/tests/app/eloquent.js +++ b/tests/app/eloquent.js @@ -5,6 +5,102 @@ function makeUser(id) { } } +export function getUserNames() { + return [ + 'Adelle Crona DVM', + 'Alison Walter PhD', + 'Aliza Langosh II', + 'Amara DuBuque', + 'Amaya Lang', + 'Angelica Rodriguez', + 'Anjali Windler', + 'Ansley Gusikowski', + 'Asha Welch II', + 'Bailee Zulauf', + 'Barrett Heathcote', + 'Beryl Morar', + 'Bethany Grant', + 'Braden Mayert II', + 'Breana Herzog', + 'Camylle Metz Sr.', + 'Carmen Kerluke', + 'Casimer McClure', + 'Cecil Walsh', + 'Chandler McKenzie', + 'Chaya Rempel', + 'Chelsey Mertz Jr.', + 'Coralie Auer', + 'Daniella Hoppe', + 'Daphnee Douglas', + 'Davonte Heathcote', + 'Dejah Parisian', + 'Demarco Medhurst', + 'Dewayne Rau', + 'Diamond Gibson PhD', + 'Diamond Herzog', + 'Dino Predovic I', + 'Domingo Luettgen', + 'Dora Runolfsdottir', + 'Dr. Billy Larkin', + 'Dr. Chase Green', + 'Dr. Curtis Lehner', + 'Einar Crona MD', + 'Eloisa Pollich', + 'Elsie Goldner', + 'Emma Little Sr.', + 'Erika Ziemann DDS', + 'Ethan Beatty', + 'Euna Boehm', + 'Euna Kerluke', + 'Felton Yost', + 'Genesis Hand', + 'Hailie Quitzon', + 'Helga Waelchi', + 'Ibrahim Jakubowski', + 'Jack Halvorson', + 'Jasmin Stoltenberg', + 'Jennie Olson PhD', + 'Jimmy Gusikowski', + 'Joy Schimmel', + 'Kamron Bechtelar DDS', + 'Katarina McLaughlin', + 'Katharina Towne', + 'Kavon Sporer', + 'Keshawn Langosh DDS', + 'Lacy Johnston V', + 'Lauren Thiel', + 'Lelia Haley', + 'Lonny Hermiston', + 'Lupe Jacobs', + 'Magdalena Rowe', + 'Marjolaine Gleason', + 'Mattie Bradtke', + 'Miss Amiya Altenwerth', + 'Miss Haven Kuhic', + 'Miss Janie Bayer', + 'Miss Raegan Doyle IV', + 'Molly Murray', + 'Niko Christiansen Jr.', + 'Paxton Koss', + 'Reilly Bechtelar', + 'Rex Blanda', + 'Riley Legros', + 'River Pfeffer', + 'Rory Lubowitz', + 'Rosamond Mueller II', + 'Rosario Nicolas Sr.', + 'Sandrine Hammes', + 'Tad Thompson', + 'Talon Fahey DVM', + 'Taylor Kuhlman IV', + 'Tyler Zieme', + 'Vella Price', + 'Virginie Beatty', + 'Wiley Donnelly', + 'Woodrow Kuvalis', + ] +} + function getUsers(page = 1, perPage = 15, total = 40, orderByDesc = false) { // orderByDesc = false // page = 1 => User 1 ... 15, page = 3 => User 31 ... 40 @@ -35,29 +131,6 @@ function getUsers(page = 1, perPage = 15, total = 40, orderByDesc = false) { } } -export function simplePaginateUsers(page = 1, perPage = 15, total = 40, orderByDesc = false) { - const users = getUsers(page, perPage, total, orderByDesc) - const hasMore = getUsers(page + 1, perPage, total, orderByDesc).length > 0 - - const paginated = { - current_page: page, - data: users, - from: users[0]?.id || null, - per_page: perPage, - to: users[users.length - 1]?.id || null, - } - - return { - paginated, - scrollProp: { - pageName: 'page', - previousPage: page > 1 ? page - 1 : null, - nextPage: hasMore ? page + 1 : null, - currentPage: page, - }, - } -} - export function paginateUsers(page = 1, perPage = 15, total = 40, orderByDesc = false) { const users = getUsers(page, perPage, total, orderByDesc) const hasMore = getUsers(page + 1, perPage, total, orderByDesc).length > 0 @@ -75,26 +148,7 @@ export function paginateUsers(page = 1, perPage = 15, total = 40, orderByDesc = previousPage: page > 1 ? page - 1 : null, nextPage: hasMore ? page + 1 : null, currentPage: page, - }, - } -} - -export function cursorPaginateUsers(page = 1, perPage = 15, total = 40, orderByDesc = false) { - const users = getUsers(page, perPage, total, orderByDesc) - const hasMore = getUsers(page + 1, perPage, total, orderByDesc).length > 0 - - return { - paginated: { - data: users, - per_page: perPage, - next_cursor: hasMore ? page + 1 : null, - prev_cursor: page === 1 ? null : page - 1, - }, - scrollProp: { - pageName: 'page', - previousPage: page > 1 ? page - 1 : null, - nextPage: hasMore ? page + 1 : null, - currentPage: page, + reset: false, }, } } diff --git a/tests/app/server.js b/tests/app/server.js index a57bd42fd..1b67bbf59 100644 --- a/tests/app/server.js +++ b/tests/app/server.js @@ -4,7 +4,7 @@ const inertia = require('./helpers') const bodyParser = require('body-parser') const multer = require('multer') const { showServerStatus } = require('./server-status') -const { paginateUsers } = require('./eloquent') +const { getUserNames, paginateUsers } = require('./eloquent') const app = express() app.use(bodyParser.urlencoded({ extended: true })) @@ -925,6 +925,53 @@ app.get('/infinite-scroll/short-content', (req, res) => renderInfiniteScroll(req, res, 'InfiniteScroll/ShortContent', 100, false, 5), ) +function renderInfiniteScrollWithTag(req, res, component, total = 40, orderByDesc = false, perPage = 15) {} + +app.get('/infinite-scroll/filtering/:preserveState', (req, res) => { + const filter = req.query.filter || '' + const search = req.query.search || '' + + let users = getUserNames() + + if (search) { + users = users.filter((user) => user.toLowerCase().includes(search.toLowerCase())) + } + + if (filter === 'a-m') { + users = users.filter((user) => user.toLowerCase() >= 'a' && user.toLowerCase() <= 'm') + } else if (filter === 'n-z') { + users = users.filter((user) => user.toLowerCase() >= 'n' && user.toLowerCase() <= 'z') + } + + const perPage = 15 + const page = req.query.page ? parseInt(req.query.page) : 1 + + const partialReload = !!req.headers['x-inertia-partial-data'] + const shouldAppend = req.headers['x-inertia-infinite-scroll-merge-intent'] !== 'prepend' + const { paginated, scrollProp } = paginateUsers(page, perPage, users.length) + + if (page > 1) { + users = users.slice((page - 1) * perPage, page * perPage) + } + + paginated.data = paginated.data.map((user, i) => ({ ...user, name: users[i] })) + + if (req.headers['x-inertia-reset']) { + scrollProp.reset = true + } + + setTimeout( + () => + inertia.render(req, res, { + component: 'InfiniteScroll/Filtering', + props: { users: paginated, filter, search, preserveState: req.params.preserveState === 'preserve-state' }, + ...(req.headers['x-inertia-reset'] ? {} : { [shouldAppend ? 'mergeProps' : 'prependProps']: ['users.data'] }), + scrollProps: { users: scrollProp }, + }), + partialReload ? 250 : 0, + ) +}) + app.all('*', (req, res) => inertia.render(req, res)) const adapterPorts = { diff --git a/tests/infinite-scroll.spec.ts b/tests/infinite-scroll.spec.ts index ea1e95099..f123024d9 100644 --- a/tests/infinite-scroll.spec.ts +++ b/tests/infinite-scroll.spec.ts @@ -24,6 +24,18 @@ async function smoothScrollTo(page: any, targetY: number) { await page.waitForTimeout(150) } +async function getUserIdsFromDOM(page: Page) { + const userCards = await page.locator('[data-user-id]').all() + const userIds = [] + + for (const card of userCards) { + const userId = await card.getAttribute('data-user-id') + userIds.push(parseInt(userId || '0')) + } + + return userIds +} + // Helper function to check URL updates async function expectQueryString(page: any, expectedPage: string) { if (expectedPage === '1') { @@ -875,18 +887,6 @@ test.describe('Directional trigger constraints', () => { }) test.describe('DOM element ordering', () => { - async function getUserIdsFromDOM(page: Page) { - const userCards = await page.locator('[data-user-id]').all() - const userIds = [] - - for (const card of userCards) { - const userId = await card.getAttribute('data-user-id') - userIds.push(parseInt(userId || '0')) - } - - return userIds - } - test('it maintains correct DOM element order when pages load out of sequence', async ({ page }) => { requests.listen(page) await page.goto('/infinite-scroll/trigger-both?page=2') @@ -1728,3 +1728,156 @@ Object.entries({ }) }) }) + +Object.entries({ + 'refresh state': '/infinite-scroll/filtering/refresh-state', + 'preserve state': '/infinite-scroll/filtering/preserve-state', +}).forEach(([key, path]) => { + test.describe(`Query parameter handling (${key})`, () => { + test('it keeps the existing query parameters intact when updating the page param', async ({ page }) => { + requests.listen(page) + await page.goto(path) + + await page.getByRole('link', { name: 'N-Z' }).first().click() + + await expect(page.getByText('Niko Christiansen Jr.')).toBeVisible() + await expect(page.getByText('Current filter: n-z').first()).toBeVisible() + expect(page.url()).toContain('filter=n-z') + expect(page.url()).not.toContain('page=') + + // Scroll to bottom to load page 2 + await scrollToBottom(page) + await expect(page.getByText('Woodrow Kuvalis')).toBeVisible() + + // Assert filter=n-z&page=2 + await scrollToBottom(page) + await expectQueryString(page, '2') + expect(page.url()).toContain('filter=n-z') + expect(page.url()).toContain('page=2') + + await expect(page.getByText('Niko Christiansen Jr.')).toBeVisible() + await expect(page.getByText('Woodrow Kuvalis')).toBeVisible() + + await expect(infiniteScrollRequests().length).toBe(1) + }) + + test('it resets the infinite scroll component when navigating to the same page with different query params', async ({ + page, + }) => { + requests.listen(page) + await page.goto(path) + + await page.getByRole('link', { name: 'A-M' }).first().click() + + await expect(page.getByText('Adelle Crona DVM')).toBeVisible() + await expect(page.getByText('Breana Herzog')).toBeVisible() + await expect(page.getByText('Current filter: a-m').first()).toBeVisible() + + await scrollToBottom(page) + await expect(page.getByText('Camylle Metz Sr.')).toBeVisible() + + await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight - 1000)) + await expectQueryString(page, '2') + expect(page.url()).toContain('filter=a-m') + expect(page.url()).toContain('page=2') + + await expect(infiniteScrollRequests().length).toBe(1) + + await page.getByRole('link', { name: 'N-Z' }).first().click() + + await expect(page.getByText('Niko Christiansen Jr.')).toBeVisible() + await expect(page.getByText('Current filter: n-z').first()).toBeVisible() + + await expect(page.getByText('Adelle Crona DVM')).toBeHidden() + await expect(page.getByText('Camylle Metz Sr.')).toBeHidden() + + expect(page.url()).toContain('filter=n-z') + expect(page.url()).not.toContain('page=') + + await scrollToBottom(page) + await expect(page.getByText('Woodrow Kuvalis')).toBeVisible() + await expect(page.getByText('Niko Christiansen Jr.')).toBeVisible() + await expect(infiniteScrollRequests().length).toBe(2) + }) + + test('it resets the page and filter params when searching for a user', async ({ page }) => { + requests.listen(page) + await page.goto(path) + await page.getByRole('link', { name: 'N-Z' }).first().click() + await expect(page.getByText('Niko Christiansen Jr.')).toBeVisible() + await expect(page.getByText('Current filter: n-z').first()).toBeVisible() + + await scrollToBottom(page) + await expect(page.getByText('Woodrow Kuvalis')).toBeVisible() + + await scrollToBottom(page) + await expectQueryString(page, '2') + expect(page.url()).toContain('filter=n-z') + expect(page.url()).toContain('page=2') + + // Search for 'adelle' in bottom input box + await page.locator('input').nth(1).fill('adelle') + + await expect(page.getByText('Adelle Crona DVM')).toBeVisible() + + // Assert search=adelle (no page param, no filter param) + expect(page.url()).toContain('search=adelle') + expect(page.url()).not.toContain('page=') + expect(page.url()).not.toContain('filter=') + await expect(page.getByText('Current search: adelle').first()).toBeVisible() + await expect(page.getByText('Current filter: none').first()).toBeVisible() + + // Assert only 'Adelle Crona DVM' is visible + await expect(page.getByText('Niko Christiansen Jr.')).toBeHidden() + await expect(page.getByText('Woodrow Kuvalis')).toBeHidden() + + // Click N-Z again (this should reset search and apply filter) + await page.getByRole('link', { name: 'N-Z' }).first().click() + await expect(page.getByText('Niko Christiansen Jr.')).toBeVisible() + + // Assert filter=n-z (no page param, no search param) + expect(page.url()).toContain('filter=n-z') + expect(page.url()).not.toContain('page=') + expect(page.url()).not.toContain('search=') + await expect(page.getByText('Current filter: n-z').first()).toBeVisible() + await expect(page.getByText('Current search: none').first()).toBeVisible() + + // Assert 'Adelle Crona DVM' is hidden, 'Niko Christiansen Jr.' is visible + await expect(page.getByText('Adelle Crona DVM')).toBeHidden() + await expect(page.getByText('Niko Christiansen Jr.')).toBeVisible() + + await scrollToBottom(page) + await expect(page.getByText('Woodrow Kuvalis')).toBeVisible() + + await scrollToBottom(page) + await expectQueryString(page, '2') + expect(page.url()).toContain('filter=n-z') + expect(page.url()).toContain('page=2') + + await expect(page.getByText('Niko Christiansen Jr.')).toBeVisible() + await expect(page.getByText('Woodrow Kuvalis')).toBeVisible() + }) + + test('it can load additional content after removing the search filter', async ({ page }) => { + requests.listen(page) + await page.goto(path + '?filter=n-z') + + await page.locator('input').nth(0).fill('adelle') + await expect(page.getByText('Adelle Crona DVM')).toBeVisible() + + await page.waitForTimeout(500) + + const userIds = await getUserIdsFromDOM(page) + expect(userIds.length).toBe(1) + + await page.locator('input').nth(0).fill('') + + // Wait for second user + await expect(page.getByText('Alison Walter PhD')).toBeVisible() + + // Scroll to bottom to load more users + await scrollToBottom(page) + await expect(page.getByText('Camylle Metz Sr.')).toBeVisible() + }) + }) +})