@payloadcms/ui 3.0.0-beta.79 → 3.0.0-beta.80

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.
Files changed (41) hide show
  1. package/dist/elements/Nav/context.d.ts +3 -0
  2. package/dist/elements/Nav/context.d.ts.map +1 -1
  3. package/dist/elements/Nav/context.js +16 -7
  4. package/dist/elements/Nav/context.js.map +1 -1
  5. package/dist/exports/client/index.js +7 -7
  6. package/dist/exports/client/index.js.map +3 -3
  7. package/dist/fields/Array/index.js +1 -1
  8. package/dist/fields/Array/index.js.map +1 -1
  9. package/dist/fields/Blocks/index.js +1 -1
  10. package/dist/fields/Blocks/index.js.map +1 -1
  11. package/dist/fields/Code/index.js +1 -1
  12. package/dist/fields/Code/index.js.map +1 -1
  13. package/dist/fields/Collapsible/index.js +1 -1
  14. package/dist/fields/Collapsible/index.js.map +1 -1
  15. package/dist/fields/DateTime/index.js +1 -1
  16. package/dist/fields/DateTime/index.js.map +1 -1
  17. package/dist/fields/Group/index.js +1 -1
  18. package/dist/fields/Group/index.js.map +1 -1
  19. package/dist/fields/JSON/index.d.ts.map +1 -1
  20. package/dist/fields/JSON/index.js +1 -1
  21. package/dist/fields/JSON/index.js.map +1 -1
  22. package/dist/fields/Point/index.js +1 -1
  23. package/dist/fields/Point/index.js.map +1 -1
  24. package/dist/fields/Relationship/index.js +1 -1
  25. package/dist/fields/Relationship/index.js.map +1 -1
  26. package/dist/fields/Row/index.d.ts.map +1 -1
  27. package/dist/fields/Row/index.js +1 -1
  28. package/dist/fields/Row/index.js.map +1 -1
  29. package/dist/fields/Tabs/index.js +1 -1
  30. package/dist/fields/Tabs/index.js.map +1 -1
  31. package/dist/fields/Text/index.js +1 -1
  32. package/dist/fields/Text/index.js.map +1 -1
  33. package/dist/fields/Textarea/index.js +1 -1
  34. package/dist/fields/Textarea/index.js.map +1 -1
  35. package/dist/fields/Upload/index.js +1 -1
  36. package/dist/fields/Upload/index.js.map +1 -1
  37. package/dist/providers/Root/index.d.ts +1 -0
  38. package/dist/providers/Root/index.d.ts.map +1 -1
  39. package/dist/providers/Root/index.js +2 -1
  40. package/dist/providers/Root/index.js.map +1 -1
  41. package/package.json +4 -4
@@ -1,13 +1,16 @@
1
1
  import React from 'react';
2
2
  type NavContextType = {
3
+ hydrated: boolean;
3
4
  navOpen: boolean;
4
5
  navRef: React.RefObject<HTMLDivElement | null>;
5
6
  setNavOpen: (value: boolean) => void;
7
+ shouldAnimate: boolean;
6
8
  };
7
9
  export declare const NavContext: React.Context<NavContextType>;
8
10
  export declare const useNav: () => NavContextType;
9
11
  export declare const NavProvider: React.FC<{
10
12
  children: React.ReactNode;
13
+ initialIsOpen?: boolean;
11
14
  }>;
12
15
  export {};
13
16
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/elements/Nav/context.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAIhD,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAC9C,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CACrC,CAAA;AAED,eAAO,MAAM,UAAU,+BAIrB,CAAA;AAEF,eAAO,MAAM,MAAM,sBAAqC,CAAA;AAYxD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CA4DA,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/elements/Nav/context.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAIhD,KAAK,cAAc,GAAG;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAC9C,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACpC,aAAa,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,UAAU,+BAMrB,CAAA;AAEF,eAAO,MAAM,MAAM,sBAAqC,CAAA;AAYxD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAsEA,CAAA"}
@@ -5,9 +5,11 @@ import { clearAllBodyScrollLocks, disableBodyScroll, enableBodyScroll } from 'bo
5
5
  import React, { useEffect, useRef } from 'react';
6
6
  import { usePreferences } from '../../providers/Preferences/index.js';
