@payloadcms/ui 3.34.0-canary.5 → 3.35.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/PublishButton/ScheduleDrawer/index.d.ts +2 -0
- package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +5 -3
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +130 -303
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
- package/dist/elements/Table/OrderableTable.js +5 -2
- package/dist/elements/Table/OrderableTable.js.map +1 -1
- package/dist/elements/Table/index.d.ts.map +1 -1
- package/dist/elements/Table/index.js +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/index.js +102 -17
- package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/types.d.ts +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/types.js.map +1 -1
- package/dist/exports/client/index.d.ts +3 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +23 -23
- package/dist/exports/client/index.js.map +4 -4
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +16 -0
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +37 -54
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/mergeServerFormState.d.ts +8 -9
- package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
- package/dist/forms/Form/mergeServerFormState.js +50 -101
- package/dist/forms/Form/mergeServerFormState.js.map +1 -1
- package/dist/forms/Form/types.d.ts +7 -1
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +16 -5
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/buildTableState.js +1 -1
- package/dist/utilities/buildTableState.js.map +1 -1
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js +1 -5
- package/dist/utilities/renderTable.js.map +1 -1
- package/package.json +5 -5
- package/dist/forms/Form/mergeErrorPaths.d.ts +0 -5
- package/dist/forms/Form/mergeErrorPaths.d.ts.map +0 -1
- package/dist/forms/Form/mergeErrorPaths.js +0 -30
- package/dist/forms/Form/mergeErrorPaths.js.map +0 -1
- package/dist/utilities/arraysHaveSameStrings.d.ts +0 -2
- package/dist/utilities/arraysHaveSameStrings.d.ts.map +0 -1
- package/dist/utilities/arraysHaveSameStrings.js +0 -17
- package/dist/utilities/arraysHaveSameStrings.js.map +0 -1
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import type { SchedulePublish } from 'payload';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import type { PublishType } from './types.js';
|
|
3
4
|
import './index.scss';
|
|
4
5
|
type Props = {
|
|
5
6
|
defaultType?: PublishType;
|
|
7
|
+
schedulePublishConfig?: SchedulePublish;
|
|
6
8
|
slug: string;
|
|
7
9
|
};
|
|
8
10
|
export declare const ScheduleDrawer: React.FC<Props>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/PublishButton/ScheduleDrawer/index.tsx"],"names":[],"mappings":"
|
|
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;AAO7D,OAAO,KAA+B,MAAM,OAAO,CAAA;AAGnD,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAA;AAiB5D,OAAO,cAAc,CAAA;AAOrB,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,CA+U1C,CAAA"}
|
|
@@ -23,8 +23,8 @@ import { Drawer } from '../../Drawer/index.js';
|
|
|
23
23
|
import { Gutter } from '../../Gutter/index.js';
|
|
24
24
|
import { ReactSelect } from '../../ReactSelect/index.js';
|
|
25
25
|
import { ShimmerEffect } from '../../ShimmerEffect/index.js';
|
|
26
|
-
import { Table } from '../../Table/index.js';
|
|
27
26
|
import './index.scss';
|
|
27
|
+
import { Table } from '../../Table/index.js';
|
|
28
28
|
import { TimezonePicker } from '../../TimezonePicker/index.js';
|
|
29
29
|
import { buildUpcomingColumns } from './buildUpcomingColumns.js';
|
|
30
30
|
const baseClass = 'schedule-publish';
|
|
@@ -34,7 +34,8 @@ const defaultLocaleOption = {
|
|
|
34
34
|
};
|
|
35
35
|
export const ScheduleDrawer = ({
|
|
36
36
|
slug,
|
|
37
|
-
defaultType
|
|
37
|
+
defaultType,
|
|
38
|
+
schedulePublishConfig
|
|
38
39
|
}) => {
|
|
39
40
|
const {
|
|
40
41
|
toggleModal
|
|
@@ -287,7 +288,8 @@ export const ScheduleDrawer = ({
|
|
|
287
288
|
onChange: e => onChangeDate(e),
|
|
288
289
|
pickerAppearance: "dayAndTime",
|
|
289
290
|
readOnly: processing,
|
|
290
|
-
|
|
291
|
+
timeFormat: schedulePublishConfig?.timeFormat,
|
|
292
|
+
timeIntervals: schedulePublishConfig?.timeIntervals ?? 5,
|
|
291
293
|
value: displayedValue
|
|
292
294
|
}), supportedTimezones.length > 0 && /*#__PURE__*/_jsx(TimezonePicker, {
|
|
293
295
|
id: `timezone-picker`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["TZDateMini","TZDate","useModal","getTranslation","transpose","qs","React","useCallback","useMemo","toast","FieldLabel","Radio","useConfig","useDocumentInfo","useServerFunctions","useTranslation","requests","Banner","DrawerCloseButton","Button","DatePickerField","Drawer","Gutter","ReactSelect","ShimmerEffect","Table","TimezonePicker","buildUpcomingColumns","baseClass","defaultLocaleOption","label","value","ScheduleDrawer","slug","defaultType","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","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","_jsxs","className","gutter","Header","_jsx","onClick","required","isSelected","onChange","option","path","readOnly","minDate","e","pickerAppearance","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, 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 { transpose } from 'date-fns/transpose'\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 { 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 { ReactSelect } from '../../ReactSelect/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { Table } from '../../Table/index.js'\nimport './index.scss'\nimport { TimezonePicker } from '../../TimezonePicker/index.js'\nimport { buildUpcomingColumns } from './buildUpcomingColumns.js'\n\nconst baseClass = 'schedule-publish'\n\ntype Props = {\n defaultType?: PublishType\n slug: string\n}\n\nconst defaultLocaleOption = {\n label: 'All',\n value: 'all',\n}\n\nexport const ScheduleDrawer: React.FC<Props> = ({ slug, defaultType }) => {\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, title } = useDocumentInfo()\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(`${serverURL}${api}/payload-jobs`, {\n body: qs.stringify(query),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-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 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 minDate={new Date()}\n onChange={(e) => onChangeDate(e)}\n pickerAppearance=\"dayAndTime\"\n readOnly={processing}\n 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","transpose","qs","React","useCallback","useMemo","toast","FieldLabel","Radio","useConfig","useDocumentInfo","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","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","_jsxs","className","gutter","Header","_jsx","onClick","required","isSelected","onChange","option","path","readOnly","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 { transpose } from 'date-fns/transpose'\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 { 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 { ReactSelect } from '../../ReactSelect/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport './index.scss'\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, title } = useDocumentInfo()\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(`${serverURL}${api}/payload-jobs`, {\n body: qs.stringify(query),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-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 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 minDate={new Date()}\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PublishButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAIvD,OAAO,KAAsB,MAAM,OAAO,CAAA;AAc1C,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PublishButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAIvD,OAAO,KAAsB,MAAM,OAAO,CAAA;AAc1C,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,wBAAwB,qBA0O3E"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { c as _c } from "react/compiler-runtime";
|
|
4
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
4
|
import { useModal } from '@faceless-ui/modal';
|
|
6
5
|
import * as qs from 'qs-esm';
|
|
@@ -16,11 +15,9 @@ import { useOperation } from '../../providers/Operation/index.js';
|
|
|
16
15
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
17
16
|
import { PopupList } from '../Popup/index.js';
|
|
18
17
|
import { ScheduleDrawer } from './ScheduleDrawer/index.js';
|
|
19
|
-
export function PublishButton(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
label: labelProp
|
|
23
|
-
} = t0;
|
|
18
|
+
export function PublishButton({
|
|
19
|
+
label: labelProp
|
|
20
|
+
}) {
|
|
24
21
|
const {
|
|
25
22
|
id,
|
|
26
23
|
collectionSlug,
|
|
@@ -53,318 +50,148 @@ export function PublishButton(t0) {
|
|
|
53
50
|
const drawerSlug = `schedule-publish-${id}`;
|
|
54
51
|
const {
|
|
55
52
|
localization,
|
|
56
|
-
routes:
|
|
53
|
+
routes: {
|
|
54
|
+
api
|
|
55
|
+
},
|
|
57
56
|
serverURL
|
|
58
57
|
} = config;
|
|
59
|
-
const {
|
|
60
|
-
api
|
|
61
|
-
} = t1;
|
|
62
58
|
const {
|
|
63
59
|
t
|
|
64
60
|
} = useTranslation();
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
t2 = labelProp || t("version:publishChanges");
|
|
68
|
-
$[0] = labelProp;
|
|
69
|
-
$[1] = t;
|
|
70
|
-
$[2] = t2;
|
|
71
|
-
} else {
|
|
72
|
-
t2 = $[2];
|
|
73
|
-
}
|
|
74
|
-
const label = t2;
|
|
75
|
-
let t3;
|
|
76
|
-
bb0: {
|
|
61
|
+
const label = labelProp || t('version:publishChanges');
|
|
62
|
+
const entityConfig = React.useMemo(() => {
|
|
77
63
|
if (collectionSlug) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
collectionSlug
|
|
82
|
-
});
|
|
83
|
-
$[3] = collectionSlug;
|
|
84
|
-
$[4] = getEntityConfig;
|
|
85
|
-
$[5] = t4;
|
|
86
|
-
} else {
|
|
87
|
-
t4 = $[5];
|
|
88
|
-
}
|
|
89
|
-
t3 = t4;
|
|
90
|
-
break bb0;
|
|
64
|
+
return getEntityConfig({
|
|
65
|
+
collectionSlug
|
|
66
|
+
});
|
|
91
67
|
}
|
|
92
68
|
if (globalSlug) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
globalSlug
|
|
97
|
-
});
|
|
98
|
-
$[6] = getEntityConfig;
|
|
99
|
-
$[7] = globalSlug;
|
|
100
|
-
$[8] = t4;
|
|
101
|
-
} else {
|
|
102
|
-
t4 = $[8];
|
|
103
|
-
}
|
|
104
|
-
t3 = t4;
|
|
105
|
-
break bb0;
|
|
69
|
+
return getEntityConfig({
|
|
70
|
+
globalSlug
|
|
71
|
+
});
|
|
106
72
|
}
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
const entityConfig = t3;
|
|
73
|
+
}, [collectionSlug, globalSlug, getEntityConfig]);
|
|
110
74
|
const hasNewerVersions = unpublishedVersionCount > 0;
|
|
111
|
-
const
|
|
112
|
-
const
|
|
113
|
-
const
|
|
75
|
+
const schedulePublish = typeof entityConfig?.versions?.drafts === 'object' && entityConfig?.versions?.drafts.schedulePublish;
|
|
76
|
+
const canPublish = hasPublishPermission && (modified || hasNewerVersions || !hasPublishedDoc) && uploadStatus !== 'uploading';
|
|
77
|
+
const scheduledPublishEnabled = Boolean(schedulePublish);
|
|
78
|
+
// If autosave is enabled the modified will always be true so only conditionally check on modified state
|
|
79
|
+
const hasAutosave = Boolean(typeof entityConfig?.versions?.drafts === 'object' && entityConfig?.versions?.drafts.autosave);
|
|
80
|
+
const canSchedulePublish = Boolean(scheduledPublishEnabled && hasPublishPermission && (globalSlug || collectionSlug && id) && (hasAutosave || !modified));
|
|
114
81
|
const operation = useOperation();
|
|
115
|
-
const disabled = operation ===
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if (
|
|
126
|
-
|
|
127
|
-
if (id) {
|
|
128
|
-
method = "PATCH";
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
if (globalSlug) {
|
|
132
|
-
action = `${serverURL}${api}/globals/${globalSlug}${search}`;
|
|
133
|
-
}
|
|
134
|
-
await submit({
|
|
135
|
-
action,
|
|
136
|
-
method,
|
|
137
|
-
overrides: {
|
|
138
|
-
_status: "draft"
|
|
139
|
-
},
|
|
140
|
-
skipValidation: true
|
|
141
|
-
});
|
|
142
|
-
};
|
|
143
|
-
$[9] = api;
|
|
144
|
-
$[10] = collectionSlug;
|
|
145
|
-
$[11] = disabled;
|
|
146
|
-
$[12] = globalSlug;
|
|
147
|
-
$[13] = id;
|
|
148
|
-
$[14] = localeCode;
|
|
149
|
-
$[15] = serverURL;
|
|
150
|
-
$[16] = submit;
|
|
151
|
-
$[17] = t4;
|
|
152
|
-
} else {
|
|
153
|
-
t4 = $[17];
|
|
154
|
-
}
|
|
155
|
-
const saveDraft = t4;
|
|
156
|
-
let t5;
|
|
157
|
-
if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
|
|
158
|
-
t5 = ["s"];
|
|
159
|
-
$[18] = t5;
|
|
160
|
-
} else {
|
|
161
|
-
t5 = $[18];
|
|
162
|
-
}
|
|
163
|
-
let t6;
|
|
164
|
-
if ($[19] !== editDepth) {
|
|
165
|
-
t6 = {
|
|
166
|
-
cmdCtrlKey: true,
|
|
167
|
-
editDepth,
|
|
168
|
-
keyCodes: t5
|
|
169
|
-
};
|
|
170
|
-
$[19] = editDepth;
|
|
171
|
-
$[20] = t6;
|
|
172
|
-
} else {
|
|
173
|
-
t6 = $[20];
|
|
174
|
-
}
|
|
175
|
-
let t7;
|
|
176
|
-
if ($[21] !== docConfig || $[22] !== saveDraft) {
|
|
177
|
-
t7 = e => {
|
|
178
|
-
e.preventDefault();
|
|
179
|
-
e.stopPropagation();
|
|
180
|
-
if (saveDraft && docConfig.versions?.drafts && docConfig.versions?.drafts?.autosave) {
|
|
181
|
-
saveDraft();
|
|
182
|
-
}
|
|
183
|
-
};
|
|
184
|
-
$[21] = docConfig;
|
|
185
|
-
$[22] = saveDraft;
|
|
186
|
-
$[23] = t7;
|
|
187
|
-
} else {
|
|
188
|
-
t7 = $[23];
|
|
189
|
-
}
|
|
190
|
-
useHotkey(t6, t7);
|
|
191
|
-
let t8;
|
|
192
|
-
if ($[24] !== setHasPublishedDoc || $[25] !== setMostRecentVersionIsAutosaved || $[26] !== setUnpublishedVersionCount || $[27] !== submit || $[28] !== uploadStatus) {
|
|
193
|
-
t8 = () => {
|
|
194
|
-
if (uploadStatus === "uploading") {
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
submit({
|
|
198
|
-
overrides: {
|
|
199
|
-
_status: "published"
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
setUnpublishedVersionCount(0);
|
|
203
|
-
setMostRecentVersionIsAutosaved(false);
|
|
204
|
-
setHasPublishedDoc(true);
|
|
205
|
-
};
|
|
206
|
-
$[24] = setHasPublishedDoc;
|
|
207
|
-
$[25] = setMostRecentVersionIsAutosaved;
|
|
208
|
-
$[26] = setUnpublishedVersionCount;
|
|
209
|
-
$[27] = submit;
|
|
210
|
-
$[28] = uploadStatus;
|
|
211
|
-
$[29] = t8;
|
|
212
|
-
} else {
|
|
213
|
-
t8 = $[29];
|
|
214
|
-
}
|
|
215
|
-
const publish = t8;
|
|
216
|
-
let t9;
|
|
217
|
-
if ($[30] !== api || $[31] !== collectionSlug || $[32] !== globalSlug || $[33] !== id || $[34] !== serverURL || $[35] !== setHasPublishedDoc || $[36] !== submit || $[37] !== uploadStatus) {
|
|
218
|
-
t9 = locale => {
|
|
219
|
-
if (uploadStatus === "uploading") {
|
|
220
|
-
return;
|
|
82
|
+
const disabled = operation === 'update' && !modified;
|
|
83
|
+
const saveDraft = useCallback(async () => {
|
|
84
|
+
if (disabled) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const search = `?locale=${localeCode}&depth=0&fallback-locale=null&draft=true`;
|
|
88
|
+
let action;
|
|
89
|
+
let method = 'POST';
|
|
90
|
+
if (collectionSlug) {
|
|
91
|
+
action = `${serverURL}${api}/${collectionSlug}${id ? `/${id}` : ''}${search}`;
|
|
92
|
+
if (id) {
|
|
93
|
+
method = 'PATCH';
|
|
221
94
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
};
|
|
234
|
-
$[30] = api;
|
|
235
|
-
$[31] = collectionSlug;
|
|
236
|
-
$[32] = globalSlug;
|
|
237
|
-
$[33] = id;
|
|
238
|
-
$[34] = serverURL;
|
|
239
|
-
$[35] = setHasPublishedDoc;
|
|
240
|
-
$[36] = submit;
|
|
241
|
-
$[37] = uploadStatus;
|
|
242
|
-
$[38] = t9;
|
|
243
|
-
} else {
|
|
244
|
-
t9 = $[38];
|
|
245
|
-
}
|
|
246
|
-
const publishSpecificLocale = t9;
|
|
247
|
-
const publishAll = !localization || localization && localization.defaultLocalePublishOption !== "active";
|
|
248
|
-
let t10;
|
|
249
|
-
if ($[39] !== localeCode || $[40] !== localization) {
|
|
250
|
-
t10 = localization && localization?.locales.find(locale_0 => typeof locale_0 === "string" ? locale_0 === localeCode : locale_0.code === localeCode);
|
|
251
|
-
$[39] = localeCode;
|
|
252
|
-
$[40] = localization;
|
|
253
|
-
$[41] = t10;
|
|
254
|
-
} else {
|
|
255
|
-
t10 = $[41];
|
|
256
|
-
}
|
|
257
|
-
const activeLocale = t10;
|
|
258
|
-
const activeLocaleLabel = activeLocale && (typeof activeLocale.label === "string" ? activeLocale.label : activeLocale.label?.[localeCode] ?? undefined);
|
|
259
|
-
let t11;
|
|
260
|
-
if ($[42] !== activeLocale || $[43] !== publish || $[44] !== publishAll || $[45] !== publishSpecificLocale) {
|
|
261
|
-
t11 = publishAll ? publish : () => publishSpecificLocale(activeLocale.code);
|
|
262
|
-
$[42] = activeLocale;
|
|
263
|
-
$[43] = publish;
|
|
264
|
-
$[44] = publishAll;
|
|
265
|
-
$[45] = publishSpecificLocale;
|
|
266
|
-
$[46] = t11;
|
|
267
|
-
} else {
|
|
268
|
-
t11 = $[46];
|
|
269
|
-
}
|
|
270
|
-
const defaultPublish = t11;
|
|
271
|
-
let t12;
|
|
272
|
-
if ($[47] !== activeLocaleLabel || $[48] !== label || $[49] !== publishAll || $[50] !== t) {
|
|
273
|
-
t12 = publishAll ? label : t("version:publishIn", {
|
|
274
|
-
locale: activeLocaleLabel
|
|
95
|
+
}
|
|
96
|
+
if (globalSlug) {
|
|
97
|
+
action = `${serverURL}${api}/globals/${globalSlug}${search}`;
|
|
98
|
+
}
|
|
99
|
+
await submit({
|
|
100
|
+
action,
|
|
101
|
+
method,
|
|
102
|
+
overrides: {
|
|
103
|
+
_status: 'draft'
|
|
104
|
+
},
|
|
105
|
+
skipValidation: true
|
|
275
106
|
});
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
}
|
|
296
|
-
const secondaryPublish = t13;
|
|
297
|
-
let t14;
|
|
298
|
-
let t15;
|
|
299
|
-
if ($[57] !== activeLocaleLabel || $[58] !== canPublish || $[59] !== canSchedulePublish || $[60] !== defaultLabel || $[61] !== defaultPublish || $[62] !== drawerSlug || $[63] !== hasNewerVersions || $[64] !== hasPublishPermission || $[65] !== isModalOpen || $[66] !== label || $[67] !== localization || $[68] !== publishAll || $[69] !== secondaryPublish || $[70] !== t || $[71] !== toggleModal) {
|
|
300
|
-
t15 = Symbol.for("react.early_return_sentinel");
|
|
301
|
-
bb1: {
|
|
302
|
-
const secondaryLabel = publishAll ? t("version:publishIn", {
|
|
303
|
-
locale: activeLocaleLabel
|
|
304
|
-
}) : t("version:publishAllLocales");
|
|
305
|
-
if (!hasPublishPermission) {
|
|
306
|
-
t15 = null;
|
|
307
|
-
break bb1;
|
|
107
|
+
}, [submit, collectionSlug, globalSlug, serverURL, api, localeCode, id, disabled]);
|
|
108
|
+
useHotkey({
|
|
109
|
+
cmdCtrlKey: true,
|
|
110
|
+
editDepth,
|
|
111
|
+
keyCodes: ['s']
|
|
112
|
+
}, e => {
|
|
113
|
+
e.preventDefault();
|
|
114
|
+
e.stopPropagation();
|
|
115
|
+
if (saveDraft && docConfig.versions?.drafts && docConfig.versions?.drafts?.autosave) {
|
|
116
|
+
void saveDraft();
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
const publish = useCallback(() => {
|
|
120
|
+
if (uploadStatus === 'uploading') {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
void submit({
|
|
124
|
+
overrides: {
|
|
125
|
+
_status: 'published'
|
|
308
126
|
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
const {
|
|
318
|
-
close
|
|
319
|
-
} = t16;
|
|
320
|
-
return _jsxs(React.Fragment, {
|
|
321
|
-
children: [canSchedulePublish && _jsx(PopupList.ButtonGroup, {
|
|
322
|
-
children: _jsx(PopupList.Button, {
|
|
323
|
-
id: "schedule-publish",
|
|
324
|
-
onClick: () => [toggleModal(drawerSlug), close()],
|
|
325
|
-
children: t("version:schedulePublish")
|
|
326
|
-
})
|
|
327
|
-
}, "schedule-publish"), localization && canPublish && _jsx(PopupList.ButtonGroup, {
|
|
328
|
-
children: _jsx(PopupList.Button, {
|
|
329
|
-
id: "publish-locale",
|
|
330
|
-
onClick: secondaryPublish,
|
|
331
|
-
children: secondaryLabel
|
|
332
|
-
})
|
|
333
|
-
})]
|
|
334
|
-
});
|
|
335
|
-
} : undefined,
|
|
336
|
-
type: "button",
|
|
337
|
-
children: localization ? defaultLabel : label
|
|
338
|
-
}), canSchedulePublish && isModalOpen(drawerSlug) && _jsx(ScheduleDrawer, {
|
|
339
|
-
defaultType: !hasNewerVersions ? "unpublish" : "publish",
|
|
340
|
-
slug: drawerSlug
|
|
341
|
-
})]
|
|
342
|
-
});
|
|
127
|
+
});
|
|
128
|
+
setUnpublishedVersionCount(0);
|
|
129
|
+
setMostRecentVersionIsAutosaved(false);
|
|
130
|
+
setHasPublishedDoc(true);
|
|
131
|
+
}, [setHasPublishedDoc, submit, setUnpublishedVersionCount, uploadStatus, setMostRecentVersionIsAutosaved]);
|
|
132
|
+
const publishSpecificLocale = useCallback(locale => {
|
|
133
|
+
if (uploadStatus === 'uploading') {
|
|
134
|
+
return;
|
|
343
135
|
}
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
136
|
+
const params = qs.stringify({
|
|
137
|
+
publishSpecificLocale: locale
|
|
138
|
+
});
|
|
139
|
+
const action_0 = `${serverURL}${api}${globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}/${id ? `${'/' + id}` : ''}`}${params ? '?' + params : ''}`;
|
|
140
|
+
void submit({
|
|
141
|
+
action: action_0,
|
|
142
|
+
overrides: {
|
|
143
|
+
_status: 'published'
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
setHasPublishedDoc(true);
|
|
147
|
+
}, [api, collectionSlug, globalSlug, id, serverURL, setHasPublishedDoc, submit, uploadStatus]);
|
|
148
|
+
const publishAll = !localization || localization && localization.defaultLocalePublishOption !== 'active';
|
|
149
|
+
const activeLocale = localization && localization?.locales.find(locale_0 => typeof locale_0 === 'string' ? locale_0 === localeCode : locale_0.code === localeCode);
|
|
150
|
+
const activeLocaleLabel = activeLocale && (typeof activeLocale.label === 'string' ? activeLocale.label : activeLocale.label?.[localeCode] ?? undefined);
|
|
151
|
+
const defaultPublish = publishAll ? publish : () => publishSpecificLocale(activeLocale.code);
|
|
152
|
+
const defaultLabel = publishAll ? label : t('version:publishIn', {
|
|
153
|
+
locale: activeLocaleLabel
|
|
154
|
+
});
|
|
155
|
+
const secondaryPublish = publishAll ? () => publishSpecificLocale(activeLocale.code) : publish;
|
|
156
|
+
const secondaryLabel = publishAll ? t('version:publishIn', {
|
|
157
|
+
locale: activeLocaleLabel
|
|
158
|
+
}) : t('version:publishAllLocales');
|
|
159
|
+
if (!hasPublishPermission) {
|
|
160
|
+
return null;
|
|
367
161
|
}
|
|
368
|
-
return
|
|
162
|
+
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
163
|
+
children: [/*#__PURE__*/_jsx(FormSubmit, {
|
|
164
|
+
buttonId: "action-save",
|
|
165
|
+
disabled: !canPublish,
|
|
166
|
+
enableSubMenu: canSchedulePublish,
|
|
167
|
+
onClick: defaultPublish,
|
|
168
|
+
size: "medium",
|
|
169
|
+
SubMenuPopupContent: localization || canSchedulePublish ? ({
|
|
170
|
+
close
|
|
171
|
+
}) => {
|
|
172
|
+
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
173
|
+
children: [canSchedulePublish && /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
|
|
174
|
+
children: /*#__PURE__*/_jsx(PopupList.Button, {
|
|
175
|
+
id: "schedule-publish",
|
|
176
|
+
onClick: () => [toggleModal(drawerSlug), close()],
|
|
177
|
+
children: t('version:schedulePublish')
|
|
178
|
+
})
|
|
179
|
+
}, "schedule-publish"), localization && canPublish && /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
|
|
180
|
+
children: /*#__PURE__*/_jsx(PopupList.Button, {
|
|
181
|
+
id: "publish-locale",
|
|
182
|
+
onClick: secondaryPublish,
|
|
183
|
+
children: secondaryLabel
|
|
184
|
+
})
|
|
185
|
+
})]
|
|
186
|
+
});
|
|
187
|
+
} : undefined,
|
|
188
|
+
type: "button",
|
|
189
|
+
children: localization ? defaultLabel : label
|
|
190
|
+
}), canSchedulePublish && isModalOpen(drawerSlug) && /*#__PURE__*/_jsx(ScheduleDrawer, {
|
|
191
|
+
defaultType: !hasNewerVersions ? 'unpublish' : 'publish',
|
|
192
|
+
schedulePublishConfig: typeof schedulePublish === 'object' && schedulePublish,
|
|
193
|
+
slug: drawerSlug
|
|
194
|
+
})]
|
|
195
|
+
});
|
|
369
196
|
}
|
|
370
197
|
//# sourceMappingURL=index.js.map
|