@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.
Files changed (57) hide show
  1. package/dist/admin/components/ApplyConditionButton.js +34 -0
  2. package/dist/admin/components/ApplyConditionButton.js.map +1 -0
  3. package/dist/admin/components/ApplyConditionButton.mjs +32 -0
  4. package/dist/admin/components/ApplyConditionButton.mjs.map +1 -0
  5. package/dist/admin/components/AttributeRow.js +58 -8
  6. package/dist/admin/components/AttributeRow.js.map +1 -1
  7. package/dist/admin/components/AttributeRow.mjs +59 -9
  8. package/dist/admin/components/AttributeRow.mjs.map +1 -1
  9. package/dist/admin/components/FormModal/FormModal.js +134 -3
  10. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  11. package/dist/admin/components/FormModal/FormModal.mjs +137 -5
  12. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  13. package/dist/admin/components/FormModal/attributes/ConditionForm.js +448 -0
  14. package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -0
  15. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +428 -0
  16. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -0
  17. package/dist/admin/components/FormModal/attributes/advancedForm.js +55 -16
  18. package/dist/admin/components/FormModal/attributes/advancedForm.js.map +1 -1
  19. package/dist/admin/components/FormModal/attributes/advancedForm.mjs +55 -16
  20. package/dist/admin/components/FormModal/attributes/advancedForm.mjs.map +1 -1
  21. package/dist/admin/components/FormModal/forms/forms.js +3 -1
  22. package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
  23. package/dist/admin/components/FormModal/forms/forms.mjs +3 -1
  24. package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
  25. package/dist/admin/components/GenericInputs.js +5 -2
  26. package/dist/admin/components/GenericInputs.js.map +1 -1
  27. package/dist/admin/components/GenericInputs.mjs +5 -2
  28. package/dist/admin/components/GenericInputs.mjs.map +1 -1
  29. package/dist/admin/components/TabForm.js +88 -0
  30. package/dist/admin/components/TabForm.js.map +1 -1
  31. package/dist/admin/components/TabForm.mjs +89 -1
  32. package/dist/admin/components/TabForm.mjs.map +1 -1
  33. package/dist/admin/src/components/ApplyConditionButton.d.ts +8 -0
  34. package/dist/admin/src/components/FormModal/attributes/ConditionForm.d.ts +23 -0
  35. package/dist/admin/src/components/FormModal/attributes/advancedForm.d.ts +288 -8
  36. package/dist/admin/src/components/FormModal/attributes/form.d.ts +288 -8
  37. package/dist/admin/src/components/GenericInputs.d.ts +30 -3
  38. package/dist/admin/src/utils/conditions.d.ts +17 -0
  39. package/dist/admin/translations/en.json.js +24 -0
  40. package/dist/admin/translations/en.json.js.map +1 -1
  41. package/dist/admin/translations/en.json.mjs +24 -0
  42. package/dist/admin/translations/en.json.mjs.map +1 -1
  43. package/dist/admin/utils/conditions.js +61 -0
  44. package/dist/admin/utils/conditions.js.map +1 -0
  45. package/dist/admin/utils/conditions.mjs +57 -0
  46. package/dist/admin/utils/conditions.mjs.map +1 -0
  47. package/dist/server/controllers/validation/schema.js +11 -2
  48. package/dist/server/controllers/validation/schema.js.map +1 -1
  49. package/dist/server/controllers/validation/schema.mjs +11 -2
  50. package/dist/server/controllers/validation/schema.mjs.map +1 -1
  51. package/dist/server/src/controllers/validation/schema.d.ts +25728 -0
  52. package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
  53. package/dist/server/src/services/schema.d.ts +1302 -0
  54. package/dist/server/src/services/schema.d.ts.map +1 -1
  55. package/dist/server/src/utils/attributes.d.ts +210 -0
  56. package/dist/server/src/utils/attributes.d.ts.map +1 -1
  57. 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: (e)=>{
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\">*&nbsp;</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 &nbsp;({getRelationType(item.relation, item.targetAttribute)})&nbsp;\n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n &nbsp;\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 &nbsp;(\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\">*&nbsp;</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 &nbsp;({getRelationType(item.relation, item.targetAttribute)})&nbsp;\n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n &nbsp;\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 &nbsp;(\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 { Flex, Box, IconButton, Typography, Link } from '@strapi/design-system';
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: (e)=>{
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\">*&nbsp;</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 &nbsp;({getRelationType(item.relation, item.targetAttribute)})&nbsp;\n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n &nbsp;\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 &nbsp;(\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\">*&nbsp;</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 &nbsp;({getRelationType(item.relation, item.targetAttribute)})&nbsp;\n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n &nbsp;\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 &nbsp;(\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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"}