@inertiajs/svelte 2.3.5 → 2.3.7

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/dist/useForm.d.ts CHANGED
@@ -33,6 +33,7 @@ export interface InertiaFormProps<TForm extends object> {
33
33
  patch(url: string, options?: UseFormSubmitOptions): void;
34
34
  delete(url: string, options?: UseFormSubmitOptions): void;
35
35
  cancel(): void;
36
+ dontRemember<K extends FormDataKeys<TForm>>(...fields: K[]): this;
36
37
  withPrecognition: (...args: UseFormWithPrecognitionArguments) => InertiaPrecognitiveFormStore<TForm>;
37
38
  }
38
39
  export interface InertiaFormValidationProps<TForm extends object> {
package/dist/useForm.js CHANGED
@@ -15,6 +15,7 @@ export default function useForm(...args) {
15
15
  let cancelToken = null;
16
16
  let recentlySuccessfulTimeoutId = null;
17
17
  let transform = (data) => data;
18
+ let rememberExcludeKeys = [];
18
19
  let defaultsCalledInOnSuccess = false;
19
20
  let validatorRef = null;
20
21
  let setFormState;
@@ -289,10 +290,24 @@ export default function useForm(...args) {
289
290
  cancel() {
290
291
  cancelToken?.cancel();
291
292
  },
293
+ __remember() {
294
+ const data = this.data();
295
+ if (rememberExcludeKeys.length > 0) {
296
+ const filtered = { ...data };
297
+ rememberExcludeKeys.forEach((k) => delete filtered[k]);
298
+ return { data: filtered, errors: this.errors };
299
+ }
300
+ return { data, errors: this.errors };
301
+ },
292
302
  withPrecognition,
293
303
  });
304
+ const dontRememberMethod = (...keys) => {
305
+ rememberExcludeKeys = keys;
306
+ return store;
307
+ };
294
308
  Object.assign(store, {
295
309
  withPrecognition,
310
+ dontRemember: dontRememberMethod,
296
311
  });
297
312
  setFormState = (key, value) => {
298
313
  store.update((form) => ({ ...form, [key]: value }));
@@ -306,7 +321,11 @@ export default function useForm(...args) {
306
321
  setFormState('hasErrors', !form.hasErrors);
307
322
  }
308
323
  if (rememberKey) {
309
- router.remember({ data: form.data(), errors: form.errors }, rememberKey);
324
+ const storedData = router.restore(rememberKey);
325
+ const newData = form.__remember();
326
+ if (!isEqual(storedData, newData)) {
327
+ router.remember(newData, rememberKey);
328
+ }
310
329
  }
311
330
  });
312
331
  return precognitionEndpoint
@@ -1,10 +1,11 @@
1
1
  import { router } from '@inertiajs/core';
2
+ import { cloneDeep } from 'lodash-es';
2
3
  import { onDestroy } from 'svelte';
3
4
  import { writable } from 'svelte/store';
4
5
  export default function useRemember(initialState, key) {
5
6
  const restored = router.restore(key);
6
- const store = writable(restored !== undefined ? restored : initialState);
7
- const unsubscribe = store.subscribe((state) => router.remember(state, key));
7
+ const store = writable(restored !== undefined ? cloneDeep(restored) : initialState);
8
+ const unsubscribe = store.subscribe((state) => router.remember(cloneDeep(state), key));
8
9
  onDestroy(unsubscribe);
9
10
  return store;
10
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inertiajs/svelte",
3
- "version": "2.3.5",
3
+ "version": "2.3.7",
4
4
  "license": "MIT",
5
5
  "description": "The Svelte adapter for Inertia.js",
6
6
  "contributors": [
@@ -55,7 +55,7 @@
55
55
  "@types/lodash-es": "^4.17.12",
56
56
  "laravel-precognition": "^1.0.0",
57
57
  "lodash-es": "^4.17.21",
58
- "@inertiajs/core": "2.3.5"
58
+ "@inertiajs/core": "2.3.7"
59
59
  },
60
60
  "scripts": {
61
61
  "build": "pnpm package && svelte-check --tsconfig ./tsconfig.json && publint",