diff --git a/docs/configuration/localization.mdx b/docs/configuration/localization.mdx
index 8a0163595..9174804a7 100644
--- a/docs/configuration/localization.mdx
+++ b/docs/configuration/localization.mdx
@@ -131,29 +131,6 @@ localization: {
Since the filtering happens at the root level of the application and its result is not calculated every time you navigate to a new page, you may want to call `router.refresh` in a custom component that watches when values that affect the result change. In the example above, you would want to do this when `supportedLocales` changes on the tenant document.
-## Experimental Options
-
-Experimental options are features that may not be fully stable and may change or be removed in future releases.
-
-These options can be enabled in your Payload Config under the `experimental` key. You can set them like this:
-
-```ts
-import { buildConfig } from 'payload'
-
-export default buildConfig({
- // ...
- experimental: {
- localizeStatus: true,
- },
-})
-```
-
-The following experimental options are available related to localization:
-
-| Option | Description |
-| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **`localizeStatus`** | **Boolean.** When `true`, shows document status per locale in the admin panel instead of always showing the latest overall status. Opt-in for backwards compatibility. Defaults to `false`. |
-
## Field Localization
Payload Localization works on a **field** level—not a document level. In addition to configuring the base Payload Config to support Localization, you need to specify each field that you would like to localize.
diff --git a/docs/configuration/overview.mdx b/docs/configuration/overview.mdx
index 6f62d6563..dd697723c 100644
--- a/docs/configuration/overview.mdx
+++ b/docs/configuration/overview.mdx
@@ -70,7 +70,6 @@ The following options are available:
| **`admin`** | The configuration options for the Admin Panel, including Custom Components, Live Preview, etc. [More details](../admin/overview#admin-options). |
| **`bin`** | Register custom bin scripts for Payload to execute. [More Details](#custom-bin-scripts). |
| **`editor`** | The Rich Text Editor which will be used by `richText` fields. [More details](../rich-text/overview). |
-| **`experimental`** | Configure experimental features for Payload. These may be unstable and may change or be removed in future releases. [More details](../experimental/overview). |
| **`db`** \* | The Database Adapter which will be used by Payload. [More details](../database/overview). |
| **`serverURL`** | A string used to define the absolute URL of your app. This includes the protocol, for example `https://example.com`. No paths allowed, only protocol, domain and (optionally) port. |
| **`collections`** | An array of Collections for Payload to manage. [More details](./collections). |
diff --git a/docs/experimental/overview.mdx b/docs/experimental/overview.mdx
deleted file mode 100644
index 57bb84699..000000000
--- a/docs/experimental/overview.mdx
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: Experimental Features
-label: Overview
-order: 10
-desc: Enable and configure experimental functionality within Payload. These features may be unstable and may change or be removed without notice.
-keywords: experimental, unstable, beta, preview, features, configuration, Payload, cms, headless, javascript, node, react, nextjs
----
-
-Experimental features allow you to try out new functionality before it becomes a stable part of Payload. These features may still be in active development, may have incomplete functionality, and can change or be removed in future releases without warning.
-
-## How It Works
-
-Experimental features are configured via the root-level `experimental` property in your [Payload Config](../configuration/overview). This property contains individual feature flags, each flag can be configured independently, allowing you to selectively opt into specific functionality.
-
-```ts
-import { buildConfig } from 'payload'
-
-const config = buildConfig({
- // ...
- experimental: {
- localizeStatus: true, // highlight-line
- },
-})
-```
-
-## Experimental Options
-
-The following options are available:
-
-| Option | Description |
-| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **`localizeStatus`** | **Boolean.** When `true`, shows document status per locale in the admin panel instead of always showing the latest overall status. Opt-in for backwards compatibility. Defaults to `false`. |
-
-This list may change without notice.
-
-## When to Use Experimental Features
-
-You might enable an experimental feature when:
-
-- You want early access to new capabilities before their stable release.
-- You can accept the risks of using potentially unstable functionality.
-- You are testing new features in a development or staging environment.
-- You wish to provide feedback to the Payload team on new functionality.
-
-If you are working on a production application, carefully evaluate whether the benefits outweigh the risks. For most stable applications, it is recommended to wait until the feature is officially released.
-
-
- Tip: To stay up to date on experimental features or share
- your feedback, visit the{' '}
-
- Payload GitHub Discussions
- {' '}
- or{' '}
-
- open an issue
-
- .
-
diff --git a/packages/db-mongodb/src/createGlobalVersion.ts b/packages/db-mongodb/src/createGlobalVersion.ts
index 0541ada01..c948881b5 100644
--- a/packages/db-mongodb/src/createGlobalVersion.ts
+++ b/packages/db-mongodb/src/createGlobalVersion.ts
@@ -12,7 +12,6 @@ export const createGlobalVersion: CreateGlobalVersion = async function createGlo
autosave,
createdAt,
globalSlug,
- localeStatus,
parent,
publishedLocale,
req,
@@ -34,7 +33,6 @@ export const createGlobalVersion: CreateGlobalVersion = async function createGlo
autosave,
createdAt,
latest: true,
- localeStatus,
parent,
publishedLocale,
snapshot,
diff --git a/packages/db-mongodb/src/createVersion.ts b/packages/db-mongodb/src/createVersion.ts
index a0af56ac5..a6a7b5c2c 100644
--- a/packages/db-mongodb/src/createVersion.ts
+++ b/packages/db-mongodb/src/createVersion.ts
@@ -12,7 +12,6 @@ export const createVersion: CreateVersion = async function createVersion(
autosave,
collectionSlug,
createdAt,
- localeStatus,
parent,
publishedLocale,
req,
@@ -38,7 +37,6 @@ export const createVersion: CreateVersion = async function createVersion(
autosave,
createdAt,
latest: true,
- localeStatus,
parent,
publishedLocale,
snapshot,
diff --git a/packages/db-mongodb/src/queryDrafts.ts b/packages/db-mongodb/src/queryDrafts.ts
index 62c6f9114..1dd0e84da 100644
--- a/packages/db-mongodb/src/queryDrafts.ts
+++ b/packages/db-mongodb/src/queryDrafts.ts
@@ -179,13 +179,6 @@ export const queryDrafts: QueryDrafts = async function queryDrafts(
for (let i = 0; i < result.docs.length; i++) {
const id = result.docs[i].parent
-
- const localeStatus = result.docs[i].localeStatus || {}
- if (locale && localeStatus[locale]) {
- result.docs[i].status = localeStatus[locale]
- result.docs[i].version._status = localeStatus[locale]
- }
-
result.docs[i] = result.docs[i].version ?? {}
result.docs[i].id = id
}
diff --git a/packages/drizzle/src/createGlobalVersion.ts b/packages/drizzle/src/createGlobalVersion.ts
index bb33fbe6d..5ac12fa8c 100644
--- a/packages/drizzle/src/createGlobalVersion.ts
+++ b/packages/drizzle/src/createGlobalVersion.ts
@@ -15,7 +15,6 @@ export async function createGlobalVersion(
autosave,
createdAt,
globalSlug,
- localeStatus,
publishedLocale,
req,
returning,
@@ -36,7 +35,6 @@ export async function createGlobalVersion(
autosave,
createdAt,
latest: true,
- localeStatus,
publishedLocale,
snapshot,
updatedAt,
diff --git a/packages/drizzle/src/createVersion.ts b/packages/drizzle/src/createVersion.ts
index 12c41dd0c..cb612b85b 100644
--- a/packages/drizzle/src/createVersion.ts
+++ b/packages/drizzle/src/createVersion.ts
@@ -15,7 +15,6 @@ export async function createVersion(
autosave,
collectionSlug,
createdAt,
- localeStatus,
parent,
publishedLocale,
req,
@@ -41,7 +40,6 @@ export async function createVersion(
autosave,
createdAt,
latest: true,
- localeStatus,
parent,
publishedLocale,
snapshot,
diff --git a/packages/drizzle/src/queryDrafts.ts b/packages/drizzle/src/queryDrafts.ts
index 4e066e670..474f3f2a4 100644
--- a/packages/drizzle/src/queryDrafts.ts
+++ b/packages/drizzle/src/queryDrafts.ts
@@ -36,17 +36,15 @@ export const queryDrafts: QueryDrafts = async function queryDrafts(
where: combinedWhere,
})
- for (let i = 0; i < result.docs.length; i++) {
- const id = result.docs[i].parent
- const localeStatus = result.docs[i].localeStatus || {}
- if (locale && localeStatus[locale]) {
- result.docs[i].status = localeStatus[locale]
- result.docs[i].version._status = localeStatus[locale]
- }
+ return {
+ ...result,
+ docs: result.docs.map((doc) => {
+ doc = {
+ id: doc.parent,
+ ...doc.version,
+ }
- result.docs[i] = result.docs[i].version ?? {}
- result.docs[i].id = id
+ return doc
+ }),
}
-
- return result
}
diff --git a/packages/next/src/views/Versions/cells/AutosaveCell/index.tsx b/packages/next/src/views/Versions/cells/AutosaveCell/index.tsx
index 8d17f30f4..ee1876710 100644
--- a/packages/next/src/views/Versions/cells/AutosaveCell/index.tsx
+++ b/packages/next/src/views/Versions/cells/AutosaveCell/index.tsx
@@ -19,7 +19,6 @@ type AutosaveCellProps = {
rowData: {
autosave?: boolean
id: number | string
- localeStatus?: Record
publishedLocale?: string
version: {
_status: string
diff --git a/packages/payload/src/collections/operations/create.ts b/packages/payload/src/collections/operations/create.ts
index 27828aeeb..ac6c91d7a 100644
--- a/packages/payload/src/collections/operations/create.ts
+++ b/packages/payload/src/collections/operations/create.ts
@@ -289,7 +289,6 @@ export const createOperation = async <
autosave,
collection: collectionConfig,
docWithLocales: result,
- locale,
operation: 'create',
payload,
publishSpecificLocale,
diff --git a/packages/payload/src/collections/operations/utilities/update.ts b/packages/payload/src/collections/operations/utilities/update.ts
index 93bbeff3d..b5bffebe4 100644
--- a/packages/payload/src/collections/operations/utilities/update.ts
+++ b/packages/payload/src/collections/operations/utilities/update.ts
@@ -317,7 +317,6 @@ export const updateDocument = async <
collection: collectionConfig,
docWithLocales: result,
draft: shouldSaveDraft,
- locale,
operation: 'update',
payload,
publishSpecificLocale,
diff --git a/packages/payload/src/config/client.ts b/packages/payload/src/config/client.ts
index dc267f46d..72422968a 100644
--- a/packages/payload/src/config/client.ts
+++ b/packages/payload/src/config/client.ts
@@ -223,16 +223,6 @@ export const createClientConfig = ({
break
- case 'experimental':
- if (config.experimental) {
- clientConfig.experimental = {}
- if (config.experimental?.localizeStatus) {
- clientConfig.experimental.localizeStatus = config.experimental.localizeStatus
- }
- }
-
- break
-
case 'folders':
if (config.folders) {
clientConfig.folders = {
diff --git a/packages/payload/src/config/defaults.ts b/packages/payload/src/config/defaults.ts
index aa8c01a0b..77dc94677 100644
--- a/packages/payload/src/config/defaults.ts
+++ b/packages/payload/src/config/defaults.ts
@@ -47,7 +47,6 @@ export const defaults: Omit = {
defaultDepth: 2,
defaultMaxTextLength: 40000,
endpoints: [],
- experimental: {},
globals: [],
graphQL: {
disablePlaygroundInProduction: true,
@@ -122,7 +121,6 @@ export const addDefaultsToConfig = (config: Config): Config => {
config.defaultDepth = config.defaultDepth ?? 2
config.defaultMaxTextLength = config.defaultMaxTextLength ?? 40000
config.endpoints = config.endpoints ?? []
- config.experimental = config.experimental ?? {}
config.globals = config.globals ?? []
config.graphQL = {
disableIntrospectionInProduction: true,
diff --git a/packages/payload/src/config/types.ts b/packages/payload/src/config/types.ts
index 1e4b04293..a76832e80 100644
--- a/packages/payload/src/config/types.ts
+++ b/packages/payload/src/config/types.ts
@@ -726,14 +726,6 @@ export type ImportMapGenerators = Array<
}) => void
>
-/**
- * Experimental features.
- * These may be unstable and may change or be removed in future releases.
- */
-export type ExperimentalConfig = {
- localizeStatus?: boolean
-}
-
export type AfterErrorHook = (
args: AfterErrorHookArgs,
) => AfterErrorResult | Promise
@@ -1069,12 +1061,6 @@ export type Config = {
email?: EmailAdapter | Promise
/** Custom REST endpoints */
endpoints?: Endpoint[]
- /**
- * Configure experimental features for Payload.
- *
- * These features may be unstable and may change or be removed in future releases.
- */
- experimental?: ExperimentalConfig
/**
* Options for folder view within the admin panel
*
@@ -1344,7 +1330,6 @@ export type SanitizedConfig = {
/** Default richtext editor to use for richText fields */
editor?: RichTextAdapter
endpoints: Endpoint[]
- experimental?: ExperimentalConfig
globals: SanitizedGlobalConfig[]
i18n: Required
jobs: SanitizedJobsConfig
diff --git a/packages/payload/src/database/types.ts b/packages/payload/src/database/types.ts
index df55f9479..145102514 100644
--- a/packages/payload/src/database/types.ts
+++ b/packages/payload/src/database/types.ts
@@ -390,7 +390,6 @@ export type CreateVersionArgs = {
autosave: boolean
collectionSlug: CollectionSlug
createdAt: string
- localeStatus?: Record
/** ID of the parent document for which the version should be created for */
parent: number | string
publishedLocale?: string
@@ -415,7 +414,6 @@ export type CreateGlobalVersionArgs = {
autosave: boolean
createdAt: string
globalSlug: GlobalSlug
- localeStatus?: Record
/** ID of the parent document for which the version should be created for */
parent: number | string
publishedLocale?: string
diff --git a/packages/payload/src/globals/operations/update.ts b/packages/payload/src/globals/operations/update.ts
index 863bdeab0..7b209efa6 100644
--- a/packages/payload/src/globals/operations/update.ts
+++ b/packages/payload/src/globals/operations/update.ts
@@ -302,7 +302,6 @@ export const updateOperation = async <
docWithLocales: result,
draft: shouldSaveDraft,
global: globalConfig,
- locale,
operation: 'update',
payload,
publishSpecificLocale,
diff --git a/packages/payload/src/versions/baseFields.ts b/packages/payload/src/versions/baseFields.ts
index a0e542204..91435afc6 100644
--- a/packages/payload/src/versions/baseFields.ts
+++ b/packages/payload/src/versions/baseFields.ts
@@ -1,5 +1,4 @@
// @ts-strict-ignore
-import type { SanitizedConfig } from '../config/types.js'
import type { CheckboxField, Field, Option } from '../fields/config/types.js'
export const statuses: Option[] = [
@@ -44,23 +43,3 @@ export const versionSnapshotField: CheckboxField = {
},
index: true,
}
-
-export function buildLocaleStatusField(config: SanitizedConfig): Field[] {
- if (!config.localization || !config.localization.locales) {
- return []
- }
-
- return config.localization.locales.map((locale) => {
- const code = typeof locale === 'string' ? locale : locale.code
-
- return {
- name: code,
- type: 'select',
- index: true,
- options: [
- { label: ({ t }) => t('version:draft'), value: 'draft' },
- { label: ({ t }) => t('version:published'), value: 'published' },
- ],
- }
- })
-}
diff --git a/packages/payload/src/versions/buildCollectionFields.ts b/packages/payload/src/versions/buildCollectionFields.ts
index f047373f8..089659189 100644
--- a/packages/payload/src/versions/buildCollectionFields.ts
+++ b/packages/payload/src/versions/buildCollectionFields.ts
@@ -2,7 +2,7 @@ import type { SanitizedCollectionConfig } from '../collections/config/types.js'
import type { SanitizedConfig } from '../config/types.js'
import type { Field, FlattenedField } from '../fields/config/types.js'
-import { buildLocaleStatusField, versionSnapshotField } from './baseFields.js'
+import { versionSnapshotField } from './baseFields.js'
export const buildVersionCollectionFields = (
config: SanitizedConfig,
@@ -62,23 +62,6 @@ export const buildVersionCollectionFields = (
return locale.code
}),
})
-
- if (config.experimental?.localizeStatus) {
- const localeStatusFields = buildLocaleStatusField(config)
-
- fields.push({
- name: 'localeStatus',
- type: 'group',
- admin: {
- disableBulkEdit: true,
- disabled: true,
- },
- fields: localeStatusFields,
- ...(flatten && {
- flattenedFields: localeStatusFields as FlattenedField[],
- })!,
- })
- }
}
fields.push({
diff --git a/packages/payload/src/versions/buildGlobalFields.ts b/packages/payload/src/versions/buildGlobalFields.ts
index b9675ddbd..06c1a067c 100644
--- a/packages/payload/src/versions/buildGlobalFields.ts
+++ b/packages/payload/src/versions/buildGlobalFields.ts
@@ -2,7 +2,7 @@ import type { SanitizedConfig } from '../config/types.js'
import type { Field, FlattenedField } from '../fields/config/types.js'
import type { SanitizedGlobalConfig } from '../globals/config/types.js'
-import { buildLocaleStatusField, versionSnapshotField } from './baseFields.js'
+import { versionSnapshotField } from './baseFields.js'
export const buildVersionGlobalFields = (
config: SanitizedConfig,
@@ -56,23 +56,6 @@ export const buildVersionGlobalFields = (
return locale.code
}),
})
-
- if (config.experimental.localizeStatus) {
- const localeStatusFields = buildLocaleStatusField(config)
-
- fields.push({
- name: 'localeStatus',
- type: 'group',
- admin: {
- disableBulkEdit: true,
- disabled: true,
- },
- fields: localeStatusFields,
- ...(flatten && {
- flattenedFields: localeStatusFields as FlattenedField[],
- })!,
- })
- }
}
fields.push({
diff --git a/packages/payload/src/versions/drafts/replaceWithDraftIfAvailable.ts b/packages/payload/src/versions/drafts/replaceWithDraftIfAvailable.ts
index f4d0ac25e..25fcc45b2 100644
--- a/packages/payload/src/versions/drafts/replaceWithDraftIfAvailable.ts
+++ b/packages/payload/src/versions/drafts/replaceWithDraftIfAvailable.ts
@@ -111,12 +111,6 @@ export const replaceWithDraftIfAvailable = async ({
draft.version = {} as T
}
- // Lift locale status from version data if available
- const localeStatus = draft.localeStatus || {}
- if (locale && localeStatus[locale]) {
- ;(draft.version as { _status?: string })['_status'] = localeStatus[locale]
- }
-
// Disregard all other draft content at this point,
// Only interested in the version itself.
// Operations will handle firing hooks, etc.
diff --git a/packages/payload/src/versions/saveVersion.ts b/packages/payload/src/versions/saveVersion.ts
index d101aa05c..24b6feef3 100644
--- a/packages/payload/src/versions/saveVersion.ts
+++ b/packages/payload/src/versions/saveVersion.ts
@@ -1,5 +1,3 @@
-import { version } from 'os'
-
// @ts-strict-ignore
import type { SanitizedCollectionConfig, TypeWithID } from '../collections/config/types.js'
import type { SanitizedGlobalConfig } from '../globals/config/types.js'
@@ -18,7 +16,6 @@ type Args = {
draft?: boolean
global?: SanitizedGlobalConfig
id?: number | string
- locale?: null | string
operation?: 'create' | 'restoreVersion' | 'update'
payload: Payload
publishSpecificLocale?: string
@@ -34,7 +31,6 @@ export const saveVersion = async ({
docWithLocales: doc,
draft,
global,
- locale,
operation,
payload,
publishSpecificLocale,
@@ -46,7 +42,6 @@ export const saveVersion = async ({
let createNewVersion = true
const now = new Date().toISOString()
const versionData = deepCopyObjectSimple(doc)
-
if (draft) {
versionData._status = 'draft'
}
@@ -60,39 +55,39 @@ export const saveVersion = async ({
}
try {
- let docs
- const findVersionArgs = {
- limit: 1,
- pagination: false,
- req,
- sort: '-updatedAt',
- }
-
- if (collection) {
- ;({ docs } = await payload.db.findVersions({
- ...findVersionArgs,
- collection: collection.slug,
- limit: 1,
- pagination: false,
- req,
- where: {
- parent: {
- equals: id,
- },
- },
- }))
- } else {
- ;({ docs } = await payload.db.findGlobalVersions({
- ...findVersionArgs,
- global: global!.slug,
- limit: 1,
- pagination: false,
- req,
- }))
- }
- const [latestVersion] = docs
-
if (autosave) {
+ let docs
+ const findVersionArgs = {
+ limit: 1,
+ pagination: false,
+ req,
+ sort: '-updatedAt',
+ }
+
+ if (collection) {
+ ;({ docs } = await payload.db.findVersions({
+ ...findVersionArgs,
+ collection: collection.slug,
+ limit: 1,
+ pagination: false,
+ req,
+ where: {
+ parent: {
+ equals: id,
+ },
+ },
+ }))
+ } else {
+ ;({ docs } = await payload.db.findGlobalVersions({
+ ...findVersionArgs,
+ global: global!.slug,
+ limit: 1,
+ pagination: false,
+ req,
+ }))
+ }
+ const [latestVersion] = docs
+
// overwrite the latest version if it's set to autosave
if (latestVersion && 'autosave' in latestVersion && latestVersion.autosave === true) {
createNewVersion = false
@@ -130,53 +125,11 @@ export const saveVersion = async ({
}
if (createNewVersion) {
- let localeStatus = {}
- const localizationEnabled =
- payload.config.localization && payload.config.localization.locales.length > 0
-
- if (
- localizationEnabled &&
- payload.config.localization !== false &&
- payload.config.experimental?.localizeStatus
- ) {
- const allLocales = (
- (payload.config.localization && payload.config.localization?.locales) ||
- []
- ).map((locale) => (typeof locale === 'string' ? locale : locale.code))
-
- // If `publish all`, set all locales to published
- if (versionData._status === 'published' && !publishSpecificLocale) {
- localeStatus = Object.fromEntries(allLocales.map((code) => [code, 'published']))
- } else if (publishSpecificLocale || (locale && versionData._status === 'draft')) {
- const status: 'draft' | 'published' = publishSpecificLocale ? 'published' : 'draft'
- const incomingLocale = String(publishSpecificLocale || locale)
- const existing = latestVersion?.localeStatus
-
- // If no locale statuses are set, set it and set all others to draft
- if (!existing) {
- localeStatus = {
- ...Object.fromEntries(
- allLocales.filter((code) => code !== incomingLocale).map((code) => [code, 'draft']),
- ),
- [incomingLocale]: status,
- }
- } else {
- // If locales already exist, update the status for the incoming locale
- const { [incomingLocale]: _, ...rest } = existing
- localeStatus = {
- ...rest,
- [incomingLocale]: status,
- }
- }
- }
- }
-
const createVersionArgs = {
autosave: Boolean(autosave),
collectionSlug: undefined as string | undefined,
createdAt: operation === 'restoreVersion' ? versionData.createdAt : now,
globalSlug: undefined as string | undefined,
- localeStatus,
parent: collection ? id : undefined,
publishedLocale: publishSpecificLocale || undefined,
req,
diff --git a/packages/payload/src/versions/types.ts b/packages/payload/src/versions/types.ts
index d79c59d53..efbc4e3c9 100644
--- a/packages/payload/src/versions/types.ts
+++ b/packages/payload/src/versions/types.ts
@@ -122,7 +122,6 @@ export type SanitizedGlobalVersions = {
export type TypeWithVersion = {
createdAt: string
id: string
- localeStatus: Record
parent: number | string
publishedLocale?: string
snapshot?: boolean
diff --git a/packages/ui/src/elements/Status/index.tsx b/packages/ui/src/elements/Status/index.tsx
index 852f1ba96..fc59f452b 100644
--- a/packages/ui/src/elements/Status/index.tsx
+++ b/packages/ui/src/elements/Status/index.tsx
@@ -24,7 +24,6 @@ export const Status: React.FC = () => {
hasPublishedDoc,
incrementVersionCount,
isTrashed,
- savedDocumentData: doc,
setHasPublishedDoc,
setMostRecentVersionIsAutosaved,
setUnpublishedVersionCount,
@@ -38,7 +37,6 @@ export const Status: React.FC = () => {
routes: { api },
serverURL,
},
- getEntityConfig,
} = useConfig()
const { reset: resetForm } = useForm()
@@ -48,22 +46,16 @@ export const Status: React.FC = () => {
const unPublishModalSlug = `confirm-un-publish-${id}`
const revertModalSlug = `confirm-revert-${id}`
- let statusToRender: 'changed' | 'draft' | 'published' = 'draft'
+ let statusToRender: 'changed' | 'draft' | 'published'
- const collectionConfig = getEntityConfig({ collectionSlug })
- const globalConfig = getEntityConfig({ globalSlug })
-
- const docConfig = collectionConfig || globalConfig
- const autosaveEnabled =
- typeof docConfig?.versions?.drafts === 'object' ? docConfig.versions.drafts.autosave : false
-
- if (autosaveEnabled) {
- if (hasPublishedDoc) {
- statusToRender = unpublishedVersionCount > 0 ? 'changed' : 'published'
- }
- } else {
- statusToRender = doc._status || 'draft'
+ if (unpublishedVersionCount > 0 && hasPublishedDoc) {
+ statusToRender = 'changed'
+ } else if (!hasPublishedDoc) {
+ statusToRender = 'draft'
+ } else if (hasPublishedDoc && unpublishedVersionCount <= 0) {
+ statusToRender = 'published'
}
+
const displayStatusKey = isTrashed
? hasPublishedDoc
? 'previouslyPublished'
@@ -201,7 +193,7 @@ export const Status: React.FC = () => {
{!isTrashed &&
canUpdate &&
hasPublishedDoc &&
- (statusToRender === 'changed' || statusToRender === 'draft') && (
+ statusToRender === 'changed' && (
—