139 lines
6.7 KiB
JavaScript
139 lines
6.7 KiB
JavaScript
'use strict';
|
|
|
|
var jsxRuntime = require('react/jsx-runtime');
|
|
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
var strapiAdmin$1 = require('@strapi/content-manager/strapi-admin');
|
|
var designSystem = require('@strapi/design-system');
|
|
var reactIntl = require('react-intl');
|
|
var constants = require('../constants.js');
|
|
var release = require('../services/release.js');
|
|
var time = require('../utils/time.js');
|
|
var ReleaseActionMenu = require('./ReleaseActionMenu.js');
|
|
|
|
const Panel = ({ model, document, documentId, collectionType })=>{
|
|
const [{ query }] = strapiAdmin.useQueryParams();
|
|
const locale = query.plugins?.i18n?.locale;
|
|
const { edit: { options } } = strapiAdmin$1.unstable_useDocumentLayout(model);
|
|
const { formatMessage, formatDate, formatTime } = reactIntl.useIntl();
|
|
const { allowedActions } = strapiAdmin.useRBAC(constants.PERMISSIONS);
|
|
const { canRead, canDeleteAction } = allowedActions;
|
|
const response = release.useGetReleasesForEntryQuery({
|
|
contentType: model,
|
|
entryDocumentId: documentId,
|
|
locale,
|
|
hasEntryAttached: true
|
|
}, {
|
|
skip: !document
|
|
});
|
|
const releases = response.data?.data;
|
|
const getReleaseColorVariant = (actionType, shade)=>{
|
|
if (actionType === 'unpublish') {
|
|
return `secondary${shade}`;
|
|
}
|
|
return `success${shade}`;
|
|
};
|
|
// Project is not EE or contentType does not have draftAndPublish enabled
|
|
if (!window.strapi.isEE || !options?.draftAndPublish || !canRead) {
|
|
return null;
|
|
}
|
|
if (collectionType === 'collection-types' && (!documentId || documentId === 'create')) {
|
|
return null;
|
|
}
|
|
if (!releases || releases.length === 0) {
|
|
return null;
|
|
}
|
|
return {
|
|
title: formatMessage({
|
|
id: 'content-releases.plugin.name',
|
|
defaultMessage: 'Releases'
|
|
}),
|
|
content: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
direction: "column",
|
|
alignItems: "stretch",
|
|
gap: 3,
|
|
width: "100%",
|
|
children: releases?.map((release)=>/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
direction: "column",
|
|
alignItems: "start",
|
|
borderWidth: "1px",
|
|
borderStyle: "solid",
|
|
borderColor: getReleaseColorVariant(release.actions[0].type, '200'),
|
|
overflow: "hidden",
|
|
hasRadius: true,
|
|
children: [
|
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
paddingTop: 3,
|
|
paddingBottom: 3,
|
|
paddingLeft: 4,
|
|
paddingRight: 4,
|
|
background: getReleaseColorVariant(release.actions[0].type, '100'),
|
|
width: "100%",
|
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
fontSize: 1,
|
|
variant: "pi",
|
|
textColor: getReleaseColorVariant(release.actions[0].type, '600'),
|
|
children: formatMessage({
|
|
id: 'content-releases.content-manager-edit-view.list-releases.title',
|
|
defaultMessage: '{isPublish, select, true {Will be published in} other {Will be unpublished in}}'
|
|
}, {
|
|
isPublish: release.actions[0].type === 'publish'
|
|
})
|
|
})
|
|
}),
|
|
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
padding: 4,
|
|
direction: "column",
|
|
gap: 2,
|
|
width: "100%",
|
|
alignItems: "flex-start",
|
|
children: [
|
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
fontSize: 2,
|
|
fontWeight: "bold",
|
|
variant: "omega",
|
|
textColor: "neutral700",
|
|
children: release.name
|
|
}),
|
|
release.scheduledAt && release.timezone && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
variant: "pi",
|
|
textColor: "neutral600",
|
|
children: formatMessage({
|
|
id: 'content-releases.content-manager-edit-view.scheduled.date',
|
|
defaultMessage: '{date} at {time} ({offset})'
|
|
}, {
|
|
date: formatDate(new Date(release.scheduledAt), {
|
|
day: '2-digit',
|
|
month: '2-digit',
|
|
year: 'numeric',
|
|
timeZone: release.timezone
|
|
}),
|
|
time: formatTime(new Date(release.scheduledAt), {
|
|
hourCycle: 'h23',
|
|
timeZone: release.timezone
|
|
}),
|
|
offset: time.getTimezoneOffset(release.timezone, new Date(release.scheduledAt))
|
|
})
|
|
}),
|
|
canDeleteAction ? /*#__PURE__*/ jsxRuntime.jsxs(ReleaseActionMenu.ReleaseActionMenu.Root, {
|
|
hasTriggerBorder: true,
|
|
children: [
|
|
/*#__PURE__*/ jsxRuntime.jsx(ReleaseActionMenu.ReleaseActionMenu.EditReleaseItem, {
|
|
releaseId: release.id
|
|
}),
|
|
/*#__PURE__*/ jsxRuntime.jsx(ReleaseActionMenu.ReleaseActionMenu.DeleteReleaseActionItem, {
|
|
releaseId: release.id,
|
|
actionId: release.actions[0].id
|
|
})
|
|
]
|
|
}) : null
|
|
]
|
|
})
|
|
]
|
|
}, release.id))
|
|
})
|
|
};
|
|
};
|
|
|
|
exports.Panel = Panel;
|
|
//# sourceMappingURL=ReleasesPanel.js.map
|