@strapi/content-manager 5.12.0-beta.1 → 5.12.0
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/chunks/{ComponentConfigurationPage-BBv83V0Q.js → ComponentConfigurationPage-DDybTE9k.js} +3 -3
- package/dist/admin/chunks/{ComponentConfigurationPage-BBv83V0Q.js.map → ComponentConfigurationPage-DDybTE9k.js.map} +1 -1
- package/dist/admin/chunks/{ComponentConfigurationPage-BslfsQzl.mjs → ComponentConfigurationPage-Dtpjt9kW.mjs} +3 -3
- package/dist/admin/chunks/{ComponentConfigurationPage-BslfsQzl.mjs.map → ComponentConfigurationPage-Dtpjt9kW.mjs.map} +1 -1
- package/dist/admin/chunks/{EditConfigurationPage-B9DOw379.mjs → EditConfigurationPage-DAbUlQVr.mjs} +3 -3
- package/dist/admin/chunks/{EditConfigurationPage-B9DOw379.mjs.map → EditConfigurationPage-DAbUlQVr.mjs.map} +1 -1
- package/dist/admin/chunks/{EditConfigurationPage-CNdLJeZx.js → EditConfigurationPage-D_otE6ca.js} +3 -3
- package/dist/admin/chunks/{EditConfigurationPage-CNdLJeZx.js.map → EditConfigurationPage-D_otE6ca.js.map} +1 -1
- package/dist/admin/chunks/{EditViewPage-DtQbJKp9.mjs → EditViewPage-CILYfIn8.mjs} +4 -4
- package/dist/admin/chunks/{EditViewPage-DtQbJKp9.mjs.map → EditViewPage-CILYfIn8.mjs.map} +1 -1
- package/dist/admin/chunks/{EditViewPage-C4hW0wp0.js → EditViewPage-Cd7iCrfo.js} +4 -4
- package/dist/admin/chunks/{EditViewPage-C4hW0wp0.js.map → EditViewPage-Cd7iCrfo.js.map} +1 -1
- package/dist/admin/chunks/{Form-C_A_nt8I.mjs → Form-CER6uyhc.mjs} +2 -2
- package/dist/admin/chunks/{Form-C_A_nt8I.mjs.map → Form-CER6uyhc.mjs.map} +1 -1
- package/dist/admin/chunks/{Form-DdbSAE5E.js → Form-D6ROqMO7.js} +2 -2
- package/dist/admin/chunks/{Form-DdbSAE5E.js.map → Form-D6ROqMO7.js.map} +1 -1
- package/dist/admin/chunks/{History-BMtfd-K3.mjs → History-CORGJtti.mjs} +4 -4
- package/dist/admin/chunks/{History-BMtfd-K3.mjs.map → History-CORGJtti.mjs.map} +1 -1
- package/dist/admin/chunks/{History-XhYubUOl.js → History-DECiFmYO.js} +4 -4
- package/dist/admin/chunks/{History-XhYubUOl.js.map → History-DECiFmYO.js.map} +1 -1
- package/dist/admin/chunks/{Input-k2wrKBei.js → Input-D3aI7eJe.js} +35 -10
- package/dist/admin/chunks/Input-D3aI7eJe.js.map +1 -0
- package/dist/admin/chunks/{Input-CdL3aceg.mjs → Input-hScqTWvW.mjs} +35 -10
- package/dist/admin/chunks/Input-hScqTWvW.mjs.map +1 -0
- package/dist/admin/chunks/{ListConfigurationPage-yuJxuXRe.mjs → ListConfigurationPage-Bgya7skT.mjs} +2 -2
- package/dist/admin/chunks/{ListConfigurationPage-yuJxuXRe.mjs.map → ListConfigurationPage-Bgya7skT.mjs.map} +1 -1
- package/dist/admin/chunks/{ListConfigurationPage-CWHRkx7T.js → ListConfigurationPage-BiKI9-fH.js} +2 -2
- package/dist/admin/chunks/{ListConfigurationPage-CWHRkx7T.js.map → ListConfigurationPage-BiKI9-fH.js.map} +1 -1
- package/dist/admin/chunks/{ListViewPage-DNVvdcPG.mjs → ListViewPage-B3Frxm6y.mjs} +3 -3
- package/dist/admin/chunks/{ListViewPage-DNVvdcPG.mjs.map → ListViewPage-B3Frxm6y.mjs.map} +1 -1
- package/dist/admin/chunks/{ListViewPage-CZSzcPm-.js → ListViewPage-BfFRaMK8.js} +3 -3
- package/dist/admin/chunks/{ListViewPage-CZSzcPm-.js.map → ListViewPage-BfFRaMK8.js.map} +1 -1
- package/dist/admin/chunks/{NoContentTypePage-DouLpUHV.mjs → NoContentTypePage-B2rBgAB9.mjs} +2 -2
- package/dist/admin/chunks/{NoContentTypePage-DouLpUHV.mjs.map → NoContentTypePage-B2rBgAB9.mjs.map} +1 -1
- package/dist/admin/chunks/{NoContentTypePage-KLPfLWVA.js → NoContentTypePage-C-WQTH0F.js} +2 -2
- package/dist/admin/chunks/{NoContentTypePage-KLPfLWVA.js.map → NoContentTypePage-C-WQTH0F.js.map} +1 -1
- package/dist/admin/chunks/{NoPermissionsPage-BiMOAuSo.mjs → NoPermissionsPage-BNXoY-4Q.mjs} +2 -2
- package/dist/admin/chunks/{NoPermissionsPage-BiMOAuSo.mjs.map → NoPermissionsPage-BNXoY-4Q.mjs.map} +1 -1
- package/dist/admin/chunks/{NoPermissionsPage-YYWP7EKY.js → NoPermissionsPage-D0T5uTtv.js} +2 -2
- package/dist/admin/chunks/{NoPermissionsPage-YYWP7EKY.js.map → NoPermissionsPage-D0T5uTtv.js.map} +1 -1
- package/dist/admin/chunks/{Preview-8i9JsLMo.js → Preview-BvCbqXQY.js} +77 -166
- package/dist/admin/chunks/Preview-BvCbqXQY.js.map +1 -0
- package/dist/admin/chunks/{Preview-j5KbuGaQ.mjs → Preview-D4L4y24d.mjs} +79 -168
- package/dist/admin/chunks/Preview-D4L4y24d.mjs.map +1 -0
- package/dist/admin/chunks/{index-B3Mqveme.js → index-CB_ymrXf.js} +32 -19
- package/dist/admin/chunks/index-CB_ymrXf.js.map +1 -0
- package/dist/admin/chunks/{index-DXKkvSHM.mjs → index-DsOgMEE-.mjs} +32 -19
- package/dist/admin/chunks/index-DsOgMEE-.mjs.map +1 -0
- package/dist/admin/chunks/{layout-1OGQ76-V.mjs → layout-C8AQHDvk.mjs} +4 -4
- package/dist/admin/chunks/{layout-1OGQ76-V.mjs.map → layout-C8AQHDvk.mjs.map} +1 -1
- package/dist/admin/chunks/{layout-PuWh68tF.js → layout-DGlrPEkC.js} +4 -4
- package/dist/admin/chunks/{layout-PuWh68tF.js.map → layout-DGlrPEkC.js.map} +1 -1
- package/dist/admin/chunks/{usePrev-BmTQq13K.mjs → usePrev-BJk2lXYH.mjs} +2 -2
- package/dist/admin/chunks/{usePrev-BmTQq13K.mjs.map → usePrev-BJk2lXYH.mjs.map} +1 -1
- package/dist/admin/chunks/{usePrev-D-A4N6nF.js → usePrev-BXNyqdUp.js} +2 -2
- package/dist/admin/chunks/{usePrev-D-A4N6nF.js.map → usePrev-BXNyqdUp.js.map} +1 -1
- package/dist/admin/chunks/{zh-Hans-CI0HKio3.mjs → zh-Hans-DEAhqI3x.mjs} +3 -2
- package/dist/admin/chunks/{zh-Hans-CI0HKio3.mjs.map → zh-Hans-DEAhqI3x.mjs.map} +1 -1
- package/dist/admin/chunks/{zh-Hans-JVK9x7xr.js → zh-Hans-Djj7eGpO.js} +3 -2
- package/dist/admin/chunks/{zh-Hans-JVK9x7xr.js.map → zh-Hans-Djj7eGpO.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/content-manager.d.ts +2 -0
- package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -1
- package/dist/admin/src/preview/components/PreviewHeader.d.ts +1 -2
- package/package.json +6 -6
- package/dist/admin/chunks/Input-CdL3aceg.mjs.map +0 -1
- package/dist/admin/chunks/Input-k2wrKBei.js.map +0 -1
- package/dist/admin/chunks/Preview-8i9JsLMo.js.map +0 -1
- package/dist/admin/chunks/Preview-j5KbuGaQ.mjs.map +0 -1
- package/dist/admin/chunks/index-B3Mqveme.js.map +0 -1
- package/dist/admin/chunks/index-DXKkvSHM.mjs.map +0 -1
- package/dist/admin/src/preview/components/PreviewContent.d.ts +0 -2
@@ -1,15 +1,15 @@
|
|
1
|
-
import {
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
2
2
|
import * as React from 'react';
|
3
3
|
import { useStrapiApp, useQueryParams, useNotification, useClipboard, DescriptionComponentRenderer, useHistory, createContext, useRBAC, Page, Form, Blocker } from '@strapi/admin/strapi-admin';
|
4
|
-
import {
|
4
|
+
import { Typography, Tabs, Flex, IconButton, Portal, FocusTrap, Box } from '@strapi/design-system';
|
5
5
|
import { Link, Cross, ArrowLineLeft } from '@strapi/icons';
|
6
6
|
import { useIntl } from 'react-intl';
|
7
7
|
import { Link as Link$1, useParams, useLocation } from 'react-router-dom';
|
8
8
|
import { styled } from 'styled-components';
|
9
|
-
import { c as useDocumentContext, I as InjectionZone, j as DocumentActionButton, D as DocumentStatus, i as DocumentRBAC, k as buildValidParams, C as COLLECTION_TYPES, V as useGetPreviewUrlQuery, U as useDocument, d as useDocumentLayout, p as DocumentContextProvider, h as createYupSchema } from './index-
|
10
|
-
import { a as FormLayout } from './Input-
|
9
|
+
import { c as useDocumentContext, I as InjectionZone, j as DocumentActionButton, D as DocumentStatus, i as DocumentRBAC, k as buildValidParams, C as COLLECTION_TYPES, V as useGetPreviewUrlQuery, U as useDocument, d as useDocumentLayout, p as DocumentContextProvider, h as createYupSchema } from './index-DsOgMEE-.mjs';
|
10
|
+
import { a as FormLayout } from './Input-hScqTWvW.mjs';
|
11
11
|
import { stringify } from 'qs';
|
12
|
-
import { getDocumentStatus } from './EditViewPage-
|
12
|
+
import { getDocumentStatus } from './EditViewPage-CILYfIn8.mjs';
|
13
13
|
import 'lodash/fp/mapValues';
|
14
14
|
import 'yup';
|
15
15
|
import 'fractional-indexing';
|
@@ -70,7 +70,7 @@ import 'prismjs/components/prism-typescript';
|
|
70
70
|
import 'prismjs/components/prism-tsx';
|
71
71
|
import 'prismjs/components/prism-vbnet';
|
72
72
|
import 'prismjs/components/prism-yaml';
|
73
|
-
import './usePrev-
|
73
|
+
import './usePrev-BJk2lXYH.mjs';
|
74
74
|
import './objects-D2z-IJgu.mjs';
|
75
75
|
import 'react-dnd';
|
76
76
|
import 'lodash/clone';
|
@@ -96,22 +96,6 @@ import 'markdown-it-sup';
|
|
96
96
|
import 'highlight.js/styles/solarized-dark.css';
|
97
97
|
import 'codemirror5/addon/display/placeholder';
|
98
98
|
|
99
|
-
const PreviewContent = ()=>{
|
100
|
-
const previewUrl = usePreviewContext('PreviewContent', (state)=>state.url);
|
101
|
-
const { formatMessage } = useIntl();
|
102
|
-
return /*#__PURE__*/ jsx(Box, {
|
103
|
-
src: previewUrl,
|
104
|
-
title: formatMessage({
|
105
|
-
id: 'content-manager.preview.panel.title',
|
106
|
-
defaultMessage: 'Preview'
|
107
|
-
}),
|
108
|
-
width: "100%",
|
109
|
-
height: "100%",
|
110
|
-
borderWidth: 0,
|
111
|
-
tag: "iframe"
|
112
|
-
}, previewUrl);
|
113
|
-
};
|
114
|
-
|
115
99
|
/* -------------------------------------------------------------------------------------------------
|
116
100
|
* ClosePreviewButton
|
117
101
|
* -----------------------------------------------------------------------------------------------*/ const ClosePreviewButton = ()=>{
|
@@ -223,7 +207,7 @@ const PreviewTabs = ()=>{
|
|
223
207
|
};
|
224
208
|
/* -------------------------------------------------------------------------------------------------
|
225
209
|
* PreviewHeader
|
226
|
-
* -----------------------------------------------------------------------------------------------*/ const
|
210
|
+
* -----------------------------------------------------------------------------------------------*/ const PreviewHeader = ()=>{
|
227
211
|
const title = usePreviewContext('PreviewHeader', (state)=>state.title);
|
228
212
|
const document = usePreviewContext('PreviewHeader', (state)=>state.document);
|
229
213
|
const schema = usePreviewContext('PreviewHeader', (state)=>state.schema);
|
@@ -252,7 +236,8 @@ const PreviewTabs = ()=>{
|
|
252
236
|
documentId: document.documentId,
|
253
237
|
document,
|
254
238
|
meta,
|
255
|
-
onPreview
|
239
|
+
onPreview,
|
240
|
+
fromPreview: true
|
256
241
|
};
|
257
242
|
return /*#__PURE__*/ jsxs(Flex, {
|
258
243
|
height: "48px",
|
@@ -343,74 +328,6 @@ const PreviewTabs = ()=>{
|
|
343
328
|
]
|
344
329
|
});
|
345
330
|
};
|
346
|
-
const PreviewHeader = ()=>{
|
347
|
-
// Get the document title
|
348
|
-
const title = usePreviewContext('PreviewHeader', (state)=>state.title);
|
349
|
-
const { formatMessage } = useIntl();
|
350
|
-
const { toggleNotification } = useNotification();
|
351
|
-
const { copy } = useClipboard();
|
352
|
-
const handleCopyLink = ()=>{
|
353
|
-
copy(window.location.href);
|
354
|
-
toggleNotification({
|
355
|
-
message: formatMessage({
|
356
|
-
id: 'content-manager.preview.copy.success',
|
357
|
-
defaultMessage: 'Copied preview link'
|
358
|
-
}),
|
359
|
-
type: 'success'
|
360
|
-
});
|
361
|
-
};
|
362
|
-
return /*#__PURE__*/ jsxs(Grid.Root, {
|
363
|
-
gap: 3,
|
364
|
-
gridCols: 3,
|
365
|
-
paddingLeft: 2,
|
366
|
-
paddingRight: 2,
|
367
|
-
background: "neutral0",
|
368
|
-
borderColor: "neutral150",
|
369
|
-
tag: "header",
|
370
|
-
children: [
|
371
|
-
/*#__PURE__*/ jsxs(Grid.Item, {
|
372
|
-
xs: 1,
|
373
|
-
paddingTop: 2,
|
374
|
-
paddingBottom: 2,
|
375
|
-
gap: 3,
|
376
|
-
children: [
|
377
|
-
/*#__PURE__*/ jsx(ClosePreviewButton, {}),
|
378
|
-
/*#__PURE__*/ jsx(PreviewTitle, {
|
379
|
-
tag: "h1",
|
380
|
-
fontWeight: 600,
|
381
|
-
fontSize: 2,
|
382
|
-
maxWidth: "200px",
|
383
|
-
title: title,
|
384
|
-
children: title
|
385
|
-
}),
|
386
|
-
/*#__PURE__*/ jsx(Status, {})
|
387
|
-
]
|
388
|
-
}),
|
389
|
-
/*#__PURE__*/ jsx(Grid.Item, {
|
390
|
-
xs: 1,
|
391
|
-
marginBottom: "-1px",
|
392
|
-
alignItems: "end",
|
393
|
-
margin: "auto",
|
394
|
-
children: /*#__PURE__*/ jsx(PreviewTabs, {})
|
395
|
-
}),
|
396
|
-
/*#__PURE__*/ jsx(Grid.Item, {
|
397
|
-
xs: 1,
|
398
|
-
justifyContent: "end",
|
399
|
-
paddingTop: 2,
|
400
|
-
paddingBottom: 2,
|
401
|
-
children: /*#__PURE__*/ jsx(IconButton, {
|
402
|
-
type: "button",
|
403
|
-
label: formatMessage({
|
404
|
-
id: 'preview.copy.label',
|
405
|
-
defaultMessage: 'Copy preview link'
|
406
|
-
}),
|
407
|
-
onClick: handleCopyLink,
|
408
|
-
children: /*#__PURE__*/ jsx(Link, {})
|
409
|
-
})
|
410
|
-
})
|
411
|
-
]
|
412
|
-
});
|
413
|
-
};
|
414
331
|
const PreviewTitle = styled(Typography)`
|
415
332
|
overflow: hidden;
|
416
333
|
text-overflow: ellipsis;
|
@@ -497,6 +414,7 @@ const PreviewPage = ()=>{
|
|
497
414
|
}, // The iframe origin is safe to use since it must be provided through the allowedOrigins config
|
498
415
|
new URL(iframeRef.current.src).origin);
|
499
416
|
};
|
417
|
+
const hasAdvancedPreview = window.strapi.features.isEnabled('cms-advanced-preview');
|
500
418
|
return /*#__PURE__*/ jsxs(Fragment, {
|
501
419
|
children: [
|
502
420
|
/*#__PURE__*/ jsx(Page.Title, {
|
@@ -536,85 +454,78 @@ const PreviewPage = ()=>{
|
|
536
454
|
abortEarly: false
|
537
455
|
});
|
538
456
|
},
|
539
|
-
children: ({ resetForm })=>/*#__PURE__*/
|
457
|
+
children: ({ resetForm })=>/*#__PURE__*/ jsxs(Flex, {
|
540
458
|
direction: "column",
|
541
459
|
height: "100%",
|
542
460
|
alignItems: "stretch",
|
543
|
-
children:
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
hasBackground: false
|
569
|
-
})
|
570
|
-
}),
|
571
|
-
/*#__PURE__*/ jsxs(Box, {
|
572
|
-
position: "relative",
|
573
|
-
flex: 1,
|
574
|
-
height: "100%",
|
575
|
-
overflow: "hidden",
|
576
|
-
children: [
|
577
|
-
/*#__PURE__*/ jsx(Box, {
|
578
|
-
"data-testid": "preview-iframe",
|
579
|
-
ref: iframeRef,
|
580
|
-
src: previewUrl,
|
581
|
-
title: formatMessage({
|
582
|
-
id: 'content-manager.preview.panel.title',
|
583
|
-
defaultMessage: 'Preview'
|
584
|
-
}),
|
585
|
-
width: "100%",
|
586
|
-
height: "100%",
|
587
|
-
borderWidth: 0,
|
588
|
-
tag: "iframe"
|
589
|
-
}, previewUrl),
|
590
|
-
/*#__PURE__*/ jsx(IconButton, {
|
591
|
-
variant: "tertiary",
|
592
|
-
label: formatMessage(isSideEditorOpen ? {
|
593
|
-
id: 'content-manager.preview.content.close-editor',
|
594
|
-
defaultMessage: 'Close editor'
|
595
|
-
} : {
|
596
|
-
id: 'content-manager.preview.content.open-editor',
|
597
|
-
defaultMessage: 'Open editor'
|
598
|
-
}),
|
599
|
-
onClick: ()=>setIsSideEditorOpen((prev)=>!prev),
|
600
|
-
position: "absolute",
|
601
|
-
top: 2,
|
602
|
-
left: 2,
|
603
|
-
children: /*#__PURE__*/ jsx(AnimatedArrow, {
|
604
|
-
isSideEditorOpen: isSideEditorOpen
|
605
|
-
})
|
606
|
-
})
|
607
|
-
]
|
461
|
+
children: [
|
462
|
+
/*#__PURE__*/ jsx(Blocker, {
|
463
|
+
onProceed: resetForm
|
464
|
+
}),
|
465
|
+
/*#__PURE__*/ jsx(PreviewHeader, {}),
|
466
|
+
/*#__PURE__*/ jsxs(Flex, {
|
467
|
+
flex: 1,
|
468
|
+
overflow: "auto",
|
469
|
+
alignItems: "stretch",
|
470
|
+
children: [
|
471
|
+
hasAdvancedPreview && /*#__PURE__*/ jsx(Box, {
|
472
|
+
overflow: "auto",
|
473
|
+
width: isSideEditorOpen ? '50%' : 0,
|
474
|
+
borderWidth: "0 1px 0 0",
|
475
|
+
borderColor: "neutral150",
|
476
|
+
paddingTop: 6,
|
477
|
+
paddingBottom: 6,
|
478
|
+
// Remove horizontal padding when the editor is closed or it won't fully disappear
|
479
|
+
paddingLeft: isSideEditorOpen ? 6 : 0,
|
480
|
+
paddingRight: isSideEditorOpen ? 6 : 0,
|
481
|
+
transition: "all 0.2s ease-in-out",
|
482
|
+
children: /*#__PURE__*/ jsx(FormLayout, {
|
483
|
+
layout: documentLayoutResponse.edit.layout,
|
484
|
+
document: documentResponse,
|
485
|
+
hasBackground: false
|
608
486
|
})
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
487
|
+
}),
|
488
|
+
/*#__PURE__*/ jsxs(Box, {
|
489
|
+
position: "relative",
|
490
|
+
flex: 1,
|
491
|
+
height: "100%",
|
492
|
+
overflow: "hidden",
|
493
|
+
children: [
|
494
|
+
/*#__PURE__*/ jsx(Box, {
|
495
|
+
"data-testid": "preview-iframe",
|
496
|
+
ref: iframeRef,
|
497
|
+
src: previewUrl,
|
498
|
+
title: formatMessage({
|
499
|
+
id: 'content-manager.preview.panel.title',
|
500
|
+
defaultMessage: 'Preview'
|
501
|
+
}),
|
502
|
+
width: "100%",
|
503
|
+
height: "100%",
|
504
|
+
borderWidth: 0,
|
505
|
+
tag: "iframe"
|
506
|
+
}, previewUrl),
|
507
|
+
hasAdvancedPreview && /*#__PURE__*/ jsx(IconButton, {
|
508
|
+
variant: "tertiary",
|
509
|
+
label: formatMessage(isSideEditorOpen ? {
|
510
|
+
id: 'content-manager.preview.content.close-editor',
|
511
|
+
defaultMessage: 'Close editor'
|
512
|
+
} : {
|
513
|
+
id: 'content-manager.preview.content.open-editor',
|
514
|
+
defaultMessage: 'Open editor'
|
515
|
+
}),
|
516
|
+
onClick: ()=>setIsSideEditorOpen((prev)=>!prev),
|
517
|
+
position: "absolute",
|
518
|
+
top: 2,
|
519
|
+
left: 2,
|
520
|
+
children: /*#__PURE__*/ jsx(AnimatedArrow, {
|
521
|
+
isSideEditorOpen: isSideEditorOpen
|
522
|
+
})
|
523
|
+
})
|
524
|
+
]
|
525
|
+
})
|
526
|
+
]
|
527
|
+
})
|
528
|
+
]
|
618
529
|
})
|
619
530
|
})
|
620
531
|
})
|
@@ -681,4 +592,4 @@ const ProtectedPreviewPage = ()=>{
|
|
681
592
|
};
|
682
593
|
|
683
594
|
export { ProtectedPreviewPage, usePreviewContext };
|
684
|
-
//# sourceMappingURL=Preview-
|
595
|
+
//# sourceMappingURL=Preview-D4L4y24d.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Preview-D4L4y24d.mjs","sources":["../../../admin/src/preview/components/PreviewHeader.tsx","../../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useClipboard,\n useHistory,\n useNotification,\n useQueryParams,\n useStrapiApp,\n} from '@strapi/admin/strapi-admin';\nimport { IconButton, Tabs, Typography, Flex } 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 { InjectionZone } from '../../components/InjectionZone';\nimport { useDocumentContext } from '../../features/DocumentContext';\nimport { DocumentActionButton } from '../../pages/EditView/components/DocumentActions';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDocumentStatus } from '../../pages/EditView/EditViewPage';\nimport { usePreviewContext } from '../pages/Preview';\n\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../content-manager';\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 variant=\"ghost\"\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 <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 * PreviewHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst PreviewHeader = () => {\n const title = usePreviewContext('PreviewHeader', (state) => state.title);\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 plugins = useStrapiApp('PreviewHeader', (state) => state.plugins);\n const onPreview = useDocumentContext('PreviewHeader', (state) => state.onPreview);\n\n const [{ query }] = useQueryParams<{\n status?: 'draft' | 'published';\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 const hasDraftAndPublish = schema.options?.draftAndPublish ?? false;\n const documentActionProps = {\n activeTab: query.status ?? null,\n collectionType: schema.kind === 'collectionType' ? 'collection-types' : 'single-types',\n model: schema.uid,\n documentId: document.documentId,\n document,\n meta,\n onPreview,\n fromPreview: true,\n } satisfies DocumentActionProps;\n\n return (\n <Flex height=\"48px\" gap={4} background=\"neutral0\" borderColor=\"neutral150\" tag=\"header\">\n {/* Title and status */}\n <TitleContainer height=\"100%\" paddingLeft={2} paddingRight={4}>\n <ClosePreviewButton />\n <PreviewTitle\n tag=\"h1\"\n title={title}\n maxWidth=\"200px\"\n fontSize={2}\n paddingLeft={2}\n paddingRight={3}\n fontWeight={600}\n >\n {title}\n </PreviewTitle>\n <Status />\n </TitleContainer>\n\n {/* Tabs and actions */}\n <Flex\n flex={1}\n paddingRight={2}\n gap={2}\n justifyContent={hasDraftAndPublish ? 'space-between' : 'flex-end'}\n >\n <Flex flex=\"1 1 70%\">\n <PreviewTabs />\n </Flex>\n <Flex gap={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 <InjectionZone area=\"preview.actions\" />\n <DescriptionComponentRenderer\n props={documentActionProps}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('preview')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) =>\n [action.position].flat().includes('preview')\n );\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n </Flex>\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\nconst TitleContainer = styled(Flex)`\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nexport { PreviewHeader };\n","import * as React from 'react';\n\nimport {\n Page,\n useQueryParams,\n useRBAC,\n createContext,\n Form as FormContext,\n Blocker,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, IconButton, Portal } from '@strapi/design-system';\nimport { ArrowLineLeft } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentContextProvider } from '../../features/DocumentContext';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { FormLayout } from '../../pages/EditView/components/FormLayout';\nimport { buildValidParams } from '../../utils/api';\nimport { createYupSchema } from '../../utils/validation';\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 title: string;\n document: NonNullable<ReturnType<UseDocument>['document']>;\n meta: NonNullable<ReturnType<UseDocument>['meta']>;\n schema: NonNullable<ReturnType<UseDocument>['schema']>;\n layout: EditLayout;\n}\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AnimatedArrow = styled(ArrowLineLeft)<{ isSideEditorOpen: boolean }>`\n will-change: transform;\n rotate: ${(props) => (props.isSideEditorOpen ? '0deg' : '180deg')};\n transition: rotate 0.2s ease-in-out;\n`;\n\nconst PreviewPage = () => {\n const location = useLocation();\n const { formatMessage } = useIntl();\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null);\n const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);\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 status?: string;\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 const documentResponse = useDocument({\n model,\n collectionType,\n documentId,\n params,\n });\n const documentLayoutResponse = useDocumentLayout(model);\n\n const isLoading =\n previewUrlResponse.isLoading || documentLayoutResponse.isLoading || documentResponse.isLoading;\n if (isLoading && !documentResponse.document?.documentId) {\n return <Page.Loading />;\n }\n\n const initialValues = documentResponse.getInitialFormValues();\n\n if (\n previewUrlResponse.error ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema ||\n !initialValues\n ) {\n return <Page.Error />;\n }\n\n if (!previewUrlResponse.data?.data?.url) {\n return <Page.NoData />;\n }\n\n const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validateSync(values, { abortEarly: false });\n };\n\n const previewUrl = previewUrlResponse.data.data.url;\n\n const onPreview = () => {\n iframeRef?.current?.contentWindow?.postMessage(\n { type: 'strapiUpdate' },\n // The iframe origin is safe to use since it must be provided through the allowedOrigins config\n new URL(iframeRef.current.src).origin\n );\n };\n\n const hasAdvancedPreview = window.strapi.features.isEnabled('cms-advanced-preview');\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: documentTitle,\n }\n )}\n </Page.Title>\n <DocumentContextProvider\n initialDocument={{\n documentId: documentId || '',\n model,\n collectionType,\n }}\n onPreview={onPreview}\n >\n <PreviewProvider\n url={previewUrl}\n document={documentResponse.document}\n title={documentTitle}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n layout={documentLayoutResponse.edit}\n >\n <FormContext\n method=\"PUT\"\n disabled={\n query.status === 'published' &&\n documentResponse &&\n documentResponse.document.status === 'published'\n }\n initialValues={documentResponse.getInitialFormValues()}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n height=\"100%\"\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n >\n {({ resetForm }) => (\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\">\n <Blocker onProceed={resetForm} />\n <PreviewHeader />\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\">\n {hasAdvancedPreview && (\n <Box\n overflow=\"auto\"\n width={isSideEditorOpen ? '50%' : 0}\n borderWidth=\"0 1px 0 0\"\n borderColor=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n // Remove horizontal padding when the editor is closed or it won't fully disappear\n paddingLeft={isSideEditorOpen ? 6 : 0}\n paddingRight={isSideEditorOpen ? 6 : 0}\n transition=\"all 0.2s ease-in-out\"\n >\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={documentResponse}\n hasBackground={false}\n />\n </Box>\n )}\n\n <Box position=\"relative\" flex={1} height=\"100%\" overflow=\"hidden\">\n <Box\n data-testid=\"preview-iframe\"\n ref={iframeRef}\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 {hasAdvancedPreview && (\n <IconButton\n variant=\"tertiary\"\n label={formatMessage(\n isSideEditorOpen\n ? {\n id: 'content-manager.preview.content.close-editor',\n defaultMessage: 'Close editor',\n }\n : {\n id: 'content-manager.preview.content.open-editor',\n defaultMessage: 'Open editor',\n }\n )}\n onClick={() => setIsSideEditorOpen((prev) => !prev)}\n position=\"absolute\"\n top={2}\n left={2}\n >\n <AnimatedArrow isSideEditorOpen={isSideEditorOpen} />\n </IconButton>\n )}\n </Box>\n </Flex>\n </Flex>\n )}\n </FormContext>\n </PreviewProvider>\n </DocumentContextProvider>\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([\n { action: 'plugin::content-manager.explorer.read', subject: model },\n { action: 'plugin::content-manager.explorer.update', subject: model },\n { action: 'plugin::content-manager.explorer.publish', subject: model },\n ]);\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\n permissions={permissions.filter((permission) =>\n permission.action.includes('explorer.read')\n )}\n >\n <DocumentRBAC permissions={permissions}>\n <PreviewPage />\n </DocumentRBAC>\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":["ClosePreviewButton","query","useQueryParams","formatMessage","useIntl","canGoBack","useHistory","state","goBack","history","locationIndex","currentLocationIndex","historyTo","at","undefined","fallback","pathname","search","stringify","encode","toWithFallback","handleClick","e","preventDefault","_jsx","IconButton","variant","tag","Link","relative","to","onClick","label","id","defaultMessage","Cross","Status","document","usePreviewContext","schema","meta","hasDraftAndPublished","options","draftAndPublish","status","getDocumentStatus","DocumentStatus","size","PreviewTabs","setQuery","hasDraftAndPublish","documentStatus","handleTabChange","Tabs","Root","value","onValueChange","_jsxs","List","aria-label","StatusTab","disabled","PreviewHeader","title","plugins","useStrapiApp","onPreview","useDocumentContext","toggleNotification","useNotification","copy","useClipboard","handleCopyLink","window","location","href","message","type","documentActionProps","activeTab","collectionType","kind","model","uid","documentId","fromPreview","Flex","height","gap","background","borderColor","TitleContainer","paddingLeft","paddingRight","PreviewTitle","maxWidth","fontSize","fontWeight","flex","justifyContent","LinkIcon","InjectionZone","area","DescriptionComponentRenderer","props","descriptions","apis","getDocumentActions","actions","filteredActions","filter","action","position","flat","includes","primaryAction","secondaryAction","_Fragment","DocumentActionButton","styled","Typography","Trigger","theme","colors","neutral150","PreviewProvider","createContext","AnimatedArrow","ArrowLineLeft","isSideEditorOpen","PreviewPage","useLocation","iframeRef","React","useRef","setIsSideEditorOpen","useState","slug","useParams","params","useMemo","buildValidParams","Error","COLLECTION_TYPES","previewUrlResponse","useGetPreviewUrlQuery","contentType","locale","documentResponse","useDocument","documentLayoutResponse","useDocumentLayout","isLoading","Page","Loading","initialValues","getInitialFormValues","error","data","url","NoData","documentTitle","getTitle","edit","settings","mainField","validateSync","values","yupSchema","createYupSchema","attributes","components","abortEarly","previewUrl","current","contentWindow","postMessage","URL","src","origin","hasAdvancedPreview","strapi","features","isEnabled","Title","DocumentContextProvider","initialDocument","layout","FormContext","method","initialErrors","forceValidation","validate","resetForm","direction","alignItems","Blocker","onProceed","overflow","Box","width","borderWidth","paddingTop","paddingBottom","transition","FormLayout","hasBackground","data-testid","ref","prev","top","left","ProtectedPreviewPageImpl","permissions","useRBAC","subject","zIndex","Protect","permission","DocumentRBAC","ProtectedPreviewPage","Portal","FocusTrap"],"mappings":"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"}
|
@@ -1774,7 +1774,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
1774
1774
|
* ```
|
1775
1775
|
*
|
1776
1776
|
* @see {@link https://contributor.strapi.io/docs/core/content-manager/hooks/use-document-operations} for more information
|
1777
|
-
*/ const useDocumentActions = ()=>{
|
1777
|
+
*/ const useDocumentActions = (fromPreview = false, fromRelationModal = false)=>{
|
1778
1778
|
const { toggleNotification } = strapiAdmin.useNotification();
|
1779
1779
|
const { formatMessage } = reactIntl.useIntl();
|
1780
1780
|
const { trackUsage } = strapiAdmin.useTracking();
|
@@ -1932,7 +1932,9 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
1932
1932
|
};
|
1933
1933
|
}
|
1934
1934
|
trackUsage('didPublishEntry', {
|
1935
|
-
documentId
|
1935
|
+
documentId,
|
1936
|
+
fromPreview,
|
1937
|
+
fromRelationModal
|
1936
1938
|
});
|
1937
1939
|
toggleNotification({
|
1938
1940
|
type: 'success',
|
@@ -1952,6 +1954,8 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
1952
1954
|
}, [
|
1953
1955
|
trackUsage,
|
1954
1956
|
publishDocument,
|
1957
|
+
fromPreview,
|
1958
|
+
fromRelationModal,
|
1955
1959
|
toggleNotification,
|
1956
1960
|
formatMessage,
|
1957
1961
|
formatAPIError
|
@@ -2022,7 +2026,9 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
2022
2026
|
}
|
2023
2027
|
trackUsage('didEditEntry', {
|
2024
2028
|
...trackerProperty,
|
2025
|
-
documentId: res.data.data.documentId
|
2029
|
+
documentId: res.data.data.documentId,
|
2030
|
+
fromPreview,
|
2031
|
+
fromRelationModal
|
2026
2032
|
});
|
2027
2033
|
toggleNotification({
|
2028
2034
|
type: 'success',
|
@@ -2046,6 +2052,8 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
2046
2052
|
}, [
|
2047
2053
|
trackUsage,
|
2048
2054
|
updateDocument,
|
2055
|
+
fromPreview,
|
2056
|
+
fromRelationModal,
|
2049
2057
|
toggleNotification,
|
2050
2058
|
formatMessage,
|
2051
2059
|
formatAPIError
|
@@ -2187,6 +2195,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
2187
2195
|
createDocument,
|
2188
2196
|
formatAPIError,
|
2189
2197
|
formatMessage,
|
2198
|
+
setCurrentStep,
|
2190
2199
|
toggleNotification,
|
2191
2200
|
trackUsage
|
2192
2201
|
]);
|
@@ -2305,7 +2314,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
2305
2314
|
};
|
2306
2315
|
};
|
2307
2316
|
|
2308
|
-
const ProtectedHistoryPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.resolve().then(function () { return require('./History-
|
2317
|
+
const ProtectedHistoryPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.resolve().then(function () { return require('./History-DECiFmYO.js'); }).then((mod)=>({
|
2309
2318
|
default: mod.ProtectedHistoryPage
|
2310
2319
|
})));
|
2311
2320
|
/**
|
@@ -2321,7 +2330,7 @@ const ProtectedHistoryPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.res
|
|
2321
2330
|
}
|
2322
2331
|
];
|
2323
2332
|
|
2324
|
-
const ProtectedPreviewPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.resolve().then(function () { return require('./Preview-
|
2333
|
+
const ProtectedPreviewPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.resolve().then(function () { return require('./Preview-BvCbqXQY.js'); }).then((mod)=>({
|
2325
2334
|
default: mod.ProtectedPreviewPage
|
2326
2335
|
})));
|
2327
2336
|
const routes$1 = [
|
@@ -2335,25 +2344,25 @@ const routes$1 = [
|
|
2335
2344
|
}
|
2336
2345
|
];
|
2337
2346
|
|
2338
|
-
const ProtectedEditViewPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./EditViewPage-
|
2347
|
+
const ProtectedEditViewPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./EditViewPage-Cd7iCrfo.js'); }).then((mod)=>({
|
2339
2348
|
default: mod.ProtectedEditViewPage
|
2340
2349
|
})));
|
2341
|
-
const ProtectedListViewPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ListViewPage-
|
2350
|
+
const ProtectedListViewPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ListViewPage-BfFRaMK8.js'); }).then((mod)=>({
|
2342
2351
|
default: mod.ProtectedListViewPage
|
2343
2352
|
})));
|
2344
|
-
const ProtectedListConfiguration = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ListConfigurationPage-
|
2353
|
+
const ProtectedListConfiguration = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ListConfigurationPage-BiKI9-fH.js'); }).then((mod)=>({
|
2345
2354
|
default: mod.ProtectedListConfiguration
|
2346
2355
|
})));
|
2347
|
-
const ProtectedEditConfigurationPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./EditConfigurationPage-
|
2356
|
+
const ProtectedEditConfigurationPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./EditConfigurationPage-D_otE6ca.js'); }).then((mod)=>({
|
2348
2357
|
default: mod.ProtectedEditConfigurationPage
|
2349
2358
|
})));
|
2350
|
-
const ProtectedComponentConfigurationPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ComponentConfigurationPage-
|
2359
|
+
const ProtectedComponentConfigurationPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ComponentConfigurationPage-DDybTE9k.js'); }).then((mod)=>({
|
2351
2360
|
default: mod.ProtectedComponentConfigurationPage
|
2352
2361
|
})));
|
2353
|
-
const NoPermissions = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./NoPermissionsPage-
|
2362
|
+
const NoPermissions = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./NoPermissionsPage-D0T5uTtv.js'); }).then((mod)=>({
|
2354
2363
|
default: mod.NoPermissions
|
2355
2364
|
})));
|
2356
|
-
const NoContentType = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./NoContentTypePage-
|
2365
|
+
const NoContentType = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./NoContentTypePage-C-WQTH0F.js'); }).then((mod)=>({
|
2357
2366
|
default: mod.NoContentType
|
2358
2367
|
})));
|
2359
2368
|
const CollectionTypePages = ()=>{
|
@@ -2740,7 +2749,7 @@ const transformData = (data)=>{
|
|
2740
2749
|
};
|
2741
2750
|
/* -------------------------------------------------------------------------------------------------
|
2742
2751
|
* DocumentActionComponents
|
2743
|
-
* -----------------------------------------------------------------------------------------------*/ const PublishAction$1 = ({ activeTab, documentId, model, collectionType, meta, document, onPreview })=>{
|
2752
|
+
* -----------------------------------------------------------------------------------------------*/ const PublishAction$1 = ({ activeTab, documentId, model, collectionType, meta, document, onPreview, fromPreview = false, fromRelationModal = false })=>{
|
2744
2753
|
const schema = useDocumentContext('PublishAction', (state)=>state.document.schema);
|
2745
2754
|
const navigate = reactRouterDom.useNavigate();
|
2746
2755
|
const { toggleNotification } = strapiAdmin.useNotification();
|
@@ -2750,7 +2759,7 @@ const transformData = (data)=>{
|
|
2750
2759
|
const { id } = reactRouterDom.useParams();
|
2751
2760
|
const { formatMessage } = reactIntl.useIntl();
|
2752
2761
|
const canPublish = useDocumentRBAC('PublishAction', ({ canPublish })=>canPublish);
|
2753
|
-
const { publish, isLoading } = useDocumentActions();
|
2762
|
+
const { publish, isLoading } = useDocumentActions(fromPreview, fromRelationModal);
|
2754
2763
|
const [countDraftRelations, { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations }] = useLazyGetDraftRelationCountQuery();
|
2755
2764
|
const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React__namespace.useState(0);
|
2756
2765
|
const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React__namespace.useState(0);
|
@@ -2948,14 +2957,14 @@ PublishAction$1.position = [
|
|
2948
2957
|
'preview',
|
2949
2958
|
'relation-modal'
|
2950
2959
|
];
|
2951
|
-
const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview })=>{
|
2960
|
+
const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview, fromPreview = false, fromRelationModal = false })=>{
|
2952
2961
|
const navigate = reactRouterDom.useNavigate();
|
2953
2962
|
const { toggleNotification } = strapiAdmin.useNotification();
|
2954
2963
|
const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
|
2955
2964
|
const cloneMatch = reactRouterDom.useMatch(CLONE_PATH);
|
2956
2965
|
const isCloning = cloneMatch !== null;
|
2957
2966
|
const { formatMessage } = reactIntl.useIntl();
|
2958
|
-
const { create, update, clone, isLoading } = useDocumentActions();
|
2967
|
+
const { create, update, clone, isLoading } = useDocumentActions(fromPreview, fromRelationModal);
|
2959
2968
|
const [{ query, rawQuery }] = strapiAdmin.useQueryParams();
|
2960
2969
|
const params = React__namespace.useMemo(()=>buildValidParams(query), [
|
2961
2970
|
query
|
@@ -3045,6 +3054,8 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview
|
|
3045
3054
|
cloneMatch?.params.origin,
|
3046
3055
|
collectionType,
|
3047
3056
|
create,
|
3057
|
+
currentDocumentMeta.documentId,
|
3058
|
+
currentDocumentMeta.params,
|
3048
3059
|
document,
|
3049
3060
|
documentId,
|
3050
3061
|
formatMessage,
|
@@ -3053,9 +3064,11 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview
|
|
3053
3064
|
model,
|
3054
3065
|
modified,
|
3055
3066
|
navigate,
|
3067
|
+
onPreview,
|
3056
3068
|
params,
|
3057
3069
|
rawQuery,
|
3058
3070
|
resetForm,
|
3071
|
+
rootDocumentMeta.documentId,
|
3059
3072
|
setErrors,
|
3060
3073
|
setSubmitting,
|
3061
3074
|
toggleNotification,
|
@@ -5402,7 +5415,7 @@ function __variableDynamicImportRuntime1__(path) {
|
|
5402
5415
|
case './translations/tr.json': return Promise.resolve().then(function () { return require('./tr-CkS6sLIE.js'); });
|
5403
5416
|
case './translations/uk.json': return Promise.resolve().then(function () { return require('./uk-DB6OgySY.js'); });
|
5404
5417
|
case './translations/vi.json': return Promise.resolve().then(function () { return require('./vi-BGr1X_HZ.js'); });
|
5405
|
-
case './translations/zh-Hans.json': return Promise.resolve().then(function () { return require('./zh-Hans-
|
5418
|
+
case './translations/zh-Hans.json': return Promise.resolve().then(function () { return require('./zh-Hans-Djj7eGpO.js'); });
|
5406
5419
|
case './translations/zh.json': return Promise.resolve().then(function () { return require('./zh-DwFu_Kfj.js'); });
|
5407
5420
|
default: return new Promise(function(resolve, reject) {
|
5408
5421
|
(typeof queueMicrotask === 'function' ? queueMicrotask : setTimeout)(
|
@@ -5431,7 +5444,7 @@ var index = {
|
|
5431
5444
|
app.router.addRoute({
|
5432
5445
|
path: 'content-manager/*',
|
5433
5446
|
lazy: async ()=>{
|
5434
|
-
const { Layout } = await Promise.resolve().then(function () { return require('./layout-
|
5447
|
+
const { Layout } = await Promise.resolve().then(function () { return require('./layout-DGlrPEkC.js'); });
|
5435
5448
|
return {
|
5436
5449
|
Component: Layout
|
5437
5450
|
};
|
@@ -5517,4 +5530,4 @@ exports.useGetInitialDataQuery = useGetInitialDataQuery;
|
|
5517
5530
|
exports.useGetPreviewUrlQuery = useGetPreviewUrlQuery;
|
5518
5531
|
exports.useLazyGetDocumentQuery = useLazyGetDocumentQuery;
|
5519
5532
|
exports.useUpdateContentTypeConfigurationMutation = useUpdateContentTypeConfigurationMutation;
|
5520
|
-
//# sourceMappingURL=index-
|
5533
|
+
//# sourceMappingURL=index-CB_ymrXf.js.map
|