@strapi/i18n 5.50.0 → 5.50.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/admin/components/BulkLocaleActionModal.js +1 -1
  2. package/dist/admin/components/BulkLocaleActionModal.js.map +1 -1
  3. package/dist/admin/components/BulkLocaleActionModal.mjs +1 -1
  4. package/dist/admin/components/BulkLocaleActionModal.mjs.map +1 -1
  5. package/dist/admin/components/CMHeaderActions.js.map +1 -1
  6. package/dist/admin/components/CMHeaderActions.mjs.map +1 -1
  7. package/dist/admin/components/CreateLocale.js +3 -2
  8. package/dist/admin/components/CreateLocale.js.map +1 -1
  9. package/dist/admin/components/CreateLocale.mjs +3 -2
  10. package/dist/admin/components/CreateLocale.mjs.map +1 -1
  11. package/dist/admin/contentManagerHooks/editView.js +2 -1
  12. package/dist/admin/contentManagerHooks/editView.js.map +1 -1
  13. package/dist/admin/contentManagerHooks/editView.mjs +2 -1
  14. package/dist/admin/contentManagerHooks/editView.mjs.map +1 -1
  15. package/dist/admin/index.js.map +1 -1
  16. package/dist/admin/index.mjs.map +1 -1
  17. package/dist/admin/src/components/BulkLocaleActionModal.d.ts +3 -2
  18. package/dist/admin/src/services/aiLocalizationJobs.d.ts +1 -1
  19. package/dist/admin/src/services/api.d.ts +1 -1
  20. package/dist/admin/src/services/fillFromLocale.d.ts +1 -1
  21. package/dist/admin/src/services/locales.d.ts +1 -1
  22. package/dist/admin/src/services/relations.d.ts +2 -2
  23. package/dist/admin/src/services/settings.d.ts +2 -2
  24. package/dist/admin/src/utils/schemas.d.ts +9 -9
  25. package/dist/admin/translations/ko.json.js +34 -1
  26. package/dist/admin/translations/ko.json.js.map +1 -1
  27. package/dist/admin/translations/ko.json.mjs +34 -1
  28. package/dist/admin/translations/ko.json.mjs.map +1 -1
  29. package/dist/admin/translations/pl.json.js +2 -1
  30. package/dist/admin/translations/pl.json.js.map +1 -1
  31. package/dist/admin/translations/pl.json.mjs +2 -1
  32. package/dist/admin/translations/pl.json.mjs.map +1 -1
  33. package/dist/server/services/ai-localizations.js.map +1 -1
  34. package/dist/server/services/ai-localizations.mjs.map +1 -1
  35. package/dist/server/src/controllers/index.d.ts +3 -3
  36. package/dist/server/src/index.d.ts +16 -16
  37. package/dist/server/src/routes/index.d.ts +1 -1
  38. package/dist/server/src/services/ai-localizations.d.ts.map +1 -1
  39. package/dist/server/src/services/fill-from-locale.d.ts +1 -1
  40. package/dist/server/src/services/index.d.ts +11 -11
  41. package/dist/server/src/services/sanitize/index.d.ts +1 -1
  42. package/package.json +16 -11
@@ -34,7 +34,7 @@ const EntryValidationText = ({ status = 'draft', validationErrors, action })=>{
34
34
  */ return '';
35
35
  }
36
36
  };
