@strapi/content-type-builder 5.27.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/AttributeRow.js +7 -1
- package/dist/admin/components/AttributeRow.js.map +1 -1
- package/dist/admin/components/AttributeRow.mjs +7 -1
- package/dist/admin/components/AttributeRow.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +3 -3
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +3 -3
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
- package/dist/admin/components/List.js +3 -1
- package/dist/admin/components/List.js.map +1 -1
- package/dist/admin/components/List.mjs +5 -3
- package/dist/admin/components/List.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -97,7 +97,10 @@ const MemoizedRow = /*#__PURE__*/ React.memo((props)=>{
|
|
|
97
97
|
const handleCancelDelete = ()=>{
|
|
98
98
|
setShowConfirmDialog(false);
|
|
99
99
|
};
|
|
100
|
-
const handleClick = ()=>{
|
|
100
|
+
const handleClick = (e)=>{
|
|
101
|
+
if (e) {
|
|
102
|
+
e.stopPropagation();
|
|
103
|
+
}
|
|
101
104
|
if (isMorph) {
|
|
102
105
|
return;
|
|
103
106
|
}
|
|
@@ -165,6 +168,9 @@ const MemoizedRow = /*#__PURE__*/ React.memo((props)=>{
|
|
|
165
168
|
defaultMessage: 'Drag'
|
|
166
169
|
})} ${item.name}`,
|
|
167
170
|
disabled: isTypeDeleted || isDeleted,
|
|
171
|
+
style: {
|
|
172
|
+
outlineOffset: '-2px'
|
|
173
|
+
},
|
|
168
174
|
children: /*#__PURE__*/ jsxRuntime.jsx(Icons.Drag, {})
|
|
169
175
|
}),
|
|
170
176
|
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeRow.js","sources":["../../../admin/src/components/AttributeRow.tsx"],"sourcesContent":["import { forwardRef, memo, useState } from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, IconButton, Typography, Link, Badge, Dialog } from '@strapi/design-system';\nimport { ChevronDown, Drag, Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Link as NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { Curve } from '../icons/Curve';\nimport { checkDependentRows } from '../utils/conditions';\nimport { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType';\nimport { getRelationType } from '../utils/getRelationType';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon } from './AttributeIcon';\nimport { ComponentList } from './ComponentList';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { DisplayedType } from './DisplayedType';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\nimport { StatusBadge } from './Status';\n\nimport type { AnyAttribute, Component, ContentType } from '../types';\nimport type { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';\nimport type { UID } from '@strapi/types';\n\nexport const GridWrapper = styled(Flex)<{ $isOverlay?: boolean; $isDragging?: boolean }>`\n justify-content: space-between;\n\n border-top: ${({ theme, $isOverlay }) =>\n $isOverlay ? 'none' : `1px solid ${theme.colors.neutral150}`};\n\n padding-top: ${({ theme }) => theme.spaces[4]};\n padding-bottom: ${({ theme }) => theme.spaces[4]};\n\n opacity: ${({ $isDragging }) => ($isDragging ? 0 : 1)};\n align-items: center;\n`;\n\nexport type AttributeRowProps = {\n item: {\n id: string;\n index: number;\n } & AnyAttribute;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n addComponentToDZ?: () => void;\n secondLoopComponentUid?: UID.Component | null;\n type: ContentType | Component;\n isDragging?: boolean;\n style?: Record<string, unknown>;\n listeners?: DraggableSyntheticListeners;\n attributes?: DraggableAttributes;\n isOverlay?: boolean;\n handleRef?: (element: HTMLElement | null) => void;\n};\n\nconst StyledAttributeRow = styled(Box)`\n list-style: none;\n list-style-type: none;\n`;\n\nexport const AttributeRow = forwardRef<HTMLLIElement, AttributeRowProps>((props, ref) => {\n const { style, ...rest } = props;\n\n return (\n <StyledAttributeRow\n tag=\"li\"\n ref={ref}\n {...props.attributes}\n style={style}\n background=\"neutral0\"\n shadow={props.isOverlay ? 'filterShadow' : 'none'}\n aria-label={props.item.name}\n >\n <MemoizedRow {...rest} />\n </StyledAttributeRow>\n );\n});\n\nconst MemoizedRow = memo((props: Omit<AttributeRowProps, 'style'>) => {\n const {\n item,\n firstLoopComponentUid,\n isFromDynamicZone,\n addComponentToDZ,\n secondLoopComponentUid,\n type,\n isDragging,\n isOverlay,\n handleRef,\n listeners,\n } = props;\n const shouldHideNestedInfos = isOverlay || isDragging;\n\n const [isOpen, setIsOpen] = useState<boolean>(true);\n\n const isTypeDeleted = type.status === 'REMOVED';\n\n const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();\n const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();\n\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const isDeleted = item.status === 'REMOVED';\n\n const isMorph = item.type === 'relation' && item.relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(item.type)\n ? 'number'\n : item.type;\n\n const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;\n const isPluginContentType = get(targetContentType, 'plugin');\n\n const src = 'target' in item && item.target ? 'relation' : ico;\n\n const handleDelete = (e: React.MouseEvent) => {\n e.stopPropagation();\n const dependentRows = checkDependentRows(contentTypes, item.name);\n if (dependentRows.length > 0) {\n setShowConfirmDialog(true);\n } else {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }\n };\n\n const handleConfirmDelete = () => {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n setShowConfirmDialog(false);\n };\n\n const handleCancelDelete = () => {\n setShowConfirmDialog(false);\n };\n\n const handleClick = () => {\n if (isMorph) {\n return;\n }\n\n if (item.configurable !== false) {\n const editTargetUid = (secondLoopComponentUid || firstLoopComponentUid || type.uid)!;\n\n const attributeType = getAttributeDisplayedType(item.type);\n const step = item.type === 'component' ? '2' : null;\n\n if (item.customField) {\n onOpenModalEditCustomField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n customFieldUid: item.customField,\n });\n } else {\n onOpenModalEditField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n step,\n });\n }\n }\n };\n\n let loopNumber;\n\n if (secondLoopComponentUid && firstLoopComponentUid) {\n loopNumber = 2;\n } else if (firstLoopComponentUid) {\n loopNumber = 1;\n } else {\n loopNumber = 0;\n }\n\n const canEdit = !isTypeDeleted && !isDeleted;\n const canDelete = !isTypeDeleted && !isDeleted;\n\n const cursor = isTypeDeleted || isDeleted ? 'not-allowed' : 'move';\n\n const canClick = isInDevelopmentMode && item.configurable !== false && !isMorph && canEdit;\n\n return (\n <>\n <GridWrapper\n $isOverlay={isOverlay}\n $isDragging={isDragging}\n onClick={canClick ? handleClick : undefined}\n paddingLeft={4}\n paddingRight={4}\n >\n <Flex alignItems=\"center\" overflow=\"hidden\" gap={2}>\n {loopNumber !== 0 && !isOverlay && (\n <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />\n )}\n {isInDevelopmentMode && (\n <IconButton\n cursor={cursor}\n role=\"Handle\"\n ref={handleRef}\n {...listeners}\n variant=\"ghost\"\n withTooltip={false}\n label={`${formatMessage({\n id: 'app.utils.drag',\n defaultMessage: 'Drag',\n })} ${item.name}`}\n disabled={isTypeDeleted || isDeleted}\n >\n <Drag />\n </IconButton>\n )}\n <Flex gap={4}>\n <Flex gap={4} alignItems=\"center\">\n <AttributeIcon type={src} customField={item.customField} />\n <Typography\n textColor=\"neutral800\"\n fontWeight=\"bold\"\n textDecoration={isDeleted ? 'line-through' : 'none'}\n ellipsis\n overflow=\"hidden\"\n >\n {item.name}\n {'required' in item && item.required && (\n <Typography textColor=\"danger600\">* </Typography>\n )}\n </Typography>\n </Flex>\n <Flex>\n <Typography textColor=\"neutral600\">\n <DisplayedType\n type={item.type}\n customField={item.customField}\n repeatable={'repeatable' in item && item.repeatable}\n multiple={'multiple' in item && item.multiple}\n />\n {'conditions' in item &&\n item.conditions &&\n Object.keys(item.conditions).length > 0 && <Badge margin={4}>conditional</Badge>}\n {item.type === 'relation' && (\n <>\n ({getRelationType(item.relation, item.targetAttribute)}) \n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n \n {targetContentType && (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/content-types/${targetContentType.uid}`}\n >\n {upperFirst(targetContentType.info.displayName)}\n </Link>\n )}\n {isPluginContentType &&\n `(${formatMessage({\n id: getTrad(`from`),\n defaultMessage: 'from',\n })}: ${isPluginContentType})`}\n </>\n )}\n {item.type === 'component' && <ComponentLink uid={item.component} />}\n </Typography>\n </Flex>\n </Flex>\n </Flex>\n\n <Box>\n <Flex justifyContent=\"flex-end\" gap={1} onClick={(e) => e.stopPropagation()}>\n <>\n <Box>{item.status && <StatusBadge status={item.status} />}</Box>\n {['component', 'dynamiczone'].includes(item.type) && (\n <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isOpen) {\n setIsOpen(false);\n } else {\n setIsOpen(true);\n }\n }}\n aria-expanded={isOpen}\n label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n variant=\"ghost\"\n withTooltip={false}\n >\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n </IconButton>\n )}\n {isInDevelopmentMode && item.configurable !== false ? (\n <>\n {!isMorph && (\n <IconButton\n onClick={handleClick}\n label={`${formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canEdit}\n >\n <Pencil />\n </IconButton>\n )}\n <IconButton\n onClick={handleDelete}\n label={`${formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canDelete}\n >\n <Trash />\n </IconButton>\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <ConfirmDialog onConfirm={handleConfirmDelete} onCancel={handleCancelDelete}>\n <Box>\n <Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions'\n ),\n defaultMessage:\n 'The following fields have conditions that depend on this field: ',\n })}\n <Typography fontWeight=\"bold\">\n {checkDependentRows(contentTypes, item.name)\n .map(({ attribute }) => attribute)\n .join(', ')}\n </Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions-end'\n ),\n defaultMessage: '. Are you sure you want to delete it?',\n })}\n </Typography>\n </Box>\n </ConfirmDialog>\n </Dialog.Root>\n </>\n ) : (\n <Flex padding={2}>\n <Lock fill=\"neutral500\" />\n </Flex>\n )}\n </>\n </Flex>\n </Box>\n </GridWrapper>\n\n <SubRow $shouldHideNestedInfos={shouldHideNestedInfos} $isOpen={isOpen}>\n {item.type === 'component' && (\n <ComponentList\n {...item}\n isFromDynamicZone={isFromDynamicZone}\n firstLoopComponentUid={firstLoopComponentUid}\n />\n )}\n\n {item.type === 'dynamiczone' && (\n <DynamicZoneList\n {...item}\n disabled={isTypeDeleted || item.status === 'REMOVED'}\n addComponent={addComponentToDZ!}\n forTarget={type.modelType}\n targetUid={type.uid}\n />\n )}\n </SubRow>\n </>\n );\n});\n\nconst SubRow = styled(Box)<{ $isOpen: boolean; $shouldHideNestedInfos?: boolean }>`\n display: ${({ $shouldHideNestedInfos }) => ($shouldHideNestedInfos ? 'none' : 'block')};\n max-height: ${({ $isOpen }) => ($isOpen ? '9999px' : '0px')};\n overflow: hidden;\n\n transition: ${({ $isOpen }) =>\n $isOpen ? 'max-height 1s ease-in-out' : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'};\n`;\n\nconst ComponentLink = ({ uid }: { uid: UID.Component }) => {\n const { components } = useDataManager();\n const type = get(components, uid);\n\n return (\n <>\n (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/component-categories/${type.category}/${type.uid}`}\n >\n {upperFirst(type.info.displayName)}\n </Link>\n )\n </>\n );\n};\n"],"names":["GridWrapper","styled","Flex","theme","$isOverlay","colors","neutral150","spaces","$isDragging","StyledAttributeRow","Box","AttributeRow","forwardRef","props","ref","style","rest","_jsx","tag","attributes","background","shadow","isOverlay","aria-label","item","name","MemoizedRow","memo","firstLoopComponentUid","isFromDynamicZone","addComponentToDZ","secondLoopComponentUid","type","isDragging","handleRef","listeners","shouldHideNestedInfos","isOpen","setIsOpen","useState","isTypeDeleted","status","contentTypes","removeAttribute","isInDevelopmentMode","useDataManager","onOpenModalEditField","onOpenModalEditCustomField","useFormModalNavigation","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","isDeleted","isMorph","relation","includes","ico","targetContentType","get","target","isPluginContentType","src","handleDelete","e","stopPropagation","dependentRows","checkDependentRows","length","forTarget","modelType","targetUid","uid","attributeToRemoveName","handleConfirmDelete","handleCancelDelete","handleClick","configurable","editTargetUid","attributeType","getAttributeDisplayedType","step","customField","attributeName","customFieldUid","loopNumber","canEdit","canDelete","cursor","canClick","_jsxs","_Fragment","onClick","undefined","paddingLeft","paddingRight","alignItems","overflow","gap","Curve","color","IconButton","role","variant","withTooltip","label","id","defaultMessage","disabled","Drag","AttributeIcon","Typography","textColor","fontWeight","textDecoration","ellipsis","required","DisplayedType","repeatable","multiple","conditions","Object","keys","Badge","margin","getRelationType","targetAttribute","getTrad","Link","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","Trash","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","onCancel","map","attribute","join","padding","Lock","SubRow","$shouldHideNestedInfos","$isOpen","ComponentList","DynamicZoneList","addComponent","components","category"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AttributeRow.js","sources":["../../../admin/src/components/AttributeRow.tsx"],"sourcesContent":["import { forwardRef, memo, useState } from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, IconButton, Typography, Link, Badge, Dialog } from '@strapi/design-system';\nimport { ChevronDown, Drag, Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Link as NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { Curve } from '../icons/Curve';\nimport { checkDependentRows } from '../utils/conditions';\nimport { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType';\nimport { getRelationType } from '../utils/getRelationType';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon } from './AttributeIcon';\nimport { ComponentList } from './ComponentList';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { DisplayedType } from './DisplayedType';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\nimport { StatusBadge } from './Status';\n\nimport type { AnyAttribute, Component, ContentType } from '../types';\nimport type { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';\nimport type { UID } from '@strapi/types';\n\nexport const GridWrapper = styled(Flex)<{ $isOverlay?: boolean; $isDragging?: boolean }>`\n justify-content: space-between;\n\n border-top: ${({ theme, $isOverlay }) =>\n $isOverlay ? 'none' : `1px solid ${theme.colors.neutral150}`};\n\n padding-top: ${({ theme }) => theme.spaces[4]};\n padding-bottom: ${({ theme }) => theme.spaces[4]};\n\n opacity: ${({ $isDragging }) => ($isDragging ? 0 : 1)};\n align-items: center;\n`;\n\nexport type AttributeRowProps = {\n item: {\n id: string;\n index: number;\n } & AnyAttribute;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n addComponentToDZ?: () => void;\n secondLoopComponentUid?: UID.Component | null;\n type: ContentType | Component;\n isDragging?: boolean;\n style?: Record<string, unknown>;\n listeners?: DraggableSyntheticListeners;\n attributes?: DraggableAttributes;\n isOverlay?: boolean;\n handleRef?: (element: HTMLElement | null) => void;\n};\n\nconst StyledAttributeRow = styled(Box)`\n list-style: none;\n list-style-type: none;\n`;\n\nexport const AttributeRow = forwardRef<HTMLLIElement, AttributeRowProps>((props, ref) => {\n const { style, ...rest } = props;\n\n return (\n <StyledAttributeRow\n tag=\"li\"\n ref={ref}\n {...props.attributes}\n style={style}\n background=\"neutral0\"\n shadow={props.isOverlay ? 'filterShadow' : 'none'}\n aria-label={props.item.name}\n >\n <MemoizedRow {...rest} />\n </StyledAttributeRow>\n );\n});\n\nconst MemoizedRow = memo((props: Omit<AttributeRowProps, 'style'>) => {\n const {\n item,\n firstLoopComponentUid,\n isFromDynamicZone,\n addComponentToDZ,\n secondLoopComponentUid,\n type,\n isDragging,\n isOverlay,\n handleRef,\n listeners,\n } = props;\n const shouldHideNestedInfos = isOverlay || isDragging;\n\n const [isOpen, setIsOpen] = useState<boolean>(true);\n\n const isTypeDeleted = type.status === 'REMOVED';\n\n const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();\n const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();\n\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const isDeleted = item.status === 'REMOVED';\n\n const isMorph = item.type === 'relation' && item.relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(item.type)\n ? 'number'\n : item.type;\n\n const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;\n const isPluginContentType = get(targetContentType, 'plugin');\n\n const src = 'target' in item && item.target ? 'relation' : ico;\n\n const handleDelete = (e: React.MouseEvent | React.KeyboardEvent) => {\n e.stopPropagation();\n const dependentRows = checkDependentRows(contentTypes, item.name);\n if (dependentRows.length > 0) {\n setShowConfirmDialog(true);\n } else {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }\n };\n\n const handleConfirmDelete = () => {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n setShowConfirmDialog(false);\n };\n\n const handleCancelDelete = () => {\n setShowConfirmDialog(false);\n };\n\n const handleClick = (e?: React.MouseEvent | React.KeyboardEvent) => {\n if (e) {\n e.stopPropagation();\n }\n\n if (isMorph) {\n return;\n }\n\n if (item.configurable !== false) {\n const editTargetUid = (secondLoopComponentUid || firstLoopComponentUid || type.uid)!;\n\n const attributeType = getAttributeDisplayedType(item.type);\n const step = item.type === 'component' ? '2' : null;\n\n if (item.customField) {\n onOpenModalEditCustomField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n customFieldUid: item.customField,\n });\n } else {\n onOpenModalEditField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n step,\n });\n }\n }\n };\n\n let loopNumber;\n\n if (secondLoopComponentUid && firstLoopComponentUid) {\n loopNumber = 2;\n } else if (firstLoopComponentUid) {\n loopNumber = 1;\n } else {\n loopNumber = 0;\n }\n\n const canEdit = !isTypeDeleted && !isDeleted;\n const canDelete = !isTypeDeleted && !isDeleted;\n\n const cursor = isTypeDeleted || isDeleted ? 'not-allowed' : 'move';\n\n const canClick = isInDevelopmentMode && item.configurable !== false && !isMorph && canEdit;\n\n return (\n <>\n <GridWrapper\n $isOverlay={isOverlay}\n $isDragging={isDragging}\n onClick={canClick ? handleClick : undefined}\n paddingLeft={4}\n paddingRight={4}\n >\n <Flex alignItems=\"center\" overflow=\"hidden\" gap={2}>\n {loopNumber !== 0 && !isOverlay && (\n <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />\n )}\n {isInDevelopmentMode && (\n <IconButton\n cursor={cursor}\n role=\"Handle\"\n ref={handleRef}\n {...listeners}\n variant=\"ghost\"\n withTooltip={false}\n label={`${formatMessage({\n id: 'app.utils.drag',\n defaultMessage: 'Drag',\n })} ${item.name}`}\n disabled={isTypeDeleted || isDeleted}\n style={{ outlineOffset: '-2px' }}\n >\n <Drag />\n </IconButton>\n )}\n <Flex gap={4}>\n <Flex gap={4} alignItems=\"center\">\n <AttributeIcon type={src} customField={item.customField} />\n <Typography\n textColor=\"neutral800\"\n fontWeight=\"bold\"\n textDecoration={isDeleted ? 'line-through' : 'none'}\n ellipsis\n overflow=\"hidden\"\n >\n {item.name}\n {'required' in item && item.required && (\n <Typography textColor=\"danger600\">* </Typography>\n )}\n </Typography>\n </Flex>\n <Flex>\n <Typography textColor=\"neutral600\">\n <DisplayedType\n type={item.type}\n customField={item.customField}\n repeatable={'repeatable' in item && item.repeatable}\n multiple={'multiple' in item && item.multiple}\n />\n {'conditions' in item &&\n item.conditions &&\n Object.keys(item.conditions).length > 0 && <Badge margin={4}>conditional</Badge>}\n {item.type === 'relation' && (\n <>\n ({getRelationType(item.relation, item.targetAttribute)}) \n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n \n {targetContentType && (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/content-types/${targetContentType.uid}`}\n >\n {upperFirst(targetContentType.info.displayName)}\n </Link>\n )}\n {isPluginContentType &&\n `(${formatMessage({\n id: getTrad(`from`),\n defaultMessage: 'from',\n })}: ${isPluginContentType})`}\n </>\n )}\n {item.type === 'component' && <ComponentLink uid={item.component} />}\n </Typography>\n </Flex>\n </Flex>\n </Flex>\n\n <Box>\n <Flex justifyContent=\"flex-end\" gap={1} onClick={(e) => e.stopPropagation()}>\n <>\n <Box>{item.status && <StatusBadge status={item.status} />}</Box>\n {['component', 'dynamiczone'].includes(item.type) && (\n <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isOpen) {\n setIsOpen(false);\n } else {\n setIsOpen(true);\n }\n }}\n aria-expanded={isOpen}\n label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n variant=\"ghost\"\n withTooltip={false}\n >\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n </IconButton>\n )}\n {isInDevelopmentMode && item.configurable !== false ? (\n <>\n {!isMorph && (\n <IconButton\n onClick={handleClick}\n label={`${formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canEdit}\n >\n <Pencil />\n </IconButton>\n )}\n <IconButton\n onClick={handleDelete}\n label={`${formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canDelete}\n >\n <Trash />\n </IconButton>\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <ConfirmDialog onConfirm={handleConfirmDelete} onCancel={handleCancelDelete}>\n <Box>\n <Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions'\n ),\n defaultMessage:\n 'The following fields have conditions that depend on this field: ',\n })}\n <Typography fontWeight=\"bold\">\n {checkDependentRows(contentTypes, item.name)\n .map(({ attribute }) => attribute)\n .join(', ')}\n </Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions-end'\n ),\n defaultMessage: '. Are you sure you want to delete it?',\n })}\n </Typography>\n </Box>\n </ConfirmDialog>\n </Dialog.Root>\n </>\n ) : (\n <Flex padding={2}>\n <Lock fill=\"neutral500\" />\n </Flex>\n )}\n </>\n </Flex>\n </Box>\n </GridWrapper>\n\n <SubRow $shouldHideNestedInfos={shouldHideNestedInfos} $isOpen={isOpen}>\n {item.type === 'component' && (\n <ComponentList\n {...item}\n isFromDynamicZone={isFromDynamicZone}\n firstLoopComponentUid={firstLoopComponentUid}\n />\n )}\n\n {item.type === 'dynamiczone' && (\n <DynamicZoneList\n {...item}\n disabled={isTypeDeleted || item.status === 'REMOVED'}\n addComponent={addComponentToDZ!}\n forTarget={type.modelType}\n targetUid={type.uid}\n />\n )}\n </SubRow>\n </>\n );\n});\n\nconst SubRow = styled(Box)<{ $isOpen: boolean; $shouldHideNestedInfos?: boolean }>`\n display: ${({ $shouldHideNestedInfos }) => ($shouldHideNestedInfos ? 'none' : 'block')};\n max-height: ${({ $isOpen }) => ($isOpen ? '9999px' : '0px')};\n overflow: hidden;\n\n transition: ${({ $isOpen }) =>\n $isOpen ? 'max-height 1s ease-in-out' : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'};\n`;\n\nconst ComponentLink = ({ uid }: { uid: UID.Component }) => {\n const { components } = useDataManager();\n const type = get(components, uid);\n\n return (\n <>\n (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/component-categories/${type.category}/${type.uid}`}\n >\n {upperFirst(type.info.displayName)}\n </Link>\n )\n </>\n );\n};\n"],"names":["GridWrapper","styled","Flex","theme","$isOverlay","colors","neutral150","spaces","$isDragging","StyledAttributeRow","Box","AttributeRow","forwardRef","props","ref","style","rest","_jsx","tag","attributes","background","shadow","isOverlay","aria-label","item","name","MemoizedRow","memo","firstLoopComponentUid","isFromDynamicZone","addComponentToDZ","secondLoopComponentUid","type","isDragging","handleRef","listeners","shouldHideNestedInfos","isOpen","setIsOpen","useState","isTypeDeleted","status","contentTypes","removeAttribute","isInDevelopmentMode","useDataManager","onOpenModalEditField","onOpenModalEditCustomField","useFormModalNavigation","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","isDeleted","isMorph","relation","includes","ico","targetContentType","get","target","isPluginContentType","src","handleDelete","e","stopPropagation","dependentRows","checkDependentRows","length","forTarget","modelType","targetUid","uid","attributeToRemoveName","handleConfirmDelete","handleCancelDelete","handleClick","configurable","editTargetUid","attributeType","getAttributeDisplayedType","step","customField","attributeName","customFieldUid","loopNumber","canEdit","canDelete","cursor","canClick","_jsxs","_Fragment","onClick","undefined","paddingLeft","paddingRight","alignItems","overflow","gap","Curve","color","IconButton","role","variant","withTooltip","label","id","defaultMessage","disabled","outlineOffset","Drag","AttributeIcon","Typography","textColor","fontWeight","textDecoration","ellipsis","required","DisplayedType","repeatable","multiple","conditions","Object","keys","Badge","margin","getRelationType","targetAttribute","getTrad","Link","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","Trash","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","onCancel","map","attribute","join","padding","Lock","SubRow","$shouldHideNestedInfos","$isOpen","ComponentList","DynamicZoneList","addComponent","components","category"],"mappings":"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"}
|
|
@@ -95,7 +95,10 @@ const MemoizedRow = /*#__PURE__*/ memo((props)=>{
|
|
|
95
95
|
const handleCancelDelete = ()=>{
|
|
96
96
|
setShowConfirmDialog(false);
|
|
97
97
|
};
|
|
98
|
-
const handleClick = ()=>{
|
|
98
|
+
const handleClick = (e)=>{
|
|
99
|
+
if (e) {
|
|
100
|
+
e.stopPropagation();
|
|
101
|
+
}
|
|
99
102
|
if (isMorph) {
|
|
100
103
|
return;
|
|
101
104
|
}
|
|
@@ -163,6 +166,9 @@ const MemoizedRow = /*#__PURE__*/ memo((props)=>{
|
|
|
163
166
|
defaultMessage: 'Drag'
|
|
164
167
|
})} ${item.name}`,
|
|
165
168
|
disabled: isTypeDeleted || isDeleted,
|
|
169
|
+
style: {
|
|
170
|
+
outlineOffset: '-2px'
|
|
171
|
+
},
|
|
166
172
|
children: /*#__PURE__*/ jsx(Drag, {})
|
|
167
173
|
}),
|
|
168
174
|
/*#__PURE__*/ jsxs(Flex, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeRow.mjs","sources":["../../../admin/src/components/AttributeRow.tsx"],"sourcesContent":["import { forwardRef, memo, useState } from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, IconButton, Typography, Link, Badge, Dialog } from '@strapi/design-system';\nimport { ChevronDown, Drag, Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Link as NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { Curve } from '../icons/Curve';\nimport { checkDependentRows } from '../utils/conditions';\nimport { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType';\nimport { getRelationType } from '../utils/getRelationType';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon } from './AttributeIcon';\nimport { ComponentList } from './ComponentList';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { DisplayedType } from './DisplayedType';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\nimport { StatusBadge } from './Status';\n\nimport type { AnyAttribute, Component, ContentType } from '../types';\nimport type { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';\nimport type { UID } from '@strapi/types';\n\nexport const GridWrapper = styled(Flex)<{ $isOverlay?: boolean; $isDragging?: boolean }>`\n justify-content: space-between;\n\n border-top: ${({ theme, $isOverlay }) =>\n $isOverlay ? 'none' : `1px solid ${theme.colors.neutral150}`};\n\n padding-top: ${({ theme }) => theme.spaces[4]};\n padding-bottom: ${({ theme }) => theme.spaces[4]};\n\n opacity: ${({ $isDragging }) => ($isDragging ? 0 : 1)};\n align-items: center;\n`;\n\nexport type AttributeRowProps = {\n item: {\n id: string;\n index: number;\n } & AnyAttribute;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n addComponentToDZ?: () => void;\n secondLoopComponentUid?: UID.Component | null;\n type: ContentType | Component;\n isDragging?: boolean;\n style?: Record<string, unknown>;\n listeners?: DraggableSyntheticListeners;\n attributes?: DraggableAttributes;\n isOverlay?: boolean;\n handleRef?: (element: HTMLElement | null) => void;\n};\n\nconst StyledAttributeRow = styled(Box)`\n list-style: none;\n list-style-type: none;\n`;\n\nexport const AttributeRow = forwardRef<HTMLLIElement, AttributeRowProps>((props, ref) => {\n const { style, ...rest } = props;\n\n return (\n <StyledAttributeRow\n tag=\"li\"\n ref={ref}\n {...props.attributes}\n style={style}\n background=\"neutral0\"\n shadow={props.isOverlay ? 'filterShadow' : 'none'}\n aria-label={props.item.name}\n >\n <MemoizedRow {...rest} />\n </StyledAttributeRow>\n );\n});\n\nconst MemoizedRow = memo((props: Omit<AttributeRowProps, 'style'>) => {\n const {\n item,\n firstLoopComponentUid,\n isFromDynamicZone,\n addComponentToDZ,\n secondLoopComponentUid,\n type,\n isDragging,\n isOverlay,\n handleRef,\n listeners,\n } = props;\n const shouldHideNestedInfos = isOverlay || isDragging;\n\n const [isOpen, setIsOpen] = useState<boolean>(true);\n\n const isTypeDeleted = type.status === 'REMOVED';\n\n const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();\n const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();\n\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const isDeleted = item.status === 'REMOVED';\n\n const isMorph = item.type === 'relation' && item.relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(item.type)\n ? 'number'\n : item.type;\n\n const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;\n const isPluginContentType = get(targetContentType, 'plugin');\n\n const src = 'target' in item && item.target ? 'relation' : ico;\n\n const handleDelete = (e: React.MouseEvent) => {\n e.stopPropagation();\n const dependentRows = checkDependentRows(contentTypes, item.name);\n if (dependentRows.length > 0) {\n setShowConfirmDialog(true);\n } else {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }\n };\n\n const handleConfirmDelete = () => {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n setShowConfirmDialog(false);\n };\n\n const handleCancelDelete = () => {\n setShowConfirmDialog(false);\n };\n\n const handleClick = () => {\n if (isMorph) {\n return;\n }\n\n if (item.configurable !== false) {\n const editTargetUid = (secondLoopComponentUid || firstLoopComponentUid || type.uid)!;\n\n const attributeType = getAttributeDisplayedType(item.type);\n const step = item.type === 'component' ? '2' : null;\n\n if (item.customField) {\n onOpenModalEditCustomField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n customFieldUid: item.customField,\n });\n } else {\n onOpenModalEditField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n step,\n });\n }\n }\n };\n\n let loopNumber;\n\n if (secondLoopComponentUid && firstLoopComponentUid) {\n loopNumber = 2;\n } else if (firstLoopComponentUid) {\n loopNumber = 1;\n } else {\n loopNumber = 0;\n }\n\n const canEdit = !isTypeDeleted && !isDeleted;\n const canDelete = !isTypeDeleted && !isDeleted;\n\n const cursor = isTypeDeleted || isDeleted ? 'not-allowed' : 'move';\n\n const canClick = isInDevelopmentMode && item.configurable !== false && !isMorph && canEdit;\n\n return (\n <>\n <GridWrapper\n $isOverlay={isOverlay}\n $isDragging={isDragging}\n onClick={canClick ? handleClick : undefined}\n paddingLeft={4}\n paddingRight={4}\n >\n <Flex alignItems=\"center\" overflow=\"hidden\" gap={2}>\n {loopNumber !== 0 && !isOverlay && (\n <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />\n )}\n {isInDevelopmentMode && (\n <IconButton\n cursor={cursor}\n role=\"Handle\"\n ref={handleRef}\n {...listeners}\n variant=\"ghost\"\n withTooltip={false}\n label={`${formatMessage({\n id: 'app.utils.drag',\n defaultMessage: 'Drag',\n })} ${item.name}`}\n disabled={isTypeDeleted || isDeleted}\n >\n <Drag />\n </IconButton>\n )}\n <Flex gap={4}>\n <Flex gap={4} alignItems=\"center\">\n <AttributeIcon type={src} customField={item.customField} />\n <Typography\n textColor=\"neutral800\"\n fontWeight=\"bold\"\n textDecoration={isDeleted ? 'line-through' : 'none'}\n ellipsis\n overflow=\"hidden\"\n >\n {item.name}\n {'required' in item && item.required && (\n <Typography textColor=\"danger600\">* </Typography>\n )}\n </Typography>\n </Flex>\n <Flex>\n <Typography textColor=\"neutral600\">\n <DisplayedType\n type={item.type}\n customField={item.customField}\n repeatable={'repeatable' in item && item.repeatable}\n multiple={'multiple' in item && item.multiple}\n />\n {'conditions' in item &&\n item.conditions &&\n Object.keys(item.conditions).length > 0 && <Badge margin={4}>conditional</Badge>}\n {item.type === 'relation' && (\n <>\n ({getRelationType(item.relation, item.targetAttribute)}) \n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n \n {targetContentType && (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/content-types/${targetContentType.uid}`}\n >\n {upperFirst(targetContentType.info.displayName)}\n </Link>\n )}\n {isPluginContentType &&\n `(${formatMessage({\n id: getTrad(`from`),\n defaultMessage: 'from',\n })}: ${isPluginContentType})`}\n </>\n )}\n {item.type === 'component' && <ComponentLink uid={item.component} />}\n </Typography>\n </Flex>\n </Flex>\n </Flex>\n\n <Box>\n <Flex justifyContent=\"flex-end\" gap={1} onClick={(e) => e.stopPropagation()}>\n <>\n <Box>{item.status && <StatusBadge status={item.status} />}</Box>\n {['component', 'dynamiczone'].includes(item.type) && (\n <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isOpen) {\n setIsOpen(false);\n } else {\n setIsOpen(true);\n }\n }}\n aria-expanded={isOpen}\n label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n variant=\"ghost\"\n withTooltip={false}\n >\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n </IconButton>\n )}\n {isInDevelopmentMode && item.configurable !== false ? (\n <>\n {!isMorph && (\n <IconButton\n onClick={handleClick}\n label={`${formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canEdit}\n >\n <Pencil />\n </IconButton>\n )}\n <IconButton\n onClick={handleDelete}\n label={`${formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canDelete}\n >\n <Trash />\n </IconButton>\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <ConfirmDialog onConfirm={handleConfirmDelete} onCancel={handleCancelDelete}>\n <Box>\n <Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions'\n ),\n defaultMessage:\n 'The following fields have conditions that depend on this field: ',\n })}\n <Typography fontWeight=\"bold\">\n {checkDependentRows(contentTypes, item.name)\n .map(({ attribute }) => attribute)\n .join(', ')}\n </Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions-end'\n ),\n defaultMessage: '. Are you sure you want to delete it?',\n })}\n </Typography>\n </Box>\n </ConfirmDialog>\n </Dialog.Root>\n </>\n ) : (\n <Flex padding={2}>\n <Lock fill=\"neutral500\" />\n </Flex>\n )}\n </>\n </Flex>\n </Box>\n </GridWrapper>\n\n <SubRow $shouldHideNestedInfos={shouldHideNestedInfos} $isOpen={isOpen}>\n {item.type === 'component' && (\n <ComponentList\n {...item}\n isFromDynamicZone={isFromDynamicZone}\n firstLoopComponentUid={firstLoopComponentUid}\n />\n )}\n\n {item.type === 'dynamiczone' && (\n <DynamicZoneList\n {...item}\n disabled={isTypeDeleted || item.status === 'REMOVED'}\n addComponent={addComponentToDZ!}\n forTarget={type.modelType}\n targetUid={type.uid}\n />\n )}\n </SubRow>\n </>\n );\n});\n\nconst SubRow = styled(Box)<{ $isOpen: boolean; $shouldHideNestedInfos?: boolean }>`\n display: ${({ $shouldHideNestedInfos }) => ($shouldHideNestedInfos ? 'none' : 'block')};\n max-height: ${({ $isOpen }) => ($isOpen ? '9999px' : '0px')};\n overflow: hidden;\n\n transition: ${({ $isOpen }) =>\n $isOpen ? 'max-height 1s ease-in-out' : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'};\n`;\n\nconst ComponentLink = ({ uid }: { uid: UID.Component }) => {\n const { components } = useDataManager();\n const type = get(components, uid);\n\n return (\n <>\n (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/component-categories/${type.category}/${type.uid}`}\n >\n {upperFirst(type.info.displayName)}\n </Link>\n )\n </>\n );\n};\n"],"names":["GridWrapper","styled","Flex","theme","$isOverlay","colors","neutral150","spaces","$isDragging","StyledAttributeRow","Box","AttributeRow","forwardRef","props","ref","style","rest","_jsx","tag","attributes","background","shadow","isOverlay","aria-label","item","name","MemoizedRow","memo","firstLoopComponentUid","isFromDynamicZone","addComponentToDZ","secondLoopComponentUid","type","isDragging","handleRef","listeners","shouldHideNestedInfos","isOpen","setIsOpen","useState","isTypeDeleted","status","contentTypes","removeAttribute","isInDevelopmentMode","useDataManager","onOpenModalEditField","onOpenModalEditCustomField","useFormModalNavigation","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","isDeleted","isMorph","relation","includes","ico","targetContentType","get","target","isPluginContentType","src","handleDelete","e","stopPropagation","dependentRows","checkDependentRows","length","forTarget","modelType","targetUid","uid","attributeToRemoveName","handleConfirmDelete","handleCancelDelete","handleClick","configurable","editTargetUid","attributeType","getAttributeDisplayedType","step","customField","attributeName","customFieldUid","loopNumber","canEdit","canDelete","cursor","canClick","_jsxs","_Fragment","onClick","undefined","paddingLeft","paddingRight","alignItems","overflow","gap","Curve","color","IconButton","role","variant","withTooltip","label","id","defaultMessage","disabled","Drag","AttributeIcon","Typography","textColor","fontWeight","textDecoration","ellipsis","required","DisplayedType","repeatable","multiple","conditions","Object","keys","Badge","margin","getRelationType","targetAttribute","getTrad","Link","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","Trash","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","onCancel","map","attribute","join","padding","Lock","SubRow","$shouldHideNestedInfos","$isOpen","ComponentList","DynamicZoneList","addComponent","components","category"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AttributeRow.mjs","sources":["../../../admin/src/components/AttributeRow.tsx"],"sourcesContent":["import { forwardRef, memo, useState } from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, IconButton, Typography, Link, Badge, Dialog } from '@strapi/design-system';\nimport { ChevronDown, Drag, Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Link as NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { Curve } from '../icons/Curve';\nimport { checkDependentRows } from '../utils/conditions';\nimport { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType';\nimport { getRelationType } from '../utils/getRelationType';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon } from './AttributeIcon';\nimport { ComponentList } from './ComponentList';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { DisplayedType } from './DisplayedType';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\nimport { StatusBadge } from './Status';\n\nimport type { AnyAttribute, Component, ContentType } from '../types';\nimport type { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';\nimport type { UID } from '@strapi/types';\n\nexport const GridWrapper = styled(Flex)<{ $isOverlay?: boolean; $isDragging?: boolean }>`\n justify-content: space-between;\n\n border-top: ${({ theme, $isOverlay }) =>\n $isOverlay ? 'none' : `1px solid ${theme.colors.neutral150}`};\n\n padding-top: ${({ theme }) => theme.spaces[4]};\n padding-bottom: ${({ theme }) => theme.spaces[4]};\n\n opacity: ${({ $isDragging }) => ($isDragging ? 0 : 1)};\n align-items: center;\n`;\n\nexport type AttributeRowProps = {\n item: {\n id: string;\n index: number;\n } & AnyAttribute;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n addComponentToDZ?: () => void;\n secondLoopComponentUid?: UID.Component | null;\n type: ContentType | Component;\n isDragging?: boolean;\n style?: Record<string, unknown>;\n listeners?: DraggableSyntheticListeners;\n attributes?: DraggableAttributes;\n isOverlay?: boolean;\n handleRef?: (element: HTMLElement | null) => void;\n};\n\nconst StyledAttributeRow = styled(Box)`\n list-style: none;\n list-style-type: none;\n`;\n\nexport const AttributeRow = forwardRef<HTMLLIElement, AttributeRowProps>((props, ref) => {\n const { style, ...rest } = props;\n\n return (\n <StyledAttributeRow\n tag=\"li\"\n ref={ref}\n {...props.attributes}\n style={style}\n background=\"neutral0\"\n shadow={props.isOverlay ? 'filterShadow' : 'none'}\n aria-label={props.item.name}\n >\n <MemoizedRow {...rest} />\n </StyledAttributeRow>\n );\n});\n\nconst MemoizedRow = memo((props: Omit<AttributeRowProps, 'style'>) => {\n const {\n item,\n firstLoopComponentUid,\n isFromDynamicZone,\n addComponentToDZ,\n secondLoopComponentUid,\n type,\n isDragging,\n isOverlay,\n handleRef,\n listeners,\n } = props;\n const shouldHideNestedInfos = isOverlay || isDragging;\n\n const [isOpen, setIsOpen] = useState<boolean>(true);\n\n const isTypeDeleted = type.status === 'REMOVED';\n\n const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();\n const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();\n\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const isDeleted = item.status === 'REMOVED';\n\n const isMorph = item.type === 'relation' && item.relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(item.type)\n ? 'number'\n : item.type;\n\n const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;\n const isPluginContentType = get(targetContentType, 'plugin');\n\n const src = 'target' in item && item.target ? 'relation' : ico;\n\n const handleDelete = (e: React.MouseEvent | React.KeyboardEvent) => {\n e.stopPropagation();\n const dependentRows = checkDependentRows(contentTypes, item.name);\n if (dependentRows.length > 0) {\n setShowConfirmDialog(true);\n } else {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }\n };\n\n const handleConfirmDelete = () => {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n setShowConfirmDialog(false);\n };\n\n const handleCancelDelete = () => {\n setShowConfirmDialog(false);\n };\n\n const handleClick = (e?: React.MouseEvent | React.KeyboardEvent) => {\n if (e) {\n e.stopPropagation();\n }\n\n if (isMorph) {\n return;\n }\n\n if (item.configurable !== false) {\n const editTargetUid = (secondLoopComponentUid || firstLoopComponentUid || type.uid)!;\n\n const attributeType = getAttributeDisplayedType(item.type);\n const step = item.type === 'component' ? '2' : null;\n\n if (item.customField) {\n onOpenModalEditCustomField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n customFieldUid: item.customField,\n });\n } else {\n onOpenModalEditField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n step,\n });\n }\n }\n };\n\n let loopNumber;\n\n if (secondLoopComponentUid && firstLoopComponentUid) {\n loopNumber = 2;\n } else if (firstLoopComponentUid) {\n loopNumber = 1;\n } else {\n loopNumber = 0;\n }\n\n const canEdit = !isTypeDeleted && !isDeleted;\n const canDelete = !isTypeDeleted && !isDeleted;\n\n const cursor = isTypeDeleted || isDeleted ? 'not-allowed' : 'move';\n\n const canClick = isInDevelopmentMode && item.configurable !== false && !isMorph && canEdit;\n\n return (\n <>\n <GridWrapper\n $isOverlay={isOverlay}\n $isDragging={isDragging}\n onClick={canClick ? handleClick : undefined}\n paddingLeft={4}\n paddingRight={4}\n >\n <Flex alignItems=\"center\" overflow=\"hidden\" gap={2}>\n {loopNumber !== 0 && !isOverlay && (\n <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />\n )}\n {isInDevelopmentMode && (\n <IconButton\n cursor={cursor}\n role=\"Handle\"\n ref={handleRef}\n {...listeners}\n variant=\"ghost\"\n withTooltip={false}\n label={`${formatMessage({\n id: 'app.utils.drag',\n defaultMessage: 'Drag',\n })} ${item.name}`}\n disabled={isTypeDeleted || isDeleted}\n style={{ outlineOffset: '-2px' }}\n >\n <Drag />\n </IconButton>\n )}\n <Flex gap={4}>\n <Flex gap={4} alignItems=\"center\">\n <AttributeIcon type={src} customField={item.customField} />\n <Typography\n textColor=\"neutral800\"\n fontWeight=\"bold\"\n textDecoration={isDeleted ? 'line-through' : 'none'}\n ellipsis\n overflow=\"hidden\"\n >\n {item.name}\n {'required' in item && item.required && (\n <Typography textColor=\"danger600\">* </Typography>\n )}\n </Typography>\n </Flex>\n <Flex>\n <Typography textColor=\"neutral600\">\n <DisplayedType\n type={item.type}\n customField={item.customField}\n repeatable={'repeatable' in item && item.repeatable}\n multiple={'multiple' in item && item.multiple}\n />\n {'conditions' in item &&\n item.conditions &&\n Object.keys(item.conditions).length > 0 && <Badge margin={4}>conditional</Badge>}\n {item.type === 'relation' && (\n <>\n ({getRelationType(item.relation, item.targetAttribute)}) \n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n \n {targetContentType && (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/content-types/${targetContentType.uid}`}\n >\n {upperFirst(targetContentType.info.displayName)}\n </Link>\n )}\n {isPluginContentType &&\n `(${formatMessage({\n id: getTrad(`from`),\n defaultMessage: 'from',\n })}: ${isPluginContentType})`}\n </>\n )}\n {item.type === 'component' && <ComponentLink uid={item.component} />}\n </Typography>\n </Flex>\n </Flex>\n </Flex>\n\n <Box>\n <Flex justifyContent=\"flex-end\" gap={1} onClick={(e) => e.stopPropagation()}>\n <>\n <Box>{item.status && <StatusBadge status={item.status} />}</Box>\n {['component', 'dynamiczone'].includes(item.type) && (\n <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isOpen) {\n setIsOpen(false);\n } else {\n setIsOpen(true);\n }\n }}\n aria-expanded={isOpen}\n label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n variant=\"ghost\"\n withTooltip={false}\n >\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n </IconButton>\n )}\n {isInDevelopmentMode && item.configurable !== false ? (\n <>\n {!isMorph && (\n <IconButton\n onClick={handleClick}\n label={`${formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canEdit}\n >\n <Pencil />\n </IconButton>\n )}\n <IconButton\n onClick={handleDelete}\n label={`${formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canDelete}\n >\n <Trash />\n </IconButton>\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <ConfirmDialog onConfirm={handleConfirmDelete} onCancel={handleCancelDelete}>\n <Box>\n <Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions'\n ),\n defaultMessage:\n 'The following fields have conditions that depend on this field: ',\n })}\n <Typography fontWeight=\"bold\">\n {checkDependentRows(contentTypes, item.name)\n .map(({ attribute }) => attribute)\n .join(', ')}\n </Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions-end'\n ),\n defaultMessage: '. Are you sure you want to delete it?',\n })}\n </Typography>\n </Box>\n </ConfirmDialog>\n </Dialog.Root>\n </>\n ) : (\n <Flex padding={2}>\n <Lock fill=\"neutral500\" />\n </Flex>\n )}\n </>\n </Flex>\n </Box>\n </GridWrapper>\n\n <SubRow $shouldHideNestedInfos={shouldHideNestedInfos} $isOpen={isOpen}>\n {item.type === 'component' && (\n <ComponentList\n {...item}\n isFromDynamicZone={isFromDynamicZone}\n firstLoopComponentUid={firstLoopComponentUid}\n />\n )}\n\n {item.type === 'dynamiczone' && (\n <DynamicZoneList\n {...item}\n disabled={isTypeDeleted || item.status === 'REMOVED'}\n addComponent={addComponentToDZ!}\n forTarget={type.modelType}\n targetUid={type.uid}\n />\n )}\n </SubRow>\n </>\n );\n});\n\nconst SubRow = styled(Box)<{ $isOpen: boolean; $shouldHideNestedInfos?: boolean }>`\n display: ${({ $shouldHideNestedInfos }) => ($shouldHideNestedInfos ? 'none' : 'block')};\n max-height: ${({ $isOpen }) => ($isOpen ? '9999px' : '0px')};\n overflow: hidden;\n\n transition: ${({ $isOpen }) =>\n $isOpen ? 'max-height 1s ease-in-out' : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'};\n`;\n\nconst ComponentLink = ({ uid }: { uid: UID.Component }) => {\n const { components } = useDataManager();\n const type = get(components, uid);\n\n return (\n <>\n (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/component-categories/${type.category}/${type.uid}`}\n >\n {upperFirst(type.info.displayName)}\n </Link>\n )\n </>\n );\n};\n"],"names":["GridWrapper","styled","Flex","theme","$isOverlay","colors","neutral150","spaces","$isDragging","StyledAttributeRow","Box","AttributeRow","forwardRef","props","ref","style","rest","_jsx","tag","attributes","background","shadow","isOverlay","aria-label","item","name","MemoizedRow","memo","firstLoopComponentUid","isFromDynamicZone","addComponentToDZ","secondLoopComponentUid","type","isDragging","handleRef","listeners","shouldHideNestedInfos","isOpen","setIsOpen","useState","isTypeDeleted","status","contentTypes","removeAttribute","isInDevelopmentMode","useDataManager","onOpenModalEditField","onOpenModalEditCustomField","useFormModalNavigation","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","isDeleted","isMorph","relation","includes","ico","targetContentType","get","target","isPluginContentType","src","handleDelete","e","stopPropagation","dependentRows","checkDependentRows","length","forTarget","modelType","targetUid","uid","attributeToRemoveName","handleConfirmDelete","handleCancelDelete","handleClick","configurable","editTargetUid","attributeType","getAttributeDisplayedType","step","customField","attributeName","customFieldUid","loopNumber","canEdit","canDelete","cursor","canClick","_jsxs","_Fragment","onClick","undefined","paddingLeft","paddingRight","alignItems","overflow","gap","Curve","color","IconButton","role","variant","withTooltip","label","id","defaultMessage","disabled","outlineOffset","Drag","AttributeIcon","Typography","textColor","fontWeight","textDecoration","ellipsis","required","DisplayedType","repeatable","multiple","conditions","Object","keys","Badge","margin","getRelationType","targetAttribute","getTrad","Link","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","Trash","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","onCancel","map","attribute","join","padding","Lock","SubRow","$shouldHideNestedInfos","$isOpen","ComponentList","DynamicZoneList","addComponent","components","category"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA6BaA,MAAAA,WAAAA,GAAcC,MAAOC,CAAAA,IAAAA,CAAsD;;;AAG1E,cAAA,EAAE,CAAC,EAAEC,KAAK,EAAEC,UAAU,EAAE,GAClCA,UAAa,GAAA,MAAA,GAAS,CAAC,UAAU,EAAED,KAAME,CAAAA,MAAM,CAACC,UAAU,CAAC,CAAC,CAAC;;eAElD,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;kBAC9B,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;AAExC,WAAA,EAAE,CAAC,EAAEC,WAAW,EAAE,GAAMA,WAAAA,GAAc,IAAI,CAAG,CAAA;;AAExD;AAoBA,MAAMC,kBAAAA,GAAqBR,MAAOS,CAAAA,GAAAA,CAAI;;;AAGtC,CAAC;AAEYC,MAAAA,YAAAA,iBAAeC,UAA6C,CAAA,CAACC,KAAOC,EAAAA,GAAAA,GAAAA;AAC/E,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGC,MAAM,GAAGH,KAAAA;AAE3B,IAAA,qBACEI,GAACR,CAAAA,kBAAAA,EAAAA;QACCS,GAAI,EAAA,IAAA;QACJJ,GAAKA,EAAAA,GAAAA;AACJ,QAAA,GAAGD,MAAMM,UAAU;QACpBJ,KAAOA,EAAAA,KAAAA;QACPK,UAAW,EAAA,UAAA;QACXC,MAAQR,EAAAA,KAAAA,CAAMS,SAAS,GAAG,cAAiB,GAAA,MAAA;QAC3CC,YAAYV,EAAAA,KAAAA,CAAMW,IAAI,CAACC,IAAI;AAE3B,QAAA,QAAA,gBAAAR,GAACS,CAAAA,WAAAA,EAAAA;AAAa,YAAA,GAAGV;;;AAGvB,CAAG;AAEH,MAAMU,WAAAA,iBAAcC,KAAK,CAACd,KAAAA,GAAAA;IACxB,MAAM,EACJW,IAAI,EACJI,qBAAqB,EACrBC,iBAAiB,EACjBC,gBAAgB,EAChBC,sBAAsB,EACtBC,IAAI,EACJC,UAAU,EACVX,SAAS,EACTY,SAAS,EACTC,SAAS,EACV,GAAGtB,KAAAA;AACJ,IAAA,MAAMuB,wBAAwBd,SAAaW,IAAAA,UAAAA;AAE3C,IAAA,MAAM,CAACI,MAAAA,EAAQC,SAAU,CAAA,GAAGC,QAAkB,CAAA,IAAA,CAAA;IAE9C,MAAMC,aAAAA,GAAgBR,IAAKS,CAAAA,MAAM,KAAK,SAAA;AAEtC,IAAA,MAAM,EAAEC,YAAY,EAAEC,eAAe,EAAEC,mBAAmB,EAAE,GAAGC,cAAAA,EAAAA;AAC/D,IAAA,MAAM,EAAEC,oBAAoB,EAAEC,0BAA0B,EAAE,GAAGC,sBAAAA,EAAAA;IAE7D,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,iBAAAA,EAAmBC,oBAAqB,CAAA,GAAGb,QAAS,CAAA,KAAA,CAAA;IAE3D,MAAMc,SAAAA,GAAY7B,IAAKiB,CAAAA,MAAM,KAAK,SAAA;IAElC,MAAMa,OAAAA,GAAU9B,KAAKQ,IAAI,KAAK,cAAcR,IAAK+B,CAAAA,QAAQ,CAACC,QAAQ,CAAC,OAAA,CAAA;AACnE,IAAA,MAAMC,GAAM,GAAA;AAAC,QAAA,SAAA;AAAW,QAAA,YAAA;AAAc,QAAA,OAAA;AAAS,QAAA;AAAU,KAAA,CAACD,QAAQ,CAAChC,IAAAA,CAAKQ,IAAI,CACxE,GAAA,QAAA,GACAR,KAAKQ,IAAI;IAEb,MAAM0B,iBAAAA,GAAoBlC,KAAKQ,IAAI,KAAK,aAAa2B,GAAIjB,CAAAA,YAAAA,EAAclB,IAAKoC,CAAAA,MAAM,CAAI,GAAA,IAAA;IACtF,MAAMC,mBAAAA,GAAsBF,IAAID,iBAAmB,EAAA,QAAA,CAAA;AAEnD,IAAA,MAAMI,MAAM,QAAYtC,IAAAA,IAAAA,IAAQA,IAAKoC,CAAAA,MAAM,GAAG,UAAaH,GAAAA,GAAAA;AAE3D,IAAA,MAAMM,eAAe,CAACC,CAAAA,GAAAA;AACpBA,QAAAA,CAAAA,CAAEC,eAAe,EAAA;AACjB,QAAA,MAAMC,aAAgBC,GAAAA,kBAAAA,CAAmBzB,YAAclB,EAAAA,IAAAA,CAAKC,IAAI,CAAA;QAChE,IAAIyC,aAAAA,CAAcE,MAAM,GAAG,CAAG,EAAA;YAC5BhB,oBAAqB,CAAA,IAAA,CAAA;SAChB,MAAA;YACLT,eAAgB,CAAA;AACd0B,gBAAAA,SAAAA,EAAWrC,KAAKsC,SAAS;AACzBC,gBAAAA,SAAAA,EAAWvC,KAAKwC,GAAG;AACnBC,gBAAAA,qBAAAA,EAAuBjD,KAAKC;AAC9B,aAAA,CAAA;AACF;AACF,KAAA;AAEA,IAAA,MAAMiD,mBAAsB,GAAA,IAAA;QAC1B/B,eAAgB,CAAA;AACd0B,YAAAA,SAAAA,EAAWrC,KAAKsC,SAAS;AACzBC,YAAAA,SAAAA,EAAWvC,KAAKwC,GAAG;AACnBC,YAAAA,qBAAAA,EAAuBjD,KAAKC;AAC9B,SAAA,CAAA;QACA2B,oBAAqB,CAAA,KAAA,CAAA;AACvB,KAAA;AAEA,IAAA,MAAMuB,kBAAqB,GAAA,IAAA;QACzBvB,oBAAqB,CAAA,KAAA,CAAA;AACvB,KAAA;AAEA,IAAA,MAAMwB,cAAc,CAACZ,CAAAA,GAAAA;AACnB,QAAA,IAAIA,CAAG,EAAA;AACLA,YAAAA,CAAAA,CAAEC,eAAe,EAAA;AACnB;AAEA,QAAA,IAAIX,OAAS,EAAA;AACX,YAAA;AACF;QAEA,IAAI9B,IAAAA,CAAKqD,YAAY,KAAK,KAAO,EAAA;AAC/B,YAAA,MAAMC,aAAiB/C,GAAAA,sBAAAA,IAA0BH,qBAAyBI,IAAAA,IAAAA,CAAKwC,GAAG;YAElF,MAAMO,aAAAA,GAAgBC,yBAA0BxD,CAAAA,IAAAA,CAAKQ,IAAI,CAAA;AACzD,YAAA,MAAMiD,IAAOzD,GAAAA,IAAAA,CAAKQ,IAAI,KAAK,cAAc,GAAM,GAAA,IAAA;YAE/C,IAAIR,IAAAA,CAAK0D,WAAW,EAAE;gBACpBnC,0BAA2B,CAAA;AACzBsB,oBAAAA,SAAAA,EAAWrC,KAAKsC,SAAS;oBACzBC,SAAWO,EAAAA,aAAAA;AACXK,oBAAAA,aAAAA,EAAe3D,KAAKC,IAAI;AACxBsD,oBAAAA,aAAAA;AACAK,oBAAAA,cAAAA,EAAgB5D,KAAK0D;AACvB,iBAAA,CAAA;aACK,MAAA;gBACLpC,oBAAqB,CAAA;AACnBuB,oBAAAA,SAAAA,EAAWrC,KAAKsC,SAAS;oBACzBC,SAAWO,EAAAA,aAAAA;AACXK,oBAAAA,aAAAA,EAAe3D,KAAKC,IAAI;AACxBsD,oBAAAA,aAAAA;AACAE,oBAAAA;AACF,iBAAA,CAAA;AACF;AACF;AACF,KAAA;IAEA,IAAII,UAAAA;AAEJ,IAAA,IAAItD,0BAA0BH,qBAAuB,EAAA;QACnDyD,UAAa,GAAA,CAAA;AACf,KAAA,MAAO,IAAIzD,qBAAuB,EAAA;QAChCyD,UAAa,GAAA,CAAA;KACR,MAAA;QACLA,UAAa,GAAA,CAAA;AACf;IAEA,MAAMC,OAAAA,GAAU,CAAC9C,aAAAA,IAAiB,CAACa,SAAAA;IACnC,MAAMkC,SAAAA,GAAY,CAAC/C,aAAAA,IAAiB,CAACa,SAAAA;IAErC,MAAMmC,MAAAA,GAAShD,aAAiBa,IAAAA,SAAAA,GAAY,aAAgB,GAAA,MAAA;AAE5D,IAAA,MAAMoC,WAAW7C,mBAAuBpB,IAAAA,IAAAA,CAAKqD,YAAY,KAAK,KAAA,IAAS,CAACvB,OAAWgC,IAAAA,OAAAA;IAEnF,qBACEI,IAAA,CAAAC,QAAA,EAAA;;0BACED,IAAC1F,CAAAA,WAAAA,EAAAA;gBACCI,UAAYkB,EAAAA,SAAAA;gBACZd,WAAayB,EAAAA,UAAAA;AACb2D,gBAAAA,OAAAA,EAASH,WAAWb,WAAciB,GAAAA,SAAAA;gBAClCC,WAAa,EAAA,CAAA;gBACbC,YAAc,EAAA,CAAA;;kCAEdL,IAACxF,CAAAA,IAAAA,EAAAA;wBAAK8F,UAAW,EAAA,QAAA;wBAASC,QAAS,EAAA,QAAA;wBAASC,GAAK,EAAA,CAAA;;4BAC9Cb,UAAe,KAAA,CAAA,IAAK,CAAC/D,SAAAA,kBACpBL,GAACkF,CAAAA,KAAAA,EAAAA;AAAMC,gCAAAA,KAAAA,EAAOvE,oBAAoB,YAAe,GAAA;;AAElDe,4BAAAA,mBAAAA,kBACC3B,GAACoF,CAAAA,UAAAA,EAAAA;gCACCb,MAAQA,EAAAA,MAAAA;gCACRc,IAAK,EAAA,QAAA;gCACLxF,GAAKoB,EAAAA,SAAAA;AACJ,gCAAA,GAAGC,SAAS;gCACboE,OAAQ,EAAA,OAAA;gCACRC,WAAa,EAAA,KAAA;gCACbC,KAAO,EAAA,CAAC,EAAExD,aAAc,CAAA;oCACtByD,EAAI,EAAA,gBAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA,CAAA,CAAG,CAAC,EAAEnF,IAAKC,CAAAA,IAAI,CAAC,CAAC;AACjBmF,gCAAAA,QAAAA,EAAUpE,aAAiBa,IAAAA,SAAAA;gCAC3BtC,KAAO,EAAA;oCAAE8F,aAAe,EAAA;AAAO,iCAAA;AAE/B,gCAAA,QAAA,gBAAA5F,GAAC6F,CAAAA,IAAAA,EAAAA,EAAAA;;0CAGLpB,IAACxF,CAAAA,IAAAA,EAAAA;gCAAKgG,GAAK,EAAA,CAAA;;kDACTR,IAACxF,CAAAA,IAAAA,EAAAA;wCAAKgG,GAAK,EAAA,CAAA;wCAAGF,UAAW,EAAA,QAAA;;0DACvB/E,GAAC8F,CAAAA,aAAAA,EAAAA;gDAAc/E,IAAM8B,EAAAA,GAAAA;AAAKoB,gDAAAA,WAAAA,EAAa1D,KAAK0D;;0DAC5CQ,IAACsB,CAAAA,UAAAA,EAAAA;gDACCC,SAAU,EAAA,YAAA;gDACVC,UAAW,EAAA,MAAA;AACXC,gDAAAA,cAAAA,EAAgB9D,YAAY,cAAiB,GAAA,MAAA;gDAC7C+D,QAAQ,EAAA,IAAA;gDACRnB,QAAS,EAAA,QAAA;;AAERzE,oDAAAA,IAAAA,CAAKC,IAAI;AACT,oDAAA,UAAA,IAAcD,IAAQA,IAAAA,IAAAA,CAAK6F,QAAQ,kBAClCpG,GAAC+F,CAAAA,UAAAA,EAAAA;wDAAWC,SAAU,EAAA,WAAA;AAAY,wDAAA,QAAA,EAAA;;;;;;kDAIxChG,GAACf,CAAAA,IAAAA,EAAAA;AACC,wCAAA,QAAA,gBAAAwF,IAACsB,CAAAA,UAAAA,EAAAA;4CAAWC,SAAU,EAAA,YAAA;;8DACpBhG,GAACqG,CAAAA,aAAAA,EAAAA;AACCtF,oDAAAA,IAAAA,EAAMR,KAAKQ,IAAI;AACfkD,oDAAAA,WAAAA,EAAa1D,KAAK0D,WAAW;oDAC7BqC,UAAY,EAAA,YAAA,IAAgB/F,IAAQA,IAAAA,IAAAA,CAAK+F,UAAU;oDACnDC,QAAU,EAAA,UAAA,IAAchG,IAAQA,IAAAA,IAAAA,CAAKgG;;AAEtC,gDAAA,YAAA,IAAgBhG,IACfA,IAAAA,IAAAA,CAAKiG,UAAU,IACfC,MAAOC,CAAAA,IAAI,CAACnG,IAAAA,CAAKiG,UAAU,CAAA,CAAErD,MAAM,GAAG,mBAAKnD,GAAC2G,CAAAA,KAAAA,EAAAA;oDAAMC,MAAQ,EAAA,CAAA;AAAG,oDAAA,QAAA,EAAA;;gDAC9DrG,IAAKQ,CAAAA,IAAI,KAAK,UACb,kBAAA0D,IAAA,CAAAC,QAAA,EAAA;;AAAE,wDAAA,IAAA;AACQmC,wDAAAA,eAAAA,CAAgBtG,IAAK+B,CAAAA,QAAQ,EAAE/B,IAAAA,CAAKuG,eAAe,CAAA;AAAE,wDAAA,IAAA;AAC5DrE,wDAAAA,iBAAAA,IACCT,aAAc,CAAA;AACZyD,4DAAAA,EAAAA,EAAIsB,OAAQ,CAAA,0BAAA,CAAA;4DACZrB,cAAgB,EAAA;AAClB,yDAAA,CAAA;AAAG,wDAAA,GAAA;AAEJjD,wDAAAA,iBAAAA,kBACCzC,GAACgH,CAAAA,IAAAA,EAAAA;4DACCrC,OAAS,EAAA,CAAC5B,CAAMA,GAAAA,CAAAA,CAAEC,eAAe,EAAA;4DACjC/C,GAAKgH,EAAAA,MAAAA;AACLC,4DAAAA,EAAAA,EAAI,CAAC,4CAA4C,EAAEzE,iBAAkBc,CAAAA,GAAG,CAAC,CAAC;sEAEzE4D,UAAW1E,CAAAA,iBAAAA,CAAkB2E,IAAI,CAACC,WAAW;;wDAGjDzE,mBACC,IAAA,CAAC,CAAC,EAAEZ,aAAc,CAAA;4DAChByD,EAAIsB,EAAAA,OAAAA,CAAQ,CAAC,IAAI,CAAC,CAAA;4DAClBrB,cAAgB,EAAA;AAClB,yDAAA,CAAA,CAAG,EAAE,EAAE9C,mBAAoB,CAAA,CAAC;;;gDAGjCrC,IAAKQ,CAAAA,IAAI,KAAK,WAAA,kBAAef,GAACsH,CAAAA,aAAAA,EAAAA;AAAc/D,oDAAAA,GAAAA,EAAKhD,KAAKgH;;;;;;;;;kCAM/DvH,GAACP,CAAAA,GAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAO,GAACf,CAAAA,IAAAA,EAAAA;4BAAKuI,cAAe,EAAA,UAAA;4BAAWvC,GAAK,EAAA,CAAA;4BAAGN,OAAS,EAAA,CAAC5B,CAAMA,GAAAA,CAAAA,CAAEC,eAAe,EAAA;oDACvEyB,IAAA,CAAAC,QAAA,EAAA;;kDACE1E,GAACP,CAAAA,GAAAA,EAAAA;kDAAKc,IAAKiB,CAAAA,MAAM,kBAAIxB,GAACyH,CAAAA,WAAAA,EAAAA;AAAYjG,4CAAAA,MAAAA,EAAQjB,KAAKiB;;;AAC9C,oCAAA;AAAC,wCAAA,WAAA;AAAa,wCAAA;AAAc,qCAAA,CAACe,QAAQ,CAAChC,IAAKQ,CAAAA,IAAI,mBAC9Cf,GAACoF,CAAAA,UAAAA,EAAAA;AACCT,wCAAAA,OAAAA,EAAS,CAAC5B,CAAAA,GAAAA;AACRA,4CAAAA,CAAAA,CAAE2E,cAAc,EAAA;AAChB3E,4CAAAA,CAAAA,CAAEC,eAAe,EAAA;AAEjB,4CAAA,IAAI5B,MAAQ,EAAA;gDACVC,SAAU,CAAA,KAAA,CAAA;6CACL,MAAA;gDACLA,SAAU,CAAA,IAAA,CAAA;AACZ;AACF,yCAAA;wCACAsG,eAAevG,EAAAA,MAAAA;AACfoE,wCAAAA,KAAAA,EAAOxD,aAAc,CAAA;4CACnByD,EAAI,EAAA,kBAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA,CAAA;wCACAJ,OAAQ,EAAA,OAAA;wCACRC,WAAa,EAAA,KAAA;AAEb,wCAAA,QAAA,gBAAAvF,GAAC4H,CAAAA,WAAAA,EAAAA;4CACCC,aAAW,EAAA,IAAA;4CACXC,IAAK,EAAA,YAAA;4CACLhI,KAAO,EAAA;AACLiI,gDAAAA,SAAAA,EAAW,CAAC,OAAO,EAAE3G,SAAS,MAAS,GAAA,QAAA,CAAS,CAAC,CAAC;gDAClD4G,UAAY,EAAA;AACd;;;oCAILrG,mBAAuBpB,IAAAA,IAAAA,CAAKqD,YAAY,KAAK,KAC5C,iBAAAa,IAAA,CAAAC,QAAA,EAAA;;AACG,4CAAA,CAACrC,yBACArC,GAACoF,CAAAA,UAAAA,EAAAA;gDACCT,OAAShB,EAAAA,WAAAA;gDACT6B,KAAO,EAAA,CAAC,EAAExD,aAAc,CAAA;oDACtByD,EAAI,EAAA,gBAAA;oDACJC,cAAgB,EAAA;AAClB,iDAAA,CAAA,CAAG,CAAC,EAAEnF,IAAKC,CAAAA,IAAI,CAAC,CAAC;gDACjB8E,OAAQ,EAAA,OAAA;AACRK,gDAAAA,QAAAA,EAAU,CAACtB,OAAAA;AAEX,gDAAA,QAAA,gBAAArE,GAACiI,CAAAA,MAAAA,EAAAA,EAAAA;;0DAGLjI,GAACoF,CAAAA,UAAAA,EAAAA;gDACCT,OAAS7B,EAAAA,YAAAA;gDACT0C,KAAO,EAAA,CAAC,EAAExD,aAAc,CAAA;oDACtByD,EAAI,EAAA,eAAA;oDACJC,cAAgB,EAAA;AAClB,iDAAA,CAAA,CAAG,CAAC,EAAEnF,IAAKC,CAAAA,IAAI,CAAC,CAAC;gDACjB8E,OAAQ,EAAA,OAAA;AACRK,gDAAAA,QAAAA,EAAU,CAACrB,SAAAA;AAEX,gDAAA,QAAA,gBAAAtE,GAACkI,CAAAA,KAAAA,EAAAA,EAAAA;;AAEH,0DAAAlI,GAAA,CAACmI,OAAOC,IAAI,EAAA;gDAACC,IAAMnG,EAAAA,iBAAAA;gDAAmBoG,YAAcnG,EAAAA,oBAAAA;AAClD,gDAAA,QAAA,gBAAAnC,GAACuI,CAAAA,aAAAA,EAAAA;oDAAcC,SAAW/E,EAAAA,mBAAAA;oDAAqBgF,QAAU/E,EAAAA,kBAAAA;AACvD,oDAAA,QAAA,gBAAA1D,GAACP,CAAAA,GAAAA,EAAAA;AACC,wDAAA,QAAA,gBAAAgF,IAACsB,CAAAA,UAAAA,EAAAA;;gEACE/D,aAAc,CAAA;AACbyD,oEAAAA,EAAAA,EAAIsB,OACF,CAAA,2DAAA,CAAA;oEAEFrB,cACE,EAAA;AACJ,iEAAA,CAAA;8EACA1F,GAAC+F,CAAAA,UAAAA,EAAAA;oEAAWE,UAAW,EAAA,MAAA;AACpB/C,oEAAAA,QAAAA,EAAAA,kBAAAA,CAAmBzB,YAAclB,EAAAA,IAAAA,CAAKC,IAAI,CAAA,CACxCkI,GAAG,CAAC,CAAC,EAAEC,SAAS,EAAE,GAAKA,SAAAA,CAAAA,CACvBC,IAAI,CAAC,IAAA;;gEAET5G,aAAc,CAAA;AACbyD,oEAAAA,EAAAA,EAAIsB,OACF,CAAA,+DAAA,CAAA;oEAEFrB,cAAgB,EAAA;AAClB,iEAAA;;;;;;;uDAOV1F,GAACf,CAAAA,IAAAA,EAAAA;wCAAK4J,OAAS,EAAA,CAAA;AACb,wCAAA,QAAA,gBAAA7I,GAAC8I,CAAAA,IAAAA,EAAAA;4CAAKhB,IAAK,EAAA;;;;;;;;;0BAQvBrD,IAACsE,CAAAA,MAAAA,EAAAA;gBAAOC,sBAAwB7H,EAAAA,qBAAAA;gBAAuB8H,OAAS7H,EAAAA,MAAAA;;oBAC7Db,IAAKQ,CAAAA,IAAI,KAAK,WAAA,kBACbf,GAACkJ,CAAAA,aAAAA,EAAAA;AACE,wBAAA,GAAG3I,IAAI;wBACRK,iBAAmBA,EAAAA,iBAAAA;wBACnBD,qBAAuBA,EAAAA;;oBAI1BJ,IAAKQ,CAAAA,IAAI,KAAK,aAAA,kBACbf,GAACmJ,CAAAA,eAAAA,EAAAA;AACE,wBAAA,GAAG5I,IAAI;wBACRoF,QAAUpE,EAAAA,aAAAA,IAAiBhB,IAAKiB,CAAAA,MAAM,KAAK,SAAA;wBAC3C4H,YAAcvI,EAAAA,gBAAAA;AACduC,wBAAAA,SAAAA,EAAWrC,KAAKsC,SAAS;AACzBC,wBAAAA,SAAAA,EAAWvC,KAAKwC;;;;;;AAM5B,CAAA,CAAA;AAEA,MAAMwF,MAAAA,GAAS/J,MAAOS,CAAAA,GAAAA,CAA4D;AACvE,WAAA,EAAE,CAAC,EAAEuJ,sBAAsB,EAAE,GAAMA,sBAAAA,GAAyB,SAAS,OAAS,CAAA;AAC3E,cAAA,EAAE,CAAC,EAAEC,OAAO,EAAE,GAAMA,OAAAA,GAAU,WAAW,KAAO,CAAA;;;AAGhD,cAAA,EAAE,CAAC,EAAEA,OAAO,EAAE,GACxBA,OAAAA,GAAU,8BAA8B,0CAA2C,CAAA;AACvF,CAAC;AAED,MAAM3B,aAAgB,GAAA,CAAC,EAAE/D,GAAG,EAA0B,GAAA;IACpD,MAAM,EAAE8F,UAAU,EAAE,GAAGzH,cAAAA,EAAAA;IACvB,MAAMb,IAAAA,GAAO2B,IAAI2G,UAAY9F,EAAAA,GAAAA,CAAAA;IAE7B,qBACEkB,IAAA,CAAAC,QAAA,EAAA;;AAAE,YAAA,IAAA;0BAEA1E,GAACgH,CAAAA,IAAAA,EAAAA;gBACCrC,OAAS,EAAA,CAAC5B,CAAMA,GAAAA,CAAAA,CAAEC,eAAe,EAAA;gBACjC/C,GAAKgH,EAAAA,MAAAA;gBACLC,EAAI,EAAA,CAAC,mDAAmD,EAAEnG,IAAKuI,CAAAA,QAAQ,CAAC,CAAC,EAAEvI,IAAAA,CAAKwC,GAAG,CAAC,CAAC;0BAEpF4D,UAAWpG,CAAAA,IAAAA,CAAKqG,IAAI,CAACC,WAAW;;AAC5B,YAAA;;;AAIb,CAAA;;;;"}
|
|
@@ -16,7 +16,7 @@ const useContentTypeBuilderMenu = ()=>{
|
|
|
16
16
|
const [searchValue, setSearchValue] = React.useState('');
|
|
17
17
|
const { onOpenModalCreateSchema } = useFormModalNavigation.useFormModalNavigation();
|
|
18
18
|
const { locale } = reactIntl.useIntl();
|
|
19
|
-
const {
|
|
19
|
+
const { contains } = designSystem.useFilter(locale, {
|
|
20
20
|
sensitivity: 'base'
|
|
21
21
|
});
|
|
22
22
|
const formatter = designSystem.useCollator(locale, {
|
|
@@ -116,7 +116,7 @@ const useContentTypeBuilderMenu = ()=>{
|
|
|
116
116
|
return {
|
|
117
117
|
...section,
|
|
118
118
|
links: section.links.reduce((acc, link)=>{
|
|
119
|
-
const filteredLinks = 'links' in link ? link.links.filter((link)=>
|
|
119
|
+
const filteredLinks = 'links' in link ? link.links.filter((link)=>contains(link.title, searchValue)) : [];
|
|
120
120
|
if (filteredLinks.length === 0) {
|
|
121
121
|
return acc;
|
|
122
122
|
}
|
|
@@ -130,7 +130,7 @@ const useContentTypeBuilderMenu = ()=>{
|
|
|
130
130
|
linksCount: filteredLinksCount
|
|
131
131
|
};
|
|
132
132
|
}
|
|
133
|
-
const filteredLinks = section.links.filter((link)=>
|
|
133
|
+
const filteredLinks = section.links.filter((link)=>contains(link.title, searchValue)).sort((a, b)=>formatter.compare(a.title, b.title));
|
|
134
134
|
return {
|
|
135
135
|
...section,
|
|
136
136
|
links: filteredLinks,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContentTypeBuilderMenu.js","sources":["../../../../admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\nimport { useDataManager } from '../DataManager/useDataManager';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport type { Status } from '../../types';\n\ntype Link = {\n name: string;\n to: string;\n status: Status;\n title: string;\n};\n\ntype SubSection = {\n name: string;\n title: string;\n links: Link[];\n};\n\ntype MenuSection = {\n name: string;\n title: {\n id: string;\n defaultMessage: string;\n };\n customLink?: {\n id: string;\n defaultMessage: string;\n onClick: () => void;\n };\n links: Array<SubSection | Link>;\n linksCount?: number;\n};\n\ntype Menu = MenuSection[];\n\nexport const useContentTypeBuilderMenu = () => {\n const { componentsGroupedByCategory, isInDevelopmentMode, sortedContentTypesList } =\n useDataManager();\n const { trackUsage } = useTracking();\n const [searchValue, setSearchValue] = useState('');\n const { onOpenModalCreateSchema } = useFormModalNavigation();\n const { locale } = useIntl();\n\n const { startsWith } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOpenModalCreateCollectionType = () => {\n trackUsage(`willCreateContentType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'collectionType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateSingleType = () => {\n trackUsage(`willCreateSingleType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'singleType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateComponent = () => {\n trackUsage('willCreateComponent');\n\n const nextState = {\n modalType: 'component',\n kind: null,\n actionType: 'create',\n forTarget: 'component',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const componentsData = Object.entries(componentsGroupedByCategory)\n .map(([category, components]) => ({\n name: category,\n title: upperFirst(category),\n links: components\n .map((component) => ({\n name: component.uid,\n to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,\n title: component.info.displayName,\n status: component.status,\n }))\n .sort((a, b) => formatter.compare(a.title, b.title)),\n }))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n const displayedContentTypes = sortedContentTypesList\n .filter((obj) => obj.visible)\n .map((info) => ({\n kind: info.kind,\n name: info.name,\n to: info.to,\n title: info.title,\n status: info.status,\n }));\n\n const data: Menu = [\n {\n name: 'models',\n title: {\n id: `${getTrad('menu.section.models.name')}`,\n defaultMessage: 'Collection Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.model.create')}`,\n defaultMessage: 'Create new collection type',\n onClick: handleClickOpenModalCreateCollectionType,\n }\n : undefined,\n links: displayedContentTypes.filter((contentType) => contentType.kind === 'collectionType'),\n },\n {\n name: 'singleTypes',\n title: {\n id: `${getTrad('menu.section.single-types.name')}`,\n defaultMessage: 'Single Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.single-types.create')}`,\n defaultMessage: 'Create new single type',\n onClick: handleClickOpenModalCreateSingleType,\n }\n : undefined,\n links: displayedContentTypes.filter((singleType) => singleType.kind === 'singleType'),\n },\n {\n name: 'components',\n title: {\n id: `${getTrad('menu.section.components.name')}`,\n defaultMessage: 'Components',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.component.create')}`,\n defaultMessage: 'Create a new component',\n onClick: handleClickOpenModalCreateComponent,\n }\n : undefined,\n links: componentsData,\n },\n ].map((section) => {\n const hasChild = section.links.some((l) => 'links' in l && Array.isArray(l.links));\n\n if (hasChild) {\n let filteredLinksCount = 0;\n\n return {\n ...section,\n links: section.links.reduce((acc, link) => {\n const filteredLinks =\n 'links' in link ? link.links.filter((link) => startsWith(link.title, searchValue)) : [];\n\n if (filteredLinks.length === 0) {\n return acc;\n }\n\n filteredLinksCount += filteredLinks.length;\n\n acc.push({\n ...link,\n links: filteredLinks.sort((a, b) => formatter.compare(a.title, b.title)),\n });\n\n return acc;\n }, [] as SubSection[]),\n linksCount: filteredLinksCount,\n };\n }\n\n const filteredLinks = section.links\n .filter((link) => startsWith(link.title, searchValue))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n return {\n ...section,\n links: filteredLinks,\n linksCount: filteredLinks.length,\n };\n });\n\n return {\n menu: data,\n search: {\n value: searchValue,\n onChange: setSearchValue,\n clear: () => setSearchValue(''),\n },\n };\n};\n"],"names":["useContentTypeBuilderMenu","componentsGroupedByCategory","isInDevelopmentMode","sortedContentTypesList","useDataManager","trackUsage","useTracking","searchValue","setSearchValue","useState","onOpenModalCreateSchema","useFormModalNavigation","locale","useIntl","startsWith","useFilter","sensitivity","formatter","useCollator","handleClickOpenModalCreateCollectionType","nextState","modalType","kind","actionType","forTarget","handleClickOpenModalCreateSingleType","handleClickOpenModalCreateComponent","componentsData","Object","entries","map","category","components","name","title","upperFirst","links","component","uid","to","pluginId","info","displayName","status","sort","a","b","compare","displayedContentTypes","filter","obj","visible","data","id","getTrad","defaultMessage","customLink","onClick","undefined","contentType","singleType","section","hasChild","some","l","Array","isArray","filteredLinksCount","reduce","acc","link","filteredLinks","length","push","linksCount","menu","search","value","onChange","clear"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useContentTypeBuilderMenu.js","sources":["../../../../admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\nimport { useDataManager } from '../DataManager/useDataManager';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport type { Status } from '../../types';\n\ntype Link = {\n name: string;\n to: string;\n status: Status;\n title: string;\n};\n\ntype SubSection = {\n name: string;\n title: string;\n links: Link[];\n};\n\ntype MenuSection = {\n name: string;\n title: {\n id: string;\n defaultMessage: string;\n };\n customLink?: {\n id: string;\n defaultMessage: string;\n onClick: () => void;\n };\n links: Array<SubSection | Link>;\n linksCount?: number;\n};\n\ntype Menu = MenuSection[];\n\nexport const useContentTypeBuilderMenu = () => {\n const { componentsGroupedByCategory, isInDevelopmentMode, sortedContentTypesList } =\n useDataManager();\n const { trackUsage } = useTracking();\n const [searchValue, setSearchValue] = useState('');\n const { onOpenModalCreateSchema } = useFormModalNavigation();\n const { locale } = useIntl();\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOpenModalCreateCollectionType = () => {\n trackUsage(`willCreateContentType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'collectionType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateSingleType = () => {\n trackUsage(`willCreateSingleType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'singleType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateComponent = () => {\n trackUsage('willCreateComponent');\n\n const nextState = {\n modalType: 'component',\n kind: null,\n actionType: 'create',\n forTarget: 'component',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const componentsData = Object.entries(componentsGroupedByCategory)\n .map(([category, components]) => ({\n name: category,\n title: upperFirst(category),\n links: components\n .map((component) => ({\n name: component.uid,\n to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,\n title: component.info.displayName,\n status: component.status,\n }))\n .sort((a, b) => formatter.compare(a.title, b.title)),\n }))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n const displayedContentTypes = sortedContentTypesList\n .filter((obj) => obj.visible)\n .map((info) => ({\n kind: info.kind,\n name: info.name,\n to: info.to,\n title: info.title,\n status: info.status,\n }));\n\n const data: Menu = [\n {\n name: 'models',\n title: {\n id: `${getTrad('menu.section.models.name')}`,\n defaultMessage: 'Collection Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.model.create')}`,\n defaultMessage: 'Create new collection type',\n onClick: handleClickOpenModalCreateCollectionType,\n }\n : undefined,\n links: displayedContentTypes.filter((contentType) => contentType.kind === 'collectionType'),\n },\n {\n name: 'singleTypes',\n title: {\n id: `${getTrad('menu.section.single-types.name')}`,\n defaultMessage: 'Single Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.single-types.create')}`,\n defaultMessage: 'Create new single type',\n onClick: handleClickOpenModalCreateSingleType,\n }\n : undefined,\n links: displayedContentTypes.filter((singleType) => singleType.kind === 'singleType'),\n },\n {\n name: 'components',\n title: {\n id: `${getTrad('menu.section.components.name')}`,\n defaultMessage: 'Components',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.component.create')}`,\n defaultMessage: 'Create a new component',\n onClick: handleClickOpenModalCreateComponent,\n }\n : undefined,\n links: componentsData,\n },\n ].map((section) => {\n const hasChild = section.links.some((l) => 'links' in l && Array.isArray(l.links));\n\n if (hasChild) {\n let filteredLinksCount = 0;\n\n return {\n ...section,\n links: section.links.reduce((acc, link) => {\n const filteredLinks =\n 'links' in link ? link.links.filter((link) => contains(link.title, searchValue)) : [];\n\n if (filteredLinks.length === 0) {\n return acc;\n }\n\n filteredLinksCount += filteredLinks.length;\n\n acc.push({\n ...link,\n links: filteredLinks.sort((a, b) => formatter.compare(a.title, b.title)),\n });\n\n return acc;\n }, [] as SubSection[]),\n linksCount: filteredLinksCount,\n };\n }\n\n const filteredLinks = section.links\n .filter((link) => contains(link.title, searchValue))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n return {\n ...section,\n links: filteredLinks,\n linksCount: filteredLinks.length,\n };\n });\n\n return {\n menu: data,\n search: {\n value: searchValue,\n onChange: setSearchValue,\n clear: () => setSearchValue(''),\n },\n };\n};\n"],"names":["useContentTypeBuilderMenu","componentsGroupedByCategory","isInDevelopmentMode","sortedContentTypesList","useDataManager","trackUsage","useTracking","searchValue","setSearchValue","useState","onOpenModalCreateSchema","useFormModalNavigation","locale","useIntl","contains","useFilter","sensitivity","formatter","useCollator","handleClickOpenModalCreateCollectionType","nextState","modalType","kind","actionType","forTarget","handleClickOpenModalCreateSingleType","handleClickOpenModalCreateComponent","componentsData","Object","entries","map","category","components","name","title","upperFirst","links","component","uid","to","pluginId","info","displayName","status","sort","a","b","compare","displayedContentTypes","filter","obj","visible","data","id","getTrad","defaultMessage","customLink","onClick","undefined","contentType","singleType","section","hasChild","some","l","Array","isArray","filteredLinksCount","reduce","acc","link","filteredLinks","length","push","linksCount","menu","search","value","onChange","clear"],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ const useContentTypeBuilderMenu = ()=>{
|
|
|
14
14
|
const [searchValue, setSearchValue] = useState('');
|
|
15
15
|
const { onOpenModalCreateSchema } = useFormModalNavigation();
|
|
16
16
|
const { locale } = useIntl();
|
|
17
|
-
const {
|
|
17
|
+
const { contains } = useFilter(locale, {
|
|
18
18
|
sensitivity: 'base'
|
|
19
19
|
});
|
|
20
20
|
const formatter = useCollator(locale, {
|
|
@@ -114,7 +114,7 @@ const useContentTypeBuilderMenu = ()=>{
|
|
|
114
114
|
return {
|
|
115
115
|
...section,
|
|
116
116
|
links: section.links.reduce((acc, link)=>{
|
|
117
|
-
const filteredLinks = 'links' in link ? link.links.filter((link)=>
|
|
117
|
+
const filteredLinks = 'links' in link ? link.links.filter((link)=>contains(link.title, searchValue)) : [];
|
|
118
118
|
if (filteredLinks.length === 0) {
|
|
119
119
|
return acc;
|
|
120
120
|
}
|
|
@@ -128,7 +128,7 @@ const useContentTypeBuilderMenu = ()=>{
|
|
|
128
128
|
linksCount: filteredLinksCount
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
|
-
const filteredLinks = section.links.filter((link)=>
|
|
131
|
+
const filteredLinks = section.links.filter((link)=>contains(link.title, searchValue)).sort((a, b)=>formatter.compare(a.title, b.title));
|
|
132
132
|
return {
|
|
133
133
|
...section,
|
|
134
134
|
links: filteredLinks,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContentTypeBuilderMenu.mjs","sources":["../../../../admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\nimport { useDataManager } from '../DataManager/useDataManager';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport type { Status } from '../../types';\n\ntype Link = {\n name: string;\n to: string;\n status: Status;\n title: string;\n};\n\ntype SubSection = {\n name: string;\n title: string;\n links: Link[];\n};\n\ntype MenuSection = {\n name: string;\n title: {\n id: string;\n defaultMessage: string;\n };\n customLink?: {\n id: string;\n defaultMessage: string;\n onClick: () => void;\n };\n links: Array<SubSection | Link>;\n linksCount?: number;\n};\n\ntype Menu = MenuSection[];\n\nexport const useContentTypeBuilderMenu = () => {\n const { componentsGroupedByCategory, isInDevelopmentMode, sortedContentTypesList } =\n useDataManager();\n const { trackUsage } = useTracking();\n const [searchValue, setSearchValue] = useState('');\n const { onOpenModalCreateSchema } = useFormModalNavigation();\n const { locale } = useIntl();\n\n const { startsWith } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOpenModalCreateCollectionType = () => {\n trackUsage(`willCreateContentType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'collectionType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateSingleType = () => {\n trackUsage(`willCreateSingleType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'singleType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateComponent = () => {\n trackUsage('willCreateComponent');\n\n const nextState = {\n modalType: 'component',\n kind: null,\n actionType: 'create',\n forTarget: 'component',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const componentsData = Object.entries(componentsGroupedByCategory)\n .map(([category, components]) => ({\n name: category,\n title: upperFirst(category),\n links: components\n .map((component) => ({\n name: component.uid,\n to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,\n title: component.info.displayName,\n status: component.status,\n }))\n .sort((a, b) => formatter.compare(a.title, b.title)),\n }))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n const displayedContentTypes = sortedContentTypesList\n .filter((obj) => obj.visible)\n .map((info) => ({\n kind: info.kind,\n name: info.name,\n to: info.to,\n title: info.title,\n status: info.status,\n }));\n\n const data: Menu = [\n {\n name: 'models',\n title: {\n id: `${getTrad('menu.section.models.name')}`,\n defaultMessage: 'Collection Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.model.create')}`,\n defaultMessage: 'Create new collection type',\n onClick: handleClickOpenModalCreateCollectionType,\n }\n : undefined,\n links: displayedContentTypes.filter((contentType) => contentType.kind === 'collectionType'),\n },\n {\n name: 'singleTypes',\n title: {\n id: `${getTrad('menu.section.single-types.name')}`,\n defaultMessage: 'Single Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.single-types.create')}`,\n defaultMessage: 'Create new single type',\n onClick: handleClickOpenModalCreateSingleType,\n }\n : undefined,\n links: displayedContentTypes.filter((singleType) => singleType.kind === 'singleType'),\n },\n {\n name: 'components',\n title: {\n id: `${getTrad('menu.section.components.name')}`,\n defaultMessage: 'Components',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.component.create')}`,\n defaultMessage: 'Create a new component',\n onClick: handleClickOpenModalCreateComponent,\n }\n : undefined,\n links: componentsData,\n },\n ].map((section) => {\n const hasChild = section.links.some((l) => 'links' in l && Array.isArray(l.links));\n\n if (hasChild) {\n let filteredLinksCount = 0;\n\n return {\n ...section,\n links: section.links.reduce((acc, link) => {\n const filteredLinks =\n 'links' in link ? link.links.filter((link) => startsWith(link.title, searchValue)) : [];\n\n if (filteredLinks.length === 0) {\n return acc;\n }\n\n filteredLinksCount += filteredLinks.length;\n\n acc.push({\n ...link,\n links: filteredLinks.sort((a, b) => formatter.compare(a.title, b.title)),\n });\n\n return acc;\n }, [] as SubSection[]),\n linksCount: filteredLinksCount,\n };\n }\n\n const filteredLinks = section.links\n .filter((link) => startsWith(link.title, searchValue))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n return {\n ...section,\n links: filteredLinks,\n linksCount: filteredLinks.length,\n };\n });\n\n return {\n menu: data,\n search: {\n value: searchValue,\n onChange: setSearchValue,\n clear: () => setSearchValue(''),\n },\n };\n};\n"],"names":["useContentTypeBuilderMenu","componentsGroupedByCategory","isInDevelopmentMode","sortedContentTypesList","useDataManager","trackUsage","useTracking","searchValue","setSearchValue","useState","onOpenModalCreateSchema","useFormModalNavigation","locale","useIntl","startsWith","useFilter","sensitivity","formatter","useCollator","handleClickOpenModalCreateCollectionType","nextState","modalType","kind","actionType","forTarget","handleClickOpenModalCreateSingleType","handleClickOpenModalCreateComponent","componentsData","Object","entries","map","category","components","name","title","upperFirst","links","component","uid","to","pluginId","info","displayName","status","sort","a","b","compare","displayedContentTypes","filter","obj","visible","data","id","getTrad","defaultMessage","customLink","onClick","undefined","contentType","singleType","section","hasChild","some","l","Array","isArray","filteredLinksCount","reduce","acc","link","filteredLinks","length","push","linksCount","menu","search","value","onChange","clear"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useContentTypeBuilderMenu.mjs","sources":["../../../../admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\nimport { useDataManager } from '../DataManager/useDataManager';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport type { Status } from '../../types';\n\ntype Link = {\n name: string;\n to: string;\n status: Status;\n title: string;\n};\n\ntype SubSection = {\n name: string;\n title: string;\n links: Link[];\n};\n\ntype MenuSection = {\n name: string;\n title: {\n id: string;\n defaultMessage: string;\n };\n customLink?: {\n id: string;\n defaultMessage: string;\n onClick: () => void;\n };\n links: Array<SubSection | Link>;\n linksCount?: number;\n};\n\ntype Menu = MenuSection[];\n\nexport const useContentTypeBuilderMenu = () => {\n const { componentsGroupedByCategory, isInDevelopmentMode, sortedContentTypesList } =\n useDataManager();\n const { trackUsage } = useTracking();\n const [searchValue, setSearchValue] = useState('');\n const { onOpenModalCreateSchema } = useFormModalNavigation();\n const { locale } = useIntl();\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOpenModalCreateCollectionType = () => {\n trackUsage(`willCreateContentType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'collectionType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateSingleType = () => {\n trackUsage(`willCreateSingleType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'singleType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateComponent = () => {\n trackUsage('willCreateComponent');\n\n const nextState = {\n modalType: 'component',\n kind: null,\n actionType: 'create',\n forTarget: 'component',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const componentsData = Object.entries(componentsGroupedByCategory)\n .map(([category, components]) => ({\n name: category,\n title: upperFirst(category),\n links: components\n .map((component) => ({\n name: component.uid,\n to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,\n title: component.info.displayName,\n status: component.status,\n }))\n .sort((a, b) => formatter.compare(a.title, b.title)),\n }))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n const displayedContentTypes = sortedContentTypesList\n .filter((obj) => obj.visible)\n .map((info) => ({\n kind: info.kind,\n name: info.name,\n to: info.to,\n title: info.title,\n status: info.status,\n }));\n\n const data: Menu = [\n {\n name: 'models',\n title: {\n id: `${getTrad('menu.section.models.name')}`,\n defaultMessage: 'Collection Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.model.create')}`,\n defaultMessage: 'Create new collection type',\n onClick: handleClickOpenModalCreateCollectionType,\n }\n : undefined,\n links: displayedContentTypes.filter((contentType) => contentType.kind === 'collectionType'),\n },\n {\n name: 'singleTypes',\n title: {\n id: `${getTrad('menu.section.single-types.name')}`,\n defaultMessage: 'Single Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.single-types.create')}`,\n defaultMessage: 'Create new single type',\n onClick: handleClickOpenModalCreateSingleType,\n }\n : undefined,\n links: displayedContentTypes.filter((singleType) => singleType.kind === 'singleType'),\n },\n {\n name: 'components',\n title: {\n id: `${getTrad('menu.section.components.name')}`,\n defaultMessage: 'Components',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.component.create')}`,\n defaultMessage: 'Create a new component',\n onClick: handleClickOpenModalCreateComponent,\n }\n : undefined,\n links: componentsData,\n },\n ].map((section) => {\n const hasChild = section.links.some((l) => 'links' in l && Array.isArray(l.links));\n\n if (hasChild) {\n let filteredLinksCount = 0;\n\n return {\n ...section,\n links: section.links.reduce((acc, link) => {\n const filteredLinks =\n 'links' in link ? link.links.filter((link) => contains(link.title, searchValue)) : [];\n\n if (filteredLinks.length === 0) {\n return acc;\n }\n\n filteredLinksCount += filteredLinks.length;\n\n acc.push({\n ...link,\n links: filteredLinks.sort((a, b) => formatter.compare(a.title, b.title)),\n });\n\n return acc;\n }, [] as SubSection[]),\n linksCount: filteredLinksCount,\n };\n }\n\n const filteredLinks = section.links\n .filter((link) => contains(link.title, searchValue))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n return {\n ...section,\n links: filteredLinks,\n linksCount: filteredLinks.length,\n };\n });\n\n return {\n menu: data,\n search: {\n value: searchValue,\n onChange: setSearchValue,\n clear: () => setSearchValue(''),\n },\n };\n};\n"],"names":["useContentTypeBuilderMenu","componentsGroupedByCategory","isInDevelopmentMode","sortedContentTypesList","useDataManager","trackUsage","useTracking","searchValue","setSearchValue","useState","onOpenModalCreateSchema","useFormModalNavigation","locale","useIntl","contains","useFilter","sensitivity","formatter","useCollator","handleClickOpenModalCreateCollectionType","nextState","modalType","kind","actionType","forTarget","handleClickOpenModalCreateSingleType","handleClickOpenModalCreateComponent","componentsData","Object","entries","map","category","components","name","title","upperFirst","links","component","uid","to","pluginId","info","displayName","status","sort","a","b","compare","displayedContentTypes","filter","obj","visible","data","id","getTrad","defaultMessage","customLink","onClick","undefined","contentType","singleType","section","hasChild","some","l","Array","isArray","filteredLinksCount","reduce","acc","link","filteredLinks","length","push","linksCount","menu","search","value","onChange","clear"],"mappings":"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"}
|
|
@@ -66,7 +66,9 @@ const List = ({ addComponentToDZ, firstLoopComponentUid, isFromDynamicZone = fal
|
|
|
66
66
|
});
|
|
67
67
|
const [activeId, setActiveId] = React.useState(null);
|
|
68
68
|
const isDeleted = type?.status === 'REMOVED';
|
|
69
|
-
const sensors = core.useSensors(core.useSensor(core.PointerSensor)
|
|
69
|
+
const sensors = core.useSensors(core.useSensor(core.PointerSensor), core.useSensor(core.KeyboardSensor, {
|
|
70
|
+
coordinateGetter: sortable.sortableKeyboardCoordinates
|
|
71
|
+
}));
|
|
70
72
|
function handlerDragStart({ active }) {
|
|
71
73
|
if (!active) {
|
|
72
74
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.js","sources":["../../../admin/src/components/List.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport {\n DndContext,\n closestCenter,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n} from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { tours, useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, EmptyStateLayout } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { createPortal } from 'react-dom';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeRow, type AttributeRowProps } from './AttributeRow';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { NestedTFooter, TFooter } from './Footers';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\n\nimport type { Component, ContentType } from '../types';\nimport type { UID } from '@strapi/types';\n\nexport const ListGrid = styled(Box)`\n white-space: nowrap;\n list-style: none;\n list-style-type: none;\n`;\n\ntype ListProps = {\n addComponentToDZ?: () => void;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n isMain?: boolean;\n secondLoopComponentUid?: UID.Component | null;\n isSub?: boolean;\n type: ContentType | Component;\n};\n\nconst SortableRow = (props: AttributeRowProps) => {\n const { isInDevelopmentMode } = useDataManager();\n\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n setActivatorNodeRef,\n } = useSortable({\n disabled:\n !isInDevelopmentMode || props.item.status === 'REMOVED' || props.type.status === 'REMOVED',\n id: props.item.id,\n data: { index: props.item.index },\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n };\n\n return (\n <AttributeRow\n ref={setNodeRef}\n handleRef={setActivatorNodeRef}\n isDragging={isDragging}\n attributes={attributes}\n listeners={listeners}\n style={style}\n {...props}\n />\n );\n};\n\nexport const List = ({\n addComponentToDZ,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isSub = false,\n secondLoopComponentUid,\n type,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { isInDevelopmentMode, moveAttribute } = useDataManager();\n const { onOpenModalAddField } = useFormModalNavigation();\n\n const items = type?.attributes.map((item, index) => {\n return {\n id: `${type.uid}_${item.name}`,\n index,\n ...item,\n };\n });\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const isDeleted = type?.status === 'REMOVED';\n\n const sensors = useSensors(useSensor(PointerSensor));\n\n function handlerDragStart({ active }: DragStartEvent) {\n if (!active) {\n return;\n }\n\n setActiveId(active.id);\n }\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (over) {\n if (active.id !== over.id) {\n moveAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n from: active.data.current!.index,\n to: over.data.current!.index,\n });\n }\n }\n }\n\n const activeItem = items.find((item) => item.id === activeId);\n\n const onClickAddField = () => {\n if (isDeleted) {\n return;\n }\n\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: type?.modelType, targetUid: type.uid });\n };\n\n if (type?.attributes.length === 0 && isMain) {\n return (\n <EmptyStateLayout\n action={\n <tours.contentTypeBuilder.AddFields>\n <Button onClick={onClickAddField} size=\"L\" startIcon={<Plus />} variant=\"secondary\">\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n </tours.contentTypeBuilder.AddFields>\n }\n content={formatMessage(\n type.modelType === 'contentType'\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handlerDragStart}\n onDragCancel={() => setActiveId(null)}\n modifiers={[restrictToVerticalAxis]}\n >\n <ListGrid tag=\"ul\">\n {createPortal(\n <DragOverlay zIndex={10}>\n {activeItem && (\n <AttributeRow\n isOverlay\n item={activeItem}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n )}\n </DragOverlay>,\n document.body\n )}\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item) => {\n return (\n <SortableRow\n key={item.id}\n item={item}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n );\n })}\n </SortableContext>\n </ListGrid>\n\n {isMain && isInDevelopmentMode && (\n <TFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isDeleted ? 'neutral' : 'primary'}\n >\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${type.modelType === 'component' ? 'component' : type.kind}`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && (\n <NestedTFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone && !isDeleted ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </DndContext>\n );\n};\n"],"names":["ListGrid","styled","Box","SortableRow","props","isInDevelopmentMode","useDataManager","isDragging","attributes","listeners","setNodeRef","transform","transition","setActivatorNodeRef","useSortable","disabled","item","status","type","id","data","index","style","CSS","Transform","toString","x","y","scaleX","scaleY","_jsx","AttributeRow","ref","handleRef","List","addComponentToDZ","firstLoopComponentUid","isFromDynamicZone","isMain","isSub","secondLoopComponentUid","formatMessage","useIntl","trackUsage","useTracking","moveAttribute","onOpenModalAddField","useFormModalNavigation","items","map","uid","name","activeId","setActiveId","useState","isDeleted","sensors","useSensors","useSensor","PointerSensor","handlerDragStart","active","handleDragEnd","event","over","forTarget","modelType","targetUid","from","current","to","activeItem","find","onClickAddField","length","EmptyStateLayout","action","tours","contentTypeBuilder","AddFields","Button","onClick","size","startIcon","Plus","variant","getTrad","defaultMessage","content","hasRadius","icon","EmptyDocuments","width","_jsxs","DndContext","collisionDetection","closestCenter","onDragEnd","onDragStart","onDragCancel","modifiers","restrictToVerticalAxis","tag","createPortal","DragOverlay","zIndex","isOverlay","document","body","SortableContext","strategy","verticalListSortingStrategy","TFooter","cursor","color","kind","NestedTFooter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"List.js","sources":["../../../admin/src/components/List.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n} from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport {\n SortableContext,\n verticalListSortingStrategy,\n useSortable,\n sortableKeyboardCoordinates,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { tours, useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, EmptyStateLayout } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { createPortal } from 'react-dom';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeRow, type AttributeRowProps } from './AttributeRow';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { NestedTFooter, TFooter } from './Footers';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\n\nimport type { Component, ContentType } from '../types';\nimport type { UID } from '@strapi/types';\n\nexport const ListGrid = styled(Box)`\n white-space: nowrap;\n list-style: none;\n list-style-type: none;\n`;\n\ntype ListProps = {\n addComponentToDZ?: () => void;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n isMain?: boolean;\n secondLoopComponentUid?: UID.Component | null;\n isSub?: boolean;\n type: ContentType | Component;\n};\n\nconst SortableRow = (props: AttributeRowProps) => {\n const { isInDevelopmentMode } = useDataManager();\n\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n setActivatorNodeRef,\n } = useSortable({\n disabled:\n !isInDevelopmentMode || props.item.status === 'REMOVED' || props.type.status === 'REMOVED',\n id: props.item.id,\n data: { index: props.item.index },\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n };\n\n return (\n <AttributeRow\n ref={setNodeRef}\n handleRef={setActivatorNodeRef}\n isDragging={isDragging}\n attributes={attributes}\n listeners={listeners}\n style={style}\n {...props}\n />\n );\n};\n\nexport const List = ({\n addComponentToDZ,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isSub = false,\n secondLoopComponentUid,\n type,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { isInDevelopmentMode, moveAttribute } = useDataManager();\n const { onOpenModalAddField } = useFormModalNavigation();\n\n const items = type?.attributes.map((item, index) => {\n return {\n id: `${type.uid}_${item.name}`,\n index,\n ...item,\n };\n });\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const isDeleted = type?.status === 'REMOVED';\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n function handlerDragStart({ active }: DragStartEvent) {\n if (!active) {\n return;\n }\n\n setActiveId(active.id);\n }\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (over) {\n if (active.id !== over.id) {\n moveAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n from: active.data.current!.index,\n to: over.data.current!.index,\n });\n }\n }\n }\n\n const activeItem = items.find((item) => item.id === activeId);\n\n const onClickAddField = () => {\n if (isDeleted) {\n return;\n }\n\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: type?.modelType, targetUid: type.uid });\n };\n\n if (type?.attributes.length === 0 && isMain) {\n return (\n <EmptyStateLayout\n action={\n <tours.contentTypeBuilder.AddFields>\n <Button onClick={onClickAddField} size=\"L\" startIcon={<Plus />} variant=\"secondary\">\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n </tours.contentTypeBuilder.AddFields>\n }\n content={formatMessage(\n type.modelType === 'contentType'\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handlerDragStart}\n onDragCancel={() => setActiveId(null)}\n modifiers={[restrictToVerticalAxis]}\n >\n <ListGrid tag=\"ul\">\n {createPortal(\n <DragOverlay zIndex={10}>\n {activeItem && (\n <AttributeRow\n isOverlay\n item={activeItem}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n )}\n </DragOverlay>,\n document.body\n )}\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item) => {\n return (\n <SortableRow\n key={item.id}\n item={item}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n );\n })}\n </SortableContext>\n </ListGrid>\n\n {isMain && isInDevelopmentMode && (\n <TFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isDeleted ? 'neutral' : 'primary'}\n >\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${type.modelType === 'component' ? 'component' : type.kind}`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && (\n <NestedTFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone && !isDeleted ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </DndContext>\n );\n};\n"],"names":["ListGrid","styled","Box","SortableRow","props","isInDevelopmentMode","useDataManager","isDragging","attributes","listeners","setNodeRef","transform","transition","setActivatorNodeRef","useSortable","disabled","item","status","type","id","data","index","style","CSS","Transform","toString","x","y","scaleX","scaleY","_jsx","AttributeRow","ref","handleRef","List","addComponentToDZ","firstLoopComponentUid","isFromDynamicZone","isMain","isSub","secondLoopComponentUid","formatMessage","useIntl","trackUsage","useTracking","moveAttribute","onOpenModalAddField","useFormModalNavigation","items","map","uid","name","activeId","setActiveId","useState","isDeleted","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","coordinateGetter","sortableKeyboardCoordinates","handlerDragStart","active","handleDragEnd","event","over","forTarget","modelType","targetUid","from","current","to","activeItem","find","onClickAddField","length","EmptyStateLayout","action","tours","contentTypeBuilder","AddFields","Button","onClick","size","startIcon","Plus","variant","getTrad","defaultMessage","content","hasRadius","icon","EmptyDocuments","width","_jsxs","DndContext","collisionDetection","closestCenter","onDragEnd","onDragStart","onDragCancel","modifiers","restrictToVerticalAxis","tag","createPortal","DragOverlay","zIndex","isOverlay","document","body","SortableContext","strategy","verticalListSortingStrategy","TFooter","cursor","color","kind","NestedTFooter"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
-
import { useSensors, useSensor, PointerSensor, DndContext, closestCenter, DragOverlay } from '@dnd-kit/core';
|
|
3
|
+
import { useSensors, useSensor, PointerSensor, KeyboardSensor, DndContext, closestCenter, DragOverlay } from '@dnd-kit/core';
|
|
4
4
|
import { restrictToVerticalAxis } from '@dnd-kit/modifiers';
|
|
5
|
-
import { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable';
|
|
5
|
+
import { sortableKeyboardCoordinates, SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable';
|
|
6
6
|
import { CSS } from '@dnd-kit/utilities';
|
|
7
7
|
import { useTracking, tours } from '@strapi/admin/strapi-admin';
|
|
8
8
|
import { Box, EmptyStateLayout, Button } from '@strapi/design-system';
|
|
@@ -64,7 +64,9 @@ const List = ({ addComponentToDZ, firstLoopComponentUid, isFromDynamicZone = fal
|
|
|
64
64
|
});
|
|
65
65
|
const [activeId, setActiveId] = useState(null);
|
|
66
66
|
const isDeleted = type?.status === 'REMOVED';
|
|
67
|
-
const sensors = useSensors(useSensor(PointerSensor)
|
|
67
|
+
const sensors = useSensors(useSensor(PointerSensor), useSensor(KeyboardSensor, {
|
|
68
|
+
coordinateGetter: sortableKeyboardCoordinates
|
|
69
|
+
}));
|
|
68
70
|
function handlerDragStart({ active }) {
|
|
69
71
|
if (!active) {
|
|
70
72
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.mjs","sources":["../../../admin/src/components/List.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport {\n DndContext,\n closestCenter,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n} from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { tours, useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, EmptyStateLayout } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { createPortal } from 'react-dom';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeRow, type AttributeRowProps } from './AttributeRow';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { NestedTFooter, TFooter } from './Footers';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\n\nimport type { Component, ContentType } from '../types';\nimport type { UID } from '@strapi/types';\n\nexport const ListGrid = styled(Box)`\n white-space: nowrap;\n list-style: none;\n list-style-type: none;\n`;\n\ntype ListProps = {\n addComponentToDZ?: () => void;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n isMain?: boolean;\n secondLoopComponentUid?: UID.Component | null;\n isSub?: boolean;\n type: ContentType | Component;\n};\n\nconst SortableRow = (props: AttributeRowProps) => {\n const { isInDevelopmentMode } = useDataManager();\n\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n setActivatorNodeRef,\n } = useSortable({\n disabled:\n !isInDevelopmentMode || props.item.status === 'REMOVED' || props.type.status === 'REMOVED',\n id: props.item.id,\n data: { index: props.item.index },\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n };\n\n return (\n <AttributeRow\n ref={setNodeRef}\n handleRef={setActivatorNodeRef}\n isDragging={isDragging}\n attributes={attributes}\n listeners={listeners}\n style={style}\n {...props}\n />\n );\n};\n\nexport const List = ({\n addComponentToDZ,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isSub = false,\n secondLoopComponentUid,\n type,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { isInDevelopmentMode, moveAttribute } = useDataManager();\n const { onOpenModalAddField } = useFormModalNavigation();\n\n const items = type?.attributes.map((item, index) => {\n return {\n id: `${type.uid}_${item.name}`,\n index,\n ...item,\n };\n });\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const isDeleted = type?.status === 'REMOVED';\n\n const sensors = useSensors(useSensor(PointerSensor));\n\n function handlerDragStart({ active }: DragStartEvent) {\n if (!active) {\n return;\n }\n\n setActiveId(active.id);\n }\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (over) {\n if (active.id !== over.id) {\n moveAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n from: active.data.current!.index,\n to: over.data.current!.index,\n });\n }\n }\n }\n\n const activeItem = items.find((item) => item.id === activeId);\n\n const onClickAddField = () => {\n if (isDeleted) {\n return;\n }\n\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: type?.modelType, targetUid: type.uid });\n };\n\n if (type?.attributes.length === 0 && isMain) {\n return (\n <EmptyStateLayout\n action={\n <tours.contentTypeBuilder.AddFields>\n <Button onClick={onClickAddField} size=\"L\" startIcon={<Plus />} variant=\"secondary\">\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n </tours.contentTypeBuilder.AddFields>\n }\n content={formatMessage(\n type.modelType === 'contentType'\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handlerDragStart}\n onDragCancel={() => setActiveId(null)}\n modifiers={[restrictToVerticalAxis]}\n >\n <ListGrid tag=\"ul\">\n {createPortal(\n <DragOverlay zIndex={10}>\n {activeItem && (\n <AttributeRow\n isOverlay\n item={activeItem}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n )}\n </DragOverlay>,\n document.body\n )}\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item) => {\n return (\n <SortableRow\n key={item.id}\n item={item}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n );\n })}\n </SortableContext>\n </ListGrid>\n\n {isMain && isInDevelopmentMode && (\n <TFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isDeleted ? 'neutral' : 'primary'}\n >\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${type.modelType === 'component' ? 'component' : type.kind}`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && (\n <NestedTFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone && !isDeleted ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </DndContext>\n );\n};\n"],"names":["ListGrid","styled","Box","SortableRow","props","isInDevelopmentMode","useDataManager","isDragging","attributes","listeners","setNodeRef","transform","transition","setActivatorNodeRef","useSortable","disabled","item","status","type","id","data","index","style","CSS","Transform","toString","x","y","scaleX","scaleY","_jsx","AttributeRow","ref","handleRef","List","addComponentToDZ","firstLoopComponentUid","isFromDynamicZone","isMain","isSub","secondLoopComponentUid","formatMessage","useIntl","trackUsage","useTracking","moveAttribute","onOpenModalAddField","useFormModalNavigation","items","map","uid","name","activeId","setActiveId","useState","isDeleted","sensors","useSensors","useSensor","PointerSensor","handlerDragStart","active","handleDragEnd","event","over","forTarget","modelType","targetUid","from","current","to","activeItem","find","onClickAddField","length","EmptyStateLayout","action","tours","contentTypeBuilder","AddFields","Button","onClick","size","startIcon","Plus","variant","getTrad","defaultMessage","content","hasRadius","icon","EmptyDocuments","width","_jsxs","DndContext","collisionDetection","closestCenter","onDragEnd","onDragStart","onDragCancel","modifiers","restrictToVerticalAxis","tag","createPortal","DragOverlay","zIndex","isOverlay","document","body","SortableContext","strategy","verticalListSortingStrategy","TFooter","cursor","color","kind","NestedTFooter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"List.mjs","sources":["../../../admin/src/components/List.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n} from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport {\n SortableContext,\n verticalListSortingStrategy,\n useSortable,\n sortableKeyboardCoordinates,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { tours, useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, EmptyStateLayout } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { createPortal } from 'react-dom';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeRow, type AttributeRowProps } from './AttributeRow';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { NestedTFooter, TFooter } from './Footers';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\n\nimport type { Component, ContentType } from '../types';\nimport type { UID } from '@strapi/types';\n\nexport const ListGrid = styled(Box)`\n white-space: nowrap;\n list-style: none;\n list-style-type: none;\n`;\n\ntype ListProps = {\n addComponentToDZ?: () => void;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n isMain?: boolean;\n secondLoopComponentUid?: UID.Component | null;\n isSub?: boolean;\n type: ContentType | Component;\n};\n\nconst SortableRow = (props: AttributeRowProps) => {\n const { isInDevelopmentMode } = useDataManager();\n\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n setActivatorNodeRef,\n } = useSortable({\n disabled:\n !isInDevelopmentMode || props.item.status === 'REMOVED' || props.type.status === 'REMOVED',\n id: props.item.id,\n data: { index: props.item.index },\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n };\n\n return (\n <AttributeRow\n ref={setNodeRef}\n handleRef={setActivatorNodeRef}\n isDragging={isDragging}\n attributes={attributes}\n listeners={listeners}\n style={style}\n {...props}\n />\n );\n};\n\nexport const List = ({\n addComponentToDZ,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isSub = false,\n secondLoopComponentUid,\n type,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { isInDevelopmentMode, moveAttribute } = useDataManager();\n const { onOpenModalAddField } = useFormModalNavigation();\n\n const items = type?.attributes.map((item, index) => {\n return {\n id: `${type.uid}_${item.name}`,\n index,\n ...item,\n };\n });\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const isDeleted = type?.status === 'REMOVED';\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n function handlerDragStart({ active }: DragStartEvent) {\n if (!active) {\n return;\n }\n\n setActiveId(active.id);\n }\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (over) {\n if (active.id !== over.id) {\n moveAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n from: active.data.current!.index,\n to: over.data.current!.index,\n });\n }\n }\n }\n\n const activeItem = items.find((item) => item.id === activeId);\n\n const onClickAddField = () => {\n if (isDeleted) {\n return;\n }\n\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: type?.modelType, targetUid: type.uid });\n };\n\n if (type?.attributes.length === 0 && isMain) {\n return (\n <EmptyStateLayout\n action={\n <tours.contentTypeBuilder.AddFields>\n <Button onClick={onClickAddField} size=\"L\" startIcon={<Plus />} variant=\"secondary\">\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n </tours.contentTypeBuilder.AddFields>\n }\n content={formatMessage(\n type.modelType === 'contentType'\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handlerDragStart}\n onDragCancel={() => setActiveId(null)}\n modifiers={[restrictToVerticalAxis]}\n >\n <ListGrid tag=\"ul\">\n {createPortal(\n <DragOverlay zIndex={10}>\n {activeItem && (\n <AttributeRow\n isOverlay\n item={activeItem}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n )}\n </DragOverlay>,\n document.body\n )}\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item) => {\n return (\n <SortableRow\n key={item.id}\n item={item}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n );\n })}\n </SortableContext>\n </ListGrid>\n\n {isMain && isInDevelopmentMode && (\n <TFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isDeleted ? 'neutral' : 'primary'}\n >\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${type.modelType === 'component' ? 'component' : type.kind}`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && (\n <NestedTFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone && !isDeleted ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </DndContext>\n );\n};\n"],"names":["ListGrid","styled","Box","SortableRow","props","isInDevelopmentMode","useDataManager","isDragging","attributes","listeners","setNodeRef","transform","transition","setActivatorNodeRef","useSortable","disabled","item","status","type","id","data","index","style","CSS","Transform","toString","x","y","scaleX","scaleY","_jsx","AttributeRow","ref","handleRef","List","addComponentToDZ","firstLoopComponentUid","isFromDynamicZone","isMain","isSub","secondLoopComponentUid","formatMessage","useIntl","trackUsage","useTracking","moveAttribute","onOpenModalAddField","useFormModalNavigation","items","map","uid","name","activeId","setActiveId","useState","isDeleted","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","coordinateGetter","sortableKeyboardCoordinates","handlerDragStart","active","handleDragEnd","event","over","forTarget","modelType","targetUid","from","current","to","activeItem","find","onClickAddField","length","EmptyStateLayout","action","tours","contentTypeBuilder","AddFields","Button","onClick","size","startIcon","Plus","variant","getTrad","defaultMessage","content","hasRadius","icon","EmptyDocuments","width","_jsxs","DndContext","collisionDetection","closestCenter","onDragEnd","onDragStart","onDragCancel","modifiers","restrictToVerticalAxis","tag","createPortal","DragOverlay","zIndex","isOverlay","document","body","SortableContext","strategy","verticalListSortingStrategy","TFooter","cursor","color","kind","NestedTFooter"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/content-type-builder",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.29.0",
|
|
4
4
|
"description": "Create and manage content types",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -68,9 +68,9 @@
|
|
|
68
68
|
"@reduxjs/toolkit": "1.9.7",
|
|
69
69
|
"@sindresorhus/slugify": "1.1.0",
|
|
70
70
|
"@strapi/design-system": "2.0.0-rc.30",
|
|
71
|
-
"@strapi/generators": "5.
|
|
71
|
+
"@strapi/generators": "5.29.0",
|
|
72
72
|
"@strapi/icons": "2.0.0-rc.30",
|
|
73
|
-
"@strapi/utils": "5.
|
|
73
|
+
"@strapi/utils": "5.29.0",
|
|
74
74
|
"ai": "5.0.26",
|
|
75
75
|
"date-fns": "2.30.0",
|
|
76
76
|
"fs-extra": "11.2.0",
|
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
"zod": "3.25.67"
|
|
89
89
|
},
|
|
90
90
|
"devDependencies": {
|
|
91
|
-
"@strapi/admin": "5.
|
|
92
|
-
"@strapi/types": "5.
|
|
91
|
+
"@strapi/admin": "5.29.0",
|
|
92
|
+
"@strapi/types": "5.29.0",
|
|
93
93
|
"@testing-library/dom": "10.1.0",
|
|
94
94
|
"@testing-library/react": "15.0.7",
|
|
95
95
|
"@testing-library/user-event": "14.5.2",
|