@strapi/content-manager 0.0.0-experimental.a6f2f892982f612c41afc292e836988dbb6783f5 → 0.0.0-experimental.a8a53e3e7c4ad1ffcd42935b3b19bdddc074e036

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/dist/admin/components/LeftMenu.js +13 -15
  2. package/dist/admin/components/LeftMenu.js.map +1 -1
  3. package/dist/admin/components/LeftMenu.mjs +14 -16
  4. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  5. package/dist/admin/components/Widgets.js +19 -12
  6. package/dist/admin/components/Widgets.js.map +1 -1
  7. package/dist/admin/components/Widgets.mjs +20 -13
  8. package/dist/admin/components/Widgets.mjs.map +1 -1
  9. package/dist/admin/hooks/useDocumentActions.js +0 -3
  10. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  11. package/dist/admin/hooks/useDocumentActions.mjs +1 -4
  12. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  13. package/dist/admin/layout.js +1 -27
  14. package/dist/admin/layout.js.map +1 -1
  15. package/dist/admin/layout.mjs +2 -9
  16. package/dist/admin/layout.mjs.map +1 -1
  17. package/dist/admin/pages/EditView/EditViewPage.js +13 -20
  18. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  19. package/dist/admin/pages/EditView/EditViewPage.mjs +14 -21
  20. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  22. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  23. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  24. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  25. package/dist/admin/pages/EditView/components/DocumentActions.js +18 -3
  26. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  27. package/dist/admin/pages/EditView/components/DocumentActions.mjs +19 -4
  28. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  29. package/dist/admin/pages/EditView/components/InputRenderer.js +15 -5
  30. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  31. package/dist/admin/pages/EditView/components/InputRenderer.mjs +15 -5
  32. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/utils/data.js +33 -8
  34. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  35. package/dist/admin/pages/EditView/utils/data.mjs +33 -8
  36. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  37. package/dist/admin/pages/ListView/ListViewPage.js +10 -10
  38. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  39. package/dist/admin/pages/ListView/ListViewPage.mjs +11 -11
  40. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  41. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +12 -2
  42. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  43. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +12 -2
  44. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  45. package/dist/admin/preview/components/InputPopover.js +73 -0
  46. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  47. package/dist/admin/preview/components/InputPopover.mjs +70 -0
  48. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  49. package/dist/admin/preview/hooks/usePreviewInputManager.js +67 -0
  50. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  51. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +46 -0
  52. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  53. package/dist/admin/preview/pages/Preview.js +152 -103
  54. package/dist/admin/preview/pages/Preview.js.map +1 -1
  55. package/dist/admin/preview/pages/Preview.mjs +153 -104
  56. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  57. package/dist/admin/preview/utils/constants.js +22 -0
  58. package/dist/admin/preview/utils/constants.js.map +1 -0
  59. package/dist/admin/preview/utils/constants.mjs +19 -0
  60. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  61. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  62. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  63. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  64. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  65. package/dist/admin/preview/utils/previewScript.js +296 -0
  66. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  67. package/dist/admin/preview/utils/previewScript.mjs +294 -0
  68. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  69. package/dist/admin/services/api.js +2 -1
  70. package/dist/admin/services/api.js.map +1 -1
  71. package/dist/admin/services/api.mjs +2 -1
  72. package/dist/admin/services/api.mjs.map +1 -1
  73. package/dist/admin/services/documents.js +22 -12
  74. package/dist/admin/services/documents.js.map +1 -1
  75. package/dist/admin/services/documents.mjs +22 -12
  76. package/dist/admin/services/documents.mjs.map +1 -1
  77. package/dist/admin/services/homepage.js +2 -11
  78. package/dist/admin/services/homepage.js.map +1 -1
  79. package/dist/admin/services/homepage.mjs +3 -11
  80. package/dist/admin/services/homepage.mjs.map +1 -1
  81. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  82. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  83. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  84. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  85. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +4 -0
  86. package/dist/admin/src/preview/pages/Preview.d.ts +8 -0
  87. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  88. package/dist/admin/src/preview/utils/constants.d.ts +20 -0
  89. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  90. package/dist/admin/src/preview/utils/previewScript.d.ts +22 -0
  91. package/dist/admin/src/services/api.d.ts +1 -1
  92. package/dist/admin/src/services/components.d.ts +2 -2
  93. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  94. package/dist/admin/src/services/documents.d.ts +16 -16
  95. package/dist/admin/src/services/homepage.d.ts +2 -6
  96. package/dist/admin/src/services/init.d.ts +1 -1
  97. package/dist/admin/src/services/relations.d.ts +2 -2
  98. package/dist/admin/src/services/uid.d.ts +3 -3
  99. package/dist/admin/src/utils/api.d.ts +1 -1
  100. package/dist/admin/translations/en.json.js +1 -0
  101. package/dist/admin/translations/en.json.js.map +1 -1
  102. package/dist/admin/translations/en.json.mjs +1 -0
  103. package/dist/admin/translations/en.json.mjs.map +1 -1
  104. package/dist/admin/translations/es.json.js +1 -0
  105. package/dist/admin/translations/es.json.js.map +1 -1
  106. package/dist/admin/translations/es.json.mjs +1 -0
  107. package/dist/admin/translations/es.json.mjs.map +1 -1
  108. package/dist/admin/translations/fr.json.js +1 -0
  109. package/dist/admin/translations/fr.json.js.map +1 -1
  110. package/dist/admin/translations/fr.json.mjs +1 -0
  111. package/dist/admin/translations/fr.json.mjs.map +1 -1
  112. package/dist/admin/utils/api.js +1 -1
  113. package/dist/admin/utils/api.js.map +1 -1
  114. package/dist/admin/utils/api.mjs +1 -1
  115. package/dist/admin/utils/api.mjs.map +1 -1
  116. package/dist/admin/utils/validation.js +2 -1
  117. package/dist/admin/utils/validation.js.map +1 -1
  118. package/dist/admin/utils/validation.mjs +2 -1
  119. package/dist/admin/utils/validation.mjs.map +1 -1
  120. package/dist/server/history/services/lifecycles.js +20 -19
  121. package/dist/server/history/services/lifecycles.js.map +1 -1
  122. package/dist/server/history/services/lifecycles.mjs +20 -19
  123. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  124. package/dist/server/homepage/services/homepage.js +2 -2
  125. package/dist/server/homepage/services/homepage.js.map +1 -1
  126. package/dist/server/homepage/services/homepage.mjs +2 -2
  127. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  128. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  129. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  130. package/package.json +5 -6
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
4
+ require('react');
5
5
  var strapiAdmin = require('@strapi/admin/strapi-admin');