7
7
  export const NavContext = /*#__PURE__*/ React.createContext({
8
+ hydrated: false,
8
9
  navOpen: true,
9
10
  navRef: null,
10
- setNavOpen: ()=>{}
11
+ setNavOpen: ()=>{},
12
+ shouldAnimate: false
11
13
  });
12
14
  export const useNav = ()=>React.useContext(NavContext);
13
15
  const getNavPreference = async (getPreference)=>{
@@ -19,7 +21,7 @@ const getNavPreference = async (getPreference)=>{
19
21
  return true;
20
22
  }
21
23
  };
22
- export const NavProvider = ({ children })=>{
24
+ export const NavProvider = ({ children, initialIsOpen })=>{
23
25
  const { breakpoints: { l: largeBreak, m: midBreak, s: smallBreak } } = useWindowInfo();
24
26
  const { getPreference } = usePreferences();
25
27
  const navRef = useRef(null);
@@ -27,7 +29,9 @@ export const NavProvider = ({ children })=>{
27
29
  // this is because getting the preference is async
28
30
  // so instead of closing it after the preference is loaded
29
31
  // we will open it after the preference is loaded
30
- const [navOpen, setNavOpen] = React.useState(false);
32
+ const [navOpen, setNavOpen] = React.useState(initialIsOpen);
33
+ const [shouldAnimate, setShouldAnimate] = React.useState(false);
34
+ const [hydrated, setHydrated] = React.useState(false);
31
35
  // on load check the user's preference and set "initial" state
32
36
  useEffect(()=>{
33
37
  if (largeBreak === false) {
@@ -35,8 +39,7 @@ export const NavProvider = ({ children })=>{
35
39
  const preferredState = await getNavPreference(getPreference);
36
40
  setNavOpen(preferredState);
37
41
  };
38
- setNavFromPreferences() // eslint-disable-line @typescript-eslint/no-floating-promises
39
- ;
42
+ void setNavFromPreferences();
40
43
  }
41
44
  }, [
42
45
  largeBreak,
@@ -63,9 +66,13 @@ export const NavProvider = ({ children })=>{
63
66
  // close the nav when the user resizes down to mobile
64
67
  // the sidebar is a modal on mobile
65
68
  useEffect(()=>{
66
- if (largeBreak === false || midBreak === false || smallBreak === false) {
69
+ if (largeBreak === true || midBreak === true || smallBreak === true) {
67
70
  setNavOpen(false);
68
71
  }
72
+ setHydrated(true);
73
+ setTimeout(()=>{
74
+ setShouldAnimate(true);
75
+ }, 100);
69
76
  }, [
70
77
  largeBreak,
71
78
  midBreak,
@@ -79,9 +86,11 @@ export const NavProvider = ({ children })=>{
79
86
  }, []);
80
87
  return /*#__PURE__*/ _jsx(NavContext.Provider, {
81
88
  value: {
89
+ hydrated,
82
90
  navOpen,
83
91
  navRef,
84
- setNavOpen
92
+ setNavOpen,
93
+ shouldAnimate
85
94
  },
86
95
  children: children
87
96
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Nav/context.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { clearAllBodyScrollLocks, disableBodyScroll, enableBodyScroll } from 'body-scroll-lock'\nimport React, { useEffect, useRef } from 'react'\n\nimport { usePreferences } from '../../providers/Preferences/index.js'\n\ntype NavContextType = {\n navOpen: boolean\n navRef: React.RefObject<HTMLDivElement | null>\n setNavOpen: (value: boolean) => void\n}\n\nexport const NavContext = React.createContext<NavContextType>({\n navOpen: true,\n navRef: null,\n setNavOpen: () => {},\n})\n\nexport const useNav = () => React.useContext(NavContext)\n\nconst getNavPreference = async (getPreference): Promise<boolean> => {\n const navPrefs = await getPreference('nav')\n const preferredState = navPrefs?.open\n if (typeof preferredState === 'boolean') {\n return preferredState\n } else {\n return true\n }\n}\n\nexport const NavProvider: React.FC<{\n children: React.ReactNode\n}> = ({ children }) => {\n const {\n breakpoints: { l: largeBreak, m: midBreak, s: smallBreak },\n } = useWindowInfo()\n\n const { getPreference } = usePreferences()\n const navRef = useRef(null)\n\n // initialize the nav to be closed\n // this is because getting the preference is async\n // so instead of closing it after the preference is loaded\n // we will open it after the preference is loaded\n const [navOpen, setNavOpen] = React.useState(false)\n\n // on load check the user's preference and set \"initial\" state\n useEffect(() => {\n if (largeBreak === false) {\n const setNavFromPreferences = async () => {\n const preferredState = await getNavPreference(getPreference)\n setNavOpen(preferredState)\n }\n\n setNavFromPreferences() // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }, [largeBreak, getPreference, setNavOpen])\n\n // TODO: on smaller screens where the nav is a modal\n // close the nav when the user navigates away\n\n // on open and close, lock the body scroll\n // do not do this on desktop, the sidebar is not a modal\n useEffect(() => {\n if (navRef.current) {\n if (navOpen && midBreak) {\n disableBodyScroll(navRef.current)\n } else {\n enableBodyScroll(navRef.current)\n }\n }\n }, [navOpen, midBreak])\n\n // on smaller screens where the nav is a modal\n // close the nav when the user resizes down to mobile\n // the sidebar is a modal on mobile\n useEffect(() => {\n if (largeBreak === false || midBreak === false || smallBreak === false) {\n setNavOpen(false)\n }\n }, [largeBreak, midBreak, smallBreak])\n\n // when the component unmounts, clear all body scroll locks\n useEffect(() => {\n return () => {\n clearAllBodyScrollLocks()\n }\n }, [])\n\n return (\n <NavContext.Provider value={{ navOpen, navRef, setNavOpen }}>{children}</NavContext.Provider>\n )\n}\n"],"names":["useWindowInfo","clearAllBodyScrollLocks","disableBodyScroll","enableBodyScroll","React","useEffect","useRef","usePreferences","NavContext","createContext","navOpen","navRef","setNavOpen","useNav","useContext","getNavPreference","getPreference","navPrefs","preferredState","open","NavProvider","children","breakpoints","l","largeBreak","m","midBreak","s","smallBreak","useState","setNavFromPreferences","current","Provider","value"],"mappings":"AAAA;;AACA,SAASA,aAAa,QAAQ,2BAA0B;AACxD,SAASC,uBAAuB,EAAEC,iBAAiB,EAAEC,gBAAgB,QAAQ,mBAAkB;AAC/F,OAAOC,SAASC,SAAS,EAAEC,MAAM,QAAQ,QAAO;AAEhD,SAASC,cAAc,QAAQ,uCAAsC;AAQrE,OAAO,MAAMC,2BAAaJ,MAAMK,aAAa,CAAiB;IAC5DC,SAAS;IACTC,QAAQ;IACRC,YAAY,KAAO;AACrB,GAAE;AAEF,OAAO,MAAMC,SAAS,IAAMT,MAAMU,UAAU,CAACN,YAAW;AAExD,MAAMO,mBAAmB,OAAOC;IAC9B,MAAMC,WAAW,MAAMD,cAAc;IACrC,MAAME,iBAAiBD,UAAUE;IACjC,IAAI,OAAOD,mBAAmB,WAAW;QACvC,OAAOA;IACT,OAAO;QACL,OAAO;IACT;AACF;AAEA,OAAO,MAAME,cAER,CAAC,EAAEC,QAAQ,EAAE;IAChB,MAAM,EACJC,aAAa,EAAEC,GAAGC,UAAU,EAAEC,GAAGC,QAAQ,EAAEC,GAAGC,UAAU,EAAE,EAC3D,GAAG5B;IAEJ,MAAM,EAAEgB,aAAa,EAAE,GAAGT;IAC1B,MAAMI,SAASL,OAAO;IAEtB,kCAAkC;IAClC,kDAAkD;IAClD,0DAA0D;IAC1D,iDAAiD;IACjD,MAAM,CAACI,SAASE,WAAW,GAAGR,MAAMyB,QAAQ,CAAC;IAE7C,8DAA8D;IAC9DxB,UAAU;QACR,IAAImB,eAAe,OAAO;YACxB,MAAMM,wBAAwB;gBAC5B,MAAMZ,iBAAiB,MAAMH,iBAAiBC;gBAC9CJ,WAAWM;YACb;YAEAY,wBAAwB,8DAA8D;;QACxF;IACF,GAAG;QAACN;QAAYR;QAAeJ;KAAW;IAE1C,oDAAoD;IACpD,6CAA6C;IAE7C,0CAA0C;IAC1C,wDAAwD;IACxDP,UAAU;QACR,IAAIM,OAAOoB,OAAO,EAAE;YAClB,IAAIrB,WAAWgB,UAAU;gBACvBxB,kBAAkBS,OAAOoB,OAAO;YAClC,OAAO;gBACL5B,iBAAiBQ,OAAOoB,OAAO;YACjC;QACF;IACF,GAAG;QAACrB;QAASgB;KAAS;IAEtB,8CAA8C;IAC9C,qDAAqD;IACrD,mCAAmC;IACnCrB,UAAU;QACR,IAAImB,eAAe,SAASE,aAAa,SAASE,eAAe,OAAO;YACtEhB,WAAW;QACb;IACF,GAAG;QAACY;QAAYE;QAAUE;KAAW;IAErC,2DAA2D;IAC3DvB,UAAU;QACR,OAAO;YACLJ;QACF;IACF,GAAG,EAAE;IAEL,qBACE,KAACO,WAAWwB,QAAQ;QAACC,OAAO;YAAEvB;YAASC;YAAQC;QAAW;kBAAIS;;AAElE,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/Nav/context.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { clearAllBodyScrollLocks, disableBodyScroll, enableBodyScroll } from 'body-scroll-lock'\nimport React, { useEffect, useRef } from 'react'\n\nimport { usePreferences } from '../../providers/Preferences/index.js'\n\ntype NavContextType = {\n hydrated: boolean\n navOpen: boolean\n navRef: React.RefObject<HTMLDivElement | null>\n setNavOpen: (value: boolean) => void\n shouldAnimate: boolean\n}\n\nexport const NavContext = React.createContext<NavContextType>({\n hydrated: false,\n navOpen: true,\n navRef: null,\n setNavOpen: () => {},\n shouldAnimate: false,\n})\n\nexport const useNav = () => React.useContext(NavContext)\n\nconst getNavPreference = async (getPreference): Promise<boolean> => {\n const navPrefs = await getPreference('nav')\n const preferredState = navPrefs?.open\n if (typeof preferredState === 'boolean') {\n return preferredState\n } else {\n return true\n }\n}\n\nexport const NavProvider: React.FC<{\n children: React.ReactNode\n initialIsOpen?: boolean\n}> = ({ children, initialIsOpen }) => {\n const {\n breakpoints: { l: largeBreak, m: midBreak, s: smallBreak },\n } = useWindowInfo()\n\n const { getPreference } = usePreferences()\n const navRef = useRef(null)\n\n // initialize the nav to be closed\n // this is because getting the preference is async\n // so instead of closing it after the preference is loaded\n // we will open it after the preference is loaded\n const [navOpen, setNavOpen] = React.useState(initialIsOpen)\n\n const [shouldAnimate, setShouldAnimate] = React.useState(false)\n const [hydrated, setHydrated] = React.useState(false)\n\n // on load check the user's preference and set \"initial\" state\n useEffect(() => {\n if (largeBreak === false) {\n const setNavFromPreferences = async () => {\n const preferredState = await getNavPreference(getPreference)\n setNavOpen(preferredState)\n }\n\n void setNavFromPreferences()\n }\n }, [largeBreak, getPreference, setNavOpen])\n\n // TODO: on smaller screens where the nav is a modal\n // close the nav when the user navigates away\n\n // on open and close, lock the body scroll\n // do not do this on desktop, the sidebar is not a modal\n useEffect(() => {\n if (navRef.current) {\n if (navOpen && midBreak) {\n disableBodyScroll(navRef.current)\n } else {\n enableBodyScroll(navRef.current)\n }\n }\n }, [navOpen, midBreak])\n\n // on smaller screens where the nav is a modal\n // close the nav when the user resizes down to mobile\n // the sidebar is a modal on mobile\n useEffect(() => {\n if (largeBreak === true || midBreak === true || smallBreak === true) {\n setNavOpen(false)\n }\n setHydrated(true)\n\n setTimeout(() => {\n setShouldAnimate(true)\n }, 100)\n }, [largeBreak, midBreak, smallBreak])\n\n // when the component unmounts, clear all body scroll locks\n useEffect(() => {\n return () => {\n clearAllBodyScrollLocks()\n }\n }, [])\n\n return (\n <NavContext.Provider value={{ hydrated, navOpen, navRef, setNavOpen, shouldAnimate }}>\n {children}\n </NavContext.Provider>\n )\n}\n"],"names":["useWindowInfo","clearAllBodyScrollLocks","disableBodyScroll","enableBodyScroll","React","useEffect","useRef","usePreferences","NavContext","createContext","hydrated","navOpen","navRef","setNavOpen","shouldAnimate","useNav","useContext","getNavPreference","getPreference","navPrefs","preferredState","open","NavProvider","children","initialIsOpen","breakpoints","l","largeBreak","m","midBreak","s","smallBreak","useState","setShouldAnimate","setHydrated","setNavFromPreferences","current","setTimeout","Provider","value"],"mappings":"AAAA;;AACA,SAASA,aAAa,QAAQ,2BAA0B;AACxD,SAASC,uBAAuB,EAAEC,iBAAiB,EAAEC,gBAAgB,QAAQ,mBAAkB;AAC/F,OAAOC,SAASC,SAAS,EAAEC,MAAM,QAAQ,QAAO;AAEhD,SAASC,cAAc,QAAQ,uCAAsC;AAUrE,OAAO,MAAMC,2BAAaJ,MAAMK,aAAa,CAAiB;IAC5DC,UAAU;IACVC,SAAS;IACTC,QAAQ;IACRC,YAAY,KAAO;IACnBC,eAAe;AACjB,GAAE;AAEF,OAAO,MAAMC,SAAS,IAAMX,MAAMY,UAAU,CAACR,YAAW;AAExD,MAAMS,mBAAmB,OAAOC;IAC9B,MAAMC,WAAW,MAAMD,cAAc;IACrC,MAAME,iBAAiBD,UAAUE;IACjC,IAAI,OAAOD,mBAAmB,WAAW;QACvC,OAAOA;IACT,OAAO;QACL,OAAO;IACT;AACF;AAEA,OAAO,MAAME,cAGR,CAAC,EAAEC,QAAQ,EAAEC,aAAa,EAAE;IAC/B,MAAM,EACJC,aAAa,EAAEC,GAAGC,UAAU,EAAEC,GAAGC,QAAQ,EAAEC,GAAGC,UAAU,EAAE,EAC3D,GAAG/B;IAEJ,MAAM,EAAEkB,aAAa,EAAE,GAAGX;IAC1B,MAAMK,SAASN,OAAO;IAEtB,kCAAkC;IAClC,kDAAkD;IAClD,0DAA0D;IAC1D,iDAAiD;IACjD,MAAM,CAACK,SAASE,WAAW,GAAGT,MAAM4B,QAAQ,CAACR;IAE7C,MAAM,CAACV,eAAemB,iBAAiB,GAAG7B,MAAM4B,QAAQ,CAAC;IACzD,MAAM,CAACtB,UAAUwB,YAAY,GAAG9B,MAAM4B,QAAQ,CAAC;IAE/C,8DAA8D;IAC9D3B,UAAU;QACR,IAAIsB,eAAe,OAAO;YACxB,MAAMQ,wBAAwB;gBAC5B,MAAMf,iBAAiB,MAAMH,iBAAiBC;gBAC9CL,WAAWO;YACb;YAEA,KAAKe;QACP;IACF,GAAG;QAACR;QAAYT;QAAeL;KAAW;IAE1C,oDAAoD;IACpD,6CAA6C;IAE7C,0CAA0C;IAC1C,wDAAwD;IACxDR,UAAU;QACR,IAAIO,OAAOwB,OAAO,EAAE;YAClB,IAAIzB,WAAWkB,UAAU;gBACvB3B,kBAAkBU,OAAOwB,OAAO;YAClC,OAAO;gBACLjC,iBAAiBS,OAAOwB,OAAO;YACjC;QACF;IACF,GAAG;QAACzB;QAASkB;KAAS;IAEtB,8CAA8C;IAC9C,qDAAqD;IACrD,mCAAmC;IACnCxB,UAAU;QACR,IAAIsB,eAAe,QAAQE,aAAa,QAAQE,eAAe,MAAM;YACnElB,WAAW;QACb;QACAqB,YAAY;QAEZG,WAAW;YACTJ,iBAAiB;QACnB,GAAG;IACL,GAAG;QAACN;QAAYE;QAAUE;KAAW;IAErC,2DAA2D;IAC3D1B,UAAU;QACR,OAAO;YACLJ;QACF;IACF,GAAG,EAAE;IAEL,qBACE,KAACO,WAAW8B,QAAQ;QAACC,OAAO;YAAE7B;YAAUC;YAASC;YAAQC;YAAYC;QAAc;kBAChFS;;AAGP,EAAC"}