@payloadcms/ui 3.74.0 → 3.75.0-canary.0
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/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js +1 -4
- package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +5 -6
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/exports/client/index.js +12 -12
- package/dist/exports/client/index.js.map +3 -3
- package/dist/providers/ServerFunctions/index.d.ts +1 -2
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js +0 -1
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/utilities/buildTableState.js +3 -4
- package/dist/utilities/buildTableState.js.map +1 -1
- package/dist/utilities/schedulePublishHandler.d.ts +4 -10
- package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
- package/dist/utilities/schedulePublishHandler.js +5 -4
- package/dist/utilities/schedulePublishHandler.js.map +1 -1
- package/package.json +5 -5
|
@@ -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;
|
|
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
|
|
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","
|
|
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/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,
|
|
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,
|
|
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
|
|
182
|
+
let localeToPublish;
|
|
184
183
|
if (typeof locale === 'object' && locale.value !== 'all' && type === 'publish') {
|
|
185
|
-
|
|
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
|
-
|
|
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":[]}
|