@payloadcms/ui 3.34.0-canary.5 → 3.34.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.
Files changed (58) hide show
  1. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts +2 -0
  2. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  3. package/dist/elements/PublishButton/ScheduleDrawer/index.js +5 -3
  4. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  5. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  6. package/dist/elements/PublishButton/index.js +127 -302
  7. package/dist/elements/PublishButton/index.js.map +1 -1
  8. package/dist/elements/Table/OrderableTable.js +0 -1
  9. package/dist/elements/Table/OrderableTable.js.map +1 -1
  10. package/dist/elements/Table/index.d.ts.map +1 -1
  11. package/dist/elements/Table/index.js +1 -1
  12. package/dist/elements/Table/index.js.map +1 -1
  13. package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js.map +1 -1
  14. package/dist/elements/WhereBuilder/Condition/Text/index.d.ts.map +1 -1
  15. package/dist/elements/WhereBuilder/Condition/Text/index.js +102 -17
  16. package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
  17. package/dist/elements/WhereBuilder/Condition/Text/types.d.ts +1 -1
  18. package/dist/elements/WhereBuilder/Condition/Text/types.d.ts.map +1 -1
  19. package/dist/elements/WhereBuilder/Condition/Text/types.js.map +1 -1
  20. package/dist/exports/client/index.d.ts +3 -0
  21. package/dist/exports/client/index.d.ts.map +1 -1
  22. package/dist/exports/client/index.js +23 -23
  23. package/dist/exports/client/index.js.map +4 -4
  24. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  25. package/dist/forms/Form/fieldReducer.js +16 -0
  26. package/dist/forms/Form/fieldReducer.js.map +1 -1
  27. package/dist/forms/Form/index.d.ts.map +1 -1
  28. package/dist/forms/Form/index.js +37 -54
  29. package/dist/forms/Form/index.js.map +1 -1
  30. package/dist/forms/Form/mergeServerFormState.d.ts +8 -9
  31. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  32. package/dist/forms/Form/mergeServerFormState.js +50 -101
  33. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  34. package/dist/forms/Form/types.d.ts +7 -1
  35. package/dist/forms/Form/types.d.ts.map +1 -1
  36. package/dist/forms/Form/types.js.map +1 -1
  37. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  38. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +16 -5
  39. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  40. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  41. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  42. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  43. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  44. package/dist/forms/fieldSchemasToFormState/renderField.js +1 -1
  45. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  46. package/dist/styles.css +1 -1
  47. package/dist/utilities/renderTable.d.ts.map +1 -1
  48. package/dist/utilities/renderTable.js +1 -5
  49. package/dist/utilities/renderTable.js.map +1 -1
  50. package/package.json +4 -4
  51. package/dist/forms/Form/mergeErrorPaths.d.ts +0 -5
  52. package/dist/forms/Form/mergeErrorPaths.d.ts.map +0 -1
  53. package/dist/forms/Form/mergeErrorPaths.js +0 -30
  54. package/dist/forms/Form/mergeErrorPaths.js.map +0 -1
  55. package/dist/utilities/arraysHaveSameStrings.d.ts +0 -2
  56. package/dist/utilities/arraysHaveSameStrings.d.ts.map +0 -1
  57. package/dist/utilities/arraysHaveSameStrings.js +0 -17
  58. 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":"AAUA,OAAO,KAA+B,MAAM,OAAO,CAAA;AAGnD,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAA;AAkB5D,OAAO,cAAc,CAAA;AAMrB,KAAK,KAAK,GAAG;IACX,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAOD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA8U1C,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;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
