@strapi/content-manager 0.0.0-next.973df62640087231761ffaeb1c2b5d0d706346d8 → 0.0.0-next.a28002c793bc4de2a8b3c6c5b9c2336c5a6db7a9
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/_chunks/CardDragPreview-C0QyJgRA.js.map +1 -1
- package/dist/_chunks/CardDragPreview-DOxamsuj.mjs.map +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-BCCTDNe1.js → ComponentConfigurationPage-DquE3cSt.js} +4 -5
- package/dist/_chunks/{ComponentConfigurationPage-BCCTDNe1.js.map → ComponentConfigurationPage-DquE3cSt.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-CsMNJw_0.mjs → ComponentConfigurationPage-xgUutqCq.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-CsMNJw_0.mjs.map → ComponentConfigurationPage-xgUutqCq.mjs.map} +1 -1
- package/dist/_chunks/{ComponentIcon-BXdiCGQp.js → ComponentIcon-CRbtQEUV.js} +2 -3
- package/dist/_chunks/{ComponentIcon-BXdiCGQp.js.map → ComponentIcon-CRbtQEUV.js.map} +1 -1
- package/dist/_chunks/ComponentIcon-u4bIXTFY.mjs.map +1 -1
- package/dist/_chunks/{EditConfigurationPage-BkEV5bFT.mjs → EditConfigurationPage-BxxS_VjE.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-BkEV5bFT.mjs.map → EditConfigurationPage-BxxS_VjE.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-DC1Bpfr1.js → EditConfigurationPage-DBZcYu4y.js} +4 -5
- package/dist/_chunks/{EditConfigurationPage-DC1Bpfr1.js.map → EditConfigurationPage-DBZcYu4y.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-Bc97GGF4.mjs → EditViewPage-CxbLxtSZ.mjs} +3 -3
- package/dist/_chunks/{EditViewPage-Bc97GGF4.mjs.map → EditViewPage-CxbLxtSZ.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-B_Gr-2r6.js → EditViewPage-eVQAzqrX.js} +4 -5
- package/dist/_chunks/{EditViewPage-B_Gr-2r6.js.map → EditViewPage-eVQAzqrX.js.map} +1 -1
- package/dist/_chunks/{Field-CqmTpeRt.js → Field-B1V9AyU1.js} +167 -127
- package/dist/_chunks/Field-B1V9AyU1.js.map +1 -0
- package/dist/_chunks/{Field-CIuPhh1m.mjs → Field-CZwQcrmw.mjs} +165 -125
- package/dist/_chunks/Field-CZwQcrmw.mjs.map +1 -0
- package/dist/_chunks/FieldTypeIcon-CMlNO8PE.mjs.map +1 -1
- package/dist/_chunks/FieldTypeIcon-Dnwq_IRF.js.map +1 -1
- package/dist/_chunks/{Form-C22QTzNy.mjs → Form-3kEYdc-J.mjs} +3 -3
- package/dist/_chunks/{Form-C22QTzNy.mjs.map → Form-3kEYdc-J.mjs.map} +1 -1
- package/dist/_chunks/{Form-BRlXI9Ey.js → Form-DDb5-H01.js} +5 -6
- package/dist/_chunks/{Form-BRlXI9Ey.js.map → Form-DDb5-H01.js.map} +1 -1
- package/dist/_chunks/{History-mYpwx4Rh.js → History-COpTRR4s.js} +37 -61
- package/dist/_chunks/History-COpTRR4s.js.map +1 -0
- package/dist/_chunks/{History-nFKCaE9Y.mjs → History-DXZrV891.mjs} +37 -60
- package/dist/_chunks/History-DXZrV891.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-vjQ_UKxh.mjs → ListConfigurationPage-B1BlI0vS.mjs} +6 -5
- package/dist/_chunks/ListConfigurationPage-B1BlI0vS.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-CXwjTP1m.js → ListConfigurationPage-D5zn8EA8.js} +6 -6
- package/dist/_chunks/ListConfigurationPage-D5zn8EA8.js.map +1 -0
- package/dist/_chunks/{ListViewPage-Cf1E8F2V.mjs → ListViewPage-CfHJAt9S.mjs} +50 -49
- package/dist/_chunks/ListViewPage-CfHJAt9S.mjs.map +1 -0
- package/dist/_chunks/{ListViewPage-DFq-_rFt.js → ListViewPage-OqGWxoXp.js} +51 -51
- package/dist/_chunks/ListViewPage-OqGWxoXp.js.map +1 -0
- package/dist/_chunks/{NoContentTypePage-CpFh_nLX.mjs → NoContentTypePage-B1vde0d2.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-CpFh_nLX.mjs.map → NoContentTypePage-B1vde0d2.mjs.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-BUnPLdSC.js → NoContentTypePage-BwuxzVhz.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-BUnPLdSC.js.map → NoContentTypePage-BwuxzVhz.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-GgY8yEd6.mjs → NoPermissionsPage-BZx6YZ0-.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-GgY8yEd6.mjs.map → NoPermissionsPage-BZx6YZ0-.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-DlEaSUxx.js → NoPermissionsPage-CM4q9eyp.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-DlEaSUxx.js.map → NoPermissionsPage-CM4q9eyp.js.map} +1 -1
- package/dist/_chunks/{Preview-BPBvJI2O.js → Preview-DZWvwEHg.js} +77 -72
- package/dist/_chunks/Preview-DZWvwEHg.js.map +1 -0
- package/dist/_chunks/{Preview-BbRS-OKT.mjs → Preview-DeD_aLg6.mjs} +78 -72
- package/dist/_chunks/Preview-DeD_aLg6.mjs.map +1 -0
- package/dist/_chunks/{Relations-C1HdkZyt.js → Relations-DXVAOSqj.js} +7 -10
- package/dist/_chunks/{Relations-C1HdkZyt.js.map → Relations-DXVAOSqj.js.map} +1 -1
- package/dist/_chunks/{Relations-CkIXcHbJ.mjs → Relations-i1BqMPqp.mjs} +6 -8
- package/dist/_chunks/{Relations-CkIXcHbJ.mjs.map → Relations-i1BqMPqp.mjs.map} +1 -1
- package/dist/_chunks/{en-CHOp_xJv.js → en-BzQmavmK.js} +11 -3
- package/dist/_chunks/{en-CHOp_xJv.js.map → en-BzQmavmK.js.map} +1 -1
- package/dist/_chunks/{en-D_BMf0hT.mjs → en-CSxLmrh1.mjs} +11 -3
- package/dist/_chunks/{en-D_BMf0hT.mjs.map → en-CSxLmrh1.mjs.map} +1 -1
- package/dist/_chunks/hooks-BAaaKPS_.js.map +1 -1
- package/dist/_chunks/{index-BL9NYW88.js → index-D9vDl-4J.js} +279 -165
- package/dist/_chunks/index-D9vDl-4J.js.map +1 -0
- package/dist/_chunks/{index-C_KAytfk.mjs → index-Rej95OkL.mjs} +279 -164
- package/dist/_chunks/index-Rej95OkL.mjs.map +1 -0
- package/dist/_chunks/{layout-_a2iPFa6.js → layout-B4X3h5C4.js} +5 -6
- package/dist/_chunks/{layout-_a2iPFa6.js.map → layout-B4X3h5C4.js.map} +1 -1
- package/dist/_chunks/{layout-D6QIbKn7.mjs → layout-CKw8rE38.mjs} +4 -4
- package/dist/_chunks/{layout-D6QIbKn7.mjs.map → layout-CKw8rE38.mjs.map} +1 -1
- package/dist/_chunks/objects-BcXOv6_9.js.map +1 -1
- package/dist/_chunks/objects-D6yBsdmx.mjs.map +1 -1
- package/dist/_chunks/{relations-BX-k1SIX.js → relations-CvZ0Uu8l.js} +2 -2
- package/dist/_chunks/{relations-BX-k1SIX.js.map → relations-CvZ0Uu8l.js.map} +1 -1
- package/dist/_chunks/{relations-BIejV2xk.mjs → relations-GpHbwwdj.mjs} +2 -2
- package/dist/_chunks/{relations-BIejV2xk.mjs.map → relations-GpHbwwdj.mjs.map} +1 -1
- package/dist/_chunks/useDebounce-CtcjDB3L.js.map +1 -1
- package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +1 -1
- package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js → useDragAndDrop-BMtgCYzL.js} +5 -9
- package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js.map → useDragAndDrop-BMtgCYzL.js.map} +1 -1
- package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs → useDragAndDrop-DJ6jqvZN.mjs} +4 -7
- package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs.map → useDragAndDrop-DJ6jqvZN.mjs.map} +1 -1
- package/dist/admin/index.js +2 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +2 -1
- package/dist/admin/src/content-manager.d.ts +3 -2
- package/dist/admin/src/exports.d.ts +1 -0
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/DocumentStatus.d.ts +3 -3
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.d.ts +7 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/utils/prismLanguages.d.ts +49 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +4 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +4 -1
- package/dist/admin/src/preview/services/preview.d.ts +1 -1
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +16 -19
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +2 -2
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/server/index.js +230 -187
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +231 -187
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +1 -0
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
- package/dist/server/src/history/controllers/history-version.d.ts +1 -1
- package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
- package/dist/server/src/history/services/history.d.ts +3 -3
- package/dist/server/src/history/services/history.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +6 -10
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +3 -2
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -1
- package/dist/server/src/preview/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/index.d.ts +1 -0
- package/dist/server/src/preview/services/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts +2 -0
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
- package/dist/server/src/preview/utils.d.ts +1 -0
- package/dist/server/src/preview/utils.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts +4 -2
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +3 -2
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
- package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
- package/dist/server/src/services/utils/populate.d.ts +2 -2
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/package.json +12 -11
- package/dist/_chunks/Field-CIuPhh1m.mjs.map +0 -1
- package/dist/_chunks/Field-CqmTpeRt.js.map +0 -1
- package/dist/_chunks/History-mYpwx4Rh.js.map +0 -1
- package/dist/_chunks/History-nFKCaE9Y.mjs.map +0 -1
- package/dist/_chunks/ListConfigurationPage-CXwjTP1m.js.map +0 -1
- package/dist/_chunks/ListConfigurationPage-vjQ_UKxh.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-Cf1E8F2V.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-DFq-_rFt.js.map +0 -1
- package/dist/_chunks/Preview-BPBvJI2O.js.map +0 -1
- package/dist/_chunks/Preview-BbRS-OKT.mjs.map +0 -1
- package/dist/_chunks/index-BL9NYW88.js.map +0 -1
- package/dist/_chunks/index-C_KAytfk.mjs.map +0 -1
- package/dist/admin/src/preview/constants.d.ts +0 -1
- package/dist/server/src/preview/constants.d.ts +0 -2
- package/dist/server/src/preview/constants.d.ts.map +0 -1
@@ -6,13 +6,13 @@ const strapiAdmin = require("@strapi/admin/strapi-admin");
|
|
6
6
|
const designSystem = require("@strapi/design-system");
|
7
7
|
const reactIntl = require("react-intl");
|
8
8
|
const reactRouterDom = require("react-router-dom");
|
9
|
-
const index = require("./index-
|
9
|
+
const index = require("./index-D9vDl-4J.js");
|
10
10
|
const Icons = require("@strapi/icons");
|
11
11
|
const qs = require("qs");
|
12
|
-
const
|
12
|
+
const styledComponents = require("styled-components");
|
13
|
+
const EditViewPage = require("./EditViewPage-eVQAzqrX.js");
|
13
14
|
function _interopNamespace(e) {
|
14
|
-
if (e && e.__esModule)
|
15
|
-
return e;
|
15
|
+
if (e && e.__esModule) return e;
|
16
16
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
17
17
|
if (e) {
|
18
18
|
for (const k in e) {
|
@@ -44,33 +44,36 @@ const PreviewContent = () => {
|
|
44
44
|
height: "100%",
|
45
45
|
borderWidth: 0,
|
46
46
|
tag: "iframe"
|
47
|
-
}
|
47
|
+
},
|
48
|
+
previewUrl
|
48
49
|
);
|
49
50
|
};
|
50
51
|
const ClosePreviewButton = () => {
|
51
52
|
const [{ query }] = strapiAdmin.useQueryParams();
|
52
|
-
const navigate = reactRouterDom.useNavigate();
|
53
53
|
const { formatMessage } = reactIntl.useIntl();
|
54
54
|
const canGoBack = strapiAdmin.useHistory("BackButton", (state) => state.canGoBack);
|
55
55
|
const goBack = strapiAdmin.useHistory("BackButton", (state) => state.goBack);
|
56
56
|
const history = strapiAdmin.useHistory("BackButton", (state) => state.history);
|
57
|
-
const
|
57
|
+
const locationIndex = strapiAdmin.useHistory("BackButton", (state) => state.currentLocationIndex);
|
58
|
+
const historyTo = canGoBack ? history.at(locationIndex - 2) : void 0;
|
59
|
+
const fallback = {
|
58
60
|
pathname: "..",
|
59
61
|
search: qs.stringify(query, { encode: false })
|
60
62
|
};
|
63
|
+
const toWithFallback = historyTo ?? fallback;
|
61
64
|
const handleClick = (e) => {
|
62
|
-
e.preventDefault();
|
63
65
|
if (canGoBack) {
|
66
|
+
e.preventDefault();
|
64
67
|
goBack();
|
65
|
-
|
66
|
-
navigate(fallbackUrl);
|
68
|
+
return;
|
67
69
|
}
|
68
70
|
};
|
69
71
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
70
72
|
designSystem.IconButton,
|
71
73
|
{
|
72
74
|
tag: reactRouterDom.Link,
|
73
|
-
|
75
|
+
relative: "path",
|
76
|
+
to: toWithFallback,
|
74
77
|
onClick: handleClick,
|
75
78
|
label: formatMessage({
|
76
79
|
id: "content-manager.preview.header.close",
|
@@ -80,72 +83,63 @@ const ClosePreviewButton = () => {
|
|
80
83
|
}
|
81
84
|
);
|
82
85
|
};
|
83
|
-
const
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
message: {
|
91
|
-
id: "content-manager.containers.List.draft",
|
92
|
-
defaultMessage: "Draft"
|
93
|
-
}
|
94
|
-
};
|
95
|
-
case "modified":
|
96
|
-
return {
|
97
|
-
background: "alternative100",
|
98
|
-
border: "alternative200",
|
99
|
-
text: "alternative700",
|
100
|
-
message: {
|
101
|
-
id: "content-manager.containers.List.modified",
|
102
|
-
defaultMessage: "Modified"
|
103
|
-
}
|
104
|
-
};
|
105
|
-
case "published":
|
106
|
-
default:
|
107
|
-
return {
|
108
|
-
background: "success100",
|
109
|
-
border: "success200",
|
110
|
-
text: "success700",
|
111
|
-
message: {
|
112
|
-
id: "content-manager.containers.List.published",
|
113
|
-
defaultMessage: "Published"
|
114
|
-
}
|
115
|
-
};
|
86
|
+
const Status = () => {
|
87
|
+
const document = usePreviewContext("PreviewHeader", (state) => state.document);
|
88
|
+
const schema = usePreviewContext("PreviewHeader", (state) => state.schema);
|
89
|
+
const meta = usePreviewContext("PreviewHeader", (state) => state.meta);
|
90
|
+
const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;
|
91
|
+
if (!hasDraftAndPublished) {
|
92
|
+
return null;
|
116
93
|
}
|
94
|
+
const status = EditViewPage.getDocumentStatus(document, meta);
|
95
|
+
return /* @__PURE__ */ jsxRuntime.jsx(index.DocumentStatus, { status, size: "XS" });
|
117
96
|
};
|
118
|
-
const
|
97
|
+
const PreviewTabs = () => {
|
119
98
|
const { formatMessage } = reactIntl.useIntl();
|
99
|
+
const [{ query }, setQuery] = strapiAdmin.useQueryParams();
|
120
100
|
const document = usePreviewContext("PreviewHeader", (state) => state.document);
|
121
101
|
const schema = usePreviewContext("PreviewHeader", (state) => state.schema);
|
122
102
|
const meta = usePreviewContext("PreviewHeader", (state) => state.meta);
|
123
|
-
const
|
124
|
-
const
|
125
|
-
const
|
126
|
-
|
103
|
+
const hasDraftAndPublish = schema?.options?.draftAndPublish ?? false;
|
104
|
+
const documentStatus = EditViewPage.getDocumentStatus(document, meta);
|
105
|
+
const handleTabChange = (status) => {
|
106
|
+
if (status === "published" || status === "draft") {
|
107
|
+
setQuery({ status }, "push", true);
|
108
|
+
}
|
109
|
+
};
|
110
|
+
if (!hasDraftAndPublish) {
|
127
111
|
return null;
|
128
112
|
}
|
129
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
130
|
-
designSystem.
|
113
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Root, { variant: "simple", value: query.status || "draft", onValueChange: handleTabChange, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
114
|
+
designSystem.Tabs.List,
|
131
115
|
{
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
116
|
+
"aria-label": formatMessage({
|
117
|
+
id: "preview.tabs.label",
|
118
|
+
defaultMessage: "Document status"
|
119
|
+
}),
|
120
|
+
children: [
|
121
|
+
/* @__PURE__ */ jsxRuntime.jsx(StatusTab, { value: "draft", children: formatMessage({
|
122
|
+
id: "content-manager.containers.List.draft",
|
123
|
+
defaultMessage: "draft"
|
124
|
+
}) }),
|
125
|
+
/* @__PURE__ */ jsxRuntime.jsx(StatusTab, { value: "published", disabled: documentStatus === "draft", children: formatMessage({
|
126
|
+
id: "content-manager.containers.List.published",
|
127
|
+
defaultMessage: "published"
|
128
|
+
}) })
|
129
|
+
]
|
142
130
|
}
|
143
|
-
);
|
131
|
+
) }) });
|
144
132
|
};
|
145
133
|
const PreviewHeader = () => {
|
146
134
|
const mainField = usePreviewContext("PreviewHeader", (state) => state.mainField);
|
147
135
|
const document = usePreviewContext("PreviewHeader", (state) => state.document);
|
148
|
-
const
|
136
|
+
const schema = usePreviewContext("PreviewHeader", (state) => state.schema);
|
137
|
+
let documentTitle = "Untitled";
|
138
|
+
if (mainField !== "id" && document?.[mainField]) {
|
139
|
+
documentTitle = document[mainField];
|
140
|
+
} else if (schema.kind === "singleType" && schema?.info.displayName) {
|
141
|
+
documentTitle = schema.info.displayName;
|
142
|
+
}
|
149
143
|
const { formatMessage } = reactIntl.useIntl();
|
150
144
|
const { toggleNotification } = strapiAdmin.useNotification();
|
151
145
|
const { copy } = strapiAdmin.useClipboard();
|
@@ -160,20 +154,23 @@ const PreviewHeader = () => {
|
|
160
154
|
});
|
161
155
|
};
|
162
156
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
163
|
-
designSystem.
|
157
|
+
designSystem.Grid.Root,
|
164
158
|
{
|
165
|
-
|
159
|
+
gap: 3,
|
160
|
+
gridCols: 3,
|
161
|
+
paddingLeft: 2,
|
162
|
+
paddingRight: 2,
|
166
163
|
background: "neutral0",
|
167
|
-
padding: 2,
|
168
164
|
borderColor: "neutral150",
|
169
165
|
tag: "header",
|
170
166
|
children: [
|
171
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.
|
167
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Item, { xs: 1, paddingTop: 2, paddingBottom: 2, gap: 3, children: [
|
172
168
|
/* @__PURE__ */ jsxRuntime.jsx(ClosePreviewButton, {}),
|
173
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
174
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
169
|
+
/* @__PURE__ */ jsxRuntime.jsx(PreviewTitle, { tag: "h1", fontWeight: 600, fontSize: 2, maxWidth: "200px", title: documentTitle, children: documentTitle }),
|
170
|
+
/* @__PURE__ */ jsxRuntime.jsx(Status, {})
|
175
171
|
] }),
|
176
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
172
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { xs: 1, marginBottom: "-1px", alignItems: "end", margin: "auto", children: /* @__PURE__ */ jsxRuntime.jsx(PreviewTabs, {}) }),
|
173
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { xs: 1, justifyContent: "end", paddingTop: 2, paddingBottom: 2, children: /* @__PURE__ */ jsxRuntime.jsx(
|
177
174
|
designSystem.IconButton,
|
178
175
|
{
|
179
176
|
type: "button",
|
@@ -184,11 +181,19 @@ const PreviewHeader = () => {
|
|
184
181
|
onClick: handleCopyLink,
|
185
182
|
children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Link, {})
|
186
183
|
}
|
187
|
-
)
|
184
|
+
) })
|
188
185
|
]
|
189
186
|
}
|
190
187
|
);
|
191
188
|
};
|
189
|
+
const PreviewTitle = styledComponents.styled(designSystem.Typography)`
|
190
|
+
overflow: hidden;
|
191
|
+
text-overflow: ellipsis;
|
192
|
+
white-space: nowrap;
|
193
|
+
`;
|
194
|
+
const StatusTab = styledComponents.styled(designSystem.Tabs.Trigger)`
|
195
|
+
text-transform: uppercase;
|
196
|
+
`;
|
192
197
|
const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext("PreviewPage");
|
193
198
|
const PreviewPage = () => {
|
194
199
|
const { formatMessage } = reactIntl.useIntl();
|
@@ -304,4 +309,4 @@ const ProtectedPreviewPage = () => {
|
|
304
309
|
};
|
305
310
|
exports.ProtectedPreviewPage = ProtectedPreviewPage;
|
306
311
|
exports.usePreviewContext = usePreviewContext;
|
307
|
-
//# sourceMappingURL=Preview-
|
312
|
+
//# sourceMappingURL=Preview-DZWvwEHg.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Preview-DZWvwEHg.js","sources":["../../admin/src/preview/components/PreviewContent.tsx","../../admin/src/preview/components/PreviewHeader.tsx","../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { usePreviewContext } from '../pages/Preview';\n\nconst PreviewContent = () => {\n const previewUrl = usePreviewContext('PreviewContent', (state) => state.url);\n\n const { formatMessage } = useIntl();\n\n return (\n <Box\n src={previewUrl}\n /**\n * For some reason, changing an iframe's src tag causes the browser to add a new item in the\n * history stack. This is an issue for us as it means clicking the back button will not let us\n * go back to the edit view. To fix it, we need to trick the browser into thinking this is a\n * different iframe when the preview URL changes. So we set a key prop to force React\n * to mount a different node when the src changes.\n */\n key={previewUrl}\n title={formatMessage({\n id: 'content-manager.preview.panel.title',\n defaultMessage: 'Preview',\n })}\n width=\"100%\"\n height=\"100%\"\n borderWidth={0}\n tag=\"iframe\"\n />\n );\n};\n\nexport { PreviewContent };\n","import * as React from 'react';\n\nimport {\n useClipboard,\n useHistory,\n useNotification,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { IconButton, Tabs, Typography, Grid } from '@strapi/design-system';\nimport { Cross, Link as LinkIcon } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, type To } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDocumentStatus } from '../../pages/EditView/EditViewPage';\nimport { usePreviewContext } from '../pages/Preview';\n\n/* -------------------------------------------------------------------------------------------------\n * ClosePreviewButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst ClosePreviewButton = () => {\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { formatMessage } = useIntl();\n\n const canGoBack = useHistory('BackButton', (state) => state.canGoBack);\n const goBack = useHistory('BackButton', (state) => state.goBack);\n const history = useHistory('BackButton', (state) => state.history);\n const locationIndex = useHistory('BackButton', (state) => state.currentLocationIndex);\n\n /**\n * Get the link destination from the history.\n * Rely on a fallback (the parent edit view page) if there's no page to go back .\n */\n const historyTo = canGoBack ? history.at(locationIndex - 2) : undefined;\n const fallback = {\n pathname: '..',\n search: stringify(query, { encode: false }),\n } satisfies To;\n const toWithFallback = historyTo ?? fallback;\n\n const handleClick = (e: React.MouseEvent) => {\n if (canGoBack) {\n // Prevent normal link behavior, go back in the history stack instead\n e.preventDefault();\n goBack();\n return;\n }\n\n // Otherwise rely on native link behavior to go back to the edit view. We don't use navigate()\n // here in order to get the relative=\"path\" functionality from the Link component.\n };\n\n return (\n <IconButton\n tag={Link}\n relative=\"path\"\n to={toWithFallback}\n onClick={handleClick}\n label={formatMessage({\n id: 'content-manager.preview.header.close',\n defaultMessage: 'Close preview',\n })}\n >\n <Cross />\n </IconButton>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\nconst Status = () => {\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n if (!hasDraftAndPublished) {\n return null;\n }\n\n const status = getDocumentStatus(document, meta);\n\n return <DocumentStatus status={status} size=\"XS\" />;\n};\n\nconst PreviewTabs = () => {\n const { formatMessage } = useIntl();\n\n // URL query params\n const [{ query }, setQuery] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublish = schema?.options?.draftAndPublish ?? false;\n const documentStatus = getDocumentStatus(document, meta);\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n if (!hasDraftAndPublish) {\n return null;\n }\n\n return (\n <>\n <Tabs.Root variant=\"simple\" value={query.status || 'draft'} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'preview.tabs.label',\n defaultMessage: 'Document status',\n })}\n >\n <StatusTab value=\"draft\">\n {formatMessage({\n id: 'content-manager.containers.List.draft',\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab value=\"published\" disabled={documentStatus === 'draft'}>\n {formatMessage({\n id: 'content-manager.containers.List.published',\n defaultMessage: 'published',\n })}\n </StatusTab>\n </Tabs.List>\n </Tabs.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst PreviewHeader = () => {\n // Get main field\n const mainField = usePreviewContext('PreviewHeader', (state) => state.mainField);\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n\n /**\n * We look to see what the mainField is from the configuration, if it's an id\n * we don't use it because it's a uuid format and not very user friendly.\n * Instead, we display the schema name for single-type documents\n * or \"Untitled\".\n */\n let documentTitle = 'Untitled';\n if (mainField !== 'id' && document?.[mainField]) {\n documentTitle = document[mainField];\n } else if (schema.kind === 'singleType' && schema?.info.displayName) {\n documentTitle = schema.info.displayName;\n }\n\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n\n const handleCopyLink = () => {\n copy(window.location.href);\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.preview.copy.success',\n defaultMessage: 'Copied preview link',\n }),\n type: 'success',\n });\n };\n\n return (\n <Grid.Root\n gap={3}\n gridCols={3}\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n borderColor=\"neutral150\"\n tag=\"header\"\n >\n {/* Title and status */}\n <Grid.Item xs={1} paddingTop={2} paddingBottom={2} gap={3}>\n <ClosePreviewButton />\n <PreviewTitle tag=\"h1\" fontWeight={600} fontSize={2} maxWidth=\"200px\" title={documentTitle}>\n {documentTitle}\n </PreviewTitle>\n <Status />\n </Grid.Item>\n {/* Tabs */}\n <Grid.Item xs={1} marginBottom=\"-1px\" alignItems=\"end\" margin=\"auto\">\n <PreviewTabs />\n </Grid.Item>\n {/* Copy link */}\n <Grid.Item xs={1} justifyContent=\"end\" paddingTop={2} paddingBottom={2}>\n <IconButton\n type=\"button\"\n label={formatMessage({\n id: 'preview.copy.label',\n defaultMessage: 'Copy preview link',\n })}\n onClick={handleCopyLink}\n >\n <LinkIcon />\n </IconButton>\n </Grid.Item>\n </Grid.Root>\n );\n};\n\nconst PreviewTitle = styled(Typography)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\nexport { PreviewHeader };\n","import * as React from 'react';\n\nimport { Page, useQueryParams, useRBAC, createContext } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Portal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { buildValidParams } from '../../utils/api';\nimport { PreviewContent } from '../components/PreviewContent';\nimport { PreviewHeader } from '../components/PreviewHeader';\nimport { useGetPreviewUrlQuery } from '../services/preview';\n\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreviewContextValue {\n url: string;\n mainField: string;\n document: NonNullable<ReturnType<UseDocument>['document']>;\n meta: NonNullable<ReturnType<UseDocument>['meta']>;\n schema: NonNullable<ReturnType<UseDocument>['schema']>;\n}\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst PreviewPage = () => {\n const { formatMessage } = useIntl();\n\n // Read all the necessary data from the URL to find the right preview URL\n const {\n slug: model,\n id: documentId,\n collectionType,\n } = useParams<{\n slug: UID.ContentType;\n id: string;\n collectionType: string;\n }>();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!collectionType) {\n throw new Error('Could not find collectionType in url params');\n }\n\n if (!model) {\n throw new Error('Could not find model in url params');\n }\n\n // Only collection types must have a documentId\n if (collectionType === COLLECTION_TYPES && !documentId) {\n throw new Error('Could not find documentId in url params');\n }\n\n const previewUrlResponse = useGetPreviewUrlQuery({\n params: {\n contentType: model,\n },\n query: {\n documentId,\n locale: params.locale,\n status: params.status as GetPreviewUrl.Request['query']['status'],\n },\n });\n\n const documentResponse = useDocument({\n model,\n collectionType,\n documentId,\n params,\n });\n\n const documentLayoutResponse = useDocumentLayout(model);\n\n if (\n documentResponse.isLoading ||\n previewUrlResponse.isLoading ||\n documentLayoutResponse.isLoading\n ) {\n return <Page.Loading />;\n }\n\n if (\n previewUrlResponse.error ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema\n ) {\n return <Page.Error />;\n }\n\n if (!previewUrlResponse.data?.data?.url) {\n return <Page.NoData />;\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.preview.page-title',\n defaultMessage: '{contentType} preview',\n },\n {\n contentType: documentLayoutResponse.edit.settings.displayName,\n }\n )}\n </Page.Title>\n <PreviewProvider\n url={previewUrlResponse.data.data.url}\n mainField={documentLayoutResponse.edit.settings.mainField}\n document={documentResponse.document}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n >\n <Flex direction=\"column\" height=\"100%\" alignItems={'stretch'}>\n <PreviewHeader />\n <PreviewContent />\n </Flex>\n </PreviewProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedPreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedPreviewPageImpl = () => {\n const { slug: model } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC([{ action: 'plugin::content-manager.explorer.read', subject: model }]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !model) {\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <PreviewPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedPreviewPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedPreviewPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedPreviewPage, usePreviewContext };\n"],"names":["useIntl","jsx","Box","useQueryParams","useHistory","stringify","IconButton","Link","Cross","getDocumentStatus","DocumentStatus","Fragment","Tabs","jsxs","useNotification","useClipboard","Grid","LinkIcon","styled","Typography","createContext","useParams","React","buildValidParams","COLLECTION_TYPES","useGetPreviewUrlQuery","useDocument","useDocumentLayout","Page","Flex","useRBAC","permissions","DocumentRBAC","Portal","FocusTrap"],"mappings":"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"}
|
@@ -1,13 +1,14 @@
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
2
2
|
import * as React from "react";
|
3
3
|
import { useNotification, useClipboard, useQueryParams, useHistory, createContext, useRBAC, Page } from "@strapi/admin/strapi-admin";
|
4
|
-
import { Box,
|
4
|
+
import { Box, Typography, Tabs, Grid, IconButton, Portal, FocusTrap, Flex } from "@strapi/design-system";
|
5
5
|
import { useIntl } from "react-intl";
|
6
|
-
import {
|
7
|
-
import { l as DocumentRBAC, d as buildValidParams, C as COLLECTION_TYPES, K as useGetPreviewUrlQuery, J as useDocument, h as useDocumentLayout } from "./index-
|
6
|
+
import { Link as Link$1, useParams } from "react-router-dom";
|
7
|
+
import { D as DocumentStatus, l as DocumentRBAC, d as buildValidParams, C as COLLECTION_TYPES, K as useGetPreviewUrlQuery, J as useDocument, h as useDocumentLayout } from "./index-Rej95OkL.mjs";
|
8
8
|
import { Link, Cross } from "@strapi/icons";
|
9
9
|
import { stringify } from "qs";
|
10
|
-
import {
|
10
|
+
import { styled } from "styled-components";
|
11
|
+
import { getDocumentStatus } from "./EditViewPage-CxbLxtSZ.mjs";
|
11
12
|
const PreviewContent = () => {
|
12
13
|
const previewUrl = usePreviewContext("PreviewContent", (state) => state.url);
|
13
14
|
const { formatMessage } = useIntl();
|
@@ -23,33 +24,36 @@ const PreviewContent = () => {
|
|
23
24
|
height: "100%",
|
24
25
|
borderWidth: 0,
|
25
26
|
tag: "iframe"
|
26
|
-
}
|
27
|
+
},
|
28
|
+
previewUrl
|
27
29
|
);
|
28
30
|
};
|
29
31
|
const ClosePreviewButton = () => {
|
30
32
|
const [{ query }] = useQueryParams();
|
31
|
-
const navigate = useNavigate();
|
32
33
|
const { formatMessage } = useIntl();
|
33
34
|
const canGoBack = useHistory("BackButton", (state) => state.canGoBack);
|
34
35
|
const goBack = useHistory("BackButton", (state) => state.goBack);
|
35
36
|
const history = useHistory("BackButton", (state) => state.history);
|
36
|
-
const
|
37
|
+
const locationIndex = useHistory("BackButton", (state) => state.currentLocationIndex);
|
38
|
+
const historyTo = canGoBack ? history.at(locationIndex - 2) : void 0;
|
39
|
+
const fallback = {
|
37
40
|
pathname: "..",
|
38
41
|
search: stringify(query, { encode: false })
|
39
42
|
};
|
43
|
+
const toWithFallback = historyTo ?? fallback;
|
40
44
|
const handleClick = (e) => {
|
41
|
-
e.preventDefault();
|
42
45
|
if (canGoBack) {
|
46
|
+
e.preventDefault();
|
43
47
|
goBack();
|
44
|
-
|
45
|
-
navigate(fallbackUrl);
|
48
|
+
return;
|
46
49
|
}
|
47
50
|
};
|
48
51
|
return /* @__PURE__ */ jsx(
|
49
52
|
IconButton,
|
50
53
|
{
|
51
54
|
tag: Link$1,
|
52
|
-
|
55
|
+
relative: "path",
|
56
|
+
to: toWithFallback,
|
53
57
|
onClick: handleClick,
|
54
58
|
label: formatMessage({
|
55
59
|
id: "content-manager.preview.header.close",
|
@@ -59,72 +63,63 @@ const ClosePreviewButton = () => {
|
|
59
63
|
}
|
60
64
|
);
|
61
65
|
};
|
62
|
-
const
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
message: {
|
70
|
-
id: "content-manager.containers.List.draft",
|
71
|
-
defaultMessage: "Draft"
|
72
|
-
}
|
73
|
-
};
|
74
|
-
case "modified":
|
75
|
-
return {
|
76
|
-
background: "alternative100",
|
77
|
-
border: "alternative200",
|
78
|
-
text: "alternative700",
|
79
|
-
message: {
|
80
|
-
id: "content-manager.containers.List.modified",
|
81
|
-
defaultMessage: "Modified"
|
82
|
-
}
|
83
|
-
};
|
84
|
-
case "published":
|
85
|
-
default:
|
86
|
-
return {
|
87
|
-
background: "success100",
|
88
|
-
border: "success200",
|
89
|
-
text: "success700",
|
90
|
-
message: {
|
91
|
-
id: "content-manager.containers.List.published",
|
92
|
-
defaultMessage: "Published"
|
93
|
-
}
|
94
|
-
};
|
66
|
+
const Status = () => {
|
67
|
+
const document = usePreviewContext("PreviewHeader", (state) => state.document);
|
68
|
+
const schema = usePreviewContext("PreviewHeader", (state) => state.schema);
|
69
|
+
const meta = usePreviewContext("PreviewHeader", (state) => state.meta);
|
70
|
+
const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;
|
71
|
+
if (!hasDraftAndPublished) {
|
72
|
+
return null;
|
95
73
|
}
|
74
|
+
const status = getDocumentStatus(document, meta);
|
75
|
+
return /* @__PURE__ */ jsx(DocumentStatus, { status, size: "XS" });
|
96
76
|
};
|
97
|
-
const
|
77
|
+
const PreviewTabs = () => {
|
98
78
|
const { formatMessage } = useIntl();
|
79
|
+
const [{ query }, setQuery] = useQueryParams();
|
99
80
|
const document = usePreviewContext("PreviewHeader", (state) => state.document);
|
100
81
|
const schema = usePreviewContext("PreviewHeader", (state) => state.schema);
|
101
82
|
const meta = usePreviewContext("PreviewHeader", (state) => state.meta);
|
102
|
-
const
|
103
|
-
const
|
104
|
-
const
|
105
|
-
|
83
|
+
const hasDraftAndPublish = schema?.options?.draftAndPublish ?? false;
|
84
|
+
const documentStatus = getDocumentStatus(document, meta);
|
85
|
+
const handleTabChange = (status) => {
|
86
|
+
if (status === "published" || status === "draft") {
|
87
|
+
setQuery({ status }, "push", true);
|
88
|
+
}
|
89
|
+
};
|
90
|
+
if (!hasDraftAndPublish) {
|
106
91
|
return null;
|
107
92
|
}
|
108
|
-
return /* @__PURE__ */ jsx(
|
109
|
-
|
93
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(Tabs.Root, { variant: "simple", value: query.status || "draft", onValueChange: handleTabChange, children: /* @__PURE__ */ jsxs(
|
94
|
+
Tabs.List,
|
110
95
|
{
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
96
|
+
"aria-label": formatMessage({
|
97
|
+
id: "preview.tabs.label",
|
98
|
+
defaultMessage: "Document status"
|
99
|
+
}),
|
100
|
+
children: [
|
101
|
+
/* @__PURE__ */ jsx(StatusTab, { value: "draft", children: formatMessage({
|
102
|
+
id: "content-manager.containers.List.draft",
|
103
|
+
defaultMessage: "draft"
|
104
|
+
}) }),
|
105
|
+
/* @__PURE__ */ jsx(StatusTab, { value: "published", disabled: documentStatus === "draft", children: formatMessage({
|
106
|
+
id: "content-manager.containers.List.published",
|
107
|
+
defaultMessage: "published"
|
108
|
+
}) })
|
109
|
+
]
|
121
110
|
}
|
122
|
-
);
|
111
|
+
) }) });
|
123
112
|
};
|
124
113
|
const PreviewHeader = () => {
|
125
114
|
const mainField = usePreviewContext("PreviewHeader", (state) => state.mainField);
|
126
115
|
const document = usePreviewContext("PreviewHeader", (state) => state.document);
|
127
|
-
const
|
116
|
+
const schema = usePreviewContext("PreviewHeader", (state) => state.schema);
|
117
|
+
let documentTitle = "Untitled";
|
118
|
+
if (mainField !== "id" && document?.[mainField]) {
|
119
|
+
documentTitle = document[mainField];
|
120
|
+
} else if (schema.kind === "singleType" && schema?.info.displayName) {
|
121
|
+
documentTitle = schema.info.displayName;
|
122
|
+
}
|
128
123
|
const { formatMessage } = useIntl();
|
129
124
|
const { toggleNotification } = useNotification();
|
130
125
|
const { copy } = useClipboard();
|
@@ -139,20 +134,23 @@ const PreviewHeader = () => {
|
|
139
134
|
});
|
140
135
|
};
|
141
136
|
return /* @__PURE__ */ jsxs(
|
142
|
-
|
137
|
+
Grid.Root,
|
143
138
|
{
|
144
|
-
|
139
|
+
gap: 3,
|
140
|
+
gridCols: 3,
|
141
|
+
paddingLeft: 2,
|
142
|
+
paddingRight: 2,
|
145
143
|
background: "neutral0",
|
146
|
-
padding: 2,
|
147
144
|
borderColor: "neutral150",
|
148
145
|
tag: "header",
|
149
146
|
children: [
|
150
|
-
/* @__PURE__ */ jsxs(
|
147
|
+
/* @__PURE__ */ jsxs(Grid.Item, { xs: 1, paddingTop: 2, paddingBottom: 2, gap: 3, children: [
|
151
148
|
/* @__PURE__ */ jsx(ClosePreviewButton, {}),
|
152
|
-
/* @__PURE__ */ jsx(
|
153
|
-
/* @__PURE__ */ jsx(
|
149
|
+
/* @__PURE__ */ jsx(PreviewTitle, { tag: "h1", fontWeight: 600, fontSize: 2, maxWidth: "200px", title: documentTitle, children: documentTitle }),
|
150
|
+
/* @__PURE__ */ jsx(Status, {})
|
154
151
|
] }),
|
155
|
-
/* @__PURE__ */ jsx(
|
152
|
+
/* @__PURE__ */ jsx(Grid.Item, { xs: 1, marginBottom: "-1px", alignItems: "end", margin: "auto", children: /* @__PURE__ */ jsx(PreviewTabs, {}) }),
|
153
|
+
/* @__PURE__ */ jsx(Grid.Item, { xs: 1, justifyContent: "end", paddingTop: 2, paddingBottom: 2, children: /* @__PURE__ */ jsx(
|
156
154
|
IconButton,
|
157
155
|
{
|
158
156
|
type: "button",
|
@@ -163,11 +161,19 @@ const PreviewHeader = () => {
|
|
163
161
|
onClick: handleCopyLink,
|
164
162
|
children: /* @__PURE__ */ jsx(Link, {})
|
165
163
|
}
|
166
|
-
)
|
164
|
+
) })
|
167
165
|
]
|
168
166
|
}
|
169
167
|
);
|
170
168
|
};
|
169
|
+
const PreviewTitle = styled(Typography)`
|
170
|
+
overflow: hidden;
|
171
|
+
text-overflow: ellipsis;
|
172
|
+
white-space: nowrap;
|
173
|
+
`;
|
174
|
+
const StatusTab = styled(Tabs.Trigger)`
|
175
|
+
text-transform: uppercase;
|
176
|
+
`;
|
171
177
|
const [PreviewProvider, usePreviewContext] = createContext("PreviewPage");
|
172
178
|
const PreviewPage = () => {
|
173
179
|
const { formatMessage } = useIntl();
|
@@ -285,4 +291,4 @@ export {
|
|
285
291
|
ProtectedPreviewPage,
|
286
292
|
usePreviewContext
|
287
293
|
};
|
288
|
-
//# sourceMappingURL=Preview-
|
294
|
+
//# sourceMappingURL=Preview-DeD_aLg6.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Preview-DeD_aLg6.mjs","sources":["../../admin/src/preview/components/PreviewContent.tsx","../../admin/src/preview/components/PreviewHeader.tsx","../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { usePreviewContext } from '../pages/Preview';\n\nconst PreviewContent = () => {\n const previewUrl = usePreviewContext('PreviewContent', (state) => state.url);\n\n const { formatMessage } = useIntl();\n\n return (\n <Box\n src={previewUrl}\n /**\n * For some reason, changing an iframe's src tag causes the browser to add a new item in the\n * history stack. This is an issue for us as it means clicking the back button will not let us\n * go back to the edit view. To fix it, we need to trick the browser into thinking this is a\n * different iframe when the preview URL changes. So we set a key prop to force React\n * to mount a different node when the src changes.\n */\n key={previewUrl}\n title={formatMessage({\n id: 'content-manager.preview.panel.title',\n defaultMessage: 'Preview',\n })}\n width=\"100%\"\n height=\"100%\"\n borderWidth={0}\n tag=\"iframe\"\n />\n );\n};\n\nexport { PreviewContent };\n","import * as React from 'react';\n\nimport {\n useClipboard,\n useHistory,\n useNotification,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { IconButton, Tabs, Typography, Grid } from '@strapi/design-system';\nimport { Cross, Link as LinkIcon } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, type To } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDocumentStatus } from '../../pages/EditView/EditViewPage';\nimport { usePreviewContext } from '../pages/Preview';\n\n/* -------------------------------------------------------------------------------------------------\n * ClosePreviewButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst ClosePreviewButton = () => {\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { formatMessage } = useIntl();\n\n const canGoBack = useHistory('BackButton', (state) => state.canGoBack);\n const goBack = useHistory('BackButton', (state) => state.goBack);\n const history = useHistory('BackButton', (state) => state.history);\n const locationIndex = useHistory('BackButton', (state) => state.currentLocationIndex);\n\n /**\n * Get the link destination from the history.\n * Rely on a fallback (the parent edit view page) if there's no page to go back .\n */\n const historyTo = canGoBack ? history.at(locationIndex - 2) : undefined;\n const fallback = {\n pathname: '..',\n search: stringify(query, { encode: false }),\n } satisfies To;\n const toWithFallback = historyTo ?? fallback;\n\n const handleClick = (e: React.MouseEvent) => {\n if (canGoBack) {\n // Prevent normal link behavior, go back in the history stack instead\n e.preventDefault();\n goBack();\n return;\n }\n\n // Otherwise rely on native link behavior to go back to the edit view. We don't use navigate()\n // here in order to get the relative=\"path\" functionality from the Link component.\n };\n\n return (\n <IconButton\n tag={Link}\n relative=\"path\"\n to={toWithFallback}\n onClick={handleClick}\n label={formatMessage({\n id: 'content-manager.preview.header.close',\n defaultMessage: 'Close preview',\n })}\n >\n <Cross />\n </IconButton>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\nconst Status = () => {\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n if (!hasDraftAndPublished) {\n return null;\n }\n\n const status = getDocumentStatus(document, meta);\n\n return <DocumentStatus status={status} size=\"XS\" />;\n};\n\nconst PreviewTabs = () => {\n const { formatMessage } = useIntl();\n\n // URL query params\n const [{ query }, setQuery] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublish = schema?.options?.draftAndPublish ?? false;\n const documentStatus = getDocumentStatus(document, meta);\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n if (!hasDraftAndPublish) {\n return null;\n }\n\n return (\n <>\n <Tabs.Root variant=\"simple\" value={query.status || 'draft'} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'preview.tabs.label',\n defaultMessage: 'Document status',\n })}\n >\n <StatusTab value=\"draft\">\n {formatMessage({\n id: 'content-manager.containers.List.draft',\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab value=\"published\" disabled={documentStatus === 'draft'}>\n {formatMessage({\n id: 'content-manager.containers.List.published',\n defaultMessage: 'published',\n })}\n </StatusTab>\n </Tabs.List>\n </Tabs.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst PreviewHeader = () => {\n // Get main field\n const mainField = usePreviewContext('PreviewHeader', (state) => state.mainField);\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n\n /**\n * We look to see what the mainField is from the configuration, if it's an id\n * we don't use it because it's a uuid format and not very user friendly.\n * Instead, we display the schema name for single-type documents\n * or \"Untitled\".\n */\n let documentTitle = 'Untitled';\n if (mainField !== 'id' && document?.[mainField]) {\n documentTitle = document[mainField];\n } else if (schema.kind === 'singleType' && schema?.info.displayName) {\n documentTitle = schema.info.displayName;\n }\n\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n\n const handleCopyLink = () => {\n copy(window.location.href);\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.preview.copy.success',\n defaultMessage: 'Copied preview link',\n }),\n type: 'success',\n });\n };\n\n return (\n <Grid.Root\n gap={3}\n gridCols={3}\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n borderColor=\"neutral150\"\n tag=\"header\"\n >\n {/* Title and status */}\n <Grid.Item xs={1} paddingTop={2} paddingBottom={2} gap={3}>\n <ClosePreviewButton />\n <PreviewTitle tag=\"h1\" fontWeight={600} fontSize={2} maxWidth=\"200px\" title={documentTitle}>\n {documentTitle}\n </PreviewTitle>\n <Status />\n </Grid.Item>\n {/* Tabs */}\n <Grid.Item xs={1} marginBottom=\"-1px\" alignItems=\"end\" margin=\"auto\">\n <PreviewTabs />\n </Grid.Item>\n {/* Copy link */}\n <Grid.Item xs={1} justifyContent=\"end\" paddingTop={2} paddingBottom={2}>\n <IconButton\n type=\"button\"\n label={formatMessage({\n id: 'preview.copy.label',\n defaultMessage: 'Copy preview link',\n })}\n onClick={handleCopyLink}\n >\n <LinkIcon />\n </IconButton>\n </Grid.Item>\n </Grid.Root>\n );\n};\n\nconst PreviewTitle = styled(Typography)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\nexport { PreviewHeader };\n","import * as React from 'react';\n\nimport { Page, useQueryParams, useRBAC, createContext } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Portal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { buildValidParams } from '../../utils/api';\nimport { PreviewContent } from '../components/PreviewContent';\nimport { PreviewHeader } from '../components/PreviewHeader';\nimport { useGetPreviewUrlQuery } from '../services/preview';\n\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreviewContextValue {\n url: string;\n mainField: string;\n document: NonNullable<ReturnType<UseDocument>['document']>;\n meta: NonNullable<ReturnType<UseDocument>['meta']>;\n schema: NonNullable<ReturnType<UseDocument>['schema']>;\n}\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst PreviewPage = () => {\n const { formatMessage } = useIntl();\n\n // Read all the necessary data from the URL to find the right preview URL\n const {\n slug: model,\n id: documentId,\n collectionType,\n } = useParams<{\n slug: UID.ContentType;\n id: string;\n collectionType: string;\n }>();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!collectionType) {\n throw new Error('Could not find collectionType in url params');\n }\n\n if (!model) {\n throw new Error('Could not find model in url params');\n }\n\n // Only collection types must have a documentId\n if (collectionType === COLLECTION_TYPES && !documentId) {\n throw new Error('Could not find documentId in url params');\n }\n\n const previewUrlResponse = useGetPreviewUrlQuery({\n params: {\n contentType: model,\n },\n query: {\n documentId,\n locale: params.locale,\n status: params.status as GetPreviewUrl.Request['query']['status'],\n },\n });\n\n const documentResponse = useDocument({\n model,\n collectionType,\n documentId,\n params,\n });\n\n const documentLayoutResponse = useDocumentLayout(model);\n\n if (\n documentResponse.isLoading ||\n previewUrlResponse.isLoading ||\n documentLayoutResponse.isLoading\n ) {\n return <Page.Loading />;\n }\n\n if (\n previewUrlResponse.error ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema\n ) {\n return <Page.Error />;\n }\n\n if (!previewUrlResponse.data?.data?.url) {\n return <Page.NoData />;\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.preview.page-title',\n defaultMessage: '{contentType} preview',\n },\n {\n contentType: documentLayoutResponse.edit.settings.displayName,\n }\n )}\n </Page.Title>\n <PreviewProvider\n url={previewUrlResponse.data.data.url}\n mainField={documentLayoutResponse.edit.settings.mainField}\n document={documentResponse.document}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n >\n <Flex direction=\"column\" height=\"100%\" alignItems={'stretch'}>\n <PreviewHeader />\n <PreviewContent />\n </Flex>\n </PreviewProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedPreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedPreviewPageImpl = () => {\n const { slug: model } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC([{ action: 'plugin::content-manager.explorer.read', subject: model }]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !model) {\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <PreviewPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedPreviewPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedPreviewPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedPreviewPage, usePreviewContext };\n"],"names":["Link","LinkIcon","permissions"],"mappings":"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"}
|
@@ -11,13 +11,12 @@ const reactIntl = require("react-intl");
|
|
11
11
|
const reactRouterDom = require("react-router-dom");
|
12
12
|
const reactWindow = require("react-window");
|
13
13
|
const styledComponents = require("styled-components");
|
14
|
-
const index = require("./index-
|
15
|
-
const useDragAndDrop = require("./useDragAndDrop-
|
16
|
-
const relations = require("./relations-
|
14
|
+
const index = require("./index-D9vDl-4J.js");
|
15
|
+
const useDragAndDrop = require("./useDragAndDrop-BMtgCYzL.js");
|
16
|
+
const relations = require("./relations-CvZ0Uu8l.js");
|
17
17
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
18
18
|
function _interopNamespace(e) {
|
19
|
-
if (e && e.__esModule)
|
20
|
-
return e;
|
19
|
+
if (e && e.__esModule) return e;
|
21
20
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
22
21
|
if (e) {
|
23
22
|
for (const k in e) {
|
@@ -140,10 +139,8 @@ const RelationsField = React__namespace.forwardRef(
|
|
140
139
|
);
|
141
140
|
const transformedRels = transformations([...data.results]);
|
142
141
|
return [...transformedRels, ...field.value?.connect ?? []].sort((a, b) => {
|
143
|
-
if (a.__temp_key__ < b.__temp_key__)
|
144
|
-
|
145
|
-
if (a.__temp_key__ > b.__temp_key__)
|
146
|
-
return 1;
|
142
|
+
if (a.__temp_key__ < b.__temp_key__) return -1;
|
143
|
+
if (a.__temp_key__ > b.__temp_key__) return 1;
|
147
144
|
return 0;
|
148
145
|
});
|
149
146
|
}, [
|
@@ -747,4 +744,4 @@ exports.FlexWrapper = FlexWrapper;
|
|
747
744
|
exports.LinkEllipsis = LinkEllipsis;
|
748
745
|
exports.MemoizedRelationsField = MemoizedRelationsField;
|
749
746
|
exports.useComponent = useComponent;
|
750
|
-
//# sourceMappingURL=Relations-
|
747
|
+
//# sourceMappingURL=Relations-DXVAOSqj.js.map
|