@strapi/content-type-builder 5.16.1 → 5.17.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/ApplyConditionButton.js +34 -0
- package/dist/admin/components/ApplyConditionButton.js.map +1 -0
- package/dist/admin/components/ApplyConditionButton.mjs +32 -0
- package/dist/admin/components/ApplyConditionButton.mjs.map +1 -0
- package/dist/admin/components/AttributeRow.js +58 -8
- package/dist/admin/components/AttributeRow.js.map +1 -1
- package/dist/admin/components/AttributeRow.mjs +59 -9
- package/dist/admin/components/AttributeRow.mjs.map +1 -1
- package/dist/admin/components/FormModal/FormModal.js +134 -3
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs +137 -5
- package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.js +448 -0
- package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -0
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +428 -0
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -0
- package/dist/admin/components/FormModal/attributes/advancedForm.js +55 -16
- package/dist/admin/components/FormModal/attributes/advancedForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/advancedForm.mjs +55 -16
- package/dist/admin/components/FormModal/attributes/advancedForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.js +3 -1
- package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs +3 -1
- package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
- package/dist/admin/components/GenericInputs.js +5 -2
- package/dist/admin/components/GenericInputs.js.map +1 -1
- package/dist/admin/components/GenericInputs.mjs +5 -2
- package/dist/admin/components/GenericInputs.mjs.map +1 -1
- package/dist/admin/components/TabForm.js +88 -0
- package/dist/admin/components/TabForm.js.map +1 -1
- package/dist/admin/components/TabForm.mjs +89 -1
- package/dist/admin/components/TabForm.mjs.map +1 -1
- package/dist/admin/src/components/ApplyConditionButton.d.ts +8 -0
- package/dist/admin/src/components/FormModal/attributes/ConditionForm.d.ts +23 -0
- package/dist/admin/src/components/FormModal/attributes/advancedForm.d.ts +288 -8
- package/dist/admin/src/components/FormModal/attributes/form.d.ts +288 -8
- package/dist/admin/src/components/GenericInputs.d.ts +30 -3
- package/dist/admin/src/utils/conditions.d.ts +17 -0
- package/dist/admin/translations/en.json.js +24 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +24 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/conditions.js +61 -0
- package/dist/admin/utils/conditions.js.map +1 -0
- package/dist/admin/utils/conditions.mjs +57 -0
- package/dist/admin/utils/conditions.mjs.map +1 -0
- package/dist/server/controllers/validation/schema.js +11 -2
- package/dist/server/controllers/validation/schema.js.map +1 -1
- package/dist/server/controllers/validation/schema.mjs +11 -2
- package/dist/server/controllers/validation/schema.mjs.map +1 -1
- package/dist/server/src/controllers/validation/schema.d.ts +25728 -0
- package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
- package/dist/server/src/services/schema.d.ts +1302 -0
- package/dist/server/src/services/schema.d.ts.map +1 -1
- package/dist/server/src/utils/attributes.d.ts +210 -0
- package/dist/server/src/utils/attributes.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var designSystem = require('@strapi/design-system');
|
|
5
|
+
var reactIntl = require('react-intl');
|
|
6
|
+
|
|
7
|
+
const ApplyConditionButton = ({ disabled, tooltipMessage, onClick, marginTop = 4 })=>{
|
|
8
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
9
|
+
const button = /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
10
|
+
marginTop: marginTop,
|
|
11
|
+
fullWidth: true,
|
|
12
|
+
variant: "secondary",
|
|
13
|
+
disabled: disabled,
|
|
14
|
+
onClick: onClick,
|
|
15
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx("span", {
|
|
16
|
+
"aria-hidden": true,
|
|
17
|
+
children: "+"
|
|
18
|
+
}),
|
|
19
|
+
children: formatMessage({
|
|
20
|
+
id: 'form.attribute.condition.apply',
|
|
21
|
+
defaultMessage: 'Apply condition'
|
|
22
|
+
})
|
|
23
|
+
});
|
|
24
|
+
if (tooltipMessage) {
|
|
25
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
|
|
26
|
+
description: tooltipMessage,
|
|
27
|
+
children: button
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return button;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
exports.ApplyConditionButton = ApplyConditionButton;
|
|
34
|
+
//# sourceMappingURL=ApplyConditionButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplyConditionButton.js","sources":["../../../admin/src/components/ApplyConditionButton.tsx"],"sourcesContent":["import { Button, Tooltip } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface ApplyConditionButtonProps {\n disabled?: boolean;\n tooltipMessage?: string;\n onClick?: () => void;\n marginTop?: number;\n}\n\nexport const ApplyConditionButton = ({\n disabled,\n tooltipMessage,\n onClick,\n marginTop = 4,\n}: ApplyConditionButtonProps) => {\n const { formatMessage } = useIntl();\n\n const button = (\n <Button\n marginTop={marginTop}\n fullWidth={true}\n variant=\"secondary\"\n disabled={disabled}\n onClick={onClick}\n startIcon={<span aria-hidden>+</span>}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n );\n\n if (tooltipMessage) {\n return <Tooltip description={tooltipMessage}>{button}</Tooltip>;\n }\n\n return button;\n};\n"],"names":["ApplyConditionButton","disabled","tooltipMessage","onClick","marginTop","formatMessage","useIntl","button","_jsx","Button","fullWidth","variant","startIcon","span","aria-hidden","id","defaultMessage","Tooltip","description"],"mappings":";;;;;;AAUaA,MAAAA,oBAAAA,GAAuB,CAAC,EACnCC,QAAQ,EACRC,cAAc,EACdC,OAAO,EACPC,SAAY,GAAA,CAAC,EACa,GAAA;IAC1B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAMC,uBACJC,cAACC,CAAAA,mBAAAA,EAAAA;QACCL,SAAWA,EAAAA,SAAAA;QACXM,SAAW,EAAA,IAAA;QACXC,OAAQ,EAAA,WAAA;QACRV,QAAUA,EAAAA,QAAAA;QACVE,OAASA,EAAAA,OAAAA;AACTS,QAAAA,SAAAA,gBAAWJ,cAACK,CAAAA,MAAAA,EAAAA;YAAKC,aAAW,EAAA,IAAA;AAAC,YAAA,QAAA,EAAA;;kBAE5BT,aAAc,CAAA;YACbU,EAAI,EAAA,gCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;;AAIJ,IAAA,IAAId,cAAgB,EAAA;AAClB,QAAA,qBAAOM,cAACS,CAAAA,oBAAAA,EAAAA;YAAQC,WAAahB,EAAAA,cAAAA;AAAiBK,YAAAA,QAAAA,EAAAA;;AAChD;IAEA,OAAOA,MAAAA;AACT;;;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Button, Tooltip } from '@strapi/design-system';
|
|
3
|
+
import { useIntl } from 'react-intl';
|
|
4
|
+
|
|
5
|
+
const ApplyConditionButton = ({ disabled, tooltipMessage, onClick, marginTop = 4 })=>{
|
|
6
|
+
const { formatMessage } = useIntl();
|
|
7
|
+
const button = /*#__PURE__*/ jsx(Button, {
|
|
8
|
+
marginTop: marginTop,
|
|
9
|
+
fullWidth: true,
|
|
10
|
+
variant: "secondary",
|
|
11
|
+
disabled: disabled,
|
|
12
|
+
onClick: onClick,
|
|
13
|
+
startIcon: /*#__PURE__*/ jsx("span", {
|
|
14
|
+
"aria-hidden": true,
|
|
15
|
+
children: "+"
|
|
16
|
+
}),
|
|
17
|
+
children: formatMessage({
|
|
18
|
+
id: 'form.attribute.condition.apply',
|
|
19
|
+
defaultMessage: 'Apply condition'
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
if (tooltipMessage) {
|
|
23
|
+
return /*#__PURE__*/ jsx(Tooltip, {
|
|
24
|
+
description: tooltipMessage,
|
|
25
|
+
children: button
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return button;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export { ApplyConditionButton };
|
|
32
|
+
//# sourceMappingURL=ApplyConditionButton.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplyConditionButton.mjs","sources":["../../../admin/src/components/ApplyConditionButton.tsx"],"sourcesContent":["import { Button, Tooltip } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface ApplyConditionButtonProps {\n disabled?: boolean;\n tooltipMessage?: string;\n onClick?: () => void;\n marginTop?: number;\n}\n\nexport const ApplyConditionButton = ({\n disabled,\n tooltipMessage,\n onClick,\n marginTop = 4,\n}: ApplyConditionButtonProps) => {\n const { formatMessage } = useIntl();\n\n const button = (\n <Button\n marginTop={marginTop}\n fullWidth={true}\n variant=\"secondary\"\n disabled={disabled}\n onClick={onClick}\n startIcon={<span aria-hidden>+</span>}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n );\n\n if (tooltipMessage) {\n return <Tooltip description={tooltipMessage}>{button}</Tooltip>;\n }\n\n return button;\n};\n"],"names":["ApplyConditionButton","disabled","tooltipMessage","onClick","marginTop","formatMessage","useIntl","button","_jsx","Button","fullWidth","variant","startIcon","span","aria-hidden","id","defaultMessage","Tooltip","description"],"mappings":";;;;AAUaA,MAAAA,oBAAAA,GAAuB,CAAC,EACnCC,QAAQ,EACRC,cAAc,EACdC,OAAO,EACPC,SAAY,GAAA,CAAC,EACa,GAAA;IAC1B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,MAAMC,uBACJC,GAACC,CAAAA,MAAAA,EAAAA;QACCL,SAAWA,EAAAA,SAAAA;QACXM,SAAW,EAAA,IAAA;QACXC,OAAQ,EAAA,WAAA;QACRV,QAAUA,EAAAA,QAAAA;QACVE,OAASA,EAAAA,OAAAA;AACTS,QAAAA,SAAAA,gBAAWJ,GAACK,CAAAA,MAAAA,EAAAA;YAAKC,aAAW,EAAA,IAAA;AAAC,YAAA,QAAA,EAAA;;kBAE5BT,aAAc,CAAA;YACbU,EAAI,EAAA,gCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;;AAIJ,IAAA,IAAId,cAAgB,EAAA;AAClB,QAAA,qBAAOM,GAACS,CAAAA,OAAAA,EAAAA;YAAQC,WAAahB,EAAAA,cAAAA;AAAiBK,YAAAA,QAAAA,EAAAA;;AAChD;IAEA,OAAOA,MAAAA;AACT;;;;"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var React = require('react');
|
|
5
|
+
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
5
6
|
var designSystem = require('@strapi/design-system');
|
|
6
7
|
var Icons = require('@strapi/icons');
|
|
7
8
|
var get = require('lodash/get');
|
|
@@ -10,6 +11,7 @@ var reactIntl = require('react-intl');
|
|
|
10
11
|
var reactRouterDom = require('react-router-dom');
|
|
11
12
|
var styledComponents = require('styled-components');
|
|
12
13
|
var Curve = require('../icons/Curve.js');
|
|
14
|
+
var conditions = require('../utils/conditions.js');
|
|
13
15
|
var getAttributeDisplayedType = require('../utils/getAttributeDisplayedType.js');
|
|
14
16
|
var getRelationType = require('../utils/getRelationType.js');
|
|
15
17
|
var getTrad = require('../utils/getTrad.js');
|
|
@@ -59,6 +61,7 @@ const MemoizedRow = /*#__PURE__*/ React.memo((props)=>{
|
|
|
59
61
|
const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager.useDataManager();
|
|
60
62
|
const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation.useFormModalNavigation();
|
|
61
63
|
const { formatMessage } = reactIntl.useIntl();
|
|
64
|
+
const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);
|
|
62
65
|
const isDeleted = item.status === 'REMOVED';
|
|
63
66
|
const isMorph = item.type === 'relation' && item.relation.includes('morph');
|
|
64
67
|
const ico = [
|
|
@@ -70,6 +73,30 @@ const MemoizedRow = /*#__PURE__*/ React.memo((props)=>{
|
|
|
70
73
|
const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;
|
|
71
74
|
const isPluginContentType = get(targetContentType, 'plugin');
|
|
72
75
|
const src = 'target' in item && item.target ? 'relation' : ico;
|
|
76
|
+
const handleDelete = (e)=>{
|
|
77
|
+
e.stopPropagation();
|
|
78
|
+
const dependentRows = conditions.checkDependentRows(contentTypes, item.name);
|
|
79
|
+
if (dependentRows.length > 0) {
|
|
80
|
+
setShowConfirmDialog(true);
|
|
81
|
+
} else {
|
|
82
|
+
removeAttribute({
|
|
83
|
+
forTarget: type.modelType,
|
|
84
|
+
targetUid: type.uid,
|
|
85
|
+
attributeToRemoveName: item.name
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const handleConfirmDelete = ()=>{
|
|
90
|
+
removeAttribute({
|
|
91
|
+
forTarget: type.modelType,
|
|
92
|
+
targetUid: type.uid,
|
|
93
|
+
attributeToRemoveName: item.name
|
|
94
|
+
});
|
|
95
|
+
setShowConfirmDialog(false);
|
|
96
|
+
};
|
|
97
|
+
const handleCancelDelete = ()=>{
|
|
98
|
+
setShowConfirmDialog(false);
|
|
99
|
+
};
|
|
73
100
|
const handleClick = ()=>{
|
|
74
101
|
if (isMorph) {
|
|
75
102
|
return;
|
|
@@ -177,6 +204,10 @@ const MemoizedRow = /*#__PURE__*/ React.memo((props)=>{
|
|
|
177
204
|
repeatable: 'repeatable' in item && item.repeatable,
|
|
178
205
|
multiple: 'multiple' in item && item.multiple
|
|
179
206
|
}),
|
|
207
|
+
'conditions' in item && item.conditions && Object.keys(item.conditions).length > 0 && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Badge, {
|
|
208
|
+
margin: 4,
|
|
209
|
+
children: "conditional"
|
|
210
|
+
}),
|
|
180
211
|
item.type === 'relation' && /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
181
212
|
children: [
|
|
182
213
|
" (",
|
|
@@ -263,14 +294,7 @@ const MemoizedRow = /*#__PURE__*/ React.memo((props)=>{
|
|
|
263
294
|
children: /*#__PURE__*/ jsxRuntime.jsx(Icons.Pencil, {})
|
|
264
295
|
}),
|
|
265
296
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
|
|
266
|
-
onClick:
|
|
267
|
-
e.stopPropagation();
|
|
268
|
-
removeAttribute({
|
|
269
|
-
forTarget: type.modelType,
|
|
270
|
-
targetUid: type.uid,
|
|
271
|
-
attributeToRemoveName: item.name
|
|
272
|
-
});
|
|
273
|
-
},
|
|
297
|
+
onClick: handleDelete,
|
|
274
298
|
label: `${formatMessage({
|
|
275
299
|
id: 'global.delete',
|
|
276
300
|
defaultMessage: 'Delete'
|
|
@@ -278,6 +302,32 @@ const MemoizedRow = /*#__PURE__*/ React.memo((props)=>{
|
|
|
278
302
|
variant: "ghost",
|
|
279
303
|
disabled: !canDelete,
|
|
280
304
|
children: /*#__PURE__*/ jsxRuntime.jsx(Icons.Trash, {})
|
|
305
|
+
}),
|
|
306
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Root, {
|
|
307
|
+
open: showConfirmDialog,
|
|
308
|
+
onOpenChange: setShowConfirmDialog,
|
|
309
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.ConfirmDialog, {
|
|
310
|
+
onConfirm: handleConfirmDelete,
|
|
311
|
+
onCancel: handleCancelDelete,
|
|
312
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
313
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Typography, {
|
|
314
|
+
children: [
|
|
315
|
+
formatMessage({
|
|
316
|
+
id: getTrad.getTrad('popUpWarning.bodyMessage.delete-attribute-with-conditions'),
|
|
317
|
+
defaultMessage: 'The following fields have conditions that depend on this field: '
|
|
318
|
+
}),
|
|
319
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
320
|
+
fontWeight: "bold",
|
|
321
|
+
children: conditions.checkDependentRows(contentTypes, item.name).map(({ attribute })=>attribute).join(', ')
|
|
322
|
+
}),
|
|
323
|
+
formatMessage({
|
|
324
|
+
id: getTrad.getTrad('popUpWarning.bodyMessage.delete-attribute-with-conditions-end'),
|
|
325
|
+
defaultMessage: '. Are you sure you want to delete it?'
|
|
326
|
+
})
|
|
327
|
+
]
|
|
328
|
+
})
|
|
329
|
+
})
|
|
330
|
+
})
|
|
281
331
|
})
|
|
282
332
|
]
|
|
283
333
|
}) : /*#__PURE__*/ jsxRuntime.jsx(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 { Box, Flex, IconButton, Typography, Link } 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 { 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\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 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 {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={(e) => {\n e.stopPropagation();\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }}\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 </>\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","isDeleted","isMorph","relation","includes","ico","targetContentType","get","target","isPluginContentType","src","handleClick","configurable","editTargetUid","uid","attributeType","getAttributeDisplayedType","step","customField","forTarget","modelType","targetUid","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","getRelationType","targetAttribute","getTrad","Link","e","stopPropagation","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","attributeToRemoveName","Trash","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) => {\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,6 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { forwardRef, memo, useState } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { ConfirmDialog } from '@strapi/admin/strapi-admin';
|
|
4
|
+
import { Flex, Box, IconButton, Typography, Badge, Link, Dialog } from '@strapi/design-system';
|
|
4
5
|
import { Drag, ChevronDown, Pencil, Trash, Lock } from '@strapi/icons';
|
|
5
6
|
import get from 'lodash/get';
|
|
6
7
|
import upperFirst from 'lodash/upperFirst';
|
|
@@ -8,6 +9,7 @@ import { useIntl } from 'react-intl';
|
|
|
8
9
|
import { Link as Link$1 } from 'react-router-dom';
|
|
9
10
|
import { styled } from 'styled-components';
|
|
10
11
|
import { Curve } from '../icons/Curve.mjs';
|
|
12
|
+
import { checkDependentRows } from '../utils/conditions.mjs';
|
|
11
13
|
import { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType.mjs';
|
|
12
14
|
import { getRelationType } from '../utils/getRelationType.mjs';
|
|
13
15
|
import { getTrad } from '../utils/getTrad.mjs';
|
|
@@ -57,6 +59,7 @@ const MemoizedRow = /*#__PURE__*/ memo((props)=>{
|
|
|
57
59
|
const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();
|
|
58
60
|
const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();
|
|
59
61
|
const { formatMessage } = useIntl();
|
|
62
|
+
const [showConfirmDialog, setShowConfirmDialog] = useState(false);
|
|
60
63
|
const isDeleted = item.status === 'REMOVED';
|
|
61
64
|
const isMorph = item.type === 'relation' && item.relation.includes('morph');
|
|
62
65
|
const ico = [
|
|
@@ -68,6 +71,30 @@ const MemoizedRow = /*#__PURE__*/ memo((props)=>{
|
|
|
68
71
|
const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;
|
|
69
72
|
const isPluginContentType = get(targetContentType, 'plugin');
|
|
70
73
|
const src = 'target' in item && item.target ? 'relation' : ico;
|
|
74
|
+
const handleDelete = (e)=>{
|
|
75
|
+
e.stopPropagation();
|
|
76
|
+
const dependentRows = checkDependentRows(contentTypes, item.name);
|
|
77
|
+
if (dependentRows.length > 0) {
|
|
78
|
+
setShowConfirmDialog(true);
|
|
79
|
+
} else {
|
|
80
|
+
removeAttribute({
|
|
81
|
+
forTarget: type.modelType,
|
|
82
|
+
targetUid: type.uid,
|
|
83
|
+
attributeToRemoveName: item.name
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
const handleConfirmDelete = ()=>{
|
|
88
|
+
removeAttribute({
|
|
89
|
+
forTarget: type.modelType,
|
|
90
|
+
targetUid: type.uid,
|
|
91
|
+
attributeToRemoveName: item.name
|
|
92
|
+
});
|
|
93
|
+
setShowConfirmDialog(false);
|
|
94
|
+
};
|
|
95
|
+
const handleCancelDelete = ()=>{
|
|
96
|
+
setShowConfirmDialog(false);
|
|
97
|
+
};
|
|
71
98
|
const handleClick = ()=>{
|
|
72
99
|
if (isMorph) {
|
|
73
100
|
return;
|
|
@@ -175,6 +202,10 @@ const MemoizedRow = /*#__PURE__*/ memo((props)=>{
|
|
|
175
202
|
repeatable: 'repeatable' in item && item.repeatable,
|
|
176
203
|
multiple: 'multiple' in item && item.multiple
|
|
177
204
|
}),
|
|
205
|
+
'conditions' in item && item.conditions && Object.keys(item.conditions).length > 0 && /*#__PURE__*/ jsx(Badge, {
|
|
206
|
+
margin: 4,
|
|
207
|
+
children: "conditional"
|
|
208
|
+
}),
|
|
178
209
|
item.type === 'relation' && /*#__PURE__*/ jsxs(Fragment, {
|
|
179
210
|
children: [
|
|
180
211
|
" (",
|
|
@@ -261,14 +292,7 @@ const MemoizedRow = /*#__PURE__*/ memo((props)=>{
|
|
|
261
292
|
children: /*#__PURE__*/ jsx(Pencil, {})
|
|
262
293
|
}),
|
|
263
294
|
/*#__PURE__*/ jsx(IconButton, {
|
|
264
|
-
onClick:
|
|
265
|
-
e.stopPropagation();
|
|
266
|
-
removeAttribute({
|
|
267
|
-
forTarget: type.modelType,
|
|
268
|
-
targetUid: type.uid,
|
|
269
|
-
attributeToRemoveName: item.name
|
|
270
|
-
});
|
|
271
|
-
},
|
|
295
|
+
onClick: handleDelete,
|
|
272
296
|
label: `${formatMessage({
|
|
273
297
|
id: 'global.delete',
|
|
274
298
|
defaultMessage: 'Delete'
|
|
@@ -276,6 +300,32 @@ const MemoizedRow = /*#__PURE__*/ memo((props)=>{
|
|
|
276
300
|
variant: "ghost",
|
|
277
301
|
disabled: !canDelete,
|
|
278
302
|
children: /*#__PURE__*/ jsx(Trash, {})
|
|
303
|
+
}),
|
|
304
|
+
/*#__PURE__*/ jsx(Dialog.Root, {
|
|
305
|
+
open: showConfirmDialog,
|
|
306
|
+
onOpenChange: setShowConfirmDialog,
|
|
307
|
+
children: /*#__PURE__*/ jsx(ConfirmDialog, {
|
|
308
|
+
onConfirm: handleConfirmDelete,
|
|
309
|
+
onCancel: handleCancelDelete,
|
|
310
|
+
children: /*#__PURE__*/ jsx(Box, {
|
|
311
|
+
children: /*#__PURE__*/ jsxs(Typography, {
|
|
312
|
+
children: [
|
|
313
|
+
formatMessage({
|
|
314
|
+
id: getTrad('popUpWarning.bodyMessage.delete-attribute-with-conditions'),
|
|
315
|
+
defaultMessage: 'The following fields have conditions that depend on this field: '
|
|
316
|
+
}),
|
|
317
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
318
|
+
fontWeight: "bold",
|
|
319
|
+
children: checkDependentRows(contentTypes, item.name).map(({ attribute })=>attribute).join(', ')
|
|
320
|
+
}),
|
|
321
|
+
formatMessage({
|
|
322
|
+
id: getTrad('popUpWarning.bodyMessage.delete-attribute-with-conditions-end'),
|
|
323
|
+
defaultMessage: '. Are you sure you want to delete it?'
|
|
324
|
+
})
|
|
325
|
+
]
|
|
326
|
+
})
|
|
327
|
+
})
|
|
328
|
+
})
|
|
279
329
|
})
|
|
280
330
|
]
|
|
281
331
|
}) : /*#__PURE__*/ jsx(Flex, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeRow.mjs","sources":["../../../admin/src/components/AttributeRow.tsx"],"sourcesContent":["import { forwardRef, memo, useState } from 'react';\n\nimport { Box, Flex, IconButton, Typography, Link } 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 { 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\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 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 {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={(e) => {\n e.stopPropagation();\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }}\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 </>\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","isDeleted","isMorph","relation","includes","ico","targetContentType","get","target","isPluginContentType","src","handleClick","configurable","editTargetUid","uid","attributeType","getAttributeDisplayedType","step","customField","forTarget","modelType","targetUid","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","getRelationType","targetAttribute","getTrad","Link","e","stopPropagation","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","attributeToRemoveName","Trash","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) => {\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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"}
|