@strapi/content-releases 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 (38) hide show
  1. package/dist/admin/components/ReleaseListCell.js +8 -2
  2. package/dist/admin/components/ReleaseListCell.js.map +1 -1
  3. package/dist/admin/components/ReleaseListCell.mjs +8 -2
  4. package/dist/admin/components/ReleaseListCell.mjs.map +1 -1
  5. package/dist/admin/index.js +2 -0
  6. package/dist/admin/index.js.map +1 -1
  7. package/dist/admin/index.mjs +2 -0
  8. package/dist/admin/index.mjs.map +1 -1
  9. package/dist/admin/pages/ReleaseDetailsPage.js +5 -3
  10. package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -1
  11. package/dist/admin/pages/ReleaseDetailsPage.mjs +5 -3
  12. package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -1
  13. package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -1
  14. package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -1
  15. package/dist/admin/services/release.js.map +1 -1
  16. package/dist/admin/services/release.mjs.map +1 -1
  17. package/dist/admin/src/components/ReleaseListCell.d.ts +1 -1
  18. package/dist/admin/src/services/homepage.d.ts +1 -1
  19. package/dist/admin/src/services/release.d.ts +27 -27
  20. package/dist/admin/translations/ko.json.js +111 -0
  21. package/dist/admin/translations/ko.json.js.map +1 -0
  22. package/dist/admin/translations/ko.json.mjs +109 -0
  23. package/dist/admin/translations/ko.json.mjs.map +1 -0
  24. package/dist/admin/translations/pl.json.js +111 -0
  25. package/dist/admin/translations/pl.json.js.map +1 -0
  26. package/dist/admin/translations/pl.json.mjs +109 -0
  27. package/dist/admin/translations/pl.json.mjs.map +1 -0
  28. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +3 -3
  29. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -1
  30. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +3 -3
  31. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -1
  32. package/dist/server/src/index.d.ts +18 -18
  33. package/dist/server/src/routes/index.d.ts +1 -1
  34. package/dist/server/src/services/index.d.ts +13 -13
  35. package/dist/server/src/services/scheduling.d.ts +4 -4
  36. package/dist/server/src/utils/index.d.ts +1 -1
  37. package/dist/server/src/utils/index.d.ts.map +1 -1
  38. package/package.json +16 -12
@@ -8,9 +8,15 @@ var icons = require('@strapi/icons');
8
8
  var reactIntl = require('react-intl');
9
9
  var release = require('../services/release.js');
10
10
 
