@inertiajs/react 2.3.7 → 2.3.9

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.js CHANGED
@@ -42,6 +42,7 @@ __export(index_exports, {
42
42
  progress: () => progress,
43
43
  router: () => router3,
44
44
  useForm: () => useForm,
45
+ useFormContext: () => useFormContext,
45
46
  usePage: () => usePage,
46
47
  usePoll: () => usePoll,
47
48
  usePrefetch: () => usePrefetch,
@@ -415,8 +416,7 @@ function useForm(...args) {
415
416
  if (isMounted.current) {
416
417
  setProcessing(false);
417
418
  setProgress(null);
418
- setErrors(errors2);
419
- setHasErrors(true);
419
+ setError(errors2);
420
420
  }
421
421
  if (options.onError) {
422
422
  return options.onError(errors2);
@@ -690,6 +690,7 @@ var deferStateUpdate = (callback) => {
690
690
  typeof import_react11.default.startTransition === "function" ? import_react11.default.startTransition(callback) : setTimeout(callback, 0);
691
691
  };
692
692
  var noop = () => void 0;
693
+ var FormContext = (0, import_react11.createContext)(void 0);
693
694
  var Form = (0, import_react11.forwardRef)(
694
695
  ({
695
696
  action = "",
@@ -836,7 +837,7 @@ var Form = (0, import_react11.forwardRef)(
836
837
  defaultData.current = getFormData();
837
838
  setIsDirty(false);
838
839
  };
839
- const exposed = () => ({
840
+ const exposed = {
840
841
  errors: form.errors,
841
842
  hasErrors: form.hasErrors,
842
843
  processing: form.processing,
@@ -860,9 +861,9 @@ var Form = (0, import_react11.forwardRef)(
860
861
  validate: (field, config2) => form.validate(...import_core5.UseFormUtils.mergeHeadersForValidation(field, config2, headers)),
861
862
  touch: form.touch,
862
863
  touched: form.touched
863
- });
864
- (0, import_react11.useImperativeHandle)(ref, exposed, [form, isDirty, submit]);
865
- return (0, import_react11.createElement)(
864
+ };
865
+ (0, import_react11.useImperativeHandle)(ref, () => exposed, [form, isDirty, submit]);
866
+ const formNode = (0, import_react11.createElement)(
866
867
  "form",
867
868
  {
868
869
  ...props,
@@ -879,11 +880,15 @@ var Form = (0, import_react11.forwardRef)(
879
880
  // See: https://github.com/inertiajs/inertia/pull/2536
880
881
  inert: disableWhileProcessing && form.processing && "true"
881
882
  },
882
- typeof children === "function" ? children(exposed()) : children
883
+ typeof children === "function" ? children(exposed) : children
883
884
  );
885
+ return (0, import_react11.createElement)(FormContext.Provider, { value: exposed }, formNode);
884
886
  }
885
887
  );
886
888
  Form.displayName = "InertiaForm";
889
+ function useFormContext() {
890
+ return (0, import_react11.useContext)(FormContext);
891
+ }
887
892
  var Form_default = Form;
888
893
 
889
894
  // src/Head.ts
@@ -1028,6 +1033,8 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1028
1033
  const [loadingPrevious, setLoadingPrevious] = (0, import_react13.useState)(false);
1029
1034
  const [loadingNext, setLoadingNext] = (0, import_react13.useState)(false);
1030
1035
  const [requestCount, setRequestCount] = (0, import_react13.useState)(0);
1036
+ const [hasPreviousPage, setHasPreviousPage] = (0, import_react13.useState)(false);
1037
+ const [hasNextPage, setHasNextPage] = (0, import_react13.useState)(false);
1031
1038
  const [resolvedStartElement, setResolvedStartElement] = (0, import_react13.useState)(null);
1032
1039
  const [resolvedEndElement, setResolvedEndElement] = (0, import_react13.useState)(null);
1033
1040
  const [resolvedItemsElement, setResolvedItemsElement] = (0, import_react13.useState)(null);
@@ -1078,6 +1085,11 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1078
1085
  if (!resolvedItemsElement) {
1079
1086
  return;
1080
1087
  }
1088
+ function syncStateFromDataManager() {
1089
+ setRequestCount(infiniteScrollInstance.dataManager.getRequestCount());
1090
+ setHasPreviousPage(infiniteScrollInstance.dataManager.hasPrevious());
1091
+ setHasNextPage(infiniteScrollInstance.dataManager.hasNext());
1092
+ }
1081
1093
  const infiniteScrollInstance = (0, import_core6.useInfiniteScroll)({
1082
1094
  // Data
1083
1095
  getPropName: () => data,
@@ -1096,16 +1108,17 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1096
1108
  onBeforeNextRequest: () => setLoadingNext(true),
1097
1109
  onCompletePreviousRequest: () => {
1098
1110
  setLoadingPrevious(false);
1099
- setRequestCount(infiniteScrollInstance.dataManager.getRequestCount());
1111
+ syncStateFromDataManager();
1100
1112
  },
1101
1113
  onCompleteNextRequest: () => {
1102
1114
  setLoadingNext(false);
1103
- setRequestCount(infiniteScrollInstance.dataManager.getRequestCount());
1104
- }
1115
+ syncStateFromDataManager();
1116
+ },
1117
+ onDataReset: syncStateFromDataManager
1105
1118
  });
1106
1119
  setInfiniteScroll(infiniteScrollInstance);
1107
1120
  const { dataManager: dataManager2, elementManager: elementManager2 } = infiniteScrollInstance;
1108
- setRequestCount(dataManager2.getRequestCount());
1121
+ syncStateFromDataManager();
1109
1122
  elementManager2.setupObservers();
1110
1123
  elementManager2.processServerLoadedElements(dataManager2.getLastLoadedPage());
1111
1124
  if (autoLoad) {
@@ -1147,8 +1160,8 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1147
1160
  const sharedExposed = {
1148
1161
  loadingPrevious,
1149
1162
  loadingNext,
1150
- hasPrevious: dataManager?.hasPrevious() ?? false,
1151
- hasNext: dataManager?.hasNext() ?? false
1163
+ hasPrevious: hasPreviousPage,
1164
+ hasNext: hasNextPage
1152
1165
  };
1153
1166
  const exposedPrevious = {
1154
1167
  loading: loadingPrevious,
@@ -1156,7 +1169,7 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1156
1169
  }),
1157
1170
  autoMode: headerAutoMode,
1158
1171
  manualMode: !headerAutoMode,
1159
- hasMore: dataManager?.hasPrevious() ?? false,
1172
+ hasMore: hasPreviousPage,
1160
1173
  ...sharedExposed
1161
1174
  };
1162
1175
  const exposedNext = {
@@ -1165,7 +1178,7 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1165
1178
  }),
1166
1179
  autoMode: footerAutoMode,
1167
1180
  manualMode: !footerAutoMode,
1168
- hasMore: dataManager?.hasNext() ?? false,
1181
+ hasMore: hasNextPage,
1169
1182
  ...sharedExposed
1170
1183
  };
1171
1184
  const exposedSlot = {
@@ -1514,6 +1527,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1514
1527
  const fetching = (0, import_react17.useRef)(false);
1515
1528
  const ref = (0, import_react17.useRef)(null);
1516
1529
  const observer = (0, import_react17.useRef)(null);
1530
+ const getReloadParamsRef = (0, import_react17.useRef)(() => ({}));
1517
1531
  (0, import_react17.useEffect)(() => {
1518
1532
  if (keys.length > 0) {
1519
1533
  setLoaded(keys.every((key) => pageProps[key] !== void 0));
@@ -1526,6 +1540,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1526
1540
  }
1527
1541
  return reloadParams;
1528
1542
  }, [params, data]);
1543
+ getReloadParamsRef.current = getReloadParams;
1529
1544
  const registerObserver = () => {
1530
1545
  observer.current?.disconnect();
1531
1546
  observer.current = new IntersectionObserver(
@@ -1541,7 +1556,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1541
1556
  }
1542
1557
  fetching.current = true;
1543
1558
  setIsFetching(true);
1544
- const reloadParams = getReloadParams();
1559
+ const reloadParams = getReloadParamsRef.current();
1545
1560
  import_core10.router.reload({
1546
1561
  ...reloadParams,
1547
1562
  onStart: (e) => {
@@ -1577,7 +1592,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1577
1592
  return () => {
1578
1593
  observer.current?.disconnect();
1579
1594
  };
1580
- }, [always, loaded, ref, getReloadParams, buffer]);
1595
+ }, [always, loaded, buffer]);
1581
1596
  const resolveChildren = () => typeof children === "function" ? children({ fetching: isFetching }) : children;
1582
1597
  const resolveFallback = () => typeof fallback === "function" ? fallback() : fallback;
1583
1598
  if (always || !loaded) {