6
6
  var reactIntl = require('react-intl');
7
7
  var reactRouterDom = require('react-router-dom');
@@ -14,25 +14,6 @@ var dragAndDrop = require('./constants/dragAndDrop.js');
14
14
  var useContentManagerInitData = require('./hooks/useContentManagerInitData.js');
15
15
  var translations = require('./utils/translations.js');
16
16
 
17
- function _interopNamespaceDefault(e) {
18
- var n = Object.create(null);
19
- if (e) {
20
- Object.keys(e).forEach(function (k) {
21
- if (k !== 'default') {
22
- var d = Object.getOwnPropertyDescriptor(e, k);
23
- Object.defineProperty(n, k, d.get ? d : {
24
- enumerable: true,
25
- get: function () { return e[k]; }
26
- });
27
- }
28
- });
29
- }
30
- n.default = e;
31
- return Object.freeze(n);
32
- }
33
-
34
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
35
-
36
17
  /* -------------------------------------------------------------------------------------------------
37
18
  * Layout
38
19
  * -----------------------------------------------------------------------------------------------*/ const Layout = ()=>{
@@ -44,13 +25,6 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
44
25
  ].sort((a, b)=>a.title.localeCompare(b.title));
45
26
  const { pathname } = reactRouterDom.useLocation();
46
27
  const { formatMessage } = reactIntl.useIntl();