11
+ const isDocumentRow = (entry)=>{
12
+ if ('documentId' in entry) {
13
+ return typeof entry.documentId === 'string';
14
+ }
15
+ return false;
16
+ };
11
17
  const useReleasesList = (contentTypeUid, documentId)=>{
12
18
  const listViewData = strapiAdmin.useTable('ListView', (state)=>state.rows);
13
- const documentIds = listViewData.map((entry)=>entry.documentId);
19
+ const documentIds = listViewData.filter((entry)=>isDocumentRow(entry)).map((entry)=>entry.documentId);
14
20
  const [{ query }] = strapiAdmin.useQueryParams();
15
21
  const locale = query?.plugins?.i18n?.locale || undefined;
16
22
  const response = release.useGetMappedEntriesInReleasesQuery({
@@ -18,7 +24,7 @@ const useReleasesList = (contentTypeUid, documentId)=>{
18
24
  documentIds,
19
25
  locale
20
26
  }, {
21
- skip: !documentIds || !contentTypeUid || documentIds.length === 0
27
+ skip: !contentTypeUid || documentIds.length === 0
22
28
  });
23
29
  const mappedEntriesInReleases = response.data || {};
24
30
  return mappedEntriesInReleases?.[documentId] || [];
@@ -1 +1 @@
1
- {"version":3,"file":"ReleaseListCell.js","sources":["../../../admin/src/components/ReleaseListCell.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTable, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { ListFieldLayout, ListLayout } from '@strapi/content-manager/strapi-admin';\nimport { Box, Popover, Typography, Button, Link } from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useGetMappedEntriesInReleasesQuery } from '../services/release';\n\nimport type { Modules, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * useReleasesList\n * -----------------------------------------------------------------------------------------------*/\ninterface QueryParams {\n plugins?: {\n i18n?: {\n locale: string;\n };\n };\n}\n\nconst useReleasesList = (contentTypeUid: UID.ContentType, documentId: Modules.Documents.ID) => {\n const listViewData = useTable('ListView', (state) => state.rows);\n const documentIds = listViewData.map((entry) => entry.documentId);\n const [{ query }] = useQueryParams();\n const locale = (query as QueryParams)?.plugins?.i18n?.locale || undefined;\n\n const response = useGetMappedEntriesInReleasesQuery(\n { contentTypeUid, documentIds, locale },\n { skip: !documentIds || !contentTypeUid || documentIds.length === 0 }\n );\n\n const mappedEntriesInReleases = response.data || {};\n\n return mappedEntriesInReleases?.[documentId] || [];\n};\n\n/* -------------------------------------------------------------------------------------------------\n * addColumnToTableHook\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AddColumnToTableHookArgs {\n layout: ListLayout;\n displayedHeaders: ListFieldLayout[];\n}\n\nconst addColumnToTableHook = ({ displayedHeaders, layout }: AddColumnToTableHookArgs) => {\n const { options } = layout;\n\n if (!options?.draftAndPublish) {\n return { displayedHeaders, layout };\n }\n\n return {\n displayedHeaders: [\n ...displayedHeaders,\n {\n searchable: false,\n sortable: false,\n name: 'releases',\n label: {\n id: 'content-releases.content-manager.list-view.releases.header',\n defaultMessage: 'To be released in',\n },\n cellFormatter: (\n props: Modules.Documents.AnyDocument,\n _: any,\n { model }: { model: UID.ContentType }\n ) => <ReleaseListCell {...props} model={model} />,\n },\n ],\n layout,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseListCell\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ReleaseListCellProps extends Modules.Documents.AnyDocument {\n documentId: Modules.Documents.ID;\n model: UID.ContentType;\n}\n\nconst ReleaseListCell = ({ documentId, model }: ReleaseListCellProps) => {\n const releases = useReleasesList(model, documentId);\n const { formatMessage } = useIntl();\n\n return (\n <Popover.Root>\n <Popover.Trigger>\n <Button\n variant=\"ghost\"\n onClick={(e: React.MouseEvent<HTMLElement>) => e.stopPropagation()}\n // TODO: find a way in the DS to define the widht and height of the icon\n endIcon={releases.length > 0 ? <CaretDown width=\"1.2rem\" height=\"1.2rem\" /> : null}\n >\n <Typography\n style={{ maxWidth: '252px', cursor: 'pointer' }}\n textColor=\"neutral800\"\n fontWeight=\"regular\"\n >\n {releases.length > 0\n ? formatMessage(\n {\n id: 'content-releases.content-manager.list-view.releases-number',\n defaultMessage: '{number} {number, plural, one {release} other {releases}}',\n },\n {\n number: releases.length,\n }\n )\n : '-'}\n </Typography>\n </Button>\n </Popover.Trigger>\n <Popover.Content>\n <ul>\n {releases.map(({ id, name }) => (\n <Box key={id} padding={3} tag=\"li\">\n <Link href={`/admin/plugins/content-releases/${id}`} isExternal={false}>\n {name}\n </Link>\n </Box>\n ))}\n </ul>\n </Popover.Content>\n </Popover.Root>\n );\n};\n\nexport { ReleaseListCell, addColumnToTableHook };\nexport type { ReleaseListCellProps };\n"],"names":["useReleasesList","contentTypeUid","documentId","listViewData","useTable","state","rows","documentIds","map","entry","query","useQueryParams","locale","plugins","i18n","undefined","response","useGetMappedEntriesInReleasesQuery","skip","length","mappedEntriesInReleases","data","addColumnToTableHook","displayedHeaders","layout","options","draftAndPublish","searchable","sortable","name","label","id","defaultMessage","cellFormatter","props","_","model","_jsx","ReleaseListCell","releases","formatMessage","useIntl","_jsxs","Popover","Root","Trigger","Button","variant","onClick","e","stopPropagation","endIcon","CaretDown","width","height","Typography","style","maxWidth","cursor","textColor","fontWeight","number","Content","ul","Box","padding","tag","Link","href","isExternal"],"mappings":";;;;;;;;;;AAuBA,MAAMA,eAAAA,GAAkB,CAACC,cAAAA,EAAiCC,UAAAA,GAAAA;AACxD,IAAA,MAAMC,eAAeC,oBAAAA,CAAS,UAAA,EAAY,CAACC,KAAAA,GAAUA,MAAMC,IAAI,CAAA;AAC/D,IAAA,MAAMC,cAAcJ,YAAAA,CAAaK,GAAG,CAAC,CAACC,KAAAA,GAAUA,MAAMP,UAAU,CAAA;AAChE,IAAA,MAAM,CAAC,EAAEQ,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AACpB,IAAA,MAAMC,MAAAA,GAAUF,KAAAA,EAAuBG,OAAAA,EAASC,MAAMF,MAAAA,IAAUG,SAAAA;AAEhE,IAAA,MAAMC,WAAWC,0CAAAA,CACf;AAAEhB,QAAAA,cAAAA;AAAgBM,QAAAA,WAAAA;AAAaK,QAAAA;KAAO,EACtC;AAAEM,QAAAA,IAAAA,EAAM,CAACX,WAAAA,IAAe,CAACN,cAAAA,IAAkBM,WAAAA,CAAYY,MAAM,KAAK;AAAE,KAAA,CAAA;AAGtE,IAAA,MAAMC,uBAAAA,GAA0BJ,QAAAA,CAASK,IAAI,IAAI,EAAC;AAElD,IAAA,OAAOD,uBAAAA,GAA0BlB,UAAAA,CAAW,IAAI,EAAE;AACpD,CAAA;AAWA,MAAMoB,uBAAuB,CAAC,EAAEC,gBAAgB,EAAEC,MAAM,EAA4B,GAAA;IAClF,MAAM,EAAEC,OAAO,EAAE,GAAGD,MAAAA;IAEpB,IAAI,CAACC,SAASC,eAAAA,EAAiB;QAC7B,OAAO;AAAEH,YAAAA,gBAAAA;AAAkBC,YAAAA;AAAO,SAAA;AACpC,IAAA;IAEA,OAAO;QACLD,gBAAAA,EAAkB;AACbA,YAAAA,GAAAA,gBAAAA;AACH,YAAA;gBACEI,UAAAA,EAAY,KAAA;gBACZC,QAAAA,EAAU,KAAA;gBACVC,IAAAA,EAAM,UAAA;gBACNC,KAAAA,EAAO;oBACLC,EAAAA,EAAI,4DAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;AACAC,gBAAAA,aAAAA,EAAe,CACbC,KAAAA,EACAC,CAAAA,EACA,EAAEC,KAAK,EAA8B,iBAClCC,cAAA,CAACC,eAAAA,EAAAA;AAAiB,wBAAA,GAAGJ,KAAK;wBAAEE,KAAAA,EAAOA;;AAC1C;AACD,SAAA;AACDZ,QAAAA;AACF,KAAA;AACF;AAWA,MAAMc,kBAAkB,CAAC,EAAEpC,UAAU,EAAEkC,KAAK,EAAwB,GAAA;IAClE,MAAMG,QAAAA,GAAWvC,gBAAgBoC,KAAAA,EAAOlC,UAAAA,CAAAA;IACxC,MAAM,EAAEsC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEC,eAAA,CAACC,qBAAQC,IAAI,EAAA;;AACX,0BAAAP,cAAA,CAACM,qBAAQE,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAR,cAAA,CAACS,mBAAAA,EAAAA;oBACCC,OAAAA,EAAQ,OAAA;oBACRC,OAAAA,EAAS,CAACC,CAAAA,GAAqCA,CAAAA,CAAEC,eAAe,EAAA;;AAEhEC,oBAAAA,OAAAA,EAASZ,QAAAA,CAASpB,MAAM,GAAG,CAAA,iBAAIkB,cAAA,CAACe,eAAAA,EAAAA;wBAAUC,KAAAA,EAAM,QAAA;wBAASC,MAAAA,EAAO;AAAc,qBAAA,CAAA,GAAA,IAAA;AAE9E,oBAAA,QAAA,gBAAAjB,cAAA,CAACkB,uBAAAA,EAAAA;wBACCC,KAAAA,EAAO;4BAAEC,QAAAA,EAAU,OAAA;4BAASC,MAAAA,EAAQ;AAAU,yBAAA;wBAC9CC,SAAAA,EAAU,YAAA;wBACVC,UAAAA,EAAW,SAAA;kCAEVrB,QAAAA,CAASpB,MAAM,GAAG,CAAA,GACfqB,aAAAA,CACE;4BACET,EAAAA,EAAI,4DAAA;4BACJC,cAAAA,EAAgB;yBAClB,EACA;AACE6B,4BAAAA,MAAAA,EAAQtB,SAASpB;yBACnB,CAAA,GAEF;;;;AAIV,0BAAAkB,cAAA,CAACM,qBAAQmB,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAzB,cAAA,CAAC0B,IAAAA,EAAAA;8BACExB,QAAAA,CAAS/B,GAAG,CAAC,CAAC,EAAEuB,EAAE,EAAEF,IAAI,EAAE,iBACzBQ,cAAA,CAAC2B,gBAAAA,EAAAA;4BAAaC,OAAAA,EAAS,CAAA;4BAAGC,GAAAA,EAAI,IAAA;AAC5B,4BAAA,QAAA,gBAAA7B,cAAA,CAAC8B,iBAAAA,EAAAA;gCAAKC,IAAAA,EAAM,CAAC,gCAAgC,EAAErC,EAAAA,CAAAA,CAAI;gCAAEsC,UAAAA,EAAY,KAAA;AAC9DxC,gCAAAA,QAAAA,EAAAA;;AAFKE,yBAAAA,EAAAA,EAAAA,CAAAA;;;;;AAUtB;;;;;"}
1
+ {"version":3,"file":"ReleaseListCell.js","sources":["../../../admin/src/components/ReleaseListCell.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTable, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { ListFieldLayout, ListLayout } from '@strapi/content-manager/strapi-admin';\nimport { Box, Popover, Typography, Button, Link } from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useGetMappedEntriesInReleasesQuery } from '../services/release';\n\nimport type { Modules, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * useReleasesList\n * -----------------------------------------------------------------------------------------------*/\ninterface QueryParams {\n plugins?: {\n i18n?: {\n locale: string;\n };\n };\n}\n\ntype DocumentRow = {\n id: string | number;\n documentId: Modules.Documents.ID;\n};\n\nconst isDocumentRow = (entry: { id: string | number }): entry is DocumentRow => {\n if ('documentId' in entry) {\n return typeof entry.documentId === 'string';\n }\n\n return false;\n};\n\nconst useReleasesList = (contentTypeUid: UID.ContentType, documentId: Modules.Documents.ID) => {\n const listViewData = useTable('ListView', (state) => state.rows);\n const documentIds = listViewData\n .filter((entry) => isDocumentRow(entry))\n .map((entry) => entry.documentId);\n const [{ query }] = useQueryParams();\n const locale = (query as QueryParams)?.plugins?.i18n?.locale || undefined;\n\n const response = useGetMappedEntriesInReleasesQuery(\n { contentTypeUid, documentIds, locale },\n { skip: !contentTypeUid || documentIds.length === 0 }\n );\n\n const mappedEntriesInReleases = response.data || {};\n\n return mappedEntriesInReleases?.[documentId] || [];\n};\n\n/* -------------------------------------------------------------------------------------------------\n * addColumnToTableHook\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AddColumnToTableHookArgs {\n layout: ListLayout;\n displayedHeaders: ListFieldLayout[];\n}\n\nconst addColumnToTableHook = ({ displayedHeaders, layout }: AddColumnToTableHookArgs) => {\n const { options } = layout;\n\n if (!options?.draftAndPublish) {\n return { displayedHeaders, layout };\n }\n\n return {\n displayedHeaders: [\n ...displayedHeaders,\n {\n searchable: false,\n sortable: false,\n name: 'releases',\n label: {\n id: 'content-releases.content-manager.list-view.releases.header',\n defaultMessage: 'To be released in',\n },\n cellFormatter: (\n props: Modules.Documents.AnyDocument,\n _: unknown,\n { model }: { model: UID.ContentType }\n ) => <ReleaseListCell {...props} model={model} />,\n },\n ],\n layout,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseListCell\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ReleaseListCellProps extends Modules.Documents.AnyDocument {\n documentId: Modules.Documents.ID;\n model: UID.ContentType;\n}\n\nconst ReleaseListCell = ({ documentId, model }: ReleaseListCellProps) => {\n const releases = useReleasesList(model, documentId);\n const { formatMessage } = useIntl();\n\n return (\n <Popover.Root>\n <Popover.Trigger>\n <Button\n variant=\"ghost\"\n onClick={(e: React.MouseEvent<HTMLElement>) => e.stopPropagation()}\n // TODO: find a way in the DS to define the widht and height of the icon\n endIcon={releases.length > 0 ? <CaretDown width=\"1.2rem\" height=\"1.2rem\" /> : null}\n >\n <Typography\n style={{ maxWidth: '252px', cursor: 'pointer' }}\n textColor=\"neutral800\"\n fontWeight=\"regular\"\n >\n {releases.length > 0\n ? formatMessage(\n {\n id: 'content-releases.content-manager.list-view.releases-number',\n defaultMessage: '{number} {number, plural, one {release} other {releases}}',\n },\n {\n number: releases.length,\n }\n )\n : '-'}\n </Typography>\n </Button>\n </Popover.Trigger>\n <Popover.Content>\n <ul>\n {releases.map(({ id, name }) => (\n <Box key={id} padding={3} tag=\"li\">\n <Link href={`/admin/plugins/content-releases/${id}`} isExternal={false}>\n {name}\n </Link>\n </Box>\n ))}\n </ul>\n </Popover.Content>\n </Popover.Root>\n );\n};\n\nexport { ReleaseListCell, addColumnToTableHook };\nexport type { ReleaseListCellProps };\n"],"names":["isDocumentRow","entry","documentId","useReleasesList","contentTypeUid","listViewData","useTable","state","rows","documentIds","filter","map","query","useQueryParams","locale","plugins","i18n","undefined","response","useGetMappedEntriesInReleasesQuery","skip","length","mappedEntriesInReleases","data","addColumnToTableHook","displayedHeaders","layout","options","draftAndPublish","searchable","sortable","name","label","id","defaultMessage","cellFormatter","props","_","model","_jsx","ReleaseListCell","releases","formatMessage","useIntl","_jsxs","Popover","Root","Trigger","Button","variant","onClick","e","stopPropagation","endIcon","CaretDown","width","height","Typography","style","maxWidth","cursor","textColor","fontWeight","number","Content","ul","Box","padding","tag","Link","href","isExternal"],"mappings":"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"}
@@ -6,9 +6,15 @@ import { CaretDown } from '@strapi/icons';
6
6
  import { useIntl } from 'react-intl';
7
7
  import { useGetMappedEntriesInReleasesQuery } from '../services/release.mjs';
8
8
 
9
+ const isDocumentRow = (entry)=>{
10
+ if ('documentId' in entry) {
11
+ return typeof entry.documentId === 'string';
12
+ }
13
+ return false;
14
+ };
9
15
  const useReleasesList = (contentTypeUid, documentId)=>{
10
16
  const listViewData = useTable('ListView', (state)=>state.rows);
11
- const documentIds = listViewData.map((entry)=>entry.documentId);
17
+ const documentIds = listViewData.filter((entry)=>isDocumentRow(entry)).map((entry)=>entry.documentId);
12
18
  const [{ query }] = useQueryParams();
13
19
  const locale = query?.plugins?.i18n?.locale || undefined;
14
20
  const response = useGetMappedEntriesInReleasesQuery({
@@ -16,7 +22,7 @@ const useReleasesList = (contentTypeUid, documentId)=>{
16
22
  documentIds,
17
23
  locale
18
24
  }, {
19
- skip: !documentIds || !contentTypeUid || documentIds.length === 0
25
+ skip: !contentTypeUid || documentIds.length === 0
20
26
  });
21
27
  const mappedEntriesInReleases = response.data || {};
22
28
  return mappedEntriesInReleases?.[documentId] || [];
@@ -1 +1 @@
1
- {"version":3,"file":"ReleaseListCell.mjs","sources":["../../../admin/src/components/ReleaseListCell.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTable, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { ListFieldLayout, ListLayout } from '@strapi/content-manager/strapi-admin';\nimport { Box, Popover, Typography, Button, Link } from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useGetMappedEntriesInReleasesQuery } from '../services/release';\n\nimport type { Modules, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * useReleasesList\n * -----------------------------------------------------------------------------------------------*/\ninterface QueryParams {\n plugins?: {\n i18n?: {\n locale: string;\n };\n };\n}\n\nconst useReleasesList = (contentTypeUid: UID.ContentType, documentId: Modules.Documents.ID) => {\n const listViewData = useTable('ListView', (state) => state.rows);\n const documentIds = listViewData.map((entry) => entry.documentId);\n const [{ query }] = useQueryParams();\n const locale = (query as QueryParams)?.plugins?.i18n?.locale || undefined;\n\n const response = useGetMappedEntriesInReleasesQuery(\n { contentTypeUid, documentIds, locale },\n { skip: !documentIds || !contentTypeUid || documentIds.length === 0 }\n );\n\n const mappedEntriesInReleases = response.data || {};\n\n return mappedEntriesInReleases?.[documentId] || [];\n};\n\n/* -------------------------------------------------------------------------------------------------\n * addColumnToTableHook\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AddColumnToTableHookArgs {\n layout: ListLayout;\n displayedHeaders: ListFieldLayout[];\n}\n\nconst addColumnToTableHook = ({ displayedHeaders, layout }: AddColumnToTableHookArgs) => {\n const { options } = layout;\n\n if (!options?.draftAndPublish) {\n return { displayedHeaders, layout };\n }\n\n return {\n displayedHeaders: [\n ...displayedHeaders,\n {\n searchable: false,\n sortable: false,\n name: 'releases',\n label: {\n id: 'content-releases.content-manager.list-view.releases.header',\n defaultMessage: 'To be released in',\n },\n cellFormatter: (\n props: Modules.Documents.AnyDocument,\n _: any,\n { model }: { model: UID.ContentType }\n ) => <ReleaseListCell {...props} model={model} />,\n },\n ],\n layout,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseListCell\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ReleaseListCellProps extends Modules.Documents.AnyDocument {\n documentId: Modules.Documents.ID;\n model: UID.ContentType;\n}\n\nconst ReleaseListCell = ({ documentId, model }: ReleaseListCellProps) => {\n const releases = useReleasesList(model, documentId);\n const { formatMessage } = useIntl();\n\n return (\n <Popover.Root>\n <Popover.Trigger>\n <Button\n variant=\"ghost\"\n onClick={(e: React.MouseEvent<HTMLElement>) => e.stopPropagation()}\n // TODO: find a way in the DS to define the widht and height of the icon\n endIcon={releases.length > 0 ? <CaretDown width=\"1.2rem\" height=\"1.2rem\" /> : null}\n >\n <Typography\n style={{ maxWidth: '252px', cursor: 'pointer' }}\n textColor=\"neutral800\"\n fontWeight=\"regular\"\n >\n {releases.length > 0\n ? formatMessage(\n {\n id: 'content-releases.content-manager.list-view.releases-number',\n defaultMessage: '{number} {number, plural, one {release} other {releases}}',\n },\n {\n number: releases.length,\n }\n )\n : '-'}\n </Typography>\n </Button>\n </Popover.Trigger>\n <Popover.Content>\n <ul>\n {releases.map(({ id, name }) => (\n <Box key={id} padding={3} tag=\"li\">\n <Link href={`/admin/plugins/content-releases/${id}`} isExternal={false}>\n {name}\n </Link>\n </Box>\n ))}\n </ul>\n </Popover.Content>\n </Popover.Root>\n );\n};\n\nexport { ReleaseListCell, addColumnToTableHook };\nexport type { ReleaseListCellProps };\n"],"names":["useReleasesList","contentTypeUid","documentId","listViewData","useTable","state","rows","documentIds","map","entry","query","useQueryParams","locale","plugins","i18n","undefined","response","useGetMappedEntriesInReleasesQuery","skip","length","mappedEntriesInReleases","data","addColumnToTableHook","displayedHeaders","layout","options","draftAndPublish","searchable","sortable","name","label","id","defaultMessage","cellFormatter","props","_","model","_jsx","ReleaseListCell","releases","formatMessage","useIntl","_jsxs","Popover","Root","Trigger","Button","variant","onClick","e","stopPropagation","endIcon","CaretDown","width","height","Typography","style","maxWidth","cursor","textColor","fontWeight","number","Content","ul","Box","padding","tag","Link","href","isExternal"],"mappings":"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"}
1
+ {"version":3,"file":"ReleaseListCell.mjs","sources":["../../../admin/src/components/ReleaseListCell.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTable, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { ListFieldLayout, ListLayout } from '@strapi/content-manager/strapi-admin';\nimport { Box, Popover, Typography, Button, Link } from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useGetMappedEntriesInReleasesQuery } from '../services/release';\n\nimport type { Modules, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * useReleasesList\n * -----------------------------------------------------------------------------------------------*/\ninterface QueryParams {\n plugins?: {\n i18n?: {\n locale: string;\n };\n };\n}\n\ntype DocumentRow = {\n id: string | number;\n documentId: Modules.Documents.ID;\n};\n\nconst isDocumentRow = (entry: { id: string | number }): entry is DocumentRow => {\n if ('documentId' in entry) {\n return typeof entry.documentId === 'string';\n }\n\n return false;\n};\n\nconst useReleasesList = (contentTypeUid: UID.ContentType, documentId: Modules.Documents.ID) => {\n const listViewData = useTable('ListView', (state) => state.rows);\n const documentIds = listViewData\n .filter((entry) => isDocumentRow(entry))\n .map((entry) => entry.documentId);\n const [{ query }] = useQueryParams();\n const locale = (query as QueryParams)?.plugins?.i18n?.locale || undefined;\n\n const response = useGetMappedEntriesInReleasesQuery(\n { contentTypeUid, documentIds, locale },\n { skip: !contentTypeUid || documentIds.length === 0 }\n );\n\n const mappedEntriesInReleases = response.data || {};\n\n return mappedEntriesInReleases?.[documentId] || [];\n};\n\n/* -------------------------------------------------------------------------------------------------\n * addColumnToTableHook\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AddColumnToTableHookArgs {\n layout: ListLayout;\n displayedHeaders: ListFieldLayout[];\n}\n\nconst addColumnToTableHook = ({ displayedHeaders, layout }: AddColumnToTableHookArgs) => {\n const { options } = layout;\n\n if (!options?.draftAndPublish) {\n return { displayedHeaders, layout };\n }\n\n return {\n displayedHeaders: [\n ...displayedHeaders,\n {\n searchable: false,\n sortable: false,\n name: 'releases',\n label: {\n id: 'content-releases.content-manager.list-view.releases.header',\n defaultMessage: 'To be released in',\n },\n cellFormatter: (\n props: Modules.Documents.AnyDocument,\n _: unknown,\n { model }: { model: UID.ContentType }\n ) => <ReleaseListCell {...props} model={model} />,\n },\n ],\n layout,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseListCell\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ReleaseListCellProps extends Modules.Documents.AnyDocument {\n documentId: Modules.Documents.ID;\n model: UID.ContentType;\n}\n\nconst ReleaseListCell = ({ documentId, model }: ReleaseListCellProps) => {\n const releases = useReleasesList(model, documentId);\n const { formatMessage } = useIntl();\n\n return (\n <Popover.Root>\n <Popover.Trigger>\n <Button\n variant=\"ghost\"\n onClick={(e: React.MouseEvent<HTMLElement>) => e.stopPropagation()}\n // TODO: find a way in the DS to define the widht and height of the icon\n endIcon={releases.length > 0 ? <CaretDown width=\"1.2rem\" height=\"1.2rem\" /> : null}\n >\n <Typography\n style={{ maxWidth: '252px', cursor: 'pointer' }}\n textColor=\"neutral800\"\n fontWeight=\"regular\"\n >\n {releases.length > 0\n ? formatMessage(\n {\n id: 'content-releases.content-manager.list-view.releases-number',\n defaultMessage: '{number} {number, plural, one {release} other {releases}}',\n },\n {\n number: releases.length,\n }\n )\n : '-'}\n </Typography>\n </Button>\n </Popover.Trigger>\n <Popover.Content>\n <ul>\n {releases.map(({ id, name }) => (\n <Box key={id} padding={3} tag=\"li\">\n <Link href={`/admin/plugins/content-releases/${id}`} isExternal={false}>\n {name}\n </Link>\n </Box>\n ))}\n </ul>\n </Popover.Content>\n </Popover.Root>\n );\n};\n\nexport { ReleaseListCell, addColumnToTableHook };\nexport type { ReleaseListCellProps };\n"],"names":["isDocumentRow","entry","documentId","useReleasesList","contentTypeUid","listViewData","useTable","state","rows","documentIds","filter","map","query","useQueryParams","locale","plugins","i18n","undefined","response","useGetMappedEntriesInReleasesQuery","skip","length","mappedEntriesInReleases","data","addColumnToTableHook","displayedHeaders","layout","options","draftAndPublish","searchable","sortable","name","label","id","defaultMessage","cellFormatter","props","_","model","_jsx","ReleaseListCell","releases","formatMessage","useIntl","_jsxs","Popover","Root","Trigger","Button","variant","onClick","e","stopPropagation","endIcon","CaretDown","width","height","Typography","style","maxWidth","cursor","textColor","fontWeight","number","Content","ul","Box","padding","tag","Link","href","isExternal"],"mappings":"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"}
@@ -17,7 +17,9 @@ function __variableDynamicImportRuntime4__(path) {
17
17
  case './translations/en.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/en.json.js')); });
18
18
  case './translations/es.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/es.json.js')); });
