@strapi/content-manager 5.34.0 → 5.35.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/components/ActionsDrawer.js +204 -0
- package/dist/admin/components/ActionsDrawer.js.map +1 -0
- package/dist/admin/components/ActionsDrawer.mjs +183 -0
- package/dist/admin/components/ActionsDrawer.mjs.map +1 -0
- package/dist/admin/history/components/VersionContent.js +22 -9
- package/dist/admin/history/components/VersionContent.js.map +1 -1
- package/dist/admin/history/components/VersionContent.mjs +23 -10
- package/dist/admin/history/components/VersionContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +100 -71
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +102 -73
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +48 -40
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +50 -42
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.js +63 -31
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs +64 -32
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +20 -5
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +20 -5
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +22 -12
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +22 -12
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +7 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +151 -10
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +152 -11
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js +52 -5
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs +53 -6
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js +21 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs +24 -4
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.js +4 -0
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.mjs +4 -0
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +30 -13
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +32 -16
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.js +67 -15
- package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.mjs +67 -18
- package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +2 -2
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +2 -2
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/preview/index.js +9 -3
- package/dist/admin/preview/index.js.map +1 -1
- package/dist/admin/preview/index.mjs +9 -3
- package/dist/admin/preview/index.mjs.map +1 -1
- package/dist/admin/src/components/ActionsDrawer.d.ts +19 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.d.ts +7 -2
- package/dist/admin/src/pages/EditView/components/Panels.d.ts +14 -2
- package/dist/admin/translations/en.json.js +5 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +5 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +3 -1
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +3 -1
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +3 -1
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +3 -1
- package/dist/admin/translations/fr.json.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WysiwygNav.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n IconButton,\n IconButtonGroup,\n SingleSelectOption,\n SingleSelect,\n Field,\n Menu,\n} from '@strapi/design-system';\nimport {\n Bold,\n BulletList,\n Code,\n Italic,\n Link,\n NumberList,\n Image,\n Quotes,\n StrikeThrough,\n Underline,\n HeadingOne,\n HeadingTwo,\n HeadingThree,\n HeadingFour,\n HeadingFive,\n HeadingSix,\n} from '@strapi/icons';\nimport { EditorFromTextArea } from 'codemirror5';\nimport { useIntl } from 'react-intl';\n\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { listHandler, markdownHandler, quoteAndCodeHandler, titleHandler } from './utils/utils';\n\ninterface WysiwygNavProps {\n disabled?: boolean;\n editorRef: React.MutableRefObject<EditorFromTextArea>;\n isExpandMode?: boolean;\n isPreviewMode?: boolean;\n onToggleMediaLib: () => void;\n onTogglePreviewMode?: () => void;\n}\n\n/**\n * TODO: refactor this mess.\n */\nconst WysiwygNav = ({\n disabled,\n editorRef,\n isPreviewMode,\n onToggleMediaLib,\n onTogglePreviewMode,\n}: WysiwygNavProps) => {\n const { formatMessage } = useIntl();\n const isDisabled = disabled || isPreviewMode;\n\n const handleActionClick = (\n value: string,\n currentEditorRef: React.MutableRefObject<EditorFromTextArea>\n ) => {\n switch (value) {\n case 'Link': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'Code':\n case 'Quote': {\n quoteAndCodeHandler(currentEditorRef, value);\n break;\n }\n case 'Bold':\n case 'Italic':\n case 'Underline':\n case 'Strikethrough': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'BulletList':\n case 'NumberList': {\n listHandler(currentEditorRef, value);\n break;\n }\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6': {\n titleHandler(currentEditorRef, value);\n break;\n }\n default: {\n // Nothing\n }\n }\n };\n\n const observedComponents: ObservedComponent[] = [\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Bold', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n >\n <Bold />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Italic', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n >\n <Italic />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Underline', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n >\n <Underline />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Strikethrough', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n >\n <StrikeThrough />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Bold fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Bold', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Italic fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Italic', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Underline fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Underline', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<StrikeThrough fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Strikethrough', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-1',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('BulletList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n >\n <BulletList />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('NumberList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n >\n <NumberList />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<BulletList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('BulletList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<NumberList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('NumberList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-2',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Code', editorRef)}\n label={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n name={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n >\n <Code />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => {\n onToggleMediaLib();\n }}\n label={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n >\n <Image />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Link', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n name={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n >\n <Link />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Quote', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n >\n <Quotes />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Code fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Code', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Image fill=\"neutral500\" />}\n onSelect={() => {\n onToggleMediaLib();\n }}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Link fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Link', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Quotes fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Quote', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-3',\n },\n ];\n\n return (\n <Flex\n padding={2}\n background=\"neutral100\"\n justifyContent=\"space-between\"\n borderRadius=\"0.4rem 0.4rem 0 0\"\n width=\"100%\"\n gap={4}\n >\n <Field.Root>\n <SingleSelect\n disabled={isDisabled}\n placeholder={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n aria-label={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n // @ts-expect-error – DS v2 will only allow strings.\n onChange={(value) => handleActionClick(value, editorRef)}\n size=\"S\"\n >\n <SingleSelectOption value=\"h1\" startIcon={<HeadingOne fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H1',\n defaultMessage: 'Heading 1',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h2\" startIcon={<HeadingTwo fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H2',\n defaultMessage: 'Heading 2',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h3\" startIcon={<HeadingThree fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H3',\n defaultMessage: 'Heading 3',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h4\" startIcon={<HeadingFour fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H4',\n defaultMessage: 'Heading 4',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h5\" startIcon={<HeadingFive fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H5',\n defaultMessage: 'Heading 5',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h6\" startIcon={<HeadingSix fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H6',\n defaultMessage: 'Heading 6',\n })}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n <Flex width=\"100%\" justifyContent=\"space-between\" overflow=\"hidden\">\n <Flex gap={2} overflow=\"hidden\" width=\"100%\">\n <EditorToolbarObserver\n menuTriggerVariant=\"tertiary\"\n observedComponents={observedComponents}\n />\n </Flex>\n\n {onTogglePreviewMode && (\n <Button onClick={onTogglePreviewMode} variant=\"tertiary\" minWidth=\"132px\">\n {isPreviewMode\n ? formatMessage({\n id: 'components.Wysiwyg.ToggleMode.markdown-mode',\n defaultMessage: 'Markdown mode',\n })\n : formatMessage({\n id: 'components.Wysiwyg.ToggleMode.preview-mode',\n defaultMessage: 'Preview mode',\n })}\n </Button>\n )}\n </Flex>\n </Flex>\n );\n};\n\nexport { WysiwygNav };\nexport type { WysiwygNavProps };\n"],"names":["WysiwygNav","disabled","editorRef","isPreviewMode","onToggleMediaLib","onTogglePreviewMode","formatMessage","useIntl","isDisabled","handleActionClick","value","currentEditorRef","markdownHandler","quoteAndCodeHandler","listHandler","titleHandler","observedComponents","toolbar","_jsxs","IconButtonGroup","_jsx","IconButton","onClick","label","id","defaultMessage","name","Bold","Italic","Underline","StrikeThrough","menu","_Fragment","Menu","Separator","Item","startIcon","fill","onSelect","Flex","tag","gap","key","BulletList","NumberList","Code","Image","Link","Quotes","padding","background","justifyContent","borderRadius","width","Field","Root","SingleSelect","placeholder","aria-label","onChange","size","SingleSelectOption","HeadingOne","HeadingTwo","HeadingThree","HeadingFour","HeadingFive","HeadingSix","overflow","EditorToolbarObserver","menuTriggerVariant","Button","variant","minWidth"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WysiwygNav.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useIsMobile } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n IconButton,\n IconButtonGroup,\n SingleSelectOption,\n SingleSelect,\n Field,\n Menu,\n} from '@strapi/design-system';\nimport {\n Bold,\n BulletList,\n Code,\n Italic,\n Link,\n NumberList,\n Image,\n Quotes,\n StrikeThrough,\n Underline,\n HeadingOne,\n HeadingTwo,\n HeadingThree,\n HeadingFour,\n HeadingFive,\n HeadingSix,\n} from '@strapi/icons';\nimport { EditorFromTextArea } from 'codemirror5';\nimport { useIntl } from 'react-intl';\n\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { listHandler, markdownHandler, quoteAndCodeHandler, titleHandler } from './utils/utils';\n\ninterface WysiwygNavProps {\n disabled?: boolean;\n editorRef: React.MutableRefObject<EditorFromTextArea>;\n isExpandMode?: boolean;\n isPreviewMode?: boolean;\n onToggleMediaLib: () => void;\n onTogglePreviewMode?: () => void;\n}\n\ninterface WysiwygPreviewToggleButtonProps {\n isPreviewMode?: boolean;\n onTogglePreviewMode: () => void;\n}\n\nconst WysiwygPreviewToggleButton = ({\n isPreviewMode,\n onTogglePreviewMode,\n}: WysiwygPreviewToggleButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Button onClick={onTogglePreviewMode} variant=\"tertiary\" minWidth=\"132px\">\n {isPreviewMode\n ? formatMessage({\n id: 'components.Wysiwyg.ToggleMode.markdown-mode',\n defaultMessage: 'Markdown mode',\n })\n : formatMessage({\n id: 'components.Wysiwyg.ToggleMode.preview-mode',\n defaultMessage: 'Preview mode',\n })}\n </Button>\n );\n};\n\n/**\n * TODO: refactor this mess.\n */\nconst WysiwygNav = ({\n disabled,\n editorRef,\n isPreviewMode,\n onToggleMediaLib,\n onTogglePreviewMode,\n}: WysiwygNavProps) => {\n const { formatMessage } = useIntl();\n const isMobile = useIsMobile();\n const isDisabled = disabled || isPreviewMode;\n\n const handleActionClick = (\n value: string,\n currentEditorRef: React.MutableRefObject<EditorFromTextArea>\n ) => {\n switch (value) {\n case 'Link': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'Code':\n case 'Quote': {\n quoteAndCodeHandler(currentEditorRef, value);\n break;\n }\n case 'Bold':\n case 'Italic':\n case 'Underline':\n case 'Strikethrough': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'BulletList':\n case 'NumberList': {\n listHandler(currentEditorRef, value);\n break;\n }\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6': {\n titleHandler(currentEditorRef, value);\n break;\n }\n default: {\n // Nothing\n }\n }\n };\n\n const observedComponents: ObservedComponent[] = [\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Bold', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n >\n <Bold />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Italic', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n >\n <Italic />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Underline', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n >\n <Underline />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Strikethrough', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n >\n <StrikeThrough />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Bold fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Bold', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Italic fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Italic', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Underline fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Underline', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<StrikeThrough fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Strikethrough', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-1',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('BulletList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n >\n <BulletList />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('NumberList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n >\n <NumberList />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<BulletList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('BulletList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<NumberList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('NumberList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-2',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Code', editorRef)}\n label={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n name={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n >\n <Code />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => {\n onToggleMediaLib();\n }}\n label={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n >\n <Image />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Link', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n name={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n >\n <Link />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Quote', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n >\n <Quotes />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Code fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Code', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Image fill=\"neutral500\" />}\n onSelect={() => {\n onToggleMediaLib();\n }}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Link fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Link', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Quotes fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Quote', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-3',\n },\n ];\n\n return (\n <Flex\n padding={2}\n background=\"neutral100\"\n justifyContent=\"space-between\"\n borderRadius=\"0.4rem 0.4rem 0 0\"\n width=\"100%\"\n gap={{ initial: 3, medium: 4 }}\n >\n <Field.Root>\n <SingleSelect\n disabled={isDisabled}\n placeholder={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n aria-label={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n // @ts-expect-error – DS v2 will only allow strings.\n onChange={(value) => handleActionClick(value, editorRef)}\n size=\"S\"\n >\n <SingleSelectOption value=\"h1\" startIcon={<HeadingOne fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H1',\n defaultMessage: 'Heading 1',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h2\" startIcon={<HeadingTwo fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H2',\n defaultMessage: 'Heading 2',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h3\" startIcon={<HeadingThree fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H3',\n defaultMessage: 'Heading 3',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h4\" startIcon={<HeadingFour fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H4',\n defaultMessage: 'Heading 4',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h5\" startIcon={<HeadingFive fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H5',\n defaultMessage: 'Heading 5',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h6\" startIcon={<HeadingSix fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H6',\n defaultMessage: 'Heading 6',\n })}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n <Flex width=\"100%\" justifyContent=\"space-between\" overflow=\"hidden\">\n <Flex\n gap={{ initial: 3, medium: 2 }}\n overflow=\"hidden\"\n width=\"100%\"\n data-hide-toolbar-separator=\"true\"\n >\n <EditorToolbarObserver\n menuTriggerVariant=\"tertiary\"\n observedComponents={observedComponents}\n />\n </Flex>\n\n {onTogglePreviewMode && !isMobile && (\n <WysiwygPreviewToggleButton\n isPreviewMode={isPreviewMode}\n onTogglePreviewMode={onTogglePreviewMode}\n />\n )}\n </Flex>\n </Flex>\n );\n};\n\nexport { WysiwygNav, WysiwygPreviewToggleButton };\nexport type { WysiwygNavProps, WysiwygPreviewToggleButtonProps };\n"],"names":["WysiwygPreviewToggleButton","isPreviewMode","onTogglePreviewMode","formatMessage","useIntl","_jsx","Button","onClick","variant","minWidth","id","defaultMessage","WysiwygNav","disabled","editorRef","onToggleMediaLib","isMobile","useIsMobile","isDisabled","handleActionClick","value","currentEditorRef","markdownHandler","quoteAndCodeHandler","listHandler","titleHandler","observedComponents","toolbar","_jsxs","IconButtonGroup","IconButton","label","name","Bold","Italic","Underline","StrikeThrough","menu","_Fragment","Menu","Separator","Item","startIcon","fill","onSelect","Flex","tag","gap","key","BulletList","NumberList","Code","Image","Link","Quotes","padding","background","justifyContent","borderRadius","width","initial","medium","Field","Root","SingleSelect","placeholder","aria-label","onChange","size","SingleSelectOption","HeadingOne","HeadingTwo","HeadingThree","HeadingFour","HeadingFive","HeadingSix","overflow","data-hide-toolbar-separator","EditorToolbarObserver","menuTriggerVariant"],"mappings":"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"}
|
|
@@ -30,15 +30,39 @@ function _interopNamespaceDefault(e) {
|
|
|
30
30
|
|
|
31
31
|
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
32
32
|
|
|
33
|
+
const PanelsItems = ({ panels, setVisiblePanels, visiblePanelsLength })=>{
|
|
34
|
+
React__namespace.useEffect(()=>{
|
|
35
|
+
if (setVisiblePanels && visiblePanelsLength !== panels.length) {
|
|
36
|
+
setVisiblePanels(panels);
|
|
37
|
+
}
|
|
38
|
+
}, [
|
|
39
|
+
panels,
|
|
40
|
+
panels.length,
|
|
41
|
+
setVisiblePanels,
|
|
42
|
+
visiblePanelsLength
|
|
43
|
+
]);
|
|
44
|
+
return /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
45
|
+
children: panels.map(({ content, id, ...description })=>/*#__PURE__*/ jsxRuntime.jsx(Panel, {
|
|
46
|
+
...description,
|
|
47
|
+
children: content
|
|
48
|
+
}, id))
|
|
49
|
+
});
|
|
50
|
+
};
|
|
33
51
|
/* -------------------------------------------------------------------------------------------------
|
|
34
52
|
* Panels
|
|
35
|
-
* -----------------------------------------------------------------------------------------------*/ const Panels = ()=>{
|
|
53
|
+
* -----------------------------------------------------------------------------------------------*/ const Panels = ({ withActions = true })=>{
|
|
36
54
|
const isCloning = reactRouterDom.useMatch(router.CLONE_PATH) !== null;
|
|
37
55
|
const [{ query: { status } }] = strapiAdmin.useQueryParams({
|
|
38
56
|
status: 'draft'
|
|
39
57
|
});
|
|
40
58
|
const { model, id, document, meta, collectionType } = useDocument.useDoc();
|
|
41
59
|
const plugins = strapiAdmin.useStrapiApp('Panels', (state)=>state.plugins);
|
|
60
|
+
// Optional context consumer
|
|
61
|
+
const setVisiblePanels = usePanelsContext('Panels', (s)=>s.setVisiblePanels, false);
|
|
62
|
+
const visiblePanels = usePanelsContext('Panels', (s)=>s.visiblePanels, false);
|
|
63
|
+
const allPanels = plugins['content-manager'].apis.getEditViewSidePanels();
|
|
64
|
+
const filteredPanels = allPanels.filter((panel)=>panel.type !== 'actions');
|
|
65
|
+
const panelsToDisplay = withActions ? allPanels : filteredPanels;
|
|
42
66
|
const props = {
|
|
43
67
|
activeTab: status,
|
|
44
68
|
model,
|
|
@@ -53,11 +77,12 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
|
53
77
|
gap: 2,
|
|
54
78
|
children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.DescriptionComponentRenderer, {
|
|
55
79
|
props: props,
|
|
56
|
-
descriptions:
|
|
57
|
-
children: (panels)
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
80
|
+
descriptions: panelsToDisplay,
|
|
81
|
+
children: (panels)=>/*#__PURE__*/ jsxRuntime.jsx(PanelsItems, {
|
|
82
|
+
panels: panels,
|
|
83
|
+
setVisiblePanels: setVisiblePanels,
|
|
84
|
+
visiblePanelsLength: visiblePanels?.length
|
|
85
|
+
})
|
|
61
86
|
})
|
|
62
87
|
});
|
|
63
88
|
};
|
|
@@ -107,19 +132,32 @@ const ActionsPanelContent = ()=>{
|
|
|
107
132
|
});
|
|
108
133
|
};
|
|
109
134
|
const Panel = /*#__PURE__*/ React__namespace.forwardRef(({ children, title }, ref)=>{
|
|
135
|
+
const isDesktop = strapiAdmin.useIsDesktop();
|
|
110
136
|
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
111
137
|
ref: ref,
|
|
112
138
|
tag: "aside",
|
|
113
139
|
"aria-labelledby": "additional-information",
|
|
114
|
-
background:
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
140
|
+
background: {
|
|
141
|
+
initial: 'transparent',
|
|
142
|
+
large: 'neutral0'
|
|
143
|
+
},
|
|
144
|
+
borderColor: {
|
|
145
|
+
initial: 'transparent',
|
|
146
|
+
large: 'neutral150'
|
|
147
|
+
},
|
|
148
|
+
hasRadius: isDesktop,
|
|
149
|
+
padding: {
|
|
150
|
+
initial: 0,
|
|
151
|
+
large: 4
|
|
152
|
+
},
|
|
153
|
+
shadow: {
|
|
154
|
+
initial: 'none',
|
|
155
|
+
large: 'tableShadow'
|
|
156
|
+
},
|
|
157
|
+
gap: {
|
|
158
|
+
initial: 4,
|
|
159
|
+
large: 3
|
|
160
|
+
},
|
|
123
161
|
direction: "column",
|
|
124
162
|
justifyContent: "stretch",
|
|
125
163
|
alignItems: "flex-start",
|
|
@@ -135,7 +173,21 @@ const Panel = /*#__PURE__*/ React__namespace.forwardRef(({ children, title }, re
|
|
|
135
173
|
]
|
|
136
174
|
});
|
|
137
175
|
});
|
|
176
|
+
/* -------------------------------------------------------------------------------------------------
|
|
177
|
+
* PanelsContext
|
|
178
|
+
* -----------------------------------------------------------------------------------------------*/ const [PanelsProviderImpl, usePanelsContext] = strapiAdmin.createContext('PanelsContext');
|
|
179
|
+
const PanelsProvider = ({ children })=>{
|
|
180
|
+
const [visiblePanels, setVisiblePanels] = React__namespace.useState([]);
|
|
181
|
+
return /*#__PURE__*/ jsxRuntime.jsx(PanelsProviderImpl, {
|
|
182
|
+
visiblePanels: visiblePanels,
|
|
183
|
+
setVisiblePanels: setVisiblePanels,
|
|
184
|
+
children: children
|
|
185
|
+
});
|
|
186
|
+
};
|
|
138
187
|
|
|
139
188
|
exports.ActionsPanel = ActionsPanel;
|
|
189
|
+
exports.ActionsPanelContent = ActionsPanelContent;
|
|
140
190
|
exports.Panels = Panels;
|
|
191
|
+
exports.PanelsProvider = PanelsProvider;
|
|
192
|
+
exports.usePanelsContext = usePanelsContext;
|
|
141
193
|
//# sourceMappingURL=Panels.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Panels.js","sources":["../../../../../admin/src/pages/EditView/components/Panels.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useQueryParams,\n useStrapiApp,\n DescriptionComponentRenderer,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useMatch } from 'react-router-dom';\n\nimport { InjectionZone } from '../../../components/InjectionZone';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { CLONE_PATH } from '../../../router';\n\nimport { DocumentActions } from './DocumentActions';\n\nimport type {\n ContentManagerPlugin,\n DocumentActionProps,\n PanelComponent,\n PanelComponentProps,\n} from '../../../content-manager';\n\ninterface PanelDescription {\n title: string;\n content: React.ReactNode;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Panels\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panels = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('Panels', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies PanelComponentProps;\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getEditViewSidePanels()}\n >\n {(panels) =>\n panels.map(({ content, id, ...description }) => (\n <Panel key={id} {...description}>\n {content}\n </Panel>\n ))\n }\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Default Action Panels (CE)\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionsPanel: PanelComponent = () => {\n const { formatMessage } = useIntl();\n\n return {\n title: formatMessage({\n id: 'content-manager.containers.edit.panels.default.title',\n defaultMessage: 'Entry',\n }),\n content: <ActionsPanelContent />,\n };\n};\n\nActionsPanel.type = 'actions';\n\nconst ActionsPanelContent = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('ActionsPanel', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies DocumentActionProps;\n\n return (\n <Flex direction=\"column\" gap={2} width=\"100%\">\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('panel')}\n >\n {(actions) => <DocumentActions actions={actions} />}\n </DescriptionComponentRenderer>\n <InjectionZone area=\"editView.right-links\" slug={model} />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PanelProps extends Pick<PanelDescription, 'title'> {\n children: React.ReactNode;\n}\n\nconst Panel = React.forwardRef<any, PanelProps>(({ children, title }, ref) => {\n return (\n <Flex\n ref={ref}\n tag=\"aside\"\n aria-labelledby=\"additional-information\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n hasRadius\n paddingBottom={4}\n paddingLeft={4}\n paddingRight={4}\n paddingTop={4}\n shadow=\"tableShadow\"\n gap={3}\n direction=\"column\"\n justifyContent=\"stretch\"\n alignItems=\"flex-start\"\n >\n <Typography tag=\"h2\" variant=\"sigma\" textTransform=\"uppercase\" textColor=\"neutral600\">\n {title}\n </Typography>\n {children}\n </Flex>\n );\n});\n\nexport { Panels, ActionsPanel };\nexport type { PanelDescription };\n"],"names":["Panels","isCloning","useMatch","CLONE_PATH","query","status","useQueryParams","model","id","document","meta","collectionType","useDoc","plugins","useStrapiApp","state","props","activeTab","documentId","undefined","_jsx","Flex","direction","alignItems","gap","DescriptionComponentRenderer","descriptions","apis","getEditViewSidePanels","panels","map","content","description","Panel","ActionsPanel","formatMessage","useIntl","title","defaultMessage","ActionsPanelContent","type","_jsxs","width","getDocumentActions","actions","DocumentActions","InjectionZone","area","slug","React","forwardRef","children","ref","tag","aria-labelledby","background","borderColor","hasRadius","paddingBottom","paddingLeft","paddingRight","paddingTop","shadow","justifyContent","Typography","variant","textTransform","textColor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Panels.js","sources":["../../../../../admin/src/pages/EditView/components/Panels.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useQueryParams,\n useStrapiApp,\n DescriptionComponentRenderer,\n useIsDesktop,\n createContext,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useMatch } from 'react-router-dom';\n\nimport { InjectionZone } from '../../../components/InjectionZone';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { CLONE_PATH } from '../../../router';\n\nimport { DocumentActions } from './DocumentActions';\n\nimport type {\n ContentManagerPlugin,\n DocumentActionProps,\n PanelComponent,\n PanelComponentProps,\n} from '../../../content-manager';\n\ninterface PanelDescription {\n title: string;\n content: React.ReactNode;\n}\ninterface PanelsItemsProps {\n panels: (PanelDescription & { id: string })[];\n setVisiblePanels:\n | React.Dispatch<React.SetStateAction<(PanelDescription & { id: string })[]>>\n | null\n | undefined;\n visiblePanelsLength: number | undefined;\n}\n\nconst PanelsItems = ({ panels, setVisiblePanels, visiblePanelsLength }: PanelsItemsProps) => {\n React.useEffect(() => {\n if (setVisiblePanels && visiblePanelsLength !== panels.length) {\n setVisiblePanels(panels);\n }\n }, [panels, panels.length, setVisiblePanels, visiblePanelsLength]);\n\n return (\n <>\n {panels.map(({ content, id, ...description }) => (\n <Panel key={id} {...description}>\n {content}\n </Panel>\n ))}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panels\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panels = ({ withActions = true }: { withActions?: boolean }) => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('Panels', (state) => state.plugins);\n // Optional context consumer\n const setVisiblePanels = usePanelsContext('Panels', (s) => s.setVisiblePanels, false);\n const visiblePanels = usePanelsContext('Panels', (s) => s.visiblePanels, false);\n\n const allPanels = (\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getEditViewSidePanels();\n const filteredPanels = allPanels.filter((panel) => (panel as PanelComponent).type !== 'actions');\n const panelsToDisplay = withActions ? allPanels : filteredPanels;\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies PanelComponentProps;\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <DescriptionComponentRenderer props={props} descriptions={panelsToDisplay}>\n {(panels) => (\n <PanelsItems\n panels={panels}\n setVisiblePanels={setVisiblePanels}\n visiblePanelsLength={visiblePanels?.length}\n />\n )}\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Default Action Panels (CE)\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionsPanel: PanelComponent = () => {\n const { formatMessage } = useIntl();\n\n return {\n title: formatMessage({\n id: 'content-manager.containers.edit.panels.default.title',\n defaultMessage: 'Entry',\n }),\n content: <ActionsPanelContent />,\n };\n};\n\nActionsPanel.type = 'actions';\n\nconst ActionsPanelContent = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('ActionsPanel', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies DocumentActionProps;\n\n return (\n <Flex direction=\"column\" gap={2} width=\"100%\">\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('panel')}\n >\n {(actions) => <DocumentActions actions={actions} />}\n </DescriptionComponentRenderer>\n <InjectionZone area=\"editView.right-links\" slug={model} />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PanelProps extends Pick<PanelDescription, 'title'> {\n children: React.ReactNode;\n}\n\nconst Panel = React.forwardRef<any, PanelProps>(({ children, title }, ref) => {\n const isDesktop = useIsDesktop();\n\n return (\n <Flex\n ref={ref}\n tag=\"aside\"\n aria-labelledby=\"additional-information\"\n background={{ initial: 'transparent', large: 'neutral0' }}\n borderColor={{ initial: 'transparent', large: 'neutral150' }}\n hasRadius={isDesktop}\n padding={{ initial: 0, large: 4 }}\n shadow={{ initial: 'none', large: 'tableShadow' }}\n gap={{ initial: 4, large: 3 }}\n direction=\"column\"\n justifyContent=\"stretch\"\n alignItems=\"flex-start\"\n >\n <Typography tag=\"h2\" variant=\"sigma\" textTransform=\"uppercase\" textColor=\"neutral600\">\n {title}\n </Typography>\n {children}\n </Flex>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * PanelsContext\n * -----------------------------------------------------------------------------------------------*/\n\nconst [PanelsProviderImpl, usePanelsContext] = createContext<{\n visiblePanels: (PanelDescription & { id: string })[];\n setVisiblePanels: React.Dispatch<React.SetStateAction<(PanelDescription & { id: string })[]>>;\n}>('PanelsContext');\n\nconst PanelsProvider = ({ children }: React.PropsWithChildren) => {\n const [visiblePanels, setVisiblePanels] = React.useState<(PanelDescription & { id: string })[]>(\n []\n );\n\n return (\n <PanelsProviderImpl visiblePanels={visiblePanels} setVisiblePanels={setVisiblePanels}>\n {children}\n </PanelsProviderImpl>\n );\n};\n\nexport { Panels, ActionsPanel, ActionsPanelContent, PanelsProvider, usePanelsContext };\nexport type { PanelDescription };\n"],"names":["PanelsItems","panels","setVisiblePanels","visiblePanelsLength","React","useEffect","length","_jsx","_Fragment","map","content","id","description","Panel","Panels","withActions","isCloning","useMatch","CLONE_PATH","query","status","useQueryParams","model","document","meta","collectionType","useDoc","plugins","useStrapiApp","state","usePanelsContext","s","visiblePanels","allPanels","apis","getEditViewSidePanels","filteredPanels","filter","panel","type","panelsToDisplay","props","activeTab","documentId","undefined","Flex","direction","alignItems","gap","DescriptionComponentRenderer","descriptions","ActionsPanel","formatMessage","useIntl","title","defaultMessage","ActionsPanelContent","_jsxs","width","getDocumentActions","actions","DocumentActions","InjectionZone","area","slug","forwardRef","children","ref","isDesktop","useIsDesktop","tag","aria-labelledby","background","initial","large","borderColor","hasRadius","padding","shadow","justifyContent","Typography","variant","textTransform","textColor","PanelsProviderImpl","createContext","PanelsProvider","useState"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useQueryParams, useStrapiApp, DescriptionComponentRenderer } from '@strapi/admin/strapi-admin';
|
|
3
|
+
import { createContext, useQueryParams, useStrapiApp, DescriptionComponentRenderer, useIsDesktop } from '@strapi/admin/strapi-admin';
|
|
4
4
|
import { Flex, Typography } from '@strapi/design-system';
|
|
5
5
|
import { useIntl } from 'react-intl';
|
|
6
6
|
import { useMatch } from 'react-router-dom';
|
|
@@ -9,15 +9,39 @@ import { useDoc } from '../../../hooks/useDocument.mjs';
|
|
|
9
9
|
import { CLONE_PATH } from '../../../router.mjs';
|
|
10
10
|
import { DocumentActions } from './DocumentActions.mjs';
|
|
11
11
|
|
|
12
|
+
const PanelsItems = ({ panels, setVisiblePanels, visiblePanelsLength })=>{
|
|
13
|
+
React.useEffect(()=>{
|
|
14
|
+
if (setVisiblePanels && visiblePanelsLength !== panels.length) {
|
|
15
|
+
setVisiblePanels(panels);
|
|
16
|
+
}
|
|
17
|
+
}, [
|
|
18
|
+
panels,
|
|
19
|
+
panels.length,
|
|
20
|
+
setVisiblePanels,
|
|
21
|
+
visiblePanelsLength
|
|
22
|
+
]);
|
|
23
|
+
return /*#__PURE__*/ jsx(Fragment, {
|
|
24
|
+
children: panels.map(({ content, id, ...description })=>/*#__PURE__*/ jsx(Panel, {
|
|
25
|
+
...description,
|
|
26
|
+
children: content
|
|
27
|
+
}, id))
|
|
28
|
+
});
|
|
29
|
+
};
|
|
12
30
|
/* -------------------------------------------------------------------------------------------------
|
|
13
31
|
* Panels
|
|
14
|
-
* -----------------------------------------------------------------------------------------------*/ const Panels = ()=>{
|
|
32
|
+
* -----------------------------------------------------------------------------------------------*/ const Panels = ({ withActions = true })=>{
|
|
15
33
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
|
16
34
|
const [{ query: { status } }] = useQueryParams({
|
|
17
35
|
status: 'draft'
|
|
18
36
|
});
|
|
19
37
|
const { model, id, document, meta, collectionType } = useDoc();
|
|
20
38
|
const plugins = useStrapiApp('Panels', (state)=>state.plugins);
|
|
39
|
+
// Optional context consumer
|
|
40
|
+
const setVisiblePanels = usePanelsContext('Panels', (s)=>s.setVisiblePanels, false);
|
|
41
|
+
const visiblePanels = usePanelsContext('Panels', (s)=>s.visiblePanels, false);
|
|
42
|
+
const allPanels = plugins['content-manager'].apis.getEditViewSidePanels();
|
|
43
|
+
const filteredPanels = allPanels.filter((panel)=>panel.type !== 'actions');
|
|
44
|
+
const panelsToDisplay = withActions ? allPanels : filteredPanels;
|
|
21
45
|
const props = {
|
|
22
46
|
activeTab: status,
|
|
23
47
|
model,
|
|
@@ -32,11 +56,12 @@ import { DocumentActions } from './DocumentActions.mjs';
|
|
|
32
56
|
gap: 2,
|
|
33
57
|
children: /*#__PURE__*/ jsx(DescriptionComponentRenderer, {
|
|
34
58
|
props: props,
|
|
35
|
-
descriptions:
|
|
36
|
-
children: (panels)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
59
|
+
descriptions: panelsToDisplay,
|
|
60
|
+
children: (panels)=>/*#__PURE__*/ jsx(PanelsItems, {
|
|
61
|
+
panels: panels,
|
|
62
|
+
setVisiblePanels: setVisiblePanels,
|
|
63
|
+
visiblePanelsLength: visiblePanels?.length
|
|
64
|
+
})
|
|
40
65
|
})
|
|
41
66
|
});
|
|
42
67
|
};
|
|
@@ -86,19 +111,32 @@ const ActionsPanelContent = ()=>{
|
|
|
86
111
|
});
|
|
87
112
|
};
|
|
88
113
|
const Panel = /*#__PURE__*/ React.forwardRef(({ children, title }, ref)=>{
|
|
114
|
+
const isDesktop = useIsDesktop();
|
|
89
115
|
return /*#__PURE__*/ jsxs(Flex, {
|
|
90
116
|
ref: ref,
|
|
91
117
|
tag: "aside",
|
|
92
118
|
"aria-labelledby": "additional-information",
|
|
93
|
-
background:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
119
|
+
background: {
|
|
120
|
+
initial: 'transparent',
|
|
121
|
+
large: 'neutral0'
|
|
122
|
+
},
|
|
123
|
+
borderColor: {
|
|
124
|
+
initial: 'transparent',
|
|
125
|
+
large: 'neutral150'
|
|
126
|
+
},
|
|
127
|
+
hasRadius: isDesktop,
|
|
128
|
+
padding: {
|
|
129
|
+
initial: 0,
|
|
130
|
+
large: 4
|
|
131
|
+
},
|
|
132
|
+
shadow: {
|
|
133
|
+
initial: 'none',
|
|
134
|
+
large: 'tableShadow'
|
|
135
|
+
},
|
|
136
|
+
gap: {
|
|
137
|
+
initial: 4,
|
|
138
|
+
large: 3
|
|
139
|
+
},
|
|
102
140
|
direction: "column",
|
|
103
141
|
justifyContent: "stretch",
|
|
104
142
|
alignItems: "flex-start",
|
|
@@ -114,6 +152,17 @@ const Panel = /*#__PURE__*/ React.forwardRef(({ children, title }, ref)=>{
|
|
|
114
152
|
]
|
|
115
153
|
});
|
|
116
154
|
});
|
|
155
|
+
/* -------------------------------------------------------------------------------------------------
|
|
156
|
+
* PanelsContext
|
|
157
|
+
* -----------------------------------------------------------------------------------------------*/ const [PanelsProviderImpl, usePanelsContext] = createContext('PanelsContext');
|
|
158
|
+
const PanelsProvider = ({ children })=>{
|
|
159
|
+
const [visiblePanels, setVisiblePanels] = React.useState([]);
|
|
160
|
+
return /*#__PURE__*/ jsx(PanelsProviderImpl, {
|
|
161
|
+
visiblePanels: visiblePanels,
|
|
162
|
+
setVisiblePanels: setVisiblePanels,
|
|
163
|
+
children: children
|
|
164
|
+
});
|
|
165
|
+
};
|
|
117
166
|
|
|
118
|
-
export { ActionsPanel, Panels };
|
|
167
|
+
export { ActionsPanel, ActionsPanelContent, Panels, PanelsProvider, usePanelsContext };
|
|
119
168
|
//# sourceMappingURL=Panels.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Panels.mjs","sources":["../../../../../admin/src/pages/EditView/components/Panels.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useQueryParams,\n useStrapiApp,\n DescriptionComponentRenderer,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useMatch } from 'react-router-dom';\n\nimport { InjectionZone } from '../../../components/InjectionZone';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { CLONE_PATH } from '../../../router';\n\nimport { DocumentActions } from './DocumentActions';\n\nimport type {\n ContentManagerPlugin,\n DocumentActionProps,\n PanelComponent,\n PanelComponentProps,\n} from '../../../content-manager';\n\ninterface PanelDescription {\n title: string;\n content: React.ReactNode;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Panels\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panels = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('Panels', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies PanelComponentProps;\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getEditViewSidePanels()}\n >\n {(panels) =>\n panels.map(({ content, id, ...description }) => (\n <Panel key={id} {...description}>\n {content}\n </Panel>\n ))\n }\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Default Action Panels (CE)\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionsPanel: PanelComponent = () => {\n const { formatMessage } = useIntl();\n\n return {\n title: formatMessage({\n id: 'content-manager.containers.edit.panels.default.title',\n defaultMessage: 'Entry',\n }),\n content: <ActionsPanelContent />,\n };\n};\n\nActionsPanel.type = 'actions';\n\nconst ActionsPanelContent = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('ActionsPanel', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies DocumentActionProps;\n\n return (\n <Flex direction=\"column\" gap={2} width=\"100%\">\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('panel')}\n >\n {(actions) => <DocumentActions actions={actions} />}\n </DescriptionComponentRenderer>\n <InjectionZone area=\"editView.right-links\" slug={model} />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PanelProps extends Pick<PanelDescription, 'title'> {\n children: React.ReactNode;\n}\n\nconst Panel = React.forwardRef<any, PanelProps>(({ children, title }, ref) => {\n return (\n <Flex\n ref={ref}\n tag=\"aside\"\n aria-labelledby=\"additional-information\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n hasRadius\n paddingBottom={4}\n paddingLeft={4}\n paddingRight={4}\n paddingTop={4}\n shadow=\"tableShadow\"\n gap={3}\n direction=\"column\"\n justifyContent=\"stretch\"\n alignItems=\"flex-start\"\n >\n <Typography tag=\"h2\" variant=\"sigma\" textTransform=\"uppercase\" textColor=\"neutral600\">\n {title}\n </Typography>\n {children}\n </Flex>\n );\n});\n\nexport { Panels, ActionsPanel };\nexport type { PanelDescription };\n"],"names":["Panels","isCloning","useMatch","CLONE_PATH","query","status","useQueryParams","model","id","document","meta","collectionType","useDoc","plugins","useStrapiApp","state","props","activeTab","documentId","undefined","_jsx","Flex","direction","alignItems","gap","DescriptionComponentRenderer","descriptions","apis","getEditViewSidePanels","panels","map","content","description","Panel","ActionsPanel","formatMessage","useIntl","title","defaultMessage","ActionsPanelContent","type","_jsxs","width","getDocumentActions","actions","DocumentActions","InjectionZone","area","slug","React","forwardRef","children","ref","tag","aria-labelledby","background","borderColor","hasRadius","paddingBottom","paddingLeft","paddingRight","paddingTop","shadow","justifyContent","Typography","variant","textTransform","textColor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Panels.mjs","sources":["../../../../../admin/src/pages/EditView/components/Panels.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useQueryParams,\n useStrapiApp,\n DescriptionComponentRenderer,\n useIsDesktop,\n createContext,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useMatch } from 'react-router-dom';\n\nimport { InjectionZone } from '../../../components/InjectionZone';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { CLONE_PATH } from '../../../router';\n\nimport { DocumentActions } from './DocumentActions';\n\nimport type {\n ContentManagerPlugin,\n DocumentActionProps,\n PanelComponent,\n PanelComponentProps,\n} from '../../../content-manager';\n\ninterface PanelDescription {\n title: string;\n content: React.ReactNode;\n}\ninterface PanelsItemsProps {\n panels: (PanelDescription & { id: string })[];\n setVisiblePanels:\n | React.Dispatch<React.SetStateAction<(PanelDescription & { id: string })[]>>\n | null\n | undefined;\n visiblePanelsLength: number | undefined;\n}\n\nconst PanelsItems = ({ panels, setVisiblePanels, visiblePanelsLength }: PanelsItemsProps) => {\n React.useEffect(() => {\n if (setVisiblePanels && visiblePanelsLength !== panels.length) {\n setVisiblePanels(panels);\n }\n }, [panels, panels.length, setVisiblePanels, visiblePanelsLength]);\n\n return (\n <>\n {panels.map(({ content, id, ...description }) => (\n <Panel key={id} {...description}>\n {content}\n </Panel>\n ))}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panels\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panels = ({ withActions = true }: { withActions?: boolean }) => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('Panels', (state) => state.plugins);\n // Optional context consumer\n const setVisiblePanels = usePanelsContext('Panels', (s) => s.setVisiblePanels, false);\n const visiblePanels = usePanelsContext('Panels', (s) => s.visiblePanels, false);\n\n const allPanels = (\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getEditViewSidePanels();\n const filteredPanels = allPanels.filter((panel) => (panel as PanelComponent).type !== 'actions');\n const panelsToDisplay = withActions ? allPanels : filteredPanels;\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies PanelComponentProps;\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <DescriptionComponentRenderer props={props} descriptions={panelsToDisplay}>\n {(panels) => (\n <PanelsItems\n panels={panels}\n setVisiblePanels={setVisiblePanels}\n visiblePanelsLength={visiblePanels?.length}\n />\n )}\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Default Action Panels (CE)\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionsPanel: PanelComponent = () => {\n const { formatMessage } = useIntl();\n\n return {\n title: formatMessage({\n id: 'content-manager.containers.edit.panels.default.title',\n defaultMessage: 'Entry',\n }),\n content: <ActionsPanelContent />,\n };\n};\n\nActionsPanel.type = 'actions';\n\nconst ActionsPanelContent = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('ActionsPanel', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies DocumentActionProps;\n\n return (\n <Flex direction=\"column\" gap={2} width=\"100%\">\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('panel')}\n >\n {(actions) => <DocumentActions actions={actions} />}\n </DescriptionComponentRenderer>\n <InjectionZone area=\"editView.right-links\" slug={model} />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PanelProps extends Pick<PanelDescription, 'title'> {\n children: React.ReactNode;\n}\n\nconst Panel = React.forwardRef<any, PanelProps>(({ children, title }, ref) => {\n const isDesktop = useIsDesktop();\n\n return (\n <Flex\n ref={ref}\n tag=\"aside\"\n aria-labelledby=\"additional-information\"\n background={{ initial: 'transparent', large: 'neutral0' }}\n borderColor={{ initial: 'transparent', large: 'neutral150' }}\n hasRadius={isDesktop}\n padding={{ initial: 0, large: 4 }}\n shadow={{ initial: 'none', large: 'tableShadow' }}\n gap={{ initial: 4, large: 3 }}\n direction=\"column\"\n justifyContent=\"stretch\"\n alignItems=\"flex-start\"\n >\n <Typography tag=\"h2\" variant=\"sigma\" textTransform=\"uppercase\" textColor=\"neutral600\">\n {title}\n </Typography>\n {children}\n </Flex>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * PanelsContext\n * -----------------------------------------------------------------------------------------------*/\n\nconst [PanelsProviderImpl, usePanelsContext] = createContext<{\n visiblePanels: (PanelDescription & { id: string })[];\n setVisiblePanels: React.Dispatch<React.SetStateAction<(PanelDescription & { id: string })[]>>;\n}>('PanelsContext');\n\nconst PanelsProvider = ({ children }: React.PropsWithChildren) => {\n const [visiblePanels, setVisiblePanels] = React.useState<(PanelDescription & { id: string })[]>(\n []\n );\n\n return (\n <PanelsProviderImpl visiblePanels={visiblePanels} setVisiblePanels={setVisiblePanels}>\n {children}\n </PanelsProviderImpl>\n );\n};\n\nexport { Panels, ActionsPanel, ActionsPanelContent, PanelsProvider, usePanelsContext };\nexport type { PanelDescription };\n"],"names":["PanelsItems","panels","setVisiblePanels","visiblePanelsLength","React","useEffect","length","_jsx","_Fragment","map","content","id","description","Panel","Panels","withActions","isCloning","useMatch","CLONE_PATH","query","status","useQueryParams","model","document","meta","collectionType","useDoc","plugins","useStrapiApp","state","usePanelsContext","s","visiblePanels","allPanels","apis","getEditViewSidePanels","filteredPanels","filter","panel","type","panelsToDisplay","props","activeTab","documentId","undefined","Flex","direction","alignItems","gap","DescriptionComponentRenderer","descriptions","ActionsPanel","formatMessage","useIntl","title","defaultMessage","ActionsPanelContent","_jsxs","width","getDocumentActions","actions","DocumentActions","InjectionZone","area","slug","forwardRef","children","ref","isDesktop","useIsDesktop","tag","aria-labelledby","background","initial","large","borderColor","hasRadius","padding","shadow","justifyContent","Typography","variant","textTransform","textColor","PanelsProviderImpl","createContext","PanelsProvider","useState"],"mappings":"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"}
|
|
@@ -86,7 +86,7 @@ const ListViewPage = ()=>{
|
|
|
86
86
|
const params = React__namespace.useMemo(()=>api.buildValidParams(query), [
|
|
87
87
|
query
|
|
88
88
|
]);
|
|
89
|
-
const { data, error, isFetching } = documents.useGetAllDocumentsQuery({
|
|
89
|
+
const { data, error, isLoading, isFetching } = documents.useGetAllDocumentsQuery({
|
|
90
90
|
model,
|
|
91
91
|
params
|
|
92
92
|
});
|
|
@@ -172,7 +172,7 @@ const ListViewPage = ()=>{
|
|
|
172
172
|
schema?.options?.draftAndPublish,
|
|
173
173
|
model
|
|
174
174
|
]);
|
|
175
|
-
if (
|
|
175
|
+
if (isLoading) {
|
|
176
176
|
return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
|
|
177
177
|
}
|
|
178
178
|
if (error) {
|