@strapi/i18n 5.39.0 → 5.41.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/admin/components/CMHeaderActions.js +7 -13
- package/dist/admin/components/CMHeaderActions.js.map +1 -1
- package/dist/admin/components/CMHeaderActions.mjs +7 -13
- package/dist/admin/components/CMHeaderActions.mjs.map +1 -1
- package/dist/admin/components/CreateLocale.js +3 -0
- package/dist/admin/components/CreateLocale.js.map +1 -1
- package/dist/admin/components/CreateLocale.mjs +3 -0
- package/dist/admin/components/CreateLocale.mjs.map +1 -1
- package/package.json +8 -8
|
@@ -757,22 +757,16 @@ const AITranslationStatusAction = ({ documentId, model, collectionType })=>{
|
|
|
757
757
|
status: document.status ?? 'draft'
|
|
758
758
|
});
|
|
759
759
|
}
|
|
760
|
-
//
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
const errors = allDocuments.reduce((errs, document)=>{
|
|
766
|
-
if (!document) {
|
|
767
|
-
return errs;
|
|
768
|
-
}
|
|
769
|
-
// Validate each locale entry via the useDocument validate function and store any errors in a dictionary
|
|
760
|
+
// Validate the current document locale only. Other locales have minimal
|
|
761
|
+
// data populated for performance reasons and will be validated server-side
|
|
762
|
+
// during the actual bulk publish operation.
|
|
763
|
+
const errors = {};
|
|
764
|
+
if (document.locale) {
|
|
770
765
|
const validation = validate(document);
|
|
771
766
|
if (validation !== null) {
|
|
772
|
-
|
|
767
|
+
errors[document.locale] = validation;
|
|
773
768
|
}
|
|
774
|
-
|
|
775
|
-
}, {});
|
|
769
|
+
}
|
|
776
770
|
return [
|
|
777
771
|
locales,
|
|
778
772
|
errors
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CMHeaderActions.js","sources":["../../../admin/src/components/CMHeaderActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { skipToken } from '@reduxjs/toolkit/query';\nimport {\n useNotification,\n useQueryParams,\n Table,\n useAPIErrorHandler,\n FormErrors,\n useForm,\n} from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport {\n type DocumentActionComponent,\n type DocumentActionProps,\n unstable_useDocument as useDocument,\n unstable_useDocumentActions as useDocumentActions,\n buildValidParams,\n HeaderActionProps,\n} from '@strapi/content-manager/strapi-admin';\nimport {\n Flex,\n Status,\n Typography,\n Button,\n Modal,\n Field,\n SingleSelect,\n SingleSelectOption,\n Dialog,\n type StatusVariant,\n Box,\n Link,\n} from '@strapi/design-system';\nimport { WarningCircle, ListPlus, Trash, Earth, Cross, Plus, Sparkle, Loader } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAILocalizationJobsPolling } from '../hooks/useAILocalizationJobsPolling';\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetAILocalizationJobsByDocumentQuery } from '../services/aiLocalizationJobs';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { useGetManyDraftRelationCountQuery } from '../services/relations';\nimport { useGetSettingsQuery } from '../services/settings';\nimport { cleanData } from '../utils/clean';\nimport { getTranslation } from '../utils/getTranslation';\nimport { capitalize } from '../utils/strings';\n\nimport { BulkLocaleActionModal } from './BulkLocaleActionModal';\n\nimport type { Locale } from '../../../shared/contracts/locales';\nimport type { I18nBaseQuery } from '../types';\nimport type { Modules } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * LocalePickerAction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LocaleOptionProps {\n isDraftAndPublishEnabled: boolean;\n locale: Locale;\n status: 'draft' | 'published' | 'modified';\n entryExists: boolean;\n translationStatus?: 'processing' | 'failed' | 'completed' | undefined;\n}\n\nconst statusVariants: Record<LocaleOptionProps['status'], StatusVariant> = {\n draft: 'secondary',\n published: 'success',\n modified: 'alternative',\n};\n\nconst LocaleOption = ({\n isDraftAndPublishEnabled,\n locale,\n status,\n entryExists,\n}: LocaleOptionProps) => {\n const { formatMessage } = useIntl();\n\n if (!entryExists) {\n return formatMessage(\n {\n id: getTranslation('CMEditViewLocalePicker.locale.create'),\n defaultMessage: 'Create <bold>{locale}</bold> locale',\n },\n {\n bold: (locale: React.ReactNode) => <b>{locale}</b>,\n locale: locale.name,\n }\n );\n }\n\n return (\n <Flex width=\"100%\" gap={1} justifyContent=\"space-between\">\n <Typography>{locale.name}</Typography>\n {isDraftAndPublishEnabled ? (\n <Status\n display=\"flex\"\n paddingLeft=\"6px\"\n paddingRight=\"6px\"\n paddingTop=\"2px\"\n paddingBottom=\"2px\"\n size=\"S\"\n variant={statusVariants[status]}\n >\n <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n {capitalize(status)}\n </Typography>\n </Status>\n ) : null}\n </Flex>\n );\n};\n\nconst LocaleOptionStartIcon = ({\n entryWithLocaleExists,\n translationStatus,\n index,\n}: {\n entryWithLocaleExists: boolean;\n translationStatus?: 'processing' | 'failed' | 'completed' | undefined;\n index?: number;\n}) => {\n const isAiAvailable = useAIAvailability();\n\n if (!entryWithLocaleExists) {\n return <Plus />;\n }\n\n if (isAiAvailable && index !== 0 && translationStatus === 'failed') {\n return <WarningCircle fill=\"warning600\" />;\n }\n\n return null;\n};\n\nconst LocalePickerAction = ({\n document,\n meta,\n model,\n collectionType,\n documentId,\n}: HeaderActionProps) => {\n const { formatMessage } = useIntl();\n const [{ query }, setQuery] = useQueryParams<I18nBaseQuery>();\n const { hasI18n, canCreate, canRead } = useI18n();\n const { data: locales = [] } = useGetLocalesQuery();\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const { schema } = useDocument({\n model,\n collectionType,\n documentId,\n params: { locale: currentDesiredLocale },\n });\n const { data: jobData } = useGetAILocalizationJobsByDocumentQuery({\n documentId: documentId!,\n model: model!,\n collectionType: collectionType!,\n });\n const { data: settings } = useGetSettingsQuery();\n const isAiAvailable = useAIAvailability();\n const setValues = useForm('LocalePickerAction', (state) => state.setValues);\n\n const handleSelect = React.useCallback(\n (value: string) => {\n setQuery(\n {\n plugins: {\n ...query.plugins,\n i18n: {\n locale: value,\n },\n },\n },\n 'push',\n true\n );\n },\n [query.plugins, setQuery]\n );\n\n const nonTranslatedFields = React.useMemo(() => {\n if (!schema?.attributes) return [];\n return Object.keys(schema.attributes).filter((field) => {\n const attribute = schema.attributes[field] as Record<string, unknown>;\n return (attribute?.pluginOptions as any)?.i18n?.localized === false;\n });\n }, [schema?.attributes]);\n\n const sourceLocaleData = React.useMemo(() => {\n if (!Array.isArray(locales) || !meta?.availableLocales) return null;\n\n const defaultLocale = locales.find((locale: Locale) => locale.isDefault);\n const existingLocales = meta.availableLocales.map((loc) => loc.locale);\n\n const sourceLocaleCode =\n defaultLocale &&\n existingLocales.includes(defaultLocale.code) &&\n defaultLocale.code !== currentDesiredLocale\n ? defaultLocale.code\n : existingLocales.find((locale) => locale !== currentDesiredLocale);\n\n if (!sourceLocaleCode) return null;\n\n // Find the document data from availableLocales (now includes non-translatable fields)\n const sourceLocaleDoc = meta.availableLocales.find((loc) => loc.locale === sourceLocaleCode);\n\n return sourceLocaleDoc\n ? { locale: sourceLocaleCode, data: sourceLocaleDoc as Record<string, unknown> }\n : null;\n }, [locales, meta?.availableLocales, currentDesiredLocale]);\n\n /**\n * Prefilling form with non-translatable fields from already existing locale\n */\n React.useEffect(() => {\n // Only run when creating a new locale (no document ID yet) and when we have non-translatable fields\n if (!document?.id && nonTranslatedFields.length > 0 && sourceLocaleData?.data) {\n const dataToSet = nonTranslatedFields.reduce(\n (acc: Record<string, unknown>, field: string) => {\n acc[field] = sourceLocaleData.data[field];\n return acc;\n },\n {}\n );\n\n if (Object.keys(dataToSet).length > 0) {\n setValues(dataToSet);\n }\n }\n }, [document?.id, nonTranslatedFields, sourceLocaleData?.data, setValues]);\n\n React.useEffect(() => {\n if (!Array.isArray(locales) || !hasI18n) {\n return;\n }\n /**\n * Handle the case where the current locale query param doesn't exist\n * in the list of available locales, so we redirect to the default locale.\n */\n const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n const defaultLocale = locales.find((locale) => locale.isDefault);\n if (!doesLocaleExist && defaultLocale?.code) {\n handleSelect(defaultLocale.code);\n }\n }, [handleSelect, hasI18n, locales, currentDesiredLocale]);\n\n const currentLocale = Array.isArray(locales)\n ? locales.find((locale) => locale.code === currentDesiredLocale)\n : undefined;\n\n // Use meta.availableLocales instead of document.localizations\n // meta.availableLocales contains all locales for the document, even when creating new locales\n const availableLocales = meta?.availableLocales ?? [];\n const documentLocalizations = document?.localizations ?? [];\n\n // Prefer meta.availableLocales as it's more reliable, fallback to document.localizations\n const allLocalizations = availableLocales.length > 0 ? availableLocales : documentLocalizations;\n\n const allCurrentLocales = [\n { status: getDocumentStatus(document, meta), locale: currentLocale?.code },\n ...allLocalizations,\n ];\n\n if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {\n return null;\n }\n\n const displayedLocales = locales.filter((locale) => {\n /**\n * If you can read we allow you to see the locale exists\n * otherwise the locale is hidden.\n */\n return canRead.includes(locale.code);\n });\n\n const localesSortingDefaultFirst = displayedLocales.sort((a, b) =>\n a.isDefault ? -1 : b.isDefault ? 1 : 0\n );\n\n return {\n label: formatMessage({\n id: getTranslation('Settings.locales.modal.locales.label'),\n defaultMessage: 'Locales',\n }),\n options: localesSortingDefaultFirst.map((locale, index) => {\n const entryWithLocaleExists = allCurrentLocales.some((doc) => doc.locale === locale.code);\n\n const currentLocaleDoc = allCurrentLocales.find((doc) =>\n 'locale' in doc ? doc.locale === locale.code : false\n );\n\n const permissionsToCheck = currentLocaleDoc ? canRead : canCreate;\n\n if (isAiAvailable && settings?.data?.aiLocalizations) {\n return {\n _render: () => (\n <React.Fragment key={index}>\n <SingleSelectOption\n disabled={!permissionsToCheck.includes(locale.code)}\n key={locale.code}\n startIcon={\n <LocaleOptionStartIcon\n entryWithLocaleExists={entryWithLocaleExists}\n translationStatus={jobData?.data?.status}\n index={index}\n />\n }\n value={locale.code}\n >\n <LocaleOption\n isDraftAndPublishEnabled={!!schema?.options?.draftAndPublish}\n locale={locale}\n status={currentLocaleDoc?.status}\n entryExists={entryWithLocaleExists}\n />\n </SingleSelectOption>\n {localesSortingDefaultFirst.length > 1 && index === 0 && (\n <Box paddingRight={4} paddingLeft={4} paddingTop={2} paddingBottom={2}>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: getTranslation('CMEditViewLocalePicker.locale.ai-translations'),\n defaultMessage: 'AI Translations',\n })}\n </Typography>\n </Box>\n )}\n </React.Fragment>\n ),\n };\n }\n\n return {\n disabled: !permissionsToCheck.includes(locale.code),\n value: locale.code,\n label: (\n <LocaleOption\n isDraftAndPublishEnabled={!!schema?.options?.draftAndPublish}\n locale={locale}\n status={currentLocaleDoc?.status}\n entryExists={entryWithLocaleExists}\n translationStatus={jobData?.data?.status}\n />\n ),\n startIcon: <LocaleOptionStartIcon entryWithLocaleExists={entryWithLocaleExists} />,\n };\n }),\n customizeContent: () => currentLocale?.name,\n onSelect: handleSelect,\n value: currentLocale,\n };\n};\n\ntype UseDocument = typeof useDocument;\n\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AISettingsStatusAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst AITranslationStatusIcon = styled(Status)<{ $isAISettingEnabled: boolean }>`\n display: flex;\n gap: ${({ theme }) => theme.spaces[1]};\n justify-content: center;\n align-items: center;\n height: 3.2rem;\n width: 3.2rem;\n\n // Disabled state\n ${({ $isAISettingEnabled, theme }) =>\n !$isAISettingEnabled &&\n `\n background-color: ${theme.colors.neutral150};\n `}\n\n svg {\n ${({ $isAISettingEnabled, theme }) =>\n !$isAISettingEnabled &&\n `\n fill: ${theme.colors.neutral300};\n `}\n }\n`;\n\nconst SpinningLoader = styled(Loader)`\n @keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n\n animation: spin 2s linear infinite;\n`;\n\nconst AITranslationStatusAction = ({ documentId, model, collectionType }: HeaderActionProps) => {\n const { formatMessage } = useIntl();\n const isAIAvailable = useAIAvailability();\n const { data: settings } = useGetSettingsQuery();\n const isAISettingEnabled = settings?.data?.aiLocalizations;\n const { hasI18n } = useI18n();\n\n // Poll for AI localizations jobs when AI is enabled and we have a documentId\n const { status } = useAILocalizationJobsPolling({\n documentId,\n model,\n collectionType,\n });\n const statusVariant = (() => {\n if (status === 'failed') {\n return 'warning';\n }\n\n if (isAISettingEnabled) {\n return 'alternative';\n }\n\n return 'neutral';\n })();\n\n // Do not display this action when i18n is not available\n if (!hasI18n) {\n return null;\n }\n\n // Do not display this action when AI is not available\n if (!isAIAvailable) {\n return null;\n }\n\n return {\n _status: {\n message: (\n <Flex\n height=\"100%\"\n alignItems=\"center\"\n aria-label={formatMessage({\n id: getTranslation('CMEditViewAITranslation.status-aria-label'),\n defaultMessage: 'AI Translation Status',\n })}\n >\n <AITranslationStatusIcon\n $isAISettingEnabled={Boolean(isAISettingEnabled)}\n variant={statusVariant}\n size=\"S\"\n >\n {status === 'processing' ? <SpinningLoader /> : <Sparkle />}\n </AITranslationStatusIcon>\n </Flex>\n ),\n tooltip: (\n <Flex direction=\"column\" padding={4} alignItems=\"flex-start\" width=\"25rem\">\n <Typography variant=\"pi\" fontWeight=\"600\">\n {formatMessage(\n {\n id: getTranslation('CMEditViewAITranslation.status-title'),\n defaultMessage:\n '{enabled, select, true {AI translation enabled} false {AI translation disabled} other {AI translation disabled}}',\n },\n { enabled: isAISettingEnabled }\n )}\n </Typography>\n <Typography variant=\"pi\" paddingTop={1} paddingBottom={3}>\n {formatMessage({\n id: getTranslation('CMEditViewAITranslation.status-description'),\n defaultMessage:\n 'Our AI translates content in all locales each time you save a modification in the default locale.',\n })}\n </Typography>\n <Link\n fontSize=\"inherit\"\n tag={NavLink}\n to=\"/settings/internationalization\"\n style={{ alignSelf: 'flex-end' }}\n >\n <Typography variant=\"pi\" textAlign=\"right\">\n {formatMessage(\n {\n id: getTranslation('CMEditViewAITranslation.settings-link'),\n defaultMessage:\n '{enabled, select, true {Disable it in settings} false {Enable it in settings} other {Enable it in settings}}',\n },\n { enabled: isAISettingEnabled }\n )}\n </Typography>\n </Link>\n </Flex>\n ),\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FillFromAnotherLocaleAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst FillFromAnotherLocaleAction = ({\n documentId,\n meta,\n model,\n collectionType,\n}: HeaderActionProps) => {\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams<I18nBaseQuery>();\n const { hasI18n } = useI18n();\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const [localeSelected, setLocaleSelected] = React.useState<string | null>(null);\n const setValues = useForm('FillFromAnotherLocale', (state) => state.setValues);\n\n const { getDocument } = useDocumentActions();\n const { schema, components } = useDocument({\n model,\n documentId,\n collectionType,\n params: { locale: currentDesiredLocale },\n });\n const { data: locales = [] } = useGetLocalesQuery();\n\n const isAIAvailable = useAIAvailability();\n const { data: settings } = useGetSettingsQuery();\n const isAISettingEnabled = settings?.data?.aiLocalizations;\n\n const availableLocales = Array.isArray(locales)\n ? locales.filter((locale) => meta?.availableLocales.some((l) => l.locale === locale.code))\n : [];\n\n const fillFromLocale = (onClose: () => void) => async () => {\n const response = await getDocument({\n collectionType,\n model,\n documentId,\n params: { locale: localeSelected },\n });\n if (!response || !schema) {\n return;\n }\n\n const { data } = response;\n\n const cleanedData = cleanData(data, schema, components);\n\n setValues(cleanedData);\n\n onClose();\n };\n\n if (!hasI18n) {\n return null;\n }\n\n // Do not display this action when AI is available and AI translations are enabled\n if (isAIAvailable && isAISettingEnabled) {\n return null;\n }\n\n return {\n type: 'icon',\n icon: <Earth />,\n disabled: availableLocales.length === 0,\n label: formatMessage({\n id: getTranslation('CMEditViewCopyLocale.copy-text'),\n defaultMessage: 'Fill in from another locale',\n }),\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.title'),\n defaultMessage: 'Confirmation',\n }),\n content: ({ onClose }: { onClose: () => void }) => (\n <>\n <Dialog.Body>\n <Flex direction=\"column\" gap={3}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography textAlign=\"center\">\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.body'),\n defaultMessage:\n 'Your current content will be erased and filled by the content of the selected locale:',\n })}\n </Typography>\n <Field.Root width=\"100%\">\n <Field.Label>\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.field.label'),\n defaultMessage: 'Locale',\n })}\n </Field.Label>\n <SingleSelect\n value={localeSelected}\n placeholder={formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.field.placeholder'),\n defaultMessage: 'Select one locale...',\n })}\n // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n onChange={(value) => setLocaleSelected(value)}\n >\n {availableLocales.map((locale) => (\n <SingleSelectOption key={locale.code} value={locale.code}>\n {locale.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Flex gap={2} width=\"100%\">\n <Button flex=\"auto\" variant=\"tertiary\" onClick={onClose}>\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.cancel-text'),\n defaultMessage: 'No, cancel',\n })}\n </Button>\n <Button flex=\"auto\" variant=\"success\" onClick={fillFromLocale(onClose)}>\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.submit-text'),\n defaultMessage: 'Yes, fill in',\n })}\n </Button>\n </Flex>\n </Dialog.Footer>\n </>\n ),\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocaleAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst DeleteLocaleAction: DocumentActionComponent = ({\n document,\n documentId,\n model,\n collectionType,\n}) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { delete: deleteAction, isLoading } = useDocumentActions();\n const { hasI18n, canDelete } = useI18n();\n\n // Get the current locale object, using the URL instead of document so it works while creating\n const [{ query }] = useQueryParams<I18nBaseQuery>();\n const { data: locales = [] } = useGetLocalesQuery();\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const locale = !('error' in locales) && locales.find((loc) => loc.code === currentDesiredLocale);\n\n if (!hasI18n) {\n return null;\n }\n\n return {\n disabled:\n (document?.locale && !canDelete.includes(document.locale)) || !document || !document.id,\n position: ['header', 'table-row'],\n label: formatMessage(\n {\n id: getTranslation('actions.delete.label'),\n defaultMessage: 'Delete entry ({locale})',\n },\n { locale: locale && locale.name }\n ),\n icon: <StyledTrash />,\n variant: 'danger',\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: getTranslation('actions.delete.dialog.title'),\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: getTranslation('actions.delete.dialog.body'),\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n const unableToDelete =\n // We are unable to delete a collection type without a document ID\n // & unable to delete generally if there is no document locale\n (collectionType !== 'single-types' && !documentId) || !document?.locale;\n\n if (unableToDelete) {\n console.error(\n \"You're trying to delete a document without an id or locale, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: getTranslation('actions.delete.error'),\n defaultMessage: 'An error occurred while trying to delete the document locale.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await deleteAction({\n documentId,\n model,\n collectionType,\n params: { locale: document.locale },\n });\n\n if (!('error' in res)) {\n navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n }\n },\n },\n };\n};\n\nexport type LocaleStatus = {\n locale: string;\n status: Modules.Documents.Params.PublicationStatus.Kind | 'modified';\n};\n\ninterface ExtendedDocumentActionProps extends DocumentActionProps {\n action?: 'bulk-publish' | 'bulk-unpublish';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleAction\n *\n * This component is used to handle bulk publish and unpublish actions on locales.\n * -----------------------------------------------------------------------------------------------*/\n\nconst BulkLocaleAction: DocumentActionComponent = ({\n document,\n documentId,\n model,\n collectionType,\n action,\n meta,\n}: ExtendedDocumentActionProps) => {\n const locale = document?.locale ?? null;\n const [{ query }] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const isOnPublishedTab = query.status === 'published';\n\n const { formatMessage } = useIntl();\n const { hasI18n, canPublish } = useI18n();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [selectedRows, setSelectedRows] = React.useState<any[]>([]);\n const [isDraftRelationConfirmationOpen, setIsDraftRelationConfirmationOpen] =\n React.useState<boolean>(false);\n\n const { publishMany: publishManyAction, unpublishMany: unpublishManyAction } =\n useDocumentActions();\n\n const { schema, validate } = useDocument(\n {\n model,\n collectionType,\n documentId,\n params: {\n locale,\n },\n },\n {\n // No need to fetch the document, the data is already available in the `document` prop\n skip: true,\n }\n );\n\n const { data: localesMetadata = [] } = useGetLocalesQuery(hasI18n ? undefined : skipToken);\n\n const headers = [\n {\n label: formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n }),\n name: 'name',\n },\n {\n label: formatMessage({\n id: getTranslation('CMEditViewBulkLocale.status'),\n defaultMessage: 'Status',\n }),\n name: 'status',\n },\n {\n label: formatMessage({\n id: getTranslation('CMEditViewBulkLocale.publication-status'),\n defaultMessage: 'Publication Status',\n }),\n name: 'publication-status',\n },\n ];\n\n // Extract the rows for the bulk locale publish modal and any validation\n // errors per locale\n const [rows, validationErrors] = React.useMemo(() => {\n if (!document) {\n return [[], {}];\n }\n\n const metaLocalizations = (meta?.availableLocales ?? []).map((locale) => ({\n locale: locale.locale,\n status: (locale.status ?? 'draft') as LocaleStatus['status'],\n }));\n\n const documentLocalizations = (\n (document.localizations ?? []) as Array<{\n locale?: string | null;\n status?: Modules.Documents.Params.PublicationStatus.Kind | 'modified' | null;\n }>\n ).map((doc) => ({\n locale: doc.locale ?? undefined,\n status: (doc.status ?? 'draft') as LocaleStatus['status'],\n }));\n\n const localesMap = new Map<string, LocaleStatus>();\n\n metaLocalizations.forEach(({ locale, status }) => {\n if (locale) {\n localesMap.set(locale, { locale, status });\n }\n });\n\n documentLocalizations.forEach(({ locale, status }) => {\n if (locale) {\n localesMap.set(locale, { locale, status });\n }\n });\n\n // Build the rows for the bulk locale publish modal by combining the current\n // document with all the available locales from the document meta\n const locales: LocaleStatus[] = [];\n\n if (document?.locale) {\n locales.push({\n locale: document.locale,\n status: (document.status ?? 'draft') as LocaleStatus['status'],\n });\n }\n\n locales.push(\n ...Array.from(localesMap.entries())\n .filter(([locale]) => locale !== document?.locale)\n .map(([, value]) => value)\n );\n\n if (locales.length === 0 && document?.locale) {\n locales.push({\n locale: document.locale,\n status: (document.status ?? 'draft') as LocaleStatus['status'],\n });\n }\n\n // Build the validation errors for each locale.\n const allDocuments = [document, ...(document.localizations ?? [])];\n const errors = allDocuments.reduce<FormErrors>((errs, document) => {\n if (!document) {\n return errs;\n }\n\n // Validate each locale entry via the useDocument validate function and store any errors in a dictionary\n const validation = validate(document as Modules.Documents.AnyDocument);\n if (validation !== null) {\n errs[document.locale] = validation;\n }\n return errs;\n }, {});\n\n return [locales, errors];\n }, [document, meta?.availableLocales, validate]);\n\n const isBulkPublish = action === 'bulk-publish';\n const localesForAction = selectedRows.reduce((acc: string[], selectedRow: LocaleStatus) => {\n const isValidLocale =\n // Validation errors are irrelevant if we are trying to unpublish\n !isBulkPublish || !Object.keys(validationErrors).includes(selectedRow.locale);\n\n const shouldAddLocale = isBulkPublish\n ? selectedRow.status !== 'published' && isValidLocale\n : selectedRow.status !== 'draft' && isValidLocale;\n\n if (shouldAddLocale) {\n acc.push(selectedRow.locale);\n }\n\n return acc;\n }, []);\n\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see https://www.notion.so/strapi/Count-draft-relations-56901b492efb45ab90d42fe975b32bd8?pvs=4\n const enableDraftRelationsCount = false;\n const {\n data: draftRelationsCount = 0,\n isLoading: isDraftRelationsLoading,\n error: isDraftRelationsError,\n } = useGetManyDraftRelationCountQuery(\n {\n model,\n documentIds: [documentId!],\n locale: localesForAction,\n },\n {\n skip: !enableDraftRelationsCount || !documentId || localesForAction.length === 0,\n }\n );\n\n React.useEffect(() => {\n if (isDraftRelationsError) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(isDraftRelationsError),\n });\n }\n }, [isDraftRelationsError, toggleNotification, formatAPIError]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n if (!hasI18n) {\n return null;\n }\n\n if (!documentId) {\n return null;\n }\n\n // This document action can be enabled given that draft and publish and i18n are\n // enabled and we can publish the current locale.\n\n const publish = async () => {\n await publishManyAction({\n model,\n documentIds: [documentId],\n params: {\n ...params,\n locale: localesForAction,\n },\n });\n\n setSelectedRows([]);\n };\n\n const unpublish = async () => {\n await unpublishManyAction({\n model,\n documentIds: [documentId],\n params: {\n ...params,\n locale: localesForAction,\n },\n });\n\n setSelectedRows([]);\n };\n\n const handleAction = async () => {\n if (draftRelationsCount > 0) {\n setIsDraftRelationConfirmationOpen(true);\n } else if (isBulkPublish) {\n await publish();\n } else {\n await unpublish();\n }\n };\n\n if (isDraftRelationConfirmationOpen) {\n return {\n label: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n variant: 'danger',\n dialog: {\n onCancel: () => {\n setIsDraftRelationConfirmationOpen(false);\n },\n onConfirm: async () => {\n await publish();\n\n setIsDraftRelationConfirmationOpen(false);\n },\n type: 'dialog',\n title: formatMessage({\n id: getTranslation('actions.publish.dialog.title'),\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <WarningCircle width=\"2.4rem\" height=\"2.4rem\" fill=\"danger600\" />\n <Typography textAlign=\"center\">\n {formatMessage({\n id: getTranslation('CMEditViewBulkLocale.draft-relation-warning'),\n defaultMessage:\n 'Some locales are related to draft entries. Publishing them could leave broken links in your app.',\n })}\n </Typography>\n <Typography textAlign=\"center\">\n {formatMessage({\n id: getTranslation('CMEditViewBulkLocale.continue-confirmation'),\n defaultMessage: 'Are you sure you want to continue?',\n })}\n </Typography>\n </Flex>\n ),\n },\n };\n }\n\n const hasPermission = selectedRows\n .map(({ locale }) => locale)\n .every((locale) => canPublish.includes(locale));\n\n return {\n label: formatMessage({\n id: getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),\n defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`,\n }),\n variant: isBulkPublish ? 'secondary' : 'danger',\n icon: isBulkPublish ? <ListPlus /> : <Cross />,\n disabled: isOnPublishedTab || canPublish.length === 0,\n position: ['panel'],\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),\n defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`,\n }),\n content: () => {\n return (\n <Table.Root\n headers={headers}\n rows={rows.map((row) => ({\n ...row,\n id: row.locale,\n }))}\n selectedRows={selectedRows}\n onSelectedRowsChange={(tableSelectedRows) => setSelectedRows(tableSelectedRows)}\n >\n <BulkLocaleActionModal\n validationErrors={validationErrors}\n headers={headers}\n rows={rows}\n localesMetadata={localesMetadata as Locale[]}\n action={action ?? 'bulk-publish'}\n />\n </Table.Root>\n );\n },\n footer: () => (\n <Modal.Footer justifyContent=\"flex-end\">\n <Button\n loading={isDraftRelationsLoading}\n disabled={!hasPermission || localesForAction.length === 0}\n variant=\"default\"\n onClick={handleAction}\n >\n {formatMessage({\n id: isBulkPublish ? 'app.utils.publish' : 'app.utils.unpublish',\n defaultMessage: isBulkPublish ? 'Publish' : 'Unpublish',\n })}\n </Button>\n </Modal.Footer>\n ),\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocalePublishAction\n * -----------------------------------------------------------------------------------------------*/\nconst BulkLocalePublishAction: DocumentActionComponent = (props: ExtendedDocumentActionProps) => {\n return BulkLocaleAction({ action: 'bulk-publish', ...props });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleUnpublishAction\n * -----------------------------------------------------------------------------------------------*/\nconst BulkLocaleUnpublishAction: DocumentActionComponent = (props: ExtendedDocumentActionProps) => {\n return BulkLocaleAction({ action: 'bulk-unpublish', ...props });\n};\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledTrash = styled(Trash)`\n path {\n fill: currentColor;\n }\n`;\n\nexport {\n BulkLocalePublishAction,\n BulkLocaleUnpublishAction,\n DeleteLocaleAction,\n LocalePickerAction,\n FillFromAnotherLocaleAction,\n AITranslationStatusAction,\n};\n"],"names":["statusVariants","draft","published","modified","LocaleOption","isDraftAndPublishEnabled","locale","status","entryExists","formatMessage","useIntl","id","getTranslation","defaultMessage","bold","_jsx","b","name","_jsxs","Flex","width","gap","justifyContent","Typography","Status","display","paddingLeft","paddingRight","paddingTop","paddingBottom","size","variant","tag","fontWeight","capitalize","LocaleOptionStartIcon","entryWithLocaleExists","translationStatus","index","isAiAvailable","useAIAvailability","Plus","WarningCircle","fill","LocalePickerAction","document","meta","model","collectionType","documentId","query","setQuery","useQueryParams","hasI18n","canCreate","canRead","useI18n","data","locales","useGetLocalesQuery","currentDesiredLocale","plugins","i18n","schema","useDocument","params","jobData","useGetAILocalizationJobsByDocumentQuery","settings","useGetSettingsQuery","setValues","useForm","state","handleSelect","React","useCallback","value","nonTranslatedFields","useMemo","attributes","Object","keys","filter","field","attribute","pluginOptions","localized","sourceLocaleData","Array","isArray","availableLocales","defaultLocale","find","isDefault","existingLocales","map","loc","sourceLocaleCode","includes","code","sourceLocaleDoc","useEffect","length","dataToSet","reduce","acc","doesLocaleExist","currentLocale","undefined","documentLocalizations","localizations","allLocalizations","allCurrentLocales","getDocumentStatus","displayedLocales","localesSortingDefaultFirst","sort","a","label","options","some","doc","currentLocaleDoc","permissionsToCheck","aiLocalizations","_render","Fragment","SingleSelectOption","disabled","startIcon","draftAndPublish","Box","customizeContent","onSelect","docStatus","statuses","availableStatus","publishedAt","AITranslationStatusIcon","styled","theme","spaces","$isAISettingEnabled","colors","neutral150","neutral300","SpinningLoader","Loader","AITranslationStatusAction","isAIAvailable","isAISettingEnabled","useAILocalizationJobsPolling","statusVariant","_status","message","height","alignItems","aria-label","Boolean","Sparkle","tooltip","direction","padding","enabled","Link","fontSize","NavLink","to","style","alignSelf","textAlign","FillFromAnotherLocaleAction","localeSelected","setLocaleSelected","useState","getDocument","useDocumentActions","components","l","fillFromLocale","onClose","response","cleanedData","cleanData","type","icon","Earth","dialog","title","content","_Fragment","Dialog","Body","Field","Root","Label","SingleSelect","placeholder","onChange","Footer","Button","flex","onClick","DeleteLocaleAction","navigate","useNavigate","toggleNotification","useNotification","delete","deleteAction","isLoading","canDelete","position","StyledTrash","loading","onConfirm","unableToDelete","console","error","res","pathname","replace","BulkLocaleAction","action","buildValidParams","isOnPublishedTab","canPublish","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","selectedRows","setSelectedRows","isDraftRelationConfirmationOpen","setIsDraftRelationConfirmationOpen","publishMany","publishManyAction","unpublishMany","unpublishManyAction","validate","skip","localesMetadata","skipToken","headers","rows","validationErrors","metaLocalizations","localesMap","Map","forEach","set","push","from","entries","allDocuments","errors","errs","validation","isBulkPublish","localesForAction","selectedRow","isValidLocale","shouldAddLocale","draftRelationsCount","isDraftRelationsLoading","isDraftRelationsError","useGetManyDraftRelationCountQuery","documentIds","publish","unpublish","handleAction","onCancel","hasPermission","every","ListPlus","Cross","Table","row","onSelectedRowsChange","tableSelectedRows","BulkLocaleActionModal","footer","Modal","BulkLocalePublishAction","props","BulkLocaleUnpublishAction","Trash"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CMHeaderActions.js","sources":["../../../admin/src/components/CMHeaderActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { skipToken } from '@reduxjs/toolkit/query';\nimport {\n useNotification,\n useQueryParams,\n Table,\n useAPIErrorHandler,\n FormErrors,\n useForm,\n} from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport {\n type DocumentActionComponent,\n type DocumentActionProps,\n unstable_useDocument as useDocument,\n unstable_useDocumentActions as useDocumentActions,\n buildValidParams,\n HeaderActionProps,\n} from '@strapi/content-manager/strapi-admin';\nimport {\n Flex,\n Status,\n Typography,\n Button,\n Modal,\n Field,\n SingleSelect,\n SingleSelectOption,\n Dialog,\n type StatusVariant,\n Box,\n Link,\n} from '@strapi/design-system';\nimport { WarningCircle, ListPlus, Trash, Earth, Cross, Plus, Sparkle, Loader } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAILocalizationJobsPolling } from '../hooks/useAILocalizationJobsPolling';\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetAILocalizationJobsByDocumentQuery } from '../services/aiLocalizationJobs';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { useGetManyDraftRelationCountQuery } from '../services/relations';\nimport { useGetSettingsQuery } from '../services/settings';\nimport { cleanData } from '../utils/clean';\nimport { getTranslation } from '../utils/getTranslation';\nimport { capitalize } from '../utils/strings';\n\nimport { BulkLocaleActionModal } from './BulkLocaleActionModal';\n\nimport type { Locale } from '../../../shared/contracts/locales';\nimport type { I18nBaseQuery } from '../types';\nimport type { Modules } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * LocalePickerAction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LocaleOptionProps {\n isDraftAndPublishEnabled: boolean;\n locale: Locale;\n status: 'draft' | 'published' | 'modified';\n entryExists: boolean;\n translationStatus?: 'processing' | 'failed' | 'completed' | undefined;\n}\n\nconst statusVariants: Record<LocaleOptionProps['status'], StatusVariant> = {\n draft: 'secondary',\n published: 'success',\n modified: 'alternative',\n};\n\nconst LocaleOption = ({\n isDraftAndPublishEnabled,\n locale,\n status,\n entryExists,\n}: LocaleOptionProps) => {\n const { formatMessage } = useIntl();\n\n if (!entryExists) {\n return formatMessage(\n {\n id: getTranslation('CMEditViewLocalePicker.locale.create'),\n defaultMessage: 'Create <bold>{locale}</bold> locale',\n },\n {\n bold: (locale: React.ReactNode) => <b>{locale}</b>,\n locale: locale.name,\n }\n );\n }\n\n return (\n <Flex width=\"100%\" gap={1} justifyContent=\"space-between\">\n <Typography>{locale.name}</Typography>\n {isDraftAndPublishEnabled ? (\n <Status\n display=\"flex\"\n paddingLeft=\"6px\"\n paddingRight=\"6px\"\n paddingTop=\"2px\"\n paddingBottom=\"2px\"\n size=\"S\"\n variant={statusVariants[status]}\n >\n <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n {capitalize(status)}\n </Typography>\n </Status>\n ) : null}\n </Flex>\n );\n};\n\nconst LocaleOptionStartIcon = ({\n entryWithLocaleExists,\n translationStatus,\n index,\n}: {\n entryWithLocaleExists: boolean;\n translationStatus?: 'processing' | 'failed' | 'completed' | undefined;\n index?: number;\n}) => {\n const isAiAvailable = useAIAvailability();\n\n if (!entryWithLocaleExists) {\n return <Plus />;\n }\n\n if (isAiAvailable && index !== 0 && translationStatus === 'failed') {\n return <WarningCircle fill=\"warning600\" />;\n }\n\n return null;\n};\n\nconst LocalePickerAction = ({\n document,\n meta,\n model,\n collectionType,\n documentId,\n}: HeaderActionProps) => {\n const { formatMessage } = useIntl();\n const [{ query }, setQuery] = useQueryParams<I18nBaseQuery>();\n const { hasI18n, canCreate, canRead } = useI18n();\n const { data: locales = [] } = useGetLocalesQuery();\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const { schema } = useDocument({\n model,\n collectionType,\n documentId,\n params: { locale: currentDesiredLocale },\n });\n const { data: jobData } = useGetAILocalizationJobsByDocumentQuery({\n documentId: documentId!,\n model: model!,\n collectionType: collectionType!,\n });\n const { data: settings } = useGetSettingsQuery();\n const isAiAvailable = useAIAvailability();\n const setValues = useForm('LocalePickerAction', (state) => state.setValues);\n\n const handleSelect = React.useCallback(\n (value: string) => {\n setQuery(\n {\n plugins: {\n ...query.plugins,\n i18n: {\n locale: value,\n },\n },\n },\n 'push',\n true\n );\n },\n [query.plugins, setQuery]\n );\n\n const nonTranslatedFields = React.useMemo(() => {\n if (!schema?.attributes) return [];\n return Object.keys(schema.attributes).filter((field) => {\n const attribute = schema.attributes[field] as Record<string, unknown>;\n return (attribute?.pluginOptions as any)?.i18n?.localized === false;\n });\n }, [schema?.attributes]);\n\n const sourceLocaleData = React.useMemo(() => {\n if (!Array.isArray(locales) || !meta?.availableLocales) return null;\n\n const defaultLocale = locales.find((locale: Locale) => locale.isDefault);\n const existingLocales = meta.availableLocales.map((loc) => loc.locale);\n\n const sourceLocaleCode =\n defaultLocale &&\n existingLocales.includes(defaultLocale.code) &&\n defaultLocale.code !== currentDesiredLocale\n ? defaultLocale.code\n : existingLocales.find((locale) => locale !== currentDesiredLocale);\n\n if (!sourceLocaleCode) return null;\n\n // Find the document data from availableLocales (now includes non-translatable fields)\n const sourceLocaleDoc = meta.availableLocales.find((loc) => loc.locale === sourceLocaleCode);\n\n return sourceLocaleDoc\n ? { locale: sourceLocaleCode, data: sourceLocaleDoc as Record<string, unknown> }\n : null;\n }, [locales, meta?.availableLocales, currentDesiredLocale]);\n\n /**\n * Prefilling form with non-translatable fields from already existing locale\n */\n React.useEffect(() => {\n // Only run when creating a new locale (no document ID yet) and when we have non-translatable fields\n if (!document?.id && nonTranslatedFields.length > 0 && sourceLocaleData?.data) {\n const dataToSet = nonTranslatedFields.reduce(\n (acc: Record<string, unknown>, field: string) => {\n acc[field] = sourceLocaleData.data[field];\n return acc;\n },\n {}\n );\n\n if (Object.keys(dataToSet).length > 0) {\n setValues(dataToSet);\n }\n }\n }, [document?.id, nonTranslatedFields, sourceLocaleData?.data, setValues]);\n\n React.useEffect(() => {\n if (!Array.isArray(locales) || !hasI18n) {\n return;\n }\n /**\n * Handle the case where the current locale query param doesn't exist\n * in the list of available locales, so we redirect to the default locale.\n */\n const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n const defaultLocale = locales.find((locale) => locale.isDefault);\n if (!doesLocaleExist && defaultLocale?.code) {\n handleSelect(defaultLocale.code);\n }\n }, [handleSelect, hasI18n, locales, currentDesiredLocale]);\n\n const currentLocale = Array.isArray(locales)\n ? locales.find((locale) => locale.code === currentDesiredLocale)\n : undefined;\n\n // Use meta.availableLocales instead of document.localizations\n // meta.availableLocales contains all locales for the document, even when creating new locales\n const availableLocales = meta?.availableLocales ?? [];\n const documentLocalizations = document?.localizations ?? [];\n\n // Prefer meta.availableLocales as it's more reliable, fallback to document.localizations\n const allLocalizations = availableLocales.length > 0 ? availableLocales : documentLocalizations;\n\n const allCurrentLocales = [\n { status: getDocumentStatus(document, meta), locale: currentLocale?.code },\n ...allLocalizations,\n ];\n\n if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {\n return null;\n }\n\n const displayedLocales = locales.filter((locale) => {\n /**\n * If you can read we allow you to see the locale exists\n * otherwise the locale is hidden.\n */\n return canRead.includes(locale.code);\n });\n\n const localesSortingDefaultFirst = displayedLocales.sort((a, b) =>\n a.isDefault ? -1 : b.isDefault ? 1 : 0\n );\n\n return {\n label: formatMessage({\n id: getTranslation('Settings.locales.modal.locales.label'),\n defaultMessage: 'Locales',\n }),\n options: localesSortingDefaultFirst.map((locale, index) => {\n const entryWithLocaleExists = allCurrentLocales.some((doc) => doc.locale === locale.code);\n\n const currentLocaleDoc = allCurrentLocales.find((doc) =>\n 'locale' in doc ? doc.locale === locale.code : false\n );\n\n const permissionsToCheck = currentLocaleDoc ? canRead : canCreate;\n\n if (isAiAvailable && settings?.data?.aiLocalizations) {\n return {\n _render: () => (\n <React.Fragment key={index}>\n <SingleSelectOption\n disabled={!permissionsToCheck.includes(locale.code)}\n key={locale.code}\n startIcon={\n <LocaleOptionStartIcon\n entryWithLocaleExists={entryWithLocaleExists}\n translationStatus={jobData?.data?.status}\n index={index}\n />\n }\n value={locale.code}\n >\n <LocaleOption\n isDraftAndPublishEnabled={!!schema?.options?.draftAndPublish}\n locale={locale}\n status={currentLocaleDoc?.status}\n entryExists={entryWithLocaleExists}\n />\n </SingleSelectOption>\n {localesSortingDefaultFirst.length > 1 && index === 0 && (\n <Box paddingRight={4} paddingLeft={4} paddingTop={2} paddingBottom={2}>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: getTranslation('CMEditViewLocalePicker.locale.ai-translations'),\n defaultMessage: 'AI Translations',\n })}\n </Typography>\n </Box>\n )}\n </React.Fragment>\n ),\n };\n }\n\n return {\n disabled: !permissionsToCheck.includes(locale.code),\n value: locale.code,\n label: (\n <LocaleOption\n isDraftAndPublishEnabled={!!schema?.options?.draftAndPublish}\n locale={locale}\n status={currentLocaleDoc?.status}\n entryExists={entryWithLocaleExists}\n translationStatus={jobData?.data?.status}\n />\n ),\n startIcon: <LocaleOptionStartIcon entryWithLocaleExists={entryWithLocaleExists} />,\n };\n }),\n customizeContent: () => currentLocale?.name,\n onSelect: handleSelect,\n value: currentLocale,\n };\n};\n\ntype UseDocument = typeof useDocument;\n\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AISettingsStatusAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst AITranslationStatusIcon = styled(Status)<{ $isAISettingEnabled: boolean }>`\n display: flex;\n gap: ${({ theme }) => theme.spaces[1]};\n justify-content: center;\n align-items: center;\n height: 3.2rem;\n width: 3.2rem;\n\n // Disabled state\n ${({ $isAISettingEnabled, theme }) =>\n !$isAISettingEnabled &&\n `\n background-color: ${theme.colors.neutral150};\n `}\n\n svg {\n ${({ $isAISettingEnabled, theme }) =>\n !$isAISettingEnabled &&\n `\n fill: ${theme.colors.neutral300};\n `}\n }\n`;\n\nconst SpinningLoader = styled(Loader)`\n @keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n\n animation: spin 2s linear infinite;\n`;\n\nconst AITranslationStatusAction = ({ documentId, model, collectionType }: HeaderActionProps) => {\n const { formatMessage } = useIntl();\n const isAIAvailable = useAIAvailability();\n const { data: settings } = useGetSettingsQuery();\n const isAISettingEnabled = settings?.data?.aiLocalizations;\n const { hasI18n } = useI18n();\n\n // Poll for AI localizations jobs when AI is enabled and we have a documentId\n const { status } = useAILocalizationJobsPolling({\n documentId,\n model,\n collectionType,\n });\n const statusVariant = (() => {\n if (status === 'failed') {\n return 'warning';\n }\n\n if (isAISettingEnabled) {\n return 'alternative';\n }\n\n return 'neutral';\n })();\n\n // Do not display this action when i18n is not available\n if (!hasI18n) {\n return null;\n }\n\n // Do not display this action when AI is not available\n if (!isAIAvailable) {\n return null;\n }\n\n return {\n _status: {\n message: (\n <Flex\n height=\"100%\"\n alignItems=\"center\"\n aria-label={formatMessage({\n id: getTranslation('CMEditViewAITranslation.status-aria-label'),\n defaultMessage: 'AI Translation Status',\n })}\n >\n <AITranslationStatusIcon\n $isAISettingEnabled={Boolean(isAISettingEnabled)}\n variant={statusVariant}\n size=\"S\"\n >\n {status === 'processing' ? <SpinningLoader /> : <Sparkle />}\n </AITranslationStatusIcon>\n </Flex>\n ),\n tooltip: (\n <Flex direction=\"column\" padding={4} alignItems=\"flex-start\" width=\"25rem\">\n <Typography variant=\"pi\" fontWeight=\"600\">\n {formatMessage(\n {\n id: getTranslation('CMEditViewAITranslation.status-title'),\n defaultMessage:\n '{enabled, select, true {AI translation enabled} false {AI translation disabled} other {AI translation disabled}}',\n },\n { enabled: isAISettingEnabled }\n )}\n </Typography>\n <Typography variant=\"pi\" paddingTop={1} paddingBottom={3}>\n {formatMessage({\n id: getTranslation('CMEditViewAITranslation.status-description'),\n defaultMessage:\n 'Our AI translates content in all locales each time you save a modification in the default locale.',\n })}\n </Typography>\n <Link\n fontSize=\"inherit\"\n tag={NavLink}\n to=\"/settings/internationalization\"\n style={{ alignSelf: 'flex-end' }}\n >\n <Typography variant=\"pi\" textAlign=\"right\">\n {formatMessage(\n {\n id: getTranslation('CMEditViewAITranslation.settings-link'),\n defaultMessage:\n '{enabled, select, true {Disable it in settings} false {Enable it in settings} other {Enable it in settings}}',\n },\n { enabled: isAISettingEnabled }\n )}\n </Typography>\n </Link>\n </Flex>\n ),\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FillFromAnotherLocaleAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst FillFromAnotherLocaleAction = ({\n documentId,\n meta,\n model,\n collectionType,\n}: HeaderActionProps) => {\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams<I18nBaseQuery>();\n const { hasI18n } = useI18n();\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const [localeSelected, setLocaleSelected] = React.useState<string | null>(null);\n const setValues = useForm('FillFromAnotherLocale', (state) => state.setValues);\n\n const { getDocument } = useDocumentActions();\n const { schema, components } = useDocument({\n model,\n documentId,\n collectionType,\n params: { locale: currentDesiredLocale },\n });\n const { data: locales = [] } = useGetLocalesQuery();\n\n const isAIAvailable = useAIAvailability();\n const { data: settings } = useGetSettingsQuery();\n const isAISettingEnabled = settings?.data?.aiLocalizations;\n\n const availableLocales = Array.isArray(locales)\n ? locales.filter((locale) => meta?.availableLocales.some((l) => l.locale === locale.code))\n : [];\n\n const fillFromLocale = (onClose: () => void) => async () => {\n const response = await getDocument({\n collectionType,\n model,\n documentId,\n params: { locale: localeSelected },\n });\n if (!response || !schema) {\n return;\n }\n\n const { data } = response;\n\n const cleanedData = cleanData(data, schema, components);\n\n setValues(cleanedData);\n\n onClose();\n };\n\n if (!hasI18n) {\n return null;\n }\n\n // Do not display this action when AI is available and AI translations are enabled\n if (isAIAvailable && isAISettingEnabled) {\n return null;\n }\n\n return {\n type: 'icon',\n icon: <Earth />,\n disabled: availableLocales.length === 0,\n label: formatMessage({\n id: getTranslation('CMEditViewCopyLocale.copy-text'),\n defaultMessage: 'Fill in from another locale',\n }),\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.title'),\n defaultMessage: 'Confirmation',\n }),\n content: ({ onClose }: { onClose: () => void }) => (\n <>\n <Dialog.Body>\n <Flex direction=\"column\" gap={3}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography textAlign=\"center\">\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.body'),\n defaultMessage:\n 'Your current content will be erased and filled by the content of the selected locale:',\n })}\n </Typography>\n <Field.Root width=\"100%\">\n <Field.Label>\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.field.label'),\n defaultMessage: 'Locale',\n })}\n </Field.Label>\n <SingleSelect\n value={localeSelected}\n placeholder={formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.field.placeholder'),\n defaultMessage: 'Select one locale...',\n })}\n // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n onChange={(value) => setLocaleSelected(value)}\n >\n {availableLocales.map((locale) => (\n <SingleSelectOption key={locale.code} value={locale.code}>\n {locale.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Flex gap={2} width=\"100%\">\n <Button flex=\"auto\" variant=\"tertiary\" onClick={onClose}>\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.cancel-text'),\n defaultMessage: 'No, cancel',\n })}\n </Button>\n <Button flex=\"auto\" variant=\"success\" onClick={fillFromLocale(onClose)}>\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.submit-text'),\n defaultMessage: 'Yes, fill in',\n })}\n </Button>\n </Flex>\n </Dialog.Footer>\n </>\n ),\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocaleAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst DeleteLocaleAction: DocumentActionComponent = ({\n document,\n documentId,\n model,\n collectionType,\n}) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { delete: deleteAction, isLoading } = useDocumentActions();\n const { hasI18n, canDelete } = useI18n();\n\n // Get the current locale object, using the URL instead of document so it works while creating\n const [{ query }] = useQueryParams<I18nBaseQuery>();\n const { data: locales = [] } = useGetLocalesQuery();\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const locale = !('error' in locales) && locales.find((loc) => loc.code === currentDesiredLocale);\n\n if (!hasI18n) {\n return null;\n }\n\n return {\n disabled:\n (document?.locale && !canDelete.includes(document.locale)) || !document || !document.id,\n position: ['header', 'table-row'],\n label: formatMessage(\n {\n id: getTranslation('actions.delete.label'),\n defaultMessage: 'Delete entry ({locale})',\n },\n { locale: locale && locale.name }\n ),\n icon: <StyledTrash />,\n variant: 'danger',\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: getTranslation('actions.delete.dialog.title'),\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: getTranslation('actions.delete.dialog.body'),\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n const unableToDelete =\n // We are unable to delete a collection type without a document ID\n // & unable to delete generally if there is no document locale\n (collectionType !== 'single-types' && !documentId) || !document?.locale;\n\n if (unableToDelete) {\n console.error(\n \"You're trying to delete a document without an id or locale, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: getTranslation('actions.delete.error'),\n defaultMessage: 'An error occurred while trying to delete the document locale.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await deleteAction({\n documentId,\n model,\n collectionType,\n params: { locale: document.locale },\n });\n\n if (!('error' in res)) {\n navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n }\n },\n },\n };\n};\n\nexport type LocaleStatus = {\n locale: string;\n status: Modules.Documents.Params.PublicationStatus.Kind | 'modified';\n};\n\ninterface ExtendedDocumentActionProps extends DocumentActionProps {\n action?: 'bulk-publish' | 'bulk-unpublish';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleAction\n *\n * This component is used to handle bulk publish and unpublish actions on locales.\n * -----------------------------------------------------------------------------------------------*/\n\nconst BulkLocaleAction: DocumentActionComponent = ({\n document,\n documentId,\n model,\n collectionType,\n action,\n meta,\n}: ExtendedDocumentActionProps) => {\n const locale = document?.locale ?? null;\n const [{ query }] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const isOnPublishedTab = query.status === 'published';\n\n const { formatMessage } = useIntl();\n const { hasI18n, canPublish } = useI18n();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [selectedRows, setSelectedRows] = React.useState<any[]>([]);\n const [isDraftRelationConfirmationOpen, setIsDraftRelationConfirmationOpen] =\n React.useState<boolean>(false);\n\n const { publishMany: publishManyAction, unpublishMany: unpublishManyAction } =\n useDocumentActions();\n\n const { schema, validate } = useDocument(\n {\n model,\n collectionType,\n documentId,\n params: {\n locale,\n },\n },\n {\n // No need to fetch the document, the data is already available in the `document` prop\n skip: true,\n }\n );\n\n const { data: localesMetadata = [] } = useGetLocalesQuery(hasI18n ? undefined : skipToken);\n\n const headers = [\n {\n label: formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n }),\n name: 'name',\n },\n {\n label: formatMessage({\n id: getTranslation('CMEditViewBulkLocale.status'),\n defaultMessage: 'Status',\n }),\n name: 'status',\n },\n {\n label: formatMessage({\n id: getTranslation('CMEditViewBulkLocale.publication-status'),\n defaultMessage: 'Publication Status',\n }),\n name: 'publication-status',\n },\n ];\n\n // Extract the rows for the bulk locale publish modal and any validation\n // errors per locale\n const [rows, validationErrors] = React.useMemo(() => {\n if (!document) {\n return [[], {}];\n }\n\n const metaLocalizations = (meta?.availableLocales ?? []).map((locale) => ({\n locale: locale.locale,\n status: (locale.status ?? 'draft') as LocaleStatus['status'],\n }));\n\n const documentLocalizations = (\n (document.localizations ?? []) as Array<{\n locale?: string | null;\n status?: Modules.Documents.Params.PublicationStatus.Kind | 'modified' | null;\n }>\n ).map((doc) => ({\n locale: doc.locale ?? undefined,\n status: (doc.status ?? 'draft') as LocaleStatus['status'],\n }));\n\n const localesMap = new Map<string, LocaleStatus>();\n\n metaLocalizations.forEach(({ locale, status }) => {\n if (locale) {\n localesMap.set(locale, { locale, status });\n }\n });\n\n documentLocalizations.forEach(({ locale, status }) => {\n if (locale) {\n localesMap.set(locale, { locale, status });\n }\n });\n\n // Build the rows for the bulk locale publish modal by combining the current\n // document with all the available locales from the document meta\n const locales: LocaleStatus[] = [];\n\n if (document?.locale) {\n locales.push({\n locale: document.locale,\n status: (document.status ?? 'draft') as LocaleStatus['status'],\n });\n }\n\n locales.push(\n ...Array.from(localesMap.entries())\n .filter(([locale]) => locale !== document?.locale)\n .map(([, value]) => value)\n );\n\n if (locales.length === 0 && document?.locale) {\n locales.push({\n locale: document.locale,\n status: (document.status ?? 'draft') as LocaleStatus['status'],\n });\n }\n\n // Validate the current document locale only. Other locales have minimal\n // data populated for performance reasons and will be validated server-side\n // during the actual bulk publish operation.\n const errors: FormErrors = {};\n if (document.locale) {\n const validation = validate(document as Modules.Documents.AnyDocument);\n if (validation !== null) {\n errors[document.locale] = validation;\n }\n }\n\n return [locales, errors];\n }, [document, meta?.availableLocales, validate]);\n\n const isBulkPublish = action === 'bulk-publish';\n const localesForAction = selectedRows.reduce((acc: string[], selectedRow: LocaleStatus) => {\n const isValidLocale =\n // Validation errors are irrelevant if we are trying to unpublish\n !isBulkPublish || !Object.keys(validationErrors).includes(selectedRow.locale);\n\n const shouldAddLocale = isBulkPublish\n ? selectedRow.status !== 'published' && isValidLocale\n : selectedRow.status !== 'draft' && isValidLocale;\n\n if (shouldAddLocale) {\n acc.push(selectedRow.locale);\n }\n\n return acc;\n }, []);\n\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see https://www.notion.so/strapi/Count-draft-relations-56901b492efb45ab90d42fe975b32bd8?pvs=4\n const enableDraftRelationsCount = false;\n const {\n data: draftRelationsCount = 0,\n isLoading: isDraftRelationsLoading,\n error: isDraftRelationsError,\n } = useGetManyDraftRelationCountQuery(\n {\n model,\n documentIds: [documentId!],\n locale: localesForAction,\n },\n {\n skip: !enableDraftRelationsCount || !documentId || localesForAction.length === 0,\n }\n );\n\n React.useEffect(() => {\n if (isDraftRelationsError) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(isDraftRelationsError),\n });\n }\n }, [isDraftRelationsError, toggleNotification, formatAPIError]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n if (!hasI18n) {\n return null;\n }\n\n if (!documentId) {\n return null;\n }\n\n // This document action can be enabled given that draft and publish and i18n are\n // enabled and we can publish the current locale.\n\n const publish = async () => {\n await publishManyAction({\n model,\n documentIds: [documentId],\n params: {\n ...params,\n locale: localesForAction,\n },\n });\n\n setSelectedRows([]);\n };\n\n const unpublish = async () => {\n await unpublishManyAction({\n model,\n documentIds: [documentId],\n params: {\n ...params,\n locale: localesForAction,\n },\n });\n\n setSelectedRows([]);\n };\n\n const handleAction = async () => {\n if (draftRelationsCount > 0) {\n setIsDraftRelationConfirmationOpen(true);\n } else if (isBulkPublish) {\n await publish();\n } else {\n await unpublish();\n }\n };\n\n if (isDraftRelationConfirmationOpen) {\n return {\n label: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n variant: 'danger',\n dialog: {\n onCancel: () => {\n setIsDraftRelationConfirmationOpen(false);\n },\n onConfirm: async () => {\n await publish();\n\n setIsDraftRelationConfirmationOpen(false);\n },\n type: 'dialog',\n title: formatMessage({\n id: getTranslation('actions.publish.dialog.title'),\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <WarningCircle width=\"2.4rem\" height=\"2.4rem\" fill=\"danger600\" />\n <Typography textAlign=\"center\">\n {formatMessage({\n id: getTranslation('CMEditViewBulkLocale.draft-relation-warning'),\n defaultMessage:\n 'Some locales are related to draft entries. Publishing them could leave broken links in your app.',\n })}\n </Typography>\n <Typography textAlign=\"center\">\n {formatMessage({\n id: getTranslation('CMEditViewBulkLocale.continue-confirmation'),\n defaultMessage: 'Are you sure you want to continue?',\n })}\n </Typography>\n </Flex>\n ),\n },\n };\n }\n\n const hasPermission = selectedRows\n .map(({ locale }) => locale)\n .every((locale) => canPublish.includes(locale));\n\n return {\n label: formatMessage({\n id: getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),\n defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`,\n }),\n variant: isBulkPublish ? 'secondary' : 'danger',\n icon: isBulkPublish ? <ListPlus /> : <Cross />,\n disabled: isOnPublishedTab || canPublish.length === 0,\n position: ['panel'],\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),\n defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`,\n }),\n content: () => {\n return (\n <Table.Root\n headers={headers}\n rows={rows.map((row) => ({\n ...row,\n id: row.locale,\n }))}\n selectedRows={selectedRows}\n onSelectedRowsChange={(tableSelectedRows) => setSelectedRows(tableSelectedRows)}\n >\n <BulkLocaleActionModal\n validationErrors={validationErrors}\n headers={headers}\n rows={rows}\n localesMetadata={localesMetadata as Locale[]}\n action={action ?? 'bulk-publish'}\n />\n </Table.Root>\n );\n },\n footer: () => (\n <Modal.Footer justifyContent=\"flex-end\">\n <Button\n loading={isDraftRelationsLoading}\n disabled={!hasPermission || localesForAction.length === 0}\n variant=\"default\"\n onClick={handleAction}\n >\n {formatMessage({\n id: isBulkPublish ? 'app.utils.publish' : 'app.utils.unpublish',\n defaultMessage: isBulkPublish ? 'Publish' : 'Unpublish',\n })}\n </Button>\n </Modal.Footer>\n ),\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocalePublishAction\n * -----------------------------------------------------------------------------------------------*/\nconst BulkLocalePublishAction: DocumentActionComponent = (props: ExtendedDocumentActionProps) => {\n return BulkLocaleAction({ action: 'bulk-publish', ...props });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleUnpublishAction\n * -----------------------------------------------------------------------------------------------*/\nconst BulkLocaleUnpublishAction: DocumentActionComponent = (props: ExtendedDocumentActionProps) => {\n return BulkLocaleAction({ action: 'bulk-unpublish', ...props });\n};\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledTrash = styled(Trash)`\n path {\n fill: currentColor;\n }\n`;\n\nexport {\n BulkLocalePublishAction,\n BulkLocaleUnpublishAction,\n DeleteLocaleAction,\n LocalePickerAction,\n FillFromAnotherLocaleAction,\n AITranslationStatusAction,\n};\n"],"names":["statusVariants","draft","published","modified","LocaleOption","isDraftAndPublishEnabled","locale","status","entryExists","formatMessage","useIntl","id","getTranslation","defaultMessage","bold","_jsx","b","name","_jsxs","Flex","width","gap","justifyContent","Typography","Status","display","paddingLeft","paddingRight","paddingTop","paddingBottom","size","variant","tag","fontWeight","capitalize","LocaleOptionStartIcon","entryWithLocaleExists","translationStatus","index","isAiAvailable","useAIAvailability","Plus","WarningCircle","fill","LocalePickerAction","document","meta","model","collectionType","documentId","query","setQuery","useQueryParams","hasI18n","canCreate","canRead","useI18n","data","locales","useGetLocalesQuery","currentDesiredLocale","plugins","i18n","schema","useDocument","params","jobData","useGetAILocalizationJobsByDocumentQuery","settings","useGetSettingsQuery","setValues","useForm","state","handleSelect","React","useCallback","value","nonTranslatedFields","useMemo","attributes","Object","keys","filter","field","attribute","pluginOptions","localized","sourceLocaleData","Array","isArray","availableLocales","defaultLocale","find","isDefault","existingLocales","map","loc","sourceLocaleCode","includes","code","sourceLocaleDoc","useEffect","length","dataToSet","reduce","acc","doesLocaleExist","currentLocale","undefined","documentLocalizations","localizations","allLocalizations","allCurrentLocales","getDocumentStatus","displayedLocales","localesSortingDefaultFirst","sort","a","label","options","some","doc","currentLocaleDoc","permissionsToCheck","aiLocalizations","_render","Fragment","SingleSelectOption","disabled","startIcon","draftAndPublish","Box","customizeContent","onSelect","docStatus","statuses","availableStatus","publishedAt","AITranslationStatusIcon","styled","theme","spaces","$isAISettingEnabled","colors","neutral150","neutral300","SpinningLoader","Loader","AITranslationStatusAction","isAIAvailable","isAISettingEnabled","useAILocalizationJobsPolling","statusVariant","_status","message","height","alignItems","aria-label","Boolean","Sparkle","tooltip","direction","padding","enabled","Link","fontSize","NavLink","to","style","alignSelf","textAlign","FillFromAnotherLocaleAction","localeSelected","setLocaleSelected","useState","getDocument","useDocumentActions","components","l","fillFromLocale","onClose","response","cleanedData","cleanData","type","icon","Earth","dialog","title","content","_Fragment","Dialog","Body","Field","Root","Label","SingleSelect","placeholder","onChange","Footer","Button","flex","onClick","DeleteLocaleAction","navigate","useNavigate","toggleNotification","useNotification","delete","deleteAction","isLoading","canDelete","position","StyledTrash","loading","onConfirm","unableToDelete","console","error","res","pathname","replace","BulkLocaleAction","action","buildValidParams","isOnPublishedTab","canPublish","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","selectedRows","setSelectedRows","isDraftRelationConfirmationOpen","setIsDraftRelationConfirmationOpen","publishMany","publishManyAction","unpublishMany","unpublishManyAction","validate","skip","localesMetadata","skipToken","headers","rows","validationErrors","metaLocalizations","localesMap","Map","forEach","set","push","from","entries","errors","validation","isBulkPublish","localesForAction","selectedRow","isValidLocale","shouldAddLocale","draftRelationsCount","isDraftRelationsLoading","isDraftRelationsError","useGetManyDraftRelationCountQuery","documentIds","publish","unpublish","handleAction","onCancel","hasPermission","every","ListPlus","Cross","Table","row","onSelectedRowsChange","tableSelectedRows","BulkLocaleActionModal","footer","Modal","BulkLocalePublishAction","props","BulkLocaleUnpublishAction","Trash"],"mappings":"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"}
|
|
@@ -736,22 +736,16 @@ const AITranslationStatusAction = ({ documentId, model, collectionType })=>{
|
|
|
736
736
|
status: document.status ?? 'draft'
|
|
737
737
|
});
|
|
738
738
|
}
|
|
739
|
-
//
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
const errors = allDocuments.reduce((errs, document)=>{
|
|
745
|
-
if (!document) {
|
|
746
|
-
return errs;
|
|
747
|
-
}
|
|
748
|
-
// Validate each locale entry via the useDocument validate function and store any errors in a dictionary
|
|
739
|
+
// Validate the current document locale only. Other locales have minimal
|
|
740
|
+
// data populated for performance reasons and will be validated server-side
|
|
741
|
+
// during the actual bulk publish operation.
|
|
742
|
+
const errors = {};
|
|
743
|
+
if (document.locale) {
|
|
749
744
|
const validation = validate(document);
|
|
750
745
|
if (validation !== null) {
|
|
751
|
-
|
|
746
|
+
errors[document.locale] = validation;
|
|
752
747
|
}
|
|
753
|
-
|
|
754
|
-
}, {});
|
|
748
|
+
}
|
|
755
749
|
return [
|
|
756
750
|
locales,
|
|
757
751
|
errors
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CMHeaderActions.mjs","sources":["../../../admin/src/components/CMHeaderActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { skipToken } from '@reduxjs/toolkit/query';\nimport {\n useNotification,\n useQueryParams,\n Table,\n useAPIErrorHandler,\n FormErrors,\n useForm,\n} from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport {\n type DocumentActionComponent,\n type DocumentActionProps,\n unstable_useDocument as useDocument,\n unstable_useDocumentActions as useDocumentActions,\n buildValidParams,\n HeaderActionProps,\n} from '@strapi/content-manager/strapi-admin';\nimport {\n Flex,\n Status,\n Typography,\n Button,\n Modal,\n Field,\n SingleSelect,\n SingleSelectOption,\n Dialog,\n type StatusVariant,\n Box,\n Link,\n} from '@strapi/design-system';\nimport { WarningCircle, ListPlus, Trash, Earth, Cross, Plus, Sparkle, Loader } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAILocalizationJobsPolling } from '../hooks/useAILocalizationJobsPolling';\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetAILocalizationJobsByDocumentQuery } from '../services/aiLocalizationJobs';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { useGetManyDraftRelationCountQuery } from '../services/relations';\nimport { useGetSettingsQuery } from '../services/settings';\nimport { cleanData } from '../utils/clean';\nimport { getTranslation } from '../utils/getTranslation';\nimport { capitalize } from '../utils/strings';\n\nimport { BulkLocaleActionModal } from './BulkLocaleActionModal';\n\nimport type { Locale } from '../../../shared/contracts/locales';\nimport type { I18nBaseQuery } from '../types';\nimport type { Modules } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * LocalePickerAction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LocaleOptionProps {\n isDraftAndPublishEnabled: boolean;\n locale: Locale;\n status: 'draft' | 'published' | 'modified';\n entryExists: boolean;\n translationStatus?: 'processing' | 'failed' | 'completed' | undefined;\n}\n\nconst statusVariants: Record<LocaleOptionProps['status'], StatusVariant> = {\n draft: 'secondary',\n published: 'success',\n modified: 'alternative',\n};\n\nconst LocaleOption = ({\n isDraftAndPublishEnabled,\n locale,\n status,\n entryExists,\n}: LocaleOptionProps) => {\n const { formatMessage } = useIntl();\n\n if (!entryExists) {\n return formatMessage(\n {\n id: getTranslation('CMEditViewLocalePicker.locale.create'),\n defaultMessage: 'Create <bold>{locale}</bold> locale',\n },\n {\n bold: (locale: React.ReactNode) => <b>{locale}</b>,\n locale: locale.name,\n }\n );\n }\n\n return (\n <Flex width=\"100%\" gap={1} justifyContent=\"space-between\">\n <Typography>{locale.name}</Typography>\n {isDraftAndPublishEnabled ? (\n <Status\n display=\"flex\"\n paddingLeft=\"6px\"\n paddingRight=\"6px\"\n paddingTop=\"2px\"\n paddingBottom=\"2px\"\n size=\"S\"\n variant={statusVariants[status]}\n >\n <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n {capitalize(status)}\n </Typography>\n </Status>\n ) : null}\n </Flex>\n );\n};\n\nconst LocaleOptionStartIcon = ({\n entryWithLocaleExists,\n translationStatus,\n index,\n}: {\n entryWithLocaleExists: boolean;\n translationStatus?: 'processing' | 'failed' | 'completed' | undefined;\n index?: number;\n}) => {\n const isAiAvailable = useAIAvailability();\n\n if (!entryWithLocaleExists) {\n return <Plus />;\n }\n\n if (isAiAvailable && index !== 0 && translationStatus === 'failed') {\n return <WarningCircle fill=\"warning600\" />;\n }\n\n return null;\n};\n\nconst LocalePickerAction = ({\n document,\n meta,\n model,\n collectionType,\n documentId,\n}: HeaderActionProps) => {\n const { formatMessage } = useIntl();\n const [{ query }, setQuery] = useQueryParams<I18nBaseQuery>();\n const { hasI18n, canCreate, canRead } = useI18n();\n const { data: locales = [] } = useGetLocalesQuery();\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const { schema } = useDocument({\n model,\n collectionType,\n documentId,\n params: { locale: currentDesiredLocale },\n });\n const { data: jobData } = useGetAILocalizationJobsByDocumentQuery({\n documentId: documentId!,\n model: model!,\n collectionType: collectionType!,\n });\n const { data: settings } = useGetSettingsQuery();\n const isAiAvailable = useAIAvailability();\n const setValues = useForm('LocalePickerAction', (state) => state.setValues);\n\n const handleSelect = React.useCallback(\n (value: string) => {\n setQuery(\n {\n plugins: {\n ...query.plugins,\n i18n: {\n locale: value,\n },\n },\n },\n 'push',\n true\n );\n },\n [query.plugins, setQuery]\n );\n\n const nonTranslatedFields = React.useMemo(() => {\n if (!schema?.attributes) return [];\n return Object.keys(schema.attributes).filter((field) => {\n const attribute = schema.attributes[field] as Record<string, unknown>;\n return (attribute?.pluginOptions as any)?.i18n?.localized === false;\n });\n }, [schema?.attributes]);\n\n const sourceLocaleData = React.useMemo(() => {\n if (!Array.isArray(locales) || !meta?.availableLocales) return null;\n\n const defaultLocale = locales.find((locale: Locale) => locale.isDefault);\n const existingLocales = meta.availableLocales.map((loc) => loc.locale);\n\n const sourceLocaleCode =\n defaultLocale &&\n existingLocales.includes(defaultLocale.code) &&\n defaultLocale.code !== currentDesiredLocale\n ? defaultLocale.code\n : existingLocales.find((locale) => locale !== currentDesiredLocale);\n\n if (!sourceLocaleCode) return null;\n\n // Find the document data from availableLocales (now includes non-translatable fields)\n const sourceLocaleDoc = meta.availableLocales.find((loc) => loc.locale === sourceLocaleCode);\n\n return sourceLocaleDoc\n ? { locale: sourceLocaleCode, data: sourceLocaleDoc as Record<string, unknown> }\n : null;\n }, [locales, meta?.availableLocales, currentDesiredLocale]);\n\n /**\n * Prefilling form with non-translatable fields from already existing locale\n */\n React.useEffect(() => {\n // Only run when creating a new locale (no document ID yet) and when we have non-translatable fields\n if (!document?.id && nonTranslatedFields.length > 0 && sourceLocaleData?.data) {\n const dataToSet = nonTranslatedFields.reduce(\n (acc: Record<string, unknown>, field: string) => {\n acc[field] = sourceLocaleData.data[field];\n return acc;\n },\n {}\n );\n\n if (Object.keys(dataToSet).length > 0) {\n setValues(dataToSet);\n }\n }\n }, [document?.id, nonTranslatedFields, sourceLocaleData?.data, setValues]);\n\n React.useEffect(() => {\n if (!Array.isArray(locales) || !hasI18n) {\n return;\n }\n /**\n * Handle the case where the current locale query param doesn't exist\n * in the list of available locales, so we redirect to the default locale.\n */\n const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n const defaultLocale = locales.find((locale) => locale.isDefault);\n if (!doesLocaleExist && defaultLocale?.code) {\n handleSelect(defaultLocale.code);\n }\n }, [handleSelect, hasI18n, locales, currentDesiredLocale]);\n\n const currentLocale = Array.isArray(locales)\n ? locales.find((locale) => locale.code === currentDesiredLocale)\n : undefined;\n\n // Use meta.availableLocales instead of document.localizations\n // meta.availableLocales contains all locales for the document, even when creating new locales\n const availableLocales = meta?.availableLocales ?? [];\n const documentLocalizations = document?.localizations ?? [];\n\n // Prefer meta.availableLocales as it's more reliable, fallback to document.localizations\n const allLocalizations = availableLocales.length > 0 ? availableLocales : documentLocalizations;\n\n const allCurrentLocales = [\n { status: getDocumentStatus(document, meta), locale: currentLocale?.code },\n ...allLocalizations,\n ];\n\n if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {\n return null;\n }\n\n const displayedLocales = locales.filter((locale) => {\n /**\n * If you can read we allow you to see the locale exists\n * otherwise the locale is hidden.\n */\n return canRead.includes(locale.code);\n });\n\n const localesSortingDefaultFirst = displayedLocales.sort((a, b) =>\n a.isDefault ? -1 : b.isDefault ? 1 : 0\n );\n\n return {\n label: formatMessage({\n id: getTranslation('Settings.locales.modal.locales.label'),\n defaultMessage: 'Locales',\n }),\n options: localesSortingDefaultFirst.map((locale, index) => {\n const entryWithLocaleExists = allCurrentLocales.some((doc) => doc.locale === locale.code);\n\n const currentLocaleDoc = allCurrentLocales.find((doc) =>\n 'locale' in doc ? doc.locale === locale.code : false\n );\n\n const permissionsToCheck = currentLocaleDoc ? canRead : canCreate;\n\n if (isAiAvailable && settings?.data?.aiLocalizations) {\n return {\n _render: () => (\n <React.Fragment key={index}>\n <SingleSelectOption\n disabled={!permissionsToCheck.includes(locale.code)}\n key={locale.code}\n startIcon={\n <LocaleOptionStartIcon\n entryWithLocaleExists={entryWithLocaleExists}\n translationStatus={jobData?.data?.status}\n index={index}\n />\n }\n value={locale.code}\n >\n <LocaleOption\n isDraftAndPublishEnabled={!!schema?.options?.draftAndPublish}\n locale={locale}\n status={currentLocaleDoc?.status}\n entryExists={entryWithLocaleExists}\n />\n </SingleSelectOption>\n {localesSortingDefaultFirst.length > 1 && index === 0 && (\n <Box paddingRight={4} paddingLeft={4} paddingTop={2} paddingBottom={2}>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: getTranslation('CMEditViewLocalePicker.locale.ai-translations'),\n defaultMessage: 'AI Translations',\n })}\n </Typography>\n </Box>\n )}\n </React.Fragment>\n ),\n };\n }\n\n return {\n disabled: !permissionsToCheck.includes(locale.code),\n value: locale.code,\n label: (\n <LocaleOption\n isDraftAndPublishEnabled={!!schema?.options?.draftAndPublish}\n locale={locale}\n status={currentLocaleDoc?.status}\n entryExists={entryWithLocaleExists}\n translationStatus={jobData?.data?.status}\n />\n ),\n startIcon: <LocaleOptionStartIcon entryWithLocaleExists={entryWithLocaleExists} />,\n };\n }),\n customizeContent: () => currentLocale?.name,\n onSelect: handleSelect,\n value: currentLocale,\n };\n};\n\ntype UseDocument = typeof useDocument;\n\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AISettingsStatusAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst AITranslationStatusIcon = styled(Status)<{ $isAISettingEnabled: boolean }>`\n display: flex;\n gap: ${({ theme }) => theme.spaces[1]};\n justify-content: center;\n align-items: center;\n height: 3.2rem;\n width: 3.2rem;\n\n // Disabled state\n ${({ $isAISettingEnabled, theme }) =>\n !$isAISettingEnabled &&\n `\n background-color: ${theme.colors.neutral150};\n `}\n\n svg {\n ${({ $isAISettingEnabled, theme }) =>\n !$isAISettingEnabled &&\n `\n fill: ${theme.colors.neutral300};\n `}\n }\n`;\n\nconst SpinningLoader = styled(Loader)`\n @keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n\n animation: spin 2s linear infinite;\n`;\n\nconst AITranslationStatusAction = ({ documentId, model, collectionType }: HeaderActionProps) => {\n const { formatMessage } = useIntl();\n const isAIAvailable = useAIAvailability();\n const { data: settings } = useGetSettingsQuery();\n const isAISettingEnabled = settings?.data?.aiLocalizations;\n const { hasI18n } = useI18n();\n\n // Poll for AI localizations jobs when AI is enabled and we have a documentId\n const { status } = useAILocalizationJobsPolling({\n documentId,\n model,\n collectionType,\n });\n const statusVariant = (() => {\n if (status === 'failed') {\n return 'warning';\n }\n\n if (isAISettingEnabled) {\n return 'alternative';\n }\n\n return 'neutral';\n })();\n\n // Do not display this action when i18n is not available\n if (!hasI18n) {\n return null;\n }\n\n // Do not display this action when AI is not available\n if (!isAIAvailable) {\n return null;\n }\n\n return {\n _status: {\n message: (\n <Flex\n height=\"100%\"\n alignItems=\"center\"\n aria-label={formatMessage({\n id: getTranslation('CMEditViewAITranslation.status-aria-label'),\n defaultMessage: 'AI Translation Status',\n })}\n >\n <AITranslationStatusIcon\n $isAISettingEnabled={Boolean(isAISettingEnabled)}\n variant={statusVariant}\n size=\"S\"\n >\n {status === 'processing' ? <SpinningLoader /> : <Sparkle />}\n </AITranslationStatusIcon>\n </Flex>\n ),\n tooltip: (\n <Flex direction=\"column\" padding={4} alignItems=\"flex-start\" width=\"25rem\">\n <Typography variant=\"pi\" fontWeight=\"600\">\n {formatMessage(\n {\n id: getTranslation('CMEditViewAITranslation.status-title'),\n defaultMessage:\n '{enabled, select, true {AI translation enabled} false {AI translation disabled} other {AI translation disabled}}',\n },\n { enabled: isAISettingEnabled }\n )}\n </Typography>\n <Typography variant=\"pi\" paddingTop={1} paddingBottom={3}>\n {formatMessage({\n id: getTranslation('CMEditViewAITranslation.status-description'),\n defaultMessage:\n 'Our AI translates content in all locales each time you save a modification in the default locale.',\n })}\n </Typography>\n <Link\n fontSize=\"inherit\"\n tag={NavLink}\n to=\"/settings/internationalization\"\n style={{ alignSelf: 'flex-end' }}\n >\n <Typography variant=\"pi\" textAlign=\"right\">\n {formatMessage(\n {\n id: getTranslation('CMEditViewAITranslation.settings-link'),\n defaultMessage:\n '{enabled, select, true {Disable it in settings} false {Enable it in settings} other {Enable it in settings}}',\n },\n { enabled: isAISettingEnabled }\n )}\n </Typography>\n </Link>\n </Flex>\n ),\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FillFromAnotherLocaleAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst FillFromAnotherLocaleAction = ({\n documentId,\n meta,\n model,\n collectionType,\n}: HeaderActionProps) => {\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams<I18nBaseQuery>();\n const { hasI18n } = useI18n();\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const [localeSelected, setLocaleSelected] = React.useState<string | null>(null);\n const setValues = useForm('FillFromAnotherLocale', (state) => state.setValues);\n\n const { getDocument } = useDocumentActions();\n const { schema, components } = useDocument({\n model,\n documentId,\n collectionType,\n params: { locale: currentDesiredLocale },\n });\n const { data: locales = [] } = useGetLocalesQuery();\n\n const isAIAvailable = useAIAvailability();\n const { data: settings } = useGetSettingsQuery();\n const isAISettingEnabled = settings?.data?.aiLocalizations;\n\n const availableLocales = Array.isArray(locales)\n ? locales.filter((locale) => meta?.availableLocales.some((l) => l.locale === locale.code))\n : [];\n\n const fillFromLocale = (onClose: () => void) => async () => {\n const response = await getDocument({\n collectionType,\n model,\n documentId,\n params: { locale: localeSelected },\n });\n if (!response || !schema) {\n return;\n }\n\n const { data } = response;\n\n const cleanedData = cleanData(data, schema, components);\n\n setValues(cleanedData);\n\n onClose();\n };\n\n if (!hasI18n) {\n return null;\n }\n\n // Do not display this action when AI is available and AI translations are enabled\n if (isAIAvailable && isAISettingEnabled) {\n return null;\n }\n\n return {\n type: 'icon',\n icon: <Earth />,\n disabled: availableLocales.length === 0,\n label: formatMessage({\n id: getTranslation('CMEditViewCopyLocale.copy-text'),\n defaultMessage: 'Fill in from another locale',\n }),\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.title'),\n defaultMessage: 'Confirmation',\n }),\n content: ({ onClose }: { onClose: () => void }) => (\n <>\n <Dialog.Body>\n <Flex direction=\"column\" gap={3}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography textAlign=\"center\">\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.body'),\n defaultMessage:\n 'Your current content will be erased and filled by the content of the selected locale:',\n })}\n </Typography>\n <Field.Root width=\"100%\">\n <Field.Label>\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.field.label'),\n defaultMessage: 'Locale',\n })}\n </Field.Label>\n <SingleSelect\n value={localeSelected}\n placeholder={formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.field.placeholder'),\n defaultMessage: 'Select one locale...',\n })}\n // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n onChange={(value) => setLocaleSelected(value)}\n >\n {availableLocales.map((locale) => (\n <SingleSelectOption key={locale.code} value={locale.code}>\n {locale.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Flex gap={2} width=\"100%\">\n <Button flex=\"auto\" variant=\"tertiary\" onClick={onClose}>\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.cancel-text'),\n defaultMessage: 'No, cancel',\n })}\n </Button>\n <Button flex=\"auto\" variant=\"success\" onClick={fillFromLocale(onClose)}>\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.submit-text'),\n defaultMessage: 'Yes, fill in',\n })}\n </Button>\n </Flex>\n </Dialog.Footer>\n </>\n ),\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocaleAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst DeleteLocaleAction: DocumentActionComponent = ({\n document,\n documentId,\n model,\n collectionType,\n}) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { delete: deleteAction, isLoading } = useDocumentActions();\n const { hasI18n, canDelete } = useI18n();\n\n // Get the current locale object, using the URL instead of document so it works while creating\n const [{ query }] = useQueryParams<I18nBaseQuery>();\n const { data: locales = [] } = useGetLocalesQuery();\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const locale = !('error' in locales) && locales.find((loc) => loc.code === currentDesiredLocale);\n\n if (!hasI18n) {\n return null;\n }\n\n return {\n disabled:\n (document?.locale && !canDelete.includes(document.locale)) || !document || !document.id,\n position: ['header', 'table-row'],\n label: formatMessage(\n {\n id: getTranslation('actions.delete.label'),\n defaultMessage: 'Delete entry ({locale})',\n },\n { locale: locale && locale.name }\n ),\n icon: <StyledTrash />,\n variant: 'danger',\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: getTranslation('actions.delete.dialog.title'),\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: getTranslation('actions.delete.dialog.body'),\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n const unableToDelete =\n // We are unable to delete a collection type without a document ID\n // & unable to delete generally if there is no document locale\n (collectionType !== 'single-types' && !documentId) || !document?.locale;\n\n if (unableToDelete) {\n console.error(\n \"You're trying to delete a document without an id or locale, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: getTranslation('actions.delete.error'),\n defaultMessage: 'An error occurred while trying to delete the document locale.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await deleteAction({\n documentId,\n model,\n collectionType,\n params: { locale: document.locale },\n });\n\n if (!('error' in res)) {\n navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n }\n },\n },\n };\n};\n\nexport type LocaleStatus = {\n locale: string;\n status: Modules.Documents.Params.PublicationStatus.Kind | 'modified';\n};\n\ninterface ExtendedDocumentActionProps extends DocumentActionProps {\n action?: 'bulk-publish' | 'bulk-unpublish';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleAction\n *\n * This component is used to handle bulk publish and unpublish actions on locales.\n * -----------------------------------------------------------------------------------------------*/\n\nconst BulkLocaleAction: DocumentActionComponent = ({\n document,\n documentId,\n model,\n collectionType,\n action,\n meta,\n}: ExtendedDocumentActionProps) => {\n const locale = document?.locale ?? null;\n const [{ query }] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const isOnPublishedTab = query.status === 'published';\n\n const { formatMessage } = useIntl();\n const { hasI18n, canPublish } = useI18n();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [selectedRows, setSelectedRows] = React.useState<any[]>([]);\n const [isDraftRelationConfirmationOpen, setIsDraftRelationConfirmationOpen] =\n React.useState<boolean>(false);\n\n const { publishMany: publishManyAction, unpublishMany: unpublishManyAction } =\n useDocumentActions();\n\n const { schema, validate } = useDocument(\n {\n model,\n collectionType,\n documentId,\n params: {\n locale,\n },\n },\n {\n // No need to fetch the document, the data is already available in the `document` prop\n skip: true,\n }\n );\n\n const { data: localesMetadata = [] } = useGetLocalesQuery(hasI18n ? undefined : skipToken);\n\n const headers = [\n {\n label: formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n }),\n name: 'name',\n },\n {\n label: formatMessage({\n id: getTranslation('CMEditViewBulkLocale.status'),\n defaultMessage: 'Status',\n }),\n name: 'status',\n },\n {\n label: formatMessage({\n id: getTranslation('CMEditViewBulkLocale.publication-status'),\n defaultMessage: 'Publication Status',\n }),\n name: 'publication-status',\n },\n ];\n\n // Extract the rows for the bulk locale publish modal and any validation\n // errors per locale\n const [rows, validationErrors] = React.useMemo(() => {\n if (!document) {\n return [[], {}];\n }\n\n const metaLocalizations = (meta?.availableLocales ?? []).map((locale) => ({\n locale: locale.locale,\n status: (locale.status ?? 'draft') as LocaleStatus['status'],\n }));\n\n const documentLocalizations = (\n (document.localizations ?? []) as Array<{\n locale?: string | null;\n status?: Modules.Documents.Params.PublicationStatus.Kind | 'modified' | null;\n }>\n ).map((doc) => ({\n locale: doc.locale ?? undefined,\n status: (doc.status ?? 'draft') as LocaleStatus['status'],\n }));\n\n const localesMap = new Map<string, LocaleStatus>();\n\n metaLocalizations.forEach(({ locale, status }) => {\n if (locale) {\n localesMap.set(locale, { locale, status });\n }\n });\n\n documentLocalizations.forEach(({ locale, status }) => {\n if (locale) {\n localesMap.set(locale, { locale, status });\n }\n });\n\n // Build the rows for the bulk locale publish modal by combining the current\n // document with all the available locales from the document meta\n const locales: LocaleStatus[] = [];\n\n if (document?.locale) {\n locales.push({\n locale: document.locale,\n status: (document.status ?? 'draft') as LocaleStatus['status'],\n });\n }\n\n locales.push(\n ...Array.from(localesMap.entries())\n .filter(([locale]) => locale !== document?.locale)\n .map(([, value]) => value)\n );\n\n if (locales.length === 0 && document?.locale) {\n locales.push({\n locale: document.locale,\n status: (document.status ?? 'draft') as LocaleStatus['status'],\n });\n }\n\n // Build the validation errors for each locale.\n const allDocuments = [document, ...(document.localizations ?? [])];\n const errors = allDocuments.reduce<FormErrors>((errs, document) => {\n if (!document) {\n return errs;\n }\n\n // Validate each locale entry via the useDocument validate function and store any errors in a dictionary\n const validation = validate(document as Modules.Documents.AnyDocument);\n if (validation !== null) {\n errs[document.locale] = validation;\n }\n return errs;\n }, {});\n\n return [locales, errors];\n }, [document, meta?.availableLocales, validate]);\n\n const isBulkPublish = action === 'bulk-publish';\n const localesForAction = selectedRows.reduce((acc: string[], selectedRow: LocaleStatus) => {\n const isValidLocale =\n // Validation errors are irrelevant if we are trying to unpublish\n !isBulkPublish || !Object.keys(validationErrors).includes(selectedRow.locale);\n\n const shouldAddLocale = isBulkPublish\n ? selectedRow.status !== 'published' && isValidLocale\n : selectedRow.status !== 'draft' && isValidLocale;\n\n if (shouldAddLocale) {\n acc.push(selectedRow.locale);\n }\n\n return acc;\n }, []);\n\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see https://www.notion.so/strapi/Count-draft-relations-56901b492efb45ab90d42fe975b32bd8?pvs=4\n const enableDraftRelationsCount = false;\n const {\n data: draftRelationsCount = 0,\n isLoading: isDraftRelationsLoading,\n error: isDraftRelationsError,\n } = useGetManyDraftRelationCountQuery(\n {\n model,\n documentIds: [documentId!],\n locale: localesForAction,\n },\n {\n skip: !enableDraftRelationsCount || !documentId || localesForAction.length === 0,\n }\n );\n\n React.useEffect(() => {\n if (isDraftRelationsError) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(isDraftRelationsError),\n });\n }\n }, [isDraftRelationsError, toggleNotification, formatAPIError]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n if (!hasI18n) {\n return null;\n }\n\n if (!documentId) {\n return null;\n }\n\n // This document action can be enabled given that draft and publish and i18n are\n // enabled and we can publish the current locale.\n\n const publish = async () => {\n await publishManyAction({\n model,\n documentIds: [documentId],\n params: {\n ...params,\n locale: localesForAction,\n },\n });\n\n setSelectedRows([]);\n };\n\n const unpublish = async () => {\n await unpublishManyAction({\n model,\n documentIds: [documentId],\n params: {\n ...params,\n locale: localesForAction,\n },\n });\n\n setSelectedRows([]);\n };\n\n const handleAction = async () => {\n if (draftRelationsCount > 0) {\n setIsDraftRelationConfirmationOpen(true);\n } else if (isBulkPublish) {\n await publish();\n } else {\n await unpublish();\n }\n };\n\n if (isDraftRelationConfirmationOpen) {\n return {\n label: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n variant: 'danger',\n dialog: {\n onCancel: () => {\n setIsDraftRelationConfirmationOpen(false);\n },\n onConfirm: async () => {\n await publish();\n\n setIsDraftRelationConfirmationOpen(false);\n },\n type: 'dialog',\n title: formatMessage({\n id: getTranslation('actions.publish.dialog.title'),\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <WarningCircle width=\"2.4rem\" height=\"2.4rem\" fill=\"danger600\" />\n <Typography textAlign=\"center\">\n {formatMessage({\n id: getTranslation('CMEditViewBulkLocale.draft-relation-warning'),\n defaultMessage:\n 'Some locales are related to draft entries. Publishing them could leave broken links in your app.',\n })}\n </Typography>\n <Typography textAlign=\"center\">\n {formatMessage({\n id: getTranslation('CMEditViewBulkLocale.continue-confirmation'),\n defaultMessage: 'Are you sure you want to continue?',\n })}\n </Typography>\n </Flex>\n ),\n },\n };\n }\n\n const hasPermission = selectedRows\n .map(({ locale }) => locale)\n .every((locale) => canPublish.includes(locale));\n\n return {\n label: formatMessage({\n id: getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),\n defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`,\n }),\n variant: isBulkPublish ? 'secondary' : 'danger',\n icon: isBulkPublish ? <ListPlus /> : <Cross />,\n disabled: isOnPublishedTab || canPublish.length === 0,\n position: ['panel'],\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),\n defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`,\n }),\n content: () => {\n return (\n <Table.Root\n headers={headers}\n rows={rows.map((row) => ({\n ...row,\n id: row.locale,\n }))}\n selectedRows={selectedRows}\n onSelectedRowsChange={(tableSelectedRows) => setSelectedRows(tableSelectedRows)}\n >\n <BulkLocaleActionModal\n validationErrors={validationErrors}\n headers={headers}\n rows={rows}\n localesMetadata={localesMetadata as Locale[]}\n action={action ?? 'bulk-publish'}\n />\n </Table.Root>\n );\n },\n footer: () => (\n <Modal.Footer justifyContent=\"flex-end\">\n <Button\n loading={isDraftRelationsLoading}\n disabled={!hasPermission || localesForAction.length === 0}\n variant=\"default\"\n onClick={handleAction}\n >\n {formatMessage({\n id: isBulkPublish ? 'app.utils.publish' : 'app.utils.unpublish',\n defaultMessage: isBulkPublish ? 'Publish' : 'Unpublish',\n })}\n </Button>\n </Modal.Footer>\n ),\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocalePublishAction\n * -----------------------------------------------------------------------------------------------*/\nconst BulkLocalePublishAction: DocumentActionComponent = (props: ExtendedDocumentActionProps) => {\n return BulkLocaleAction({ action: 'bulk-publish', ...props });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleUnpublishAction\n * -----------------------------------------------------------------------------------------------*/\nconst BulkLocaleUnpublishAction: DocumentActionComponent = (props: ExtendedDocumentActionProps) => {\n return BulkLocaleAction({ action: 'bulk-unpublish', ...props });\n};\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledTrash = styled(Trash)`\n path {\n fill: currentColor;\n }\n`;\n\nexport {\n BulkLocalePublishAction,\n BulkLocaleUnpublishAction,\n DeleteLocaleAction,\n LocalePickerAction,\n FillFromAnotherLocaleAction,\n AITranslationStatusAction,\n};\n"],"names":["statusVariants","draft","published","modified","LocaleOption","isDraftAndPublishEnabled","locale","status","entryExists","formatMessage","useIntl","id","getTranslation","defaultMessage","bold","_jsx","b","name","_jsxs","Flex","width","gap","justifyContent","Typography","Status","display","paddingLeft","paddingRight","paddingTop","paddingBottom","size","variant","tag","fontWeight","capitalize","LocaleOptionStartIcon","entryWithLocaleExists","translationStatus","index","isAiAvailable","useAIAvailability","Plus","WarningCircle","fill","LocalePickerAction","document","meta","model","collectionType","documentId","query","setQuery","useQueryParams","hasI18n","canCreate","canRead","useI18n","data","locales","useGetLocalesQuery","currentDesiredLocale","plugins","i18n","schema","useDocument","params","jobData","useGetAILocalizationJobsByDocumentQuery","settings","useGetSettingsQuery","setValues","useForm","state","handleSelect","React","useCallback","value","nonTranslatedFields","useMemo","attributes","Object","keys","filter","field","attribute","pluginOptions","localized","sourceLocaleData","Array","isArray","availableLocales","defaultLocale","find","isDefault","existingLocales","map","loc","sourceLocaleCode","includes","code","sourceLocaleDoc","useEffect","length","dataToSet","reduce","acc","doesLocaleExist","currentLocale","undefined","documentLocalizations","localizations","allLocalizations","allCurrentLocales","getDocumentStatus","displayedLocales","localesSortingDefaultFirst","sort","a","label","options","some","doc","currentLocaleDoc","permissionsToCheck","aiLocalizations","_render","Fragment","SingleSelectOption","disabled","startIcon","draftAndPublish","Box","customizeContent","onSelect","docStatus","statuses","availableStatus","publishedAt","AITranslationStatusIcon","styled","theme","spaces","$isAISettingEnabled","colors","neutral150","neutral300","SpinningLoader","Loader","AITranslationStatusAction","isAIAvailable","isAISettingEnabled","useAILocalizationJobsPolling","statusVariant","_status","message","height","alignItems","aria-label","Boolean","Sparkle","tooltip","direction","padding","enabled","Link","fontSize","NavLink","to","style","alignSelf","textAlign","FillFromAnotherLocaleAction","localeSelected","setLocaleSelected","useState","getDocument","useDocumentActions","components","l","fillFromLocale","onClose","response","cleanedData","cleanData","type","icon","Earth","dialog","title","content","_Fragment","Dialog","Body","Field","Root","Label","SingleSelect","placeholder","onChange","Footer","Button","flex","onClick","DeleteLocaleAction","navigate","useNavigate","toggleNotification","useNotification","delete","deleteAction","isLoading","canDelete","position","StyledTrash","loading","onConfirm","unableToDelete","console","error","res","pathname","replace","BulkLocaleAction","action","buildValidParams","isOnPublishedTab","canPublish","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","selectedRows","setSelectedRows","isDraftRelationConfirmationOpen","setIsDraftRelationConfirmationOpen","publishMany","publishManyAction","unpublishMany","unpublishManyAction","validate","skip","localesMetadata","skipToken","headers","rows","validationErrors","metaLocalizations","localesMap","Map","forEach","set","push","from","entries","allDocuments","errors","errs","validation","isBulkPublish","localesForAction","selectedRow","isValidLocale","shouldAddLocale","draftRelationsCount","isDraftRelationsLoading","isDraftRelationsError","useGetManyDraftRelationCountQuery","documentIds","publish","unpublish","handleAction","onCancel","hasPermission","every","ListPlus","Cross","Table","row","onSelectedRowsChange","tableSelectedRows","BulkLocaleActionModal","footer","Modal","BulkLocalePublishAction","props","BulkLocaleUnpublishAction","Trash"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CMHeaderActions.mjs","sources":["../../../admin/src/components/CMHeaderActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { skipToken } from '@reduxjs/toolkit/query';\nimport {\n useNotification,\n useQueryParams,\n Table,\n useAPIErrorHandler,\n FormErrors,\n useForm,\n} from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport {\n type DocumentActionComponent,\n type DocumentActionProps,\n unstable_useDocument as useDocument,\n unstable_useDocumentActions as useDocumentActions,\n buildValidParams,\n HeaderActionProps,\n} from '@strapi/content-manager/strapi-admin';\nimport {\n Flex,\n Status,\n Typography,\n Button,\n Modal,\n Field,\n SingleSelect,\n SingleSelectOption,\n Dialog,\n type StatusVariant,\n Box,\n Link,\n} from '@strapi/design-system';\nimport { WarningCircle, ListPlus, Trash, Earth, Cross, Plus, Sparkle, Loader } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAILocalizationJobsPolling } from '../hooks/useAILocalizationJobsPolling';\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetAILocalizationJobsByDocumentQuery } from '../services/aiLocalizationJobs';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { useGetManyDraftRelationCountQuery } from '../services/relations';\nimport { useGetSettingsQuery } from '../services/settings';\nimport { cleanData } from '../utils/clean';\nimport { getTranslation } from '../utils/getTranslation';\nimport { capitalize } from '../utils/strings';\n\nimport { BulkLocaleActionModal } from './BulkLocaleActionModal';\n\nimport type { Locale } from '../../../shared/contracts/locales';\nimport type { I18nBaseQuery } from '../types';\nimport type { Modules } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * LocalePickerAction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LocaleOptionProps {\n isDraftAndPublishEnabled: boolean;\n locale: Locale;\n status: 'draft' | 'published' | 'modified';\n entryExists: boolean;\n translationStatus?: 'processing' | 'failed' | 'completed' | undefined;\n}\n\nconst statusVariants: Record<LocaleOptionProps['status'], StatusVariant> = {\n draft: 'secondary',\n published: 'success',\n modified: 'alternative',\n};\n\nconst LocaleOption = ({\n isDraftAndPublishEnabled,\n locale,\n status,\n entryExists,\n}: LocaleOptionProps) => {\n const { formatMessage } = useIntl();\n\n if (!entryExists) {\n return formatMessage(\n {\n id: getTranslation('CMEditViewLocalePicker.locale.create'),\n defaultMessage: 'Create <bold>{locale}</bold> locale',\n },\n {\n bold: (locale: React.ReactNode) => <b>{locale}</b>,\n locale: locale.name,\n }\n );\n }\n\n return (\n <Flex width=\"100%\" gap={1} justifyContent=\"space-between\">\n <Typography>{locale.name}</Typography>\n {isDraftAndPublishEnabled ? (\n <Status\n display=\"flex\"\n paddingLeft=\"6px\"\n paddingRight=\"6px\"\n paddingTop=\"2px\"\n paddingBottom=\"2px\"\n size=\"S\"\n variant={statusVariants[status]}\n >\n <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n {capitalize(status)}\n </Typography>\n </Status>\n ) : null}\n </Flex>\n );\n};\n\nconst LocaleOptionStartIcon = ({\n entryWithLocaleExists,\n translationStatus,\n index,\n}: {\n entryWithLocaleExists: boolean;\n translationStatus?: 'processing' | 'failed' | 'completed' | undefined;\n index?: number;\n}) => {\n const isAiAvailable = useAIAvailability();\n\n if (!entryWithLocaleExists) {\n return <Plus />;\n }\n\n if (isAiAvailable && index !== 0 && translationStatus === 'failed') {\n return <WarningCircle fill=\"warning600\" />;\n }\n\n return null;\n};\n\nconst LocalePickerAction = ({\n document,\n meta,\n model,\n collectionType,\n documentId,\n}: HeaderActionProps) => {\n const { formatMessage } = useIntl();\n const [{ query }, setQuery] = useQueryParams<I18nBaseQuery>();\n const { hasI18n, canCreate, canRead } = useI18n();\n const { data: locales = [] } = useGetLocalesQuery();\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const { schema } = useDocument({\n model,\n collectionType,\n documentId,\n params: { locale: currentDesiredLocale },\n });\n const { data: jobData } = useGetAILocalizationJobsByDocumentQuery({\n documentId: documentId!,\n model: model!,\n collectionType: collectionType!,\n });\n const { data: settings } = useGetSettingsQuery();\n const isAiAvailable = useAIAvailability();\n const setValues = useForm('LocalePickerAction', (state) => state.setValues);\n\n const handleSelect = React.useCallback(\n (value: string) => {\n setQuery(\n {\n plugins: {\n ...query.plugins,\n i18n: {\n locale: value,\n },\n },\n },\n 'push',\n true\n );\n },\n [query.plugins, setQuery]\n );\n\n const nonTranslatedFields = React.useMemo(() => {\n if (!schema?.attributes) return [];\n return Object.keys(schema.attributes).filter((field) => {\n const attribute = schema.attributes[field] as Record<string, unknown>;\n return (attribute?.pluginOptions as any)?.i18n?.localized === false;\n });\n }, [schema?.attributes]);\n\n const sourceLocaleData = React.useMemo(() => {\n if (!Array.isArray(locales) || !meta?.availableLocales) return null;\n\n const defaultLocale = locales.find((locale: Locale) => locale.isDefault);\n const existingLocales = meta.availableLocales.map((loc) => loc.locale);\n\n const sourceLocaleCode =\n defaultLocale &&\n existingLocales.includes(defaultLocale.code) &&\n defaultLocale.code !== currentDesiredLocale\n ? defaultLocale.code\n : existingLocales.find((locale) => locale !== currentDesiredLocale);\n\n if (!sourceLocaleCode) return null;\n\n // Find the document data from availableLocales (now includes non-translatable fields)\n const sourceLocaleDoc = meta.availableLocales.find((loc) => loc.locale === sourceLocaleCode);\n\n return sourceLocaleDoc\n ? { locale: sourceLocaleCode, data: sourceLocaleDoc as Record<string, unknown> }\n : null;\n }, [locales, meta?.availableLocales, currentDesiredLocale]);\n\n /**\n * Prefilling form with non-translatable fields from already existing locale\n */\n React.useEffect(() => {\n // Only run when creating a new locale (no document ID yet) and when we have non-translatable fields\n if (!document?.id && nonTranslatedFields.length > 0 && sourceLocaleData?.data) {\n const dataToSet = nonTranslatedFields.reduce(\n (acc: Record<string, unknown>, field: string) => {\n acc[field] = sourceLocaleData.data[field];\n return acc;\n },\n {}\n );\n\n if (Object.keys(dataToSet).length > 0) {\n setValues(dataToSet);\n }\n }\n }, [document?.id, nonTranslatedFields, sourceLocaleData?.data, setValues]);\n\n React.useEffect(() => {\n if (!Array.isArray(locales) || !hasI18n) {\n return;\n }\n /**\n * Handle the case where the current locale query param doesn't exist\n * in the list of available locales, so we redirect to the default locale.\n */\n const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n const defaultLocale = locales.find((locale) => locale.isDefault);\n if (!doesLocaleExist && defaultLocale?.code) {\n handleSelect(defaultLocale.code);\n }\n }, [handleSelect, hasI18n, locales, currentDesiredLocale]);\n\n const currentLocale = Array.isArray(locales)\n ? locales.find((locale) => locale.code === currentDesiredLocale)\n : undefined;\n\n // Use meta.availableLocales instead of document.localizations\n // meta.availableLocales contains all locales for the document, even when creating new locales\n const availableLocales = meta?.availableLocales ?? [];\n const documentLocalizations = document?.localizations ?? [];\n\n // Prefer meta.availableLocales as it's more reliable, fallback to document.localizations\n const allLocalizations = availableLocales.length > 0 ? availableLocales : documentLocalizations;\n\n const allCurrentLocales = [\n { status: getDocumentStatus(document, meta), locale: currentLocale?.code },\n ...allLocalizations,\n ];\n\n if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {\n return null;\n }\n\n const displayedLocales = locales.filter((locale) => {\n /**\n * If you can read we allow you to see the locale exists\n * otherwise the locale is hidden.\n */\n return canRead.includes(locale.code);\n });\n\n const localesSortingDefaultFirst = displayedLocales.sort((a, b) =>\n a.isDefault ? -1 : b.isDefault ? 1 : 0\n );\n\n return {\n label: formatMessage({\n id: getTranslation('Settings.locales.modal.locales.label'),\n defaultMessage: 'Locales',\n }),\n options: localesSortingDefaultFirst.map((locale, index) => {\n const entryWithLocaleExists = allCurrentLocales.some((doc) => doc.locale === locale.code);\n\n const currentLocaleDoc = allCurrentLocales.find((doc) =>\n 'locale' in doc ? doc.locale === locale.code : false\n );\n\n const permissionsToCheck = currentLocaleDoc ? canRead : canCreate;\n\n if (isAiAvailable && settings?.data?.aiLocalizations) {\n return {\n _render: () => (\n <React.Fragment key={index}>\n <SingleSelectOption\n disabled={!permissionsToCheck.includes(locale.code)}\n key={locale.code}\n startIcon={\n <LocaleOptionStartIcon\n entryWithLocaleExists={entryWithLocaleExists}\n translationStatus={jobData?.data?.status}\n index={index}\n />\n }\n value={locale.code}\n >\n <LocaleOption\n isDraftAndPublishEnabled={!!schema?.options?.draftAndPublish}\n locale={locale}\n status={currentLocaleDoc?.status}\n entryExists={entryWithLocaleExists}\n />\n </SingleSelectOption>\n {localesSortingDefaultFirst.length > 1 && index === 0 && (\n <Box paddingRight={4} paddingLeft={4} paddingTop={2} paddingBottom={2}>\n <Typography variant=\"sigma\">\n {formatMessage({\n id: getTranslation('CMEditViewLocalePicker.locale.ai-translations'),\n defaultMessage: 'AI Translations',\n })}\n </Typography>\n </Box>\n )}\n </React.Fragment>\n ),\n };\n }\n\n return {\n disabled: !permissionsToCheck.includes(locale.code),\n value: locale.code,\n label: (\n <LocaleOption\n isDraftAndPublishEnabled={!!schema?.options?.draftAndPublish}\n locale={locale}\n status={currentLocaleDoc?.status}\n entryExists={entryWithLocaleExists}\n translationStatus={jobData?.data?.status}\n />\n ),\n startIcon: <LocaleOptionStartIcon entryWithLocaleExists={entryWithLocaleExists} />,\n };\n }),\n customizeContent: () => currentLocale?.name,\n onSelect: handleSelect,\n value: currentLocale,\n };\n};\n\ntype UseDocument = typeof useDocument;\n\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AISettingsStatusAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst AITranslationStatusIcon = styled(Status)<{ $isAISettingEnabled: boolean }>`\n display: flex;\n gap: ${({ theme }) => theme.spaces[1]};\n justify-content: center;\n align-items: center;\n height: 3.2rem;\n width: 3.2rem;\n\n // Disabled state\n ${({ $isAISettingEnabled, theme }) =>\n !$isAISettingEnabled &&\n `\n background-color: ${theme.colors.neutral150};\n `}\n\n svg {\n ${({ $isAISettingEnabled, theme }) =>\n !$isAISettingEnabled &&\n `\n fill: ${theme.colors.neutral300};\n `}\n }\n`;\n\nconst SpinningLoader = styled(Loader)`\n @keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n\n animation: spin 2s linear infinite;\n`;\n\nconst AITranslationStatusAction = ({ documentId, model, collectionType }: HeaderActionProps) => {\n const { formatMessage } = useIntl();\n const isAIAvailable = useAIAvailability();\n const { data: settings } = useGetSettingsQuery();\n const isAISettingEnabled = settings?.data?.aiLocalizations;\n const { hasI18n } = useI18n();\n\n // Poll for AI localizations jobs when AI is enabled and we have a documentId\n const { status } = useAILocalizationJobsPolling({\n documentId,\n model,\n collectionType,\n });\n const statusVariant = (() => {\n if (status === 'failed') {\n return 'warning';\n }\n\n if (isAISettingEnabled) {\n return 'alternative';\n }\n\n return 'neutral';\n })();\n\n // Do not display this action when i18n is not available\n if (!hasI18n) {\n return null;\n }\n\n // Do not display this action when AI is not available\n if (!isAIAvailable) {\n return null;\n }\n\n return {\n _status: {\n message: (\n <Flex\n height=\"100%\"\n alignItems=\"center\"\n aria-label={formatMessage({\n id: getTranslation('CMEditViewAITranslation.status-aria-label'),\n defaultMessage: 'AI Translation Status',\n })}\n >\n <AITranslationStatusIcon\n $isAISettingEnabled={Boolean(isAISettingEnabled)}\n variant={statusVariant}\n size=\"S\"\n >\n {status === 'processing' ? <SpinningLoader /> : <Sparkle />}\n </AITranslationStatusIcon>\n </Flex>\n ),\n tooltip: (\n <Flex direction=\"column\" padding={4} alignItems=\"flex-start\" width=\"25rem\">\n <Typography variant=\"pi\" fontWeight=\"600\">\n {formatMessage(\n {\n id: getTranslation('CMEditViewAITranslation.status-title'),\n defaultMessage:\n '{enabled, select, true {AI translation enabled} false {AI translation disabled} other {AI translation disabled}}',\n },\n { enabled: isAISettingEnabled }\n )}\n </Typography>\n <Typography variant=\"pi\" paddingTop={1} paddingBottom={3}>\n {formatMessage({\n id: getTranslation('CMEditViewAITranslation.status-description'),\n defaultMessage:\n 'Our AI translates content in all locales each time you save a modification in the default locale.',\n })}\n </Typography>\n <Link\n fontSize=\"inherit\"\n tag={NavLink}\n to=\"/settings/internationalization\"\n style={{ alignSelf: 'flex-end' }}\n >\n <Typography variant=\"pi\" textAlign=\"right\">\n {formatMessage(\n {\n id: getTranslation('CMEditViewAITranslation.settings-link'),\n defaultMessage:\n '{enabled, select, true {Disable it in settings} false {Enable it in settings} other {Enable it in settings}}',\n },\n { enabled: isAISettingEnabled }\n )}\n </Typography>\n </Link>\n </Flex>\n ),\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FillFromAnotherLocaleAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst FillFromAnotherLocaleAction = ({\n documentId,\n meta,\n model,\n collectionType,\n}: HeaderActionProps) => {\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams<I18nBaseQuery>();\n const { hasI18n } = useI18n();\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const [localeSelected, setLocaleSelected] = React.useState<string | null>(null);\n const setValues = useForm('FillFromAnotherLocale', (state) => state.setValues);\n\n const { getDocument } = useDocumentActions();\n const { schema, components } = useDocument({\n model,\n documentId,\n collectionType,\n params: { locale: currentDesiredLocale },\n });\n const { data: locales = [] } = useGetLocalesQuery();\n\n const isAIAvailable = useAIAvailability();\n const { data: settings } = useGetSettingsQuery();\n const isAISettingEnabled = settings?.data?.aiLocalizations;\n\n const availableLocales = Array.isArray(locales)\n ? locales.filter((locale) => meta?.availableLocales.some((l) => l.locale === locale.code))\n : [];\n\n const fillFromLocale = (onClose: () => void) => async () => {\n const response = await getDocument({\n collectionType,\n model,\n documentId,\n params: { locale: localeSelected },\n });\n if (!response || !schema) {\n return;\n }\n\n const { data } = response;\n\n const cleanedData = cleanData(data, schema, components);\n\n setValues(cleanedData);\n\n onClose();\n };\n\n if (!hasI18n) {\n return null;\n }\n\n // Do not display this action when AI is available and AI translations are enabled\n if (isAIAvailable && isAISettingEnabled) {\n return null;\n }\n\n return {\n type: 'icon',\n icon: <Earth />,\n disabled: availableLocales.length === 0,\n label: formatMessage({\n id: getTranslation('CMEditViewCopyLocale.copy-text'),\n defaultMessage: 'Fill in from another locale',\n }),\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.title'),\n defaultMessage: 'Confirmation',\n }),\n content: ({ onClose }: { onClose: () => void }) => (\n <>\n <Dialog.Body>\n <Flex direction=\"column\" gap={3}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography textAlign=\"center\">\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.body'),\n defaultMessage:\n 'Your current content will be erased and filled by the content of the selected locale:',\n })}\n </Typography>\n <Field.Root width=\"100%\">\n <Field.Label>\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.field.label'),\n defaultMessage: 'Locale',\n })}\n </Field.Label>\n <SingleSelect\n value={localeSelected}\n placeholder={formatMessage({\n id: getTranslation('CMEditViewCopyLocale.dialog.field.placeholder'),\n defaultMessage: 'Select one locale...',\n })}\n // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n onChange={(value) => setLocaleSelected(value)}\n >\n {availableLocales.map((locale) => (\n <SingleSelectOption key={locale.code} value={locale.code}>\n {locale.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Flex gap={2} width=\"100%\">\n <Button flex=\"auto\" variant=\"tertiary\" onClick={onClose}>\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.cancel-text'),\n defaultMessage: 'No, cancel',\n })}\n </Button>\n <Button flex=\"auto\" variant=\"success\" onClick={fillFromLocale(onClose)}>\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.submit-text'),\n defaultMessage: 'Yes, fill in',\n })}\n </Button>\n </Flex>\n </Dialog.Footer>\n </>\n ),\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocaleAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst DeleteLocaleAction: DocumentActionComponent = ({\n document,\n documentId,\n model,\n collectionType,\n}) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { delete: deleteAction, isLoading } = useDocumentActions();\n const { hasI18n, canDelete } = useI18n();\n\n // Get the current locale object, using the URL instead of document so it works while creating\n const [{ query }] = useQueryParams<I18nBaseQuery>();\n const { data: locales = [] } = useGetLocalesQuery();\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const locale = !('error' in locales) && locales.find((loc) => loc.code === currentDesiredLocale);\n\n if (!hasI18n) {\n return null;\n }\n\n return {\n disabled:\n (document?.locale && !canDelete.includes(document.locale)) || !document || !document.id,\n position: ['header', 'table-row'],\n label: formatMessage(\n {\n id: getTranslation('actions.delete.label'),\n defaultMessage: 'Delete entry ({locale})',\n },\n { locale: locale && locale.name }\n ),\n icon: <StyledTrash />,\n variant: 'danger',\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: getTranslation('actions.delete.dialog.title'),\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: getTranslation('actions.delete.dialog.body'),\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n const unableToDelete =\n // We are unable to delete a collection type without a document ID\n // & unable to delete generally if there is no document locale\n (collectionType !== 'single-types' && !documentId) || !document?.locale;\n\n if (unableToDelete) {\n console.error(\n \"You're trying to delete a document without an id or locale, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: getTranslation('actions.delete.error'),\n defaultMessage: 'An error occurred while trying to delete the document locale.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await deleteAction({\n documentId,\n model,\n collectionType,\n params: { locale: document.locale },\n });\n\n if (!('error' in res)) {\n navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n }\n },\n },\n };\n};\n\nexport type LocaleStatus = {\n locale: string;\n status: Modules.Documents.Params.PublicationStatus.Kind | 'modified';\n};\n\ninterface ExtendedDocumentActionProps extends DocumentActionProps {\n action?: 'bulk-publish' | 'bulk-unpublish';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleAction\n *\n * This component is used to handle bulk publish and unpublish actions on locales.\n * -----------------------------------------------------------------------------------------------*/\n\nconst BulkLocaleAction: DocumentActionComponent = ({\n document,\n documentId,\n model,\n collectionType,\n action,\n meta,\n}: ExtendedDocumentActionProps) => {\n const locale = document?.locale ?? null;\n const [{ query }] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const isOnPublishedTab = query.status === 'published';\n\n const { formatMessage } = useIntl();\n const { hasI18n, canPublish } = useI18n();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [selectedRows, setSelectedRows] = React.useState<any[]>([]);\n const [isDraftRelationConfirmationOpen, setIsDraftRelationConfirmationOpen] =\n React.useState<boolean>(false);\n\n const { publishMany: publishManyAction, unpublishMany: unpublishManyAction } =\n useDocumentActions();\n\n const { schema, validate } = useDocument(\n {\n model,\n collectionType,\n documentId,\n params: {\n locale,\n },\n },\n {\n // No need to fetch the document, the data is already available in the `document` prop\n skip: true,\n }\n );\n\n const { data: localesMetadata = [] } = useGetLocalesQuery(hasI18n ? undefined : skipToken);\n\n const headers = [\n {\n label: formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n }),\n name: 'name',\n },\n {\n label: formatMessage({\n id: getTranslation('CMEditViewBulkLocale.status'),\n defaultMessage: 'Status',\n }),\n name: 'status',\n },\n {\n label: formatMessage({\n id: getTranslation('CMEditViewBulkLocale.publication-status'),\n defaultMessage: 'Publication Status',\n }),\n name: 'publication-status',\n },\n ];\n\n // Extract the rows for the bulk locale publish modal and any validation\n // errors per locale\n const [rows, validationErrors] = React.useMemo(() => {\n if (!document) {\n return [[], {}];\n }\n\n const metaLocalizations = (meta?.availableLocales ?? []).map((locale) => ({\n locale: locale.locale,\n status: (locale.status ?? 'draft') as LocaleStatus['status'],\n }));\n\n const documentLocalizations = (\n (document.localizations ?? []) as Array<{\n locale?: string | null;\n status?: Modules.Documents.Params.PublicationStatus.Kind | 'modified' | null;\n }>\n ).map((doc) => ({\n locale: doc.locale ?? undefined,\n status: (doc.status ?? 'draft') as LocaleStatus['status'],\n }));\n\n const localesMap = new Map<string, LocaleStatus>();\n\n metaLocalizations.forEach(({ locale, status }) => {\n if (locale) {\n localesMap.set(locale, { locale, status });\n }\n });\n\n documentLocalizations.forEach(({ locale, status }) => {\n if (locale) {\n localesMap.set(locale, { locale, status });\n }\n });\n\n // Build the rows for the bulk locale publish modal by combining the current\n // document with all the available locales from the document meta\n const locales: LocaleStatus[] = [];\n\n if (document?.locale) {\n locales.push({\n locale: document.locale,\n status: (document.status ?? 'draft') as LocaleStatus['status'],\n });\n }\n\n locales.push(\n ...Array.from(localesMap.entries())\n .filter(([locale]) => locale !== document?.locale)\n .map(([, value]) => value)\n );\n\n if (locales.length === 0 && document?.locale) {\n locales.push({\n locale: document.locale,\n status: (document.status ?? 'draft') as LocaleStatus['status'],\n });\n }\n\n // Validate the current document locale only. Other locales have minimal\n // data populated for performance reasons and will be validated server-side\n // during the actual bulk publish operation.\n const errors: FormErrors = {};\n if (document.locale) {\n const validation = validate(document as Modules.Documents.AnyDocument);\n if (validation !== null) {\n errors[document.locale] = validation;\n }\n }\n\n return [locales, errors];\n }, [document, meta?.availableLocales, validate]);\n\n const isBulkPublish = action === 'bulk-publish';\n const localesForAction = selectedRows.reduce((acc: string[], selectedRow: LocaleStatus) => {\n const isValidLocale =\n // Validation errors are irrelevant if we are trying to unpublish\n !isBulkPublish || !Object.keys(validationErrors).includes(selectedRow.locale);\n\n const shouldAddLocale = isBulkPublish\n ? selectedRow.status !== 'published' && isValidLocale\n : selectedRow.status !== 'draft' && isValidLocale;\n\n if (shouldAddLocale) {\n acc.push(selectedRow.locale);\n }\n\n return acc;\n }, []);\n\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see https://www.notion.so/strapi/Count-draft-relations-56901b492efb45ab90d42fe975b32bd8?pvs=4\n const enableDraftRelationsCount = false;\n const {\n data: draftRelationsCount = 0,\n isLoading: isDraftRelationsLoading,\n error: isDraftRelationsError,\n } = useGetManyDraftRelationCountQuery(\n {\n model,\n documentIds: [documentId!],\n locale: localesForAction,\n },\n {\n skip: !enableDraftRelationsCount || !documentId || localesForAction.length === 0,\n }\n );\n\n React.useEffect(() => {\n if (isDraftRelationsError) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(isDraftRelationsError),\n });\n }\n }, [isDraftRelationsError, toggleNotification, formatAPIError]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n if (!hasI18n) {\n return null;\n }\n\n if (!documentId) {\n return null;\n }\n\n // This document action can be enabled given that draft and publish and i18n are\n // enabled and we can publish the current locale.\n\n const publish = async () => {\n await publishManyAction({\n model,\n documentIds: [documentId],\n params: {\n ...params,\n locale: localesForAction,\n },\n });\n\n setSelectedRows([]);\n };\n\n const unpublish = async () => {\n await unpublishManyAction({\n model,\n documentIds: [documentId],\n params: {\n ...params,\n locale: localesForAction,\n },\n });\n\n setSelectedRows([]);\n };\n\n const handleAction = async () => {\n if (draftRelationsCount > 0) {\n setIsDraftRelationConfirmationOpen(true);\n } else if (isBulkPublish) {\n await publish();\n } else {\n await unpublish();\n }\n };\n\n if (isDraftRelationConfirmationOpen) {\n return {\n label: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n variant: 'danger',\n dialog: {\n onCancel: () => {\n setIsDraftRelationConfirmationOpen(false);\n },\n onConfirm: async () => {\n await publish();\n\n setIsDraftRelationConfirmationOpen(false);\n },\n type: 'dialog',\n title: formatMessage({\n id: getTranslation('actions.publish.dialog.title'),\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <WarningCircle width=\"2.4rem\" height=\"2.4rem\" fill=\"danger600\" />\n <Typography textAlign=\"center\">\n {formatMessage({\n id: getTranslation('CMEditViewBulkLocale.draft-relation-warning'),\n defaultMessage:\n 'Some locales are related to draft entries. Publishing them could leave broken links in your app.',\n })}\n </Typography>\n <Typography textAlign=\"center\">\n {formatMessage({\n id: getTranslation('CMEditViewBulkLocale.continue-confirmation'),\n defaultMessage: 'Are you sure you want to continue?',\n })}\n </Typography>\n </Flex>\n ),\n },\n };\n }\n\n const hasPermission = selectedRows\n .map(({ locale }) => locale)\n .every((locale) => canPublish.includes(locale));\n\n return {\n label: formatMessage({\n id: getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),\n defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`,\n }),\n variant: isBulkPublish ? 'secondary' : 'danger',\n icon: isBulkPublish ? <ListPlus /> : <Cross />,\n disabled: isOnPublishedTab || canPublish.length === 0,\n position: ['panel'],\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),\n defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`,\n }),\n content: () => {\n return (\n <Table.Root\n headers={headers}\n rows={rows.map((row) => ({\n ...row,\n id: row.locale,\n }))}\n selectedRows={selectedRows}\n onSelectedRowsChange={(tableSelectedRows) => setSelectedRows(tableSelectedRows)}\n >\n <BulkLocaleActionModal\n validationErrors={validationErrors}\n headers={headers}\n rows={rows}\n localesMetadata={localesMetadata as Locale[]}\n action={action ?? 'bulk-publish'}\n />\n </Table.Root>\n );\n },\n footer: () => (\n <Modal.Footer justifyContent=\"flex-end\">\n <Button\n loading={isDraftRelationsLoading}\n disabled={!hasPermission || localesForAction.length === 0}\n variant=\"default\"\n onClick={handleAction}\n >\n {formatMessage({\n id: isBulkPublish ? 'app.utils.publish' : 'app.utils.unpublish',\n defaultMessage: isBulkPublish ? 'Publish' : 'Unpublish',\n })}\n </Button>\n </Modal.Footer>\n ),\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocalePublishAction\n * -----------------------------------------------------------------------------------------------*/\nconst BulkLocalePublishAction: DocumentActionComponent = (props: ExtendedDocumentActionProps) => {\n return BulkLocaleAction({ action: 'bulk-publish', ...props });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleUnpublishAction\n * -----------------------------------------------------------------------------------------------*/\nconst BulkLocaleUnpublishAction: DocumentActionComponent = (props: ExtendedDocumentActionProps) => {\n return BulkLocaleAction({ action: 'bulk-unpublish', ...props });\n};\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledTrash = styled(Trash)`\n path {\n fill: currentColor;\n }\n`;\n\nexport {\n BulkLocalePublishAction,\n BulkLocaleUnpublishAction,\n DeleteLocaleAction,\n LocalePickerAction,\n FillFromAnotherLocaleAction,\n AITranslationStatusAction,\n};\n"],"names":["statusVariants","draft","published","modified","LocaleOption","isDraftAndPublishEnabled","locale","status","entryExists","formatMessage","useIntl","id","getTranslation","defaultMessage","bold","_jsx","b","name","_jsxs","Flex","width","gap","justifyContent","Typography","Status","display","paddingLeft","paddingRight","paddingTop","paddingBottom","size","variant","tag","fontWeight","capitalize","LocaleOptionStartIcon","entryWithLocaleExists","translationStatus","index","isAiAvailable","useAIAvailability","Plus","WarningCircle","fill","LocalePickerAction","document","meta","model","collectionType","documentId","query","setQuery","useQueryParams","hasI18n","canCreate","canRead","useI18n","data","locales","useGetLocalesQuery","currentDesiredLocale","plugins","i18n","schema","useDocument","params","jobData","useGetAILocalizationJobsByDocumentQuery","settings","useGetSettingsQuery","setValues","useForm","state","handleSelect","React","useCallback","value","nonTranslatedFields","useMemo","attributes","Object","keys","filter","field","attribute","pluginOptions","localized","sourceLocaleData","Array","isArray","availableLocales","defaultLocale","find","isDefault","existingLocales","map","loc","sourceLocaleCode","includes","code","sourceLocaleDoc","useEffect","length","dataToSet","reduce","acc","doesLocaleExist","currentLocale","undefined","documentLocalizations","localizations","allLocalizations","allCurrentLocales","getDocumentStatus","displayedLocales","localesSortingDefaultFirst","sort","a","label","options","some","doc","currentLocaleDoc","permissionsToCheck","aiLocalizations","_render","Fragment","SingleSelectOption","disabled","startIcon","draftAndPublish","Box","customizeContent","onSelect","docStatus","statuses","availableStatus","publishedAt","AITranslationStatusIcon","styled","theme","spaces","$isAISettingEnabled","colors","neutral150","neutral300","SpinningLoader","Loader","AITranslationStatusAction","isAIAvailable","isAISettingEnabled","useAILocalizationJobsPolling","statusVariant","_status","message","height","alignItems","aria-label","Boolean","Sparkle","tooltip","direction","padding","enabled","Link","fontSize","NavLink","to","style","alignSelf","textAlign","FillFromAnotherLocaleAction","localeSelected","setLocaleSelected","useState","getDocument","useDocumentActions","components","l","fillFromLocale","onClose","response","cleanedData","cleanData","type","icon","Earth","dialog","title","content","_Fragment","Dialog","Body","Field","Root","Label","SingleSelect","placeholder","onChange","Footer","Button","flex","onClick","DeleteLocaleAction","navigate","useNavigate","toggleNotification","useNotification","delete","deleteAction","isLoading","canDelete","position","StyledTrash","loading","onConfirm","unableToDelete","console","error","res","pathname","replace","BulkLocaleAction","action","buildValidParams","isOnPublishedTab","canPublish","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","selectedRows","setSelectedRows","isDraftRelationConfirmationOpen","setIsDraftRelationConfirmationOpen","publishMany","publishManyAction","unpublishMany","unpublishManyAction","validate","skip","localesMetadata","skipToken","headers","rows","validationErrors","metaLocalizations","localesMap","Map","forEach","set","push","from","entries","errors","validation","isBulkPublish","localesForAction","selectedRow","isValidLocale","shouldAddLocale","draftRelationsCount","isDraftRelationsLoading","isDraftRelationsError","useGetManyDraftRelationCountQuery","documentIds","publish","unpublish","handleAction","onCancel","hasPermission","every","ListPlus","Cross","Table","row","onSelectedRowsChange","tableSelectedRows","BulkLocaleActionModal","footer","Modal","BulkLocalePublishAction","props","BulkLocaleUnpublishAction","Trash"],"mappings":"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"}
|
|
@@ -364,6 +364,8 @@ const EnumerationInput = ({ disabled, hint, label, name, options, placeholder, r
|
|
|
364
364
|
onChange(name, value);
|
|
365
365
|
}
|
|
366
366
|
};
|
|
367
|
+
// Find the label for the current value to display in the combobox
|
|
368
|
+
const selectedOption = options.find((option)=>option.value === value);
|
|
367
369
|
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
|
|
368
370
|
error: error,
|
|
369
371
|
hint: hint,
|
|
@@ -379,6 +381,7 @@ const EnumerationInput = ({ disabled, hint, label, name, options, placeholder, r
|
|
|
379
381
|
onClear: ()=>handleChange(''),
|
|
380
382
|
placeholder: placeholder,
|
|
381
383
|
value: value,
|
|
384
|
+
textValue: selectedOption?.label,
|
|
382
385
|
autocomplete: {
|
|
383
386
|
type: 'list',
|
|
384
387
|
filter: 'contains'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateLocale.js","sources":["../../../admin/src/components/CreateLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n type InputProps,\n InputRenderer,\n useField,\n type FormHelpers,\n useForm,\n useAPIErrorHandler,\n useNotification,\n useAuth,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n ButtonProps,\n Combobox,\n ComboboxOption,\n Divider,\n Field,\n Flex,\n Grid,\n Modal,\n Tabs,\n Typography,\n useId,\n} from '@strapi/design-system';\nimport { Check, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { CreateLocale } from '../../../shared/contracts/locales';\nimport { useCreateLocaleMutation, useGetDefaultLocalesQuery } from '../services/locales';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { getTranslation } from '../utils/getTranslation';\n\n/* -------------------------------------------------------------------------------------------------\n * CreateLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CreateLocaleProps extends Pick<ButtonProps, 'disabled' | 'variant'> {}\n\nconst CreateLocale = ({ disabled, variant = 'default' }: CreateLocaleProps) => {\n const { formatMessage } = useIntl();\n const [visible, setVisible] = React.useState(false);\n\n return (\n <Modal.Root open={visible} onOpenChange={setVisible}>\n <Modal.Trigger>\n <Button\n variant={variant}\n disabled={disabled}\n startIcon={<Plus />}\n onClick={() => setVisible(true)}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: getTranslation('Settings.list.actions.add'),\n defaultMessage: 'Add new locale',\n })}\n </Button>\n </Modal.Trigger>\n <CreateModal onClose={() => setVisible(false)} />\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CreateModal\n * -----------------------------------------------------------------------------------------------*/\n\nconst LOCALE_SCHEMA = yup.object().shape({\n code: yup.string().nullable().required({\n id: 'Settings.locales.modal.create.code.error',\n defaultMessage: 'Please select a locale',\n }),\n name: yup\n .string()\n .nullable()\n .max(50, {\n id: 'Settings.locales.modal.create.name.error.min',\n defaultMessage: 'The locale display name can only be less than 50 characters.',\n })\n .required({\n id: 'Settings.locales.modal.create.name.error.required',\n defaultMessage: 'Please give the locale a display name',\n }),\n isDefault: yup.boolean(),\n});\n\ntype FormValues = CreateLocale.Request['body'];\n\nconst initialFormValues = {\n code: '',\n name: '',\n isDefault: false,\n} satisfies FormValues;\n\ntype ModalCreateProps = {\n onClose: () => void;\n};\n\nconst CreateModal = ({ onClose }: ModalCreateProps) => {\n const titleId = useId();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const [createLocale] = useCreateLocaleMutation();\n const { formatMessage } = useIntl();\n const refetchPermissions = useAuth('CreateModal', (state) => state.refetchPermissions);\n\n const handleSubmit = async (values: FormValues, helpers: FormHelpers<FormValues>) => {\n try {\n const res = await createLocale(values);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.create.success'),\n defaultMessage: 'Locale successfully added',\n }),\n });\n\n refetchPermissions();\n onClose();\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n }),\n });\n }\n };\n\n return (\n <Modal.Content>\n <Form\n method=\"POST\"\n initialValues={initialFormValues}\n validationSchema={LOCALE_SCHEMA}\n onSubmit={handleSubmit}\n >\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTranslation('Settings.list.actions.add'),\n defaultMessage: 'Add new locale',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Tabs.Root variant=\"simple\" defaultValue=\"basic\">\n <Flex justifyContent=\"space-between\">\n <Typography tag=\"h2\" variant=\"beta\" id={titleId}>\n {formatMessage({\n id: getTranslation('Settings.locales.modal.title'),\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Tabs.List aria-labelledby={titleId}>\n <Tabs.Trigger value=\"basic\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.base'),\n defaultMessage: 'Basic settings',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"advanced\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.advanced'),\n defaultMessage: 'Advanced settings',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Flex>\n\n <Divider />\n\n <Box paddingTop={7} paddingBottom={7}>\n <Tabs.Content value=\"basic\">\n <BaseForm />\n </Tabs.Content>\n <Tabs.Content value=\"advanced\">\n <AdvancedForm />\n </Tabs.Content>\n </Box>\n </Tabs.Root>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <SubmitButton />\n </Modal.Footer>\n </Form>\n </Modal.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubmitButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SubmitButton = () => {\n const { formatMessage } = useIntl();\n const isSubmitting = useForm('SubmitButton', (state) => state.isSubmitting);\n const modified = useForm('SubmitButton', (state) => state.modified);\n\n return (\n <Button type=\"submit\" startIcon={<Check />} disabled={isSubmitting || !modified}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BaseForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseFormProps {\n mode?: 'create' | 'edit';\n}\n\nconst BaseForm = ({ mode = 'create' }: BaseFormProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data: defaultLocales, error } = useGetDefaultLocalesQuery();\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (!Array.isArray(defaultLocales)) {\n return null;\n }\n\n const options = defaultLocales.map((locale) => ({\n label: locale.name,\n value: locale.code,\n }));\n\n const translatedForm = [\n {\n disabled: mode !== 'create',\n label: {\n id: getTranslation('Settings.locales.modal.create.code.label'),\n defaultMessage: 'Locales',\n },\n name: 'code',\n options,\n placeholder: {\n id: 'components.placeholder.select',\n defaultMessage: 'Select',\n },\n required: true,\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: {\n id: getTranslation('Settings.locales.modal.create.name.label.description'),\n defaultMessage: 'Locale will be displayed under that name in the administration panel',\n },\n label: {\n id: getTranslation('Settings.locales.modal.create.name.label'),\n defaultMessage: 'Locale display name',\n },\n name: 'name',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n ].map((field) => ({\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n placeholder: field.placeholder ? formatMessage(field.placeholder) : undefined,\n }));\n\n return (\n <Grid.Root gap={4}>\n {translatedForm.map(({ size, ...field }) => (\n <Grid.Item key={field.name} xs={12} m={size} direction=\"column\" alignItems=\"stretch\">\n <FormRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AdvancedForm\n * -----------------------------------------------------------------------------------------------*/\n\ntype AdvancedFormProps = {\n isDefaultLocale?: boolean;\n};\n\nconst AdvancedForm = ({ isDefaultLocale }: AdvancedFormProps) => {\n const { formatMessage } = useIntl();\n\n const form = [\n {\n disabled: isDefaultLocale,\n hint: {\n id: getTranslation('Settings.locales.modal.advanced.setAsDefault.hint'),\n defaultMessage: 'One default locale is required, change it by selecting another one',\n },\n label: {\n id: getTranslation('Settings.locales.modal.advanced.setAsDefault'),\n defaultMessage: 'Set as default locale',\n },\n name: 'isDefault',\n size: 6,\n type: 'boolean' as const,\n },\n ].map((field) => ({\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n })) satisfies InputProps[];\n\n return (\n <Grid.Root gap={4}>\n {form.map(({ size, ...field }) => (\n <Grid.Item key={field.name} xs={12} m={size} direction=\"column\" alignItems=\"stretch\">\n <FormRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormRenderer\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormRenderer = (field: InputProps) => {\n switch (field.type) {\n /**\n * This will override the default input renderer\n * choice for `enumeration`.\n */\n case 'enumeration':\n return <EnumerationInput {...field} />;\n default:\n return <InputRenderer {...field} />;\n }\n};\n\nconst EnumerationInput = ({\n disabled,\n hint,\n label,\n name,\n options,\n placeholder,\n required,\n}: Extract<InputProps, { type: 'enumeration' }>) => {\n const { value, error, onChange } = useField(name);\n const { data: defaultLocales = [] } = useGetDefaultLocalesQuery();\n\n const handleChange = (value: string) => {\n if (Array.isArray(defaultLocales)) {\n // We know it exists because the options are created from the list of default locales\n const locale = defaultLocales.find((locale) => locale.code === value)!;\n\n onChange(name, value);\n // This lets us automatically fill the name field with the locale name\n onChange('name', locale.name);\n } else {\n onChange(name, value);\n }\n };\n\n return (\n <Field.Root error={error} hint={hint} name={name} required={required}>\n <Field.Label>{label}</Field.Label>\n <Combobox\n disabled={disabled}\n onChange={handleChange}\n onClear={() => handleChange('')}\n placeholder={placeholder}\n value={value}\n autocomplete={{ type: 'list', filter: 'contains' }}\n >\n {options.map((option) => (\n <ComboboxOption value={option.value} key={option.value}>\n {option.label}\n </ComboboxOption>\n ))}\n </Combobox>\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\nexport { CreateLocale, BaseForm, AdvancedForm, SubmitButton, LOCALE_SCHEMA };\n"],"names":["CreateLocale","disabled","variant","formatMessage","useIntl","visible","setVisible","React","useState","_jsxs","Modal","Root","open","onOpenChange","_jsx","Trigger","Button","startIcon","Plus","onClick","size","fullWidth","id","getTranslation","defaultMessage","CreateModal","onClose","LOCALE_SCHEMA","yup","object","shape","code","string","nullable","required","name","max","isDefault","boolean","initialFormValues","titleId","useId","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","createLocale","useCreateLocaleMutation","refetchPermissions","useAuth","state","handleSubmit","values","helpers","res","isBaseQueryError","error","setErrors","type","message","err","Content","Form","method","initialValues","validationSchema","onSubmit","Header","Title","Body","Tabs","defaultValue","Flex","justifyContent","Typography","tag","List","aria-labelledby","value","Divider","Box","paddingTop","paddingBottom","BaseForm","AdvancedForm","Footer","Close","SubmitButton","isSubmitting","useForm","modified","Check","mode","data","defaultLocales","useGetDefaultLocalesQuery","useEffect","Array","isArray","options","map","locale","label","translatedForm","placeholder","hint","field","undefined","Grid","gap","Item","xs","m","direction","alignItems","FormRenderer","isDefaultLocale","form","EnumerationInput","InputRenderer","onChange","useField","handleChange","find","Field","Label","Combobox","onClear","autocomplete","filter","option","ComboboxOption","Error","Hint"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreateLocale.js","sources":["../../../admin/src/components/CreateLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n type InputProps,\n InputRenderer,\n useField,\n type FormHelpers,\n useForm,\n useAPIErrorHandler,\n useNotification,\n useAuth,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n ButtonProps,\n Combobox,\n ComboboxOption,\n Divider,\n Field,\n Flex,\n Grid,\n Modal,\n Tabs,\n Typography,\n useId,\n} from '@strapi/design-system';\nimport { Check, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { CreateLocale } from '../../../shared/contracts/locales';\nimport { useCreateLocaleMutation, useGetDefaultLocalesQuery } from '../services/locales';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { getTranslation } from '../utils/getTranslation';\n\n/* -------------------------------------------------------------------------------------------------\n * CreateLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CreateLocaleProps extends Pick<ButtonProps, 'disabled' | 'variant'> {}\n\nconst CreateLocale = ({ disabled, variant = 'default' }: CreateLocaleProps) => {\n const { formatMessage } = useIntl();\n const [visible, setVisible] = React.useState(false);\n\n return (\n <Modal.Root open={visible} onOpenChange={setVisible}>\n <Modal.Trigger>\n <Button\n variant={variant}\n disabled={disabled}\n startIcon={<Plus />}\n onClick={() => setVisible(true)}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: getTranslation('Settings.list.actions.add'),\n defaultMessage: 'Add new locale',\n })}\n </Button>\n </Modal.Trigger>\n <CreateModal onClose={() => setVisible(false)} />\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CreateModal\n * -----------------------------------------------------------------------------------------------*/\n\nconst LOCALE_SCHEMA = yup.object().shape({\n code: yup.string().nullable().required({\n id: 'Settings.locales.modal.create.code.error',\n defaultMessage: 'Please select a locale',\n }),\n name: yup\n .string()\n .nullable()\n .max(50, {\n id: 'Settings.locales.modal.create.name.error.min',\n defaultMessage: 'The locale display name can only be less than 50 characters.',\n })\n .required({\n id: 'Settings.locales.modal.create.name.error.required',\n defaultMessage: 'Please give the locale a display name',\n }),\n isDefault: yup.boolean(),\n});\n\ntype FormValues = CreateLocale.Request['body'];\n\nconst initialFormValues = {\n code: '',\n name: '',\n isDefault: false,\n} satisfies FormValues;\n\ntype ModalCreateProps = {\n onClose: () => void;\n};\n\nconst CreateModal = ({ onClose }: ModalCreateProps) => {\n const titleId = useId();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const [createLocale] = useCreateLocaleMutation();\n const { formatMessage } = useIntl();\n const refetchPermissions = useAuth('CreateModal', (state) => state.refetchPermissions);\n\n const handleSubmit = async (values: FormValues, helpers: FormHelpers<FormValues>) => {\n try {\n const res = await createLocale(values);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.create.success'),\n defaultMessage: 'Locale successfully added',\n }),\n });\n\n refetchPermissions();\n onClose();\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n }),\n });\n }\n };\n\n return (\n <Modal.Content>\n <Form\n method=\"POST\"\n initialValues={initialFormValues}\n validationSchema={LOCALE_SCHEMA}\n onSubmit={handleSubmit}\n >\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTranslation('Settings.list.actions.add'),\n defaultMessage: 'Add new locale',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Tabs.Root variant=\"simple\" defaultValue=\"basic\">\n <Flex justifyContent=\"space-between\">\n <Typography tag=\"h2\" variant=\"beta\" id={titleId}>\n {formatMessage({\n id: getTranslation('Settings.locales.modal.title'),\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Tabs.List aria-labelledby={titleId}>\n <Tabs.Trigger value=\"basic\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.base'),\n defaultMessage: 'Basic settings',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"advanced\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.advanced'),\n defaultMessage: 'Advanced settings',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Flex>\n\n <Divider />\n\n <Box paddingTop={7} paddingBottom={7}>\n <Tabs.Content value=\"basic\">\n <BaseForm />\n </Tabs.Content>\n <Tabs.Content value=\"advanced\">\n <AdvancedForm />\n </Tabs.Content>\n </Box>\n </Tabs.Root>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <SubmitButton />\n </Modal.Footer>\n </Form>\n </Modal.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubmitButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SubmitButton = () => {\n const { formatMessage } = useIntl();\n const isSubmitting = useForm('SubmitButton', (state) => state.isSubmitting);\n const modified = useForm('SubmitButton', (state) => state.modified);\n\n return (\n <Button type=\"submit\" startIcon={<Check />} disabled={isSubmitting || !modified}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BaseForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseFormProps {\n mode?: 'create' | 'edit';\n}\n\nconst BaseForm = ({ mode = 'create' }: BaseFormProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data: defaultLocales, error } = useGetDefaultLocalesQuery();\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (!Array.isArray(defaultLocales)) {\n return null;\n }\n\n const options = defaultLocales.map((locale) => ({\n label: locale.name,\n value: locale.code,\n }));\n\n const translatedForm = [\n {\n disabled: mode !== 'create',\n label: {\n id: getTranslation('Settings.locales.modal.create.code.label'),\n defaultMessage: 'Locales',\n },\n name: 'code',\n options,\n placeholder: {\n id: 'components.placeholder.select',\n defaultMessage: 'Select',\n },\n required: true,\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: {\n id: getTranslation('Settings.locales.modal.create.name.label.description'),\n defaultMessage: 'Locale will be displayed under that name in the administration panel',\n },\n label: {\n id: getTranslation('Settings.locales.modal.create.name.label'),\n defaultMessage: 'Locale display name',\n },\n name: 'name',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n ].map((field) => ({\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n placeholder: field.placeholder ? formatMessage(field.placeholder) : undefined,\n }));\n\n return (\n <Grid.Root gap={4}>\n {translatedForm.map(({ size, ...field }) => (\n <Grid.Item key={field.name} xs={12} m={size} direction=\"column\" alignItems=\"stretch\">\n <FormRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AdvancedForm\n * -----------------------------------------------------------------------------------------------*/\n\ntype AdvancedFormProps = {\n isDefaultLocale?: boolean;\n};\n\nconst AdvancedForm = ({ isDefaultLocale }: AdvancedFormProps) => {\n const { formatMessage } = useIntl();\n\n const form = [\n {\n disabled: isDefaultLocale,\n hint: {\n id: getTranslation('Settings.locales.modal.advanced.setAsDefault.hint'),\n defaultMessage: 'One default locale is required, change it by selecting another one',\n },\n label: {\n id: getTranslation('Settings.locales.modal.advanced.setAsDefault'),\n defaultMessage: 'Set as default locale',\n },\n name: 'isDefault',\n size: 6,\n type: 'boolean' as const,\n },\n ].map((field) => ({\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n })) satisfies InputProps[];\n\n return (\n <Grid.Root gap={4}>\n {form.map(({ size, ...field }) => (\n <Grid.Item key={field.name} xs={12} m={size} direction=\"column\" alignItems=\"stretch\">\n <FormRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormRenderer\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormRenderer = (field: InputProps) => {\n switch (field.type) {\n /**\n * This will override the default input renderer\n * choice for `enumeration`.\n */\n case 'enumeration':\n return <EnumerationInput {...field} />;\n default:\n return <InputRenderer {...field} />;\n }\n};\n\nconst EnumerationInput = ({\n disabled,\n hint,\n label,\n name,\n options,\n placeholder,\n required,\n}: Extract<InputProps, { type: 'enumeration' }>) => {\n const { value, error, onChange } = useField(name);\n const { data: defaultLocales = [] } = useGetDefaultLocalesQuery();\n\n const handleChange = (value: string) => {\n if (Array.isArray(defaultLocales)) {\n // We know it exists because the options are created from the list of default locales\n const locale = defaultLocales.find((locale) => locale.code === value)!;\n\n onChange(name, value);\n // This lets us automatically fill the name field with the locale name\n onChange('name', locale.name);\n } else {\n onChange(name, value);\n }\n };\n\n // Find the label for the current value to display in the combobox\n const selectedOption = options.find((option) => option.value === value);\n\n return (\n <Field.Root error={error} hint={hint} name={name} required={required}>\n <Field.Label>{label}</Field.Label>\n <Combobox\n disabled={disabled}\n onChange={handleChange}\n onClear={() => handleChange('')}\n placeholder={placeholder}\n value={value}\n textValue={selectedOption?.label}\n autocomplete={{ type: 'list', filter: 'contains' }}\n >\n {options.map((option) => (\n <ComboboxOption value={option.value} key={option.value}>\n {option.label}\n </ComboboxOption>\n ))}\n </Combobox>\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\nexport { CreateLocale, BaseForm, AdvancedForm, SubmitButton, LOCALE_SCHEMA };\n"],"names":["CreateLocale","disabled","variant","formatMessage","useIntl","visible","setVisible","React","useState","_jsxs","Modal","Root","open","onOpenChange","_jsx","Trigger","Button","startIcon","Plus","onClick","size","fullWidth","id","getTranslation","defaultMessage","CreateModal","onClose","LOCALE_SCHEMA","yup","object","shape","code","string","nullable","required","name","max","isDefault","boolean","initialFormValues","titleId","useId","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","createLocale","useCreateLocaleMutation","refetchPermissions","useAuth","state","handleSubmit","values","helpers","res","isBaseQueryError","error","setErrors","type","message","err","Content","Form","method","initialValues","validationSchema","onSubmit","Header","Title","Body","Tabs","defaultValue","Flex","justifyContent","Typography","tag","List","aria-labelledby","value","Divider","Box","paddingTop","paddingBottom","BaseForm","AdvancedForm","Footer","Close","SubmitButton","isSubmitting","useForm","modified","Check","mode","data","defaultLocales","useGetDefaultLocalesQuery","useEffect","Array","isArray","options","map","locale","label","translatedForm","placeholder","hint","field","undefined","Grid","gap","Item","xs","m","direction","alignItems","FormRenderer","isDefaultLocale","form","EnumerationInput","InputRenderer","onChange","useField","handleChange","find","selectedOption","option","Field","Label","Combobox","onClear","textValue","autocomplete","filter","ComboboxOption","Error","Hint"],"mappings":"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"}
|
|
@@ -342,6 +342,8 @@ const EnumerationInput = ({ disabled, hint, label, name, options, placeholder, r
|
|
|
342
342
|
onChange(name, value);
|
|
343
343
|
}
|
|
344
344
|
};
|
|
345
|
+
// Find the label for the current value to display in the combobox
|
|
346
|
+
const selectedOption = options.find((option)=>option.value === value);
|
|
345
347
|
return /*#__PURE__*/ jsxs(Field.Root, {
|
|
346
348
|
error: error,
|
|
347
349
|
hint: hint,
|
|
@@ -357,6 +359,7 @@ const EnumerationInput = ({ disabled, hint, label, name, options, placeholder, r
|
|
|
357
359
|
onClear: ()=>handleChange(''),
|
|
358
360
|
placeholder: placeholder,
|
|
359
361
|
value: value,
|
|
362
|
+
textValue: selectedOption?.label,
|
|
360
363
|
autocomplete: {
|
|
361
364
|
type: 'list',
|
|
362
365
|
filter: 'contains'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateLocale.mjs","sources":["../../../admin/src/components/CreateLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n type InputProps,\n InputRenderer,\n useField,\n type FormHelpers,\n useForm,\n useAPIErrorHandler,\n useNotification,\n useAuth,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n ButtonProps,\n Combobox,\n ComboboxOption,\n Divider,\n Field,\n Flex,\n Grid,\n Modal,\n Tabs,\n Typography,\n useId,\n} from '@strapi/design-system';\nimport { Check, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { CreateLocale } from '../../../shared/contracts/locales';\nimport { useCreateLocaleMutation, useGetDefaultLocalesQuery } from '../services/locales';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { getTranslation } from '../utils/getTranslation';\n\n/* -------------------------------------------------------------------------------------------------\n * CreateLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CreateLocaleProps extends Pick<ButtonProps, 'disabled' | 'variant'> {}\n\nconst CreateLocale = ({ disabled, variant = 'default' }: CreateLocaleProps) => {\n const { formatMessage } = useIntl();\n const [visible, setVisible] = React.useState(false);\n\n return (\n <Modal.Root open={visible} onOpenChange={setVisible}>\n <Modal.Trigger>\n <Button\n variant={variant}\n disabled={disabled}\n startIcon={<Plus />}\n onClick={() => setVisible(true)}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: getTranslation('Settings.list.actions.add'),\n defaultMessage: 'Add new locale',\n })}\n </Button>\n </Modal.Trigger>\n <CreateModal onClose={() => setVisible(false)} />\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CreateModal\n * -----------------------------------------------------------------------------------------------*/\n\nconst LOCALE_SCHEMA = yup.object().shape({\n code: yup.string().nullable().required({\n id: 'Settings.locales.modal.create.code.error',\n defaultMessage: 'Please select a locale',\n }),\n name: yup\n .string()\n .nullable()\n .max(50, {\n id: 'Settings.locales.modal.create.name.error.min',\n defaultMessage: 'The locale display name can only be less than 50 characters.',\n })\n .required({\n id: 'Settings.locales.modal.create.name.error.required',\n defaultMessage: 'Please give the locale a display name',\n }),\n isDefault: yup.boolean(),\n});\n\ntype FormValues = CreateLocale.Request['body'];\n\nconst initialFormValues = {\n code: '',\n name: '',\n isDefault: false,\n} satisfies FormValues;\n\ntype ModalCreateProps = {\n onClose: () => void;\n};\n\nconst CreateModal = ({ onClose }: ModalCreateProps) => {\n const titleId = useId();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const [createLocale] = useCreateLocaleMutation();\n const { formatMessage } = useIntl();\n const refetchPermissions = useAuth('CreateModal', (state) => state.refetchPermissions);\n\n const handleSubmit = async (values: FormValues, helpers: FormHelpers<FormValues>) => {\n try {\n const res = await createLocale(values);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.create.success'),\n defaultMessage: 'Locale successfully added',\n }),\n });\n\n refetchPermissions();\n onClose();\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n }),\n });\n }\n };\n\n return (\n <Modal.Content>\n <Form\n method=\"POST\"\n initialValues={initialFormValues}\n validationSchema={LOCALE_SCHEMA}\n onSubmit={handleSubmit}\n >\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTranslation('Settings.list.actions.add'),\n defaultMessage: 'Add new locale',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Tabs.Root variant=\"simple\" defaultValue=\"basic\">\n <Flex justifyContent=\"space-between\">\n <Typography tag=\"h2\" variant=\"beta\" id={titleId}>\n {formatMessage({\n id: getTranslation('Settings.locales.modal.title'),\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Tabs.List aria-labelledby={titleId}>\n <Tabs.Trigger value=\"basic\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.base'),\n defaultMessage: 'Basic settings',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"advanced\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.advanced'),\n defaultMessage: 'Advanced settings',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Flex>\n\n <Divider />\n\n <Box paddingTop={7} paddingBottom={7}>\n <Tabs.Content value=\"basic\">\n <BaseForm />\n </Tabs.Content>\n <Tabs.Content value=\"advanced\">\n <AdvancedForm />\n </Tabs.Content>\n </Box>\n </Tabs.Root>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <SubmitButton />\n </Modal.Footer>\n </Form>\n </Modal.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubmitButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SubmitButton = () => {\n const { formatMessage } = useIntl();\n const isSubmitting = useForm('SubmitButton', (state) => state.isSubmitting);\n const modified = useForm('SubmitButton', (state) => state.modified);\n\n return (\n <Button type=\"submit\" startIcon={<Check />} disabled={isSubmitting || !modified}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BaseForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseFormProps {\n mode?: 'create' | 'edit';\n}\n\nconst BaseForm = ({ mode = 'create' }: BaseFormProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data: defaultLocales, error } = useGetDefaultLocalesQuery();\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (!Array.isArray(defaultLocales)) {\n return null;\n }\n\n const options = defaultLocales.map((locale) => ({\n label: locale.name,\n value: locale.code,\n }));\n\n const translatedForm = [\n {\n disabled: mode !== 'create',\n label: {\n id: getTranslation('Settings.locales.modal.create.code.label'),\n defaultMessage: 'Locales',\n },\n name: 'code',\n options,\n placeholder: {\n id: 'components.placeholder.select',\n defaultMessage: 'Select',\n },\n required: true,\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: {\n id: getTranslation('Settings.locales.modal.create.name.label.description'),\n defaultMessage: 'Locale will be displayed under that name in the administration panel',\n },\n label: {\n id: getTranslation('Settings.locales.modal.create.name.label'),\n defaultMessage: 'Locale display name',\n },\n name: 'name',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n ].map((field) => ({\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n placeholder: field.placeholder ? formatMessage(field.placeholder) : undefined,\n }));\n\n return (\n <Grid.Root gap={4}>\n {translatedForm.map(({ size, ...field }) => (\n <Grid.Item key={field.name} xs={12} m={size} direction=\"column\" alignItems=\"stretch\">\n <FormRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AdvancedForm\n * -----------------------------------------------------------------------------------------------*/\n\ntype AdvancedFormProps = {\n isDefaultLocale?: boolean;\n};\n\nconst AdvancedForm = ({ isDefaultLocale }: AdvancedFormProps) => {\n const { formatMessage } = useIntl();\n\n const form = [\n {\n disabled: isDefaultLocale,\n hint: {\n id: getTranslation('Settings.locales.modal.advanced.setAsDefault.hint'),\n defaultMessage: 'One default locale is required, change it by selecting another one',\n },\n label: {\n id: getTranslation('Settings.locales.modal.advanced.setAsDefault'),\n defaultMessage: 'Set as default locale',\n },\n name: 'isDefault',\n size: 6,\n type: 'boolean' as const,\n },\n ].map((field) => ({\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n })) satisfies InputProps[];\n\n return (\n <Grid.Root gap={4}>\n {form.map(({ size, ...field }) => (\n <Grid.Item key={field.name} xs={12} m={size} direction=\"column\" alignItems=\"stretch\">\n <FormRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormRenderer\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormRenderer = (field: InputProps) => {\n switch (field.type) {\n /**\n * This will override the default input renderer\n * choice for `enumeration`.\n */\n case 'enumeration':\n return <EnumerationInput {...field} />;\n default:\n return <InputRenderer {...field} />;\n }\n};\n\nconst EnumerationInput = ({\n disabled,\n hint,\n label,\n name,\n options,\n placeholder,\n required,\n}: Extract<InputProps, { type: 'enumeration' }>) => {\n const { value, error, onChange } = useField(name);\n const { data: defaultLocales = [] } = useGetDefaultLocalesQuery();\n\n const handleChange = (value: string) => {\n if (Array.isArray(defaultLocales)) {\n // We know it exists because the options are created from the list of default locales\n const locale = defaultLocales.find((locale) => locale.code === value)!;\n\n onChange(name, value);\n // This lets us automatically fill the name field with the locale name\n onChange('name', locale.name);\n } else {\n onChange(name, value);\n }\n };\n\n return (\n <Field.Root error={error} hint={hint} name={name} required={required}>\n <Field.Label>{label}</Field.Label>\n <Combobox\n disabled={disabled}\n onChange={handleChange}\n onClear={() => handleChange('')}\n placeholder={placeholder}\n value={value}\n autocomplete={{ type: 'list', filter: 'contains' }}\n >\n {options.map((option) => (\n <ComboboxOption value={option.value} key={option.value}>\n {option.label}\n </ComboboxOption>\n ))}\n </Combobox>\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\nexport { CreateLocale, BaseForm, AdvancedForm, SubmitButton, LOCALE_SCHEMA };\n"],"names":["CreateLocale","disabled","variant","formatMessage","useIntl","visible","setVisible","React","useState","_jsxs","Modal","Root","open","onOpenChange","_jsx","Trigger","Button","startIcon","Plus","onClick","size","fullWidth","id","getTranslation","defaultMessage","CreateModal","onClose","LOCALE_SCHEMA","yup","object","shape","code","string","nullable","required","name","max","isDefault","boolean","initialFormValues","titleId","useId","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","createLocale","useCreateLocaleMutation","refetchPermissions","useAuth","state","handleSubmit","values","helpers","res","isBaseQueryError","error","setErrors","type","message","err","Content","Form","method","initialValues","validationSchema","onSubmit","Header","Title","Body","Tabs","defaultValue","Flex","justifyContent","Typography","tag","List","aria-labelledby","value","Divider","Box","paddingTop","paddingBottom","BaseForm","AdvancedForm","Footer","Close","SubmitButton","isSubmitting","useForm","modified","Check","mode","data","defaultLocales","useGetDefaultLocalesQuery","useEffect","Array","isArray","options","map","locale","label","translatedForm","placeholder","hint","field","undefined","Grid","gap","Item","xs","m","direction","alignItems","FormRenderer","isDefaultLocale","form","EnumerationInput","InputRenderer","onChange","useField","handleChange","find","Field","Label","Combobox","onClear","autocomplete","filter","option","ComboboxOption","Error","Hint"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreateLocale.mjs","sources":["../../../admin/src/components/CreateLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n type InputProps,\n InputRenderer,\n useField,\n type FormHelpers,\n useForm,\n useAPIErrorHandler,\n useNotification,\n useAuth,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n ButtonProps,\n Combobox,\n ComboboxOption,\n Divider,\n Field,\n Flex,\n Grid,\n Modal,\n Tabs,\n Typography,\n useId,\n} from '@strapi/design-system';\nimport { Check, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { CreateLocale } from '../../../shared/contracts/locales';\nimport { useCreateLocaleMutation, useGetDefaultLocalesQuery } from '../services/locales';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { getTranslation } from '../utils/getTranslation';\n\n/* -------------------------------------------------------------------------------------------------\n * CreateLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CreateLocaleProps extends Pick<ButtonProps, 'disabled' | 'variant'> {}\n\nconst CreateLocale = ({ disabled, variant = 'default' }: CreateLocaleProps) => {\n const { formatMessage } = useIntl();\n const [visible, setVisible] = React.useState(false);\n\n return (\n <Modal.Root open={visible} onOpenChange={setVisible}>\n <Modal.Trigger>\n <Button\n variant={variant}\n disabled={disabled}\n startIcon={<Plus />}\n onClick={() => setVisible(true)}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: getTranslation('Settings.list.actions.add'),\n defaultMessage: 'Add new locale',\n })}\n </Button>\n </Modal.Trigger>\n <CreateModal onClose={() => setVisible(false)} />\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CreateModal\n * -----------------------------------------------------------------------------------------------*/\n\nconst LOCALE_SCHEMA = yup.object().shape({\n code: yup.string().nullable().required({\n id: 'Settings.locales.modal.create.code.error',\n defaultMessage: 'Please select a locale',\n }),\n name: yup\n .string()\n .nullable()\n .max(50, {\n id: 'Settings.locales.modal.create.name.error.min',\n defaultMessage: 'The locale display name can only be less than 50 characters.',\n })\n .required({\n id: 'Settings.locales.modal.create.name.error.required',\n defaultMessage: 'Please give the locale a display name',\n }),\n isDefault: yup.boolean(),\n});\n\ntype FormValues = CreateLocale.Request['body'];\n\nconst initialFormValues = {\n code: '',\n name: '',\n isDefault: false,\n} satisfies FormValues;\n\ntype ModalCreateProps = {\n onClose: () => void;\n};\n\nconst CreateModal = ({ onClose }: ModalCreateProps) => {\n const titleId = useId();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const [createLocale] = useCreateLocaleMutation();\n const { formatMessage } = useIntl();\n const refetchPermissions = useAuth('CreateModal', (state) => state.refetchPermissions);\n\n const handleSubmit = async (values: FormValues, helpers: FormHelpers<FormValues>) => {\n try {\n const res = await createLocale(values);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.create.success'),\n defaultMessage: 'Locale successfully added',\n }),\n });\n\n refetchPermissions();\n onClose();\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n }),\n });\n }\n };\n\n return (\n <Modal.Content>\n <Form\n method=\"POST\"\n initialValues={initialFormValues}\n validationSchema={LOCALE_SCHEMA}\n onSubmit={handleSubmit}\n >\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTranslation('Settings.list.actions.add'),\n defaultMessage: 'Add new locale',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Tabs.Root variant=\"simple\" defaultValue=\"basic\">\n <Flex justifyContent=\"space-between\">\n <Typography tag=\"h2\" variant=\"beta\" id={titleId}>\n {formatMessage({\n id: getTranslation('Settings.locales.modal.title'),\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Tabs.List aria-labelledby={titleId}>\n <Tabs.Trigger value=\"basic\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.base'),\n defaultMessage: 'Basic settings',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"advanced\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.advanced'),\n defaultMessage: 'Advanced settings',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Flex>\n\n <Divider />\n\n <Box paddingTop={7} paddingBottom={7}>\n <Tabs.Content value=\"basic\">\n <BaseForm />\n </Tabs.Content>\n <Tabs.Content value=\"advanced\">\n <AdvancedForm />\n </Tabs.Content>\n </Box>\n </Tabs.Root>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <SubmitButton />\n </Modal.Footer>\n </Form>\n </Modal.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubmitButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SubmitButton = () => {\n const { formatMessage } = useIntl();\n const isSubmitting = useForm('SubmitButton', (state) => state.isSubmitting);\n const modified = useForm('SubmitButton', (state) => state.modified);\n\n return (\n <Button type=\"submit\" startIcon={<Check />} disabled={isSubmitting || !modified}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BaseForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseFormProps {\n mode?: 'create' | 'edit';\n}\n\nconst BaseForm = ({ mode = 'create' }: BaseFormProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data: defaultLocales, error } = useGetDefaultLocalesQuery();\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (!Array.isArray(defaultLocales)) {\n return null;\n }\n\n const options = defaultLocales.map((locale) => ({\n label: locale.name,\n value: locale.code,\n }));\n\n const translatedForm = [\n {\n disabled: mode !== 'create',\n label: {\n id: getTranslation('Settings.locales.modal.create.code.label'),\n defaultMessage: 'Locales',\n },\n name: 'code',\n options,\n placeholder: {\n id: 'components.placeholder.select',\n defaultMessage: 'Select',\n },\n required: true,\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: {\n id: getTranslation('Settings.locales.modal.create.name.label.description'),\n defaultMessage: 'Locale will be displayed under that name in the administration panel',\n },\n label: {\n id: getTranslation('Settings.locales.modal.create.name.label'),\n defaultMessage: 'Locale display name',\n },\n name: 'name',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n ].map((field) => ({\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n placeholder: field.placeholder ? formatMessage(field.placeholder) : undefined,\n }));\n\n return (\n <Grid.Root gap={4}>\n {translatedForm.map(({ size, ...field }) => (\n <Grid.Item key={field.name} xs={12} m={size} direction=\"column\" alignItems=\"stretch\">\n <FormRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AdvancedForm\n * -----------------------------------------------------------------------------------------------*/\n\ntype AdvancedFormProps = {\n isDefaultLocale?: boolean;\n};\n\nconst AdvancedForm = ({ isDefaultLocale }: AdvancedFormProps) => {\n const { formatMessage } = useIntl();\n\n const form = [\n {\n disabled: isDefaultLocale,\n hint: {\n id: getTranslation('Settings.locales.modal.advanced.setAsDefault.hint'),\n defaultMessage: 'One default locale is required, change it by selecting another one',\n },\n label: {\n id: getTranslation('Settings.locales.modal.advanced.setAsDefault'),\n defaultMessage: 'Set as default locale',\n },\n name: 'isDefault',\n size: 6,\n type: 'boolean' as const,\n },\n ].map((field) => ({\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n })) satisfies InputProps[];\n\n return (\n <Grid.Root gap={4}>\n {form.map(({ size, ...field }) => (\n <Grid.Item key={field.name} xs={12} m={size} direction=\"column\" alignItems=\"stretch\">\n <FormRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormRenderer\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormRenderer = (field: InputProps) => {\n switch (field.type) {\n /**\n * This will override the default input renderer\n * choice for `enumeration`.\n */\n case 'enumeration':\n return <EnumerationInput {...field} />;\n default:\n return <InputRenderer {...field} />;\n }\n};\n\nconst EnumerationInput = ({\n disabled,\n hint,\n label,\n name,\n options,\n placeholder,\n required,\n}: Extract<InputProps, { type: 'enumeration' }>) => {\n const { value, error, onChange } = useField(name);\n const { data: defaultLocales = [] } = useGetDefaultLocalesQuery();\n\n const handleChange = (value: string) => {\n if (Array.isArray(defaultLocales)) {\n // We know it exists because the options are created from the list of default locales\n const locale = defaultLocales.find((locale) => locale.code === value)!;\n\n onChange(name, value);\n // This lets us automatically fill the name field with the locale name\n onChange('name', locale.name);\n } else {\n onChange(name, value);\n }\n };\n\n // Find the label for the current value to display in the combobox\n const selectedOption = options.find((option) => option.value === value);\n\n return (\n <Field.Root error={error} hint={hint} name={name} required={required}>\n <Field.Label>{label}</Field.Label>\n <Combobox\n disabled={disabled}\n onChange={handleChange}\n onClear={() => handleChange('')}\n placeholder={placeholder}\n value={value}\n textValue={selectedOption?.label}\n autocomplete={{ type: 'list', filter: 'contains' }}\n >\n {options.map((option) => (\n <ComboboxOption value={option.value} key={option.value}>\n {option.label}\n </ComboboxOption>\n ))}\n </Combobox>\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\nexport { CreateLocale, BaseForm, AdvancedForm, SubmitButton, LOCALE_SCHEMA };\n"],"names":["CreateLocale","disabled","variant","formatMessage","useIntl","visible","setVisible","React","useState","_jsxs","Modal","Root","open","onOpenChange","_jsx","Trigger","Button","startIcon","Plus","onClick","size","fullWidth","id","getTranslation","defaultMessage","CreateModal","onClose","LOCALE_SCHEMA","yup","object","shape","code","string","nullable","required","name","max","isDefault","boolean","initialFormValues","titleId","useId","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","createLocale","useCreateLocaleMutation","refetchPermissions","useAuth","state","handleSubmit","values","helpers","res","isBaseQueryError","error","setErrors","type","message","err","Content","Form","method","initialValues","validationSchema","onSubmit","Header","Title","Body","Tabs","defaultValue","Flex","justifyContent","Typography","tag","List","aria-labelledby","value","Divider","Box","paddingTop","paddingBottom","BaseForm","AdvancedForm","Footer","Close","SubmitButton","isSubmitting","useForm","modified","Check","mode","data","defaultLocales","useGetDefaultLocalesQuery","useEffect","Array","isArray","options","map","locale","label","translatedForm","placeholder","hint","field","undefined","Grid","gap","Item","xs","m","direction","alignItems","FormRenderer","isDefaultLocale","form","EnumerationInput","InputRenderer","onChange","useField","handleChange","find","selectedOption","option","Field","Label","Combobox","onClear","textValue","autocomplete","filter","ComboboxOption","Error","Hint"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/i18n",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.41.0",
|
|
4
4
|
"description": "Create read and update content in different languages, both from the Admin Panel and from the API",
|
|
5
5
|
"homepage": "https://strapi.io",
|
|
6
6
|
"bugs": {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
|
-
"url": "
|
|
11
|
+
"url": "https://github.com/strapi/strapi.git",
|
|
12
12
|
"directory": "packages/plugins/i18n"
|
|
13
13
|
},
|
|
14
14
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"@reduxjs/toolkit": "1.9.7",
|
|
64
64
|
"@strapi/design-system": "2.2.0",
|
|
65
65
|
"@strapi/icons": "2.2.0",
|
|
66
|
-
"@strapi/utils": "5.
|
|
66
|
+
"@strapi/utils": "5.41.0",
|
|
67
67
|
"lodash": "4.17.23",
|
|
68
68
|
"qs": "6.15.0",
|
|
69
69
|
"react-intl": "6.6.2",
|
|
@@ -72,11 +72,11 @@
|
|
|
72
72
|
"zod": "3.25.67"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
|
-
"@strapi/admin": "5.
|
|
76
|
-
"@strapi/admin-test-utils": "5.
|
|
77
|
-
"@strapi/content-manager": "5.
|
|
78
|
-
"@strapi/database": "5.
|
|
79
|
-
"@strapi/types": "5.
|
|
75
|
+
"@strapi/admin": "5.41.0",
|
|
76
|
+
"@strapi/admin-test-utils": "5.41.0",
|
|
77
|
+
"@strapi/content-manager": "5.41.0",
|
|
78
|
+
"@strapi/database": "5.41.0",
|
|
79
|
+
"@strapi/types": "5.41.0",
|
|
80
80
|
"@testing-library/react": "16.3.0",
|
|
81
81
|
"@testing-library/user-event": "14.6.1",
|
|
82
82
|
"koa": "2.16.4",
|