- timeIntervals: 5,
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,qBAkO3E"}
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,qBAqO3E"}
@@ -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(t0) {
20
- const $ = _c(74);
21
- const {
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,146 @@ export function PublishButton(t0) {
53
50
  const drawerSlug = `schedule-publish-${id}`;
54
51
  const {
55
52
  localization,
56
- routes: t1,
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
- let t2;
66
- if ($[0] !== labelProp || $[1] !== t) {
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
- let t4;
79
- if ($[3] !== collectionSlug || $[4] !== getEntityConfig) {
80
- t4 = getEntityConfig({
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
- let t4;
94
- if ($[6] !== getEntityConfig || $[7] !== globalSlug) {
95
- t4 = getEntityConfig({
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
- t3 = undefined;
108
- }
109
- const entityConfig = t3;
73
+ }, [collectionSlug, globalSlug, getEntityConfig]);
110
74
  const hasNewerVersions = unpublishedVersionCount > 0;
111
- const canPublish = hasPublishPermission && (modified || hasNewerVersions || !hasPublishedDoc) && uploadStatus !== "uploading";
112
- const scheduledPublishEnabled = typeof entityConfig?.versions?.drafts === "object" && entityConfig?.versions?.drafts.schedulePublish;
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);
113
78
  const canSchedulePublish = Boolean(scheduledPublishEnabled && hasPublishPermission && (globalSlug || collectionSlug && id) && !modified);
114
79
  const operation = useOperation();
115
- const disabled = operation === "update" && !modified;
116
- let t4;
117
- if ($[9] !== api || $[10] !== collectionSlug || $[11] !== disabled || $[12] !== globalSlug || $[13] !== id || $[14] !== localeCode || $[15] !== serverURL || $[16] !== submit) {
118
- t4 = async () => {
119
- if (disabled) {
120
- return;
121
- }
122
- const search = `?locale=${localeCode}&depth=0&fallback-locale=null&draft=true`;
123
- let action;
124
- let method = "POST";
125
- if (collectionSlug) {
126
- action = `${serverURL}${api}/${collectionSlug}${id ? `/${id}` : ""}${search}`;
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;
80
+ const disabled = operation === 'update' && !modified;
81
+ const saveDraft = useCallback(async () => {
82
+ if (disabled) {
83
+ return;
84
+ }
85
+ const search = `?locale=${localeCode}&depth=0&fallback-locale=null&draft=true`;
86
+ let action;
87
+ let method = 'POST';
88
+ if (collectionSlug) {
89
+ action = `${serverURL}${api}/${collectionSlug}${id ? `/${id}` : ''}${search}`;
90
+ if (id) {
91
+ method = 'PATCH';
221
92
  }
222
- const params = qs.stringify({
223
- publishSpecificLocale: locale
224
- });
225
- const action_0 = `${serverURL}${api}${globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}/${id ? `${"/" + id}` : ""}`}${params ? "?" + params : ""}`;
226
- submit({
227
- action: action_0,
228
- overrides: {
229
- _status: "published"
230
- }
231
- });
232
- setHasPublishedDoc(true);
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
93
+ }
94
+ if (globalSlug) {
95
+ action = `${serverURL}${api}/globals/${globalSlug}${search}`;
96
+ }
97
+ await submit({
98
+ action,
99
+ method,
100
+ overrides: {
101
+ _status: 'draft'
102
+ },
103
+ skipValidation: true
275
104
  });
276
- $[47] = activeLocaleLabel;
277
- $[48] = label;
278
- $[49] = publishAll;
279
- $[50] = t;
280
- $[51] = t12;
281
- } else {
282
- t12 = $[51];
283
- }
284
- const defaultLabel = t12;
285
- let t13;
286
- if ($[52] !== activeLocale || $[53] !== publish || $[54] !== publishAll || $[55] !== publishSpecificLocale) {
287
- t13 = publishAll ? () => publishSpecificLocale(activeLocale.code) : publish;
288
- $[52] = activeLocale;
289
- $[53] = publish;
290
- $[54] = publishAll;
291
- $[55] = publishSpecificLocale;
292
- $[56] = t13;
293
- } else {
294
- t13 = $[56];
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;
105
+ }, [submit, collectionSlug, globalSlug, serverURL, api, localeCode, id, disabled]);
106
+ useHotkey({
107
+ cmdCtrlKey: true,
108
+ editDepth,
109
+ keyCodes: ['s']
110
+ }, e => {
111
+ e.preventDefault();
112
+ e.stopPropagation();
113
+ if (saveDraft && docConfig.versions?.drafts && docConfig.versions?.drafts?.autosave) {
114
+ void saveDraft();
115
+ }
116
+ });
117
+ const publish = useCallback(() => {
118
+ if (uploadStatus === 'uploading') {
119
+ return;
120
+ }
121
+ void submit({
122
+ overrides: {
123
+ _status: 'published'
308
124
  }
309
- t14 = _jsxs(React.Fragment, {
310
- children: [_jsx(FormSubmit, {
311
- buttonId: "action-save",
312
- disabled: !canPublish,
313
- enableSubMenu: canSchedulePublish,
314
- onClick: defaultPublish,
315
- size: "medium",
316
- SubMenuPopupContent: localization || canSchedulePublish ? t16 => {
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
- });
125
+ });
126
+ setUnpublishedVersionCount(0);
127
+ setMostRecentVersionIsAutosaved(false);
128
+ setHasPublishedDoc(true);
129
+ }, [setHasPublishedDoc, submit, setUnpublishedVersionCount, uploadStatus, setMostRecentVersionIsAutosaved]);
130
+ const publishSpecificLocale = useCallback(locale => {
131
+ if (uploadStatus === 'uploading') {
132
+ return;
343
133
  }
344
- $[57] = activeLocaleLabel;
345
- $[58] = canPublish;
346
- $[59] = canSchedulePublish;
347
- $[60] = defaultLabel;
348
- $[61] = defaultPublish;
349
- $[62] = drawerSlug;
350
- $[63] = hasNewerVersions;
351
- $[64] = hasPublishPermission;
352
- $[65] = isModalOpen;
353
- $[66] = label;
354
- $[67] = localization;
355
- $[68] = publishAll;
356
- $[69] = secondaryPublish;
357
- $[70] = t;
358
- $[71] = toggleModal;
359
- $[72] = t14;
360
- $[73] = t15;
361
- } else {
362
- t14 = $[72];
363
- t15 = $[73];
364
- }
365
- if (t15 !== Symbol.for("react.early_return_sentinel")) {
366
- return t15;
134
+ const params = qs.stringify({
135
+ publishSpecificLocale: locale
136
+ });
137
+ const action_0 = `${serverURL}${api}${globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}/${id ? `${'/' + id}` : ''}`}${params ? '?' + params : ''}`;
138
+ void submit({
139
+ action: action_0,
140
+ overrides: {
141
+ _status: 'published'
142
+ }
143
+ });
144
+ setHasPublishedDoc(true);
145
+ }, [api, collectionSlug, globalSlug, id, serverURL, setHasPublishedDoc, submit, uploadStatus]);
146
+ const publishAll = !localization || localization && localization.defaultLocalePublishOption !== 'active';
147
+ const activeLocale = localization && localization?.locales.find(locale_0 => typeof locale_0 === 'string' ? locale_0 === localeCode : locale_0.code === localeCode);
148
+ const activeLocaleLabel = activeLocale && (typeof activeLocale.label === 'string' ? activeLocale.label : activeLocale.label?.[localeCode] ?? undefined);
149
+ const defaultPublish = publishAll ? publish : () => publishSpecificLocale(activeLocale.code);
150
+ const defaultLabel = publishAll ? label : t('version:publishIn', {
151
+ locale: activeLocaleLabel
152
+ });
153
+ const secondaryPublish = publishAll ? () => publishSpecificLocale(activeLocale.code) : publish;
154
+ const secondaryLabel = publishAll ? t('version:publishIn', {
155
+ locale: activeLocaleLabel
156
+ }) : t('version:publishAllLocales');
157
+ if (!hasPublishPermission) {
158
+ return null;
367
159
  }
368
- return t14;
160
+ return /*#__PURE__*/_jsxs(React.Fragment, {
161
+ children: [/*#__PURE__*/_jsx(FormSubmit, {
162
+ buttonId: "action-save",
163
+ disabled: !canPublish,
164
+ enableSubMenu: canSchedulePublish,
165
+ onClick: defaultPublish,
166
+ size: "medium",
167
+ SubMenuPopupContent: localization || canSchedulePublish ? ({
168
+ close
169
+ }) => {
170
+ return /*#__PURE__*/_jsxs(React.Fragment, {
171
+ children: [canSchedulePublish && /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
172
+ children: /*#__PURE__*/_jsx(PopupList.Button, {
173
+ id: "schedule-publish",
174
+ onClick: () => [toggleModal(drawerSlug), close()],
175
+ children: t('version:schedulePublish')
176
+ })
177
+ }, "schedule-publish"), localization && canPublish && /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
178
+ children: /*#__PURE__*/_jsx(PopupList.Button, {
179
+ id: "publish-locale",
180
+ onClick: secondaryPublish,
181
+ children: secondaryLabel
182
+ })
183
+ })]
184
+ });
185
+ } : undefined,
186
+ type: "button",
187
+ children: localization ? defaultLabel : label
188
+ }), canSchedulePublish && isModalOpen(drawerSlug) && /*#__PURE__*/_jsx(ScheduleDrawer, {
189
+ defaultType: !hasNewerVersions ? 'unpublish' : 'publish',
190
+ schedulePublishConfig: typeof schedulePublish === 'object' && schedulePublish,
191
+ slug: drawerSlug
192
+ })]
193
+ });
369
194
  }
370
195
  //# sourceMappingURL=index.js.map