19
19
  case './translations/ja.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/ja.json.js')); });
20
+ case './translations/ko.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/ko.json.js')); });
20
21
  case './translations/nl.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/nl.json.js')); });
22
+ case './translations/pl.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/pl.json.js')); });
21
23
  case './translations/sk.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/sk.json.js')); });
22
24
  case './translations/uk.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/uk.json.js')); });
23
25
  default: return new Promise(function(resolve, reject) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../admin/src/index.ts"],"sourcesContent":["import { PaperPlane } from '@strapi/icons';\n\nimport { ReleaseAction } from './components/ReleaseAction';\nimport { ReleaseActionModalForm } from './components/ReleaseActionModal';\nimport { addColumnToTableHook } from './components/ReleaseListCell';\nimport { Panel as ReleasesPanel } from './components/ReleasesPanel';\nimport { PERMISSIONS, PLUGIN_ID } from './constants';\nimport { pluginId } from './pluginId';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n DocumentActionComponent,\n BulkActionComponent,\n} from '@strapi/content-manager/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\n// eslint-disable-next-line import/no-default-export\nconst admin: Plugin.Config.AdminInput = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(app: StrapiApp) {\n /**\n * Hook that adds the locale column in the Release Details table\n * @constant\n * @type {string}\n */\n app.createHook('ContentReleases/pages/ReleaseDetails/add-locale-in-releases');\n\n if (window.strapi.features.isEnabled('cms-content-releases')) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: PaperPlane,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n Component: () => import('./pages/App').then((mod) => ({ default: mod.App })),\n permissions: PERMISSIONS.main,\n position: 2,\n });\n\n // Insert the releases container into the CM's sidebar on the Edit View\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([ReleasesPanel]);\n }\n\n // Insert the \"add to release\" action into the CM's Edit View\n if (\n 'addDocumentAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addDocumentAction === 'function'\n ) {\n contentManagerPluginApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'unpublish');\n actions.splice(indexOfDeleteAction, 0, ReleaseActionModalForm);\n return actions;\n });\n }\n\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./pages/ReleasesSettingsPage').then((mod) => ({\n default: mod.ProtectedReleasesSettingsPage,\n }));\n },\n });\n\n if (\n 'addBulkAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addBulkAction === 'function'\n ) {\n contentManagerPluginApis.addBulkAction((actions: BulkActionComponent[]) => {\n // We want to add this action to just before the delete action all the time\n const deleteActionIndex = actions.findIndex((action) => action.type === 'delete');\n\n actions.splice(deleteActionIndex, 0, ReleaseAction);\n return actions;\n });\n }\n\n // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n\n app.widgets.register([\n {\n icon: PaperPlane,\n title: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.title`,\n defaultMessage: 'Upcoming releases',\n },\n component: async () => {\n const { UpcomingReleasesWidget } = await import('./components/Widgets');\n return UpcomingReleasesWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'upcoming-releases',\n link: {\n label: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.link`,\n defaultMessage: 'Open Releases',\n },\n href: '/plugins/content-releases',\n },\n },\n ]);\n } else if (\n !window.strapi.features.isEnabled('cms-content-releases') &&\n window.strapi?.flags?.promoteEE\n ) {\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'purchase-content-releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n Component() {\n return import('./pages/PurchaseContentReleases').then((mod) => ({\n default: mod.PurchaseContentReleases,\n }));\n },\n licenseOnly: true,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'content-releases'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["admin","register","app","createHook","window","strapi","features","isEnabled","addMenuLink","to","pluginId","icon","PaperPlane","intlLabel","id","defaultMessage","Component","then","mod","default","App","permissions","PERMISSIONS","main","position","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","ReleasesPanel","addDocumentAction","actions","indexOfDeleteAction","findIndex","action","type","splice","ReleaseActionModalForm","addSettingsLink","licenseOnly","ProtectedReleasesSettingsPage","addBulkAction","deleteActionIndex","ReleaseAction","registerHook","addColumnToTableHook","widgets","title","PLUGIN_ID","component","UpcomingReleasesWidget","link","label","href","flags","promoteEE","PurchaseContentReleases","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../admin/src/index.ts"],"sourcesContent":["import { PaperPlane } from '@strapi/icons';\n\nimport { ReleaseAction } from './components/ReleaseAction';\nimport { ReleaseActionModalForm } from './components/ReleaseActionModal';\nimport { addColumnToTableHook } from './components/ReleaseListCell';\nimport { Panel as ReleasesPanel } from './components/ReleasesPanel';\nimport { PERMISSIONS, PLUGIN_ID } from './constants';\nimport { pluginId } from './pluginId';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n DocumentActionComponent,\n BulkActionComponent,\n} from '@strapi/content-manager/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\n// eslint-disable-next-line import/no-default-export\nconst admin: Plugin.Config.AdminInput = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(app: StrapiApp) {\n /**\n * Hook that adds the locale column in the Release Details table\n * @constant\n * @type {string}\n */\n app.createHook('ContentReleases/pages/ReleaseDetails/add-locale-in-releases');\n\n if (window.strapi.features.isEnabled('cms-content-releases')) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: PaperPlane,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n Component: () => import('./pages/App').then((mod) => ({ default: mod.App })),\n permissions: PERMISSIONS.main,\n position: 2,\n });\n\n // Insert the releases container into the CM's sidebar on the Edit View\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([ReleasesPanel]);\n }\n\n // Insert the \"add to release\" action into the CM's Edit View\n if (\n 'addDocumentAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addDocumentAction === 'function'\n ) {\n contentManagerPluginApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'unpublish');\n actions.splice(indexOfDeleteAction, 0, ReleaseActionModalForm);\n return actions;\n });\n }\n\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./pages/ReleasesSettingsPage').then((mod) => ({\n default: mod.ProtectedReleasesSettingsPage,\n }));\n },\n });\n\n if (\n 'addBulkAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addBulkAction === 'function'\n ) {\n contentManagerPluginApis.addBulkAction((actions: BulkActionComponent[]) => {\n // We want to add this action to just before the delete action all the time\n const deleteActionIndex = actions.findIndex((action) => action.type === 'delete');\n\n actions.splice(deleteActionIndex, 0, ReleaseAction);\n return actions;\n });\n }\n\n // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n\n app.widgets.register([\n {\n icon: PaperPlane,\n title: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.title`,\n defaultMessage: 'Upcoming releases',\n },\n component: async () => {\n const { UpcomingReleasesWidget } = await import('./components/Widgets');\n return UpcomingReleasesWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'upcoming-releases',\n link: {\n label: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.link`,\n defaultMessage: 'Open Releases',\n },\n href: '/plugins/content-releases',\n },\n },\n ]);\n } else if (\n !window.strapi.features.isEnabled('cms-content-releases') &&\n window.strapi?.flags?.promoteEE\n ) {\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'purchase-content-releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n Component() {\n return import('./pages/PurchaseContentReleases').then((mod) => ({\n default: mod.PurchaseContentReleases,\n }));\n },\n licenseOnly: true,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'content-releases'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["admin","register","app","createHook","window","strapi","features","isEnabled","addMenuLink","to","pluginId","icon","PaperPlane","intlLabel","id","defaultMessage","Component","then","mod","default","App","permissions","PERMISSIONS","main","position","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","ReleasesPanel","addDocumentAction","actions","indexOfDeleteAction","findIndex","action","type","splice","ReleaseActionModalForm","addSettingsLink","licenseOnly","ProtectedReleasesSettingsPage","addBulkAction","deleteActionIndex","ReleaseAction","registerHook","addColumnToTableHook","widgets","title","PLUGIN_ID","component","UpcomingReleasesWidget","link","label","href","flags","promoteEE","PurchaseContentReleases","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
