@payloadcms/ui 3.75.0-internal.880861f → 3.75.0-internal.8e0f8ba

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 (38) hide show
  1. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  2. package/dist/elements/DocumentDrawer/DrawerContent.js +1 -4
  3. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  4. package/dist/elements/Nav/NavToggler/index.d.ts.map +1 -1
  5. package/dist/elements/Nav/NavToggler/index.js +2 -1
  6. package/dist/elements/Nav/NavToggler/index.js.map +1 -1
  7. package/dist/elements/Nav/context.d.ts.map +1 -1
  8. package/dist/elements/Nav/context.js +2 -1
  9. package/dist/elements/Nav/context.js.map +1 -1
  10. package/dist/elements/NavGroup/index.d.ts.map +1 -1
  11. package/dist/elements/NavGroup/index.js +2 -2
  12. package/dist/elements/NavGroup/index.js.map +1 -1
  13. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  14. package/dist/elements/PublishButton/ScheduleDrawer/index.js +5 -6
  15. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  16. package/dist/exports/client/index.js +12 -12
  17. package/dist/exports/client/index.js.map +3 -3
  18. package/dist/exports/rsc/index.d.ts +0 -1
  19. package/dist/exports/rsc/index.d.ts.map +1 -1
  20. package/dist/exports/rsc/index.js +0 -1
  21. package/dist/exports/rsc/index.js.map +1 -1
  22. package/dist/providers/ServerFunctions/index.d.ts +1 -2
  23. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  24. package/dist/providers/ServerFunctions/index.js +0 -1
  25. package/dist/providers/ServerFunctions/index.js.map +1 -1
  26. package/dist/utilities/buildTableState.js +3 -4
  27. package/dist/utilities/buildTableState.js.map +1 -1
  28. package/dist/utilities/schedulePublishHandler.d.ts +4 -10
  29. package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
  30. package/dist/utilities/schedulePublishHandler.js +5 -4
  31. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  32. package/dist/views/BrowseByFolder/index.d.ts.map +1 -1
  33. package/dist/views/BrowseByFolder/index.js +2 -1
  34. package/dist/views/BrowseByFolder/index.js.map +1 -1
  35. package/dist/views/List/index.d.ts.map +1 -1
  36. package/dist/views/List/index.js +2 -2
  37. package/dist/views/List/index.js.map +1 -1
  38. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/DrawerContent.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAGvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAUrD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAwK/D,CAAA"}
1
+ {"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/DrawerContent.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAGvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AASrD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAqK/D,CAAA"}
@@ -6,7 +6,6 @@ import React, { useCallback, useEffect, useRef, useState } from 'react';
6
6
  import { toast } from 'sonner';
7
7
  import { LoadingOverlay } from '../../elements/Loading/index.js';
8
8
  import { useConfig } from '../../providers/Config/index.js';
9
- import { useLocale } from '../../providers/Locale/index.js';
10
9
  import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
11
10
  import { useTranslation } from '../../providers/Translation/index.js';