37
- if (validationErrors) {
37
+ if (validationErrors !== null) {
38
38
  const validationErrorsMessages = Object.entries(validationErrors).map(([key, value])=>{
39
39
  return getErrorStr(key, value);
40
40
  }).join(' ');
@@ -1 +1 @@
1
- {"version":3,"file":"BulkLocaleActionModal.js","sources":["../../../admin/src/components/BulkLocaleActionModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { FormErrors, Table, useTable } from '@strapi/admin/strapi-admin';\nimport { Box, Typography, IconButton, Flex, Tooltip, Status, Modal } from '@strapi/design-system';\nimport { Pencil, CheckCircle, CrossCircle, ArrowsCounterClockwise } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { type MessageDescriptor, useIntl, PrimitiveType } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { Locale } from '../../../shared/contracts/locales';\nimport { getTranslation } from '../utils/getTranslation';\nimport { capitalize } from '../utils/strings';\n\nimport { LocaleStatus } from './CMHeaderActions';\n\nimport type { Modules } from '@strapi/types';\n\ntype Status = Modules.Documents.Params.PublicationStatus.Kind | 'modified';\n\n/* -------------------------------------------------------------------------------------------------\n * EntryValidationText\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EntryValidationTextProps {\n status: Status;\n validationErrors: FormErrors[string] | null;\n action: 'bulk-publish' | 'bulk-unpublish';\n}\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\nconst isErrorMessageDescriptor = (object?: string | object): object is TranslationMessage => {\n return (\n typeof object === 'object' && object !== null && 'id' in object && 'defaultMessage' in object\n );\n};\n\nconst EntryValidationText = ({\n status = 'draft',\n validationErrors,\n action,\n}: EntryValidationTextProps) => {\n const { formatMessage } = useIntl();\n\n /**\n * TODO: Should this be extracted an made into a factory to recursively get\n * error messages??\n */\n const getErrorStr = (key: string, value?: FormErrors[string]): string => {\n if (typeof value === 'string') {\n return `${key}: ${value}`;\n } else if (isErrorMessageDescriptor(value)) {\n return `${key}: ${formatMessage(value)}`;\n } else if (Array.isArray(value)) {\n return value.map((v) => getErrorStr(key, v)).join(' ');\n } else if (typeof value === 'object' && !Array.isArray(value)) {\n return Object.entries(value)\n .map(([k, v]) => getErrorStr(k, v))\n .join(' ');\n } else {\n /**\n * unlikely to happen, but we need to return something\n */\n return '';\n }\n };\n\n if (validationErrors) {\n const validationErrorsMessages = Object.entries(validationErrors)\n .map(([key, value]) => {\n return getErrorStr(key, value);\n })\n .join(' ');\n\n return (\n <Flex gap={2}>\n <CrossCircle fill=\"danger600\" />\n <Tooltip label={validationErrorsMessages}>\n <Typography\n maxWidth={'30rem'}\n textColor=\"danger600\"\n variant=\"omega\"\n fontWeight=\"semiBold\"\n ellipsis\n >\n {validationErrorsMessages}\n </Typography>\n </Tooltip>\n </Flex>\n );\n }\n\n const getStatusMessage = () => {\n if (action === 'bulk-publish') {\n if (status === 'published') {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'content-manager.bulk-publish.already-published',\n defaultMessage: 'Already Published',\n }),\n textColor: 'success600',\n fontWeight: 'bold',\n };\n } else if (status === 'modified') {\n return {\n icon: <ArrowsCounterClockwise fill=\"alternative600\" />,\n text: formatMessage({\n id: 'app.utils.ready-to-publish-changes',\n defaultMessage: 'Ready to publish changes',\n }),\n };\n } else {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n }),\n };\n }\n } else {\n if (status === 'draft') {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'content-manager.bulk-unpublish.already-unpublished',\n defaultMessage: 'Already Unpublished',\n }),\n textColor: 'success600',\n fontWeight: 'bold',\n };\n } else {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'app.utils.ready-to-unpublish-changes',\n defaultMessage: 'Ready to unpublish',\n }),\n textColor: 'success600',\n fontWeight: 'bold',\n };\n }\n }\n };\n\n const { icon, text, textColor = 'success600', fontWeight = 'normal' } = getStatusMessage();\n\n return (\n <Flex gap={2}>\n {icon}\n <Typography textColor={textColor} fontWeight={fontWeight}>\n {text}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BoldChunk\n * -----------------------------------------------------------------------------------------------*/\n\nconst BoldChunk = (chunks: React.ReactNode) => <Typography fontWeight=\"bold\">{chunks}</Typography>;\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BulkLocaleActionModalProps {\n rows: LocaleStatus[];\n headers: {\n label: string;\n name: string;\n }[];\n localesMetadata: Locale[];\n validationErrors?: FormErrors;\n action: 'bulk-publish' | 'bulk-unpublish';\n}\n\nconst BulkLocaleActionModal = ({\n headers,\n rows,\n localesMetadata,\n validationErrors = {},\n action,\n}: BulkLocaleActionModalProps) => {\n const { formatMessage } = useIntl();\n\n const selectedRows = useTable<LocaleStatus[]>(\n 'BulkLocaleActionModal',\n (state) => state.selectedRows\n );\n\n const getFormattedCountMessage = () => {\n const currentStatusByLocale = rows.reduce<Record<string, string>>((acc, { locale, status }) => {\n acc[locale] = status;\n return acc;\n }, {});\n const localesWithErrors = Object.keys(validationErrors);\n\n const publishedCount = selectedRows.filter(\n ({ locale }) => currentStatusByLocale[locale] === 'published'\n ).length;\n\n const draftCount = selectedRows.filter(\n ({ locale }) =>\n (currentStatusByLocale[locale] === 'draft' ||\n currentStatusByLocale[locale] === 'modified') &&\n !localesWithErrors.includes(locale)\n ).length;\n\n const withErrorsCount = localesWithErrors.length;\n const messageId =\n action === 'bulk-publish'\n ? 'content-manager.containers.list.selectedEntriesModal.selectedCount.publish'\n : 'content-manager.containers.list.selectedEntriesModal.selectedCount.unpublish';\n\n const defaultMessage =\n action === 'bulk-publish'\n ? '<b>{publishedCount}</b> {publishedCount, plural, =0 {entries} one {entry} other {entries}} already published. <b>{draftCount}</b> {draftCount, plural, =0 {entries} one {entry} other {entries}} ready to publish. <b>{withErrorsCount}</b> {withErrorsCount, plural, =0 {entries} one {entry} other {entries}} waiting for action.'\n : '<b>{draftCount}</b> {draftCount, plural, =0 {entries} one {entry} other {entries}} already unpublished. <b>{publishedCount}</b> {publishedCount, plural, =0 {entries} one {entry} other {entries}} ready to unpublish.';\n\n return formatMessage(\n {\n id: messageId,\n defaultMessage,\n },\n {\n withErrorsCount,\n draftCount,\n publishedCount,\n b: BoldChunk,\n }\n );\n };\n\n return (\n <Modal.Body>\n <Typography>{getFormattedCountMessage()}</Typography>\n <Box marginTop={5}>\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {headers.map((head) => (\n <Table.HeaderCell key={head.name} {...head} />\n ))}\n </Table.Head>\n <Table.Body>\n {rows.map(({ locale, status }, index) => {\n const error = validationErrors?.[locale] ?? null;\n\n const statusVariant =\n status === 'draft' ? 'primary' : status === 'published' ? 'success' : 'alternative';\n\n return status && locale ? (\n <Table.Row key={index}>\n <Table.CheckboxCell id={locale} aria-label={`Select ${locale}`} />\n <Table.Cell>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {Array.isArray(localesMetadata)\n ? localesMetadata.find((localeEntry) => localeEntry.code === locale)?.name\n : locale}\n </Typography>\n </Table.Cell>\n <Table.Cell>\n <Box display=\"flex\">\n <Status\n display=\"flex\"\n paddingLeft=\"6px\"\n paddingRight=\"6px\"\n paddingTop=\"2px\"\n paddingBottom=\"2px\"\n size={'S'}\n variant={statusVariant}\n >\n <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n {capitalize(status)}\n </Typography>\n </Status>\n </Box>\n </Table.Cell>\n <Table.Cell>\n <EntryValidationText validationErrors={error} status={status} action={action} />\n </Table.Cell>\n <Table.Cell>\n <IconButton\n tag={Link}\n to={{\n search: stringify({ plugins: { i18n: { locale } } }),\n }}\n label={formatMessage(\n {\n id: getTranslation('Settings.list.actions.edit'),\n defaultMessage: 'Edit {name} locale',\n },\n {\n name: locale,\n }\n )}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Table.Cell>\n </Table.Row>\n ) : null;\n })}\n </Table.Body>\n </Table.Content>\n </Box>\n </Modal.Body>\n );\n};\n\nexport { BulkLocaleActionModal };\nexport type { BulkLocaleActionModalProps };\n"],"names":["isErrorMessageDescriptor","object","EntryValidationText","status","validationErrors","action","formatMessage","useIntl","getErrorStr","key","value","Array","isArray","map","v","join","Object","entries","k","validationErrorsMessages","_jsxs","Flex","gap","_jsx","CrossCircle","fill","Tooltip","label","Typography","maxWidth","textColor","variant","fontWeight","ellipsis","getStatusMessage","icon","CheckCircle","text","id","defaultMessage","ArrowsCounterClockwise","BoldChunk","chunks","BulkLocaleActionModal","headers","rows","localesMetadata","selectedRows","useTable","state","getFormattedCountMessage","currentStatusByLocale","reduce","acc","locale","localesWithErrors","keys","publishedCount","filter","length","draftCount","includes","withErrorsCount","messageId","b","Modal","Body","Box","marginTop","Table","Content","Head","HeaderCheckboxCell","head","HeaderCell","name","index","error","statusVariant","Row","CheckboxCell","aria-label","Cell","find","localeEntry","code","display","Status","paddingLeft","paddingRight","paddingTop","paddingBottom","size","tag","capitalize","IconButton","Link","to","search","stringify","plugins","i18n","getTranslation","Pencil"],"mappings":"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"}
1
+ {"version":3,"file":"BulkLocaleActionModal.js","sources":["../../../admin/src/components/BulkLocaleActionModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { FormErrors, Table, useTable } from '@strapi/admin/strapi-admin';\nimport { Box, Typography, IconButton, Flex, Tooltip, Status, Modal } from '@strapi/design-system';\nimport { Pencil, CheckCircle, CrossCircle, ArrowsCounterClockwise } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { type MessageDescriptor, useIntl, PrimitiveType } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { Locale } from '../../../shared/contracts/locales';\nimport { getTranslation } from '../utils/getTranslation';\nimport { capitalize } from '../utils/strings';\n\nimport { LocaleStatus } from './CMHeaderActions';\n\nimport type { Modules } from '@strapi/types';\n\ntype Status = Modules.Documents.Params.PublicationStatus.Kind | 'modified';\n\n/* -------------------------------------------------------------------------------------------------\n * EntryValidationText\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EntryValidationTextProps {\n status: Status;\n validationErrors: FormErrors | null;\n action: 'bulk-publish' | 'bulk-unpublish';\n}\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\ntype ValidationErrorValue =\n | string\n | TranslationMessage\n | ValidationErrorValue[]\n | { [key: string]: ValidationErrorValue | undefined };\n\ntype ValidationErrorRecord = Record<string, ValidationErrorValue | undefined>;\n\ntype LocaleValidationErrors = Partial<Record<string, FormErrors>>;\ntype LocaleTableRow = LocaleStatus & { id: string };\n\nconst isErrorMessageDescriptor = (object?: string | object): object is TranslationMessage => {\n return (\n typeof object === 'object' && object !== null && 'id' in object && 'defaultMessage' in object\n );\n};\n\nconst EntryValidationText = ({\n status = 'draft',\n validationErrors,\n action,\n}: EntryValidationTextProps) => {\n const { formatMessage } = useIntl();\n\n /**\n * TODO: Should this be extracted an made into a factory to recursively get\n * error messages??\n */\n const getErrorStr = (key: string, value?: ValidationErrorValue): string => {\n if (typeof value === 'string') {\n return `${key}: ${value}`;\n } else if (isErrorMessageDescriptor(value)) {\n return `${key}: ${formatMessage(value)}`;\n } else if (Array.isArray(value)) {\n return value.map((v) => getErrorStr(key, v)).join(' ');\n } else if (typeof value === 'object' && !Array.isArray(value)) {\n return Object.entries(value)\n .map(([k, v]) => getErrorStr(k, v))\n .join(' ');\n } else {\n /**\n * unlikely to happen, but we need to return something\n */\n return '';\n }\n };\n\n if (validationErrors !== null) {\n const validationErrorsMessages = Object.entries(validationErrors as ValidationErrorRecord)\n .map(([key, value]) => {\n return getErrorStr(key, value);\n })\n .join(' ');\n\n return (\n <Flex gap={2}>\n <CrossCircle fill=\"danger600\" />\n <Tooltip label={validationErrorsMessages}>\n <Typography\n maxWidth={'30rem'}\n textColor=\"danger600\"\n variant=\"omega\"\n fontWeight=\"semiBold\"\n ellipsis\n >\n {validationErrorsMessages}\n </Typography>\n </Tooltip>\n </Flex>\n );\n }\n\n const getStatusMessage = () => {\n if (action === 'bulk-publish') {\n if (status === 'published') {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'content-manager.bulk-publish.already-published',\n defaultMessage: 'Already Published',\n }),\n textColor: 'success600',\n fontWeight: 'bold',\n };\n } else if (status === 'modified') {\n return {\n icon: <ArrowsCounterClockwise fill=\"alternative600\" />,\n text: formatMessage({\n id: 'app.utils.ready-to-publish-changes',\n defaultMessage: 'Ready to publish changes',\n }),\n };\n } else {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n }),\n };\n }\n } else {\n if (status === 'draft') {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'content-manager.bulk-unpublish.already-unpublished',\n defaultMessage: 'Already Unpublished',\n }),\n textColor: 'success600',\n fontWeight: 'bold',\n };\n } else {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'app.utils.ready-to-unpublish-changes',\n defaultMessage: 'Ready to unpublish',\n }),\n textColor: 'success600',\n fontWeight: 'bold',\n };\n }\n }\n };\n\n const { icon, text, textColor = 'success600', fontWeight = 'normal' } = getStatusMessage();\n\n return (\n <Flex gap={2}>\n {icon}\n <Typography textColor={textColor} fontWeight={fontWeight}>\n {text}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BoldChunk\n * -----------------------------------------------------------------------------------------------*/\n\nconst BoldChunk = (chunks: React.ReactNode) => <Typography fontWeight=\"bold\">{chunks}</Typography>;\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BulkLocaleActionModalProps {\n rows: LocaleStatus[];\n headers: {\n label: string;\n name: string;\n }[];\n localesMetadata: Locale[];\n validationErrors?: LocaleValidationErrors;\n action: 'bulk-publish' | 'bulk-unpublish';\n}\n\nconst BulkLocaleActionModal = ({\n headers,\n rows,\n localesMetadata,\n validationErrors = {},\n action,\n}: BulkLocaleActionModalProps) => {\n const { formatMessage } = useIntl();\n\n const selectedRows = useTable(\n 'BulkLocaleActionModal',\n (state) => state.selectedRows\n ) as LocaleTableRow[];\n\n const getFormattedCountMessage = () => {\n const currentStatusByLocale = rows.reduce<Record<string, string>>((acc, { locale, status }) => {\n acc[locale] = status;\n return acc;\n }, {});\n const localesWithErrors = Object.keys(validationErrors);\n\n const publishedCount = selectedRows.filter(\n ({ locale }) => currentStatusByLocale[locale] === 'published'\n ).length;\n\n const draftCount = selectedRows.filter(\n ({ locale }) =>\n (currentStatusByLocale[locale] === 'draft' ||\n currentStatusByLocale[locale] === 'modified') &&\n !localesWithErrors.includes(locale)\n ).length;\n\n const withErrorsCount = localesWithErrors.length;\n const messageId =\n action === 'bulk-publish'\n ? 'content-manager.containers.list.selectedEntriesModal.selectedCount.publish'\n : 'content-manager.containers.list.selectedEntriesModal.selectedCount.unpublish';\n\n const defaultMessage =\n action === 'bulk-publish'\n ? '<b>{publishedCount}</b> {publishedCount, plural, =0 {entries} one {entry} other {entries}} already published. <b>{draftCount}</b> {draftCount, plural, =0 {entries} one {entry} other {entries}} ready to publish. <b>{withErrorsCount}</b> {withErrorsCount, plural, =0 {entries} one {entry} other {entries}} waiting for action.'\n : '<b>{draftCount}</b> {draftCount, plural, =0 {entries} one {entry} other {entries}} already unpublished. <b>{publishedCount}</b> {publishedCount, plural, =0 {entries} one {entry} other {entries}} ready to unpublish.';\n\n return formatMessage(\n {\n id: messageId,\n defaultMessage,\n },\n {\n withErrorsCount,\n draftCount,\n publishedCount,\n b: BoldChunk,\n }\n );\n };\n\n return (\n <Modal.Body>\n <Typography>{getFormattedCountMessage()}</Typography>\n <Box marginTop={5}>\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {headers.map((head) => (\n <Table.HeaderCell key={head.name} {...head} />\n ))}\n </Table.Head>\n <Table.Body>\n {rows.map(({ locale, status }, index) => {\n const error = validationErrors?.[locale] ?? null;\n\n const statusVariant =\n status === 'draft' ? 'primary' : status === 'published' ? 'success' : 'alternative';\n\n return status && locale ? (\n <Table.Row key={index}>\n <Table.CheckboxCell id={locale} aria-label={`Select ${locale}`} />\n <Table.Cell>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {Array.isArray(localesMetadata)\n ? localesMetadata.find((localeEntry) => localeEntry.code === locale)?.name\n : locale}\n </Typography>\n </Table.Cell>\n <Table.Cell>\n <Box display=\"flex\">\n <Status\n display=\"flex\"\n paddingLeft=\"6px\"\n paddingRight=\"6px\"\n paddingTop=\"2px\"\n paddingBottom=\"2px\"\n size={'S'}\n variant={statusVariant}\n >\n <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n {capitalize(status)}\n </Typography>\n </Status>\n </Box>\n </Table.Cell>\n <Table.Cell>\n <EntryValidationText validationErrors={error} status={status} action={action} />\n </Table.Cell>\n <Table.Cell>\n <IconButton\n tag={Link}\n to={{\n search: stringify({ plugins: { i18n: { locale } } }),\n }}\n label={formatMessage(\n {\n id: getTranslation('Settings.list.actions.edit'),\n defaultMessage: 'Edit {name} locale',\n },\n {\n name: locale,\n }\n )}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Table.Cell>\n </Table.Row>\n ) : null;\n })}\n </Table.Body>\n </Table.Content>\n </Box>\n </Modal.Body>\n );\n};\n\nexport { BulkLocaleActionModal };\nexport type { BulkLocaleActionModalProps, LocaleValidationErrors };\n"],"names":["isErrorMessageDescriptor","object","EntryValidationText","status","validationErrors","action","formatMessage","useIntl","getErrorStr","key","value","Array","isArray","map","v","join","Object","entries","k","validationErrorsMessages","_jsxs","Flex","gap","_jsx","CrossCircle","fill","Tooltip","label","Typography","maxWidth","textColor","variant","fontWeight","ellipsis","getStatusMessage","icon","CheckCircle","text","id","defaultMessage","ArrowsCounterClockwise","BoldChunk","chunks","BulkLocaleActionModal","headers","rows","localesMetadata","selectedRows","useTable","state","getFormattedCountMessage","currentStatusByLocale","reduce","acc","locale","localesWithErrors","keys","publishedCount","filter","length","draftCount","includes","withErrorsCount","messageId","b","Modal","Body","Box","marginTop","Table","Content","Head","HeaderCheckboxCell","head","HeaderCell","name","index","error","statusVariant","Row","CheckboxCell","aria-label","Cell","find","localeEntry","code","display","Status","paddingLeft","paddingRight","paddingTop","paddingBottom","size","tag","capitalize","IconButton","Link","to","search","stringify","plugins","i18n","getTranslation","Pencil"],"mappings":"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"}
@@ -32,7 +32,7 @@ const EntryValidationText = ({ status = 'draft', validationErrors, action })=>{
32
32
  */ return '';
33
33
  }
34
34
  };
35
- if (validationErrors) {
35
+ if (validationErrors !== null) {
36
36
  const validationErrorsMessages = Object.entries(validationErrors).map(([key, value])=>{
37
37
  return getErrorStr(key, value);
38
38
  }).join(' ');
@@ -1 +1 @@
1
- {"version":3,"file":"BulkLocaleActionModal.mjs","sources":["../../../admin/src/components/BulkLocaleActionModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { FormErrors, Table, useTable } from '@strapi/admin/strapi-admin';\nimport { Box, Typography, IconButton, Flex, Tooltip, Status, Modal } from '@strapi/design-system';\nimport { Pencil, CheckCircle, CrossCircle, ArrowsCounterClockwise } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { type MessageDescriptor, useIntl, PrimitiveType } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { Locale } from '../../../shared/contracts/locales';\nimport { getTranslation } from '../utils/getTranslation';\nimport { capitalize } from '../utils/strings';\n\nimport { LocaleStatus } from './CMHeaderActions';\n\nimport type { Modules } from '@strapi/types';\n\ntype Status = Modules.Documents.Params.PublicationStatus.Kind | 'modified';\n\n/* -------------------------------------------------------------------------------------------------\n * EntryValidationText\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EntryValidationTextProps {\n status: Status;\n validationErrors: FormErrors[string] | null;\n action: 'bulk-publish' | 'bulk-unpublish';\n}\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\nconst isErrorMessageDescriptor = (object?: string | object): object is TranslationMessage => {\n return (\n typeof object === 'object' && object !== null && 'id' in object && 'defaultMessage' in object\n );\n};\n\nconst EntryValidationText = ({\n status = 'draft',\n validationErrors,\n action,\n}: EntryValidationTextProps) => {\n const { formatMessage } = useIntl();\n\n /**\n * TODO: Should this be extracted an made into a factory to recursively get\n * error messages??\n */\n const getErrorStr = (key: string, value?: FormErrors[string]): string => {\n if (typeof value === 'string') {\n return `${key}: ${value}`;\n } else if (isErrorMessageDescriptor(value)) {\n return `${key}: ${formatMessage(value)}`;\n } else if (Array.isArray(value)) {\n return value.map((v) => getErrorStr(key, v)).join(' ');\n } else if (typeof value === 'object' && !Array.isArray(value)) {\n return Object.entries(value)\n .map(([k, v]) => getErrorStr(k, v))\n .join(' ');\n } else {\n /**\n * unlikely to happen, but we need to return something\n */\n return '';\n }\n };\n\n if (validationErrors) {\n const validationErrorsMessages = Object.entries(validationErrors)\n .map(([key, value]) => {\n return getErrorStr(key, value);\n })\n .join(' ');\n\n return (\n <Flex gap={2}>\n <CrossCircle fill=\"danger600\" />\n <Tooltip label={validationErrorsMessages}>\n <Typography\n maxWidth={'30rem'}\n textColor=\"danger600\"\n variant=\"omega\"\n fontWeight=\"semiBold\"\n ellipsis\n >\n {validationErrorsMessages}\n </Typography>\n </Tooltip>\n </Flex>\n );\n }\n\n const getStatusMessage = () => {\n if (action === 'bulk-publish') {\n if (status === 'published') {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'content-manager.bulk-publish.already-published',\n defaultMessage: 'Already Published',\n }),\n textColor: 'success600',\n fontWeight: 'bold',\n };\n } else if (status === 'modified') {\n return {\n icon: <ArrowsCounterClockwise fill=\"alternative600\" />,\n text: formatMessage({\n id: 'app.utils.ready-to-publish-changes',\n defaultMessage: 'Ready to publish changes',\n }),\n };\n } else {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n }),\n };\n }\n } else {\n if (status === 'draft') {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'content-manager.bulk-unpublish.already-unpublished',\n defaultMessage: 'Already Unpublished',\n }),\n textColor: 'success600',\n fontWeight: 'bold',\n };\n } else {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'app.utils.ready-to-unpublish-changes',\n defaultMessage: 'Ready to unpublish',\n }),\n textColor: 'success600',\n fontWeight: 'bold',\n };\n }\n }\n };\n\n const { icon, text, textColor = 'success600', fontWeight = 'normal' } = getStatusMessage();\n\n return (\n <Flex gap={2}>\n {icon}\n <Typography textColor={textColor} fontWeight={fontWeight}>\n {text}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BoldChunk\n * -----------------------------------------------------------------------------------------------*/\n\nconst BoldChunk = (chunks: React.ReactNode) => <Typography fontWeight=\"bold\">{chunks}</Typography>;\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BulkLocaleActionModalProps {\n rows: LocaleStatus[];\n headers: {\n label: string;\n name: string;\n }[];\n localesMetadata: Locale[];\n validationErrors?: FormErrors;\n action: 'bulk-publish' | 'bulk-unpublish';\n}\n\nconst BulkLocaleActionModal = ({\n headers,\n rows,\n localesMetadata,\n validationErrors = {},\n action,\n}: BulkLocaleActionModalProps) => {\n const { formatMessage } = useIntl();\n\n const selectedRows = useTable<LocaleStatus[]>(\n 'BulkLocaleActionModal',\n (state) => state.selectedRows\n );\n\n const getFormattedCountMessage = () => {\n const currentStatusByLocale = rows.reduce<Record<string, string>>((acc, { locale, status }) => {\n acc[locale] = status;\n return acc;\n }, {});\n const localesWithErrors = Object.keys(validationErrors);\n\n const publishedCount = selectedRows.filter(\n ({ locale }) => currentStatusByLocale[locale] === 'published'\n ).length;\n\n const draftCount = selectedRows.filter(\n ({ locale }) =>\n (currentStatusByLocale[locale] === 'draft' ||\n currentStatusByLocale[locale] === 'modified') &&\n !localesWithErrors.includes(locale)\n ).length;\n\n const withErrorsCount = localesWithErrors.length;\n const messageId =\n action === 'bulk-publish'\n ? 'content-manager.containers.list.selectedEntriesModal.selectedCount.publish'\n : 'content-manager.containers.list.selectedEntriesModal.selectedCount.unpublish';\n\n const defaultMessage =\n action === 'bulk-publish'\n ? '<b>{publishedCount}</b> {publishedCount, plural, =0 {entries} one {entry} other {entries}} already published. <b>{draftCount}</b> {draftCount, plural, =0 {entries} one {entry} other {entries}} ready to publish. <b>{withErrorsCount}</b> {withErrorsCount, plural, =0 {entries} one {entry} other {entries}} waiting for action.'\n : '<b>{draftCount}</b> {draftCount, plural, =0 {entries} one {entry} other {entries}} already unpublished. <b>{publishedCount}</b> {publishedCount, plural, =0 {entries} one {entry} other {entries}} ready to unpublish.';\n\n return formatMessage(\n {\n id: messageId,\n defaultMessage,\n },\n {\n withErrorsCount,\n draftCount,\n publishedCount,\n b: BoldChunk,\n }\n );\n };\n\n return (\n <Modal.Body>\n <Typography>{getFormattedCountMessage()}</Typography>\n <Box marginTop={5}>\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {headers.map((head) => (\n <Table.HeaderCell key={head.name} {...head} />\n ))}\n </Table.Head>\n <Table.Body>\n {rows.map(({ locale, status }, index) => {\n const error = validationErrors?.[locale] ?? null;\n\n const statusVariant =\n status === 'draft' ? 'primary' : status === 'published' ? 'success' : 'alternative';\n\n return status && locale ? (\n <Table.Row key={index}>\n <Table.CheckboxCell id={locale} aria-label={`Select ${locale}`} />\n <Table.Cell>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {Array.isArray(localesMetadata)\n ? localesMetadata.find((localeEntry) => localeEntry.code === locale)?.name\n : locale}\n </Typography>\n </Table.Cell>\n <Table.Cell>\n <Box display=\"flex\">\n <Status\n display=\"flex\"\n paddingLeft=\"6px\"\n paddingRight=\"6px\"\n paddingTop=\"2px\"\n paddingBottom=\"2px\"\n size={'S'}\n variant={statusVariant}\n >\n <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n {capitalize(status)}\n </Typography>\n </Status>\n </Box>\n </Table.Cell>\n <Table.Cell>\n <EntryValidationText validationErrors={error} status={status} action={action} />\n </Table.Cell>\n <Table.Cell>\n <IconButton\n tag={Link}\n to={{\n search: stringify({ plugins: { i18n: { locale } } }),\n }}\n label={formatMessage(\n {\n id: getTranslation('Settings.list.actions.edit'),\n defaultMessage: 'Edit {name} locale',\n },\n {\n name: locale,\n }\n )}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Table.Cell>\n </Table.Row>\n ) : null;\n })}\n </Table.Body>\n </Table.Content>\n </Box>\n </Modal.Body>\n );\n};\n\nexport { BulkLocaleActionModal };\nexport type { BulkLocaleActionModalProps };\n"],"names":["isErrorMessageDescriptor","object","EntryValidationText","status","validationErrors","action","formatMessage","useIntl","getErrorStr","key","value","Array","isArray","map","v","join","Object","entries","k","validationErrorsMessages","_jsxs","Flex","gap","_jsx","CrossCircle","fill","Tooltip","label","Typography","maxWidth","textColor","variant","fontWeight","ellipsis","getStatusMessage","icon","CheckCircle","text","id","defaultMessage","ArrowsCounterClockwise","BoldChunk","chunks","BulkLocaleActionModal","headers","rows","localesMetadata","selectedRows","useTable","state","getFormattedCountMessage","currentStatusByLocale","reduce","acc","locale","localesWithErrors","keys","publishedCount","filter","length","draftCount","includes","withErrorsCount","messageId","b","Modal","Body","Box","marginTop","Table","Content","Head","HeaderCheckboxCell","head","HeaderCell","name","index","error","statusVariant","Row","CheckboxCell","aria-label","Cell","find","localeEntry","code","display","Status","paddingLeft","paddingRight","paddingTop","paddingBottom","size","tag","capitalize","IconButton","Link","to","search","stringify","plugins","i18n","getTranslation","Pencil"],"mappings":"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"}
1
+ {"version":3,"file":"BulkLocaleActionModal.mjs","sources":["../../../admin/src/components/BulkLocaleActionModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { FormErrors, Table, useTable } from '@strapi/admin/strapi-admin';\nimport { Box, Typography, IconButton, Flex, Tooltip, Status, Modal } from '@strapi/design-system';\nimport { Pencil, CheckCircle, CrossCircle, ArrowsCounterClockwise } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { type MessageDescriptor, useIntl, PrimitiveType } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { Locale } from '../../../shared/contracts/locales';\nimport { getTranslation } from '../utils/getTranslation';\nimport { capitalize } from '../utils/strings';\n\nimport { LocaleStatus } from './CMHeaderActions';\n\nimport type { Modules } from '@strapi/types';\n\ntype Status = Modules.Documents.Params.PublicationStatus.Kind | 'modified';\n\n/* -------------------------------------------------------------------------------------------------\n * EntryValidationText\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EntryValidationTextProps {\n status: Status;\n validationErrors: FormErrors | null;\n action: 'bulk-publish' | 'bulk-unpublish';\n}\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\ntype ValidationErrorValue =\n | string\n | TranslationMessage\n | ValidationErrorValue[]\n | { [key: string]: ValidationErrorValue | undefined };\n\ntype ValidationErrorRecord = Record<string, ValidationErrorValue | undefined>;\n\ntype LocaleValidationErrors = Partial<Record<string, FormErrors>>;\ntype LocaleTableRow = LocaleStatus & { id: string };\n\nconst isErrorMessageDescriptor = (object?: string | object): object is TranslationMessage => {\n return (\n typeof object === 'object' && object !== null && 'id' in object && 'defaultMessage' in object\n );\n};\n\nconst EntryValidationText = ({\n status = 'draft',\n validationErrors,\n action,\n}: EntryValidationTextProps) => {\n const { formatMessage } = useIntl();\n\n /**\n * TODO: Should this be extracted an made into a factory to recursively get\n * error messages??\n */\n const getErrorStr = (key: string, value?: ValidationErrorValue): string => {\n if (typeof value === 'string') {\n return `${key}: ${value}`;\n } else if (isErrorMessageDescriptor(value)) {\n return `${key}: ${formatMessage(value)}`;\n } else if (Array.isArray(value)) {\n return value.map((v) => getErrorStr(key, v)).join(' ');\n } else if (typeof value === 'object' && !Array.isArray(value)) {\n return Object.entries(value)\n .map(([k, v]) => getErrorStr(k, v))\n .join(' ');\n } else {\n /**\n * unlikely to happen, but we need to return something\n */\n return '';\n }\n };\n\n if (validationErrors !== null) {\n const validationErrorsMessages = Object.entries(validationErrors as ValidationErrorRecord)\n .map(([key, value]) => {\n return getErrorStr(key, value);\n })\n .join(' ');\n\n return (\n <Flex gap={2}>\n <CrossCircle fill=\"danger600\" />\n <Tooltip label={validationErrorsMessages}>\n <Typography\n maxWidth={'30rem'}\n textColor=\"danger600\"\n variant=\"omega\"\n fontWeight=\"semiBold\"\n ellipsis\n >\n {validationErrorsMessages}\n </Typography>\n </Tooltip>\n </Flex>\n );\n }\n\n const getStatusMessage = () => {\n if (action === 'bulk-publish') {\n if (status === 'published') {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'content-manager.bulk-publish.already-published',\n defaultMessage: 'Already Published',\n }),\n textColor: 'success600',\n fontWeight: 'bold',\n };\n } else if (status === 'modified') {\n return {\n icon: <ArrowsCounterClockwise fill=\"alternative600\" />,\n text: formatMessage({\n id: 'app.utils.ready-to-publish-changes',\n defaultMessage: 'Ready to publish changes',\n }),\n };\n } else {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n }),\n };\n }\n } else {\n if (status === 'draft') {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'content-manager.bulk-unpublish.already-unpublished',\n defaultMessage: 'Already Unpublished',\n }),\n textColor: 'success600',\n fontWeight: 'bold',\n };\n } else {\n return {\n icon: <CheckCircle fill=\"success600\" />,\n text: formatMessage({\n id: 'app.utils.ready-to-unpublish-changes',\n defaultMessage: 'Ready to unpublish',\n }),\n textColor: 'success600',\n fontWeight: 'bold',\n };\n }\n }\n };\n\n const { icon, text, textColor = 'success600', fontWeight = 'normal' } = getStatusMessage();\n\n return (\n <Flex gap={2}>\n {icon}\n <Typography textColor={textColor} fontWeight={fontWeight}>\n {text}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BoldChunk\n * -----------------------------------------------------------------------------------------------*/\n\nconst BoldChunk = (chunks: React.ReactNode) => <Typography fontWeight=\"bold\">{chunks}</Typography>;\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BulkLocaleActionModalProps {\n rows: LocaleStatus[];\n headers: {\n label: string;\n name: string;\n }[];\n localesMetadata: Locale[];\n validationErrors?: LocaleValidationErrors;\n action: 'bulk-publish' | 'bulk-unpublish';\n}\n\nconst BulkLocaleActionModal = ({\n headers,\n rows,\n localesMetadata,\n validationErrors = {},\n action,\n}: BulkLocaleActionModalProps) => {\n const { formatMessage } = useIntl();\n\n const selectedRows = useTable(\n 'BulkLocaleActionModal',\n (state) => state.selectedRows\n ) as LocaleTableRow[];\n\n const getFormattedCountMessage = () => {\n const currentStatusByLocale = rows.reduce<Record<string, string>>((acc, { locale, status }) => {\n acc[locale] = status;\n return acc;\n }, {});\n const localesWithErrors = Object.keys(validationErrors);\n\n const publishedCount = selectedRows.filter(\n ({ locale }) => currentStatusByLocale[locale] === 'published'\n ).length;\n\n const draftCount = selectedRows.filter(\n ({ locale }) =>\n (currentStatusByLocale[locale] === 'draft' ||\n currentStatusByLocale[locale] === 'modified') &&\n !localesWithErrors.includes(locale)\n ).length;\n\n const withErrorsCount = localesWithErrors.length;\n const messageId =\n action === 'bulk-publish'\n ? 'content-manager.containers.list.selectedEntriesModal.selectedCount.publish'\n : 'content-manager.containers.list.selectedEntriesModal.selectedCount.unpublish';\n\n const defaultMessage =\n action === 'bulk-publish'\n ? '<b>{publishedCount}</b> {publishedCount, plural, =0 {entries} one {entry} other {entries}} already published. <b>{draftCount}</b> {draftCount, plural, =0 {entries} one {entry} other {entries}} ready to publish. <b>{withErrorsCount}</b> {withErrorsCount, plural, =0 {entries} one {entry} other {entries}} waiting for action.'\n : '<b>{draftCount}</b> {draftCount, plural, =0 {entries} one {entry} other {entries}} already unpublished. <b>{publishedCount}</b> {publishedCount, plural, =0 {entries} one {entry} other {entries}} ready to unpublish.';\n\n return formatMessage(\n {\n id: messageId,\n defaultMessage,\n },\n {\n withErrorsCount,\n draftCount,\n publishedCount,\n b: BoldChunk,\n }\n );\n };\n\n return (\n <Modal.Body>\n <Typography>{getFormattedCountMessage()}</Typography>\n <Box marginTop={5}>\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {headers.map((head) => (\n <Table.HeaderCell key={head.name} {...head} />\n ))}\n </Table.Head>\n <Table.Body>\n {rows.map(({ locale, status }, index) => {\n const error = validationErrors?.[locale] ?? null;\n\n const statusVariant =\n status === 'draft' ? 'primary' : status === 'published' ? 'success' : 'alternative';\n\n return status && locale ? (\n <Table.Row key={index}>\n <Table.CheckboxCell id={locale} aria-label={`Select ${locale}`} />\n <Table.Cell>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {Array.isArray(localesMetadata)\n ? localesMetadata.find((localeEntry) => localeEntry.code === locale)?.name\n : locale}\n </Typography>\n </Table.Cell>\n <Table.Cell>\n <Box display=\"flex\">\n <Status\n display=\"flex\"\n paddingLeft=\"6px\"\n paddingRight=\"6px\"\n paddingTop=\"2px\"\n paddingBottom=\"2px\"\n size={'S'}\n variant={statusVariant}\n >\n <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n {capitalize(status)}\n </Typography>\n </Status>\n </Box>\n </Table.Cell>\n <Table.Cell>\n <EntryValidationText validationErrors={error} status={status} action={action} />\n </Table.Cell>\n <Table.Cell>\n <IconButton\n tag={Link}\n to={{\n search: stringify({ plugins: { i18n: { locale } } }),\n }}\n label={formatMessage(\n {\n id: getTranslation('Settings.list.actions.edit'),\n defaultMessage: 'Edit {name} locale',\n },\n {\n name: locale,\n }\n )}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Table.Cell>\n </Table.Row>\n ) : null;\n })}\n </Table.Body>\n </Table.Content>\n </Box>\n </Modal.Body>\n );\n};\n\nexport { BulkLocaleActionModal };\nexport type { BulkLocaleActionModalProps, LocaleValidationErrors };\n"],"names":["isErrorMessageDescriptor","object","EntryValidationText","status","validationErrors","action","formatMessage","useIntl","getErrorStr","key","value","Array","isArray","map","v","join","Object","entries","k","validationErrorsMessages","_jsxs","Flex","gap","_jsx","CrossCircle","fill","Tooltip","label","Typography","maxWidth","textColor","variant","fontWeight","ellipsis","getStatusMessage","icon","CheckCircle","text","id","defaultMessage","ArrowsCounterClockwise","BoldChunk","chunks","BulkLocaleActionModal","headers","rows","localesMetadata","selectedRows","useTable","state","getFormattedCountMessage","currentStatusByLocale","reduce","acc","locale","localesWithErrors","keys","publishedCount","filter","length","draftCount","includes","withErrorsCount","messageId","b","Modal","Body","Box","marginTop","Table","Content","Head","HeaderCheckboxCell","head","HeaderCell","name","index","error","statusVariant","Row","CheckboxCell","aria-label","Cell","find","localeEntry","code","display","Status","paddingLeft","paddingRight","paddingTop","paddingBottom","size","tag","capitalize","IconButton","Link","to","search","stringify","plugins","i18n","getTranslation","Pencil"],"mappings":"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"}
@@ -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 { useLazyGetFillFromLocaleDataQuery } from '../services/fillFromLocale';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { useGetManyDraftRelationCountQuery } from '../services/relations';\nimport { useGetSettingsQuery } from '../services/settings';\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\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 // Non-localized prefill is handled in `useDocument.getInitialFormValues`\n // so inherited values persist in initial form state, even after form resets or re-initialization.\n // Doing this here with setValues would not persist if the cache is reused.\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 { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\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 [getFillFromLocaleData, { isLoading: isFillFromLocaleLoading }] =\n useLazyGetFillFromLocaleDataQuery();\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 if (!localeSelected || !currentDesiredLocale) {\n return;\n }\n\n try {\n const { data } = await getFillFromLocaleData({\n model,\n documentId,\n sourceLocale: localeSelected,\n targetLocale: currentDesiredLocale,\n collectionType: collectionType as 'collection-types' | 'single-types',\n }).unwrap();\n\n if (data) {\n setValues(data);\n }\n\n onClose();\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(err as Parameters<typeof formatAPIError>[0]),\n });\n }\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\n flex=\"auto\"\n variant=\"tertiary\"\n onClick={onClose}\n disabled={isFillFromLocaleLoading}\n >\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.cancel-text'),\n defaultMessage: 'No, cancel',\n })}\n </Button>\n <Button\n flex=\"auto\"\n variant=\"success\"\n onClick={fillFromLocale(onClose)}\n loading={isFillFromLocaleLoading}\n disabled={isFillFromLocaleLoading}\n >\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","handleSelect","React","useCallback","value","useEffect","Array","isArray","doesLocaleExist","find","loc","code","defaultLocale","isDefault","currentLocale","undefined","availableLocales","documentLocalizations","localizations","allLocalizations","length","allCurrentLocales","getDocumentStatus","displayedLocales","filter","includes","localesSortingDefaultFirst","sort","a","label","options","map","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","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","localeSelected","setLocaleSelected","useState","setValues","useForm","state","getFillFromLocaleData","isLoading","isFillFromLocaleLoading","useLazyGetFillFromLocaleDataQuery","l","fillFromLocale","onClose","sourceLocale","targetLocale","unwrap","err","type","icon","Earth","dialog","title","content","_Fragment","Dialog","Body","Field","Root","Label","SingleSelect","placeholder","onChange","Footer","Button","flex","onClick","loading","DeleteLocaleAction","navigate","useNavigate","delete","deleteAction","useDocumentActions","canDelete","position","StyledTrash","onConfirm","unableToDelete","console","error","res","pathname","replace","BulkLocaleAction","action","useMemo","buildValidParams","isOnPublishedTab","canPublish","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","reduce","acc","selectedRow","isValidLocale","Object","keys","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 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 { useLazyGetFillFromLocaleDataQuery } from '../services/fillFromLocale';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { useGetManyDraftRelationCountQuery } from '../services/relations';\nimport { useGetSettingsQuery } from '../services/settings';\nimport { getTranslation } from '../utils/getTranslation';\nimport { capitalize } from '../utils/strings';\n\nimport { BulkLocaleActionModal, type LocaleValidationErrors } 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\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 // Non-localized prefill is handled in `useDocument.getInitialFormValues`\n // so inherited values persist in initial form state, even after form resets or re-initialization.\n // Doing this here with setValues would not persist if the cache is reused.\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 { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\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 [getFillFromLocaleData, { isLoading: isFillFromLocaleLoading }] =\n useLazyGetFillFromLocaleDataQuery();\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 if (!localeSelected || !currentDesiredLocale) {\n return;\n }\n\n try {\n const { data } = await getFillFromLocaleData({\n model,\n documentId,\n sourceLocale: localeSelected,\n targetLocale: currentDesiredLocale,\n collectionType: collectionType as 'collection-types' | 'single-types',\n }).unwrap();\n\n if (data) {\n setValues(data);\n }\n\n onClose();\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(err as Parameters<typeof formatAPIError>[0]),\n });\n }\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\n flex=\"auto\"\n variant=\"tertiary\"\n onClick={onClose}\n disabled={isFillFromLocaleLoading}\n >\n {formatMessage({\n id: getTranslation('CMEditViewCopyLocale.cancel-text'),\n defaultMessage: 'No, cancel',\n })}\n </Button>\n <Button\n flex=\"auto\"\n variant=\"success\"\n onClick={fillFromLocale(onClose)}\n loading={isFillFromLocaleLoading}\n disabled={isFillFromLocaleLoading}\n >\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<Array<LocaleStatus & { id: string }>>([]);\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<[LocaleStatus[], LocaleValidationErrors]>(() => {\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: LocaleValidationErrors = {};\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","handleSelect","React","useCallback","value","useEffect","Array","isArray","doesLocaleExist","find","loc","code","defaultLocale","isDefault","currentLocale","undefined","availableLocales","documentLocalizations","localizations","allLocalizations","length","allCurrentLocales","getDocumentStatus","displayedLocales","filter","includes","localesSortingDefaultFirst","sort","a","label","options","map","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","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","localeSelected","setLocaleSelected","useState","setValues","useForm","state","getFillFromLocaleData","isLoading","isFillFromLocaleLoading","useLazyGetFillFromLocaleDataQuery","l","fillFromLocale","onClose","sourceLocale","targetLocale","unwrap","err","type","icon","Earth","dialog","title","content","_Fragment","Dialog","Body","Field","Root","Label","SingleSelect","placeholder","onChange","Footer","Button","flex","onClick","loading","DeleteLocaleAction","navigate","useNavigate","delete","deleteAction","useDocumentActions","canDelete","position","StyledTrash","onConfirm","unableToDelete","console","error","res","pathname","replace","BulkLocaleAction","action","useMemo","buildValidParams","isOnPublishedTab","canPublish","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","reduce","acc","selectedRow","isValidLocale","Object","keys","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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"}