@@ -13,7 +13,9 @@ function __variableDynamicImportRuntime4__(path) {
13
13
  case './translations/en.json': return import('./translations/en.json.mjs');
14
14
  case './translations/es.json': return import('./translations/es.json.mjs');
15
15
  case './translations/ja.json': return import('./translations/ja.json.mjs');
16
+ case './translations/ko.json': return import('./translations/ko.json.mjs');
16
17
  case './translations/nl.json': return import('./translations/nl.json.mjs');
18
+ case './translations/pl.json': return import('./translations/pl.json.mjs');
17
19
  case './translations/sk.json': return import('./translations/sk.json.mjs');
18
20
  case './translations/uk.json': return import('./translations/uk.json.mjs');
19
21
  default: return new Promise(function(resolve, reject) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../admin/src/index.ts"],"sourcesContent":["import { PaperPlane } from '@strapi/icons';\n\nimport { ReleaseAction } from './components/ReleaseAction';\nimport { ReleaseActionModalForm } from './components/ReleaseActionModal';\nimport { addColumnToTableHook } from './components/ReleaseListCell';\nimport { Panel as ReleasesPanel } from './components/ReleasesPanel';\nimport { PERMISSIONS, PLUGIN_ID } from './constants';\nimport { pluginId } from './pluginId';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n DocumentActionComponent,\n BulkActionComponent,\n} from '@strapi/content-manager/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\n// eslint-disable-next-line import/no-default-export\nconst admin: Plugin.Config.AdminInput = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(app: StrapiApp) {\n /**\n * Hook that adds the locale column in the Release Details table\n * @constant\n * @type {string}\n */\n app.createHook('ContentReleases/pages/ReleaseDetails/add-locale-in-releases');\n\n if (window.strapi.features.isEnabled('cms-content-releases')) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: PaperPlane,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n Component: () => import('./pages/App').then((mod) => ({ default: mod.App })),\n permissions: PERMISSIONS.main,\n position: 2,\n });\n\n // Insert the releases container into the CM's sidebar on the Edit View\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([ReleasesPanel]);\n }\n\n // Insert the \"add to release\" action into the CM's Edit View\n if (\n 'addDocumentAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addDocumentAction === 'function'\n ) {\n contentManagerPluginApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'unpublish');\n actions.splice(indexOfDeleteAction, 0, ReleaseActionModalForm);\n return actions;\n });\n }\n\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./pages/ReleasesSettingsPage').then((mod) => ({\n default: mod.ProtectedReleasesSettingsPage,\n }));\n },\n });\n\n if (\n 'addBulkAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addBulkAction === 'function'\n ) {\n contentManagerPluginApis.addBulkAction((actions: BulkActionComponent[]) => {\n // We want to add this action to just before the delete action all the time\n const deleteActionIndex = actions.findIndex((action) => action.type === 'delete');\n\n actions.splice(deleteActionIndex, 0, ReleaseAction);\n return actions;\n });\n }\n\n // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n\n app.widgets.register([\n {\n icon: PaperPlane,\n title: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.title`,\n defaultMessage: 'Upcoming releases',\n },\n component: async () => {\n const { UpcomingReleasesWidget } = await import('./components/Widgets');\n return UpcomingReleasesWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'upcoming-releases',\n link: {\n label: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.link`,\n defaultMessage: 'Open Releases',\n },\n href: '/plugins/content-releases',\n },\n },\n ]);\n } else if (\n !window.strapi.features.isEnabled('cms-content-releases') &&\n window.strapi?.flags?.promoteEE\n ) {\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'purchase-content-releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n Component() {\n return import('./pages/PurchaseContentReleases').then((mod) => ({\n default: mod.PurchaseContentReleases,\n }));\n },\n licenseOnly: true,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'content-releases'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["admin","register","app","createHook","window","strapi","features","isEnabled","addMenuLink","to","pluginId","icon","PaperPlane","intlLabel","id","defaultMessage","Component","then","mod","default","App","permissions","PERMISSIONS","main","position","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","ReleasesPanel","addDocumentAction","actions","indexOfDeleteAction","findIndex","action","type","splice","ReleaseActionModalForm","addSettingsLink","licenseOnly","ProtectedReleasesSettingsPage","addBulkAction","deleteActionIndex","ReleaseAction","registerHook","addColumnToTableHook","widgets","title","PLUGIN_ID","component","UpcomingReleasesWidget","link","label","href","flags","promoteEE","PurchaseContentReleases","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../admin/src/index.ts"],"sourcesContent":["import { PaperPlane } from '@strapi/icons';\n\nimport { ReleaseAction } from './components/ReleaseAction';\nimport { ReleaseActionModalForm } from './components/ReleaseActionModal';\nimport { addColumnToTableHook } from './components/ReleaseListCell';\nimport { Panel as ReleasesPanel } from './components/ReleasesPanel';\nimport { PERMISSIONS, PLUGIN_ID } from './constants';\nimport { pluginId } from './pluginId';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n DocumentActionComponent,\n BulkActionComponent,\n} from '@strapi/content-manager/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\n// eslint-disable-next-line import/no-default-export\nconst admin: Plugin.Config.AdminInput = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(app: StrapiApp) {\n /**\n * Hook that adds the locale column in the Release Details table\n * @constant\n * @type {string}\n */\n app.createHook('ContentReleases/pages/ReleaseDetails/add-locale-in-releases');\n\n if (window.strapi.features.isEnabled('cms-content-releases')) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: PaperPlane,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n Component: () => import('./pages/App').then((mod) => ({ default: mod.App })),\n permissions: PERMISSIONS.main,\n position: 2,\n });\n\n // Insert the releases container into the CM's sidebar on the Edit View\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([ReleasesPanel]);\n }\n\n // Insert the \"add to release\" action into the CM's Edit View\n if (\n 'addDocumentAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addDocumentAction === 'function'\n ) {\n contentManagerPluginApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'unpublish');\n actions.splice(indexOfDeleteAction, 0, ReleaseActionModalForm);\n return actions;\n });\n }\n\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./pages/ReleasesSettingsPage').then((mod) => ({\n default: mod.ProtectedReleasesSettingsPage,\n }));\n },\n });\n\n if (\n 'addBulkAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addBulkAction === 'function'\n ) {\n contentManagerPluginApis.addBulkAction((actions: BulkActionComponent[]) => {\n // We want to add this action to just before the delete action all the time\n const deleteActionIndex = actions.findIndex((action) => action.type === 'delete');\n\n actions.splice(deleteActionIndex, 0, ReleaseAction);\n return actions;\n });\n }\n\n // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n\n app.widgets.register([\n {\n icon: PaperPlane,\n title: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.title`,\n defaultMessage: 'Upcoming releases',\n },\n component: async () => {\n const { UpcomingReleasesWidget } = await import('./components/Widgets');\n return UpcomingReleasesWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'upcoming-releases',\n link: {\n label: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.link`,\n defaultMessage: 'Open Releases',\n },\n href: '/plugins/content-releases',\n },\n },\n ]);\n } else if (\n !window.strapi.features.isEnabled('cms-content-releases') &&\n window.strapi?.flags?.promoteEE\n ) {\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'purchase-content-releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n Component() {\n return import('./pages/PurchaseContentReleases').then((mod) => ({\n default: mod.PurchaseContentReleases,\n }));\n },\n licenseOnly: true,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'content-releases'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["admin","register","app","createHook","window","strapi","features","isEnabled","addMenuLink","to","pluginId","icon","PaperPlane","intlLabel","id","defaultMessage","Component","then","mod","default","App","permissions","PERMISSIONS","main","position","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","ReleasesPanel","addDocumentAction","actions","indexOfDeleteAction","findIndex","action","type","splice","ReleaseActionModalForm","addSettingsLink","licenseOnly","ProtectedReleasesSettingsPage","addBulkAction","deleteActionIndex","ReleaseAction","registerHook","addColumnToTableHook","widgets","title","PLUGIN_ID","component","UpcomingReleasesWidget","link","label","href","flags","promoteEE","PurchaseContentReleases","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
@@ -397,7 +397,6 @@ const ReleaseDetailsBody = ({ releaseId })=>{
397
397
  const releaseActions = data?.data;
398
398
  const releaseMeta = data?.meta;
399
399
  const contentTypes = releaseMeta?.contentTypes || {};
400
- releaseMeta?.components || {};
401
400
  if (api.isBaseQueryError(releaseError) || !release$1) {
402
401
  const errorsArray = [];
403
402
  if (releaseError && 'code' in releaseError) {
@@ -476,7 +475,10 @@ const ReleaseDetailsBody = ({ releaseId })=>{
476
475
  name: 'status'
477
476
  }
478
477
  ] : []
479
- ];
478
+ ].map(({ label, name })=>({
479
+ label: formatMessage(label),
480
+ name
481
+ }));
480
482
  const options = hasI18nEnabled ? GROUP_BY_OPTIONS : GROUP_BY_OPTIONS_NO_LOCALE;
