@strapi/content-manager 5.28.0 → 5.29.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/ConfigurationForm/EditFieldForm.js +1 -1
- package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs +1 -1
- package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
- package/dist/admin/components/LeftMenu.js +3 -3
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +3 -3
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +6 -0
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +6 -0
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Header.js +63 -18
- package/dist/admin/pages/EditView/components/Header.js.map +1 -1
- package/dist/admin/pages/EditView/components/Header.mjs +65 -20
- package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
- package/dist/admin/services/documents.js +9 -1
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs +9 -1
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/src/pages/EditView/components/Header.d.ts +4 -0
- package/package.json +5 -5
|
@@ -153,7 +153,7 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
|
|
|
153
153
|
components.map(({ displayName, uid })=>/*#__PURE__*/ jsx(Menu.Item, {
|
|
154
154
|
onSelect: ()=>onAddComponent(uid, index),
|
|
155
155
|
children: displayName
|
|
156
|
-
},
|
|
156
|
+
}, uid))
|
|
157
157
|
]
|
|
158
158
|
}, category))
|
|
159
159
|
})
|
|
@@ -176,7 +176,7 @@ const DynamicComponent = ({ componentUid, disabled, index, name, onRemoveCompone
|
|
|
176
176
|
components.map(({ displayName, uid })=>/*#__PURE__*/ jsx(Menu.Item, {
|
|
177
177
|
onSelect: ()=>onAddComponent(uid, index + 1),
|
|
178
178
|
children: displayName
|
|
179
|
-
},
|
|
179
|
+
}, uid))
|
|
180
180
|
]
|
|
181
181
|
}, category))
|
|
182
182
|
})
|
package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicComponent.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, useField, createRulesEngine, useIsDesktop } from '@strapi/admin/strapi-admin';\nimport {\n Accordion,\n Box,\n Flex,\n Grid,\n IconButton,\n useComposedRefs,\n Menu,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Drag, More, Trash } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { COMPONENT_ICONS } from '../../../../../components/ComponentIcon';\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { type UseDragAndDropOptions, useDragAndDrop } from '../../../../../hooks/useDragAndDrop';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { InputRenderer, type InputRendererProps } from '../../InputRenderer';\n\nimport type { ComponentPickerProps } from './ComponentPicker';\n\ninterface DynamicComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel'>,\n Pick<ComponentPickerProps, 'dynamicComponentsByCategory'> {\n componentUid: string;\n disabled?: boolean;\n index: number;\n name: string;\n onAddComponent: (componentUid: string, index: number) => void;\n onRemoveComponentClick: () => void;\n onMoveComponent: (dragIndex: number, hoverIndex: number) => void;\n children?: (props: InputRendererProps) => React.ReactNode;\n}\n\nconst DynamicComponent = ({\n componentUid,\n disabled,\n index,\n name,\n onRemoveComponentClick,\n onMoveComponent,\n onGrabItem,\n onDropItem,\n onCancel,\n dynamicComponentsByCategory = {},\n onAddComponent,\n children,\n}: DynamicComponentProps) => {\n const { formatMessage } = useIntl();\n const formValues = useForm('DynamicComponent', (state) => state.values);\n const { currentDocument, currentDocumentMeta } = useDocumentContext('DynamicComponent');\n const rulesEngine = createRulesEngine();\n const isDesktop = useIsDesktop();\n\n const {\n edit: { components },\n } = useDocumentLayout(currentDocumentMeta.model);\n\n const title = React.useMemo(() => {\n const { mainField } = components[componentUid]?.settings ?? { mainField: 'id' };\n\n const mainFieldValue = getIn(formValues, `${name}.${index}.${mainField}`);\n\n const displayedValue =\n mainField === 'id' || !mainFieldValue ? '' : String(mainFieldValue).trim();\n\n const mainValue = displayedValue.length > 0 ? `- ${displayedValue}` : displayedValue;\n\n return mainValue;\n }, [componentUid, components, formValues, name, index]);\n\n const { icon, displayName } = React.useMemo(() => {\n const [category] = componentUid.split('.');\n const { icon, displayName } = (dynamicComponentsByCategory[category] ?? []).find(\n (component) => component.uid === componentUid\n ) ?? { icon: null, displayName: null };\n\n return { icon, displayName };\n }, [componentUid, dynamicComponentsByCategory]);\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.DYNAMIC_ZONE}_${name}`,\n index,\n item: {\n index,\n displayedValue: `${displayName} ${title}`,\n icon,\n },\n onMoveItem: onMoveComponent,\n onDropItem,\n onGrabItem,\n onCancel,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n /**\n * We don't need the accordion's to communicate with each other,\n * so a unique value for their state is enough.\n */\n const accordionValue = React.useId();\n\n const { value = [], rawError } = useField(`${name}.${index}`);\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n\n React.useEffect(() => {\n if (rawError && value) {\n setCollapseToOpen(accordionValue);\n }\n }, [rawError, value, accordionValue]);\n\n const composedBoxRefs = useComposedRefs(boxRef, dropRef);\n\n const accordionActions = disabled ? null : (\n <>\n <IconButton\n variant=\"ghost\"\n label={formatMessage(\n {\n id: getTranslation('components.DynamicZone.delete-label'),\n defaultMessage: 'Delete {name}',\n },\n { name: title }\n )}\n onClick={onRemoveComponentClick}\n >\n <Trash />\n </IconButton>\n {isDesktop && (\n <IconButton\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n ref={dragRef}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n )}\n <Menu.Root>\n <Menu.Trigger size=\"S\" endIcon={null} paddingLeft={0} paddingRight={0}>\n <IconButton\n variant=\"ghost\"\n label={formatMessage({\n id: getTranslation('components.DynamicZone.more-actions'),\n defaultMessage: 'More actions',\n })}\n tag=\"span\"\n >\n <More aria-hidden focusable={false} />\n </IconButton>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-above'),\n defaultMessage: 'Add component above',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <Menu.Item key={componentUid} onSelect={() => onAddComponent(uid, index)}>\n {displayName}\n </Menu.Item>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-below'),\n defaultMessage: 'Add component below',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <Menu.Item key={componentUid} onSelect={() => onAddComponent(uid, index + 1)}>\n {displayName}\n </Menu.Item>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n </Menu.Content>\n </Menu.Root>\n </>\n );\n\n const accordionTitle = title ? `${displayName} ${title}` : displayName;\n\n return (\n <ComponentContainer tag=\"li\" width=\"100%\">\n <Flex justifyContent=\"center\">\n <Rectangle background=\"neutral200\" />\n </Flex>\n <StyledBox ref={composedBoxRefs} hasRadius>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Root value={collapseToOpen} onValueChange={setCollapseToOpen}>\n <Accordion.Item value={accordionValue}>\n <Accordion.Header>\n <Accordion.Trigger\n icon={\n icon && COMPONENT_ICONS[icon]\n ? COMPONENT_ICONS[icon]\n : COMPONENT_ICONS.dashboard\n }\n >\n {accordionTitle}\n </Accordion.Trigger>\n <Accordion.Actions>{accordionActions}</Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <AccordionContentRadius background=\"neutral0\">\n <Box paddingLeft={6} paddingRight={6} paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={4}>\n {components[componentUid]?.layout?.map((row, rowInd) => {\n const visibleFields = row.filter(({ ...field }) => {\n const condition = field.attribute.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, value);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n return (\n <Grid.Item\n col={12}\n key={rowInd}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <ResponsiveGridRoot gap={4}>\n {visibleFields.map(({ size, ...field }) => {\n const fieldName = `${name}.${index}.${field.name}`;\n\n const fieldWithTranslatedLabel = {\n ...field,\n label: formatMessage({\n id: `content-manager.components.${componentUid}.${field.name}`,\n defaultMessage: field.label,\n }),\n };\n\n return (\n <ResponsiveGridItem\n col={size}\n key={fieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children ? (\n children({\n ...fieldWithTranslatedLabel,\n document: currentDocument,\n name: fieldName,\n })\n ) : (\n <InputRenderer\n {...fieldWithTranslatedLabel}\n document={currentDocument}\n name={fieldName}\n />\n )}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n </AccordionContentRadius>\n </Accordion.Content>\n </Accordion.Item>\n </Accordion.Root>\n )}\n </StyledBox>\n </ComponentContainer>\n );\n};\n\n// TODO: Delete once https://github.com/strapi/design-system/pull/858\n// is merged and released.\nconst StyledBox = styled<BoxComponent>(Box)`\n > div:first-child {\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n }\n`;\n\nconst AccordionContentRadius = styled<BoxComponent>(Box)`\n border-radius: 0 0 ${({ theme }) => theme.spaces[1]} ${({ theme }) => theme.spaces[1]};\n`;\n\nconst Rectangle = styled<BoxComponent>(Box)`\n width: ${({ theme }) => theme.spaces[2]};\n height: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst Preview = styled.span`\n display: block;\n background-color: ${({ theme }) => theme.colors.primary100};\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n padding: ${({ theme }) => theme.spaces[6]};\n`;\n\nconst ComponentContainer = styled<BoxComponent<'li'>>(Box)`\n list-style: none;\n padding: 0;\n margin: 0;\n`;\n\nexport { DynamicComponent };\nexport type { DynamicComponentProps };\n"],"names":["DynamicComponent","componentUid","disabled","index","name","onRemoveComponentClick","onMoveComponent","onGrabItem","onDropItem","onCancel","dynamicComponentsByCategory","onAddComponent","children","formatMessage","useIntl","formValues","useForm","state","values","currentDocument","currentDocumentMeta","useDocumentContext","rulesEngine","createRulesEngine","isDesktop","useIsDesktop","edit","components","useDocumentLayout","model","title","React","useMemo","mainField","settings","mainFieldValue","getIn","displayedValue","String","trim","mainValue","length","icon","displayName","category","split","find","component","uid","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","type","ItemTypes","DYNAMIC_ZONE","item","onMoveItem","useEffect","getEmptyImage","captureDraggingState","accordionValue","useId","value","rawError","useField","collapseToOpen","setCollapseToOpen","useState","composedBoxRefs","useComposedRefs","accordionActions","_jsxs","_Fragment","_jsx","IconButton","variant","label","id","getTranslation","defaultMessage","onClick","Trash","e","stopPropagation","data-handler-id","ref","onKeyDown","Drag","Menu","Root","Trigger","size","endIcon","paddingLeft","paddingRight","tag","More","aria-hidden","focusable","Content","SubRoot","SubTrigger","SubContent","Object","entries","map","Fragment","Label","Item","onSelect","accordionTitle","ComponentContainer","width","Flex","justifyContent","Rectangle","background","StyledBox","hasRadius","Preview","Accordion","onValueChange","Header","COMPONENT_ICONS","dashboard","Actions","AccordionContentRadius","Box","paddingTop","paddingBottom","Grid","gap","layout","row","rowInd","visibleFields","filter","field","condition","attribute","conditions","visible","evaluate","col","s","xs","direction","alignItems","ResponsiveGridRoot","fieldName","fieldWithTranslatedLabel","ResponsiveGridItem","document","InputRenderer","styled","theme","shadows","tableShadow","spaces","span","colors","primary100","primary500"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DynamicComponent.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, useField, createRulesEngine, useIsDesktop } from '@strapi/admin/strapi-admin';\nimport {\n Accordion,\n Box,\n Flex,\n Grid,\n IconButton,\n useComposedRefs,\n Menu,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Drag, More, Trash } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { COMPONENT_ICONS } from '../../../../../components/ComponentIcon';\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { type UseDragAndDropOptions, useDragAndDrop } from '../../../../../hooks/useDragAndDrop';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { InputRenderer, type InputRendererProps } from '../../InputRenderer';\n\nimport type { ComponentPickerProps } from './ComponentPicker';\n\ninterface DynamicComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel'>,\n Pick<ComponentPickerProps, 'dynamicComponentsByCategory'> {\n componentUid: string;\n disabled?: boolean;\n index: number;\n name: string;\n onAddComponent: (componentUid: string, index: number) => void;\n onRemoveComponentClick: () => void;\n onMoveComponent: (dragIndex: number, hoverIndex: number) => void;\n children?: (props: InputRendererProps) => React.ReactNode;\n}\n\nconst DynamicComponent = ({\n componentUid,\n disabled,\n index,\n name,\n onRemoveComponentClick,\n onMoveComponent,\n onGrabItem,\n onDropItem,\n onCancel,\n dynamicComponentsByCategory = {},\n onAddComponent,\n children,\n}: DynamicComponentProps) => {\n const { formatMessage } = useIntl();\n const formValues = useForm('DynamicComponent', (state) => state.values);\n const { currentDocument, currentDocumentMeta } = useDocumentContext('DynamicComponent');\n const rulesEngine = createRulesEngine();\n const isDesktop = useIsDesktop();\n\n const {\n edit: { components },\n } = useDocumentLayout(currentDocumentMeta.model);\n\n const title = React.useMemo(() => {\n const { mainField } = components[componentUid]?.settings ?? { mainField: 'id' };\n\n const mainFieldValue = getIn(formValues, `${name}.${index}.${mainField}`);\n\n const displayedValue =\n mainField === 'id' || !mainFieldValue ? '' : String(mainFieldValue).trim();\n\n const mainValue = displayedValue.length > 0 ? `- ${displayedValue}` : displayedValue;\n\n return mainValue;\n }, [componentUid, components, formValues, name, index]);\n\n const { icon, displayName } = React.useMemo(() => {\n const [category] = componentUid.split('.');\n const { icon, displayName } = (dynamicComponentsByCategory[category] ?? []).find(\n (component) => component.uid === componentUid\n ) ?? { icon: null, displayName: null };\n\n return { icon, displayName };\n }, [componentUid, dynamicComponentsByCategory]);\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.DYNAMIC_ZONE}_${name}`,\n index,\n item: {\n index,\n displayedValue: `${displayName} ${title}`,\n icon,\n },\n onMoveItem: onMoveComponent,\n onDropItem,\n onGrabItem,\n onCancel,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n /**\n * We don't need the accordion's to communicate with each other,\n * so a unique value for their state is enough.\n */\n const accordionValue = React.useId();\n\n const { value = [], rawError } = useField(`${name}.${index}`);\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n\n React.useEffect(() => {\n if (rawError && value) {\n setCollapseToOpen(accordionValue);\n }\n }, [rawError, value, accordionValue]);\n\n const composedBoxRefs = useComposedRefs(boxRef, dropRef);\n\n const accordionActions = disabled ? null : (\n <>\n <IconButton\n variant=\"ghost\"\n label={formatMessage(\n {\n id: getTranslation('components.DynamicZone.delete-label'),\n defaultMessage: 'Delete {name}',\n },\n { name: title }\n )}\n onClick={onRemoveComponentClick}\n >\n <Trash />\n </IconButton>\n {isDesktop && (\n <IconButton\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n ref={dragRef}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n )}\n <Menu.Root>\n <Menu.Trigger size=\"S\" endIcon={null} paddingLeft={0} paddingRight={0}>\n <IconButton\n variant=\"ghost\"\n label={formatMessage({\n id: getTranslation('components.DynamicZone.more-actions'),\n defaultMessage: 'More actions',\n })}\n tag=\"span\"\n >\n <More aria-hidden focusable={false} />\n </IconButton>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-above'),\n defaultMessage: 'Add component above',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <Menu.Item key={uid} onSelect={() => onAddComponent(uid, index)}>\n {displayName}\n </Menu.Item>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-below'),\n defaultMessage: 'Add component below',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <Menu.Item key={uid} onSelect={() => onAddComponent(uid, index + 1)}>\n {displayName}\n </Menu.Item>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n </Menu.Content>\n </Menu.Root>\n </>\n );\n\n const accordionTitle = title ? `${displayName} ${title}` : displayName;\n\n return (\n <ComponentContainer tag=\"li\" width=\"100%\">\n <Flex justifyContent=\"center\">\n <Rectangle background=\"neutral200\" />\n </Flex>\n <StyledBox ref={composedBoxRefs} hasRadius>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Root value={collapseToOpen} onValueChange={setCollapseToOpen}>\n <Accordion.Item value={accordionValue}>\n <Accordion.Header>\n <Accordion.Trigger\n icon={\n icon && COMPONENT_ICONS[icon]\n ? COMPONENT_ICONS[icon]\n : COMPONENT_ICONS.dashboard\n }\n >\n {accordionTitle}\n </Accordion.Trigger>\n <Accordion.Actions>{accordionActions}</Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <AccordionContentRadius background=\"neutral0\">\n <Box paddingLeft={6} paddingRight={6} paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={4}>\n {components[componentUid]?.layout?.map((row, rowInd) => {\n const visibleFields = row.filter(({ ...field }) => {\n const condition = field.attribute.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, value);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n return (\n <Grid.Item\n col={12}\n key={rowInd}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <ResponsiveGridRoot gap={4}>\n {visibleFields.map(({ size, ...field }) => {\n const fieldName = `${name}.${index}.${field.name}`;\n\n const fieldWithTranslatedLabel = {\n ...field,\n label: formatMessage({\n id: `content-manager.components.${componentUid}.${field.name}`,\n defaultMessage: field.label,\n }),\n };\n\n return (\n <ResponsiveGridItem\n col={size}\n key={fieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children ? (\n children({\n ...fieldWithTranslatedLabel,\n document: currentDocument,\n name: fieldName,\n })\n ) : (\n <InputRenderer\n {...fieldWithTranslatedLabel}\n document={currentDocument}\n name={fieldName}\n />\n )}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n </AccordionContentRadius>\n </Accordion.Content>\n </Accordion.Item>\n </Accordion.Root>\n )}\n </StyledBox>\n </ComponentContainer>\n );\n};\n\n// TODO: Delete once https://github.com/strapi/design-system/pull/858\n// is merged and released.\nconst StyledBox = styled<BoxComponent>(Box)`\n > div:first-child {\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n }\n`;\n\nconst AccordionContentRadius = styled<BoxComponent>(Box)`\n border-radius: 0 0 ${({ theme }) => theme.spaces[1]} ${({ theme }) => theme.spaces[1]};\n`;\n\nconst Rectangle = styled<BoxComponent>(Box)`\n width: ${({ theme }) => theme.spaces[2]};\n height: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst Preview = styled.span`\n display: block;\n background-color: ${({ theme }) => theme.colors.primary100};\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n padding: ${({ theme }) => theme.spaces[6]};\n`;\n\nconst ComponentContainer = styled<BoxComponent<'li'>>(Box)`\n list-style: none;\n padding: 0;\n margin: 0;\n`;\n\nexport { DynamicComponent };\nexport type { DynamicComponentProps };\n"],"names":["DynamicComponent","componentUid","disabled","index","name","onRemoveComponentClick","onMoveComponent","onGrabItem","onDropItem","onCancel","dynamicComponentsByCategory","onAddComponent","children","formatMessage","useIntl","formValues","useForm","state","values","currentDocument","currentDocumentMeta","useDocumentContext","rulesEngine","createRulesEngine","isDesktop","useIsDesktop","edit","components","useDocumentLayout","model","title","React","useMemo","mainField","settings","mainFieldValue","getIn","displayedValue","String","trim","mainValue","length","icon","displayName","category","split","find","component","uid","handlerId","isDragging","handleKeyDown","boxRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","type","ItemTypes","DYNAMIC_ZONE","item","onMoveItem","useEffect","getEmptyImage","captureDraggingState","accordionValue","useId","value","rawError","useField","collapseToOpen","setCollapseToOpen","useState","composedBoxRefs","useComposedRefs","accordionActions","_jsxs","_Fragment","_jsx","IconButton","variant","label","id","getTranslation","defaultMessage","onClick","Trash","e","stopPropagation","data-handler-id","ref","onKeyDown","Drag","Menu","Root","Trigger","size","endIcon","paddingLeft","paddingRight","tag","More","aria-hidden","focusable","Content","SubRoot","SubTrigger","SubContent","Object","entries","map","Fragment","Label","Item","onSelect","accordionTitle","ComponentContainer","width","Flex","justifyContent","Rectangle","background","StyledBox","hasRadius","Preview","Accordion","onValueChange","Header","COMPONENT_ICONS","dashboard","Actions","AccordionContentRadius","Box","paddingTop","paddingBottom","Grid","gap","layout","row","rowInd","visibleFields","filter","field","condition","attribute","conditions","visible","evaluate","col","s","xs","direction","alignItems","ResponsiveGridRoot","fieldName","fieldWithTranslatedLabel","ResponsiveGridItem","document","InputRenderer","styled","theme","shadows","tableShadow","spaces","span","colors","primary100","primary500"],"mappings":"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"}
|
|
@@ -294,29 +294,74 @@ const HeaderActions = ({ actions })=>{
|
|
|
294
294
|
children: label
|
|
295
295
|
}, option.value))
|
|
296
296
|
}, action.id);
|
|
297
|
+
} else if (action.status) {
|
|
298
|
+
return /*#__PURE__*/ jsxRuntime.jsx(HeaderActionStatus, {
|
|
299
|
+
tooltip: action.status?.tooltip,
|
|
300
|
+
children: action.status.message
|
|
301
|
+
}, action.id);
|
|
297
302
|
} else {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
action.dialog
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
}, action.id);
|
|
315
|
-
}
|
|
303
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(React__namespace.Fragment, {
|
|
304
|
+
children: [
|
|
305
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
|
|
306
|
+
disabled: action.disabled,
|
|
307
|
+
label: action.label,
|
|
308
|
+
size: "S",
|
|
309
|
+
onClick: handleClick(action),
|
|
310
|
+
children: action.icon
|
|
311
|
+
}),
|
|
312
|
+
action.dialog ? /*#__PURE__*/ jsxRuntime.jsx(HeaderActionDialog, {
|
|
313
|
+
...action.dialog,
|
|
314
|
+
isOpen: dialogId === action.id,
|
|
315
|
+
onClose: handleClose
|
|
316
|
+
}) : null
|
|
317
|
+
]
|
|
318
|
+
}, action.id);
|
|
316
319
|
}
|
|
317
320
|
})
|
|
318
321
|
});
|
|
319
322
|
};
|
|
323
|
+
const HeaderActionStatus = ({ tooltip, children })=>{
|
|
324
|
+
const [open, setOpen] = React__namespace.useState(false);
|
|
325
|
+
// Debounce the open/close so the user can hover over the popover content before it closes
|
|
326
|
+
const debouncedOpen = strapiAdmin.useDebounce(open, 100);
|
|
327
|
+
const handleMouseEnter = ()=>{
|
|
328
|
+
if (tooltip) {
|
|
329
|
+
setOpen(true);
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
const handleMouseLeave = ()=>{
|
|
333
|
+
if (tooltip) {
|
|
334
|
+
setOpen(false);
|
|
335
|
+
}
|
|
336
|
+
};
|
|
337
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Popover.Root, {
|
|
338
|
+
open: debouncedOpen,
|
|
339
|
+
onOpenChange: setOpen,
|
|
340
|
+
children: [
|
|
341
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Popover.Anchor, {
|
|
342
|
+
style: {
|
|
343
|
+
alignSelf: 'stretch'
|
|
344
|
+
},
|
|
345
|
+
onMouseEnter: handleMouseEnter,
|
|
346
|
+
onMouseLeave: handleMouseLeave,
|
|
347
|
+
"aria-describedby": "document-header-action-status",
|
|
348
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
349
|
+
height: "100%",
|
|
350
|
+
children: children
|
|
351
|
+
})
|
|
352
|
+
}),
|
|
353
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Popover.Content, {
|
|
354
|
+
role: "tooltip",
|
|
355
|
+
id: "document-header-action-status",
|
|
356
|
+
side: "bottom",
|
|
357
|
+
align: "center",
|
|
358
|
+
onMouseEnter: handleMouseEnter,
|
|
359
|
+
onMouseLeave: handleMouseLeave,
|
|
360
|
+
children: tooltip
|
|
361
|
+
})
|
|
362
|
+
]
|
|
363
|
+
});
|
|
364
|
+
};
|
|
320
365
|
const HeaderActionDialog = ({ onClose, onCancel, title, content: Content, isOpen })=>{
|
|
321
366
|
const handleClose = async ()=>{
|
|
322
367
|
if (onCancel) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sources":["../../../../../admin/src/pages/EditView/components/Header.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useForm,\n BackButton,\n useNotification,\n useStrapiApp,\n useQueryParams,\n useIsDesktop,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n SingleSelect,\n SingleSelectOption,\n Typography,\n IconButton,\n Dialog,\n} from '@strapi/design-system';\nimport { ListPlus, Pencil, Trash, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { RelativeTime } from '../../../components/RelativeTime';\nimport {\n CREATED_AT_ATTRIBUTE_NAME,\n CREATED_BY_ATTRIBUTE_NAME,\n PUBLISHED_AT_ATTRIBUTE_NAME,\n PUBLISHED_BY_ATTRIBUTE_NAME,\n UPDATED_AT_ATTRIBUTE_NAME,\n UPDATED_BY_ATTRIBUTE_NAME,\n} from '../../../constants/attributes';\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport { getDisplayName } from '../../../utils/users';\n\nimport { DocumentActionsMenu } from './DocumentActions';\nimport { DocumentStatus } from './DocumentStatus';\n\nimport type { ContentManagerPlugin, DocumentActionComponent } from '../../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n isCreating?: boolean;\n status?: 'draft' | 'published' | 'modified';\n title?: string;\n}\n\nconst Header = ({ isCreating, status, title: documentTitle = 'Untitled' }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const isCloning = useMatch(CLONE_PATH) !== null;\n const params = useParams<{ collectionType: string; slug: string }>();\n\n const title = isCreating\n ? formatMessage({\n id: 'content-manager.containers.edit.title.new',\n defaultMessage: 'Create an entry',\n })\n : documentTitle;\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingTop={{\n initial: 4,\n large: 6,\n }}\n paddingBottom={{\n initial: 0,\n large: 4,\n }}\n gap={2}\n >\n <BackButton\n fallback={\n params.collectionType === SINGLE_TYPES\n ? undefined\n : `../${COLLECTION_TYPES}/${params.slug}`\n }\n />\n <Flex\n width=\"100%\"\n justifyContent=\"space-between\"\n gap={{\n initial: 2,\n medium: '8rem',\n }}\n alignItems=\"flex-start\"\n direction={{\n initial: 'column',\n medium: 'row',\n }}\n >\n <Typography variant=\"alpha\" tag=\"h1\">\n {title}\n </Typography>\n <HeaderToolbar />\n </Flex>\n {status ? (\n <Box marginTop={1}>\n <DocumentStatus status={isCloning ? 'draft' : status} />\n </Box>\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderToolbar\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\ninterface HeaderActionDescription {\n disabled?: boolean;\n label: string;\n icon?: React.ReactNode;\n type?: 'icon' | 'default';\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n dialog?: DialogOptions;\n options?: Array<{\n disabled?: boolean;\n label: string;\n startIcon?: React.ReactNode;\n textValue?: string;\n value: string;\n }>;\n onSelect?: (value: string) => void;\n value?: string;\n customizeContent?: (value: string) => React.ReactNode;\n}\n\n/**\n * @description Contains the document actions that have `position: header`, if there are\n * none we still render the menu because we render the information about the document there.\n */\nconst HeaderToolbar = () => {\n const { formatMessage } = useIntl();\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('HeaderToolbar', (state) => state.plugins);\n\n return (\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={{\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getHeaderActions()}\n >\n {(actions) => {\n if (actions.length > 0) {\n return <HeaderActions actions={actions} />;\n } else {\n return null;\n }\n }}\n </DescriptionComponentRenderer>\n <DescriptionComponentRenderer\n props={{\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('header')}\n >\n {(actions) => {\n const headerActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('header');\n });\n\n return (\n <DocumentActionsMenu\n actions={headerActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.header.more-actions',\n defaultMessage: 'More actions',\n })}\n >\n <Information activeTab={status} />\n </DocumentActionsMenu>\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\ninterface InformationProps {\n activeTab: 'draft' | 'published';\n}\n\nconst Information = ({ activeTab }: InformationProps) => {\n const { formatMessage } = useIntl();\n const { document, meta } = useDoc();\n\n if (!document || !document.id) {\n return null;\n }\n\n /**\n * Because in the backend separate entries are made for draft and published\n * documents, the creator fields are different for each of them. For example,\n * you could make your draft in January and then publish it for the first time\n * in Feb. This would make the createdAt value for the published entry in Feb\n * but really we want to show the document as a whole. The draft entry will also\n * never have the publishedAt values.\n *\n * So, we decipher which document to show the creator for based on the activeTab.\n */\n\n const createAndUpdateDocument =\n activeTab === 'draft'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt === null);\n\n const publishDocument =\n activeTab === 'published'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt !== null);\n\n const creator = createAndUpdateDocument?.[CREATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[CREATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const updator = createAndUpdateDocument?.[UPDATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[UPDATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const information: Array<{ isDisplayed?: boolean; label: string; value: React.ReactNode }> = [\n {\n isDisplayed: !!publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-published.label',\n defaultMessage: 'Published',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-published.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime timestamp={new Date(publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME])} />\n ),\n isAnonymous: !publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME],\n author: publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME])\n : null,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-draft.label',\n defaultMessage: 'Updated',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-draft.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !updator,\n author: updator,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.document.label',\n defaultMessage: 'Created',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.document.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !creator,\n author: creator,\n }\n ),\n },\n ].filter((info) => info.isDisplayed);\n\n return (\n <Flex\n borderWidth=\"1px 0 0 0\"\n borderStyle=\"solid\"\n borderColor=\"neutral150\"\n direction=\"column\"\n marginTop={2}\n tag=\"dl\"\n padding={5}\n gap={3}\n alignItems=\"flex-start\"\n /**\n * The menu content has a padding of 4px, but we want our divider (the border top applied) to\n * be flush with the menu content. So we need to adjust the margin & width to account for the padding.\n */\n marginLeft=\"-0.4rem\"\n marginRight=\"-0.4rem\"\n width=\"calc(100% + 8px)\"\n >\n {information.map((info) => (\n <Flex gap={1} direction=\"column\" alignItems=\"flex-start\" key={info.label}>\n <Typography tag=\"dt\" variant=\"pi\" fontWeight=\"bold\">\n {info.label}\n </Typography>\n <Typography tag=\"dd\" variant=\"pi\" textColor=\"neutral600\">\n {info.value}\n </Typography>\n </Flex>\n ))}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderActionsProps {\n actions: Array<HeaderActionDescription & { id: string }>;\n}\n\nconst HeaderActions = ({ actions }: HeaderActionsProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n\n const handleClick =\n (action: HeaderActionDescription & { id: string }) => async (e: React.MouseEvent) => {\n if (!('options' in action)) {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <Flex gap={1}>\n {actions.map((action) => {\n if (action.options) {\n return (\n <SingleSelect\n key={action.id}\n size=\"S\"\n // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n onChange={action.onSelect}\n aria-label={action.label}\n {...action}\n >\n {action.options.map(({ label, ...option }) => (\n <SingleSelectOption key={option.value} {...option}>\n {label}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n } else {\n if (action.type === 'icon') {\n return (\n <React.Fragment key={action.id}>\n <IconButton\n disabled={action.disabled}\n label={action.label}\n size=\"S\"\n onClick={handleClick(action)}\n >\n {action.icon}\n </IconButton>\n {action.dialog ? (\n <HeaderActionDialog\n {...action.dialog}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n </React.Fragment>\n );\n }\n }\n })}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActionDialog\n * -----------------------------------------------------------------------------------------------*/\ninterface HeaderActionDialogProps {\n onClose: () => void;\n onCancel?: () => Promise<void>;\n title: string;\n content?: React.ReactNode | ((props: { onClose: () => void }) => React.ReactNode);\n isOpen: boolean;\n}\n\nconst HeaderActionDialog = ({\n onClose,\n onCancel,\n title,\n content: Content,\n isOpen,\n}: HeaderActionDialogProps) => {\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n {typeof Content === 'function' ? <Content onClose={handleClose} /> : Content}\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst ConfigureTheViewAction: DocumentActionComponent = ({ collectionType, model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return isDesktop\n ? {\n label: formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n }),\n icon: <ListPlus />,\n onClick: () => {\n navigate(`../${collectionType}/${model}/configurations/edit`);\n },\n position: 'header',\n }\n : null;\n};\n\nConfigureTheViewAction.type = 'configure-the-view';\nConfigureTheViewAction.position = 'header';\n\nconst EditTheModelAction: DocumentActionComponent = ({ model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return isDesktop\n ? {\n label: formatMessage({\n id: 'content-manager.link-to-ctb',\n defaultMessage: 'Edit the model',\n }),\n icon: <Pencil />,\n onClick: () => {\n navigate(`/plugins/content-type-builder/content-types/${model}`);\n },\n position: 'header',\n }\n : null;\n};\n\nEditTheModelAction.type = 'edit-the-model';\nEditTheModelAction.position = 'header';\n\nconst DeleteAction: DocumentActionComponent = ({ documentId, model, collectionType, document }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const listViewPathMatch = useMatch(LIST_PATH);\n const canDelete = useDocumentRBAC('DeleteAction', (state) => state.canDelete);\n const { delete: deleteAction, isLoading } = useDocumentActions();\n const { toggleNotification } = useNotification();\n const setSubmitting = useForm('DeleteAction', (state) => state.setSubmitting);\n const isLocalized = document?.locale != null;\n\n return {\n disabled: !canDelete || !document,\n label: formatMessage(\n {\n id: 'content-manager.actions.delete.label',\n defaultMessage: 'Delete entry{isLocalized, select, true { (all locales)} other {}}',\n },\n { isLocalized }\n ),\n icon: <Trash />,\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.delete.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n /**\n * If we have a match, we're in the list view\n * and therefore not in a form and shouldn't be\n * trying to set the submitting value.\n */\n if (!listViewPathMatch) {\n setSubmitting(true);\n }\n try {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n console.error(\n \"You're trying to delete a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.delete.error',\n defaultMessage: 'An error occurred while trying to delete the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await deleteAction({\n documentId,\n model,\n collectionType,\n params: {\n locale: '*',\n },\n });\n\n if (!('error' in res)) {\n navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n }\n } finally {\n if (!listViewPathMatch) {\n setSubmitting(false);\n }\n }\n },\n },\n variant: 'danger',\n position: ['header', 'table-row'],\n };\n};\n\nDeleteAction.type = 'delete';\nDeleteAction.position = ['header', 'table-row'];\n\nconst DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction];\n\nexport { Header, DEFAULT_HEADER_ACTIONS };\nexport type { HeaderProps, HeaderActionDescription };\n"],"names":["Header","isCreating","status","title","documentTitle","formatMessage","useIntl","isCloning","useMatch","CLONE_PATH","params","useParams","id","defaultMessage","_jsxs","Flex","direction","alignItems","paddingTop","initial","large","paddingBottom","gap","_jsx","BackButton","fallback","collectionType","SINGLE_TYPES","undefined","COLLECTION_TYPES","slug","width","justifyContent","medium","Typography","variant","tag","HeaderToolbar","Box","marginTop","DocumentStatus","query","useQueryParams","model","document","meta","useDoc","plugins","useStrapiApp","state","DescriptionComponentRenderer","props","activeTab","documentId","descriptions","apis","getHeaderActions","actions","length","HeaderActions","getDocumentActions","headerActions","filter","action","positions","Array","isArray","position","includes","DocumentActionsMenu","label","Information","createAndUpdateDocument","availableStatus","find","publishedAt","publishDocument","creator","CREATED_BY_ATTRIBUTE_NAME","getDisplayName","updator","UPDATED_BY_ATTRIBUTE_NAME","information","isDisplayed","PUBLISHED_AT_ATTRIBUTE_NAME","value","time","RelativeTime","timestamp","Date","isAnonymous","PUBLISHED_BY_ATTRIBUTE_NAME","author","UPDATED_AT_ATTRIBUTE_NAME","CREATED_AT_ATTRIBUTE_NAME","info","borderWidth","borderStyle","borderColor","padding","marginLeft","marginRight","map","fontWeight","textColor","dialogId","setDialogId","React","useState","handleClick","e","onClick","dialog","muteDialog","preventDefault","handleClose","options","SingleSelect","size","onChange","onSelect","aria-label","option","SingleSelectOption","type","Fragment","IconButton","disabled","icon","HeaderActionDialog","isOpen","onClose","onCancel","content","Content","Dialog","Root","open","onOpenChange","ConfigureTheViewAction","navigate","useNavigate","isDesktop","useIsDesktop","ListPlus","EditTheModelAction","Pencil","DeleteAction","listViewPathMatch","LIST_PATH","canDelete","useDocumentRBAC","delete","deleteAction","isLoading","useDocumentActions","toggleNotification","useNotification","setSubmitting","useForm","isLocalized","locale","Trash","WarningCircle","height","fill","textAlign","loading","onConfirm","console","error","message","res","pathname","replace","DEFAULT_HEADER_ACTIONS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDMA,MAAAA,MAAAA,GAAS,CAAC,EAAEC,UAAU,EAAEC,MAAM,EAAEC,KAAAA,EAAOC,aAAgB,GAAA,UAAU,EAAe,GAAA;IACpF,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAMC,SAAAA,GAAYC,wBAASC,iBAAgB,CAAA,KAAA,IAAA;AAC3C,IAAA,MAAMC,MAASC,GAAAA,wBAAAA,EAAAA;IAEf,MAAMR,KAAAA,GAAQF,aACVI,aAAc,CAAA;QACZO,EAAI,EAAA,2CAAA;QACJC,cAAgB,EAAA;KAElBT,CAAAA,GAAAA,aAAAA;AAEJ,IAAA,qBACEU,eAACC,CAAAA,iBAAAA,EAAAA;QACCC,SAAU,EAAA,QAAA;QACVC,UAAW,EAAA,YAAA;QACXC,UAAY,EAAA;YACVC,OAAS,EAAA,CAAA;YACTC,KAAO,EAAA;AACT,SAAA;QACAC,aAAe,EAAA;YACbF,OAAS,EAAA,CAAA;YACTC,KAAO,EAAA;AACT,SAAA;QACAE,GAAK,EAAA,CAAA;;0BAELC,cAACC,CAAAA,sBAAAA,EAAAA;AACCC,gBAAAA,QAAAA,EACEf,MAAOgB,CAAAA,cAAc,KAAKC,wBAAAA,GACtBC,YACA,CAAC,GAAG,EAAEC,4BAAAA,CAAiB,CAAC,EAAEnB,MAAOoB,CAAAA,IAAI,CAAC;;0BAG9ChB,eAACC,CAAAA,iBAAAA,EAAAA;gBACCgB,KAAM,EAAA,MAAA;gBACNC,cAAe,EAAA,eAAA;gBACfV,GAAK,EAAA;oBACHH,OAAS,EAAA,CAAA;oBACTc,MAAQ,EAAA;AACV,iBAAA;gBACAhB,UAAW,EAAA,YAAA;gBACXD,SAAW,EAAA;oBACTG,OAAS,EAAA,QAAA;oBACTc,MAAQ,EAAA;AACV,iBAAA;;kCAEAV,cAACW,CAAAA,uBAAAA,EAAAA;wBAAWC,OAAQ,EAAA,OAAA;wBAAQC,GAAI,EAAA,IAAA;AAC7BjC,wBAAAA,QAAAA,EAAAA;;kCAEHoB,cAACc,CAAAA,aAAAA,EAAAA,EAAAA;;;AAEFnC,YAAAA,MAAAA,iBACCqB,cAACe,CAAAA,gBAAAA,EAAAA;gBAAIC,SAAW,EAAA,CAAA;AACd,gBAAA,QAAA,gBAAAhB,cAACiB,CAAAA,6BAAAA,EAAAA;AAAetC,oBAAAA,MAAAA,EAAQK,YAAY,OAAUL,GAAAA;;AAE9C,aAAA,CAAA,GAAA;;;AAGV;AAgCA;;;AAGC,IACD,MAAMmC,aAAgB,GAAA,IAAA;IACpB,MAAM,EAAEhC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAMC,SAAAA,GAAYC,wBAASC,iBAAgB,CAAA,KAAA,IAAA;IAC3C,MAAM,CACJ,EACEgC,KAAO,EAAA,EAAEvC,SAAS,OAAO,EAAE,EAC5B,CACF,GAAGwC,0BAAAA,EAAAA;IACJ,MAAM,EAAEC,KAAK,EAAE/B,EAAE,EAAEgC,QAAQ,EAAEC,IAAI,EAAEnB,cAAc,EAAE,GAAGoB,kBAAAA,EAAAA;AACtD,IAAA,MAAMC,UAAUC,wBAAa,CAAA,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAMF,OAAO,CAAA;AAEtE,IAAA,qBACEjC,eAACC,CAAAA,iBAAAA,EAAAA;QAAKO,GAAK,EAAA,CAAA;;0BACTC,cAAC2B,CAAAA,wCAAAA,EAAAA;gBACCC,KAAO,EAAA;oBACLC,SAAWlD,EAAAA,MAAAA;AACXyC,oBAAAA,KAAAA;oBACAU,UAAYzC,EAAAA,EAAAA;AACZgC,oBAAAA,QAAAA,EAAUrC,YAAYqB,SAAYgB,GAAAA,QAAAA;AAClCC,oBAAAA,IAAAA,EAAMtC,YAAYqB,SAAYiB,GAAAA,IAAAA;AAC9BnB,oBAAAA;AACF,iBAAA;AACA4B,gBAAAA,YAAAA,EAAc,OACL,CAAC,kBAAkB,CAACC,IAAI,CAC/BC,gBAAgB,EAAA;0BAEjB,CAACC,OAAAA,GAAAA;oBACA,IAAIA,OAAAA,CAAQC,MAAM,GAAG,CAAG,EAAA;AACtB,wBAAA,qBAAOnC,cAACoC,CAAAA,aAAAA,EAAAA;4BAAcF,OAASA,EAAAA;;qBAC1B,MAAA;wBACL,OAAO,IAAA;AACT;AACF;;0BAEFlC,cAAC2B,CAAAA,wCAAAA,EAAAA;gBACCC,KAAO,EAAA;oBACLC,SAAWlD,EAAAA,MAAAA;AACXyC,oBAAAA,KAAAA;oBACAU,UAAYzC,EAAAA,EAAAA;AACZgC,oBAAAA,QAAAA,EAAUrC,YAAYqB,SAAYgB,GAAAA,QAAAA;AAClCC,oBAAAA,IAAAA,EAAMtC,YAAYqB,SAAYiB,GAAAA,IAAAA;AAC9BnB,oBAAAA;AACF,iBAAA;gBACA4B,YAAc,EACZP,OAAO,CAAC,iBAAA,CAAkB,CAACQ,IAAI,CAC/BK,kBAAkB,CAAC,QAAA,CAAA;0BAEpB,CAACH,OAAAA,GAAAA;AACA,oBAAA,MAAMI,aAAgBJ,GAAAA,OAAAA,CAAQK,MAAM,CAAC,CAACC,MAAAA,GAAAA;wBACpC,MAAMC,SAAAA,GAAYC,MAAMC,OAAO,CAACH,OAAOI,QAAQ,CAAA,GAAIJ,MAAOI,CAAAA,QAAQ,GAAG;AAACJ,4BAAAA,MAAAA,CAAOI;AAAS,yBAAA;wBACtF,OAAOH,SAAAA,CAAUI,QAAQ,CAAC,QAAA,CAAA;AAC5B,qBAAA,CAAA;AAEA,oBAAA,qBACE7C,cAAC8C,CAAAA,mCAAAA,EAAAA;wBACCZ,OAASI,EAAAA,aAAAA;AACTS,wBAAAA,KAAAA,EAAOjE,aAAc,CAAA;4BACnBO,EAAI,EAAA,qDAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAU,cAACgD,CAAAA,WAAAA,EAAAA;4BAAYnB,SAAWlD,EAAAA;;;AAG9B;;;;AAIR,CAAA;AAMA,MAAMqE,WAAc,GAAA,CAAC,EAAEnB,SAAS,EAAoB,GAAA;IAClD,MAAM,EAAE/C,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEsC,QAAQ,EAAEC,IAAI,EAAE,GAAGC,kBAAAA,EAAAA;AAE3B,IAAA,IAAI,CAACF,QAAAA,IAAY,CAACA,QAAAA,CAAShC,EAAE,EAAE;QAC7B,OAAO,IAAA;AACT;AAEA;;;;;;;;;AASC,MAED,MAAM4D,uBAAAA,GACJpB,SAAc,KAAA,OAAA,GACVR,QACAC,GAAAA,IAAAA,EAAM4B,eAAgBC,CAAAA,IAAAA,CAAK,CAACxE,MAAAA,GAAWA,MAAOyE,CAAAA,WAAW,KAAK,IAAA,CAAA;IAEpE,MAAMC,eAAAA,GACJxB,SAAc,KAAA,WAAA,GACVR,QACAC,GAAAA,IAAAA,EAAM4B,eAAgBC,CAAAA,IAAAA,CAAK,CAACxE,MAAAA,GAAWA,MAAOyE,CAAAA,WAAW,KAAK,IAAA,CAAA;IAEpE,MAAME,OAAAA,GAAUL,0BAA0BM,oCAAAA,CAA0B,GAChEC,oBAAeP,CAAAA,uBAAuB,CAACM,oCAAAA,CAA0B,CACjE,GAAA,IAAA;IAEJ,MAAME,OAAAA,GAAUR,0BAA0BS,oCAAAA,CAA0B,GAChEF,oBAAeP,CAAAA,uBAAuB,CAACS,oCAAAA,CAA0B,CACjE,GAAA,IAAA;AAEJ,IAAA,MAAMC,WAAuF,GAAA;AAC3F,QAAA;AACEC,YAAAA,WAAAA,EAAa,CAAC,CAACP,eAAiB,GAACQ,sCAA4B,CAAA;AAC7Dd,YAAAA,KAAAA,EAAOjE,aAAc,CAAA;gBACnBO,EAAI,EAAA,kEAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;AACAwE,YAAAA,KAAAA,EAAOhF,aACL,CAAA;gBACEO,EAAI,EAAA,kEAAA;gBACJC,cAAgB,EAAA,CAAC,yDAAyD;aAE5E,EAAA;AACEyE,gBAAAA,IAAAA,gBACE/D,cAACgE,CAAAA,yBAAAA,EAAAA;AAAaC,oBAAAA,SAAAA,EAAW,IAAIC,IAAAA,CAAKb,eAAiB,GAACQ,sCAA4B,CAAA;;gBAElFM,WAAa,EAAA,CAACd,eAAiB,GAACe,sCAA4B,CAAA;gBAC5DC,MAAQhB,EAAAA,eAAAA,GAAkBe,sCAA4B,CAAA,GAClDZ,qBAAeH,eAAiB,GAACe,uCAA4B,CAC7D,GAAA;AACN,aAAA;AAEJ,SAAA;AACA,QAAA;AACER,YAAAA,WAAAA,EAAa,CAAC,CAACX,uBAAyB,GAACqB,oCAA0B,CAAA;AACnEvB,YAAAA,KAAAA,EAAOjE,aAAc,CAAA;gBACnBO,EAAI,EAAA,8DAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;AACAwE,YAAAA,KAAAA,EAAOhF,aACL,CAAA;gBACEO,EAAI,EAAA,8DAAA;gBACJC,cAAgB,EAAA,CAAC,yDAAyD;aAE5E,EAAA;AACEyE,gBAAAA,IAAAA,gBACE/D,cAACgE,CAAAA,yBAAAA,EAAAA;AACCC,oBAAAA,SAAAA,EAAW,IAAIC,IAAAA,CAAKjB,uBAAyB,GAACqB,oCAA0B,CAAA;;AAG5EH,gBAAAA,WAAAA,EAAa,CAACV,OAAAA;gBACdY,MAAQZ,EAAAA;AACV,aAAA;AAEJ,SAAA;AACA,QAAA;AACEG,YAAAA,WAAAA,EAAa,CAAC,CAACX,uBAAyB,GAACsB,oCAA0B,CAAA;AACnExB,YAAAA,KAAAA,EAAOjE,aAAc,CAAA;gBACnBO,EAAI,EAAA,4DAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;AACAwE,YAAAA,KAAAA,EAAOhF,aACL,CAAA;gBACEO,EAAI,EAAA,4DAAA;gBACJC,cAAgB,EAAA,CAAC,yDAAyD;aAE5E,EAAA;AACEyE,gBAAAA,IAAAA,gBACE/D,cAACgE,CAAAA,yBAAAA,EAAAA;AACCC,oBAAAA,SAAAA,EAAW,IAAIC,IAAAA,CAAKjB,uBAAyB,GAACsB,oCAA0B,CAAA;;AAG5EJ,gBAAAA,WAAAA,EAAa,CAACb,OAAAA;gBACde,MAAQf,EAAAA;AACV,aAAA;AAEJ;AACD,KAAA,CAACf,MAAM,CAAC,CAACiC,IAAAA,GAASA,KAAKZ,WAAW,CAAA;AAEnC,IAAA,qBACE5D,cAACR,CAAAA,iBAAAA,EAAAA;QACCiF,WAAY,EAAA,WAAA;QACZC,WAAY,EAAA,OAAA;QACZC,WAAY,EAAA,YAAA;QACZlF,SAAU,EAAA,QAAA;QACVuB,SAAW,EAAA,CAAA;QACXH,GAAI,EAAA,IAAA;QACJ+D,OAAS,EAAA,CAAA;QACT7E,GAAK,EAAA,CAAA;QACLL,UAAW,EAAA,YAAA;AACX;;;AAGC,UACDmF,UAAW,EAAA,SAAA;QACXC,WAAY,EAAA,SAAA;QACZtE,KAAM,EAAA,kBAAA;AAELmD,QAAAA,QAAAA,EAAAA,WAAAA,CAAYoB,GAAG,CAAC,CAACP,IAAAA,iBAChBjF,eAACC,CAAAA,iBAAAA,EAAAA;gBAAKO,GAAK,EAAA,CAAA;gBAAGN,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,YAAA;;kCAC1CM,cAACW,CAAAA,uBAAAA,EAAAA;wBAAWE,GAAI,EAAA,IAAA;wBAAKD,OAAQ,EAAA,IAAA;wBAAKoE,UAAW,EAAA,MAAA;AAC1CR,wBAAAA,QAAAA,EAAAA,IAAAA,CAAKzB;;kCAER/C,cAACW,CAAAA,uBAAAA,EAAAA;wBAAWE,GAAI,EAAA,IAAA;wBAAKD,OAAQ,EAAA,IAAA;wBAAKqE,SAAU,EAAA,YAAA;AACzCT,wBAAAA,QAAAA,EAAAA,IAAAA,CAAKV;;;AALoDU,aAAAA,EAAAA,IAAAA,CAAKzB,KAAK,CAAA;;AAWhF,CAAA;AAUA,MAAMX,aAAgB,GAAA,CAAC,EAAEF,OAAO,EAAsB,GAAA;AACpD,IAAA,MAAM,CAACgD,QAAUC,EAAAA,WAAAA,CAAY,GAAGC,gBAAAA,CAAMC,QAAQ,CAAgB,IAAA,CAAA;IAE9D,MAAMC,WAAAA,GACJ,CAAC9C,MAAAA,GAAqD,OAAO+C,CAAAA,GAAAA;AAC3D,YAAA,IAAI,EAAE,SAAa/C,IAAAA,MAAK,CAAI,EAAA;gBAC1B,MAAM,EAAEgD,UAAU,IAAM,KAAK,EAAEC,MAAM,EAAEpG,EAAE,EAAE,GAAGmD,MAAAA;gBAE9C,MAAMkD,UAAAA,GAAa,MAAMF,OAAQD,CAAAA,CAAAA,CAAAA;gBAEjC,IAAIE,MAAAA,IAAU,CAACC,UAAY,EAAA;AACzBH,oBAAAA,CAAAA,CAAEI,cAAc,EAAA;oBAChBR,WAAY9F,CAAAA,EAAAA,CAAAA;AACd;AACF;AACF,SAAA;AAEF,IAAA,MAAMuG,WAAc,GAAA,IAAA;QAClBT,WAAY,CAAA,IAAA,CAAA;AACd,KAAA;AAEA,IAAA,qBACEnF,cAACR,CAAAA,iBAAAA,EAAAA;QAAKO,GAAK,EAAA,CAAA;kBACRmC,OAAQ6C,CAAAA,GAAG,CAAC,CAACvC,MAAAA,GAAAA;YACZ,IAAIA,MAAAA,CAAOqD,OAAO,EAAE;AAClB,gBAAA,qBACE7F,cAAC8F,CAAAA,yBAAAA,EAAAA;oBAECC,IAAK,EAAA,GAAA;;AAELC,oBAAAA,QAAAA,EAAUxD,OAAOyD,QAAQ;AACzBC,oBAAAA,YAAAA,EAAY1D,OAAOO,KAAK;AACvB,oBAAA,GAAGP,MAAM;8BAETA,MAAOqD,CAAAA,OAAO,CAACd,GAAG,CAAC,CAAC,EAAEhC,KAAK,EAAE,GAAGoD,MAAQ,EAAA,iBACvCnG,cAACoG,CAAAA,+BAAAA,EAAAA;AAAuC,4BAAA,GAAGD,MAAM;AAC9CpD,4BAAAA,QAAAA,EAAAA;AADsBoD,yBAAAA,EAAAA,MAAAA,CAAOrC,KAAK,CAAA;AARlCtB,iBAAAA,EAAAA,MAAAA,CAAOnD,EAAE,CAAA;aAcb,MAAA;gBACL,IAAImD,MAAAA,CAAO6D,IAAI,KAAK,MAAQ,EAAA;oBAC1B,qBACE9G,eAAA,CAAC6F,iBAAMkB,QAAQ,EAAA;;0CACbtG,cAACuG,CAAAA,uBAAAA,EAAAA;AACCC,gCAAAA,QAAAA,EAAUhE,OAAOgE,QAAQ;AACzBzD,gCAAAA,KAAAA,EAAOP,OAAOO,KAAK;gCACnBgD,IAAK,EAAA,GAAA;AACLP,gCAAAA,OAAAA,EAASF,WAAY9C,CAAAA,MAAAA,CAAAA;AAEpBA,gCAAAA,QAAAA,EAAAA,MAAAA,CAAOiE;;4BAETjE,MAAOiD,CAAAA,MAAM,iBACZzF,cAAC0G,CAAAA,kBAAAA,EAAAA;AACE,gCAAA,GAAGlE,OAAOiD,MAAM;gCACjBkB,MAAQzB,EAAAA,QAAAA,KAAa1C,OAAOnD,EAAE;gCAC9BuH,OAAShB,EAAAA;AAET,6BAAA,CAAA,GAAA;;AAfepD,qBAAAA,EAAAA,MAAAA,CAAOnD,EAAE,CAAA;AAkBlC;AACF;AACF,SAAA;;AAGN,CAAA;AAaA,MAAMqH,kBAAqB,GAAA,CAAC,EAC1BE,OAAO,EACPC,QAAQ,EACRjI,KAAK,EACLkI,OAAAA,EAASC,OAAO,EAChBJ,MAAM,EACkB,GAAA;AACxB,IAAA,MAAMf,WAAc,GAAA,UAAA;AAClB,QAAA,IAAIiB,QAAU,EAAA;YACZ,MAAMA,QAAAA,EAAAA;AACR;AAEAD,QAAAA,OAAAA,EAAAA;AACF,KAAA;IAEA,qBACE5G,cAAA,CAACgH,oBAAOC,IAAI,EAAA;QAACC,IAAMP,EAAAA,MAAAA;QAAQQ,YAAcvB,EAAAA,WAAAA;gCACvCrG,eAAA,CAACyH,oBAAOD,OAAO,EAAA;;AACb,8BAAA/G,cAAA,CAACgH,oBAAOvI,MAAM,EAAA;AAAEG,oBAAAA,QAAAA,EAAAA;;gBACf,OAAOmI,OAAAA,KAAY,2BAAa/G,cAAC+G,CAAAA,OAAAA,EAAAA;oBAAQH,OAAShB,EAAAA;AAAkBmB,iBAAAA,CAAAA,GAAAA;;;;AAI7E,CAAA;AAEA;;AAEkG,qGAElG,MAAMK,sBAAkD,GAAA,CAAC,EAAEjH,cAAc,EAAEiB,KAAK,EAAE,GAAA;AAChF,IAAA,MAAMiG,QAAWC,GAAAA,0BAAAA,EAAAA;IACjB,MAAM,EAAExI,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMwI,SAAYC,GAAAA,wBAAAA,EAAAA;AAElB,IAAA,OAAOD,SACH,GAAA;AACExE,QAAAA,KAAAA,EAAOjE,aAAc,CAAA;YACnBO,EAAI,EAAA,0BAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAmH,QAAAA,IAAAA,gBAAMzG,cAACyH,CAAAA,cAAAA,EAAAA,EAAAA,CAAAA;QACPjC,OAAS,EAAA,IAAA;YACP6B,QAAS,CAAA,CAAC,GAAG,EAAElH,cAAAA,CAAe,CAAC,EAAEiB,KAAAA,CAAM,oBAAoB,CAAC,CAAA;AAC9D,SAAA;QACAwB,QAAU,EAAA;KAEZ,GAAA,IAAA;AACN,CAAA;AAEAwE,sBAAAA,CAAuBf,IAAI,GAAG,oBAAA;AAC9Be,sBAAAA,CAAuBxE,QAAQ,GAAG,QAAA;AAElC,MAAM8E,kBAA8C,GAAA,CAAC,EAAEtG,KAAK,EAAE,GAAA;AAC5D,IAAA,MAAMiG,QAAWC,GAAAA,0BAAAA,EAAAA;IACjB,MAAM,EAAExI,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMwI,SAAYC,GAAAA,wBAAAA,EAAAA;AAElB,IAAA,OAAOD,SACH,GAAA;AACExE,QAAAA,KAAAA,EAAOjE,aAAc,CAAA;YACnBO,EAAI,EAAA,6BAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAmH,QAAAA,IAAAA,gBAAMzG,cAAC2H,CAAAA,YAAAA,EAAAA,EAAAA,CAAAA;QACPnC,OAAS,EAAA,IAAA;AACP6B,YAAAA,QAAAA,CAAS,CAAC,4CAA4C,EAAEjG,KAAAA,CAAM,CAAC,CAAA;AACjE,SAAA;QACAwB,QAAU,EAAA;KAEZ,GAAA,IAAA;AACN,CAAA;AAEA8E,kBAAAA,CAAmBrB,IAAI,GAAG,gBAAA;AAC1BqB,kBAAAA,CAAmB9E,QAAQ,GAAG,QAAA;AAE9B,MAAMgF,YAAAA,GAAwC,CAAC,EAAE9F,UAAU,EAAEV,KAAK,EAAEjB,cAAc,EAAEkB,QAAQ,EAAE,GAAA;AAC5F,IAAA,MAAMgG,QAAWC,GAAAA,0BAAAA,EAAAA;IACjB,MAAM,EAAExI,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM8I,oBAAoB5I,uBAAS6I,CAAAA,gBAAAA,CAAAA;AACnC,IAAA,MAAMC,YAAYC,4BAAgB,CAAA,cAAA,EAAgB,CAACtG,KAAAA,GAAUA,MAAMqG,SAAS,CAAA;AAC5E,IAAA,MAAM,EAAEE,MAAQC,EAAAA,YAAY,EAAEC,SAAS,EAAE,GAAGC,qCAAAA,EAAAA;IAC5C,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAMC,gBAAgBC,mBAAQ,CAAA,cAAA,EAAgB,CAAC9G,KAAAA,GAAUA,MAAM6G,aAAa,CAAA;IAC5E,MAAME,WAAAA,GAAcpH,UAAUqH,MAAU,IAAA,IAAA;IAExC,OAAO;QACLlC,QAAU,EAAA,CAACuB,aAAa,CAAC1G,QAAAA;AACzB0B,QAAAA,KAAAA,EAAOjE,aACL,CAAA;YACEO,EAAI,EAAA,sCAAA;YACJC,cAAgB,EAAA;SAElB,EAAA;AAAEmJ,YAAAA;AAAY,SAAA,CAAA;AAEhBhC,QAAAA,IAAAA,gBAAMzG,cAAC2I,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;QACPlD,MAAQ,EAAA;YACNY,IAAM,EAAA,QAAA;AACNzH,YAAAA,KAAAA,EAAOE,aAAc,CAAA;gBACnBO,EAAI,EAAA,oCAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;AACAwH,YAAAA,OAAAA,gBACEvH,eAACC,CAAAA,iBAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASM,GAAK,EAAA,CAAA;;kCAC5BC,cAAC4I,CAAAA,mBAAAA,EAAAA;wBAAcpI,KAAM,EAAA,MAAA;wBAAOqI,MAAO,EAAA,MAAA;wBAAOC,IAAK,EAAA;;kCAC/C9I,cAACW,CAAAA,uBAAAA,EAAAA;wBAAWE,GAAI,EAAA,GAAA;wBAAID,OAAQ,EAAA,OAAA;wBAAQmI,SAAU,EAAA,QAAA;kCAC3CjK,aAAc,CAAA;4BACbO,EAAI,EAAA,4CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;;;YAIN0J,OAASb,EAAAA,SAAAA;YACTc,SAAW,EAAA,UAAA;AACT;;;;YAKA,IAAI,CAACpB,iBAAmB,EAAA;oBACtBU,aAAc,CAAA,IAAA,CAAA;AAChB;gBACA,IAAI;oBACF,IAAI,CAACzG,UAAc3B,IAAAA,cAAAA,KAAmBC,wBAAc,EAAA;AAClD8I,wBAAAA,OAAAA,CAAQC,KAAK,CACX,2GAAA,CAAA;wBAGFd,kBAAmB,CAAA;AACjBe,4BAAAA,OAAAA,EAAStK,aAAc,CAAA;gCACrBO,EAAI,EAAA,sCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA,CAAA;4BACA+G,IAAM,EAAA;AACR,yBAAA,CAAA;AAEA,wBAAA;AACF;oBAEA,MAAMgD,GAAAA,GAAM,MAAMnB,YAAa,CAAA;AAC7BpG,wBAAAA,UAAAA;AACAV,wBAAAA,KAAAA;AACAjB,wBAAAA,cAAAA;wBACAhB,MAAQ,EAAA;4BACNuJ,MAAQ,EAAA;AACV;AACF,qBAAA,CAAA;AAEA,oBAAA,IAAI,EAAE,OAAWW,IAAAA,GAAE,CAAI,EAAA;wBACrBhC,QAAS,CAAA;AAAEiC,4BAAAA,QAAAA,EAAU,CAAC,GAAG,EAAEnJ,eAAe,CAAC,EAAEiB,MAAM;yBAAK,EAAA;4BAAEmI,OAAS,EAAA;AAAK,yBAAA,CAAA;AAC1E;iBACQ,QAAA;AACR,oBAAA,IAAI,CAAC1B,iBAAmB,EAAA;wBACtBU,aAAc,CAAA,KAAA,CAAA;AAChB;AACF;AACF;AACF,SAAA;QACA3H,OAAS,EAAA,QAAA;QACTgC,QAAU,EAAA;AAAC,YAAA,QAAA;AAAU,YAAA;AAAY;AACnC,KAAA;AACF,CAAA;AAEAgF,YAAAA,CAAavB,IAAI,GAAG,QAAA;AACpBuB,YAAAA,CAAahF,QAAQ,GAAG;AAAC,IAAA,QAAA;AAAU,IAAA;AAAY,CAAA;AAE/C,MAAM4G,sBAAyB,GAAA;AAAC9B,IAAAA,kBAAAA;AAAoBN,IAAAA,sBAAAA;AAAwBQ,IAAAA;AAAa;;;;;"}
|
|
1
|
+
{"version":3,"file":"Header.js","sources":["../../../../../admin/src/pages/EditView/components/Header.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useForm,\n BackButton,\n useNotification,\n useStrapiApp,\n useQueryParams,\n useIsDesktop,\n useDebounce,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n SingleSelect,\n SingleSelectOption,\n Typography,\n IconButton,\n Dialog,\n Popover,\n} from '@strapi/design-system';\nimport { ListPlus, Pencil, Trash, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { RelativeTime } from '../../../components/RelativeTime';\nimport {\n CREATED_AT_ATTRIBUTE_NAME,\n CREATED_BY_ATTRIBUTE_NAME,\n PUBLISHED_AT_ATTRIBUTE_NAME,\n PUBLISHED_BY_ATTRIBUTE_NAME,\n UPDATED_AT_ATTRIBUTE_NAME,\n UPDATED_BY_ATTRIBUTE_NAME,\n} from '../../../constants/attributes';\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport { getDisplayName } from '../../../utils/users';\n\nimport { DocumentActionsMenu } from './DocumentActions';\nimport { DocumentStatus } from './DocumentStatus';\n\nimport type { ContentManagerPlugin, DocumentActionComponent } from '../../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n isCreating?: boolean;\n status?: 'draft' | 'published' | 'modified';\n title?: string;\n}\n\nconst Header = ({ isCreating, status, title: documentTitle = 'Untitled' }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const isCloning = useMatch(CLONE_PATH) !== null;\n const params = useParams<{ collectionType: string; slug: string }>();\n\n const title = isCreating\n ? formatMessage({\n id: 'content-manager.containers.edit.title.new',\n defaultMessage: 'Create an entry',\n })\n : documentTitle;\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingTop={{\n initial: 4,\n large: 6,\n }}\n paddingBottom={{\n initial: 0,\n large: 4,\n }}\n gap={2}\n >\n <BackButton\n fallback={\n params.collectionType === SINGLE_TYPES\n ? undefined\n : `../${COLLECTION_TYPES}/${params.slug}`\n }\n />\n <Flex\n width=\"100%\"\n justifyContent=\"space-between\"\n gap={{\n initial: 2,\n medium: '8rem',\n }}\n alignItems=\"flex-start\"\n direction={{\n initial: 'column',\n medium: 'row',\n }}\n >\n <Typography variant=\"alpha\" tag=\"h1\">\n {title}\n </Typography>\n <HeaderToolbar />\n </Flex>\n {status ? (\n <Box marginTop={1}>\n <DocumentStatus status={isCloning ? 'draft' : status} />\n </Box>\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderToolbar\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\ninterface HeaderActionDescription {\n disabled?: boolean;\n label: string;\n icon?: React.ReactNode;\n type?: 'icon' | 'default';\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n dialog?: DialogOptions;\n options?: Array<{\n disabled?: boolean;\n label: string;\n startIcon?: React.ReactNode;\n textValue?: string;\n value: string;\n }>;\n status?: {\n message: React.ReactNode;\n tooltip?: React.ReactNode;\n };\n onSelect?: (value: string) => void;\n value?: string;\n customizeContent?: (value: string) => React.ReactNode;\n}\n\n/**\n * @description Contains the document actions that have `position: header`, if there are\n * none we still render the menu because we render the information about the document there.\n */\nconst HeaderToolbar = () => {\n const { formatMessage } = useIntl();\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('HeaderToolbar', (state) => state.plugins);\n\n return (\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={{\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getHeaderActions()}\n >\n {(actions) => {\n if (actions.length > 0) {\n return <HeaderActions actions={actions} />;\n } else {\n return null;\n }\n }}\n </DescriptionComponentRenderer>\n <DescriptionComponentRenderer\n props={{\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('header')}\n >\n {(actions) => {\n const headerActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('header');\n });\n\n return (\n <DocumentActionsMenu\n actions={headerActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.header.more-actions',\n defaultMessage: 'More actions',\n })}\n >\n <Information activeTab={status} />\n </DocumentActionsMenu>\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\ninterface InformationProps {\n activeTab: 'draft' | 'published';\n}\n\nconst Information = ({ activeTab }: InformationProps) => {\n const { formatMessage } = useIntl();\n const { document, meta } = useDoc();\n\n if (!document || !document.id) {\n return null;\n }\n\n /**\n * Because in the backend separate entries are made for draft and published\n * documents, the creator fields are different for each of them. For example,\n * you could make your draft in January and then publish it for the first time\n * in Feb. This would make the createdAt value for the published entry in Feb\n * but really we want to show the document as a whole. The draft entry will also\n * never have the publishedAt values.\n *\n * So, we decipher which document to show the creator for based on the activeTab.\n */\n\n const createAndUpdateDocument =\n activeTab === 'draft'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt === null);\n\n const publishDocument =\n activeTab === 'published'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt !== null);\n\n const creator = createAndUpdateDocument?.[CREATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[CREATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const updator = createAndUpdateDocument?.[UPDATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[UPDATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const information: Array<{ isDisplayed?: boolean; label: string; value: React.ReactNode }> = [\n {\n isDisplayed: !!publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-published.label',\n defaultMessage: 'Published',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-published.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime timestamp={new Date(publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME])} />\n ),\n isAnonymous: !publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME],\n author: publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME])\n : null,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-draft.label',\n defaultMessage: 'Updated',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-draft.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !updator,\n author: updator,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.document.label',\n defaultMessage: 'Created',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.document.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !creator,\n author: creator,\n }\n ),\n },\n ].filter((info) => info.isDisplayed);\n\n return (\n <Flex\n borderWidth=\"1px 0 0 0\"\n borderStyle=\"solid\"\n borderColor=\"neutral150\"\n direction=\"column\"\n marginTop={2}\n tag=\"dl\"\n padding={5}\n gap={3}\n alignItems=\"flex-start\"\n /**\n * The menu content has a padding of 4px, but we want our divider (the border top applied) to\n * be flush with the menu content. So we need to adjust the margin & width to account for the padding.\n */\n marginLeft=\"-0.4rem\"\n marginRight=\"-0.4rem\"\n width=\"calc(100% + 8px)\"\n >\n {information.map((info) => (\n <Flex gap={1} direction=\"column\" alignItems=\"flex-start\" key={info.label}>\n <Typography tag=\"dt\" variant=\"pi\" fontWeight=\"bold\">\n {info.label}\n </Typography>\n <Typography tag=\"dd\" variant=\"pi\" textColor=\"neutral600\">\n {info.value}\n </Typography>\n </Flex>\n ))}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderActionsProps {\n actions: Array<HeaderActionDescription & { id: string }>;\n}\n\nconst HeaderActions = ({ actions }: HeaderActionsProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n\n const handleClick =\n (action: HeaderActionDescription & { id: string }) => async (e: React.MouseEvent) => {\n if (!('options' in action)) {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <Flex gap={1}>\n {actions.map((action) => {\n if (action.options) {\n return (\n <SingleSelect\n key={action.id}\n size=\"S\"\n // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n onChange={action.onSelect}\n aria-label={action.label}\n {...action}\n >\n {action.options.map(({ label, ...option }) => (\n <SingleSelectOption key={option.value} {...option}>\n {label}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n } else if (action.status) {\n return (\n <HeaderActionStatus tooltip={action.status?.tooltip} key={action.id}>\n {action.status.message}\n </HeaderActionStatus>\n );\n } else {\n return (\n <React.Fragment key={action.id}>\n <IconButton\n disabled={action.disabled}\n label={action.label}\n size=\"S\"\n onClick={handleClick(action)}\n >\n {action.icon}\n </IconButton>\n {action.dialog ? (\n <HeaderActionDialog\n {...action.dialog}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n </React.Fragment>\n );\n }\n })}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActionStatus\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderActionStatusProps {\n tooltip: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst HeaderActionStatus = ({ tooltip, children }: HeaderActionStatusProps) => {\n const [open, setOpen] = React.useState(false);\n // Debounce the open/close so the user can hover over the popover content before it closes\n const debouncedOpen = useDebounce(open, 100);\n\n const handleMouseEnter = () => {\n if (tooltip) {\n setOpen(true);\n }\n };\n const handleMouseLeave = () => {\n if (tooltip) {\n setOpen(false);\n }\n };\n\n return (\n <Popover.Root open={debouncedOpen} onOpenChange={setOpen}>\n <Popover.Anchor\n style={{ alignSelf: 'stretch' }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n aria-describedby=\"document-header-action-status\"\n >\n <Box height=\"100%\">{children}</Box>\n </Popover.Anchor>\n <Popover.Content\n role=\"tooltip\"\n id=\"document-header-action-status\"\n side=\"bottom\"\n align=\"center\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {tooltip}\n </Popover.Content>\n </Popover.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActionDialog\n * -----------------------------------------------------------------------------------------------*/\ninterface HeaderActionDialogProps {\n onClose: () => void;\n onCancel?: () => Promise<void>;\n title: string;\n content?: React.ReactNode | ((props: { onClose: () => void }) => React.ReactNode);\n isOpen: boolean;\n}\n\nconst HeaderActionDialog = ({\n onClose,\n onCancel,\n title,\n content: Content,\n isOpen,\n}: HeaderActionDialogProps) => {\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n {typeof Content === 'function' ? <Content onClose={handleClose} /> : Content}\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst ConfigureTheViewAction: DocumentActionComponent = ({ collectionType, model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return isDesktop\n ? {\n label: formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n }),\n icon: <ListPlus />,\n onClick: () => {\n navigate(`../${collectionType}/${model}/configurations/edit`);\n },\n position: 'header',\n }\n : null;\n};\n\nConfigureTheViewAction.type = 'configure-the-view';\nConfigureTheViewAction.position = 'header';\n\nconst EditTheModelAction: DocumentActionComponent = ({ model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return isDesktop\n ? {\n label: formatMessage({\n id: 'content-manager.link-to-ctb',\n defaultMessage: 'Edit the model',\n }),\n icon: <Pencil />,\n onClick: () => {\n navigate(`/plugins/content-type-builder/content-types/${model}`);\n },\n position: 'header',\n }\n : null;\n};\n\nEditTheModelAction.type = 'edit-the-model';\nEditTheModelAction.position = 'header';\n\nconst DeleteAction: DocumentActionComponent = ({ documentId, model, collectionType, document }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const listViewPathMatch = useMatch(LIST_PATH);\n const canDelete = useDocumentRBAC('DeleteAction', (state) => state.canDelete);\n const { delete: deleteAction, isLoading } = useDocumentActions();\n const { toggleNotification } = useNotification();\n const setSubmitting = useForm('DeleteAction', (state) => state.setSubmitting);\n const isLocalized = document?.locale != null;\n\n return {\n disabled: !canDelete || !document,\n label: formatMessage(\n {\n id: 'content-manager.actions.delete.label',\n defaultMessage: 'Delete entry{isLocalized, select, true { (all locales)} other {}}',\n },\n { isLocalized }\n ),\n icon: <Trash />,\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.delete.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n /**\n * If we have a match, we're in the list view\n * and therefore not in a form and shouldn't be\n * trying to set the submitting value.\n */\n if (!listViewPathMatch) {\n setSubmitting(true);\n }\n try {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n console.error(\n \"You're trying to delete a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.delete.error',\n defaultMessage: 'An error occurred while trying to delete the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await deleteAction({\n documentId,\n model,\n collectionType,\n params: {\n locale: '*',\n },\n });\n\n if (!('error' in res)) {\n navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n }\n } finally {\n if (!listViewPathMatch) {\n setSubmitting(false);\n }\n }\n },\n },\n variant: 'danger',\n position: ['header', 'table-row'],\n };\n};\n\nDeleteAction.type = 'delete';\nDeleteAction.position = ['header', 'table-row'];\n\nconst DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction];\n\nexport { Header, DEFAULT_HEADER_ACTIONS };\nexport type { HeaderProps, HeaderActionDescription };\n"],"names":["Header","isCreating","status","title","documentTitle","formatMessage","useIntl","isCloning","useMatch","CLONE_PATH","params","useParams","id","defaultMessage","_jsxs","Flex","direction","alignItems","paddingTop","initial","large","paddingBottom","gap","_jsx","BackButton","fallback","collectionType","SINGLE_TYPES","undefined","COLLECTION_TYPES","slug","width","justifyContent","medium","Typography","variant","tag","HeaderToolbar","Box","marginTop","DocumentStatus","query","useQueryParams","model","document","meta","useDoc","plugins","useStrapiApp","state","DescriptionComponentRenderer","props","activeTab","documentId","descriptions","apis","getHeaderActions","actions","length","HeaderActions","getDocumentActions","headerActions","filter","action","positions","Array","isArray","position","includes","DocumentActionsMenu","label","Information","createAndUpdateDocument","availableStatus","find","publishedAt","publishDocument","creator","CREATED_BY_ATTRIBUTE_NAME","getDisplayName","updator","UPDATED_BY_ATTRIBUTE_NAME","information","isDisplayed","PUBLISHED_AT_ATTRIBUTE_NAME","value","time","RelativeTime","timestamp","Date","isAnonymous","PUBLISHED_BY_ATTRIBUTE_NAME","author","UPDATED_AT_ATTRIBUTE_NAME","CREATED_AT_ATTRIBUTE_NAME","info","borderWidth","borderStyle","borderColor","padding","marginLeft","marginRight","map","fontWeight","textColor","dialogId","setDialogId","React","useState","handleClick","e","onClick","dialog","muteDialog","preventDefault","handleClose","options","SingleSelect","size","onChange","onSelect","aria-label","option","SingleSelectOption","HeaderActionStatus","tooltip","message","Fragment","IconButton","disabled","icon","HeaderActionDialog","isOpen","onClose","children","open","setOpen","debouncedOpen","useDebounce","handleMouseEnter","handleMouseLeave","Popover","Root","onOpenChange","Anchor","style","alignSelf","onMouseEnter","onMouseLeave","aria-describedby","height","Content","role","side","align","onCancel","content","Dialog","ConfigureTheViewAction","navigate","useNavigate","isDesktop","useIsDesktop","ListPlus","type","EditTheModelAction","Pencil","DeleteAction","listViewPathMatch","LIST_PATH","canDelete","useDocumentRBAC","delete","deleteAction","isLoading","useDocumentActions","toggleNotification","useNotification","setSubmitting","useForm","isLocalized","locale","Trash","WarningCircle","fill","textAlign","loading","onConfirm","console","error","res","pathname","replace","DEFAULT_HEADER_ACTIONS"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useIsDesktop, useNotification, useForm, BackButton, useQueryParams, useStrapiApp, DescriptionComponentRenderer } from '@strapi/admin/strapi-admin';
|
|
4
|
-
import { Flex, Typography, Box, SingleSelect, SingleSelectOption, IconButton, Dialog } from '@strapi/design-system';
|
|
3
|
+
import { useIsDesktop, useNotification, useForm, BackButton, useQueryParams, useStrapiApp, DescriptionComponentRenderer, useDebounce } from '@strapi/admin/strapi-admin';
|
|
4
|
+
import { Flex, Typography, Box, SingleSelect, SingleSelectOption, IconButton, Popover, Dialog } from '@strapi/design-system';
|
|
5
5
|
import { ListPlus, Pencil, Trash, WarningCircle } from '@strapi/icons';
|
|
6
6
|
import { useIntl } from 'react-intl';
|
|
7
7
|
import { useNavigate, useMatch, useParams } from 'react-router-dom';
|
|
@@ -273,29 +273,74 @@ const HeaderActions = ({ actions })=>{
|
|
|
273
273
|
children: label
|
|
274
274
|
}, option.value))
|
|
275
275
|
}, action.id);
|
|
276
|
+
} else if (action.status) {
|
|
277
|
+
return /*#__PURE__*/ jsx(HeaderActionStatus, {
|
|
278
|
+
tooltip: action.status?.tooltip,
|
|
279
|
+
children: action.status.message
|
|
280
|
+
}, action.id);
|
|
276
281
|
} else {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
action.dialog
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
}, action.id);
|
|
294
|
-
}
|
|
282
|
+
return /*#__PURE__*/ jsxs(React.Fragment, {
|
|
283
|
+
children: [
|
|
284
|
+
/*#__PURE__*/ jsx(IconButton, {
|
|
285
|
+
disabled: action.disabled,
|
|
286
|
+
label: action.label,
|
|
287
|
+
size: "S",
|
|
288
|
+
onClick: handleClick(action),
|
|
289
|
+
children: action.icon
|
|
290
|
+
}),
|
|
291
|
+
action.dialog ? /*#__PURE__*/ jsx(HeaderActionDialog, {
|
|
292
|
+
...action.dialog,
|
|
293
|
+
isOpen: dialogId === action.id,
|
|
294
|
+
onClose: handleClose
|
|
295
|
+
}) : null
|
|
296
|
+
]
|
|
297
|
+
}, action.id);
|
|
295
298
|
}
|
|
296
299
|
})
|
|
297
300
|
});
|
|
298
301
|
};
|
|
302
|
+
const HeaderActionStatus = ({ tooltip, children })=>{
|
|
303
|
+
const [open, setOpen] = React.useState(false);
|
|
304
|
+
// Debounce the open/close so the user can hover over the popover content before it closes
|
|
305
|
+
const debouncedOpen = useDebounce(open, 100);
|
|
306
|
+
const handleMouseEnter = ()=>{
|
|
307
|
+
if (tooltip) {
|
|
308
|
+
setOpen(true);
|
|
309
|
+
}
|
|
310
|
+
};
|
|
311
|
+
const handleMouseLeave = ()=>{
|
|
312
|
+
if (tooltip) {
|
|
313
|
+
setOpen(false);
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
return /*#__PURE__*/ jsxs(Popover.Root, {
|
|
317
|
+
open: debouncedOpen,
|
|
318
|
+
onOpenChange: setOpen,
|
|
319
|
+
children: [
|
|
320
|
+
/*#__PURE__*/ jsx(Popover.Anchor, {
|
|
321
|
+
style: {
|
|
322
|
+
alignSelf: 'stretch'
|
|
323
|
+
},
|
|
324
|
+
onMouseEnter: handleMouseEnter,
|
|
325
|
+
onMouseLeave: handleMouseLeave,
|
|
326
|
+
"aria-describedby": "document-header-action-status",
|
|
327
|
+
children: /*#__PURE__*/ jsx(Box, {
|
|
328
|
+
height: "100%",
|
|
329
|
+
children: children
|
|
330
|
+
})
|
|
331
|
+
}),
|
|
332
|
+
/*#__PURE__*/ jsx(Popover.Content, {
|
|
333
|
+
role: "tooltip",
|
|
334
|
+
id: "document-header-action-status",
|
|
335
|
+
side: "bottom",
|
|
336
|
+
align: "center",
|
|
337
|
+
onMouseEnter: handleMouseEnter,
|
|
338
|
+
onMouseLeave: handleMouseLeave,
|
|
339
|
+
children: tooltip
|
|
340
|
+
})
|
|
341
|
+
]
|
|
342
|
+
});
|
|
343
|
+
};
|
|
299
344
|
const HeaderActionDialog = ({ onClose, onCancel, title, content: Content, isOpen })=>{
|
|
300
345
|
const handleClose = async ()=>{
|
|
301
346
|
if (onCancel) {
|