@inertiajs/vue3 2.1.0 → 2.1.2

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/index.esm.js CHANGED
@@ -64,7 +64,9 @@ var remember = {
64
64
  var remember_default = remember;
65
65
 
66
66
  // src/useForm.ts
67
- import { router as router2 } from "@inertiajs/core";
67
+ import {
68
+ router as router2
69
+ } from "@inertiajs/core";
68
70
  import { cloneDeep as cloneDeep2, isEqual } from "es-toolkit";
69
71
  import { get, has, set } from "es-toolkit/compat";
70
72
  import { reactive, watch } from "vue";
@@ -436,7 +438,8 @@ var deferred_default = defineComponent2({
436
438
  // src/form.ts
437
439
  import {
438
440
  formDataToObject,
439
- mergeDataIntoQueryString
441
+ mergeDataIntoQueryString,
442
+ resetFormFields
440
443
  } from "@inertiajs/core";
441
444
  import { isEqual as isEqual2 } from "es-toolkit";
442
445
  import { computed as computed2, defineComponent as defineComponent3, h as h3, onBeforeUnmount, onMounted, ref as ref2 } from "vue";
@@ -476,6 +479,18 @@ var Form = defineComponent3({
476
479
  type: Object,
477
480
  default: () => ({})
478
481
  },
482
+ resetOnError: {
483
+ type: [Boolean, Array],
484
+ default: false
485
+ },
486
+ resetOnSuccess: {
487
+ type: [Boolean, Array],
488
+ default: false
489
+ },
490
+ setDefaultsOnSuccess: {
491
+ type: Boolean,
492
+ default: false
493
+ },
479
494
  onCancelToken: {
480
495
  type: Function,
481
496
  default: noop
@@ -507,6 +522,18 @@ var Form = defineComponent3({
507
522
  onError: {
508
523
  type: Function,
509
524
  default: noop
525
+ },
526
+ onSubmitComplete: {
527
+ type: Function,
528
+ default: noop
529
+ },
530
+ disableWhileProcessing: {
531
+ type: Boolean,
532
+ default: false
533
+ },
534
+ invalidateCacheTags: {
535
+ type: [String, Array],
536
+ default: () => []
510
537
  }
511
538
  },
512
539
  setup(props, { slots, attrs, expose }) {
@@ -516,19 +543,18 @@ var Form = defineComponent3({
516
543
  () => typeof props.action === "object" ? props.action.method : props.method.toLowerCase()
517
544
  );
518
545
  const isDirty = ref2(false);
519
- let defaults = {};
546
+ const defaultData = ref2(new FormData());
520
547
  const onFormUpdate = (event) => {
521
- isDirty.value = event.type === "reset" ? false : !isEqual2(getData(), defaults);
548
+ isDirty.value = event.type === "reset" ? false : !isEqual2(getData(), formDataToObject(defaultData.value));
522
549
  };
523
550
  const formEvents = ["input", "change", "reset"];
524
551
  onMounted(() => {
525
- defaults = getData();
552
+ defaultData.value = getFormData();
526
553
  formEvents.forEach((e) => formElement.value.addEventListener(e, onFormUpdate));
527
554
  });
528
555
  onBeforeUnmount(() => formEvents.forEach((e) => formElement.value?.removeEventListener(e, onFormUpdate)));
529
- const getData = () => {
530
- return formDataToObject(new FormData(formElement.value));
531
- };
556
+ const getFormData = () => new FormData(formElement.value);
557
+ const getData = () => formDataToObject(getFormData());
532
558
  const submit = () => {
533
559
  const [action, data] = mergeDataIntoQueryString(
534
560
  method.value,
@@ -536,23 +562,55 @@ var Form = defineComponent3({
536
562
  getData(),
537
563
  props.queryStringArrayFormat
538
564
  );
565
+ const maybeReset = (resetOption) => {
566
+ if (!resetOption) {
567
+ return;
568
+ }
569
+ if (resetOption === true) {
570
+ reset();
571
+ } else if (resetOption.length > 0) {
572
+ reset(...resetOption);
573
+ }
574
+ };
539
575
  const submitOptions = {
540
576
  headers: props.headers,
541
577
  errorBag: props.errorBag,
542
578
  showProgress: props.showProgress,
579
+ invalidateCacheTags: props.invalidateCacheTags,
543
580
  onCancelToken: props.onCancelToken,
544
581
  onBefore: props.onBefore,
545
582
  onStart: props.onStart,
546
583
  onProgress: props.onProgress,
547
584
  onFinish: props.onFinish,
548
585
  onCancel: props.onCancel,
549
- onSuccess: props.onSuccess,
550
- onError: props.onError,
586
+ onSuccess: (...args) => {
587
+ props.onSuccess(...args);
588
+ props.onSubmitComplete(exposed);
589
+ maybeReset(props.resetOnSuccess);
590
+ if (props.setDefaultsOnSuccess === true) {
591
+ defaults();
592
+ }
593
+ },
594
+ onError: (...args) => {
595
+ props.onError(...args);
596
+ maybeReset(props.resetOnError);
597
+ },
551
598
  ...props.options
552
599
  };
553
600
  form.transform(() => props.transform(data)).submit(method.value, action, submitOptions);
554
601
  };
555
- expose({
602
+ const reset = (...fields) => {
603
+ resetFormFields(formElement.value, defaultData.value, fields);
604
+ };
605
+ const resetAndClearErrors = (...fields) => {
606
+ form.clearErrors(...fields);
607
+ reset(...fields);
608
+ };
609
+ const defaults = () => {
610
+ defaultData.value = getFormData();
611
+ isDirty.value = false;
612
+ };
613
+ const exposed = {
556
614
  get errors() {
557
615
  return form.errors;
558
616
  },
@@ -572,14 +630,16 @@ var Form = defineComponent3({
572
630
  return form.recentlySuccessful;
573
631
  },
574
632
  clearErrors: (...fields) => form.clearErrors(...fields),
575
- resetAndClearErrors: (...fields) => form.resetAndClearErrors(...fields),
633
+ resetAndClearErrors,
576
634
  setError: (fieldOrFields, maybeValue) => form.setError(typeof fieldOrFields === "string" ? { [fieldOrFields]: maybeValue } : fieldOrFields),
577
635
  get isDirty() {
578
636
  return isDirty.value;
579
637
  },
580
- reset: () => formElement.value.reset(),
581
- submit
582
- });
638
+ reset,
639
+ submit,
640
+ defaults
641
+ };
642
+ expose(exposed);
583
643
  return () => {
584
644
  return h3(
585
645
  "form",
@@ -591,22 +651,10 @@ var Form = defineComponent3({
591
651
  onSubmit: (event) => {
592
652
  event.preventDefault();
593
653
  submit();
594
- }
654
+ },
655
+ inert: props.disableWhileProcessing && form.processing
595
656
  },
596
- slots.default ? slots.default({
597
- errors: form.errors,
598
- hasErrors: form.hasErrors,
599
- processing: form.processing,
600
- progress: form.progress,
601
- wasSuccessful: form.wasSuccessful,
602
- recentlySuccessful: form.recentlySuccessful,
603
- setError: (fieldOrFields, maybeValue) => form.setError(typeof fieldOrFields === "string" ? { [fieldOrFields]: maybeValue } : fieldOrFields),
604
- clearErrors: (...fields) => form.clearErrors(...fields),
605
- resetAndClearErrors: (...fields) => form.resetAndClearErrors(...fields),
606
- isDirty: isDirty.value,
607
- reset: () => formElement.value.reset(),
608
- submit
609
- }) : []
657
+ slots.default ? slots.default(exposed) : []
610
658
  );
611
659
  };
612
660
  }
@@ -742,6 +790,8 @@ import {
742
790
  shouldIntercept
743
791
  } from "@inertiajs/core";
744
792
  import { computed as computed3, defineComponent as defineComponent5, h as h4, onMounted as onMounted2, onUnmounted, ref as ref3 } from "vue";
793
+ var noop2 = () => {
794
+ };
745
795
  var Link = defineComponent5({
746
796
  name: "Link",
747
797
  props: {
@@ -755,7 +805,7 @@ var Link = defineComponent5({
755
805
  },
756
806
  href: {
757
807
  type: [String, Object],
758
- required: true
808
+ default: ""
759
809
  },
760
810
  method: {
761
811
  type: String,
@@ -803,43 +853,47 @@ var Link = defineComponent5({
803
853
  },
804
854
  onStart: {
805
855
  type: Function,
806
- default: (_visit) => {
807
- }
856
+ default: noop2
808
857
  },
809
858
  onProgress: {
810
859
  type: Function,
811
- default: () => {
812
- }
860
+ default: noop2
813
861
  },
814
862
  onFinish: {
815
863
  type: Function,
816
- default: () => {
817
- }
864
+ default: noop2
818
865
  },
819
866
  onBefore: {
820
867
  type: Function,
821
- default: () => {
822
- }
868
+ default: noop2
823
869
  },
824
870
  onCancel: {
825
871
  type: Function,
826
- default: () => {
827
- }
872
+ default: noop2
828
873
  },
829
874
  onSuccess: {
830
875
  type: Function,
831
- default: () => {
832
- }
876
+ default: noop2
833
877
  },
834
878
  onError: {
835
879
  type: Function,
836
- default: () => {
837
- }
880
+ default: noop2
838
881
  },
839
882
  onCancelToken: {
840
883
  type: Function,
841
- default: () => {
842
- }
884
+ default: noop2
885
+ },
886
+ onPrefetching: {
887
+ type: Function,
888
+ default: noop2
889
+ },
890
+ onPrefetched: {
891
+ type: Function,
892
+ default: noop2
893
+ },
894
+ cacheTags: {
895
+ type: [String, Array],
896
+ default: () => []
843
897
  }
844
898
  },
845
899
  setup(props, { slots, attrs }) {
@@ -886,7 +940,7 @@ var Link = defineComponent5({
886
940
  const mergeDataArray = computed3(
887
941
  () => mergeDataIntoQueryString2(
888
942
  method.value,
889
- typeof props.href === "object" ? props.href.url : props.href || "",
943
+ typeof props.href === "object" ? props.href.url : props.href,
890
944
  props.data,
891
945
  props.queryStringArrayFormat
892
946
  )
@@ -917,21 +971,32 @@ var Link = defineComponent5({
917
971
  ...baseParams.value,
918
972
  onCancelToken: props.onCancelToken,
919
973
  onBefore: props.onBefore,
920
- onStart: (event) => {
974
+ onStart: (visit) => {
921
975
  inFlightCount.value++;
922
- props.onStart(event);
976
+ props.onStart(visit);
923
977
  },
924
978
  onProgress: props.onProgress,
925
- onFinish: (event) => {
979
+ onFinish: (visit) => {
926
980
  inFlightCount.value--;
927
- props.onFinish(event);
981
+ props.onFinish(visit);
928
982
  },
929
983
  onCancel: props.onCancel,
930
984
  onSuccess: props.onSuccess,
931
985
  onError: props.onError
932
986
  }));
933
987
  const prefetch = () => {
934
- router5.prefetch(href.value, baseParams.value, { cacheFor: cacheForValue.value });
988
+ router5.prefetch(
989
+ href.value,
990
+ {
991
+ ...baseParams.value,
992
+ onPrefetching: props.onPrefetching,
993
+ onPrefetched: props.onPrefetched
994
+ },
995
+ {
996
+ cacheFor: cacheForValue.value,
997
+ cacheTags: props.cacheTags
998
+ }
999
+ );
935
1000
  };
936
1001
  const regularEvents = {
937
1002
  onClick: (event) => {