@strapi/content-releases 0.0.0-next.883f4fcabd28de02b78b7b00a70e33cd2d151d05 → 0.0.0-next.887de12487694078a1de0c143d7abfb47bf63396
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/assets/purchase-page-illustration-dark.jpg.js +6 -0
- package/dist/admin/assets/purchase-page-illustration-dark.jpg.js.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-dark.jpg.mjs +4 -0
- package/dist/admin/assets/purchase-page-illustration-dark.jpg.mjs.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-light.jpg.js +6 -0
- package/dist/admin/assets/purchase-page-illustration-light.jpg.js.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-light.jpg.mjs +4 -0
- package/dist/admin/assets/purchase-page-illustration-light.jpg.mjs.map +1 -0
- package/dist/admin/components/EntryValidationPopover.js +62 -96
- package/dist/admin/components/EntryValidationPopover.js.map +1 -1
- package/dist/admin/components/EntryValidationPopover.mjs +64 -98
- package/dist/admin/components/EntryValidationPopover.mjs.map +1 -1
- package/dist/admin/components/RelativeTime.js.map +1 -1
- package/dist/admin/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/components/ReleaseActionMenu.js +25 -74
- package/dist/admin/components/ReleaseActionMenu.js.map +1 -1
- package/dist/admin/components/ReleaseActionMenu.mjs +26 -75
- package/dist/admin/components/ReleaseActionMenu.mjs.map +1 -1
- package/dist/admin/components/ReleaseActionOptions.js.map +1 -1
- package/dist/admin/components/ReleaseActionOptions.mjs.map +1 -1
- package/dist/admin/components/ReleaseListCell.js.map +1 -1
- package/dist/admin/components/ReleaseListCell.mjs.map +1 -1
- package/dist/admin/components/ReleaseModal.js +8 -0
- package/dist/admin/components/ReleaseModal.js.map +1 -1
- package/dist/admin/components/ReleaseModal.mjs +8 -0
- package/dist/admin/components/ReleaseModal.mjs.map +1 -1
- package/dist/admin/components/ReleasesPanel.js.map +1 -1
- package/dist/admin/components/ReleasesPanel.mjs.map +1 -1
- package/dist/admin/components/Widgets.js +122 -0
- package/dist/admin/components/Widgets.js.map +1 -0
- package/dist/admin/components/Widgets.mjs +120 -0
- package/dist/admin/components/Widgets.mjs.map +1 -0
- package/dist/admin/constants.js +2 -0
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs +2 -1
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/index.js +25 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +26 -3
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/PurchaseContentReleases.js +6 -6
- package/dist/admin/pages/PurchaseContentReleases.js.map +1 -1
- package/dist/admin/pages/PurchaseContentReleases.mjs +7 -7
- package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -1
- package/dist/admin/pages/ReleaseDetailsPage.js +111 -158
- package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -1
- package/dist/admin/pages/ReleaseDetailsPage.mjs +113 -160
- package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -1
- package/dist/admin/pages/ReleasesPage.js +130 -122
- package/dist/admin/pages/ReleasesPage.js.map +1 -1
- package/dist/admin/pages/ReleasesPage.mjs +131 -123
- package/dist/admin/pages/ReleasesPage.mjs.map +1 -1
- package/dist/admin/pages/ReleasesSettingsPage.js +37 -11
- package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -1
- package/dist/admin/pages/ReleasesSettingsPage.mjs +38 -12
- package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -1
- package/dist/admin/services/homepage.js +24 -0
- package/dist/admin/services/homepage.js.map +1 -0
- package/dist/admin/services/homepage.mjs +22 -0
- package/dist/admin/services/homepage.mjs.map +1 -0
- package/dist/admin/services/release.js +21 -12
- package/dist/admin/services/release.js.map +1 -1
- package/dist/admin/services/release.mjs +21 -12
- package/dist/admin/services/release.mjs.map +1 -1
- package/dist/admin/src/components/Widgets.d.ts +2 -0
- package/dist/admin/src/constants.d.ts +1 -0
- package/dist/admin/src/services/homepage.d.ts +9 -0
- package/dist/admin/src/services/release.d.ts +28 -28
- package/dist/admin/translations/en.json.js +6 -3
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +6 -3
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/admin/utils/time.js.map +1 -1
- package/dist/admin/utils/time.mjs.map +1 -1
- package/dist/admin/validation/schemas.js.map +1 -1
- package/dist/admin/validation/schemas.mjs.map +1 -1
- package/dist/server/controllers/homepage.js +15 -0
- package/dist/server/controllers/homepage.js.map +1 -0
- package/dist/server/controllers/homepage.mjs +13 -0
- package/dist/server/controllers/homepage.mjs.map +1 -0
- package/dist/server/controllers/index.js +2 -0
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs +2 -0
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/release.js.map +1 -1
- package/dist/server/controllers/release.mjs.map +1 -1
- package/dist/server/destroy.js +2 -2
- package/dist/server/destroy.js.map +1 -1
- package/dist/server/destroy.mjs +2 -2
- package/dist/server/destroy.mjs.map +1 -1
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +1 -1
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -1
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +1 -1
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -1
- package/dist/server/routes/homepage.js +25 -0
- package/dist/server/routes/homepage.js.map +1 -0
- package/dist/server/routes/homepage.mjs +23 -0
- package/dist/server/routes/homepage.mjs.map +1 -0
- package/dist/server/routes/index.js +2 -0
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs +2 -0
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/services/homepage.js +26 -0
- package/dist/server/services/homepage.js.map +1 -0
- package/dist/server/services/homepage.mjs +24 -0
- package/dist/server/services/homepage.mjs.map +1 -0
- package/dist/server/services/index.js +2 -0
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +2 -0
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/release-action.js.map +1 -1
- package/dist/server/services/release-action.mjs.map +1 -1
- package/dist/server/services/release.js.map +1 -1
- package/dist/server/services/release.mjs.map +1 -1
- package/dist/server/services/scheduling.js +16 -12
- package/dist/server/services/scheduling.js.map +1 -1
- package/dist/server/services/scheduling.mjs +16 -12
- package/dist/server/services/scheduling.mjs.map +1 -1
- package/dist/server/services/validation.js.map +1 -1
- package/dist/server/services/validation.mjs.map +1 -1
- package/dist/server/src/controllers/homepage.d.ts +6 -0
- package/dist/server/src/controllers/homepage.d.ts.map +1 -0
- package/dist/server/src/controllers/index.d.ts +3 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/destroy.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +13 -4
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/homepage.d.ts +4 -0
- package/dist/server/src/routes/homepage.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts +1 -0
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/homepage.d.ts +9 -0
- package/dist/server/src/services/homepage.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +9 -4
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/scheduling.d.ts +4 -5
- package/dist/server/src/services/scheduling.d.ts.map +1 -1
- package/dist/shared/contracts/homepage.d.ts +11 -0
- package/dist/shared/contracts/homepage.d.ts.map +1 -0
- package/dist/shared/types.d.ts +1 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +15 -16
- package/dist/admin/assets/purchase-page-illustration-dark.svg.js +0 -6
- package/dist/admin/assets/purchase-page-illustration-dark.svg.js.map +0 -1
- package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs +0 -4
- package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs.map +0 -1
- package/dist/admin/assets/purchase-page-illustration-light.svg.js +0 -6
- package/dist/admin/assets/purchase-page-illustration-light.svg.js.map +0 -1
- package/dist/admin/assets/purchase-page-illustration-light.svg.mjs +0 -4
- package/dist/admin/assets/purchase-page-illustration-light.svg.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelativeTime.mjs","sources":["../../../admin/src/components/RelativeTime.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Duration, intervalToDuration, isPast } from 'date-fns';\nimport { useIntl } from 'react-intl';\n\nconst intervals: Array<keyof Duration> = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\ninterface CustomInterval {\n unit: keyof Duration;\n text: string;\n threshold: number;\n}\n\ninterface RelativeTimeProps extends React.ComponentPropsWithoutRef<'time'> {\n timestamp: Date;\n customIntervals?: CustomInterval[];\n}\n\n/**\n * Displays the relative time between a given timestamp and the current time.\n * You can display a custom message for given time intervals by passing an array of custom intervals.\n *\n * @example\n * ```jsx\n * <caption>Display \"last hour\" if the timestamp is less than an hour ago</caption>\n * <RelativeTime\n * timestamp={new Date('2021-01-01')}\n * customIntervals={[\n * { unit: 'hours', threshold: 1, text: 'last hour' },\n * ]}\n * ```\n */\nconst RelativeTime = React.forwardRef<HTMLTimeElement, RelativeTimeProps>(\n ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {\n const { formatRelativeTime, formatDate, formatTime } = useIntl();\n\n /**\n * TODO: make this auto-update, like a clock.\n */\n const interval = intervalToDuration({\n start: timestamp,\n end: Date.now(),\n // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.\n }) as Required<Duration>;\n\n const unit = intervals.find((intervalUnit) => {\n return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);\n })!;\n\n const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];\n\n // Display custom text if interval is less than the threshold\n const customInterval = customIntervals.find(\n (custom) => interval[custom.unit] < custom.threshold\n );\n\n const displayText = customInterval\n ? customInterval.text\n : formatRelativeTime(relativeTime, unit, { numeric: 'auto' });\n\n return (\n <time\n ref={forwardedRef}\n dateTime={timestamp.toISOString()}\n role=\"time\"\n title={`${formatDate(timestamp)} ${formatTime(timestamp)}`}\n {...restProps}\n >\n {displayText}\n </time>\n );\n }\n);\n\nexport { RelativeTime };\nexport type { CustomInterval, RelativeTimeProps };\n"],"names":["intervals","RelativeTime","React","forwardRef","timestamp","customIntervals","restProps","forwardedRef","formatRelativeTime","formatDate","formatTime","useIntl","interval","intervalToDuration","start","end","Date","now","unit","find","intervalUnit","Object","keys","includes","relativeTime","isPast","customInterval","custom","threshold","displayText","text","numeric","_jsx","time","ref","dateTime","toISOString","role","title"],"mappings":";;;;;AAKA,MAAMA,SAAmC,GAAA;AAAC,IAAA,OAAA;AAAS,IAAA,QAAA;AAAU,IAAA,MAAA;AAAQ,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA;AAAU,CAAA;AAanG;;;;;;;;;;;;;AAaC,IACKC,MAAAA,YAAAA,iBAAeC,KAAMC,CAAAA,UAAU,CACnC,CAAC,EAAEC,SAAS,EAAEC,eAAkB,GAAA,EAAE,EAAE,GAAGC,WAAW,EAAEC,YAAAA,GAAAA;AAClD,IAAA,MAAM,EAAEC,kBAAkB,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGC,OAAAA,EAAAA;AAEvD;;QAGA,MAAMC,WAAWC,kBAAmB,CAAA;QAClCC,KAAOV,EAAAA,SAAAA;AACPW,QAAAA,GAAAA,EAAKC,KAAKC,GAAG;AAEf,KAAA,CAAA;AAEA,IAAA,MAAMC,IAAOlB,GAAAA,SAAAA,CAAUmB,IAAI,CAAC,CAACC,YAAAA,GAAAA;QAC3B,OAAOR,QAAQ,CAACQ,YAAAA,CAAa,GAAG,CAAA,IAAKC,OAAOC,IAAI,CAACV,QAAUW,CAAAA,CAAAA,QAAQ,CAACH,YAAAA,CAAAA;AACtE,KAAA,CAAA;IAEA,MAAMI,YAAAA,GAAeC,MAAOrB,CAAAA,SAAAA,CAAAA,GAAa,CAACQ,QAAQ,CAACM,IAAK,CAAA,GAAGN,QAAQ,CAACM,IAAK,CAAA;;AAGzE,IAAA,MAAMQ,cAAiBrB,GAAAA,eAAAA,CAAgBc,IAAI,CACzC,CAACQ,MAAAA,GAAWf,QAAQ,CAACe,MAAOT,CAAAA,IAAI,CAAC,GAAGS,OAAOC,SAAS,CAAA;AAGtD,IAAA,MAAMC,cAAcH,cAChBA,GAAAA,cAAAA,CAAeI,IAAI,GACnBtB,kBAAAA,CAAmBgB,cAAcN,IAAM,EAAA;QAAEa,OAAS,EAAA;AAAO,KAAA,CAAA;AAE7D,IAAA,qBACEC,GAACC,CAAAA,MAAAA,EAAAA;QACCC,GAAK3B,EAAAA,YAAAA;AACL4B,QAAAA,QAAAA,EAAU/B,UAAUgC,WAAW,EAAA;QAC/BC,IAAK,EAAA,MAAA;
|
|
1
|
+
{"version":3,"file":"RelativeTime.mjs","sources":["../../../admin/src/components/RelativeTime.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Duration, intervalToDuration, isPast } from 'date-fns';\nimport { useIntl } from 'react-intl';\n\nconst intervals: Array<keyof Duration> = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\ninterface CustomInterval {\n unit: keyof Duration;\n text: string;\n threshold: number;\n}\n\ninterface RelativeTimeProps extends React.ComponentPropsWithoutRef<'time'> {\n timestamp: Date;\n customIntervals?: CustomInterval[];\n}\n\n/**\n * Displays the relative time between a given timestamp and the current time.\n * You can display a custom message for given time intervals by passing an array of custom intervals.\n *\n * @example\n * ```jsx\n * <caption>Display \"last hour\" if the timestamp is less than an hour ago</caption>\n * <RelativeTime\n * timestamp={new Date('2021-01-01')}\n * customIntervals={[\n * { unit: 'hours', threshold: 1, text: 'last hour' },\n * ]}\n * ```\n */\nconst RelativeTime = React.forwardRef<HTMLTimeElement, RelativeTimeProps>(\n ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {\n const { formatRelativeTime, formatDate, formatTime } = useIntl();\n\n /**\n * TODO: make this auto-update, like a clock.\n */\n const interval = intervalToDuration({\n start: timestamp,\n end: Date.now(),\n // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.\n }) as Required<Duration>;\n\n const unit = intervals.find((intervalUnit) => {\n return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);\n })!;\n\n const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];\n\n // Display custom text if interval is less than the threshold\n const customInterval = customIntervals.find(\n (custom) => interval[custom.unit] < custom.threshold\n );\n\n const displayText = customInterval\n ? customInterval.text\n : formatRelativeTime(relativeTime, unit, { numeric: 'auto' });\n\n return (\n <time\n ref={forwardedRef}\n dateTime={timestamp.toISOString()}\n role=\"time\"\n title={`${formatDate(timestamp)} ${formatTime(timestamp)}`}\n {...restProps}\n >\n {displayText}\n </time>\n );\n }\n);\n\nexport { RelativeTime };\nexport type { CustomInterval, RelativeTimeProps };\n"],"names":["intervals","RelativeTime","React","forwardRef","timestamp","customIntervals","restProps","forwardedRef","formatRelativeTime","formatDate","formatTime","useIntl","interval","intervalToDuration","start","end","Date","now","unit","find","intervalUnit","Object","keys","includes","relativeTime","isPast","customInterval","custom","threshold","displayText","text","numeric","_jsx","time","ref","dateTime","toISOString","role","title"],"mappings":";;;;;AAKA,MAAMA,SAAmC,GAAA;AAAC,IAAA,OAAA;AAAS,IAAA,QAAA;AAAU,IAAA,MAAA;AAAQ,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA;AAAU,CAAA;AAanG;;;;;;;;;;;;;AAaC,IACKC,MAAAA,YAAAA,iBAAeC,KAAMC,CAAAA,UAAU,CACnC,CAAC,EAAEC,SAAS,EAAEC,eAAkB,GAAA,EAAE,EAAE,GAAGC,WAAW,EAAEC,YAAAA,GAAAA;AAClD,IAAA,MAAM,EAAEC,kBAAkB,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGC,OAAAA,EAAAA;AAEvD;;QAGA,MAAMC,WAAWC,kBAAmB,CAAA;QAClCC,KAAOV,EAAAA,SAAAA;AACPW,QAAAA,GAAAA,EAAKC,KAAKC,GAAG;AAEf,KAAA,CAAA;AAEA,IAAA,MAAMC,IAAOlB,GAAAA,SAAAA,CAAUmB,IAAI,CAAC,CAACC,YAAAA,GAAAA;QAC3B,OAAOR,QAAQ,CAACQ,YAAAA,CAAa,GAAG,CAAA,IAAKC,OAAOC,IAAI,CAACV,QAAUW,CAAAA,CAAAA,QAAQ,CAACH,YAAAA,CAAAA;AACtE,KAAA,CAAA;IAEA,MAAMI,YAAAA,GAAeC,MAAOrB,CAAAA,SAAAA,CAAAA,GAAa,CAACQ,QAAQ,CAACM,IAAK,CAAA,GAAGN,QAAQ,CAACM,IAAK,CAAA;;AAGzE,IAAA,MAAMQ,cAAiBrB,GAAAA,eAAAA,CAAgBc,IAAI,CACzC,CAACQ,MAAAA,GAAWf,QAAQ,CAACe,MAAOT,CAAAA,IAAI,CAAC,GAAGS,OAAOC,SAAS,CAAA;AAGtD,IAAA,MAAMC,cAAcH,cAChBA,GAAAA,cAAAA,CAAeI,IAAI,GACnBtB,kBAAAA,CAAmBgB,cAAcN,IAAM,EAAA;QAAEa,OAAS,EAAA;AAAO,KAAA,CAAA;AAE7D,IAAA,qBACEC,GAACC,CAAAA,MAAAA,EAAAA;QACCC,GAAK3B,EAAAA,YAAAA;AACL4B,QAAAA,QAAAA,EAAU/B,UAAUgC,WAAW,EAAA;QAC/BC,IAAK,EAAA,MAAA;AACLC,QAAAA,KAAAA,EAAO,GAAG7B,UAAWL,CAAAA,SAAAA,CAAAA,CAAW,CAAC,EAAEM,WAAWN,SAAY,CAAA,CAAA,CAAA;AACzD,QAAA,GAAGE,SAAS;AAEZuB,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;;;;"}
|
|
@@ -30,30 +30,16 @@ function _interopNamespaceDefault(e) {
|
|
|
30
30
|
|
|
31
31
|
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
fill: ${({ theme, $variant = 'neutral' })=>theme.colors[`${$variant}600`]};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
a {
|
|
42
|
-
color: ${({ theme })=>theme.colors.neutral800};
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
svg {
|
|
47
|
-
color: ${({ theme, $variant = 'neutral' })=>theme.colors[`${$variant}500`]};
|
|
33
|
+
// TODO: has to be fixed in the DS - https://github.com/strapi/design-system/issues/1934
|
|
34
|
+
const StyledMenuLink = styledComponents.styled(designSystem.Menu.Item)`
|
|
35
|
+
span,
|
|
36
|
+
&:hover span {
|
|
37
|
+
color: ${({ theme })=>theme.colors['neutral800']};
|
|
48
38
|
}
|
|
49
39
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
span,
|
|
55
|
-
a {
|
|
56
|
-
width: 100%;
|
|
40
|
+
svg path,
|
|
41
|
+
&:hover svg path {
|
|
42
|
+
fill: ${({ theme })=>theme.colors['neutral500']};
|
|
57
43
|
}
|
|
58
44
|
`;
|
|
59
45
|
const DeleteReleaseActionItem = ({ releaseId, actionId })=>{
|
|
@@ -102,25 +88,13 @@ const DeleteReleaseActionItem = ({ releaseId, actionId })=>{
|
|
|
102
88
|
if (!canDeleteAction) {
|
|
103
89
|
return null;
|
|
104
90
|
}
|
|
105
|
-
return /*#__PURE__*/ jsxRuntime.jsx(
|
|
106
|
-
|
|
91
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
|
|
92
|
+
variant: "danger",
|
|
93
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Cross, {}),
|
|
107
94
|
onSelect: handleDeleteAction,
|
|
108
|
-
children:
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
/*#__PURE__*/ jsxRuntime.jsx(icons.Cross, {
|
|
112
|
-
width: "1.6rem",
|
|
113
|
-
height: "1.6rem"
|
|
114
|
-
}),
|
|
115
|
-
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
116
|
-
textColor: "danger600",
|
|
117
|
-
variant: "omega",
|
|
118
|
-
children: formatMessage({
|
|
119
|
-
id: 'content-releases.content-manager-edit-view.remove-from-release',
|
|
120
|
-
defaultMessage: 'Remove from release'
|
|
121
|
-
})
|
|
122
|
-
})
|
|
123
|
-
]
|
|
95
|
+
children: formatMessage({
|
|
96
|
+
id: 'content-releases.content-manager-edit-view.remove-from-release',
|
|
97
|
+
defaultMessage: 'Remove from release'
|
|
124
98
|
})
|
|
125
99
|
});
|
|
126
100
|
};
|
|
@@ -150,53 +124,30 @@ const ReleaseActionEntryLinkItem = ({ contentTypeUid, documentId, locale })=>{
|
|
|
150
124
|
if (!canUpdateContentType || !canUpdateEntryForLocale) {
|
|
151
125
|
return null;
|
|
152
126
|
}
|
|
153
|
-
return /*#__PURE__*/ jsxRuntime.jsx(
|
|
127
|
+
return /*#__PURE__*/ jsxRuntime.jsx(StyledMenuLink, {
|
|
154
128
|
/* @ts-expect-error inference isn't working in DS */ tag: reactRouterDom.NavLink,
|
|
155
129
|
isLink: true,
|
|
156
130
|
to: {
|
|
157
131
|
pathname: `/content-manager/collection-types/${contentTypeUid}/${documentId}`,
|
|
158
132
|
search: locale && `?plugins[i18n][locale]=${locale}`
|
|
159
133
|
},
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
width: "1.6rem",
|
|
165
|
-
height: "1.6rem"
|
|
166
|
-
}),
|
|
167
|
-
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
168
|
-
variant: "omega",
|
|
169
|
-
children: formatMessage({
|
|
170
|
-
id: 'content-releases.content-manager-edit-view.edit-entry',
|
|
171
|
-
defaultMessage: 'Edit entry'
|
|
172
|
-
})
|
|
173
|
-
})
|
|
174
|
-
]
|
|
134
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Pencil, {}),
|
|
135
|
+
children: formatMessage({
|
|
136
|
+
id: 'content-releases.content-manager-edit-view.edit-entry',
|
|
137
|
+
defaultMessage: 'Edit entry'
|
|
175
138
|
})
|
|
176
139
|
});
|
|
177
140
|
};
|
|
178
141
|
const EditReleaseItem = ({ releaseId })=>{
|
|
179
142
|
const { formatMessage } = reactIntl.useIntl();
|
|
180
|
-
return
|
|
181
|
-
tag: reactRouterDom.NavLink,
|
|
143
|
+
return /*#__PURE__*/ jsxRuntime.jsx(StyledMenuLink, {
|
|
144
|
+
/* @ts-expect-error inference isn't working in DS */ tag: reactRouterDom.NavLink,
|
|
182
145
|
isLink: true,
|
|
183
146
|
to: `/plugins/content-releases/${releaseId}`,
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
width: "1.6rem",
|
|
189
|
-
height: "1.6rem"
|
|
190
|
-
}),
|
|
191
|
-
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
192
|
-
textColor: "neutral800",
|
|
193
|
-
variant: "omega",
|
|
194
|
-
children: formatMessage({
|
|
195
|
-
id: 'content-releases.content-manager-edit-view.edit-release',
|
|
196
|
-
defaultMessage: 'Edit release'
|
|
197
|
-
})
|
|
198
|
-
})
|
|
199
|
-
]
|
|
147
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Pencil, {}),
|
|
148
|
+
children: formatMessage({
|
|
149
|
+
id: 'content-releases.content-manager-edit-view.edit-release',
|
|
150
|
+
defaultMessage: 'Edit release'
|
|
200
151
|
})
|
|
201
152
|
});
|
|
202
153
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReleaseActionMenu.js","sources":["../../../admin/src/components/ReleaseActionMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useAuth,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography, Menu, AccessibleIcon } from '@strapi/design-system';\nimport { Cross, More, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { DeleteReleaseAction, ReleaseAction } from '../../../shared/contracts/release-actions';\nimport { Release } from '../../../shared/contracts/releases';\nimport { PERMISSIONS } from '../constants';\nimport { useDeleteReleaseActionMutation } from '../services/release';\n\nconst StyledMenuItem = styled(Menu.Item)<{ $variant?: 'neutral' | 'danger' }>`\n &:hover {\n background: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}100`]};\n\n svg {\n fill: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}600`]};\n }\n\n a {\n color: ${({ theme }) => theme.colors.neutral800};\n }\n }\n\n svg {\n color: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}500`]};\n }\n\n span {\n color: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}800`]};\n }\n\n span,\n a {\n width: 100%;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteReleaseActionItemProps\n * -----------------------------------------------------------------------------------------------*/\ninterface DeleteReleaseActionItemProps {\n releaseId: DeleteReleaseAction.Request['params']['releaseId'];\n actionId: DeleteReleaseAction.Request['params']['actionId'];\n}\n\nconst DeleteReleaseActionItem = ({ releaseId, actionId }: DeleteReleaseActionItemProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [deleteReleaseAction] = useDeleteReleaseActionMutation();\n const {\n allowedActions: { canDeleteAction },\n } = useRBAC(PERMISSIONS);\n\n const handleDeleteAction = async () => {\n const response = await deleteReleaseAction({\n params: { releaseId, actionId },\n });\n\n if ('data' in response) {\n // Handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release.notification.success',\n defaultMessage: 'Entry removed from release',\n }),\n });\n\n return;\n }\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // Handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (!canDeleteAction) {\n return null;\n }\n\n return (\n <StyledMenuItem $variant=\"danger\" onSelect={handleDeleteAction}>\n <Flex gap={2}>\n <Cross width=\"1.6rem\" height=\"1.6rem\" />\n <Typography textColor=\"danger600\" variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release',\n defaultMessage: 'Remove from release',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseActionEntryLinkItem\n * -----------------------------------------------------------------------------------------------*/\ninterface ReleaseActionEntryLinkItemProps {\n contentTypeUid: ReleaseAction['contentType'];\n documentId: ReleaseAction['entry']['documentId'];\n locale: ReleaseAction['locale'];\n}\n\nconst ReleaseActionEntryLinkItem = ({\n contentTypeUid,\n documentId,\n locale,\n}: ReleaseActionEntryLinkItemProps) => {\n const { formatMessage } = useIntl();\n const userPermissions = useAuth('ReleaseActionEntryLinkItem', (state) => state.permissions);\n\n // Confirm user has permissions to access the entry for the given locale\n const canUpdateEntryForLocale = React.useMemo(() => {\n const updatePermissions = userPermissions.find(\n (permission) =>\n permission.subject === contentTypeUid &&\n permission.action === 'plugin::content-manager.explorer.update'\n );\n\n if (!updatePermissions) {\n return false;\n }\n\n return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));\n }, [contentTypeUid, locale, userPermissions]);\n\n const {\n allowedActions: { canUpdate: canUpdateContentType },\n } = useRBAC({\n updateContentType: [\n {\n action: 'plugin::content-manager.explorer.update',\n subject: contentTypeUid,\n },\n ],\n });\n\n if (!canUpdateContentType || !canUpdateEntryForLocale) {\n return null;\n }\n\n return (\n <StyledMenuItem\n /* @ts-expect-error inference isn't working in DS */\n tag={NavLink}\n isLink\n to={{\n pathname: `/content-manager/collection-types/${contentTypeUid}/${documentId}`,\n search: locale && `?plugins[i18n][locale]=${locale}`,\n }}\n >\n <Flex gap={2}>\n <Pencil width=\"1.6rem\" height=\"1.6rem\" />\n <Typography variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-entry',\n defaultMessage: 'Edit entry',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditReleaseItem\n * -----------------------------------------------------------------------------------------------*/\ninterface EditReleaseItemProps {\n releaseId: Release['id'];\n}\n\nconst EditReleaseItem = ({ releaseId }: EditReleaseItemProps) => {\n const { formatMessage } = useIntl();\n\n return (\n /* @ts-expect-error inference isn't working in DS */\n <StyledMenuItem tag={NavLink} isLink to={`/plugins/content-releases/${releaseId}`}>\n <Flex gap={2}>\n <Pencil width=\"1.6rem\" height=\"1.6rem\" />\n <Typography textColor=\"neutral800\" variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-release',\n defaultMessage: 'Edit release',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RootProps {\n children: React.ReactNode;\n hasTriggerBorder?: boolean;\n}\n\nconst Root = ({ children }: RootProps) => {\n const { formatMessage } = useIntl();\n\n const { allowedActions } = useRBAC(PERMISSIONS);\n\n return (\n // A user can access the dropdown if they have permissions to delete a release-action OR update a release\n allowedActions.canDeleteAction || allowedActions.canUpdate ? (\n <Menu.Root>\n <StyledMoreButton variant=\"tertiary\" endIcon={null} paddingLeft=\"7px\" paddingRight=\"7px\">\n <AccessibleIcon\n label={formatMessage({\n id: 'content-releases.content-manager-edit-view.release-action-menu',\n defaultMessage: 'Release action options',\n })}\n >\n <More />\n </AccessibleIcon>\n </StyledMoreButton>\n <Menu.Content top={1} popoverPlacement=\"bottom-end\">\n {children}\n </Menu.Content>\n </Menu.Root>\n ) : null\n );\n};\n\nconst StyledMoreButton = styled(Menu.Trigger)`\n & > span {\n display: flex;\n }\n`;\n\nexport const ReleaseActionMenu = {\n Root,\n EditReleaseItem,\n DeleteReleaseActionItem,\n ReleaseActionEntryLinkItem,\n};\n"],"names":["StyledMenuItem","styled","Menu","Item","theme","$variant","colors","neutral800","DeleteReleaseActionItem","releaseId","actionId","formatMessage","useIntl","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","deleteReleaseAction","useDeleteReleaseActionMutation","allowedActions","canDeleteAction","useRBAC","PERMISSIONS","handleDeleteAction","response","params","type","message","id","defaultMessage","isFetchError","error","_jsx","onSelect","_jsxs","Flex","gap","Cross","width","height","Typography","textColor","variant","ReleaseActionEntryLinkItem","contentTypeUid","documentId","locale","userPermissions","useAuth","state","permissions","canUpdateEntryForLocale","React","useMemo","updatePermissions","find","permission","subject","action","Boolean","properties","locales","includes","canUpdate","canUpdateContentType","updateContentType","tag","NavLink","isLink","to","pathname","search","Pencil","EditReleaseItem","Root","children","StyledMoreButton","endIcon","paddingLeft","paddingRight","AccessibleIcon","label","More","Content","top","popoverPlacement","Trigger","ReleaseActionMenu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReleaseActionMenu.js","sources":["../../../admin/src/components/ReleaseActionMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useAuth,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport { Menu, AccessibleIcon } from '@strapi/design-system';\nimport { Cross, More, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { DeleteReleaseAction, ReleaseAction } from '../../../shared/contracts/release-actions';\nimport { Release } from '../../../shared/contracts/releases';\nimport { PERMISSIONS } from '../constants';\nimport { useDeleteReleaseActionMutation } from '../services/release';\n\n// TODO: has to be fixed in the DS - https://github.com/strapi/design-system/issues/1934\nconst StyledMenuLink = styled(Menu.Item)`\n span,\n &:hover span {\n color: ${({ theme }) => theme.colors['neutral800']};\n }\n\n svg path,\n &:hover svg path {\n fill: ${({ theme }) => theme.colors['neutral500']};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteReleaseActionItemProps\n * -----------------------------------------------------------------------------------------------*/\ninterface DeleteReleaseActionItemProps {\n releaseId: DeleteReleaseAction.Request['params']['releaseId'];\n actionId: DeleteReleaseAction.Request['params']['actionId'];\n}\n\nconst DeleteReleaseActionItem = ({ releaseId, actionId }: DeleteReleaseActionItemProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [deleteReleaseAction] = useDeleteReleaseActionMutation();\n const {\n allowedActions: { canDeleteAction },\n } = useRBAC(PERMISSIONS);\n\n const handleDeleteAction = async () => {\n const response = await deleteReleaseAction({\n params: { releaseId, actionId },\n });\n\n if ('data' in response) {\n // Handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release.notification.success',\n defaultMessage: 'Entry removed from release',\n }),\n });\n\n return;\n }\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // Handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (!canDeleteAction) {\n return null;\n }\n\n return (\n <Menu.Item variant=\"danger\" startIcon={<Cross />} onSelect={handleDeleteAction}>\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release',\n defaultMessage: 'Remove from release',\n })}\n </Menu.Item>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseActionEntryLinkItem\n * -----------------------------------------------------------------------------------------------*/\ninterface ReleaseActionEntryLinkItemProps {\n contentTypeUid: ReleaseAction['contentType'];\n documentId: ReleaseAction['entry']['documentId'];\n locale: ReleaseAction['locale'];\n}\n\nconst ReleaseActionEntryLinkItem = ({\n contentTypeUid,\n documentId,\n locale,\n}: ReleaseActionEntryLinkItemProps) => {\n const { formatMessage } = useIntl();\n const userPermissions = useAuth('ReleaseActionEntryLinkItem', (state) => state.permissions);\n\n // Confirm user has permissions to access the entry for the given locale\n const canUpdateEntryForLocale = React.useMemo(() => {\n const updatePermissions = userPermissions.find(\n (permission) =>\n permission.subject === contentTypeUid &&\n permission.action === 'plugin::content-manager.explorer.update'\n );\n\n if (!updatePermissions) {\n return false;\n }\n\n return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));\n }, [contentTypeUid, locale, userPermissions]);\n\n const {\n allowedActions: { canUpdate: canUpdateContentType },\n } = useRBAC({\n updateContentType: [\n {\n action: 'plugin::content-manager.explorer.update',\n subject: contentTypeUid,\n },\n ],\n });\n\n if (!canUpdateContentType || !canUpdateEntryForLocale) {\n return null;\n }\n\n return (\n <StyledMenuLink\n /* @ts-expect-error inference isn't working in DS */\n tag={NavLink}\n isLink\n to={{\n pathname: `/content-manager/collection-types/${contentTypeUid}/${documentId}`,\n search: locale && `?plugins[i18n][locale]=${locale}`,\n }}\n startIcon={<Pencil />}\n >\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-entry',\n defaultMessage: 'Edit entry',\n })}\n </StyledMenuLink>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditReleaseItem\n * -----------------------------------------------------------------------------------------------*/\ninterface EditReleaseItemProps {\n releaseId: Release['id'];\n}\n\nconst EditReleaseItem = ({ releaseId }: EditReleaseItemProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <StyledMenuLink\n /* @ts-expect-error inference isn't working in DS */\n tag={NavLink}\n isLink\n to={`/plugins/content-releases/${releaseId}`}\n startIcon={<Pencil />}\n >\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-release',\n defaultMessage: 'Edit release',\n })}\n </StyledMenuLink>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RootProps {\n children: React.ReactNode;\n hasTriggerBorder?: boolean;\n}\n\nconst Root = ({ children }: RootProps) => {\n const { formatMessage } = useIntl();\n\n const { allowedActions } = useRBAC(PERMISSIONS);\n\n return (\n // A user can access the dropdown if they have permissions to delete a release-action OR update a release\n allowedActions.canDeleteAction || allowedActions.canUpdate ? (\n <Menu.Root>\n <StyledMoreButton variant=\"tertiary\" endIcon={null} paddingLeft=\"7px\" paddingRight=\"7px\">\n <AccessibleIcon\n label={formatMessage({\n id: 'content-releases.content-manager-edit-view.release-action-menu',\n defaultMessage: 'Release action options',\n })}\n >\n <More />\n </AccessibleIcon>\n </StyledMoreButton>\n <Menu.Content top={1} popoverPlacement=\"bottom-end\">\n {children}\n </Menu.Content>\n </Menu.Root>\n ) : null\n );\n};\n\nconst StyledMoreButton = styled(Menu.Trigger)`\n & > span {\n display: flex;\n }\n`;\n\nexport const ReleaseActionMenu = {\n Root,\n EditReleaseItem,\n DeleteReleaseActionItem,\n ReleaseActionEntryLinkItem,\n};\n"],"names":["StyledMenuLink","styled","Menu","Item","theme","colors","DeleteReleaseActionItem","releaseId","actionId","formatMessage","useIntl","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","deleteReleaseAction","useDeleteReleaseActionMutation","allowedActions","canDeleteAction","useRBAC","PERMISSIONS","handleDeleteAction","response","params","type","message","id","defaultMessage","isFetchError","error","_jsx","variant","startIcon","Cross","onSelect","ReleaseActionEntryLinkItem","contentTypeUid","documentId","locale","userPermissions","useAuth","state","permissions","canUpdateEntryForLocale","React","useMemo","updatePermissions","find","permission","subject","action","Boolean","properties","locales","includes","canUpdate","canUpdateContentType","updateContentType","tag","NavLink","isLink","to","pathname","search","Pencil","EditReleaseItem","Root","children","_jsxs","StyledMoreButton","endIcon","paddingLeft","paddingRight","AccessibleIcon","label","More","Content","top","popoverPlacement","Trigger","ReleaseActionMenu"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useNotification, useAPIErrorHandler, useRBAC, useAuth, isFetchError } from '@strapi/admin/strapi-admin';
|
|
4
|
-
import { Menu,
|
|
4
|
+
import { Menu, AccessibleIcon } from '@strapi/design-system';
|
|
5
5
|
import { Cross, Pencil, More } from '@strapi/icons';
|
|
6
6
|
import { useIntl } from 'react-intl';
|
|
7
7
|
import { NavLink } from 'react-router-dom';
|
|
@@ -9,30 +9,16 @@ import { styled } from 'styled-components';
|
|
|
9
9
|
import { PERMISSIONS } from '../constants.mjs';
|
|
10
10
|
import { useDeleteReleaseActionMutation } from '../services/release.mjs';
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
fill: ${({ theme, $variant = 'neutral' })=>theme.colors[`${$variant}600`]};
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
a {
|
|
21
|
-
color: ${({ theme })=>theme.colors.neutral800};
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
svg {
|
|
26
|
-
color: ${({ theme, $variant = 'neutral' })=>theme.colors[`${$variant}500`]};
|
|
12
|
+
// TODO: has to be fixed in the DS - https://github.com/strapi/design-system/issues/1934
|
|
13
|
+
const StyledMenuLink = styled(Menu.Item)`
|
|
14
|
+
span,
|
|
15
|
+
&:hover span {
|
|
16
|
+
color: ${({ theme })=>theme.colors['neutral800']};
|
|
27
17
|
}
|
|
28
18
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
span,
|
|
34
|
-
a {
|
|
35
|
-
width: 100%;
|
|
19
|
+
svg path,
|
|
20
|
+
&:hover svg path {
|
|
21
|
+
fill: ${({ theme })=>theme.colors['neutral500']};
|
|
36
22
|
}
|
|
37
23
|
`;
|
|
38
24
|
const DeleteReleaseActionItem = ({ releaseId, actionId })=>{
|
|
@@ -81,25 +67,13 @@ const DeleteReleaseActionItem = ({ releaseId, actionId })=>{
|
|
|
81
67
|
if (!canDeleteAction) {
|
|
82
68
|
return null;
|
|
83
69
|
}
|
|
84
|
-
return /*#__PURE__*/ jsx(
|
|
85
|
-
|
|
70
|
+
return /*#__PURE__*/ jsx(Menu.Item, {
|
|
71
|
+
variant: "danger",
|
|
72
|
+
startIcon: /*#__PURE__*/ jsx(Cross, {}),
|
|
86
73
|
onSelect: handleDeleteAction,
|
|
87
|
-
children:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
/*#__PURE__*/ jsx(Cross, {
|
|
91
|
-
width: "1.6rem",
|
|
92
|
-
height: "1.6rem"
|
|
93
|
-
}),
|
|
94
|
-
/*#__PURE__*/ jsx(Typography, {
|
|
95
|
-
textColor: "danger600",
|
|
96
|
-
variant: "omega",
|
|
97
|
-
children: formatMessage({
|
|
98
|
-
id: 'content-releases.content-manager-edit-view.remove-from-release',
|
|
99
|
-
defaultMessage: 'Remove from release'
|
|
100
|
-
})
|
|
101
|
-
})
|
|
102
|
-
]
|
|
74
|
+
children: formatMessage({
|
|
75
|
+
id: 'content-releases.content-manager-edit-view.remove-from-release',
|
|
76
|
+
defaultMessage: 'Remove from release'
|
|
103
77
|
})
|
|
104
78
|
});
|
|
105
79
|
};
|
|
@@ -129,53 +103,30 @@ const ReleaseActionEntryLinkItem = ({ contentTypeUid, documentId, locale })=>{
|
|
|
129
103
|
if (!canUpdateContentType || !canUpdateEntryForLocale) {
|
|
130
104
|
return null;
|
|
131
105
|
}
|
|
132
|
-
return /*#__PURE__*/ jsx(
|
|
106
|
+
return /*#__PURE__*/ jsx(StyledMenuLink, {
|
|
133
107
|
/* @ts-expect-error inference isn't working in DS */ tag: NavLink,
|
|
134
108
|
isLink: true,
|
|
135
109
|
to: {
|
|
136
110
|
pathname: `/content-manager/collection-types/${contentTypeUid}/${documentId}`,
|
|
137
111
|
search: locale && `?plugins[i18n][locale]=${locale}`
|
|
138
112
|
},
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
width: "1.6rem",
|
|
144
|
-
height: "1.6rem"
|
|
145
|
-
}),
|
|
146
|
-
/*#__PURE__*/ jsx(Typography, {
|
|
147
|
-
variant: "omega",
|
|
148
|
-
children: formatMessage({
|
|
149
|
-
id: 'content-releases.content-manager-edit-view.edit-entry',
|
|
150
|
-
defaultMessage: 'Edit entry'
|
|
151
|
-
})
|
|
152
|
-
})
|
|
153
|
-
]
|
|
113
|
+
startIcon: /*#__PURE__*/ jsx(Pencil, {}),
|
|
114
|
+
children: formatMessage({
|
|
115
|
+
id: 'content-releases.content-manager-edit-view.edit-entry',
|
|
116
|
+
defaultMessage: 'Edit entry'
|
|
154
117
|
})
|
|
155
118
|
});
|
|
156
119
|
};
|
|
157
120
|
const EditReleaseItem = ({ releaseId })=>{
|
|
158
121
|
const { formatMessage } = useIntl();
|
|
159
|
-
return
|
|
160
|
-
tag: NavLink,
|
|
122
|
+
return /*#__PURE__*/ jsx(StyledMenuLink, {
|
|
123
|
+
/* @ts-expect-error inference isn't working in DS */ tag: NavLink,
|
|
161
124
|
isLink: true,
|
|
162
125
|
to: `/plugins/content-releases/${releaseId}`,
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
width: "1.6rem",
|
|
168
|
-
height: "1.6rem"
|
|
169
|
-
}),
|
|
170
|
-
/*#__PURE__*/ jsx(Typography, {
|
|
171
|
-
textColor: "neutral800",
|
|
172
|
-
variant: "omega",
|
|
173
|
-
children: formatMessage({
|
|
174
|
-
id: 'content-releases.content-manager-edit-view.edit-release',
|
|
175
|
-
defaultMessage: 'Edit release'
|
|
176
|
-
})
|
|
177
|
-
})
|
|
178
|
-
]
|
|
126
|
+
startIcon: /*#__PURE__*/ jsx(Pencil, {}),
|
|
127
|
+
children: formatMessage({
|
|
128
|
+
id: 'content-releases.content-manager-edit-view.edit-release',
|
|
129
|
+
defaultMessage: 'Edit release'
|
|
179
130
|
})
|
|
180
131
|
});
|
|
181
132
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReleaseActionMenu.mjs","sources":["../../../admin/src/components/ReleaseActionMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useAuth,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography, Menu, AccessibleIcon } from '@strapi/design-system';\nimport { Cross, More, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { DeleteReleaseAction, ReleaseAction } from '../../../shared/contracts/release-actions';\nimport { Release } from '../../../shared/contracts/releases';\nimport { PERMISSIONS } from '../constants';\nimport { useDeleteReleaseActionMutation } from '../services/release';\n\nconst StyledMenuItem = styled(Menu.Item)<{ $variant?: 'neutral' | 'danger' }>`\n &:hover {\n background: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}100`]};\n\n svg {\n fill: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}600`]};\n }\n\n a {\n color: ${({ theme }) => theme.colors.neutral800};\n }\n }\n\n svg {\n color: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}500`]};\n }\n\n span {\n color: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}800`]};\n }\n\n span,\n a {\n width: 100%;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteReleaseActionItemProps\n * -----------------------------------------------------------------------------------------------*/\ninterface DeleteReleaseActionItemProps {\n releaseId: DeleteReleaseAction.Request['params']['releaseId'];\n actionId: DeleteReleaseAction.Request['params']['actionId'];\n}\n\nconst DeleteReleaseActionItem = ({ releaseId, actionId }: DeleteReleaseActionItemProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [deleteReleaseAction] = useDeleteReleaseActionMutation();\n const {\n allowedActions: { canDeleteAction },\n } = useRBAC(PERMISSIONS);\n\n const handleDeleteAction = async () => {\n const response = await deleteReleaseAction({\n params: { releaseId, actionId },\n });\n\n if ('data' in response) {\n // Handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release.notification.success',\n defaultMessage: 'Entry removed from release',\n }),\n });\n\n return;\n }\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // Handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (!canDeleteAction) {\n return null;\n }\n\n return (\n <StyledMenuItem $variant=\"danger\" onSelect={handleDeleteAction}>\n <Flex gap={2}>\n <Cross width=\"1.6rem\" height=\"1.6rem\" />\n <Typography textColor=\"danger600\" variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release',\n defaultMessage: 'Remove from release',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseActionEntryLinkItem\n * -----------------------------------------------------------------------------------------------*/\ninterface ReleaseActionEntryLinkItemProps {\n contentTypeUid: ReleaseAction['contentType'];\n documentId: ReleaseAction['entry']['documentId'];\n locale: ReleaseAction['locale'];\n}\n\nconst ReleaseActionEntryLinkItem = ({\n contentTypeUid,\n documentId,\n locale,\n}: ReleaseActionEntryLinkItemProps) => {\n const { formatMessage } = useIntl();\n const userPermissions = useAuth('ReleaseActionEntryLinkItem', (state) => state.permissions);\n\n // Confirm user has permissions to access the entry for the given locale\n const canUpdateEntryForLocale = React.useMemo(() => {\n const updatePermissions = userPermissions.find(\n (permission) =>\n permission.subject === contentTypeUid &&\n permission.action === 'plugin::content-manager.explorer.update'\n );\n\n if (!updatePermissions) {\n return false;\n }\n\n return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));\n }, [contentTypeUid, locale, userPermissions]);\n\n const {\n allowedActions: { canUpdate: canUpdateContentType },\n } = useRBAC({\n updateContentType: [\n {\n action: 'plugin::content-manager.explorer.update',\n subject: contentTypeUid,\n },\n ],\n });\n\n if (!canUpdateContentType || !canUpdateEntryForLocale) {\n return null;\n }\n\n return (\n <StyledMenuItem\n /* @ts-expect-error inference isn't working in DS */\n tag={NavLink}\n isLink\n to={{\n pathname: `/content-manager/collection-types/${contentTypeUid}/${documentId}`,\n search: locale && `?plugins[i18n][locale]=${locale}`,\n }}\n >\n <Flex gap={2}>\n <Pencil width=\"1.6rem\" height=\"1.6rem\" />\n <Typography variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-entry',\n defaultMessage: 'Edit entry',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditReleaseItem\n * -----------------------------------------------------------------------------------------------*/\ninterface EditReleaseItemProps {\n releaseId: Release['id'];\n}\n\nconst EditReleaseItem = ({ releaseId }: EditReleaseItemProps) => {\n const { formatMessage } = useIntl();\n\n return (\n /* @ts-expect-error inference isn't working in DS */\n <StyledMenuItem tag={NavLink} isLink to={`/plugins/content-releases/${releaseId}`}>\n <Flex gap={2}>\n <Pencil width=\"1.6rem\" height=\"1.6rem\" />\n <Typography textColor=\"neutral800\" variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-release',\n defaultMessage: 'Edit release',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RootProps {\n children: React.ReactNode;\n hasTriggerBorder?: boolean;\n}\n\nconst Root = ({ children }: RootProps) => {\n const { formatMessage } = useIntl();\n\n const { allowedActions } = useRBAC(PERMISSIONS);\n\n return (\n // A user can access the dropdown if they have permissions to delete a release-action OR update a release\n allowedActions.canDeleteAction || allowedActions.canUpdate ? (\n <Menu.Root>\n <StyledMoreButton variant=\"tertiary\" endIcon={null} paddingLeft=\"7px\" paddingRight=\"7px\">\n <AccessibleIcon\n label={formatMessage({\n id: 'content-releases.content-manager-edit-view.release-action-menu',\n defaultMessage: 'Release action options',\n })}\n >\n <More />\n </AccessibleIcon>\n </StyledMoreButton>\n <Menu.Content top={1} popoverPlacement=\"bottom-end\">\n {children}\n </Menu.Content>\n </Menu.Root>\n ) : null\n );\n};\n\nconst StyledMoreButton = styled(Menu.Trigger)`\n & > span {\n display: flex;\n }\n`;\n\nexport const ReleaseActionMenu = {\n Root,\n EditReleaseItem,\n DeleteReleaseActionItem,\n ReleaseActionEntryLinkItem,\n};\n"],"names":["StyledMenuItem","styled","Menu","Item","theme","$variant","colors","neutral800","DeleteReleaseActionItem","releaseId","actionId","formatMessage","useIntl","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","deleteReleaseAction","useDeleteReleaseActionMutation","allowedActions","canDeleteAction","useRBAC","PERMISSIONS","handleDeleteAction","response","params","type","message","id","defaultMessage","isFetchError","error","_jsx","onSelect","_jsxs","Flex","gap","Cross","width","height","Typography","textColor","variant","ReleaseActionEntryLinkItem","contentTypeUid","documentId","locale","userPermissions","useAuth","state","permissions","canUpdateEntryForLocale","React","useMemo","updatePermissions","find","permission","subject","action","Boolean","properties","locales","includes","canUpdate","canUpdateContentType","updateContentType","tag","NavLink","isLink","to","pathname","search","Pencil","EditReleaseItem","Root","children","StyledMoreButton","endIcon","paddingLeft","paddingRight","AccessibleIcon","label","More","Content","top","popoverPlacement","Trigger","ReleaseActionMenu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReleaseActionMenu.mjs","sources":["../../../admin/src/components/ReleaseActionMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useAuth,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport { Menu, AccessibleIcon } from '@strapi/design-system';\nimport { Cross, More, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { DeleteReleaseAction, ReleaseAction } from '../../../shared/contracts/release-actions';\nimport { Release } from '../../../shared/contracts/releases';\nimport { PERMISSIONS } from '../constants';\nimport { useDeleteReleaseActionMutation } from '../services/release';\n\n// TODO: has to be fixed in the DS - https://github.com/strapi/design-system/issues/1934\nconst StyledMenuLink = styled(Menu.Item)`\n span,\n &:hover span {\n color: ${({ theme }) => theme.colors['neutral800']};\n }\n\n svg path,\n &:hover svg path {\n fill: ${({ theme }) => theme.colors['neutral500']};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteReleaseActionItemProps\n * -----------------------------------------------------------------------------------------------*/\ninterface DeleteReleaseActionItemProps {\n releaseId: DeleteReleaseAction.Request['params']['releaseId'];\n actionId: DeleteReleaseAction.Request['params']['actionId'];\n}\n\nconst DeleteReleaseActionItem = ({ releaseId, actionId }: DeleteReleaseActionItemProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [deleteReleaseAction] = useDeleteReleaseActionMutation();\n const {\n allowedActions: { canDeleteAction },\n } = useRBAC(PERMISSIONS);\n\n const handleDeleteAction = async () => {\n const response = await deleteReleaseAction({\n params: { releaseId, actionId },\n });\n\n if ('data' in response) {\n // Handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release.notification.success',\n defaultMessage: 'Entry removed from release',\n }),\n });\n\n return;\n }\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // Handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (!canDeleteAction) {\n return null;\n }\n\n return (\n <Menu.Item variant=\"danger\" startIcon={<Cross />} onSelect={handleDeleteAction}>\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release',\n defaultMessage: 'Remove from release',\n })}\n </Menu.Item>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseActionEntryLinkItem\n * -----------------------------------------------------------------------------------------------*/\ninterface ReleaseActionEntryLinkItemProps {\n contentTypeUid: ReleaseAction['contentType'];\n documentId: ReleaseAction['entry']['documentId'];\n locale: ReleaseAction['locale'];\n}\n\nconst ReleaseActionEntryLinkItem = ({\n contentTypeUid,\n documentId,\n locale,\n}: ReleaseActionEntryLinkItemProps) => {\n const { formatMessage } = useIntl();\n const userPermissions = useAuth('ReleaseActionEntryLinkItem', (state) => state.permissions);\n\n // Confirm user has permissions to access the entry for the given locale\n const canUpdateEntryForLocale = React.useMemo(() => {\n const updatePermissions = userPermissions.find(\n (permission) =>\n permission.subject === contentTypeUid &&\n permission.action === 'plugin::content-manager.explorer.update'\n );\n\n if (!updatePermissions) {\n return false;\n }\n\n return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));\n }, [contentTypeUid, locale, userPermissions]);\n\n const {\n allowedActions: { canUpdate: canUpdateContentType },\n } = useRBAC({\n updateContentType: [\n {\n action: 'plugin::content-manager.explorer.update',\n subject: contentTypeUid,\n },\n ],\n });\n\n if (!canUpdateContentType || !canUpdateEntryForLocale) {\n return null;\n }\n\n return (\n <StyledMenuLink\n /* @ts-expect-error inference isn't working in DS */\n tag={NavLink}\n isLink\n to={{\n pathname: `/content-manager/collection-types/${contentTypeUid}/${documentId}`,\n search: locale && `?plugins[i18n][locale]=${locale}`,\n }}\n startIcon={<Pencil />}\n >\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-entry',\n defaultMessage: 'Edit entry',\n })}\n </StyledMenuLink>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditReleaseItem\n * -----------------------------------------------------------------------------------------------*/\ninterface EditReleaseItemProps {\n releaseId: Release['id'];\n}\n\nconst EditReleaseItem = ({ releaseId }: EditReleaseItemProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <StyledMenuLink\n /* @ts-expect-error inference isn't working in DS */\n tag={NavLink}\n isLink\n to={`/plugins/content-releases/${releaseId}`}\n startIcon={<Pencil />}\n >\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-release',\n defaultMessage: 'Edit release',\n })}\n </StyledMenuLink>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RootProps {\n children: React.ReactNode;\n hasTriggerBorder?: boolean;\n}\n\nconst Root = ({ children }: RootProps) => {\n const { formatMessage } = useIntl();\n\n const { allowedActions } = useRBAC(PERMISSIONS);\n\n return (\n // A user can access the dropdown if they have permissions to delete a release-action OR update a release\n allowedActions.canDeleteAction || allowedActions.canUpdate ? (\n <Menu.Root>\n <StyledMoreButton variant=\"tertiary\" endIcon={null} paddingLeft=\"7px\" paddingRight=\"7px\">\n <AccessibleIcon\n label={formatMessage({\n id: 'content-releases.content-manager-edit-view.release-action-menu',\n defaultMessage: 'Release action options',\n })}\n >\n <More />\n </AccessibleIcon>\n </StyledMoreButton>\n <Menu.Content top={1} popoverPlacement=\"bottom-end\">\n {children}\n </Menu.Content>\n </Menu.Root>\n ) : null\n );\n};\n\nconst StyledMoreButton = styled(Menu.Trigger)`\n & > span {\n display: flex;\n }\n`;\n\nexport const ReleaseActionMenu = {\n Root,\n EditReleaseItem,\n DeleteReleaseActionItem,\n ReleaseActionEntryLinkItem,\n};\n"],"names":["StyledMenuLink","styled","Menu","Item","theme","colors","DeleteReleaseActionItem","releaseId","actionId","formatMessage","useIntl","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","deleteReleaseAction","useDeleteReleaseActionMutation","allowedActions","canDeleteAction","useRBAC","PERMISSIONS","handleDeleteAction","response","params","type","message","id","defaultMessage","isFetchError","error","_jsx","variant","startIcon","Cross","onSelect","ReleaseActionEntryLinkItem","contentTypeUid","documentId","locale","userPermissions","useAuth","state","permissions","canUpdateEntryForLocale","React","useMemo","updatePermissions","find","permission","subject","action","Boolean","properties","locales","includes","canUpdate","canUpdateContentType","updateContentType","tag","NavLink","isLink","to","pathname","search","Pencil","EditReleaseItem","Root","children","_jsxs","StyledMoreButton","endIcon","paddingLeft","paddingRight","AccessibleIcon","label","More","Content","top","popoverPlacement","Trigger","ReleaseActionMenu"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReleaseActionOptions.js","sources":["../../../admin/src/components/ReleaseActionOptions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { VisuallyHidden, Field, Flex } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface FieldWrapperProps extends Field.Props {\n actionType: 'publish' | 'unpublish';\n}\n\nconst getBorderLeftRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 1 : 0;\n};\n\nconst getBorderRightRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 0 : 1;\n};\n\nconst FieldWrapper = styled(Field.Root)<{\n $actionType: 'publish' | 'unpublish';\n}>`\n border-top-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-bottom-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-top-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n border-bottom-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n\n > label {\n color: inherit;\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[3]}`};\n text-align: center;\n vertical-align: middle;\n text-transform: capitalize;\n }\n\n &[data-checked='true'] {\n color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n background-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary100 : theme.colors.danger100};\n border-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n }\n\n &[data-checked='false'] {\n border-left: ${({ $actionType }) => $actionType === 'unpublish' && 'none'};\n border-right: ${({ $actionType }) => $actionType === 'publish' && 'none'};\n }\n\n &[data-checked='false'][data-disabled='false']:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n background-color: ${({ theme }) => theme.colors.neutral100};\n border-color: ${({ theme }) => theme.colors.neutral200};\n\n & > label {\n cursor: pointer;\n }\n }\n\n &[data-disabled='true'] {\n color: ${({ theme }) => theme.colors.neutral600};\n background-color: ${({ theme }) => theme.colors.neutral150};\n border-color: ${({ theme }) => theme.colors.neutral300};\n }\n`;\n\ninterface ActionOptionProps {\n selected: 'publish' | 'unpublish';\n handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n name: string;\n disabled?: boolean;\n}\n\ninterface OptionProps extends ActionOptionProps {\n actionType: 'publish' | 'unpublish';\n}\n\nconst ActionOption = ({\n selected,\n actionType,\n handleChange,\n name,\n disabled = false,\n}: OptionProps) => {\n return (\n <FieldWrapper\n $actionType={actionType}\n background=\"primary0\"\n borderColor=\"neutral200\"\n color={selected === actionType ? 'primary600' : 'neutral600'}\n position=\"relative\"\n cursor=\"pointer\"\n data-checked={selected === actionType}\n data-disabled={disabled && selected !== actionType}\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n name={name}\n checked={selected === actionType}\n onChange={handleChange}\n value={actionType}\n disabled={disabled}\n />\n </VisuallyHidden>\n {actionType}\n </Field.Label>\n </FieldWrapper>\n );\n};\n\nexport const ReleaseActionOptions = ({\n selected,\n handleChange,\n name,\n disabled = false,\n}: ActionOptionProps) => {\n return (\n <Flex>\n <ActionOption\n actionType=\"publish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n <ActionOption\n actionType=\"unpublish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n </Flex>\n );\n};\n"],"names":["getBorderLeftRadiusValue","actionType","getBorderRightRadiusValue","FieldWrapper","styled","Field","Root","$actionType","theme","spaces","colors","primary700","danger600","primary100","danger100","neutral700","neutral100","neutral200","neutral600","neutral150","neutral300","ActionOption","selected","handleChange","name","disabled","_jsx","background","borderColor","color","position","cursor","data-checked","data-disabled","_jsxs","Label","VisuallyHidden","Input","type","checked","onChange","value","ReleaseActionOptions","Flex"],"mappings":";;;;;;;AASA,MAAMA,2BAA2B,CAACC,UAAAA,GAAAA;IAChC,OAAOA,UAAAA,KAAe,YAAY,CAAI,GAAA,CAAA;AACxC,CAAA;AAEA,MAAMC,4BAA4B,CAACD,UAAAA,GAAAA;IACjC,OAAOA,UAAAA,KAAe,YAAY,CAAI,GAAA,CAAA;AACxC,CAAA;AAEA,MAAME,YAAeC,GAAAA,uBAAAA,CAAOC,kBAAMC,CAAAA,IAAI,CAEpC;AACwB,0BAAA,EAAE,CAAC,EAAEC,WAAW,EAAEC,KAAK,EAAE,GAC/CA,KAAAA,CAAMC,MAAM,CAACT,wBAAyBO,CAAAA,WAAAA,CAAAA,CAAa,CAAC;AAC3B,6BAAA,EAAE,CAAC,EAAEA,WAAW,EAAEC,KAAK,EAAE,GAClDA,KAAAA,CAAMC,MAAM,CAACT,wBAAyBO,CAAAA,WAAAA,CAAAA,CAAa,CAAC;AAC7B,2BAAA,EAAE,CAAC,EAAEA,WAAW,EAAEC,KAAK,EAAE,GAChDA,KAAAA,CAAMC,MAAM,CAACP,yBAA0BK,CAAAA,WAAAA,CAAAA,CAAa,CAAC;AAC3B,8BAAA,EAAE,CAAC,EAAEA,WAAW,EAAEC,KAAK,EAAE,GACnDA,KAAAA,CAAMC,MAAM,CAACP,yBAA0BK,CAAAA,WAAAA,CAAAA,CAAa,CAAC;;;;
|
|
1
|
+
{"version":3,"file":"ReleaseActionOptions.js","sources":["../../../admin/src/components/ReleaseActionOptions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { VisuallyHidden, Field, Flex } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface FieldWrapperProps extends Field.Props {\n actionType: 'publish' | 'unpublish';\n}\n\nconst getBorderLeftRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 1 : 0;\n};\n\nconst getBorderRightRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 0 : 1;\n};\n\nconst FieldWrapper = styled(Field.Root)<{\n $actionType: 'publish' | 'unpublish';\n}>`\n border-top-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-bottom-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-top-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n border-bottom-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n\n > label {\n color: inherit;\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[3]}`};\n text-align: center;\n vertical-align: middle;\n text-transform: capitalize;\n }\n\n &[data-checked='true'] {\n color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n background-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary100 : theme.colors.danger100};\n border-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n }\n\n &[data-checked='false'] {\n border-left: ${({ $actionType }) => $actionType === 'unpublish' && 'none'};\n border-right: ${({ $actionType }) => $actionType === 'publish' && 'none'};\n }\n\n &[data-checked='false'][data-disabled='false']:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n background-color: ${({ theme }) => theme.colors.neutral100};\n border-color: ${({ theme }) => theme.colors.neutral200};\n\n & > label {\n cursor: pointer;\n }\n }\n\n &[data-disabled='true'] {\n color: ${({ theme }) => theme.colors.neutral600};\n background-color: ${({ theme }) => theme.colors.neutral150};\n border-color: ${({ theme }) => theme.colors.neutral300};\n }\n`;\n\ninterface ActionOptionProps {\n selected: 'publish' | 'unpublish';\n handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n name: string;\n disabled?: boolean;\n}\n\ninterface OptionProps extends ActionOptionProps {\n actionType: 'publish' | 'unpublish';\n}\n\nconst ActionOption = ({\n selected,\n actionType,\n handleChange,\n name,\n disabled = false,\n}: OptionProps) => {\n return (\n <FieldWrapper\n $actionType={actionType}\n background=\"primary0\"\n borderColor=\"neutral200\"\n color={selected === actionType ? 'primary600' : 'neutral600'}\n position=\"relative\"\n cursor=\"pointer\"\n data-checked={selected === actionType}\n data-disabled={disabled && selected !== actionType}\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n name={name}\n checked={selected === actionType}\n onChange={handleChange}\n value={actionType}\n disabled={disabled}\n />\n </VisuallyHidden>\n {actionType}\n </Field.Label>\n </FieldWrapper>\n );\n};\n\nexport const ReleaseActionOptions = ({\n selected,\n handleChange,\n name,\n disabled = false,\n}: ActionOptionProps) => {\n return (\n <Flex>\n <ActionOption\n actionType=\"publish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n <ActionOption\n actionType=\"unpublish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n </Flex>\n );\n};\n"],"names":["getBorderLeftRadiusValue","actionType","getBorderRightRadiusValue","FieldWrapper","styled","Field","Root","$actionType","theme","spaces","colors","primary700","danger600","primary100","danger100","neutral700","neutral100","neutral200","neutral600","neutral150","neutral300","ActionOption","selected","handleChange","name","disabled","_jsx","background","borderColor","color","position","cursor","data-checked","data-disabled","_jsxs","Label","VisuallyHidden","Input","type","checked","onChange","value","ReleaseActionOptions","Flex"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReleaseActionOptions.mjs","sources":["../../../admin/src/components/ReleaseActionOptions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { VisuallyHidden, Field, Flex } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface FieldWrapperProps extends Field.Props {\n actionType: 'publish' | 'unpublish';\n}\n\nconst getBorderLeftRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 1 : 0;\n};\n\nconst getBorderRightRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 0 : 1;\n};\n\nconst FieldWrapper = styled(Field.Root)<{\n $actionType: 'publish' | 'unpublish';\n}>`\n border-top-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-bottom-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-top-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n border-bottom-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n\n > label {\n color: inherit;\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[3]}`};\n text-align: center;\n vertical-align: middle;\n text-transform: capitalize;\n }\n\n &[data-checked='true'] {\n color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n background-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary100 : theme.colors.danger100};\n border-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n }\n\n &[data-checked='false'] {\n border-left: ${({ $actionType }) => $actionType === 'unpublish' && 'none'};\n border-right: ${({ $actionType }) => $actionType === 'publish' && 'none'};\n }\n\n &[data-checked='false'][data-disabled='false']:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n background-color: ${({ theme }) => theme.colors.neutral100};\n border-color: ${({ theme }) => theme.colors.neutral200};\n\n & > label {\n cursor: pointer;\n }\n }\n\n &[data-disabled='true'] {\n color: ${({ theme }) => theme.colors.neutral600};\n background-color: ${({ theme }) => theme.colors.neutral150};\n border-color: ${({ theme }) => theme.colors.neutral300};\n }\n`;\n\ninterface ActionOptionProps {\n selected: 'publish' | 'unpublish';\n handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n name: string;\n disabled?: boolean;\n}\n\ninterface OptionProps extends ActionOptionProps {\n actionType: 'publish' | 'unpublish';\n}\n\nconst ActionOption = ({\n selected,\n actionType,\n handleChange,\n name,\n disabled = false,\n}: OptionProps) => {\n return (\n <FieldWrapper\n $actionType={actionType}\n background=\"primary0\"\n borderColor=\"neutral200\"\n color={selected === actionType ? 'primary600' : 'neutral600'}\n position=\"relative\"\n cursor=\"pointer\"\n data-checked={selected === actionType}\n data-disabled={disabled && selected !== actionType}\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n name={name}\n checked={selected === actionType}\n onChange={handleChange}\n value={actionType}\n disabled={disabled}\n />\n </VisuallyHidden>\n {actionType}\n </Field.Label>\n </FieldWrapper>\n );\n};\n\nexport const ReleaseActionOptions = ({\n selected,\n handleChange,\n name,\n disabled = false,\n}: ActionOptionProps) => {\n return (\n <Flex>\n <ActionOption\n actionType=\"publish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n <ActionOption\n actionType=\"unpublish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n </Flex>\n );\n};\n"],"names":["getBorderLeftRadiusValue","actionType","getBorderRightRadiusValue","FieldWrapper","styled","Field","Root","$actionType","theme","spaces","colors","primary700","danger600","primary100","danger100","neutral700","neutral100","neutral200","neutral600","neutral150","neutral300","ActionOption","selected","handleChange","name","disabled","_jsx","background","borderColor","color","position","cursor","data-checked","data-disabled","_jsxs","Label","VisuallyHidden","Input","type","checked","onChange","value","ReleaseActionOptions","Flex"],"mappings":";;;;;AASA,MAAMA,2BAA2B,CAACC,UAAAA,GAAAA;IAChC,OAAOA,UAAAA,KAAe,YAAY,CAAI,GAAA,CAAA;AACxC,CAAA;AAEA,MAAMC,4BAA4B,CAACD,UAAAA,GAAAA;IACjC,OAAOA,UAAAA,KAAe,YAAY,CAAI,GAAA,CAAA;AACxC,CAAA;AAEA,MAAME,YAAeC,GAAAA,MAAAA,CAAOC,KAAMC,CAAAA,IAAI,CAEpC;AACwB,0BAAA,EAAE,CAAC,EAAEC,WAAW,EAAEC,KAAK,EAAE,GAC/CA,KAAAA,CAAMC,MAAM,CAACT,wBAAyBO,CAAAA,WAAAA,CAAAA,CAAa,CAAC;AAC3B,6BAAA,EAAE,CAAC,EAAEA,WAAW,EAAEC,KAAK,EAAE,GAClDA,KAAAA,CAAMC,MAAM,CAACT,wBAAyBO,CAAAA,WAAAA,CAAAA,CAAa,CAAC;AAC7B,2BAAA,EAAE,CAAC,EAAEA,WAAW,EAAEC,KAAK,EAAE,GAChDA,KAAAA,CAAMC,MAAM,CAACP,yBAA0BK,CAAAA,WAAAA,CAAAA,CAAa,CAAC;AAC3B,8BAAA,EAAE,CAAC,EAAEA,WAAW,EAAEC,KAAK,EAAE,GACnDA,KAAAA,CAAMC,MAAM,CAACP,yBAA0BK,CAAAA,WAAAA,CAAAA,CAAa,CAAC;;;;
|
|
1
|
+
{"version":3,"file":"ReleaseActionOptions.mjs","sources":["../../../admin/src/components/ReleaseActionOptions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { VisuallyHidden, Field, Flex } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface FieldWrapperProps extends Field.Props {\n actionType: 'publish' | 'unpublish';\n}\n\nconst getBorderLeftRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 1 : 0;\n};\n\nconst getBorderRightRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 0 : 1;\n};\n\nconst FieldWrapper = styled(Field.Root)<{\n $actionType: 'publish' | 'unpublish';\n}>`\n border-top-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-bottom-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-top-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n border-bottom-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n\n > label {\n color: inherit;\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[3]}`};\n text-align: center;\n vertical-align: middle;\n text-transform: capitalize;\n }\n\n &[data-checked='true'] {\n color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n background-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary100 : theme.colors.danger100};\n border-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n }\n\n &[data-checked='false'] {\n border-left: ${({ $actionType }) => $actionType === 'unpublish' && 'none'};\n border-right: ${({ $actionType }) => $actionType === 'publish' && 'none'};\n }\n\n &[data-checked='false'][data-disabled='false']:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n background-color: ${({ theme }) => theme.colors.neutral100};\n border-color: ${({ theme }) => theme.colors.neutral200};\n\n & > label {\n cursor: pointer;\n }\n }\n\n &[data-disabled='true'] {\n color: ${({ theme }) => theme.colors.neutral600};\n background-color: ${({ theme }) => theme.colors.neutral150};\n border-color: ${({ theme }) => theme.colors.neutral300};\n }\n`;\n\ninterface ActionOptionProps {\n selected: 'publish' | 'unpublish';\n handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n name: string;\n disabled?: boolean;\n}\n\ninterface OptionProps extends ActionOptionProps {\n actionType: 'publish' | 'unpublish';\n}\n\nconst ActionOption = ({\n selected,\n actionType,\n handleChange,\n name,\n disabled = false,\n}: OptionProps) => {\n return (\n <FieldWrapper\n $actionType={actionType}\n background=\"primary0\"\n borderColor=\"neutral200\"\n color={selected === actionType ? 'primary600' : 'neutral600'}\n position=\"relative\"\n cursor=\"pointer\"\n data-checked={selected === actionType}\n data-disabled={disabled && selected !== actionType}\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n name={name}\n checked={selected === actionType}\n onChange={handleChange}\n value={actionType}\n disabled={disabled}\n />\n </VisuallyHidden>\n {actionType}\n </Field.Label>\n </FieldWrapper>\n );\n};\n\nexport const ReleaseActionOptions = ({\n selected,\n handleChange,\n name,\n disabled = false,\n}: ActionOptionProps) => {\n return (\n <Flex>\n <ActionOption\n actionType=\"publish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n <ActionOption\n actionType=\"unpublish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n </Flex>\n );\n};\n"],"names":["getBorderLeftRadiusValue","actionType","getBorderRightRadiusValue","FieldWrapper","styled","Field","Root","$actionType","theme","spaces","colors","primary700","danger600","primary100","danger100","neutral700","neutral100","neutral200","neutral600","neutral150","neutral300","ActionOption","selected","handleChange","name","disabled","_jsx","background","borderColor","color","position","cursor","data-checked","data-disabled","_jsxs","Label","VisuallyHidden","Input","type","checked","onChange","value","ReleaseActionOptions","Flex"],"mappings":"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"}
|
|
@@ -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":"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
|
|
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":"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"}
|