12
11
  import { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js';
@@ -29,7 +28,6 @@ export const DocumentDrawerContent = ({
29
28
  const {
30
29
  getEntityConfig
31
30
  } = useConfig();
32
- const locale = useLocale();
33
31
  const [collectionConfig] = useState(() => getEntityConfig({
34
32
  collectionSlug
35
33
  }));
@@ -59,7 +57,6 @@ export const DocumentDrawerContent = ({
59
57
  docID: docID_0,
60
58
  drawerSlug,
61
59
  initialData,
62
- locale,
63
60
  overrideEntityVisibility,
64
61
  redirectAfterCreate,
65
62
  redirectAfterDelete: redirectAfterDelete !== undefined ? redirectAfterDelete : false,
@@ -78,7 +75,7 @@ export const DocumentDrawerContent = ({
78
75
  abortGetDocumentViewRef.current = null;
79
76
  };
80
77
  void fetchDocumentView();
81
- }, [collectionSlug, disableActions, drawerSlug, initialData, redirectAfterDelete, redirectAfterDuplicate, redirectAfterRestore, renderDocument, redirectAfterCreate, closeModal, overrideEntityVisibility, t, locale]);
78
+ }, [collectionSlug, disableActions, drawerSlug, initialData, redirectAfterDelete, redirectAfterDuplicate, redirectAfterRestore, renderDocument, redirectAfterCreate, closeModal, overrideEntityVisibility, t]);
82
79
  const onSave = useCallback(args => {
83
80
  if (args.operation === 'create') {
84
81
  getDocumentView(args.doc.id);
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerContent.js","names":["useModal","React","useCallback","useEffect","useRef","useState","toast","LoadingOverlay","useConfig","useLocale","useServerFunctions","useTranslation","abortAndIgnore","handleAbortRef","DocumentDrawerContextProvider","DocumentDrawerContent","id","docID","collectionSlug","disableActions","drawerSlug","initialData","onDelete","onDeleteFromProps","onDuplicate","onDuplicateFromProps","onSave","onSaveFromProps","overrideEntityVisibility","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","getEntityConfig","locale","collectionConfig","abortGetDocumentViewRef","closeModal","t","renderDocument","DocumentView","setDocumentView","undefined","isLoading","setIsLoading","hasInitialized","getDocumentView","showLoadingIndicator","controller","fetchDocumentView","result","signal","Document","error","message","current","args","operation","doc","clearDoc","abortGetDocumentView","_jsx"],"sources":["../../../src/elements/DocumentDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerProps } from './types.js'\n\nimport { LoadingOverlay } from '../../elements/Loading/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { DocumentDrawerContextProvider } from './Provider.js'\n\nexport const DocumentDrawerContent: React.FC<DocumentDrawerProps> = ({\n id: docID,\n collectionSlug,\n disableActions,\n drawerSlug,\n initialData,\n onDelete: onDeleteFromProps,\n onDuplicate: onDuplicateFromProps,\n onSave: onSaveFromProps,\n overrideEntityVisibility = true,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n}) => {\n const { getEntityConfig } = useConfig()\n const locale = useLocale()\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug }))\n\n const abortGetDocumentViewRef = React.useRef<AbortController>(null)\n\n const { closeModal } = useModal()\n const { t } = useTranslation()\n\n const { renderDocument } = useServerFunctions()\n\n const [DocumentView, setDocumentView] = useState<React.ReactNode>(undefined)\n const [isLoading, setIsLoading] = useState(true)\n\n const hasInitialized = useRef(false)\n\n const getDocumentView = useCallback(\n (docID?: DocumentDrawerProps['id'], showLoadingIndicator: boolean = false) => {\n const controller = handleAbortRef(abortGetDocumentViewRef)\n\n const fetchDocumentView = async () => {\n if (showLoadingIndicator) {\n setIsLoading(true)\n }\n\n try {\n const result = await renderDocument({\n collectionSlug,\n disableActions,\n docID,\n drawerSlug,\n initialData,\n locale,\n overrideEntityVisibility,\n redirectAfterCreate,\n redirectAfterDelete: redirectAfterDelete !== undefined ? redirectAfterDelete : false,\n redirectAfterDuplicate:\n redirectAfterDuplicate !== undefined ? redirectAfterDuplicate : false,\n redirectAfterRestore: redirectAfterRestore !== undefined ? redirectAfterRestore : false,\n signal: controller.signal,\n })\n\n if (result?.Document) {\n setDocumentView(result.Document)\n setIsLoading(false)\n }\n } catch (error) {\n toast.error(error?.message || t('error:unspecific'))\n closeModal(drawerSlug)\n }\n\n abortGetDocumentViewRef.current = null\n }\n\n void fetchDocumentView()\n },\n [\n collectionSlug,\n disableActions,\n drawerSlug,\n initialData,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n renderDocument,\n redirectAfterCreate,\n closeModal,\n overrideEntityVisibility,\n t,\n locale,\n ],\n )\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n if (args.operation === 'create') {\n getDocumentView(args.doc.id)\n }\n\n if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...args,\n collectionConfig,\n })\n }\n },\n [onSaveFromProps, collectionConfig, getDocumentView],\n )\n\n const onDuplicate = useCallback<DocumentDrawerProps['onDuplicate']>(\n (args) => {\n getDocumentView(args.doc.id)\n\n if (typeof onDuplicateFromProps === 'function') {\n void onDuplicateFromProps({\n ...args,\n collectionConfig,\n })\n }\n },\n [onDuplicateFromProps, collectionConfig, getDocumentView],\n )\n\n const onDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n if (typeof onDeleteFromProps === 'function') {\n void onDeleteFromProps({\n ...args,\n collectionConfig,\n })\n }\n\n closeModal(drawerSlug)\n },\n [onDeleteFromProps, closeModal, drawerSlug, collectionConfig],\n )\n\n const clearDoc = useCallback(() => {\n getDocumentView(undefined, true)\n }, [getDocumentView])\n\n useEffect(() => {\n if (!DocumentView && !hasInitialized.current) {\n getDocumentView(docID, true)\n hasInitialized.current = true\n }\n }, [DocumentView, getDocumentView, docID])\n\n // Cleanup any pending requests when the component unmounts\n useEffect(() => {\n const abortGetDocumentView = abortGetDocumentViewRef.current\n\n return () => {\n abortAndIgnore(abortGetDocumentView)\n }\n }, [])\n\n if (isLoading) {\n return <LoadingOverlay />\n }\n\n return (\n <DocumentDrawerContextProvider\n clearDoc={clearDoc}\n drawerSlug={drawerSlug}\n onDelete={onDelete}\n onDuplicate={onDuplicate}\n onSave={onSave}\n >\n {DocumentView}\n </DocumentDrawerContextProvider>\n )\n}\n"],"mappings":"AAAA;;;AAEA,SAASA,QAAQ,QAAQ;AACzB,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAChE,SAASC,KAAK,QAAQ;AAItB,SAASC,cAAc,QAAQ;AAC/B,SAASC,SAAS,QAAQ;AAC1B,SAASC,SAAS,QAAQ;AAC1B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,EAAEC,cAAc,QAAQ;AAC/C,SAASC,6BAA6B,QAAQ;AAE9C,OAAO,MAAMC,qBAAA,GAAuDA,CAAC;EACnEC,EAAA,EAAIC,KAAK;EACTC,cAAc;EACdC,cAAc;EACdC,UAAU;EACVC,WAAW;EACXC,QAAA,EAAUC,iBAAiB;EAC3BC,WAAA,EAAaC,oBAAoB;EACjCC,MAAA,EAAQC,eAAe;EACvBC,wBAAA,GAA2B,IAAI;EAC/BC,mBAAmB;EACnBC,mBAAmB;EACnBC,sBAAsB;EACtBC;AAAoB,CACrB;EACC,MAAM;IAAEC;EAAe,CAAE,GAAGzB,SAAA;EAC5B,MAAM0B,MAAA,GAASzB,SAAA;EAEf,MAAM,CAAC0B,gBAAA,CAAiB,GAAG9B,QAAA,CAAS,MAAM4B,eAAA,CAAgB;IAAEf;EAAe;EAE3E,MAAMkB,uBAAA,GAA0BnC,KAAA,CAAMG,MAAM,CAAkB;EAE9D,MAAM;IAAEiC;EAAU,CAAE,GAAGrC,QAAA;EACvB,MAAM;IAAEsC;EAAC,CAAE,GAAG3B,cAAA;EAEd,MAAM;IAAE4B;EAAc,CAAE,GAAG7B,kBAAA;EAE3B,MAAM,CAAC8B,YAAA,EAAcC,eAAA,CAAgB,GAAGpC,QAAA,CAA0BqC,SAAA;EAClE,MAAM,CAACC,SAAA,EAAWC,YAAA,CAAa,GAAGvC,QAAA,CAAS;EAE3C,MAAMwC,cAAA,GAAiBzC,MAAA,CAAO;EAE9B,MAAM0C,eAAA,GAAkB5C,WAAA,CACtB,CAACe,OAAA,EAAmC8B,oBAAA,GAAgC,KAAK;IACvE,MAAMC,UAAA,GAAanC,cAAA,CAAeuB,uBAAA;IAElC,MAAMa,iBAAA,GAAoB,MAAAA,CAAA;MACxB,IAAIF,oBAAA,EAAsB;QACxBH,YAAA,CAAa;MACf;MAEA,IAAI;QACF,MAAMM,MAAA,GAAS,MAAMX,cAAA,CAAe;UAClCrB,cAAA;UACAC,cAAA;UACAF,KAAA,EAAAA,OAAA;UACAG,UAAA;UACAC,WAAA;UACAa,MAAA;UACAN,wBAAA;UACAC,mBAAA;UACAC,mBAAA,EAAqBA,mBAAA,KAAwBY,SAAA,GAAYZ,mBAAA,GAAsB;UAC/EC,sBAAA,EACEA,sBAAA,KAA2BW,SAAA,GAAYX,sBAAA,GAAyB;UAClEC,oBAAA,EAAsBA,oBAAA,KAAyBU,SAAA,GAAYV,oBAAA,GAAuB;UAClFmB,MAAA,EAAQH,UAAA,CAAWG;QACrB;QAEA,IAAID,MAAA,EAAQE,QAAA,EAAU;UACpBX,eAAA,CAAgBS,MAAA,CAAOE,QAAQ;UAC/BR,YAAA,CAAa;QACf;MACF,EAAE,OAAOS,KAAA,EAAO;QACd/C,KAAA,CAAM+C,KAAK,CAACA,KAAA,EAAOC,OAAA,IAAWhB,CAAA,CAAE;QAChCD,UAAA,CAAWjB,UAAA;MACb;MAEAgB,uBAAA,CAAwBmB,OAAO,GAAG;IACpC;IAEA,KAAKN,iBAAA;EACP,GACA,CACE/B,cAAA,EACAC,cAAA,EACAC,UAAA,EACAC,WAAA,EACAS,mBAAA,EACAC,sBAAA,EACAC,oBAAA,EACAO,cAAA,EACAV,mBAAA,EACAQ,UAAA,EACAT,wBAAA,EACAU,CAAA,EACAJ,MAAA,CACD;EAGH,MAAMR,MAAA,GAASxB,WAAA,CACZsD,IAAA;IACC,IAAIA,IAAA,CAAKC,SAAS,KAAK,UAAU;MAC/BX,eAAA,CAAgBU,IAAA,CAAKE,GAAG,CAAC1C,EAAE;IAC7B;IAEA,IAAI,OAAOW,eAAA,KAAoB,YAAY;MACzC,KAAKA,eAAA,CAAgB;QACnB,GAAG6B,IAAI;QACPrB;MACF;IACF;EACF,GACA,CAACR,eAAA,EAAiBQ,gBAAA,EAAkBW,eAAA,CAAgB;EAGtD,MAAMtB,WAAA,GAActB,WAAA,CACjBsD,MAAA;IACCV,eAAA,CAAgBU,MAAA,CAAKE,GAAG,CAAC1C,EAAE;IAE3B,IAAI,OAAOS,oBAAA,KAAyB,YAAY;MAC9C,KAAKA,oBAAA,CAAqB;QACxB,GAAG+B,MAAI;QACPrB;MACF;IACF;EACF,GACA,CAACV,oBAAA,EAAsBU,gBAAA,EAAkBW,eAAA,CAAgB;EAG3D,MAAMxB,QAAA,GAAWpB,WAAA,CACdsD,MAAA;IACC,IAAI,OAAOjC,iBAAA,KAAsB,YAAY;MAC3C,KAAKA,iBAAA,CAAkB;QACrB,GAAGiC,MAAI;QACPrB;MACF;IACF;IAEAE,UAAA,CAAWjB,UAAA;EACb,GACA,CAACG,iBAAA,EAAmBc,UAAA,EAAYjB,UAAA,EAAYe,gBAAA,CAAiB;EAG/D,MAAMwB,QAAA,GAAWzD,WAAA,CAAY;IAC3B4C,eAAA,CAAgBJ,SAAA,EAAW;EAC7B,GAAG,CAACI,eAAA,CAAgB;EAEpB3C,SAAA,CAAU;IACR,IAAI,CAACqC,YAAA,IAAgB,CAACK,cAAA,CAAeU,OAAO,EAAE;MAC5CT,eAAA,CAAgB7B,KAAA,EAAO;MACvB4B,cAAA,CAAeU,OAAO,GAAG;IAC3B;EACF,GAAG,CAACf,YAAA,EAAcM,eAAA,EAAiB7B,KAAA,CAAM;EAEzC;EACAd,SAAA,CAAU;IACR,MAAMyD,oBAAA,GAAuBxB,uBAAA,CAAwBmB,OAAO;IAE5D,OAAO;MACL3C,cAAA,CAAegD,oBAAA;IACjB;EACF,GAAG,EAAE;EAEL,IAAIjB,SAAA,EAAW;IACb,oBAAOkB,IAAA,CAACtD,cAAA;EACV;EAEA,oBACEsD,IAAA,CAAC/C,6BAAA;IACC6C,QAAA,EAAUA,QAAA;IACVvC,UAAA,EAAYA,UAAA;IACZE,QAAA,EAAUA,QAAA;IACVE,WAAA,EAAaA,WAAA;IACbE,MAAA,EAAQA,MAAA;cAEPc;;AAGP","ignoreList":[]}
1
+ {"version":3,"file":"DrawerContent.js","names":["useModal","React","useCallback","useEffect","useRef","useState","toast","LoadingOverlay","useConfig","useServerFunctions","useTranslation","abortAndIgnore","handleAbortRef","DocumentDrawerContextProvider","DocumentDrawerContent","id","docID","collectionSlug","disableActions","drawerSlug","initialData","onDelete","onDeleteFromProps","onDuplicate","onDuplicateFromProps","onSave","onSaveFromProps","overrideEntityVisibility","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","getEntityConfig","collectionConfig","abortGetDocumentViewRef","closeModal","t","renderDocument","DocumentView","setDocumentView","undefined","isLoading","setIsLoading","hasInitialized","getDocumentView","showLoadingIndicator","controller","fetchDocumentView","result","signal","Document","error","message","current","args","operation","doc","clearDoc","abortGetDocumentView","_jsx"],"sources":["../../../src/elements/DocumentDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerProps } from './types.js'\n\nimport { LoadingOverlay } from '../../elements/Loading/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { DocumentDrawerContextProvider } from './Provider.js'\n\nexport const DocumentDrawerContent: React.FC<DocumentDrawerProps> = ({\n id: docID,\n collectionSlug,\n disableActions,\n drawerSlug,\n initialData,\n onDelete: onDeleteFromProps,\n onDuplicate: onDuplicateFromProps,\n onSave: onSaveFromProps,\n overrideEntityVisibility = true,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n}) => {\n const { getEntityConfig } = useConfig()\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug }))\n\n const abortGetDocumentViewRef = React.useRef<AbortController>(null)\n\n const { closeModal } = useModal()\n const { t } = useTranslation()\n\n const { renderDocument } = useServerFunctions()\n\n const [DocumentView, setDocumentView] = useState<React.ReactNode>(undefined)\n const [isLoading, setIsLoading] = useState(true)\n\n const hasInitialized = useRef(false)\n\n const getDocumentView = useCallback(\n (docID?: DocumentDrawerProps['id'], showLoadingIndicator: boolean = false) => {\n const controller = handleAbortRef(abortGetDocumentViewRef)\n\n const fetchDocumentView = async () => {\n if (showLoadingIndicator) {\n setIsLoading(true)\n }\n\n try {\n const result = await renderDocument({\n collectionSlug,\n disableActions,\n docID,\n drawerSlug,\n initialData,\n overrideEntityVisibility,\n redirectAfterCreate,\n redirectAfterDelete: redirectAfterDelete !== undefined ? redirectAfterDelete : false,\n redirectAfterDuplicate:\n redirectAfterDuplicate !== undefined ? redirectAfterDuplicate : false,\n redirectAfterRestore: redirectAfterRestore !== undefined ? redirectAfterRestore : false,\n signal: controller.signal,\n })\n\n if (result?.Document) {\n setDocumentView(result.Document)\n setIsLoading(false)\n }\n } catch (error) {\n toast.error(error?.message || t('error:unspecific'))\n closeModal(drawerSlug)\n }\n\n abortGetDocumentViewRef.current = null\n }\n\n void fetchDocumentView()\n },\n [\n collectionSlug,\n disableActions,\n drawerSlug,\n initialData,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n renderDocument,\n redirectAfterCreate,\n closeModal,\n overrideEntityVisibility,\n t,\n ],\n )\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n if (args.operation === 'create') {\n getDocumentView(args.doc.id)\n }\n\n if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...args,\n collectionConfig,\n })\n }\n },\n [onSaveFromProps, collectionConfig, getDocumentView],\n )\n\n const onDuplicate = useCallback<DocumentDrawerProps['onDuplicate']>(\n (args) => {\n getDocumentView(args.doc.id)\n\n if (typeof onDuplicateFromProps === 'function') {\n void onDuplicateFromProps({\n ...args,\n collectionConfig,\n })\n }\n },\n [onDuplicateFromProps, collectionConfig, getDocumentView],\n )\n\n const onDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n if (typeof onDeleteFromProps === 'function') {\n void onDeleteFromProps({\n ...args,\n collectionConfig,\n })\n }\n\n closeModal(drawerSlug)\n },\n [onDeleteFromProps, closeModal, drawerSlug, collectionConfig],\n )\n\n const clearDoc = useCallback(() => {\n getDocumentView(undefined, true)\n }, [getDocumentView])\n\n useEffect(() => {\n if (!DocumentView && !hasInitialized.current) {\n getDocumentView(docID, true)\n hasInitialized.current = true\n }\n }, [DocumentView, getDocumentView, docID])\n\n // Cleanup any pending requests when the component unmounts\n useEffect(() => {\n const abortGetDocumentView = abortGetDocumentViewRef.current\n\n return () => {\n abortAndIgnore(abortGetDocumentView)\n }\n }, [])\n\n if (isLoading) {\n return <LoadingOverlay />\n }\n\n return (\n <DocumentDrawerContextProvider\n clearDoc={clearDoc}\n drawerSlug={drawerSlug}\n onDelete={onDelete}\n onDuplicate={onDuplicate}\n onSave={onSave}\n >\n {DocumentView}\n </DocumentDrawerContextProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Nav/NavToggler/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAyCA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Nav/NavToggler/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAyCA,CAAA"}
@@ -3,6 +3,7 @@
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  import { useWindowInfo } from '@faceless-ui/window-info';
6
+ import { PREFERENCE_KEYS } from 'payload/shared';
6
7
  import React from 'react';
7
8
  import { usePreferences } from '../../../providers/Preferences/index.js';
8
9
  import { useTranslation } from '../../../providers/Translation/index.js';
@@ -51,7 +52,7 @@ export const NavToggler = props => {
51
52
  t6 = async () => {
52
53
  setNavOpen(!navOpen);
53
54
  if (!largeBreak) {
54
- await setPreference("nav", {
55
+ await setPreference(PREFERENCE_KEYS.NAV, {
55
56
  open: !navOpen
56
57
  }, true);
57
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useWindowInfo","React","usePreferences","useTranslation","useNav","baseClass","NavToggler","props","$","id","children","className","tabIndex","t0","undefined","t","setPreference","navOpen","setNavOpen","breakpoints","t1","l","largeBreak","t2","t3","t4","filter","Boolean","t5","join","t6","open","t7","_jsx","onClick","type"],"sources":["../../../../src/elements/Nav/NavToggler/index.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport React from 'react'\n\nimport { usePreferences } from '../../../providers/Preferences/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { useNav } from '../context.js'\nimport './index.scss'\n\nconst baseClass = 'nav-toggler'\n\nexport const NavToggler: React.FC<{\n children?: React.ReactNode\n className?: string\n id?: string\n tabIndex?: number\n}> = (props) => {\n const { id, children, className, tabIndex = 0 } = props\n\n const { t } = useTranslation()\n\n const { setPreference } = usePreferences()\n\n const { navOpen, setNavOpen } = useNav()\n\n const {\n breakpoints: { l: largeBreak },\n } = useWindowInfo()\n\n return (\n <button\n aria-label={`${navOpen ? t('general:close') : t('general:open')} ${t('general:menu')}`}\n className={[baseClass, navOpen && `${baseClass}--is-open`, className]\n .filter(Boolean)\n .join(' ')}\n id={id}\n onClick={async () => {\n setNavOpen(!navOpen)\n\n // only when the user explicitly toggles the nav on desktop do we want to set the preference\n // this is because the js may open or close the nav based on the window size, routing, etc\n if (!largeBreak) {\n await setPreference(\n 'nav',\n {\n open: !navOpen,\n },\n true,\n )\n }\n }}\n tabIndex={tabIndex}\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,aAAa,QAAQ;AAC9B,OAAOC,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,UAAA,GAKRC,KAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EACH;IAAAU,EAAA;IAAAC,QAAA;IAAAC,SAAA;IAAAC,QAAA,EAAAC;EAAA,IAAkDN,KAAA;EAAjB,MAAAK,QAAA,GAAAC,EAAY,KAAAC,SAAA,OAAZD,EAAY;EAE7C;IAAAE;EAAA,IAAcZ,cAAA;EAEd;IAAAa;EAAA,IAA0Bd,cAAA;EAE1B;IAAAe,OAAA;IAAAC;EAAA,IAAgCd,MAAA;EAEhC;IAAAe,WAAA,EAAAC;EAAA,IAEIpB,aAAA;EADW;IAAAqB,CAAA,EAAAC;EAAA,IAAAF,EAAiB;EAKhB,MAAAG,EAAA,MAAGN,OAAA,GAAUF,CAAA,CAAE,mBAAmBA,CAAA,CAAE,mBAAmBA,CAAA,CAAE,iBAAiB;EAC/D,MAAAS,EAAA,GAAAP,OAAA,IAAW,GAAAZ,SAAA,WAAuB;EAAA,IAAAoB,EAAA;EAAA,IAAAjB,CAAA,QAAAG,SAAA,IAAAH,CAAA,QAAAgB,EAAA;IAA9CC,EAAA,IAAApB,SAAA,EAAYmB,EAAkC,EAAEb,SAAA,EAAAe,MAAA,CAAAC,OACjD;IAAAnB,CAAA,MAAAG,SAAA;IAAAH,CAAA,MAAAgB,EAAA;IAAAhB,CAAA,MAAAiB,EAAA;EAAA;IAAAA,EAAA,GAAAjB,CAAA;EAAA;EADC,MAAAoB,EAAA,GAAAH,EACD,CAAAI,IAAA,CACF;EAAA,IAAAC,EAAA;EAAA,IAAAtB,CAAA,QAAAc,UAAA,IAAAd,CAAA,QAAAS,OAAA,IAAAT,CAAA,QAAAU,UAAA,IAAAV,CAAA,QAAAQ,aAAA;IAECc,EAAA,SAAAA,CAAA;MACPZ,UAAA,EAAYD,OAAA;MAAA,KAIPK,UAAA;QAAA,MACGN,aAAA,CACJ;UAAAe,IAAA,GAESd;QAAA,OAET;MAAA;IAAA;IAGNT,CAAA,MAAAc,UAAA;IAAAd,CAAA,MAAAS,OAAA;IAAAT,CAAA,MAAAU,UAAA;IAAAV,CAAA,MAAAQ,aAAA;IAAAR,CAAA,MAAAsB,EAAA;EAAA;IAAAA,EAAA,GAAAtB,CAAA;EAAA;EAAA,IAAAwB,EAAA;EAAA,IAAAxB,CAAA,QAAAE,QAAA,IAAAF,CAAA,QAAAC,EAAA,IAAAD,CAAA,SAAAe,EAAA,IAAAf,CAAA,SAAAoB,EAAA,IAAApB,CAAA,SAAAsB,EAAA,IAAAtB,CAAA,SAAAI,QAAA;IApBFoB,EAAA,GAAAC,IAAA,CAAC;MAAA,cACaV,EAA0E;MAAAZ,SAAA,EAC3EiB,EAEH;MAAAnB,EAAA;MAAAyB,OAAA,EAECJ,EAcT;MAAAlB,QAAA;MAAAuB,IAAA,EAEK;MAAAzB;IAAA,C;;;;;;;;;;;SAtBPsB,E;CA2BJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useWindowInfo","PREFERENCE_KEYS","React","usePreferences","useTranslation","useNav","baseClass","NavToggler","props","$","id","children","className","tabIndex","t0","undefined","t","setPreference","navOpen","setNavOpen","breakpoints","t1","l","largeBreak","t2","t3","t4","filter","Boolean","t5","join","t6","NAV","open","t7","_jsx","onClick","type"],"sources":["../../../../src/elements/Nav/NavToggler/index.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React from 'react'\n\nimport { usePreferences } from '../../../providers/Preferences/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { useNav } from '../context.js'\nimport './index.scss'\n\nconst baseClass = 'nav-toggler'\n\nexport const NavToggler: React.FC<{\n children?: React.ReactNode\n className?: string\n id?: string\n tabIndex?: number\n}> = (props) => {\n const { id, children, className, tabIndex = 0 } = props\n\n const { t } = useTranslation()\n\n const { setPreference } = usePreferences()\n\n const { navOpen, setNavOpen } = useNav()\n\n const {\n breakpoints: { l: largeBreak },\n } = useWindowInfo()\n\n return (\n <button\n aria-label={`${navOpen ? t('general:close') : t('general:open')} ${t('general:menu')}`}\n className={[baseClass, navOpen && `${baseClass}--is-open`, className]\n .filter(Boolean)\n .join(' ')}\n id={id}\n onClick={async () => {\n setNavOpen(!navOpen)\n\n // only when the user explicitly toggles the nav on desktop do we want to set the preference\n // this is because the js may open or close the nav based on the window size, routing, etc\n if (!largeBreak) {\n await setPreference(\n PREFERENCE_KEYS.NAV,\n {\n open: !navOpen,\n },\n true,\n )\n }\n }}\n tabIndex={tabIndex}\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,aAAa,QAAQ;AAC9B,SAASC,eAAe,QAAQ;AAChC,OAAOC,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,UAAA,GAKRC,KAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EACH;IAAAW,EAAA;IAAAC,QAAA;IAAAC,SAAA;IAAAC,QAAA,EAAAC;EAAA,IAAkDN,KAAA;EAAjB,MAAAK,QAAA,GAAAC,EAAY,KAAAC,SAAA,OAAZD,EAAY;EAE7C;IAAAE;EAAA,IAAcZ,cAAA;EAEd;IAAAa;EAAA,IAA0Bd,cAAA;EAE1B;IAAAe,OAAA;IAAAC;EAAA,IAAgCd,MAAA;EAEhC;IAAAe,WAAA,EAAAC;EAAA,IAEIrB,aAAA;EADW;IAAAsB,CAAA,EAAAC;EAAA,IAAAF,EAAiB;EAKhB,MAAAG,EAAA,MAAGN,OAAA,GAAUF,CAAA,CAAE,mBAAmBA,CAAA,CAAE,mBAAmBA,CAAA,CAAE,iBAAiB;EAC/D,MAAAS,EAAA,GAAAP,OAAA,IAAW,GAAAZ,SAAA,WAAuB;EAAA,IAAAoB,EAAA;EAAA,IAAAjB,CAAA,QAAAG,SAAA,IAAAH,CAAA,QAAAgB,EAAA;IAA9CC,EAAA,IAAApB,SAAA,EAAYmB,EAAkC,EAAEb,SAAA,EAAAe,MAAA,CAAAC,OACjD;IAAAnB,CAAA,MAAAG,SAAA;IAAAH,CAAA,MAAAgB,EAAA;IAAAhB,CAAA,MAAAiB,EAAA;EAAA;IAAAA,EAAA,GAAAjB,CAAA;EAAA;EADC,MAAAoB,EAAA,GAAAH,EACD,CAAAI,IAAA,CACF;EAAA,IAAAC,EAAA;EAAA,IAAAtB,CAAA,QAAAc,UAAA,IAAAd,CAAA,QAAAS,OAAA,IAAAT,CAAA,QAAAU,UAAA,IAAAV,CAAA,QAAAQ,aAAA;IAECc,EAAA,SAAAA,CAAA;MACPZ,UAAA,EAAYD,OAAA;MAAA,KAIPK,UAAA;QAAA,MACGN,aAAA,CAAAhB,eAAA,CAAA+B,GAAA;UAAAC,IAAA,GAGKf;QAAA,OAET;MAAA;IAAA;IAGNT,CAAA,MAAAc,UAAA;IAAAd,CAAA,MAAAS,OAAA;IAAAT,CAAA,MAAAU,UAAA;IAAAV,CAAA,MAAAQ,aAAA;IAAAR,CAAA,MAAAsB,EAAA;EAAA;IAAAA,EAAA,GAAAtB,CAAA;EAAA;EAAA,IAAAyB,EAAA;EAAA,IAAAzB,CAAA,QAAAE,QAAA,IAAAF,CAAA,QAAAC,EAAA,IAAAD,CAAA,SAAAe,EAAA,IAAAf,CAAA,SAAAoB,EAAA,IAAApB,CAAA,SAAAsB,EAAA,IAAAtB,CAAA,SAAAI,QAAA;IApBFqB,EAAA,GAAAC,IAAA,CAAC;MAAA,cACaX,EAA0E;MAAAZ,SAAA,EAC3EiB,EAEH;MAAAnB,EAAA;MAAA0B,OAAA,EAECL,EAcT;MAAAlB,QAAA;MAAAwB,IAAA,EAEK;MAAA1B;IAAA,C;;;;;;;;;;;SAtBPuB,E;CA2BJ","ignoreList":[]}
@@ -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,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;;GAEG;AACH,eAAO,MAAM,UAAU,+BAMrB,CAAA;AAEF,eAAO,MAAM,MAAM,sBAA8B,CAAA;AAYjD;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAkFA,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/elements/Nav/context.tsx"],"names":[],"mappings":"AAIA,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;;GAEG;AACH,eAAO,MAAM,UAAU,+BAMrB,CAAA;AAEF,eAAO,MAAM,MAAM,sBAA8B,CAAA;AAYjD;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAkFA,CAAA"}
@@ -3,6 +3,7 @@
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  import { useWindowInfo } from '@faceless-ui/window-info';
5
5
  import { usePathname } from 'next/navigation.js';
6
+ import { PREFERENCE_KEYS } from 'payload/shared';
6
7
  import React, { useEffect, useRef } from 'react';
7
8
  import { usePreferences } from '../../providers/Preferences/index.js';
8
9
  /**
@@ -17,7 +18,7 @@ export const NavContext = /*#__PURE__*/React.createContext({
17
18
  });
18
19
  export const useNav = () => React.use(NavContext);
19
20
  const getNavPreference = async getPreference => {
20
- const navPrefs = await getPreference('nav');
21
+ const navPrefs = await getPreference(PREFERENCE_KEYS.NAV);
21
22
  const preferredState = navPrefs?.open;
22
23
  if (typeof preferredState === 'boolean') {
23
24
  return preferredState;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":["useWindowInfo","usePathname","React","useEffect","useRef","usePreferences","NavContext","createContext","hydrated","navOpen","navRef","setNavOpen","shouldAnimate","useNav","use","getNavPreference","getPreference","navPrefs","preferredState","open","NavProvider","children","initialIsOpen","breakpoints","l","largeBreak","m","midBreak","s","smallBreak","pathname","useState","setShouldAnimate","setHydrated","setNavFromPreferences","current","style","overscrollBehavior","timeout","setTimeout","clearTimeout","_jsx","value"],"sources":["../../../src/elements/Nav/context.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { usePathname } from 'next/navigation.js'\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\n/**\n * @internal\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.use(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\n/**\n * @internal\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 pathname = usePathname()\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 // on smaller screens where the nav is a modal\n // close the nav when the user navigates away\n useEffect(() => {\n if (smallBreak === true) {\n setNavOpen(false)\n }\n }, [pathname])\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 navRef.current.style.overscrollBehavior = 'contain'\n } else {\n navRef.current.style.overscrollBehavior = 'auto'\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 const timeout = setTimeout(() => {\n setShouldAnimate(true)\n }, 100)\n return () => {\n clearTimeout(timeout)\n }\n }, [largeBreak, midBreak, smallBreak])\n\n // when the component unmounts, clear all body scroll locks\n useEffect(() => {\n return () => {\n if (navRef.current) {\n navRef.current.style.overscrollBehavior = 'auto'\n }\n }\n }, [])\n\n return (\n <NavContext value={{ hydrated, navOpen, navRef, setNavOpen, shouldAnimate }}>\n {children}\n </NavContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"context.js","names":["useWindowInfo","usePathname","PREFERENCE_KEYS","React","useEffect","useRef","usePreferences","NavContext","createContext","hydrated","navOpen","navRef","setNavOpen","shouldAnimate","useNav","use","getNavPreference","getPreference","navPrefs","NAV","preferredState","open","NavProvider","children","initialIsOpen","breakpoints","l","largeBreak","m","midBreak","s","smallBreak","pathname","useState","setShouldAnimate","setHydrated","setNavFromPreferences","current","style","overscrollBehavior","timeout","setTimeout","clearTimeout","_jsx","value"],"sources":["../../../src/elements/Nav/context.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { usePathname } from 'next/navigation.js'\nimport { PREFERENCE_KEYS } from 'payload/shared'\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\n/**\n * @internal\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.use(NavContext)\n\nconst getNavPreference = async (getPreference): Promise<boolean> => {\n const navPrefs = await getPreference(PREFERENCE_KEYS.NAV)\n const preferredState = navPrefs?.open\n if (typeof preferredState === 'boolean') {\n return preferredState\n } else {\n return true\n }\n}\n\n/**\n * @internal\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 pathname = usePathname()\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 // on smaller screens where the nav is a modal\n // close the nav when the user navigates away\n useEffect(() => {\n if (smallBreak === true) {\n setNavOpen(false)\n }\n }, [pathname])\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 navRef.current.style.overscrollBehavior = 'contain'\n } else {\n navRef.current.style.overscrollBehavior = 'auto'\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 const timeout = setTimeout(() => {\n setShouldAnimate(true)\n }, 100)\n return () => {\n clearTimeout(timeout)\n }\n }, [largeBreak, midBreak, smallBreak])\n\n // when the component unmounts, clear all body scroll locks\n useEffect(() => {\n return () => {\n if (navRef.current) {\n navRef.current.style.overscrollBehavior = 'auto'\n }\n }\n }, [])\n\n return (\n <NavContext value={{ hydrated, navOpen, navRef, setNavOpen, shouldAnimate }}>\n {children}\n </NavContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/NavGroup/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAIvC,OAAO,cAAc,CAAA;AAMrB,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAID,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0DpC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/NavGroup/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAIvC,OAAO,cAAc,CAAA;AAMrB,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0DpC,CAAA"}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ import { PREFERENCE_KEYS } from 'payload/shared';
5
6
  import React, { useState } from 'react';
6
7
  import { ChevronIcon } from '../../icons/Chevron/index.js';
7
8
  import { usePreferences } from '../../providers/Preferences/index.js';
@@ -9,7 +10,6 @@ import './index.scss';
9
10
  import { AnimateHeight } from '../AnimateHeight/index.js';
10
11
  import { useNav } from '../Nav/context.js';
11
12
  const baseClass = 'nav-group';
12
- const preferencesKey = 'nav';
13
13
  export const NavGroup = t0 => {
14
14
  const $ = _c(21);
15
15
  const {
@@ -38,7 +38,7 @@ export const NavGroup = t0 => {
38
38
  } else {
39
39
  newGroupPrefs[label].open = Boolean(collapsed);
40
40
  }
41
- setPreference(preferencesKey, {
41
+ setPreference(PREFERENCE_KEYS.NAV, {
42
42
  groups: newGroupPrefs
43
43
  }, true);
44
44
  setCollapsed(!collapsed);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useState","ChevronIcon","usePreferences","AnimateHeight","useNav","baseClass","preferencesKey","NavGroup","t0","$","children","isOpen","isOpenFromProps","label","collapsed","setCollapsed","animate","setAnimate","setPreference","navOpen","t1","newGroupPrefs","open","Boolean","groups","toggleCollapsed","t2","t3","t4","filter","t5","join","t6","t7","t8","t9","t10","t11","_jsxs","className","id","onClick","tabIndex","type","_jsx","direction","undefined","duration","height","Fragment"],"sources":["../../../src/elements/NavGroup/index.tsx"],"sourcesContent":["'use client'\nimport type { NavPreferences } from 'payload'\n\nimport React, { useState } from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport './index.scss'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { useNav } from '../Nav/context.js'\n\nconst baseClass = 'nav-group'\n\ntype Props = {\n children: React.ReactNode\n isOpen?: boolean\n label: string\n}\n\nconst preferencesKey = 'nav'\n\nexport const NavGroup: React.FC<Props> = ({ children, isOpen: isOpenFromProps, label }) => {\n const [collapsed, setCollapsed] = useState(\n typeof isOpenFromProps !== 'undefined' ? !isOpenFromProps : false,\n )\n\n const [animate, setAnimate] = useState(false)\n const { setPreference } = usePreferences()\n const { navOpen } = useNav()\n\n if (label) {\n const toggleCollapsed = () => {\n setAnimate(true)\n const newGroupPrefs: NavPreferences['groups'] = {}\n\n if (!newGroupPrefs?.[label]) {\n newGroupPrefs[label] = { open: Boolean(collapsed) }\n } else {\n newGroupPrefs[label].open = Boolean(collapsed)\n }\n\n void setPreference(preferencesKey, { groups: newGroupPrefs }, true)\n setCollapsed(!collapsed)\n }\n\n return (\n <div\n className={[`${baseClass}`, `${label}`, collapsed && `${baseClass}--collapsed`]\n .filter(Boolean)\n .join(' ')}\n id={`nav-group-${label}`}\n >\n <button\n className={[\n `${baseClass}__toggle`,\n `${baseClass}__toggle--${collapsed ? 'collapsed' : 'open'}`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={toggleCollapsed}\n tabIndex={!navOpen ? -1 : 0}\n type=\"button\"\n >\n <div className={`${baseClass}__label`}>{label}</div>\n <div className={`${baseClass}__indicator`}>\n <ChevronIcon\n className={`${baseClass}__indicator`}\n direction={!collapsed ? 'up' : undefined}\n />\n </div>\n </button>\n <AnimateHeight duration={animate ? 200 : 0} height={collapsed ? 0 : 'auto'}>\n <div className={`${baseClass}__content`}>{children}</div>\n </AnimateHeight>\n </div>\n )\n }\n\n return <React.Fragment>{children}</React.Fragment>\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","PREFERENCE_KEYS","React","useState","ChevronIcon","usePreferences","AnimateHeight","useNav","baseClass","NavGroup","t0","$","children","isOpen","isOpenFromProps","label","collapsed","setCollapsed","animate","setAnimate","setPreference","navOpen","t1","newGroupPrefs","open","Boolean","NAV","groups","toggleCollapsed","t2","t3","t4","filter","t5","join","t6","t7","t8","t9","t10","t11","_jsxs","className","id","onClick","tabIndex","type","_jsx","direction","undefined","duration","height","Fragment"],"sources":["../../../src/elements/NavGroup/index.tsx"],"sourcesContent":["'use client'\nimport type { NavPreferences } from 'payload'\n\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React, { useState } from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport './index.scss'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { useNav } from '../Nav/context.js'\n\nconst baseClass = 'nav-group'\n\ntype Props = {\n children: React.ReactNode\n isOpen?: boolean\n label: string\n}\n\nexport const NavGroup: React.FC<Props> = ({ children, isOpen: isOpenFromProps, label }) => {\n const [collapsed, setCollapsed] = useState(\n typeof isOpenFromProps !== 'undefined' ? !isOpenFromProps : false,\n )\n\n const [animate, setAnimate] = useState(false)\n const { setPreference } = usePreferences()\n const { navOpen } = useNav()\n\n if (label) {\n const toggleCollapsed = () => {\n setAnimate(true)\n const newGroupPrefs: NavPreferences['groups'] = {}\n\n if (!newGroupPrefs?.[label]) {\n newGroupPrefs[label] = { open: Boolean(collapsed) }\n } else {\n newGroupPrefs[label].open = Boolean(collapsed)\n }\n\n void setPreference(PREFERENCE_KEYS.NAV, { groups: newGroupPrefs }, true)\n setCollapsed(!collapsed)\n }\n\n return (\n <div\n className={[`${baseClass}`, `${label}`, collapsed && `${baseClass}--collapsed`]\n .filter(Boolean)\n .join(' ')}\n id={`nav-group-${label}`}\n >\n <button\n className={[\n `${baseClass}__toggle`,\n `${baseClass}__toggle--${collapsed ? 'collapsed' : 'open'}`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={toggleCollapsed}\n tabIndex={!navOpen ? -1 : 0}\n type=\"button\"\n >\n <div className={`${baseClass}__label`}>{label}</div>\n <div className={`${baseClass}__indicator`}>\n <ChevronIcon\n className={`${baseClass}__indicator`}\n direction={!collapsed ? 'up' : undefined}\n />\n </div>\n </button>\n <AnimateHeight duration={animate ? 200 : 0} height={collapsed ? 0 : 'auto'}>\n <div className={`${baseClass}__content`}>{children}</div>\n </AnimateHeight>\n </div>\n )\n }\n\n return <React.Fragment>{children}</React.Fragment>\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/PublishButton/ScheduleDrawer/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,eAAe,EAAS,MAAM,SAAS,CAAA;AAS7D,OAAO,KAA+B,MAAM,OAAO,CAAA;AAGnD,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAA;AAgB5D,OAAO,cAAc,CAAA;AASrB,KAAK,KAAK,GAAG;IACX,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,qBAAqB,CAAC,EAAE,eAAe,CAAA;IACvC,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAOD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0V1C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/PublishButton/ScheduleDrawer/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,eAAe,EAAS,MAAM,SAAS,CAAA;AAS7D,OAAO,KAA+B,MAAM,OAAO,CAAA;AAGnD,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAA;AAgB5D,OAAO,cAAc,CAAA;AASrB,KAAK,KAAK,GAAG;IACX,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,qBAAqB,CAAC,EAAE,eAAe,CAAA;IACvC,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAOD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA8U1C,CAAA"}
@@ -55,8 +55,7 @@ export const ScheduleDrawer = ({
55
55
  localization,
56
56
  routes: {
57
57
  api
58
- },
59
- serverURL
58
+ }
60
59
  }
61
60
  } = useConfig();
62
61
  const {
@@ -159,7 +158,7 @@ export const ScheduleDrawer = ({
159
158
  t
160
159
  }));
161
160
  setUpcoming(docs);
162
- }, [collectionSlug, globalSlug, serverURL, api, i18n, dateFormat, localization, supportedTimezones, t, id]);
161
+ }, [collectionSlug, globalSlug, api, i18n, dateFormat, localization, supportedTimezones, t, id]);
163
162
  const deleteHandler = React.useCallback(async id_0 => {
164
163
  try {
165
164
  await schedulePublish({
@@ -180,9 +179,9 @@ export const ScheduleDrawer = ({
180
179
  return toast.error(t('general:noDateSelected'));
181
180
  }
182
181
  setProcessing(true);
183
- let publishSpecificLocale;
182
+ let localeToPublish;
184
183
  if (typeof locale === 'object' && locale.value !== 'all' && type === 'publish') {
185
- publishSpecificLocale = locale.value;
184
+ localeToPublish = locale.value;
186
185
  }
187
186
  try {
188
187
  await schedulePublish({
@@ -193,7 +192,7 @@ export const ScheduleDrawer = ({
193
192
  value: String(id)
194
193
  } : undefined,
195
194
  global: globalSlug || undefined,
196
- locale: publishSpecificLocale,
195
+ localeToPublish,
197
196
  timezone
198
197
  });
199
198
  setDate(undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["TZDateMini","TZDate","useModal","getTranslation","endOfToday","isToday","startOfDay","transpose","formatAdminURL","qs","React","useCallback","useMemo","toast","FieldLabel","Radio","useConfig","useDocumentInfo","useDocumentTitle","useServerFunctions","useTranslation","requests","Banner","DrawerCloseButton","Button","DatePickerField","Drawer","Gutter","ReactSelect","ShimmerEffect","Table","TimezonePicker","buildUpcomingColumns","baseClass","defaultLocaleOption","label","value","ScheduleDrawer","slug","defaultType","schedulePublishConfig","toggleModal","config","admin","dateFormat","timezones","defaultTimezone","supportedTimezones","localization","routes","api","serverURL","id","collectionSlug","globalSlug","title","i18n","t","schedulePublish","type","setType","useState","date","setDate","timezone","setTimezone","locale","setLocale","processing","setProcessing","modalTitle","upcoming","setUpcoming","upcomingColumns","setUpcomingColumns","deleteHandlerRef","useRef","userTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","localeOptions","options","locales","map","code","unshift","fetchUpcoming","query","sort","where","and","taskSlug","equals","waitUntil","greater_than","Date","push","String","docs","post","apiRoute","path","body","stringify","headers","language","then","res","json","deleteHandler","current","deleteID","success","err","console","error","message","useEffect","handleSave","publishSpecificLocale","doc","relationTo","undefined","global","displayedValue","DateWithOriginalTz","tz","DateWithUserTz","modifiedDate","withTimeZone","dateWithTimezone","dateWithUserTimezone","toISOString","onChangeDate","incomingDate","tzDateWithUTC","dateToUserTz","fetchInitialUpcoming","minTime","_jsxs","className","gutter","Header","_jsx","onClick","required","isSelected","onChange","option","readOnly","maxTime","minDate","e","pickerAppearance","timeFormat","timeIntervals","length","selectedTimezone","Fragment","buttonStyle","disabled","appearance","columns","data"],"sources":["../../../../src/elements/PublishButton/ScheduleDrawer/index.tsx"],"sourcesContent":["/* eslint-disable no-console */\n'use client'\n\nimport type { Column, SchedulePublish, Where } from 'payload'\n\nimport { TZDateMini as TZDate } from '@date-fns/tz/date/mini'\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { endOfToday, isToday, startOfDay } from 'date-fns'\nimport { transpose } from 'date-fns/transpose'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { PublishType, UpcomingEvent } from './types.js'\n\nimport { FieldLabel } from '../../../fields/FieldLabel/index.js'\nimport { Radio } from '../../../fields/RadioGroup/Radio/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useDocumentTitle } from '../../../providers/DocumentTitle/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { requests } from '../../../utilities/api.js'\nimport { Banner } from '../../Banner/index.js'\nimport { DrawerCloseButton } from '../../BulkUpload/DrawerCloseButton/index.js'\nimport { Button } from '../../Button/index.js'\nimport { DatePickerField } from '../../DatePicker/index.js'\nimport { Drawer } from '../../Drawer/index.js'\nimport { Gutter } from '../../Gutter/index.js'\nimport './index.scss'\nimport { ReactSelect } from '../../ReactSelect/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { Table } from '../../Table/index.js'\nimport { TimezonePicker } from '../../TimezonePicker/index.js'\nimport { buildUpcomingColumns } from './buildUpcomingColumns.js'\n\nconst baseClass = 'schedule-publish'\n\ntype Props = {\n defaultType?: PublishType\n schedulePublishConfig?: SchedulePublish\n slug: string\n}\n\nconst defaultLocaleOption = {\n label: 'All',\n value: 'all',\n}\n\nexport const ScheduleDrawer: React.FC<Props> = ({ slug, defaultType, schedulePublishConfig }) => {\n const { toggleModal } = useModal()\n const {\n config: {\n admin: {\n dateFormat,\n timezones: { defaultTimezone, supportedTimezones },\n },\n localization,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n const { title } = useDocumentTitle()\n const { i18n, t } = useTranslation()\n const { schedulePublish } = useServerFunctions()\n const [type, setType] = React.useState<PublishType>(defaultType || 'publish')\n const [date, setDate] = React.useState<Date>()\n const [timezone, setTimezone] = React.useState<string>(defaultTimezone)\n const [locale, setLocale] = React.useState<{ label: string; value: string }>(defaultLocaleOption)\n const [processing, setProcessing] = React.useState(false)\n const modalTitle = t('general:schedulePublishFor', { title })\n const [upcoming, setUpcoming] = React.useState<UpcomingEvent[]>()\n const [upcomingColumns, setUpcomingColumns] = React.useState<Column[]>()\n const deleteHandlerRef = React.useRef<((id: number | string) => Promise<void>) | null>(() => null)\n\n // Get the user timezone so we can adjust the displayed value against it\n const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n\n const localeOptions = React.useMemo(() => {\n if (localization) {\n const options = localization.locales.map(({ code, label }) => ({\n label: getTranslation(label, i18n),\n value: code,\n }))\n\n options.unshift(defaultLocaleOption)\n\n return options\n }\n\n return []\n }, [localization, i18n])\n\n const fetchUpcoming = React.useCallback(async () => {\n const query: { sort: string; where: Where } = {\n sort: 'waitUntil',\n where: {\n and: [\n {\n taskSlug: {\n equals: 'schedulePublish',\n },\n },\n {\n waitUntil: {\n greater_than: new Date(),\n },\n },\n ],\n },\n }\n\n if (collectionSlug) {\n query.where.and.push({\n 'input.doc.value': {\n equals: String(id),\n },\n })\n query.where.and.push({\n 'input.doc.relationTo': {\n equals: collectionSlug,\n },\n })\n }\n\n if (globalSlug) {\n query.where.and.push({\n 'input.global': {\n equals: globalSlug,\n },\n })\n }\n\n const { docs } = await requests\n .post(formatAdminURL({ apiRoute: api, path: `/payload-jobs` }), {\n body: qs.stringify(query),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-Payload-HTTP-Method-Override': 'GET',\n },\n })\n .then((res) => res.json())\n\n setUpcomingColumns(\n buildUpcomingColumns({\n dateFormat,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n deleteHandler: deleteHandlerRef.current,\n docs,\n i18n,\n localization,\n supportedTimezones,\n t,\n }),\n )\n setUpcoming(docs)\n }, [\n collectionSlug,\n globalSlug,\n serverURL,\n api,\n i18n,\n dateFormat,\n localization,\n supportedTimezones,\n t,\n id,\n ])\n\n const deleteHandler = React.useCallback(\n async (id: number | string) => {\n try {\n await schedulePublish({\n deleteID: id,\n })\n await fetchUpcoming()\n toast.success(t('general:deletedSuccessfully'))\n } catch (err) {\n console.error(err)\n toast.error(err.message)\n }\n },\n [fetchUpcoming, schedulePublish, t],\n )\n\n React.useEffect(() => {\n deleteHandlerRef.current = deleteHandler\n }, [deleteHandler])\n\n const handleSave = React.useCallback(async () => {\n if (!date) {\n return toast.error(t('general:noDateSelected'))\n }\n\n setProcessing(true)\n\n let publishSpecificLocale: string\n\n if (typeof locale === 'object' && locale.value !== 'all' && type === 'publish') {\n publishSpecificLocale = locale.value\n }\n\n try {\n await schedulePublish({\n type,\n date,\n doc: collectionSlug\n ? {\n relationTo: collectionSlug,\n value: String(id),\n }\n : undefined,\n global: globalSlug || undefined,\n locale: publishSpecificLocale,\n timezone,\n })\n\n setDate(undefined)\n toast.success(t('version:scheduledSuccessfully'))\n void fetchUpcoming()\n } catch (err) {\n console.error(err)\n toast.error(err.message)\n }\n\n setProcessing(false)\n }, [\n date,\n locale,\n type,\n t,\n schedulePublish,\n collectionSlug,\n id,\n globalSlug,\n timezone,\n fetchUpcoming,\n ])\n\n const displayedValue = useMemo(() => {\n if (timezone && userTimezone && date) {\n // Create TZDate instances for the selected timezone and the user's timezone\n // These instances allow us to transpose the date between timezones while keeping the same time value\n const DateWithOriginalTz = TZDate.tz(timezone)\n const DateWithUserTz = TZDate.tz(userTimezone)\n\n const modifiedDate = new TZDate(date).withTimeZone(timezone)\n\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(modifiedDate, DateWithOriginalTz)\n\n // Transpose the date to the user's timezone - this is necessary because the react-datepicker component insists on displaying the date in the user's timezone\n const dateWithUserTimezone = transpose(dateWithTimezone, DateWithUserTz)\n\n return dateWithUserTimezone.toISOString()\n }\n\n return date\n }, [timezone, date, userTimezone])\n\n const onChangeDate = useCallback(\n (incomingDate: Date) => {\n if (timezone && incomingDate) {\n // Create TZDate instances for the selected timezone\n const tzDateWithUTC = TZDate.tz(timezone)\n\n // Creates a TZDate instance for the user's timezone — this is default behaviour of TZDate as it wraps the Date constructor\n const dateToUserTz = new TZDate(incomingDate)\n\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(dateToUserTz, tzDateWithUTC)\n\n setDate(dateWithTimezone || null)\n } else {\n setDate(incomingDate || null)\n }\n },\n [setDate, timezone],\n )\n\n React.useEffect(() => {\n if (!upcoming) {\n const fetchInitialUpcoming = async () => {\n await fetchUpcoming()\n }\n\n void fetchInitialUpcoming()\n }\n }, [upcoming, fetchUpcoming])\n\n const minTime = useMemo(() => {\n if (date && isToday(date)) {\n return new Date()\n }\n\n return startOfDay(new Date())\n }, [date])\n\n return (\n <Drawer\n className={baseClass}\n gutter={false}\n Header={\n <div className={`${baseClass}__drawer-header`}>\n <h2 title={modalTitle}>{modalTitle}</h2>\n <DrawerCloseButton onClick={() => toggleModal(slug)} />\n </div>\n }\n slug={slug}\n >\n <Gutter className={`${baseClass}__scheduler`}>\n <FieldLabel label={t('version:type')} required />\n <ul className={`${baseClass}__type`}>\n <li>\n <Radio\n id={`${slug}-type`}\n isSelected={type === 'publish'}\n onChange={() => setType('publish')}\n option={{ label: t('version:publish'), value: 'publish' }}\n path={`${slug}-type`}\n readOnly={processing}\n />\n </li>\n <li>\n <Radio\n id={`${slug}-type`}\n isSelected={type === 'unpublish'}\n onChange={() => setType('unpublish')}\n option={{ label: t('version:unpublish'), value: 'unpublish' }}\n path={`${slug}-type`}\n readOnly={processing}\n />\n </li>\n </ul>\n <br />\n <FieldLabel label={t('general:time')} path={'time'} required />\n <DatePickerField\n id=\"time\"\n maxTime={endOfToday()}\n minDate={new Date()}\n minTime={minTime}\n onChange={(e) => onChangeDate(e)}\n pickerAppearance=\"dayAndTime\"\n readOnly={processing}\n timeFormat={schedulePublishConfig?.timeFormat}\n timeIntervals={schedulePublishConfig?.timeIntervals ?? 5}\n value={displayedValue}\n />\n {supportedTimezones.length > 0 && (\n <TimezonePicker\n id={`timezone-picker`}\n onChange={setTimezone}\n options={supportedTimezones}\n selectedTimezone={timezone}\n />\n )}\n <br />\n {localeOptions.length > 0 && type === 'publish' && (\n <React.Fragment>\n <FieldLabel label={t('localization:localeToPublish')} />\n <ReactSelect\n onChange={(e) => setLocale(e as { label: string; value: string })}\n options={localeOptions}\n value={locale}\n />\n <br />\n </React.Fragment>\n )}\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"primary\"\n disabled={processing}\n id=\"scheduled-publish-save\"\n onClick={handleSave}\n type=\"button\"\n >\n {t('general:save')}\n </Button>\n {processing ? <span>{t('general:saving')}</span> : null}\n </div>\n </Gutter>\n <Gutter className={`${baseClass}__upcoming`}>\n <h4>{t('general:upcomingEvents')}</h4>\n {!upcoming && <ShimmerEffect />}\n {upcoming?.length === 0 && (\n <Banner type=\"info\">{t('general:noUpcomingEventsScheduled')}</Banner>\n )}\n {upcoming?.length > 0 && (\n <Table appearance=\"condensed\" columns={upcomingColumns} data={upcoming} />\n )}\n </Gutter>\n </Drawer>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["TZDateMini","TZDate","useModal","getTranslation","endOfToday","isToday","startOfDay","transpose","formatAdminURL","qs","React","useCallback","useMemo","toast","FieldLabel","Radio","useConfig","useDocumentInfo","useDocumentTitle","useServerFunctions","useTranslation","requests","Banner","DrawerCloseButton","Button","DatePickerField","Drawer","Gutter","ReactSelect","ShimmerEffect","Table","TimezonePicker","buildUpcomingColumns","baseClass","defaultLocaleOption","label","value","ScheduleDrawer","slug","defaultType","schedulePublishConfig","toggleModal","config","admin","dateFormat","timezones","defaultTimezone","supportedTimezones","localization","routes","api","id","collectionSlug","globalSlug","title","i18n","t","schedulePublish","type","setType","useState","date","setDate","timezone","setTimezone","locale","setLocale","processing","setProcessing","modalTitle","upcoming","setUpcoming","upcomingColumns","setUpcomingColumns","deleteHandlerRef","useRef","userTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","localeOptions","options","locales","map","code","unshift","fetchUpcoming","query","sort","where","and","taskSlug","equals","waitUntil","greater_than","Date","push","String","docs","post","apiRoute","path","body","stringify","headers","language","then","res","json","deleteHandler","current","deleteID","success","err","console","error","message","useEffect","handleSave","localeToPublish","doc","relationTo","undefined","global","displayedValue","DateWithOriginalTz","tz","DateWithUserTz","modifiedDate","withTimeZone","dateWithTimezone","dateWithUserTimezone","toISOString","onChangeDate","incomingDate","tzDateWithUTC","dateToUserTz","fetchInitialUpcoming","minTime","_jsxs","className","gutter","Header","_jsx","onClick","required","isSelected","onChange","option","readOnly","maxTime","minDate","e","pickerAppearance","timeFormat","timeIntervals","length","selectedTimezone","Fragment","buttonStyle","disabled","appearance","columns","data"],"sources":["../../../../src/elements/PublishButton/ScheduleDrawer/index.tsx"],"sourcesContent":["/* eslint-disable no-console */\n'use client'\n\nimport type { Column, SchedulePublish, Where } from 'payload'\n\nimport { TZDateMini as TZDate } from '@date-fns/tz/date/mini'\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { endOfToday, isToday, startOfDay } from 'date-fns'\nimport { transpose } from 'date-fns/transpose'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { PublishType, UpcomingEvent } from './types.js'\n\nimport { FieldLabel } from '../../../fields/FieldLabel/index.js'\nimport { Radio } from '../../../fields/RadioGroup/Radio/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useDocumentTitle } from '../../../providers/DocumentTitle/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { requests } from '../../../utilities/api.js'\nimport { Banner } from '../../Banner/index.js'\nimport { DrawerCloseButton } from '../../BulkUpload/DrawerCloseButton/index.js'\nimport { Button } from '../../Button/index.js'\nimport { DatePickerField } from '../../DatePicker/index.js'\nimport { Drawer } from '../../Drawer/index.js'\nimport { Gutter } from '../../Gutter/index.js'\nimport './index.scss'\nimport { ReactSelect } from '../../ReactSelect/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { Table } from '../../Table/index.js'\nimport { TimezonePicker } from '../../TimezonePicker/index.js'\nimport { buildUpcomingColumns } from './buildUpcomingColumns.js'\n\nconst baseClass = 'schedule-publish'\n\ntype Props = {\n defaultType?: PublishType\n schedulePublishConfig?: SchedulePublish\n slug: string\n}\n\nconst defaultLocaleOption = {\n label: 'All',\n value: 'all',\n}\n\nexport const ScheduleDrawer: React.FC<Props> = ({ slug, defaultType, schedulePublishConfig }) => {\n const { toggleModal } = useModal()\n const {\n config: {\n admin: {\n dateFormat,\n timezones: { defaultTimezone, supportedTimezones },\n },\n localization,\n routes: { api },\n },\n } = useConfig()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n const { title } = useDocumentTitle()\n const { i18n, t } = useTranslation()\n const { schedulePublish } = useServerFunctions()\n const [type, setType] = React.useState<PublishType>(defaultType || 'publish')\n const [date, setDate] = React.useState<Date>()\n const [timezone, setTimezone] = React.useState<string>(defaultTimezone)\n const [locale, setLocale] = React.useState<{ label: string; value: string }>(defaultLocaleOption)\n const [processing, setProcessing] = React.useState(false)\n const modalTitle = t('general:schedulePublishFor', { title })\n const [upcoming, setUpcoming] = React.useState<UpcomingEvent[]>()\n const [upcomingColumns, setUpcomingColumns] = React.useState<Column[]>()\n const deleteHandlerRef = React.useRef<((id: number | string) => Promise<void>) | null>(() => null)\n\n // Get the user timezone so we can adjust the displayed value against it\n const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n\n const localeOptions = React.useMemo(() => {\n if (localization) {\n const options = localization.locales.map(({ code, label }) => ({\n label: getTranslation(label, i18n),\n value: code,\n }))\n\n options.unshift(defaultLocaleOption)\n\n return options\n }\n\n return []\n }, [localization, i18n])\n\n const fetchUpcoming = React.useCallback(async () => {\n const query: { sort: string; where: Where } = {\n sort: 'waitUntil',\n where: {\n and: [\n {\n taskSlug: {\n equals: 'schedulePublish',\n },\n },\n {\n waitUntil: {\n greater_than: new Date(),\n },\n },\n ],\n },\n }\n\n if (collectionSlug) {\n query.where.and.push({\n 'input.doc.value': {\n equals: String(id),\n },\n })\n query.where.and.push({\n 'input.doc.relationTo': {\n equals: collectionSlug,\n },\n })\n }\n\n if (globalSlug) {\n query.where.and.push({\n 'input.global': {\n equals: globalSlug,\n },\n })\n }\n\n const { docs } = await requests\n .post(formatAdminURL({ apiRoute: api, path: `/payload-jobs` }), {\n body: qs.stringify(query),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-Payload-HTTP-Method-Override': 'GET',\n },\n })\n .then((res) => res.json())\n\n setUpcomingColumns(\n buildUpcomingColumns({\n dateFormat,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n deleteHandler: deleteHandlerRef.current,\n docs,\n i18n,\n localization,\n supportedTimezones,\n t,\n }),\n )\n setUpcoming(docs)\n }, [collectionSlug, globalSlug, api, i18n, dateFormat, localization, supportedTimezones, t, id])\n\n const deleteHandler = React.useCallback(\n async (id: number | string) => {\n try {\n await schedulePublish({\n deleteID: id,\n })\n await fetchUpcoming()\n toast.success(t('general:deletedSuccessfully'))\n } catch (err) {\n console.error(err)\n toast.error(err.message)\n }\n },\n [fetchUpcoming, schedulePublish, t],\n )\n\n React.useEffect(() => {\n deleteHandlerRef.current = deleteHandler\n }, [deleteHandler])\n\n const handleSave = React.useCallback(async () => {\n if (!date) {\n return toast.error(t('general:noDateSelected'))\n }\n\n setProcessing(true)\n\n let localeToPublish: string\n\n if (typeof locale === 'object' && locale.value !== 'all' && type === 'publish') {\n localeToPublish = locale.value\n }\n\n try {\n await schedulePublish({\n type,\n date,\n doc: collectionSlug\n ? {\n relationTo: collectionSlug,\n value: String(id),\n }\n : undefined,\n global: globalSlug || undefined,\n localeToPublish,\n timezone,\n })\n\n setDate(undefined)\n toast.success(t('version:scheduledSuccessfully'))\n void fetchUpcoming()\n } catch (err) {\n console.error(err)\n toast.error(err.message)\n }\n\n setProcessing(false)\n }, [\n date,\n locale,\n type,\n t,\n schedulePublish,\n collectionSlug,\n id,\n globalSlug,\n timezone,\n fetchUpcoming,\n ])\n\n const displayedValue = useMemo(() => {\n if (timezone && userTimezone && date) {\n // Create TZDate instances for the selected timezone and the user's timezone\n // These instances allow us to transpose the date between timezones while keeping the same time value\n const DateWithOriginalTz = TZDate.tz(timezone)\n const DateWithUserTz = TZDate.tz(userTimezone)\n\n const modifiedDate = new TZDate(date).withTimeZone(timezone)\n\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(modifiedDate, DateWithOriginalTz)\n\n // Transpose the date to the user's timezone - this is necessary because the react-datepicker component insists on displaying the date in the user's timezone\n const dateWithUserTimezone = transpose(dateWithTimezone, DateWithUserTz)\n\n return dateWithUserTimezone.toISOString()\n }\n\n return date\n }, [timezone, date, userTimezone])\n\n const onChangeDate = useCallback(\n (incomingDate: Date) => {\n if (timezone && incomingDate) {\n // Create TZDate instances for the selected timezone\n const tzDateWithUTC = TZDate.tz(timezone)\n\n // Creates a TZDate instance for the user's timezone — this is default behaviour of TZDate as it wraps the Date constructor\n const dateToUserTz = new TZDate(incomingDate)\n\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(dateToUserTz, tzDateWithUTC)\n\n setDate(dateWithTimezone || null)\n } else {\n setDate(incomingDate || null)\n }\n },\n [setDate, timezone],\n )\n\n React.useEffect(() => {\n if (!upcoming) {\n const fetchInitialUpcoming = async () => {\n await fetchUpcoming()\n }\n\n void fetchInitialUpcoming()\n }\n }, [upcoming, fetchUpcoming])\n\n const minTime = useMemo(() => {\n if (date && isToday(date)) {\n return new Date()\n }\n\n return startOfDay(new Date())\n }, [date])\n\n return (\n <Drawer\n className={baseClass}\n gutter={false}\n Header={\n <div className={`${baseClass}__drawer-header`}>\n <h2 title={modalTitle}>{modalTitle}</h2>\n <DrawerCloseButton onClick={() => toggleModal(slug)} />\n </div>\n }\n slug={slug}\n >\n <Gutter className={`${baseClass}__scheduler`}>\n <FieldLabel label={t('version:type')} required />\n <ul className={`${baseClass}__type`}>\n <li>\n <Radio\n id={`${slug}-type`}\n isSelected={type === 'publish'}\n onChange={() => setType('publish')}\n option={{ label: t('version:publish'), value: 'publish' }}\n path={`${slug}-type`}\n readOnly={processing}\n />\n </li>\n <li>\n <Radio\n id={`${slug}-type`}\n isSelected={type === 'unpublish'}\n onChange={() => setType('unpublish')}\n option={{ label: t('version:unpublish'), value: 'unpublish' }}\n path={`${slug}-type`}\n readOnly={processing}\n />\n </li>\n </ul>\n <br />\n <FieldLabel label={t('general:time')} path={'time'} required />\n <DatePickerField\n id=\"time\"\n maxTime={endOfToday()}\n minDate={new Date()}\n minTime={minTime}\n onChange={(e) => onChangeDate(e)}\n pickerAppearance=\"dayAndTime\"\n readOnly={processing}\n timeFormat={schedulePublishConfig?.timeFormat}\n timeIntervals={schedulePublishConfig?.timeIntervals ?? 5}\n value={displayedValue}\n />\n {supportedTimezones.length > 0 && (\n <TimezonePicker\n id={`timezone-picker`}\n onChange={setTimezone}\n options={supportedTimezones}\n selectedTimezone={timezone}\n />\n )}\n <br />\n {localeOptions.length > 0 && type === 'publish' && (\n <React.Fragment>\n <FieldLabel label={t('localization:localeToPublish')} />\n <ReactSelect\n onChange={(e) => setLocale(e as { label: string; value: string })}\n options={localeOptions}\n value={locale}\n />\n <br />\n </React.Fragment>\n )}\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"primary\"\n disabled={processing}\n id=\"scheduled-publish-save\"\n onClick={handleSave}\n type=\"button\"\n >\n {t('general:save')}\n </Button>\n {processing ? <span>{t('general:saving')}</span> : null}\n </div>\n </Gutter>\n <Gutter className={`${baseClass}__upcoming`}>\n <h4>{t('general:upcomingEvents')}</h4>\n {!upcoming && <ShimmerEffect />}\n {upcoming?.length === 0 && (\n <Banner type=\"info\">{t('general:noUpcomingEventsScheduled')}</Banner>\n )}\n {upcoming?.length > 0 && (\n <Table appearance=\"condensed\" columns={upcomingColumns} data={upcoming} />\n )}\n </Gutter>\n </Drawer>\n )\n}\n"],"mappings":"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","ignoreList":[]}