47
- const startSection = strapiAdmin.useGuidedTour('Layout', (state)=>state.startSection);
48
- const startSectionRef = React__namespace.useRef(startSection);
49
- React__namespace.useEffect(()=>{
50
- if (startSectionRef.current) {
51
- startSectionRef.current('contentManager');
52
- }
53
- }, []);
54
28
  if (isLoading) {
55
29
  return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
56
30
  children: [
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sources":["../../admin/src/layout.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, useGuidedTour, Layouts } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n const startSection = useGuidedTour('Layout', (state) => state.startSection);\n const startSectionRef = React.useRef(startSection);\n\n React.useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('contentManager');\n }\n }, []);\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n if (!contentTypeMatch && authorisedModels.length > 0) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["Layout","contentTypeMatch","useMatch","isLoading","collectionTypeLinks","models","singleTypeLinks","useContentManagerInitData","authorisedModels","sort","a","b","title","localeCompare","pathname","useLocation","formatMessage","useIntl","startSection","useGuidedTour","state","startSectionRef","React","useRef","useEffect","current","_jsxs","_Fragment","_jsx","Page","Title","id","getTranslation","defaultMessage","Loading","supportedModelsToDisplay","filter","isDisplayed","length","Navigate","to","search","replace","Layouts","Root","sideNav","LeftMenu","DragLayer","renderItem","renderDraglayerItem","Outlet","type","item","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","label","COMPONENT","DYNAMIC_ZONE","ComponentDragPreview","displayedValue","RELATION","RelationDragPreview"],"mappings":"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"}
1
+ {"version":3,"file":"layout.js","sources":["../../admin/src/layout.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, Layouts } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n if (!contentTypeMatch && authorisedModels.length > 0) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["Layout","contentTypeMatch","useMatch","isLoading","collectionTypeLinks","models","singleTypeLinks","useContentManagerInitData","authorisedModels","sort","a","b","title","localeCompare","pathname","useLocation","formatMessage","useIntl","_jsxs","_Fragment","_jsx","Page","Title","id","getTranslation","defaultMessage","Loading","supportedModelsToDisplay","filter","isDisplayed","length","Navigate","to","search","replace","Layouts","Root","sideNav","LeftMenu","DragLayer","renderItem","renderDraglayerItem","Outlet","type","item","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","label","COMPONENT","DYNAMIC_ZONE","ComponentDragPreview","displayedValue","RELATION","RelationDragPreview"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import { useGuidedTour, Page, Layouts } from '@strapi/admin/strapi-admin';
2
+ import 'react';
3
+ import { Page, Layouts } from '@strapi/admin/strapi-admin';
4
4
  import { useIntl } from 'react-intl';
5
5
  import { useMatch, useLocation, Navigate, Outlet } from 'react-router-dom';
6
6
  import { DragLayer } from './components/DragLayer.mjs';
@@ -23,13 +23,6 @@ import { getTranslation } from './utils/translations.mjs';
23
23
  ].sort((a, b)=>a.title.localeCompare(b.title));
24
24
  const { pathname } = useLocation();
25
25
  const { formatMessage } = useIntl();
26
- const startSection = useGuidedTour('Layout', (state)=>state.startSection);
27
- const startSectionRef = React.useRef(startSection);
28
- React.useEffect(()=>{
29
- if (startSectionRef.current) {
30
- startSectionRef.current('contentManager');
31
- }
32
- }, []);
33
26
  if (isLoading) {
34
27
  return /*#__PURE__*/ jsxs(Fragment, {
35
28
  children: [
@@ -1 +1 @@
1
- {"version":3,"file":"layout.mjs","sources":["../../admin/src/layout.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, useGuidedTour, Layouts } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n const startSection = useGuidedTour('Layout', (state) => state.startSection);\n const startSectionRef = React.useRef(startSection);\n\n React.useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('contentManager');\n }\n }, []);\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n if (!contentTypeMatch && authorisedModels.length > 0) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["Layout","contentTypeMatch","useMatch","isLoading","collectionTypeLinks","models","singleTypeLinks","useContentManagerInitData","authorisedModels","sort","a","b","title","localeCompare","pathname","useLocation","formatMessage","useIntl","startSection","useGuidedTour","state","startSectionRef","React","useRef","useEffect","current","_jsxs","_Fragment","_jsx","Page","Title","id","getTranslation","defaultMessage","Loading","supportedModelsToDisplay","filter","isDisplayed","length","Navigate","to","search","replace","Layouts","Root","sideNav","LeftMenu","DragLayer","renderItem","renderDraglayerItem","Outlet","type","item","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","label","COMPONENT","DYNAMIC_ZONE","ComponentDragPreview","displayedValue","RELATION","RelationDragPreview"],"mappings":"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"}
1
+ {"version":3,"file":"layout.mjs","sources":["../../admin/src/layout.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, Layouts } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n if (!contentTypeMatch && authorisedModels.length > 0) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["Layout","contentTypeMatch","useMatch","isLoading","collectionTypeLinks","models","singleTypeLinks","useContentManagerInitData","authorisedModels","sort","a","b","title","localeCompare","pathname","useLocation","formatMessage","useIntl","_jsxs","_Fragment","_jsx","Page","Title","id","getTranslation","defaultMessage","Loading","supportedModelsToDisplay","filter","isDisplayed","length","Navigate","to","search","replace","Layouts","Root","sideNav","LeftMenu","DragLayer","renderItem","renderDraglayerItem","Outlet","type","item","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","label","COMPONENT","DYNAMIC_ZONE","ComponentDragPreview","displayedValue","RELATION","RelationDragPreview"],"mappings":"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"}
@@ -16,6 +16,7 @@ var useLazyComponents = require('../../hooks/useLazyComponents.js');
16
16
  var useOnce = require('../../hooks/useOnce.js');
17
17
  var translations = require('../../utils/translations.js');
18
18
  var validation = require('../../utils/validation.js');
19
+ var Blocker = require('./components/Blocker.js');
19
20
  var FormLayout = require('./components/FormLayout.js');
20
21
  var Header = require('./components/Header.js');
21
22
  var Panels = require('./components/Panels.js');
@@ -23,16 +24,7 @@ var data = require('./utils/data.js');
23
24
 
24
25
  /* -------------------------------------------------------------------------------------------------
25
26
  * EditViewPage
26
- * -----------------------------------------------------------------------------------------------*/ // Needs to be wrapped in a component to have access to the form context via a hook.
27
- // Using the Form component's render prop instead would cause unnecessary re-renders of Form children
28
- const BlockerWrapper = ()=>{
29
- const resetForm = strapiAdmin.useForm('BlockerWrapper', (state)=>state.resetForm);
30
- // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284
31
- return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Blocker, {
32
- onProceed: resetForm
33
- });
34
- };
35
- const EditViewPage = ()=>{
27
+ * -----------------------------------------------------------------------------------------------*/ const EditViewPage = ()=>{
36
28
  const location = reactRouterDom.useLocation();
37
29
  const [{ query: { status } }, setQuery] = strapiAdmin.useQueryParams({
38
30
  status: 'draft'
@@ -96,10 +88,8 @@ const EditViewPage = ()=>{
96
88
  /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Title, {
97
89
  children: pageTitle
98
90
  }),
99
- isSingleType && /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.unstable_tours.contentManager.Introduction, {
100
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
101
- paddingTop: 5
102
- })
91
+ isSingleType && /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.tours.contentManager.Introduction, {
92
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {})
103
93
  }),
104
94
  /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Form, {
105
95
  disabled: hasDraftAndPublished && status === 'published',
@@ -171,14 +161,17 @@ const EditViewPage = ()=>{
171
161
  direction: "column",
172
162
  alignItems: "stretch",
173
163
  children: [
174
- /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.unstable_tours.contentManager.Fields, {
175
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tabs.Content, {
176
- value: "draft",
177
- children: /*#__PURE__*/ jsxRuntime.jsx(FormLayout.FormLayout, {
164
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tabs.Content, {
165
+ value: "draft",
166
+ children: [
167
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.tours.contentManager.Fields, {
168
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {})
169
+ }),
170
+ /*#__PURE__*/ jsxRuntime.jsx(FormLayout.FormLayout, {
178
171
  layout: layout,
179
172
  document: doc
180
173
  })
181
- })
174
+ ]
182
175
  }),
183
176
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tabs.Content, {
184
177
  value: "published",
@@ -200,7 +193,7 @@ const EditViewPage = ()=>{
200
193
  })
201
194
  ]
202
195
  }),
203
- /*#__PURE__*/ jsxRuntime.jsx(BlockerWrapper, {})
196
+ /*#__PURE__*/ jsxRuntime.jsx(Blocker.Blocker, {})
204
197
  ]
205
198
  })
206
199
  })
@@ -1 +1 @@
1
- {"version":3,"file":"EditViewPage.js","sources":["../../../../admin/src/pages/EditView/EditViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Blocker,\n Form,\n useForm,\n useRBAC,\n useNotification,\n useQueryParams,\n unstable_tours,\n} from '@strapi/admin/strapi-admin';\nimport { Grid, Main, Tabs, Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc, type UseDocument } from '../../hooks/useDocument';\nimport { useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useOnce } from '../../hooks/useOnce';\nimport { getTranslation } from '../../utils/translations';\nimport { createYupSchema } from '../../utils/validation';\n\nimport { FormLayout } from './components/FormLayout';\nimport { Header } from './components/Header';\nimport { Panels } from './components/Panels';\nimport { handleInvisibleAttributes } from './utils/data';\n\n/* -------------------------------------------------------------------------------------------------\n * EditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\n// Needs to be wrapped in a component to have access to the form context via a hook.\n// Using the Form component's render prop instead would cause unnecessary re-renders of Form children\nconst BlockerWrapper = () => {\n const resetForm = useForm('BlockerWrapper', (state) => state.resetForm);\n\n // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284\n return <Blocker onProceed={resetForm} />;\n};\n\nconst EditViewPage = () => {\n const location = useLocation();\n const [\n {\n query: { status },\n },\n setQuery,\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const doc = useDoc();\n const {\n document,\n meta,\n isLoading: isLoadingDocument,\n schema,\n components,\n collectionType,\n id,\n model,\n hasError,\n getTitle,\n getInitialFormValues,\n } = doc;\n\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n useOnce(() => {\n /**\n * We only ever want to fire the notification once otherwise\n * whenever the app re-renders it'll pop up regardless of\n * what we do because the state comes from react-router-dom\n */\n if (location?.state && 'error' in location.state) {\n toggleNotification({\n type: 'danger',\n message: location.state.error,\n timeout: 5000,\n });\n }\n });\n\n const isLoadingActionsRBAC = useDocumentRBAC('EditViewPage', (state) => state.isLoading);\n\n const isSingleType = collectionType === SINGLE_TYPES;\n\n /**\n * single-types don't current have an id, but because they're a singleton\n * we can simply use the update operation to continuously update the same\n * document with varying params.\n */\n const isCreatingDocument = !id && !isSingleType;\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { mainField },\n },\n } = useDocumentLayout(model);\n const pageTitle = getTitle(mainField);\n\n const { isLazyLoading } = useLazyComponents([]);\n\n const isLoading = isLoadingActionsRBAC || isLoadingDocument || isLoadingLayout || isLazyLoading;\n\n const initialValues = getInitialFormValues(isCreatingDocument);\n\n if (isLoading && !document?.documentId) {\n return <Page.Loading />;\n }\n\n if (!initialValues || hasError) {\n return <Page.Error />;\n }\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n ...options,\n });\n\n return yupSchema.validateSync(values, { abortEarly: false });\n };\n\n return (\n <Main paddingLeft={10} paddingRight={10}>\n <Page.Title>{pageTitle}</Page.Title>\n {isSingleType && (\n <unstable_tours.contentManager.Introduction>\n {/* Invisible Anchor */}\n <Box paddingTop={5} />\n </unstable_tours.contentManager.Introduction>\n )}\n <Form\n disabled={hasDraftAndPublished && status === 'published'}\n initialValues={initialValues}\n method={isCreatingDocument ? 'POST' : 'PUT'}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n // removes hidden fields from the validation\n // this is necessary because the yup schema doesn't know about the visibility conditions\n // and we don't want to validate fields that are not visible\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema,\n initialValues,\n components,\n });\n\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n removedAttributes,\n ...options,\n });\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n >\n <>\n <Header\n isCreating={isCreatingDocument}\n status={hasDraftAndPublished ? getDocumentStatus(document, meta) : undefined}\n title={pageTitle}\n />\n <Tabs.Root variant=\"simple\" value={status} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTranslation('containers.edit.tabs.label'),\n defaultMessage: 'Document status',\n })}\n >\n {hasDraftAndPublished ? (\n <>\n <StatusTab value=\"draft\">\n {formatMessage({\n id: getTranslation('containers.edit.tabs.draft'),\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab\n disabled={!meta || meta.availableStatus.length === 0}\n value=\"published\"\n >\n {formatMessage({\n id: getTranslation('containers.edit.tabs.published'),\n defaultMessage: 'published',\n })}\n </StatusTab>\n </>\n ) : null}\n </Tabs.List>\n <Grid.Root paddingTop={8} gap={4}>\n <Grid.Item col={9} s={12} direction=\"column\" alignItems=\"stretch\">\n <unstable_tours.contentManager.Fields>\n <Tabs.Content value=\"draft\">\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n </unstable_tours.contentManager.Fields>\n <Tabs.Content value=\"published\">\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n </Grid.Item>\n <Grid.Item col={3} s={12} direction=\"column\" alignItems=\"stretch\">\n <Panels />\n </Grid.Item>\n </Grid.Root>\n </Tabs.Root>\n <BlockerWrapper />\n </>\n </Form>\n </Main>\n );\n};\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\n/**\n * @internal\n * @description Returns the status of the document where its latest state takes priority,\n * this typically will be \"published\" unless a user has edited their draft in which we should\n * display \"modified\".\n */\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <EditViewPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { EditViewPage, ProtectedEditViewPage, getDocumentStatus };\n"],"names":["BlockerWrapper","resetForm","useForm","state","_jsx","Blocker","onProceed","EditViewPage","location","useLocation","query","status","setQuery","useQueryParams","formatMessage","useIntl","toggleNotification","useNotification","doc","useDoc","document","meta","isLoading","isLoadingDocument","schema","components","collectionType","id","model","hasError","getTitle","getInitialFormValues","hasDraftAndPublished","options","draftAndPublish","useOnce","type","message","error","timeout","isLoadingActionsRBAC","useDocumentRBAC","isSingleType","SINGLE_TYPES","isCreatingDocument","isLoadingLayout","edit","layout","settings","mainField","useDocumentLayout","pageTitle","isLazyLoading","useLazyComponents","initialValues","documentId","Page","Loading","Error","handleTabChange","validateSync","values","yupSchema","createYupSchema","attributes","abortEarly","_jsxs","Main","paddingLeft","paddingRight","Title","unstable_tours","contentManager","Introduction","Box","paddingTop","Form","disabled","method","validate","data","cleanedValues","removedAttributes","handleInvisibleAttributes","initialErrors","forceValidation","_Fragment","Header","isCreating","getDocumentStatus","undefined","title","Tabs","Root","variant","value","onValueChange","List","aria-label","getTranslation","defaultMessage","StatusTab","availableStatus","length","Grid","gap","Item","col","s","direction","alignItems","Fields","Content","FormLayout","Panels","styled","Trigger","docStatus","statuses","find","publishedAt","ProtectedEditViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","map","action","subject","Protect","DocumentRBAC"],"mappings":"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"}
1
+ {"version":3,"file":"EditViewPage.js","sources":["../../../../admin/src/pages/EditView/EditViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Form,\n useRBAC,\n useNotification,\n useQueryParams,\n tours,\n} from '@strapi/admin/strapi-admin';\nimport { Grid, Main, Tabs, Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc, type UseDocument } from '../../hooks/useDocument';\nimport { useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useOnce } from '../../hooks/useOnce';\nimport { getTranslation } from '../../utils/translations';\nimport { createYupSchema } from '../../utils/validation';\n\nimport { Blocker } from './components/Blocker';\nimport { FormLayout } from './components/FormLayout';\nimport { Header } from './components/Header';\nimport { Panels } from './components/Panels';\nimport { handleInvisibleAttributes } from './utils/data';\n\n/* -------------------------------------------------------------------------------------------------\n * EditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditViewPage = () => {\n const location = useLocation();\n const [\n {\n query: { status },\n },\n setQuery,\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const doc = useDoc();\n const {\n document,\n meta,\n isLoading: isLoadingDocument,\n schema,\n components,\n collectionType,\n id,\n model,\n hasError,\n getTitle,\n getInitialFormValues,\n } = doc;\n\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n useOnce(() => {\n /**\n * We only ever want to fire the notification once otherwise\n * whenever the app re-renders it'll pop up regardless of\n * what we do because the state comes from react-router-dom\n */\n if (location?.state && 'error' in location.state) {\n toggleNotification({\n type: 'danger',\n message: location.state.error,\n timeout: 5000,\n });\n }\n });\n\n const isLoadingActionsRBAC = useDocumentRBAC('EditViewPage', (state) => state.isLoading);\n\n const isSingleType = collectionType === SINGLE_TYPES;\n\n /**\n * single-types don't current have an id, but because they're a singleton\n * we can simply use the update operation to continuously update the same\n * document with varying params.\n */\n const isCreatingDocument = !id && !isSingleType;\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { mainField },\n },\n } = useDocumentLayout(model);\n const pageTitle = getTitle(mainField);\n\n const { isLazyLoading } = useLazyComponents([]);\n\n const isLoading = isLoadingActionsRBAC || isLoadingDocument || isLoadingLayout || isLazyLoading;\n\n const initialValues = getInitialFormValues(isCreatingDocument);\n\n if (isLoading && !document?.documentId) {\n return <Page.Loading />;\n }\n\n if (!initialValues || hasError) {\n return <Page.Error />;\n }\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n ...options,\n });\n\n return yupSchema.validateSync(values, { abortEarly: false });\n };\n\n return (\n <Main paddingLeft={10} paddingRight={10}>\n <Page.Title>{pageTitle}</Page.Title>\n {isSingleType && (\n <tours.contentManager.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentManager.Introduction>\n )}\n <Form\n disabled={hasDraftAndPublished && status === 'published'}\n initialValues={initialValues}\n method={isCreatingDocument ? 'POST' : 'PUT'}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n // removes hidden fields from the validation\n // this is necessary because the yup schema doesn't know about the visibility conditions\n // and we don't want to validate fields that are not visible\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema,\n initialValues,\n components,\n });\n\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n removedAttributes,\n ...options,\n });\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n >\n <>\n <Header\n isCreating={isCreatingDocument}\n status={hasDraftAndPublished ? getDocumentStatus(document, meta) : undefined}\n title={pageTitle}\n />\n <Tabs.Root variant=\"simple\" value={status} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTranslation('containers.edit.tabs.label'),\n defaultMessage: 'Document status',\n })}\n >\n {hasDraftAndPublished ? (\n <>\n <StatusTab value=\"draft\">\n {formatMessage({\n id: getTranslation('containers.edit.tabs.draft'),\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab\n disabled={!meta || meta.availableStatus.length === 0}\n value=\"published\"\n >\n {formatMessage({\n id: getTranslation('containers.edit.tabs.published'),\n defaultMessage: 'published',\n })}\n </StatusTab>\n </>\n ) : null}\n </Tabs.List>\n <Grid.Root paddingTop={8} gap={4}>\n <Grid.Item col={9} s={12} direction=\"column\" alignItems=\"stretch\">\n <Tabs.Content value=\"draft\">\n <tours.contentManager.Fields>\n <Box />\n </tours.contentManager.Fields>\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n <Tabs.Content value=\"published\">\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n </Grid.Item>\n <Grid.Item col={3} s={12} direction=\"column\" alignItems=\"stretch\">\n <Panels />\n </Grid.Item>\n </Grid.Root>\n </Tabs.Root>\n <Blocker />\n </>\n </Form>\n </Main>\n );\n};\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\n/**\n * @internal\n * @description Returns the status of the document where its latest state takes priority,\n * this typically will be \"published\" unless a user has edited their draft in which we should\n * display \"modified\".\n */\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <EditViewPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { EditViewPage, ProtectedEditViewPage, getDocumentStatus };\n"],"names":["EditViewPage","location","useLocation","query","status","setQuery","useQueryParams","formatMessage","useIntl","toggleNotification","useNotification","doc","useDoc","document","meta","isLoading","isLoadingDocument","schema","components","collectionType","id","model","hasError","getTitle","getInitialFormValues","hasDraftAndPublished","options","draftAndPublish","useOnce","state","type","message","error","timeout","isLoadingActionsRBAC","useDocumentRBAC","isSingleType","SINGLE_TYPES","isCreatingDocument","isLoadingLayout","edit","layout","settings","mainField","useDocumentLayout","pageTitle","isLazyLoading","useLazyComponents","initialValues","documentId","_jsx","Page","Loading","Error","handleTabChange","validateSync","values","yupSchema","createYupSchema","attributes","abortEarly","_jsxs","Main","paddingLeft","paddingRight","Title","tours","contentManager","Introduction","Box","Form","disabled","method","validate","data","cleanedValues","removedAttributes","handleInvisibleAttributes","initialErrors","forceValidation","_Fragment","Header","isCreating","getDocumentStatus","undefined","title","Tabs","Root","variant","value","onValueChange","List","aria-label","getTranslation","defaultMessage","StatusTab","availableStatus","length","Grid","paddingTop","gap","Item","col","s","direction","alignItems","Content","Fields","FormLayout","Panels","Blocker","styled","Trigger","docStatus","statuses","find","publishedAt","ProtectedEditViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","map","action","subject","Protect","DocumentRBAC"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import 'react';
3
- import { useQueryParams, useNotification, Page, unstable_tours, Form, useRBAC, useForm, Blocker } from '@strapi/admin/strapi-admin';
3
+ import { useQueryParams, useNotification, Page, tours, Form, useRBAC } from '@strapi/admin/strapi-admin';
4
4
  import { Tabs, Main, Box, Grid } from '@strapi/design-system';
5
5
  import { useIntl } from 'react-intl';
6
6
  import { useLocation, useParams } from 'react-router-dom';
@@ -14,6 +14,7 @@ import { useLazyComponents } from '../../hooks/useLazyComponents.mjs';
14
14
  import { useOnce } from '../../hooks/useOnce.mjs';
15
15
  import { getTranslation } from '../../utils/translations.mjs';
16
16
  import { createYupSchema } from '../../utils/validation.mjs';
17
+ import { Blocker } from './components/Blocker.mjs';
17
18
  import { FormLayout } from './components/FormLayout.mjs';
18
19
  import { Header } from './components/Header.mjs';
19
20
  import { Panels } from './components/Panels.mjs';
@@ -21,16 +22,7 @@ import { handleInvisibleAttributes } from './utils/data.mjs';
21
22
 
22
23
  /* -------------------------------------------------------------------------------------------------
23
24
  * EditViewPage
24
- * -----------------------------------------------------------------------------------------------*/ // Needs to be wrapped in a component to have access to the form context via a hook.
25
- // Using the Form component's render prop instead would cause unnecessary re-renders of Form children
26
- const BlockerWrapper = ()=>{
27
- const resetForm = useForm('BlockerWrapper', (state)=>state.resetForm);
28
- // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284
29
- return /*#__PURE__*/ jsx(Blocker, {
30
- onProceed: resetForm
31
- });
32
- };
33
- const EditViewPage = ()=>{
25
+ * -----------------------------------------------------------------------------------------------*/ const EditViewPage = ()=>{
34
26
  const location = useLocation();
35
27
  const [{ query: { status } }, setQuery] = useQueryParams({
36
28
  status: 'draft'
@@ -94,10 +86,8 @@ const EditViewPage = ()=>{
94
86
  /*#__PURE__*/ jsx(Page.Title, {
95
87
  children: pageTitle
96
88
  }),
97
- isSingleType && /*#__PURE__*/ jsx(unstable_tours.contentManager.Introduction, {
98
- children: /*#__PURE__*/ jsx(Box, {
99
- paddingTop: 5
100
- })
89
+ isSingleType && /*#__PURE__*/ jsx(tours.contentManager.Introduction, {
90
+ children: /*#__PURE__*/ jsx(Box, {})
101
91
  }),
102
92
  /*#__PURE__*/ jsx(Form, {
103
93
  disabled: hasDraftAndPublished && status === 'published',
@@ -169,14 +159,17 @@ const EditViewPage = ()=>{
169
159
  direction: "column",
170
160
  alignItems: "stretch",
171
161
  children: [
172
- /*#__PURE__*/ jsx(unstable_tours.contentManager.Fields, {
173
- children: /*#__PURE__*/ jsx(Tabs.Content, {
174
- value: "draft",
175
- children: /*#__PURE__*/ jsx(FormLayout, {
162
+ /*#__PURE__*/ jsxs(Tabs.Content, {
163
+ value: "draft",
164
+ children: [
165
+ /*#__PURE__*/ jsx(tours.contentManager.Fields, {
166
+ children: /*#__PURE__*/ jsx(Box, {})
167
+ }),
168
+ /*#__PURE__*/ jsx(FormLayout, {
176
169
  layout: layout,
177
170
  document: doc
178
171
  })
179
- })
172
+ ]
180
173
  }),
181
174
  /*#__PURE__*/ jsx(Tabs.Content, {
182
175
  value: "published",
@@ -198,7 +191,7 @@ const EditViewPage = ()=>{
198
191
  })
199
192
  ]
200
193
  }),
201
- /*#__PURE__*/ jsx(BlockerWrapper, {})
194
+ /*#__PURE__*/ jsx(Blocker, {})
202
195
  ]
203
196
  })
204
197
  })
@@ -1 +1 @@
1
- {"version":3,"file":"EditViewPage.mjs","sources":["../../../../admin/src/pages/EditView/EditViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Blocker,\n Form,\n useForm,\n useRBAC,\n useNotification,\n useQueryParams,\n unstable_tours,\n} from '@strapi/admin/strapi-admin';\nimport { Grid, Main, Tabs, Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc, type UseDocument } from '../../hooks/useDocument';\nimport { useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useOnce } from '../../hooks/useOnce';\nimport { getTranslation } from '../../utils/translations';\nimport { createYupSchema } from '../../utils/validation';\n\nimport { FormLayout } from './components/FormLayout';\nimport { Header } from './components/Header';\nimport { Panels } from './components/Panels';\nimport { handleInvisibleAttributes } from './utils/data';\n\n/* -------------------------------------------------------------------------------------------------\n * EditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\n// Needs to be wrapped in a component to have access to the form context via a hook.\n// Using the Form component's render prop instead would cause unnecessary re-renders of Form children\nconst BlockerWrapper = () => {\n const resetForm = useForm('BlockerWrapper', (state) => state.resetForm);\n\n // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284\n return <Blocker onProceed={resetForm} />;\n};\n\nconst EditViewPage = () => {\n const location = useLocation();\n const [\n {\n query: { status },\n },\n setQuery,\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const doc = useDoc();\n const {\n document,\n meta,\n isLoading: isLoadingDocument,\n schema,\n components,\n collectionType,\n id,\n model,\n hasError,\n getTitle,\n getInitialFormValues,\n } = doc;\n\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n useOnce(() => {\n /**\n * We only ever want to fire the notification once otherwise\n * whenever the app re-renders it'll pop up regardless of\n * what we do because the state comes from react-router-dom\n */\n if (location?.state && 'error' in location.state) {\n toggleNotification({\n type: 'danger',\n message: location.state.error,\n timeout: 5000,\n });\n }\n });\n\n const isLoadingActionsRBAC = useDocumentRBAC('EditViewPage', (state) => state.isLoading);\n\n const isSingleType = collectionType === SINGLE_TYPES;\n\n /**\n * single-types don't current have an id, but because they're a singleton\n * we can simply use the update operation to continuously update the same\n * document with varying params.\n */\n const isCreatingDocument = !id && !isSingleType;\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { mainField },\n },\n } = useDocumentLayout(model);\n const pageTitle = getTitle(mainField);\n\n const { isLazyLoading } = useLazyComponents([]);\n\n const isLoading = isLoadingActionsRBAC || isLoadingDocument || isLoadingLayout || isLazyLoading;\n\n const initialValues = getInitialFormValues(isCreatingDocument);\n\n if (isLoading && !document?.documentId) {\n return <Page.Loading />;\n }\n\n if (!initialValues || hasError) {\n return <Page.Error />;\n }\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n ...options,\n });\n\n return yupSchema.validateSync(values, { abortEarly: false });\n };\n\n return (\n <Main paddingLeft={10} paddingRight={10}>\n <Page.Title>{pageTitle}</Page.Title>\n {isSingleType && (\n <unstable_tours.contentManager.Introduction>\n {/* Invisible Anchor */}\n <Box paddingTop={5} />\n </unstable_tours.contentManager.Introduction>\n )}\n <Form\n disabled={hasDraftAndPublished && status === 'published'}\n initialValues={initialValues}\n method={isCreatingDocument ? 'POST' : 'PUT'}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n // removes hidden fields from the validation\n // this is necessary because the yup schema doesn't know about the visibility conditions\n // and we don't want to validate fields that are not visible\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema,\n initialValues,\n components,\n });\n\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n removedAttributes,\n ...options,\n });\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n >\n <>\n <Header\n isCreating={isCreatingDocument}\n status={hasDraftAndPublished ? getDocumentStatus(document, meta) : undefined}\n title={pageTitle}\n />\n <Tabs.Root variant=\"simple\" value={status} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTranslation('containers.edit.tabs.label'),\n defaultMessage: 'Document status',\n })}\n >\n {hasDraftAndPublished ? (\n <>\n <StatusTab value=\"draft\">\n {formatMessage({\n id: getTranslation('containers.edit.tabs.draft'),\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab\n disabled={!meta || meta.availableStatus.length === 0}\n value=\"published\"\n >\n {formatMessage({\n id: getTranslation('containers.edit.tabs.published'),\n defaultMessage: 'published',\n })}\n </StatusTab>\n </>\n ) : null}\n </Tabs.List>\n <Grid.Root paddingTop={8} gap={4}>\n <Grid.Item col={9} s={12} direction=\"column\" alignItems=\"stretch\">\n <unstable_tours.contentManager.Fields>\n <Tabs.Content value=\"draft\">\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n </unstable_tours.contentManager.Fields>\n <Tabs.Content value=\"published\">\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n </Grid.Item>\n <Grid.Item col={3} s={12} direction=\"column\" alignItems=\"stretch\">\n <Panels />\n </Grid.Item>\n </Grid.Root>\n </Tabs.Root>\n <BlockerWrapper />\n </>\n </Form>\n </Main>\n );\n};\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\n/**\n * @internal\n * @description Returns the status of the document where its latest state takes priority,\n * this typically will be \"published\" unless a user has edited their draft in which we should\n * display \"modified\".\n */\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <EditViewPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { EditViewPage, ProtectedEditViewPage, getDocumentStatus };\n"],"names":["BlockerWrapper","resetForm","useForm","state","_jsx","Blocker","onProceed","EditViewPage","location","useLocation","query","status","setQuery","useQueryParams","formatMessage","useIntl","toggleNotification","useNotification","doc","useDoc","document","meta","isLoading","isLoadingDocument","schema","components","collectionType","id","model","hasError","getTitle","getInitialFormValues","hasDraftAndPublished","options","draftAndPublish","useOnce","type","message","error","timeout","isLoadingActionsRBAC","useDocumentRBAC","isSingleType","SINGLE_TYPES","isCreatingDocument","isLoadingLayout","edit","layout","settings","mainField","useDocumentLayout","pageTitle","isLazyLoading","useLazyComponents","initialValues","documentId","Page","Loading","Error","handleTabChange","validateSync","values","yupSchema","createYupSchema","attributes","abortEarly","_jsxs","Main","paddingLeft","paddingRight","Title","unstable_tours","contentManager","Introduction","Box","paddingTop","Form","disabled","method","validate","data","cleanedValues","removedAttributes","handleInvisibleAttributes","initialErrors","forceValidation","_Fragment","Header","isCreating","getDocumentStatus","undefined","title","Tabs","Root","variant","value","onValueChange","List","aria-label","getTranslation","defaultMessage","StatusTab","availableStatus","length","Grid","gap","Item","col","s","direction","alignItems","Fields","Content","FormLayout","Panels","styled","Trigger","docStatus","statuses","find","publishedAt","ProtectedEditViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","map","action","subject","Protect","DocumentRBAC"],"mappings":"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"}
1
+ {"version":3,"file":"EditViewPage.mjs","sources":["../../../../admin/src/pages/EditView/EditViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Form,\n useRBAC,\n useNotification,\n useQueryParams,\n tours,\n} from '@strapi/admin/strapi-admin';\nimport { Grid, Main, Tabs, Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc, type UseDocument } from '../../hooks/useDocument';\nimport { useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useOnce } from '../../hooks/useOnce';\nimport { getTranslation } from '../../utils/translations';\nimport { createYupSchema } from '../../utils/validation';\n\nimport { Blocker } from './components/Blocker';\nimport { FormLayout } from './components/FormLayout';\nimport { Header } from './components/Header';\nimport { Panels } from './components/Panels';\nimport { handleInvisibleAttributes } from './utils/data';\n\n/* -------------------------------------------------------------------------------------------------\n * EditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditViewPage = () => {\n const location = useLocation();\n const [\n {\n query: { status },\n },\n setQuery,\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const doc = useDoc();\n const {\n document,\n meta,\n isLoading: isLoadingDocument,\n schema,\n components,\n collectionType,\n id,\n model,\n hasError,\n getTitle,\n getInitialFormValues,\n } = doc;\n\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n useOnce(() => {\n /**\n * We only ever want to fire the notification once otherwise\n * whenever the app re-renders it'll pop up regardless of\n * what we do because the state comes from react-router-dom\n */\n if (location?.state && 'error' in location.state) {\n toggleNotification({\n type: 'danger',\n message: location.state.error,\n timeout: 5000,\n });\n }\n });\n\n const isLoadingActionsRBAC = useDocumentRBAC('EditViewPage', (state) => state.isLoading);\n\n const isSingleType = collectionType === SINGLE_TYPES;\n\n /**\n * single-types don't current have an id, but because they're a singleton\n * we can simply use the update operation to continuously update the same\n * document with varying params.\n */\n const isCreatingDocument = !id && !isSingleType;\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { mainField },\n },\n } = useDocumentLayout(model);\n const pageTitle = getTitle(mainField);\n\n const { isLazyLoading } = useLazyComponents([]);\n\n const isLoading = isLoadingActionsRBAC || isLoadingDocument || isLoadingLayout || isLazyLoading;\n\n const initialValues = getInitialFormValues(isCreatingDocument);\n\n if (isLoading && !document?.documentId) {\n return <Page.Loading />;\n }\n\n if (!initialValues || hasError) {\n return <Page.Error />;\n }\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n ...options,\n });\n\n return yupSchema.validateSync(values, { abortEarly: false });\n };\n\n return (\n <Main paddingLeft={10} paddingRight={10}>\n <Page.Title>{pageTitle}</Page.Title>\n {isSingleType && (\n <tours.contentManager.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentManager.Introduction>\n )}\n <Form\n disabled={hasDraftAndPublished && status === 'published'}\n initialValues={initialValues}\n method={isCreatingDocument ? 'POST' : 'PUT'}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n // removes hidden fields from the validation\n // this is necessary because the yup schema doesn't know about the visibility conditions\n // and we don't want to validate fields that are not visible\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema,\n initialValues,\n components,\n });\n\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n removedAttributes,\n ...options,\n });\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n >\n <>\n <Header\n isCreating={isCreatingDocument}\n status={hasDraftAndPublished ? getDocumentStatus(document, meta) : undefined}\n title={pageTitle}\n />\n <Tabs.Root variant=\"simple\" value={status} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTranslation('containers.edit.tabs.label'),\n defaultMessage: 'Document status',\n })}\n >\n {hasDraftAndPublished ? (\n <>\n <StatusTab value=\"draft\">\n {formatMessage({\n id: getTranslation('containers.edit.tabs.draft'),\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab\n disabled={!meta || meta.availableStatus.length === 0}\n value=\"published\"\n >\n {formatMessage({\n id: getTranslation('containers.edit.tabs.published'),\n defaultMessage: 'published',\n })}\n </StatusTab>\n </>\n ) : null}\n </Tabs.List>\n <Grid.Root paddingTop={8} gap={4}>\n <Grid.Item col={9} s={12} direction=\"column\" alignItems=\"stretch\">\n <Tabs.Content value=\"draft\">\n <tours.contentManager.Fields>\n <Box />\n </tours.contentManager.Fields>\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n <Tabs.Content value=\"published\">\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n </Grid.Item>\n <Grid.Item col={3} s={12} direction=\"column\" alignItems=\"stretch\">\n <Panels />\n </Grid.Item>\n </Grid.Root>\n </Tabs.Root>\n <Blocker />\n </>\n </Form>\n </Main>\n );\n};\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\n/**\n * @internal\n * @description Returns the status of the document where its latest state takes priority,\n * this typically will be \"published\" unless a user has edited their draft in which we should\n * display \"modified\".\n */\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <EditViewPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { EditViewPage, ProtectedEditViewPage, getDocumentStatus };\n"],"names":["EditViewPage","location","useLocation","query","status","setQuery","useQueryParams","formatMessage","useIntl","toggleNotification","useNotification","doc","useDoc","document","meta","isLoading","isLoadingDocument","schema","components","collectionType","id","model","hasError","getTitle","getInitialFormValues","hasDraftAndPublished","options","draftAndPublish","useOnce","state","type","message","error","timeout","isLoadingActionsRBAC","useDocumentRBAC","isSingleType","SINGLE_TYPES","isCreatingDocument","isLoadingLayout","edit","layout","settings","mainField","useDocumentLayout","pageTitle","isLazyLoading","useLazyComponents","initialValues","documentId","_jsx","Page","Loading","Error","handleTabChange","validateSync","values","yupSchema","createYupSchema","attributes","abortEarly","_jsxs","Main","paddingLeft","paddingRight","Title","tours","contentManager","Introduction","Box","Form","disabled","method","validate","data","cleanedValues","removedAttributes","handleInvisibleAttributes","initialErrors","forceValidation","_Fragment","Header","isCreating","getDocumentStatus","undefined","title","Tabs","Root","variant","value","onValueChange","List","aria-label","getTranslation","defaultMessage","StatusTab","availableStatus","length","Grid","paddingTop","gap","Item","col","s","direction","alignItems","Content","Fields","FormLayout","Panels","Blocker","styled","Trigger","docStatus","statuses","find","publishedAt","ProtectedEditViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","map","action","subject","Protect","DocumentRBAC"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var strapiAdmin = require('@strapi/admin/strapi-admin');
5
+
6
+ // Needs to be wrapped in a component to have access to the form context via a hook.
7
+ /**
8
+ * Prevents users from leaving the page with unsaved form changes
9
+ */ const Blocker = ()=>{
10
+ const resetForm = strapiAdmin.useForm('Blocker', (state)=>state.resetForm);
11
+ // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284
12
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Blocker, {
13
+ onProceed: resetForm
14
+ });
15
+ };
16
+
17
+ exports.Blocker = Blocker;
18
+ //# sourceMappingURL=Blocker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Blocker.js","sources":["../../../../../admin/src/pages/EditView/components/Blocker.tsx"],"sourcesContent":["// Needs to be wrapped in a component to have access to the form context via a hook.\n\nimport { Blocker as BaseBlocker, useForm } from '@strapi/admin/strapi-admin';\n\n/**\n * Prevents users from leaving the page with unsaved form changes\n */\nconst Blocker = () => {\n const resetForm = useForm('Blocker', (state) => state.resetForm);\n\n // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284\n return <BaseBlocker onProceed={resetForm} />;\n};\n\nexport { Blocker };\n"],"names":["Blocker","resetForm","useForm","state","_jsx","BaseBlocker","onProceed"],"mappings":";;;;;AAAA;AAIA;;AAEC,UACKA,OAAU,GAAA,IAAA;AACd,IAAA,MAAMC,YAAYC,mBAAQ,CAAA,SAAA,EAAW,CAACC,KAAAA,GAAUA,MAAMF,SAAS,CAAA;;AAG/D,IAAA,qBAAOG,cAACC,CAAAA,mBAAAA,EAAAA;QAAYC,SAAWL,EAAAA;;AACjC;;;;"}
@@ -0,0 +1,16 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useForm, Blocker as Blocker$1 } from '@strapi/admin/strapi-admin';
3
+
4
+ // Needs to be wrapped in a component to have access to the form context via a hook.
5
+ /**
6
+ * Prevents users from leaving the page with unsaved form changes
7
+ */ const Blocker = ()=>{
8
+ const resetForm = useForm('Blocker', (state)=>state.resetForm);
9
+ // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284
10
+ return /*#__PURE__*/ jsx(Blocker$1, {
11
+ onProceed: resetForm
12
+ });
13
+ };
14
+
15
+ export { Blocker };
16
+ //# sourceMappingURL=Blocker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Blocker.mjs","sources":["../../../../../admin/src/pages/EditView/components/Blocker.tsx"],"sourcesContent":["// Needs to be wrapped in a component to have access to the form context via a hook.\n\nimport { Blocker as BaseBlocker, useForm } from '@strapi/admin/strapi-admin';\n\n/**\n * Prevents users from leaving the page with unsaved form changes\n */\nconst Blocker = () => {\n const resetForm = useForm('Blocker', (state) => state.resetForm);\n\n // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284\n return <BaseBlocker onProceed={resetForm} />;\n};\n\nexport { Blocker };\n"],"names":["Blocker","resetForm","useForm","state","_jsx","BaseBlocker","onProceed"],"mappings":";;;AAAA;AAIA;;AAEC,UACKA,OAAU,GAAA,IAAA;AACd,IAAA,MAAMC,YAAYC,OAAQ,CAAA,SAAA,EAAW,CAACC,KAAAA,GAAUA,MAAMF,SAAS,CAAA;;AAG/D,IAAA,qBAAOG,GAACC,CAAAA,SAAAA,EAAAA;QAAYC,SAAWL,EAAAA;;AACjC;;;;"}