@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.esm.js CHANGED
@@ -253,8 +253,10 @@ import {
253
253
  } from "@inertiajs/core";
254
254
  import { isEqual as isEqual2 } from "lodash-es";
255
255
  import React2, {
256
+ createContext as createContext3,
256
257
  createElement as createElement3,
257
258
  forwardRef,
259
+ useContext,
258
260
  useEffect as useEffect6,
259
261
  useImperativeHandle,
260
262
  useMemo as useMemo4,
@@ -394,8 +396,7 @@ function useForm(...args) {
394
396
  if (isMounted.current) {
395
397
  setProcessing(false);
396
398
  setProgress(null);
397
- setErrors(errors2);
398
- setHasErrors(true);
399
+ setError(errors2);
399
400
  }
400
401
  if (options.onError) {
401
402
  return options.onError(errors2);
@@ -669,6 +670,7 @@ var deferStateUpdate = (callback) => {
669
670
  typeof React2.startTransition === "function" ? React2.startTransition(callback) : setTimeout(callback, 0);
670
671
  };
671
672
  var noop = () => void 0;
673
+ var FormContext = createContext3(void 0);
672
674
  var Form = forwardRef(
673
675
  ({
674
676
  action = "",
@@ -815,7 +817,7 @@ var Form = forwardRef(
815
817
  defaultData.current = getFormData();
816
818
  setIsDirty(false);
817
819
  };
818
- const exposed = () => ({
820
+ const exposed = {
819
821
  errors: form.errors,
820
822
  hasErrors: form.hasErrors,
821
823
  processing: form.processing,
@@ -839,9 +841,9 @@ var Form = forwardRef(
839
841
  validate: (field, config2) => form.validate(...UseFormUtils2.mergeHeadersForValidation(field, config2, headers)),
840
842
  touch: form.touch,
841
843
  touched: form.touched
842
- });
843
- useImperativeHandle(ref, exposed, [form, isDirty, submit]);
844
- return createElement3(
844
+ };
845
+ useImperativeHandle(ref, () => exposed, [form, isDirty, submit]);
846
+ const formNode = createElement3(
845
847
  "form",
846
848
  {
847
849
  ...props,
@@ -858,18 +860,22 @@ var Form = forwardRef(
858
860
  // See: https://github.com/inertiajs/inertia/pull/2536
859
861
  inert: disableWhileProcessing && form.processing && "true"
860
862
  },
861
- typeof children === "function" ? children(exposed()) : children
863
+ typeof children === "function" ? children(exposed) : children
862
864
  );
865
+ return createElement3(FormContext.Provider, { value: exposed }, formNode);
863
866
  }
864
867
  );
865
868
  Form.displayName = "InertiaForm";
869
+ function useFormContext() {
870
+ return useContext(FormContext);
871
+ }
866
872
  var Form_default = Form;
867
873
 
868
874
  // src/Head.ts
869
875
  import { escape } from "lodash-es";
870
- import React3, { useContext, useEffect as useEffect7, useMemo as useMemo5 } from "react";
876
+ import React3, { useContext as useContext2, useEffect as useEffect7, useMemo as useMemo5 } from "react";
871
877
  var Head = function({ children, title }) {
872
- const headManager = useContext(HeadContext_default);
878
+ const headManager = useContext2(HeadContext_default);
873
879
  const provider = useMemo5(() => headManager.createProvider(), [headManager]);
874
880
  const isServer = typeof window === "undefined";
875
881
  useEffect7(() => {
@@ -1019,6 +1025,8 @@ var InfiniteScroll = forwardRef2(
1019
1025
  const [loadingPrevious, setLoadingPrevious] = useState6(false);
1020
1026
  const [loadingNext, setLoadingNext] = useState6(false);
1021
1027
  const [requestCount, setRequestCount] = useState6(0);
1028
+ const [hasPreviousPage, setHasPreviousPage] = useState6(false);
1029
+ const [hasNextPage, setHasNextPage] = useState6(false);
1022
1030
  const [resolvedStartElement, setResolvedStartElement] = useState6(null);
1023
1031
  const [resolvedEndElement, setResolvedEndElement] = useState6(null);
1024
1032
  const [resolvedItemsElement, setResolvedItemsElement] = useState6(null);
@@ -1069,6 +1077,11 @@ var InfiniteScroll = forwardRef2(
1069
1077
  if (!resolvedItemsElement) {
1070
1078
  return;
1071
1079
  }
1080
+ function syncStateFromDataManager() {
1081
+ setRequestCount(infiniteScrollInstance.dataManager.getRequestCount());
1082
+ setHasPreviousPage(infiniteScrollInstance.dataManager.hasPrevious());
1083
+ setHasNextPage(infiniteScrollInstance.dataManager.hasNext());
1084
+ }
1072
1085
  const infiniteScrollInstance = useInfiniteScroll({
1073
1086
  // Data
1074
1087
  getPropName: () => data,
@@ -1087,16 +1100,17 @@ var InfiniteScroll = forwardRef2(
1087
1100
  onBeforeNextRequest: () => setLoadingNext(true),
1088
1101
  onCompletePreviousRequest: () => {
1089
1102
  setLoadingPrevious(false);
1090
- setRequestCount(infiniteScrollInstance.dataManager.getRequestCount());
1103
+ syncStateFromDataManager();
1091
1104
  },
1092
1105
  onCompleteNextRequest: () => {
1093
1106
  setLoadingNext(false);
1094
- setRequestCount(infiniteScrollInstance.dataManager.getRequestCount());
1095
- }
1107
+ syncStateFromDataManager();
1108
+ },
1109
+ onDataReset: syncStateFromDataManager
1096
1110
  });
1097
1111
  setInfiniteScroll(infiniteScrollInstance);
1098
1112
  const { dataManager: dataManager2, elementManager: elementManager2 } = infiniteScrollInstance;
1099
- setRequestCount(dataManager2.getRequestCount());
1113
+ syncStateFromDataManager();
1100
1114
  elementManager2.setupObservers();
1101
1115
  elementManager2.processServerLoadedElements(dataManager2.getLastLoadedPage());
1102
1116
  if (autoLoad) {
@@ -1138,8 +1152,8 @@ var InfiniteScroll = forwardRef2(
1138
1152
  const sharedExposed = {
1139
1153
  loadingPrevious,
1140
1154
  loadingNext,
1141
- hasPrevious: dataManager?.hasPrevious() ?? false,
1142
- hasNext: dataManager?.hasNext() ?? false
1155
+ hasPrevious: hasPreviousPage,
1156
+ hasNext: hasNextPage
1143
1157
  };
1144
1158
  const exposedPrevious = {
1145
1159
  loading: loadingPrevious,
@@ -1147,7 +1161,7 @@ var InfiniteScroll = forwardRef2(
1147
1161
  }),
1148
1162
  autoMode: headerAutoMode,
1149
1163
  manualMode: !headerAutoMode,
1150
- hasMore: dataManager?.hasPrevious() ?? false,
1164
+ hasMore: hasPreviousPage,
1151
1165
  ...sharedExposed
1152
1166
  };
1153
1167
  const exposedNext = {
@@ -1156,7 +1170,7 @@ var InfiniteScroll = forwardRef2(
1156
1170
  }),
1157
1171
  autoMode: footerAutoMode,
1158
1172
  manualMode: !footerAutoMode,
1159
- hasMore: dataManager?.hasNext() ?? false,
1173
+ hasMore: hasNextPage,
1160
1174
  ...sharedExposed
1161
1175
  };
1162
1176
  const exposedSlot = {
@@ -1511,6 +1525,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1511
1525
  const fetching = useRef6(false);
1512
1526
  const ref = useRef6(null);
1513
1527
  const observer = useRef6(null);
1528
+ const getReloadParamsRef = useRef6(() => ({}));
1514
1529
  useEffect12(() => {
1515
1530
  if (keys.length > 0) {
1516
1531
  setLoaded(keys.every((key) => pageProps[key] !== void 0));
@@ -1523,6 +1538,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1523
1538
  }
1524
1539
  return reloadParams;
1525
1540
  }, [params, data]);
1541
+ getReloadParamsRef.current = getReloadParams;
1526
1542
  const registerObserver = () => {
1527
1543
  observer.current?.disconnect();
1528
1544
  observer.current = new IntersectionObserver(
@@ -1538,7 +1554,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1538
1554
  }
1539
1555
  fetching.current = true;
1540
1556
  setIsFetching(true);
1541
- const reloadParams = getReloadParams();
1557
+ const reloadParams = getReloadParamsRef.current();
1542
1558
  router9.reload({
1543
1559
  ...reloadParams,
1544
1560
  onStart: (e) => {
@@ -1574,7 +1590,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1574
1590
  return () => {
1575
1591
  observer.current?.disconnect();
1576
1592
  };
1577
- }, [always, loaded, ref, getReloadParams, buffer]);
1593
+ }, [always, loaded, buffer]);
1578
1594
  const resolveChildren = () => typeof children === "function" ? children({ fetching: isFetching }) : children;
1579
1595
  const resolveFallback = () => typeof fallback === "function" ? fallback() : fallback;
1580
1596
  if (always || !loaded) {
@@ -1609,6 +1625,7 @@ export {
1609
1625
  progress,
1610
1626
  router3 as router,
1611
1627
  useForm,
1628
+ useFormContext,
1612
1629
  usePage,
1613
1630
  usePoll,
1614
1631
  usePrefetch,