481
483
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Content, {
482
484
  children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
@@ -527,7 +529,7 @@ const ReleaseDetailsBody = ({ releaseId })=>{
527
529
  children: [
528
530
  /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Table.Head, {
529
531
  children: headers.map(({ label, name })=>/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Table.HeaderCell, {
530
- label: formatMessage(label),
532
+ label: label,
531
533
  name: name
532
534
  }, name))
533
535
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"ReleaseDetailsPage.js","sources":["../../../admin/src/pages/ReleaseDetailsPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n Table,\n BackButton,\n ConfirmDialog,\n useTracking,\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n useStrapiApp,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n Main,\n Tr,\n Td,\n Typography,\n Badge,\n SingleSelect,\n SingleSelectOption,\n EmptyStateLayout,\n LinkButton,\n Dialog,\n SimpleMenu,\n Menu,\n} from '@strapi/design-system';\nimport { More, Pencil, Trash } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport format from 'date-fns/format';\nimport { utcToZonedTime } from 'date-fns-tz';\nimport { useIntl } from 'react-intl';\nimport { useParams, useNavigate, Link as ReactRouterLink, Navigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { EntryValidationPopover } from '../components/EntryValidationPopover';\nimport { RelativeTime } from '../components/RelativeTime';\nimport { ReleaseActionMenu } from '../components/ReleaseActionMenu';\nimport { ReleaseActionOptions } from '../components/ReleaseActionOptions';\nimport { ReleaseModal, FormValues } from '../components/ReleaseModal';\nimport { PERMISSIONS } from '../constants';\nimport {\n GetReleaseActionsQueryParams,\n useGetReleaseActionsQuery,\n useGetReleaseQuery,\n useGetReleaseSettingsQuery,\n useUpdateReleaseMutation,\n useUpdateReleaseActionMutation,\n usePublishReleaseMutation,\n useDeleteReleaseMutation,\n releaseApi,\n} from '../services/release';\nimport { useTypedDispatch } from '../store/hooks';\nimport { isBaseQueryError } from '../utils/api';\nimport { getTimezoneOffset } from '../utils/time';\n\nimport { getBadgeProps } from './ReleasesPage';\n\nimport type {\n ReleaseAction,\n ReleaseActionGroupBy,\n} from '../../../shared/contracts/release-actions';\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseDetailsLayout\n * -----------------------------------------------------------------------------------------------*/\nconst ReleaseInfoWrapper = styled(Flex)`\n align-self: stretch;\n border-bottom-right-radius: ${({ theme }) => theme.borderRadius};\n border-bottom-left-radius: ${({ theme }) => theme.borderRadius};\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface ReleaseDetailsLayoutProps {\n toggleEditReleaseModal: () => void;\n toggleWarningSubmit: () => void;\n children: React.ReactNode;\n}\n\nconst ReleaseDetailsLayout = ({\n toggleEditReleaseModal,\n toggleWarningSubmit,\n children,\n}: ReleaseDetailsLayoutProps) => {\n const { formatMessage, formatDate, formatTime } = useIntl();\n const { releaseId } = useParams<{ releaseId: string }>();\n const {\n data,\n isLoading: isLoadingDetails,\n error,\n } = useGetReleaseQuery(\n { id: releaseId! },\n {\n skip: !releaseId,\n }\n );\n const [publishRelease, { isLoading: isPublishing }] = usePublishReleaseMutation();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const { allowedActions } = useRBAC(PERMISSIONS);\n const { canUpdate, canDelete, canPublish } = allowedActions;\n const dispatch = useTypedDispatch();\n const { trackUsage } = useTracking();\n\n const release = data?.data;\n\n const handlePublishRelease = (id: string) => async () => {\n const response = await publishRelease({ id });\n\n if ('data' in response) {\n // When the response returns an object with 'data', handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.pages.ReleaseDetails.publish-notification-success',\n defaultMessage: 'Release was published successfully.',\n }),\n });\n\n const { totalEntries, totalPublishedEntries, totalUnpublishedEntries } = response.data.meta;\n\n trackUsage('didPublishRelease', {\n totalEntries,\n totalPublishedEntries,\n totalUnpublishedEntries,\n });\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleRefresh = () => {\n dispatch(\n releaseApi.util.invalidateTags([\n { type: 'ReleaseAction', id: 'LIST' },\n { type: 'Release', id: releaseId },\n ])\n );\n };\n\n const getCreatedByUser = () => {\n if (!release?.createdBy) {\n return null;\n }\n\n // Favor the username\n if (release.createdBy.username) {\n return release.createdBy.username;\n }\n\n // Firstname may not exist if created with SSO\n if (release.createdBy.firstname) {\n return `${release.createdBy.firstname} ${release.createdBy.lastname || ''}`.trim();\n }\n\n // All users must have at least an email\n return release.createdBy.email;\n };\n\n if (isLoadingDetails) {\n return <Page.Loading />;\n }\n\n if ((isBaseQueryError(error) && 'code' in error) || !release) {\n return (\n <Navigate\n to=\"..\"\n state={{\n errors: [\n {\n // @ts-expect-error – TODO: fix this weird error flow\n code: error?.code,\n },\n ],\n }}\n />\n );\n }\n\n const totalEntries = release.actions.meta.count || 0;\n const hasCreatedByUser = Boolean(getCreatedByUser());\n\n const isScheduled = release.scheduledAt && release.timezone;\n const numberOfEntriesText = formatMessage(\n {\n id: 'content-releases.pages.Details.header-subtitle',\n defaultMessage: '{number, plural, =0 {No entries} one {# entry} other {# entries}}',\n },\n { number: totalEntries }\n );\n const scheduledText = isScheduled\n ? formatMessage(\n {\n id: 'content-releases.pages.ReleaseDetails.header-subtitle.scheduled',\n defaultMessage: 'Scheduled for {date} at {time} ({offset})',\n },\n {\n date: formatDate(new Date(release.scheduledAt!), {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n timeZone: release.timezone!,\n }),\n time: formatTime(new Date(release.scheduledAt!), {\n timeZone: release.timezone!,\n hourCycle: 'h23',\n }),\n offset: getTimezoneOffset(release.timezone!, new Date(release.scheduledAt!)),\n }\n )\n : '';\n\n return (\n <Layouts.Root>\n <Main aria-busy={isLoadingDetails}>\n <Layouts.Header\n title={release.name}\n subtitle={\n <Flex gap={2} lineHeight={6}>\n <Typography textColor=\"neutral600\" variant=\"epsilon\">\n {numberOfEntriesText + (isScheduled ? ` - ${scheduledText}` : '')}\n </Typography>\n <Badge {...getBadgeProps(release.status)}>{release.status}</Badge>\n </Flex>\n }\n navigationAction={<BackButton fallback=\"..\" />}\n primaryAction={\n !release.releasedAt && (\n <Flex gap={2}>\n <SimpleMenuButton\n label={<More />}\n variant=\"tertiary\"\n endIcon={null}\n paddingLeft=\"7px\"\n paddingRight=\"7px\"\n aria-label={formatMessage({\n id: 'content-releases.header.actions.open-release-actions',\n defaultMessage: 'Release edit and delete menu',\n })}\n popoverPlacement=\"bottom-end\"\n >\n <Menu.Item\n disabled={!canUpdate}\n onSelect={toggleEditReleaseModal}\n startIcon={<Pencil />}\n >\n {formatMessage({\n id: 'content-releases.header.actions.edit',\n defaultMessage: 'Edit',\n })}\n </Menu.Item>\n <Menu.Item\n disabled={!canDelete}\n onSelect={toggleWarningSubmit}\n variant=\"danger\"\n startIcon={<Trash />}\n >\n {formatMessage({\n id: 'content-releases.header.actions.delete',\n defaultMessage: 'Delete',\n })}\n </Menu.Item>\n <ReleaseInfoWrapper\n direction=\"column\"\n justifyContent=\"center\"\n alignItems=\"flex-start\"\n gap={1}\n padding={4}\n >\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'content-releases.header.actions.created',\n defaultMessage: 'Created',\n })}\n </Typography>\n <Typography variant=\"pi\" color=\"neutral300\">\n <RelativeTime timestamp={new Date(release.createdAt)} />\n {formatMessage(\n {\n id: 'content-releases.header.actions.created.description',\n defaultMessage:\n '{hasCreatedByUser, select, true { by {createdBy}} other { by deleted user}}',\n },\n { createdBy: getCreatedByUser(), hasCreatedByUser }\n )}\n </Typography>\n </ReleaseInfoWrapper>\n </SimpleMenuButton>\n <Button size=\"S\" variant=\"tertiary\" onClick={handleRefresh}>\n {formatMessage({\n id: 'content-releases.header.actions.refresh',\n defaultMessage: 'Refresh',\n })}\n </Button>\n {canPublish ? (\n <Button\n size=\"S\"\n variant=\"default\"\n onClick={handlePublishRelease(release.id.toString())}\n loading={isPublishing}\n disabled={release.actions.meta.count === 0}\n >\n {formatMessage({\n id: 'content-releases.header.actions.publish',\n defaultMessage: 'Publish',\n })}\n </Button>\n ) : null}\n </Flex>\n )\n }\n />\n {children}\n </Main>\n </Layouts.Root>\n );\n};\n\nconst SimpleMenuButton = styled(SimpleMenu)`\n & > span {\n display: flex;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseDetailsBody\n * -----------------------------------------------------------------------------------------------*/\nconst GROUP_BY_OPTIONS = ['contentType', 'locale', 'action'] as const;\nconst GROUP_BY_OPTIONS_NO_LOCALE = ['contentType', 'action'] as const;\nconst getGroupByOptionLabel = (value: (typeof GROUP_BY_OPTIONS)[number]) => {\n if (value === 'locale') {\n return {\n id: 'content-releases.pages.ReleaseDetails.groupBy.option.locales',\n defaultMessage: 'Locales',\n };\n }\n\n if (value === 'action') {\n return {\n id: 'content-releases.pages.ReleaseDetails.groupBy.option.actions',\n defaultMessage: 'Actions',\n };\n }\n\n return {\n id: 'content-releases.pages.ReleaseDetails.groupBy.option.content-type',\n defaultMessage: 'Content-Types',\n };\n};\n\ninterface ReleaseDetailsBodyProps {\n releaseId: string;\n}\n\nconst ReleaseDetailsBody = ({ releaseId }: ReleaseDetailsBodyProps) => {\n const { formatMessage } = useIntl();\n const [{ query }, setQuery] = useQueryParams<GetReleaseActionsQueryParams>();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const {\n data: releaseData,\n isLoading: isReleaseLoading,\n error: releaseError,\n } = useGetReleaseQuery({ id: releaseId });\n const {\n allowedActions: { canUpdate },\n } = useRBAC(PERMISSIONS);\n const runHookWaterfall = useStrapiApp('ReleaseDetailsPage', (state) => state.runHookWaterfall);\n\n // TODO: Migrated displayedHeader to v5\n const { displayedHeaders, hasI18nEnabled }: { displayedHeaders: any; hasI18nEnabled: boolean } =\n runHookWaterfall('ContentReleases/pages/ReleaseDetails/add-locale-in-releases', {\n displayedHeaders: [\n {\n label: {\n id: 'content-releases.page.ReleaseDetails.table.header.label.name',\n defaultMessage: 'name',\n },\n name: 'name',\n },\n ],\n hasI18nEnabled: false,\n });\n\n const release = releaseData?.data;\n const selectedGroupBy = query?.groupBy || 'contentType';\n\n const {\n isLoading,\n isFetching,\n isError,\n data,\n error: releaseActionsError,\n } = useGetReleaseActionsQuery({\n ...query,\n releaseId,\n });\n\n const [updateReleaseAction] = useUpdateReleaseActionMutation();\n\n const handleChangeType = async (\n e: React.ChangeEvent<HTMLInputElement>,\n actionId: ReleaseAction['id'],\n actionPath: [string, number]\n ) => {\n const response = await updateReleaseAction({\n params: {\n releaseId,\n actionId,\n },\n body: {\n type: e.target.value as ReleaseAction['type'],\n },\n query, // We are passing the query params to make optimistic updates\n actionPath, // We are passing the action path to found the position in the cache of the action for optimistic updates\n });\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (isLoading || isReleaseLoading) {\n return <Page.Loading />;\n }\n\n const releaseActions = data?.data;\n const releaseMeta = data?.meta;\n const contentTypes = releaseMeta?.contentTypes || {};\n const components = releaseMeta?.components || {};\n\n if (isBaseQueryError(releaseError) || !release) {\n const errorsArray = [];\n if (releaseError && 'code' in releaseError) {\n errorsArray.push({\n code: releaseError.code,\n });\n }\n if (releaseActionsError && 'code' in releaseActionsError) {\n errorsArray.push({\n code: releaseActionsError.code,\n });\n }\n return (\n <Navigate\n to=\"..\"\n state={{\n errors: errorsArray,\n }}\n />\n );\n }\n\n if (isError || !releaseActions) {\n return <Page.Error />;\n }\n\n if (Object.keys(releaseActions).length === 0) {\n return (\n <Layouts.Content>\n <EmptyStateLayout\n action={\n <LinkButton\n tag={ReactRouterLink}\n to={{\n pathname: '/content-manager',\n }}\n style={{ textDecoration: 'none' }}\n variant=\"secondary\"\n >\n {formatMessage({\n id: 'content-releases.page.Details.button.openContentManager',\n defaultMessage: 'Open the Content Manager',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'content-releases.pages.Details.tab.emptyEntries',\n defaultMessage:\n 'This release is empty. Open the Content Manager, select an entry and add it to the release.',\n })}\n />\n </Layouts.Content>\n );\n }\n\n const groupByLabel = formatMessage({\n id: 'content-releases.pages.ReleaseDetails.groupBy.aria-label',\n defaultMessage: 'Group by',\n });\n const headers = [\n ...displayedHeaders,\n {\n label: {\n id: 'content-releases.page.ReleaseDetails.table.header.label.content-type',\n defaultMessage: 'content-type',\n },\n name: 'content-type',\n },\n {\n label: {\n id: 'content-releases.page.ReleaseDetails.table.header.label.action',\n defaultMessage: 'action',\n },\n name: 'action',\n },\n ...(!release.releasedAt\n ? [\n {\n label: {\n id: 'content-releases.page.ReleaseDetails.table.header.label.status',\n defaultMessage: 'status',\n },\n name: 'status',\n },\n ]\n : []),\n ];\n\n const options = hasI18nEnabled ? GROUP_BY_OPTIONS : GROUP_BY_OPTIONS_NO_LOCALE;\n\n return (\n <Layouts.Content>\n <Flex gap={4} direction=\"column\" alignItems=\"stretch\">\n <Flex>\n <SingleSelect\n placeholder={groupByLabel}\n aria-label={groupByLabel}\n customizeContent={(value) =>\n formatMessage(\n {\n id: `content-releases.pages.ReleaseDetails.groupBy.label`,\n defaultMessage: `Group by {groupBy}`,\n },\n {\n groupBy: value,\n }\n )\n }\n value={formatMessage(getGroupByOptionLabel(selectedGroupBy))}\n onChange={(value) => setQuery({ groupBy: value as ReleaseActionGroupBy })}\n >\n {options.map((option) => (\n <SingleSelectOption key={option} value={option}>\n {formatMessage(getGroupByOptionLabel(option))}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Flex>\n {Object.keys(releaseActions).map((key) => (\n <Flex key={`releases-group-${key}`} gap={4} direction=\"column\" alignItems=\"stretch\">\n <Flex role=\"separator\" aria-label={key}>\n <Badge>{key}</Badge>\n </Flex>\n <Table.Root\n rows={releaseActions[key].map((item) => ({\n ...item,\n id: Number(item.entry.id),\n }))}\n headers={headers}\n isLoading={isLoading || isFetching}\n >\n <Table.Content>\n <Table.Head>\n {headers.map(({ label, name }) => (\n <Table.HeaderCell key={name} label={formatMessage(label)} name={name} />\n ))}\n </Table.Head>\n <Table.Loading />\n <Table.Body>\n {releaseActions[key].map(\n ({ id, contentType, locale, type, entry, status }, actionIndex) => (\n <Tr key={id}>\n <Td width=\"25%\" maxWidth=\"200px\">\n <Typography ellipsis>{`${\n contentType.mainFieldValue || entry.id\n }`}</Typography>\n </Td>\n {hasI18nEnabled && (\n <Td width=\"10%\">\n <Typography>{`${locale?.name ? locale.name : '-'}`}</Typography>\n </Td>\n )}\n\n <Td width=\"10%\">\n <Typography>{contentType.displayName || ''}</Typography>\n </Td>\n <Td width=\"20%\">\n {release.releasedAt ? (\n <Typography>\n {formatMessage(\n {\n id: 'content-releases.page.ReleaseDetails.table.action-published',\n defaultMessage:\n 'This entry was <b>{isPublish, select, true {published} other {unpublished}}</b>.',\n },\n {\n isPublish: type === 'publish',\n b: (children: React.ReactNode) => (\n <Typography fontWeight=\"bold\">{children}</Typography>\n ),\n }\n )}\n </Typography>\n ) : (\n <ReleaseActionOptions\n selected={type}\n handleChange={(e) => handleChangeType(e, id, [key, actionIndex])}\n name={`release-action-${id}-type`}\n disabled={!canUpdate}\n />\n )}\n </Td>\n {!release.releasedAt && (\n <>\n <Td width=\"20%\" minWidth=\"200px\">\n <EntryValidationPopover\n action={type}\n schema={contentTypes?.[contentType.uid]}\n entry={entry}\n status={status}\n />\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\">\n <ReleaseActionMenu.Root>\n <ReleaseActionMenu.ReleaseActionEntryLinkItem\n contentTypeUid={contentType.uid}\n documentId={entry.documentId}\n locale={locale?.code}\n />\n <ReleaseActionMenu.DeleteReleaseActionItem\n releaseId={release.id}\n actionId={id}\n />\n </ReleaseActionMenu.Root>\n </Flex>\n </Td>\n </>\n )}\n </Tr>\n )\n )}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n </Flex>\n ))}\n {releaseMeta?.pagination?.pageCount && releaseMeta.pagination.pageCount > 1 && (\n <Pagination.Root\n {...releaseMeta?.pagination}\n defaultPageSize={releaseMeta?.pagination?.pageSize}\n >\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n )}\n </Flex>\n </Layouts.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseDetailsPage\n * -----------------------------------------------------------------------------------------------*/\nconst ReleaseDetailsPage = () => {\n const { formatMessage } = useIntl();\n const { releaseId } = useParams<{ releaseId: string }>();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n const [releaseModalShown, setReleaseModalShown] = React.useState(false);\n const [showWarningSubmit, setWarningSubmit] = React.useState(false);\n\n const {\n isLoading: isLoadingDetails,\n data,\n isSuccess: isSuccessDetails,\n } = useGetReleaseQuery(\n { id: releaseId! },\n {\n skip: !releaseId,\n }\n );\n const { data: dataTimezone, isLoading: isLoadingTimezone } = useGetReleaseSettingsQuery();\n const [updateRelease, { isLoading: isSubmittingForm }] = useUpdateReleaseMutation();\n const [deleteRelease] = useDeleteReleaseMutation();\n\n const toggleEditReleaseModal = () => {\n setReleaseModalShown((prev) => !prev);\n };\n\n const getTimezoneValue = () => {\n if (releaseData?.timezone) {\n return releaseData.timezone;\n } else {\n if (dataTimezone?.data.defaultTimezone) {\n return dataTimezone.data.defaultTimezone;\n }\n return null;\n }\n };\n\n const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);\n\n if (isLoadingDetails || isLoadingTimezone) {\n return (\n <ReleaseDetailsLayout\n toggleEditReleaseModal={toggleEditReleaseModal}\n toggleWarningSubmit={toggleWarningSubmit}\n >\n <Page.Loading />\n </ReleaseDetailsLayout>\n );\n }\n\n if (!releaseId) {\n return <Navigate to=\"..\" />;\n }\n\n const releaseData = (isSuccessDetails && data?.data) || null;\n\n const title = releaseData?.name || '';\n const timezone = getTimezoneValue();\n const scheduledAt =\n releaseData?.scheduledAt && timezone ? utcToZonedTime(releaseData.scheduledAt, timezone) : null;\n // Just get the date and time to display without considering updated timezone time\n const date = scheduledAt ? format(scheduledAt, 'yyyy-MM-dd') : undefined;\n const time = scheduledAt ? format(scheduledAt, 'HH:mm') : '';\n\n const handleEditRelease = async (values: FormValues) => {\n const response = await updateRelease({\n id: releaseId,\n name: values.name,\n scheduledAt: values.scheduledAt,\n timezone: values.timezone,\n });\n\n if ('data' in response) {\n // When the response returns an object with 'data', handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.modal.release-updated-notification-success',\n defaultMessage: 'Release updated.',\n }),\n });\n toggleEditReleaseModal();\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleDeleteRelease = async () => {\n const response = await deleteRelease({\n id: releaseId,\n });\n\n if ('data' in response) {\n navigate('..');\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <ReleaseDetailsLayout\n toggleEditReleaseModal={toggleEditReleaseModal}\n toggleWarningSubmit={toggleWarningSubmit}\n >\n <ReleaseDetailsBody releaseId={releaseId} />\n <ReleaseModal\n open={releaseModalShown}\n handleClose={toggleEditReleaseModal}\n handleSubmit={handleEditRelease}\n isLoading={isLoadingDetails || isSubmittingForm}\n initialValues={{\n name: title || '',\n scheduledAt,\n date,\n time,\n isScheduled: Boolean(scheduledAt),\n timezone,\n }}\n />\n <Dialog.Root open={showWarningSubmit} onOpenChange={toggleWarningSubmit}>\n <ConfirmDialog onConfirm={handleDeleteRelease}>\n {formatMessage({\n id: 'content-releases.dialog.confirmation-message',\n defaultMessage: 'Are you sure you want to delete this release?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </ReleaseDetailsLayout>\n );\n};\n\nexport { ReleaseDetailsPage };\n"],"names":["ReleaseInfoWrapper","styled","Flex","theme","borderRadius","colors","neutral150","ReleaseDetailsLayout","toggleEditReleaseModal","toggleWarningSubmit","children","formatMessage","formatDate","formatTime","useIntl","releaseId","useParams","data","isLoading","isLoadingDetails","error","useGetReleaseQuery","id","skip","publishRelease","isPublishing","usePublishReleaseMutation","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","allowedActions","useRBAC","PERMISSIONS","canUpdate","canDelete","canPublish","dispatch","useTypedDispatch","trackUsage","useTracking","release","handlePublishRelease","response","type","message","defaultMessage","totalEntries","totalPublishedEntries","totalUnpublishedEntries","meta","isFetchError","handleRefresh","releaseApi","util","invalidateTags","getCreatedByUser","createdBy","username","firstname","lastname","trim","email","_jsx","Page","Loading","isBaseQueryError","Navigate","to","state","errors","code","actions","count","hasCreatedByUser","Boolean","isScheduled","scheduledAt","timezone","numberOfEntriesText","number","scheduledText","date","Date","weekday","day","month","year","timeZone","time","hourCycle","offset","getTimezoneOffset","Layouts","Root","_jsxs","Main","aria-busy","Header","title","name","subtitle","gap","lineHeight","Typography","textColor","variant","Badge","getBadgeProps","status","navigationAction","BackButton","fallback","primaryAction","releasedAt","SimpleMenuButton","label","More","endIcon","paddingLeft","paddingRight","aria-label","popoverPlacement","Menu","Item","disabled","onSelect","startIcon","Pencil","Trash","direction","justifyContent","alignItems","padding","fontWeight","color","RelativeTime","timestamp","createdAt","Button","size","onClick","toString","loading","SimpleMenu","GROUP_BY_OPTIONS","GROUP_BY_OPTIONS_NO_LOCALE","getGroupByOptionLabel","value","ReleaseDetailsBody","query","setQuery","useQueryParams","releaseData","isReleaseLoading","releaseError","runHookWaterfall","useStrapiApp","displayedHeaders","hasI18nEnabled","selectedGroupBy","groupBy","isFetching","isError","releaseActionsError","useGetReleaseActionsQuery","updateReleaseAction","useUpdateReleaseActionMutation","handleChangeType","e","actionId","actionPath","params","body","target","releaseActions","releaseMeta","contentTypes","components","errorsArray","push","Error","Object","keys","length","Content","EmptyStateLayout","action","LinkButton","tag","ReactRouterLink","pathname","style","textDecoration","icon","EmptyDocuments","width","content","groupByLabel","headers","options","SingleSelect","placeholder","customizeContent","onChange","map","option","SingleSelectOption","key","role","Table","rows","item","Number","entry","Head","HeaderCell","Body","contentType","locale","actionIndex","Tr","Td","maxWidth","ellipsis","mainFieldValue","displayName","isPublish","b","ReleaseActionOptions","selected","handleChange","_Fragment","minWidth","EntryValidationPopover","schema","uid","ReleaseActionMenu","ReleaseActionEntryLinkItem","contentTypeUid","documentId","DeleteReleaseActionItem","pagination","pageCount","Pagination","defaultPageSize","pageSize","PageSize","Links","ReleaseDetailsPage","navigate","useNavigate","releaseModalShown","setReleaseModalShown","React","useState","showWarningSubmit","setWarningSubmit","isSuccess","isSuccessDetails","dataTimezone","isLoadingTimezone","useGetReleaseSettingsQuery","updateRelease","isSubmittingForm","useUpdateReleaseMutation","deleteRelease","useDeleteReleaseMutation","prev","getTimezoneValue","defaultTimezone","prevState","utcToZonedTime","format","undefined","handleEditRelease","values","handleDeleteRelease","ReleaseModal","open","handleClose","handleSubmit","initialValues","Dialog","onOpenChange","ConfirmDialog","onConfirm"],"mappings":"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"}
1
+ {"version":3,"file":"ReleaseDetailsPage.js","sources":["../../../admin/src/pages/ReleaseDetailsPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n Table,\n BackButton,\n ConfirmDialog,\n useTracking,\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n useStrapiApp,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n Main,\n Tr,\n Td,\n Typography,\n Badge,\n SingleSelect,\n SingleSelectOption,\n EmptyStateLayout,\n LinkButton,\n Dialog,\n SimpleMenu,\n Menu,\n} from '@strapi/design-system';\nimport { More, Pencil, Trash } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport format from 'date-fns/format';\nimport { utcToZonedTime } from 'date-fns-tz';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\nimport { useParams, useNavigate, Link as ReactRouterLink, Navigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { EntryValidationPopover } from '../components/EntryValidationPopover';\nimport { RelativeTime } from '../components/RelativeTime';\nimport { ReleaseActionMenu } from '../components/ReleaseActionMenu';\nimport { ReleaseActionOptions } from '../components/ReleaseActionOptions';\nimport { ReleaseModal, FormValues } from '../components/ReleaseModal';\nimport { PERMISSIONS } from '../constants';\nimport {\n GetReleaseActionsQueryParams,\n useGetReleaseActionsQuery,\n useGetReleaseQuery,\n useGetReleaseSettingsQuery,\n useUpdateReleaseMutation,\n useUpdateReleaseActionMutation,\n usePublishReleaseMutation,\n useDeleteReleaseMutation,\n releaseApi,\n} from '../services/release';\nimport { useTypedDispatch } from '../store/hooks';\nimport { isBaseQueryError } from '../utils/api';\nimport { getTimezoneOffset } from '../utils/time';\n\nimport { getBadgeProps } from './ReleasesPage';\n\nimport type {\n ReleaseAction,\n ReleaseActionGroupBy,\n} from '../../../shared/contracts/release-actions';\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseDetailsLayout\n * -----------------------------------------------------------------------------------------------*/\nconst ReleaseInfoWrapper = styled(Flex)`\n align-self: stretch;\n border-bottom-right-radius: ${({ theme }) => theme.borderRadius};\n border-bottom-left-radius: ${({ theme }) => theme.borderRadius};\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface ReleaseDetailsLayoutProps {\n toggleEditReleaseModal: () => void;\n toggleWarningSubmit: () => void;\n children: React.ReactNode;\n}\n\nconst ReleaseDetailsLayout = ({\n toggleEditReleaseModal,\n toggleWarningSubmit,\n children,\n}: ReleaseDetailsLayoutProps) => {\n const { formatMessage, formatDate, formatTime } = useIntl();\n const { releaseId } = useParams<{ releaseId: string }>();\n const {\n data,\n isLoading: isLoadingDetails,\n error,\n } = useGetReleaseQuery(\n { id: releaseId! },\n {\n skip: !releaseId,\n }\n );\n const [publishRelease, { isLoading: isPublishing }] = usePublishReleaseMutation();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const { allowedActions } = useRBAC(PERMISSIONS);\n const { canUpdate, canDelete, canPublish } = allowedActions;\n const dispatch = useTypedDispatch();\n const { trackUsage } = useTracking();\n\n const release = data?.data;\n\n const handlePublishRelease = (id: string) => async () => {\n const response = await publishRelease({ id });\n\n if ('data' in response) {\n // When the response returns an object with 'data', handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.pages.ReleaseDetails.publish-notification-success',\n defaultMessage: 'Release was published successfully.',\n }),\n });\n\n const { totalEntries, totalPublishedEntries, totalUnpublishedEntries } = response.data.meta;\n\n trackUsage('didPublishRelease', {\n totalEntries,\n totalPublishedEntries,\n totalUnpublishedEntries,\n });\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleRefresh = () => {\n dispatch(\n releaseApi.util.invalidateTags([\n { type: 'ReleaseAction', id: 'LIST' },\n { type: 'Release', id: releaseId },\n ])\n );\n };\n\n const getCreatedByUser = () => {\n if (!release?.createdBy) {\n return null;\n }\n\n // Favor the username\n if (release.createdBy.username) {\n return release.createdBy.username;\n }\n\n // Firstname may not exist if created with SSO\n if (release.createdBy.firstname) {\n return `${release.createdBy.firstname} ${release.createdBy.lastname || ''}`.trim();\n }\n\n // All users must have at least an email\n return release.createdBy.email;\n };\n\n if (isLoadingDetails) {\n return <Page.Loading />;\n }\n\n if ((isBaseQueryError(error) && 'code' in error) || !release) {\n return (\n <Navigate\n to=\"..\"\n state={{\n errors: [\n {\n // @ts-expect-error – TODO: fix this weird error flow\n code: error?.code,\n },\n ],\n }}\n />\n );\n }\n\n const totalEntries = release.actions.meta.count || 0;\n const hasCreatedByUser = Boolean(getCreatedByUser());\n\n const isScheduled = release.scheduledAt && release.timezone;\n const numberOfEntriesText = formatMessage(\n {\n id: 'content-releases.pages.Details.header-subtitle',\n defaultMessage: '{number, plural, =0 {No entries} one {# entry} other {# entries}}',\n },\n { number: totalEntries }\n );\n const scheduledText = isScheduled\n ? formatMessage(\n {\n id: 'content-releases.pages.ReleaseDetails.header-subtitle.scheduled',\n defaultMessage: 'Scheduled for {date} at {time} ({offset})',\n },\n {\n date: formatDate(new Date(release.scheduledAt!), {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n timeZone: release.timezone!,\n }),\n time: formatTime(new Date(release.scheduledAt!), {\n timeZone: release.timezone!,\n hourCycle: 'h23',\n }),\n offset: getTimezoneOffset(release.timezone!, new Date(release.scheduledAt!)),\n }\n )\n : '';\n\n return (\n <Layouts.Root>\n <Main aria-busy={isLoadingDetails}>\n <Layouts.Header\n title={release.name}\n subtitle={\n <Flex gap={2} lineHeight={6}>\n <Typography textColor=\"neutral600\" variant=\"epsilon\">\n {numberOfEntriesText + (isScheduled ? ` - ${scheduledText}` : '')}\n </Typography>\n <Badge {...getBadgeProps(release.status)}>{release.status}</Badge>\n </Flex>\n }\n navigationAction={<BackButton fallback=\"..\" />}\n primaryAction={\n !release.releasedAt && (\n <Flex gap={2}>\n <SimpleMenuButton\n label={<More />}\n variant=\"tertiary\"\n endIcon={null}\n paddingLeft=\"7px\"\n paddingRight=\"7px\"\n aria-label={formatMessage({\n id: 'content-releases.header.actions.open-release-actions',\n defaultMessage: 'Release edit and delete menu',\n })}\n popoverPlacement=\"bottom-end\"\n >\n <Menu.Item\n disabled={!canUpdate}\n onSelect={toggleEditReleaseModal}\n startIcon={<Pencil />}\n >\n {formatMessage({\n id: 'content-releases.header.actions.edit',\n defaultMessage: 'Edit',\n })}\n </Menu.Item>\n <Menu.Item\n disabled={!canDelete}\n onSelect={toggleWarningSubmit}\n variant=\"danger\"\n startIcon={<Trash />}\n >\n {formatMessage({\n id: 'content-releases.header.actions.delete',\n defaultMessage: 'Delete',\n })}\n </Menu.Item>\n <ReleaseInfoWrapper\n direction=\"column\"\n justifyContent=\"center\"\n alignItems=\"flex-start\"\n gap={1}\n padding={4}\n >\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'content-releases.header.actions.created',\n defaultMessage: 'Created',\n })}\n </Typography>\n <Typography variant=\"pi\" color=\"neutral300\">\n <RelativeTime timestamp={new Date(release.createdAt)} />\n {formatMessage(\n {\n id: 'content-releases.header.actions.created.description',\n defaultMessage:\n '{hasCreatedByUser, select, true { by {createdBy}} other { by deleted user}}',\n },\n { createdBy: getCreatedByUser(), hasCreatedByUser }\n )}\n </Typography>\n </ReleaseInfoWrapper>\n </SimpleMenuButton>\n <Button size=\"S\" variant=\"tertiary\" onClick={handleRefresh}>\n {formatMessage({\n id: 'content-releases.header.actions.refresh',\n defaultMessage: 'Refresh',\n })}\n </Button>\n {canPublish ? (\n <Button\n size=\"S\"\n variant=\"default\"\n onClick={handlePublishRelease(release.id.toString())}\n loading={isPublishing}\n disabled={release.actions.meta.count === 0}\n >\n {formatMessage({\n id: 'content-releases.header.actions.publish',\n defaultMessage: 'Publish',\n })}\n </Button>\n ) : null}\n </Flex>\n )\n }\n />\n {children}\n </Main>\n </Layouts.Root>\n );\n};\n\nconst SimpleMenuButton = styled(SimpleMenu)`\n & > span {\n display: flex;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseDetailsBody\n * -----------------------------------------------------------------------------------------------*/\nconst GROUP_BY_OPTIONS = ['contentType', 'locale', 'action'] as const;\nconst GROUP_BY_OPTIONS_NO_LOCALE = ['contentType', 'action'] as const;\ntype ReleaseDetailsHeader = {\n label: MessageDescriptor;\n name: string;\n};\n\ntype ReleaseDetailsTableHeader = {\n label: string;\n name: string;\n};\n\nconst getGroupByOptionLabel = (value: (typeof GROUP_BY_OPTIONS)[number]) => {\n if (value === 'locale') {\n return {\n id: 'content-releases.pages.ReleaseDetails.groupBy.option.locales',\n defaultMessage: 'Locales',\n };\n }\n\n if (value === 'action') {\n return {\n id: 'content-releases.pages.ReleaseDetails.groupBy.option.actions',\n defaultMessage: 'Actions',\n };\n }\n\n return {\n id: 'content-releases.pages.ReleaseDetails.groupBy.option.content-type',\n defaultMessage: 'Content-Types',\n };\n};\n\ninterface ReleaseDetailsBodyProps {\n releaseId: string;\n}\n\nconst ReleaseDetailsBody = ({ releaseId }: ReleaseDetailsBodyProps) => {\n const { formatMessage } = useIntl();\n const [{ query }, setQuery] = useQueryParams<GetReleaseActionsQueryParams>();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const {\n data: releaseData,\n isLoading: isReleaseLoading,\n error: releaseError,\n } = useGetReleaseQuery({ id: releaseId });\n const {\n allowedActions: { canUpdate },\n } = useRBAC(PERMISSIONS);\n const runHookWaterfall = useStrapiApp('ReleaseDetailsPage', (state) => state.runHookWaterfall);\n\n // TODO: Migrated displayedHeader to v5\n const {\n displayedHeaders,\n hasI18nEnabled,\n }: { displayedHeaders: ReleaseDetailsHeader[]; hasI18nEnabled: boolean } = runHookWaterfall(\n 'ContentReleases/pages/ReleaseDetails/add-locale-in-releases',\n {\n displayedHeaders: [\n {\n label: {\n id: 'content-releases.page.ReleaseDetails.table.header.label.name',\n defaultMessage: 'name',\n },\n name: 'name',\n },\n ],\n hasI18nEnabled: false,\n }\n );\n\n const release = releaseData?.data;\n const selectedGroupBy = query?.groupBy || 'contentType';\n\n const {\n isLoading,\n isFetching,\n isError,\n data,\n error: releaseActionsError,\n } = useGetReleaseActionsQuery({\n ...query,\n releaseId,\n });\n\n const [updateReleaseAction] = useUpdateReleaseActionMutation();\n\n const handleChangeType = async (\n e: React.ChangeEvent<HTMLInputElement>,\n actionId: ReleaseAction['id'],\n actionPath: [string, number]\n ) => {\n const response = await updateReleaseAction({\n params: {\n releaseId,\n actionId,\n },\n body: {\n type: e.target.value as ReleaseAction['type'],\n },\n query, // We are passing the query params to make optimistic updates\n actionPath, // We are passing the action path to found the position in the cache of the action for optimistic updates\n });\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (isLoading || isReleaseLoading) {\n return <Page.Loading />;\n }\n\n const releaseActions = data?.data;\n const releaseMeta = data?.meta;\n const contentTypes = releaseMeta?.contentTypes || {};\n\n if (isBaseQueryError(releaseError) || !release) {\n const errorsArray = [];\n if (releaseError && 'code' in releaseError) {\n errorsArray.push({\n code: releaseError.code,\n });\n }\n if (releaseActionsError && 'code' in releaseActionsError) {\n errorsArray.push({\n code: releaseActionsError.code,\n });\n }\n return (\n <Navigate\n to=\"..\"\n state={{\n errors: errorsArray,\n }}\n />\n );\n }\n\n if (isError || !releaseActions) {\n return <Page.Error />;\n }\n\n if (Object.keys(releaseActions).length === 0) {\n return (\n <Layouts.Content>\n <EmptyStateLayout\n action={\n <LinkButton\n tag={ReactRouterLink}\n to={{\n pathname: '/content-manager',\n }}\n style={{ textDecoration: 'none' }}\n variant=\"secondary\"\n >\n {formatMessage({\n id: 'content-releases.page.Details.button.openContentManager',\n defaultMessage: 'Open the Content Manager',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'content-releases.pages.Details.tab.emptyEntries',\n defaultMessage:\n 'This release is empty. Open the Content Manager, select an entry and add it to the release.',\n })}\n />\n </Layouts.Content>\n );\n }\n\n const groupByLabel = formatMessage({\n id: 'content-releases.pages.ReleaseDetails.groupBy.aria-label',\n defaultMessage: 'Group by',\n });\n const headers: ReleaseDetailsTableHeader[] = [\n ...displayedHeaders,\n {\n label: {\n id: 'content-releases.page.ReleaseDetails.table.header.label.content-type',\n defaultMessage: 'content-type',\n },\n name: 'content-type',\n },\n {\n label: {\n id: 'content-releases.page.ReleaseDetails.table.header.label.action',\n defaultMessage: 'action',\n },\n name: 'action',\n },\n ...(!release.releasedAt\n ? [\n {\n label: {\n id: 'content-releases.page.ReleaseDetails.table.header.label.status',\n defaultMessage: 'status',\n },\n name: 'status',\n },\n ]\n : []),\n ].map(({ label, name }) => ({\n label: formatMessage(label),\n name,\n }));\n\n const options = hasI18nEnabled ? GROUP_BY_OPTIONS : GROUP_BY_OPTIONS_NO_LOCALE;\n\n return (\n <Layouts.Content>\n <Flex gap={4} direction=\"column\" alignItems=\"stretch\">\n <Flex>\n <SingleSelect\n placeholder={groupByLabel}\n aria-label={groupByLabel}\n customizeContent={(value) =>\n formatMessage(\n {\n id: `content-releases.pages.ReleaseDetails.groupBy.label`,\n defaultMessage: `Group by {groupBy}`,\n },\n {\n groupBy: value,\n }\n )\n }\n value={formatMessage(getGroupByOptionLabel(selectedGroupBy))}\n onChange={(value) => setQuery({ groupBy: value as ReleaseActionGroupBy })}\n >\n {options.map((option) => (\n <SingleSelectOption key={option} value={option}>\n {formatMessage(getGroupByOptionLabel(option))}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Flex>\n {Object.keys(releaseActions).map((key) => (\n <Flex key={`releases-group-${key}`} gap={4} direction=\"column\" alignItems=\"stretch\">\n <Flex role=\"separator\" aria-label={key}>\n <Badge>{key}</Badge>\n </Flex>\n <Table.Root\n rows={releaseActions[key].map((item) => ({\n ...item,\n id: Number(item.entry.id),\n }))}\n headers={headers}\n isLoading={isLoading || isFetching}\n >\n <Table.Content>\n <Table.Head>\n {headers.map(({ label, name }) => (\n <Table.HeaderCell key={name} label={label} name={name} />\n ))}\n </Table.Head>\n <Table.Loading />\n <Table.Body>\n {releaseActions[key].map(\n ({ id, contentType, locale, type, entry, status }, actionIndex) => (\n <Tr key={id}>\n <Td width=\"25%\" maxWidth=\"200px\">\n <Typography ellipsis>{`${\n contentType.mainFieldValue || entry.id\n }`}</Typography>\n </Td>\n {hasI18nEnabled && (\n <Td width=\"10%\">\n <Typography>{`${locale?.name ? locale.name : '-'}`}</Typography>\n </Td>\n )}\n\n <Td width=\"10%\">\n <Typography>{contentType.displayName || ''}</Typography>\n </Td>\n <Td width=\"20%\">\n {release.releasedAt ? (\n <Typography>\n {formatMessage(\n {\n id: 'content-releases.page.ReleaseDetails.table.action-published',\n defaultMessage:\n 'This entry was <b>{isPublish, select, true {published} other {unpublished}}</b>.',\n },\n {\n isPublish: type === 'publish',\n b: (children: React.ReactNode) => (\n <Typography fontWeight=\"bold\">{children}</Typography>\n ),\n }\n )}\n </Typography>\n ) : (\n <ReleaseActionOptions\n selected={type}\n handleChange={(e) => handleChangeType(e, id, [key, actionIndex])}\n name={`release-action-${id}-type`}\n disabled={!canUpdate}\n />\n )}\n </Td>\n {!release.releasedAt && (\n <>\n <Td width=\"20%\" minWidth=\"200px\">\n <EntryValidationPopover\n action={type}\n schema={contentTypes?.[contentType.uid]}\n entry={entry}\n status={status}\n />\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\">\n <ReleaseActionMenu.Root>\n <ReleaseActionMenu.ReleaseActionEntryLinkItem\n contentTypeUid={contentType.uid}\n documentId={entry.documentId}\n locale={locale?.code}\n />\n <ReleaseActionMenu.DeleteReleaseActionItem\n releaseId={release.id}\n actionId={id}\n />\n </ReleaseActionMenu.Root>\n </Flex>\n </Td>\n </>\n )}\n </Tr>\n )\n )}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n </Flex>\n ))}\n {releaseMeta?.pagination?.pageCount && releaseMeta.pagination.pageCount > 1 && (\n <Pagination.Root\n {...releaseMeta?.pagination}\n defaultPageSize={releaseMeta?.pagination?.pageSize}\n >\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n )}\n </Flex>\n </Layouts.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseDetailsPage\n * -----------------------------------------------------------------------------------------------*/\nconst ReleaseDetailsPage = () => {\n const { formatMessage } = useIntl();\n const { releaseId } = useParams<{ releaseId: string }>();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n const [releaseModalShown, setReleaseModalShown] = React.useState(false);\n const [showWarningSubmit, setWarningSubmit] = React.useState(false);\n\n const {\n isLoading: isLoadingDetails,\n data,\n isSuccess: isSuccessDetails,\n } = useGetReleaseQuery(\n { id: releaseId! },\n {\n skip: !releaseId,\n }\n );\n const { data: dataTimezone, isLoading: isLoadingTimezone } = useGetReleaseSettingsQuery();\n const [updateRelease, { isLoading: isSubmittingForm }] = useUpdateReleaseMutation();\n const [deleteRelease] = useDeleteReleaseMutation();\n\n const toggleEditReleaseModal = () => {\n setReleaseModalShown((prev) => !prev);\n };\n\n const getTimezoneValue = () => {\n if (releaseData?.timezone) {\n return releaseData.timezone;\n } else {\n if (dataTimezone?.data.defaultTimezone) {\n return dataTimezone.data.defaultTimezone;\n }\n return null;\n }\n };\n\n const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);\n\n if (isLoadingDetails || isLoadingTimezone) {\n return (\n <ReleaseDetailsLayout\n toggleEditReleaseModal={toggleEditReleaseModal}\n toggleWarningSubmit={toggleWarningSubmit}\n >\n <Page.Loading />\n </ReleaseDetailsLayout>\n );\n }\n\n if (!releaseId) {\n return <Navigate to=\"..\" />;\n }\n\n const releaseData = (isSuccessDetails && data?.data) || null;\n\n const title = releaseData?.name || '';\n const timezone = getTimezoneValue();\n const scheduledAt =\n releaseData?.scheduledAt && timezone ? utcToZonedTime(releaseData.scheduledAt, timezone) : null;\n // Just get the date and time to display without considering updated timezone time\n const date = scheduledAt ? format(scheduledAt, 'yyyy-MM-dd') : undefined;\n const time = scheduledAt ? format(scheduledAt, 'HH:mm') : '';\n\n const handleEditRelease = async (values: FormValues) => {\n const response = await updateRelease({\n id: releaseId,\n name: values.name,\n scheduledAt: values.scheduledAt,\n timezone: values.timezone,\n });\n\n if ('data' in response) {\n // When the response returns an object with 'data', handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.modal.release-updated-notification-success',\n defaultMessage: 'Release updated.',\n }),\n });\n toggleEditReleaseModal();\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleDeleteRelease = async () => {\n const response = await deleteRelease({\n id: releaseId,\n });\n\n if ('data' in response) {\n navigate('..');\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <ReleaseDetailsLayout\n toggleEditReleaseModal={toggleEditReleaseModal}\n toggleWarningSubmit={toggleWarningSubmit}\n >\n <ReleaseDetailsBody releaseId={releaseId} />\n <ReleaseModal\n open={releaseModalShown}\n handleClose={toggleEditReleaseModal}\n handleSubmit={handleEditRelease}\n isLoading={isLoadingDetails || isSubmittingForm}\n initialValues={{\n name: title || '',\n scheduledAt,\n date,\n time,\n isScheduled: Boolean(scheduledAt),\n timezone,\n }}\n />\n <Dialog.Root open={showWarningSubmit} onOpenChange={toggleWarningSubmit}>\n <ConfirmDialog onConfirm={handleDeleteRelease}>\n {formatMessage({\n id: 'content-releases.dialog.confirmation-message',\n defaultMessage: 'Are you sure you want to delete this release?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </ReleaseDetailsLayout>\n );\n};\n\nexport { ReleaseDetailsPage };\n"],"names":["ReleaseInfoWrapper","styled","Flex","theme","borderRadius","colors","neutral150","ReleaseDetailsLayout","toggleEditReleaseModal","toggleWarningSubmit","children","formatMessage","formatDate","formatTime","useIntl","releaseId","useParams","data","isLoading","isLoadingDetails","error","useGetReleaseQuery","id","skip","publishRelease","isPublishing","usePublishReleaseMutation","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","allowedActions","useRBAC","PERMISSIONS","canUpdate","canDelete","canPublish","dispatch","useTypedDispatch","trackUsage","useTracking","release","handlePublishRelease","response","type","message","defaultMessage","totalEntries","totalPublishedEntries","totalUnpublishedEntries","meta","isFetchError","handleRefresh","releaseApi","util","invalidateTags","getCreatedByUser","createdBy","username","firstname","lastname","trim","email","_jsx","Page","Loading","isBaseQueryError","Navigate","to","state","errors","code","actions","count","hasCreatedByUser","Boolean","isScheduled","scheduledAt","timezone","numberOfEntriesText","number","scheduledText","date","Date","weekday","day","month","year","timeZone","time","hourCycle","offset","getTimezoneOffset","Layouts","Root","_jsxs","Main","aria-busy","Header","title","name","subtitle","gap","lineHeight","Typography","textColor","variant","Badge","getBadgeProps","status","navigationAction","BackButton","fallback","primaryAction","releasedAt","SimpleMenuButton","label","More","endIcon","paddingLeft","paddingRight","aria-label","popoverPlacement","Menu","Item","disabled","onSelect","startIcon","Pencil","Trash","direction","justifyContent","alignItems","padding","fontWeight","color","RelativeTime","timestamp","createdAt","Button","size","onClick","toString","loading","SimpleMenu","GROUP_BY_OPTIONS","GROUP_BY_OPTIONS_NO_LOCALE","getGroupByOptionLabel","value","ReleaseDetailsBody","query","setQuery","useQueryParams","releaseData","isReleaseLoading","releaseError","runHookWaterfall","useStrapiApp","displayedHeaders","hasI18nEnabled","selectedGroupBy","groupBy","isFetching","isError","releaseActionsError","useGetReleaseActionsQuery","updateReleaseAction","useUpdateReleaseActionMutation","handleChangeType","e","actionId","actionPath","params","body","target","releaseActions","releaseMeta","contentTypes","errorsArray","push","Error","Object","keys","length","Content","EmptyStateLayout","action","LinkButton","tag","ReactRouterLink","pathname","style","textDecoration","icon","EmptyDocuments","width","content","groupByLabel","headers","map","options","SingleSelect","placeholder","customizeContent","onChange","option","SingleSelectOption","key","role","Table","rows","item","Number","entry","Head","HeaderCell","Body","contentType","locale","actionIndex","Tr","Td","maxWidth","ellipsis","mainFieldValue","displayName","isPublish","b","ReleaseActionOptions","selected","handleChange","_Fragment","minWidth","EntryValidationPopover","schema","uid","ReleaseActionMenu","ReleaseActionEntryLinkItem","contentTypeUid","documentId","DeleteReleaseActionItem","pagination","pageCount","Pagination","defaultPageSize","pageSize","PageSize","Links","ReleaseDetailsPage","navigate","useNavigate","releaseModalShown","setReleaseModalShown","React","useState","showWarningSubmit","setWarningSubmit","isSuccess","isSuccessDetails","dataTimezone","isLoadingTimezone","useGetReleaseSettingsQuery","updateRelease","isSubmittingForm","useUpdateReleaseMutation","deleteRelease","useDeleteReleaseMutation","prev","getTimezoneValue","defaultTimezone","prevState","utcToZonedTime","format","undefined","handleEditRelease","values","handleDeleteRelease","ReleaseModal","open","handleClose","handleSubmit","initialValues","Dialog","onOpenChange","ConfirmDialog","onConfirm"],"mappings":"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"}