@strapi/content-type-builder 5.48.1 → 5.49.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 (115) hide show
  1. package/dist/admin/components/AIChat/components/Messages/Message.js +5 -1
  2. package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
  3. package/dist/admin/components/AIChat/components/SimpleMenu.js +3 -2
  4. package/dist/admin/components/AIChat/components/SimpleMenu.js.map +1 -1
  5. package/dist/admin/components/AIChat/hooks/useCodeUpload.js +7 -2
  6. package/dist/admin/components/AIChat/hooks/useCodeUpload.js.map +1 -1
  7. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +11 -5
  8. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
  9. package/dist/admin/components/AllowedTypesSelect.js +5 -1
  10. package/dist/admin/components/AllowedTypesSelect.js.map +1 -1
  11. package/dist/admin/components/AttributeOptions/EmptyAttributes.js +3 -2
  12. package/dist/admin/components/AttributeOptions/EmptyAttributes.js.map +1 -1
  13. package/dist/admin/components/AttributeRow.js +10 -5
  14. package/dist/admin/components/AttributeRow.js.map +1 -1
  15. package/dist/admin/components/AutoReloadOverlayBlocker.js +3 -2
  16. package/dist/admin/components/AutoReloadOverlayBlocker.js.map +1 -1
  17. package/dist/admin/components/ComponentCard/ComponentCard.js +5 -1
  18. package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
  19. package/dist/admin/components/ComponentList.js +5 -1
  20. package/dist/admin/components/ComponentList.js.map +1 -1
  21. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +5 -1
  22. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
  23. package/dist/admin/components/DataManager/DataManagerProvider.js +12 -6
  24. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
  25. package/dist/admin/components/DataManager/reducer.js +7 -2
  26. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  27. package/dist/admin/components/DataManager/utils/cleanData.js +10 -4
  28. package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -1
  29. package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.js +5 -1
  30. package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.js.map +1 -1
  31. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js +5 -1
  32. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -1
  33. package/dist/admin/components/FormModal/FormModal.js +30 -22
  34. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  35. package/dist/admin/components/FormModal/attributes/ConditionForm.js +3 -2
  36. package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
  37. package/dist/admin/components/FormModal/attributes/types.js +7 -3
  38. package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
  39. package/dist/admin/components/FormModal/attributes/validation/common.js +8 -4
  40. package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
  41. package/dist/admin/components/FormModal/component/createComponentSchema.js +3 -2
  42. package/dist/admin/components/FormModal/component/createComponentSchema.js.map +1 -1
  43. package/dist/admin/components/FormModal/contentType/createContentTypeSchema.js +3 -2
  44. package/dist/admin/components/FormModal/contentType/createContentTypeSchema.js.map +1 -1
  45. package/dist/admin/components/FormModal/forms/utils/createCollectionName.js +5 -1
  46. package/dist/admin/components/FormModal/forms/utils/createCollectionName.js.map +1 -1
  47. package/dist/admin/components/FormModal/reducer.js +32 -26
  48. package/dist/admin/components/FormModal/reducer.js.map +1 -1
  49. package/dist/admin/components/FormModalHeader.js +6 -2
  50. package/dist/admin/components/FormModalHeader.js.map +1 -1
  51. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js +3 -2
  52. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -1
  53. package/dist/admin/components/FormModalSubHeader.js +6 -2
  54. package/dist/admin/components/FormModalSubHeader.js.map +1 -1
  55. package/dist/admin/components/GenericInputs.js +9 -4
  56. package/dist/admin/components/GenericInputs.js.map +1 -1
  57. package/dist/admin/components/IconPicker/constants.js +4 -3
  58. package/dist/admin/components/IconPicker/constants.js.map +1 -1
  59. package/dist/admin/components/PluralName.js +5 -1
  60. package/dist/admin/components/PluralName.js.map +1 -1
  61. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js +13 -7
  62. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js.map +1 -1
  63. package/dist/admin/components/TabForm.js +7 -3
  64. package/dist/admin/components/TabForm.js.map +1 -1
  65. package/dist/admin/pages/ListView/ListView.js +5 -1
  66. package/dist/admin/pages/ListView/ListView.js.map +1 -1
  67. package/dist/admin/utils/formAPI.js +11 -6
  68. package/dist/admin/utils/formAPI.js.map +1 -1
  69. package/dist/admin/utils/getMaxDepth.js.map +1 -1
  70. package/dist/admin/utils/getMaxDepth.mjs.map +1 -1
  71. package/dist/admin/utils/nameToSlug.js +5 -1
  72. package/dist/admin/utils/nameToSlug.js.map +1 -1
  73. package/dist/admin/utils/toRegressedEnumValue.js +5 -1
  74. package/dist/admin/utils/toRegressedEnumValue.js.map +1 -1
  75. package/dist/server/controllers/components.js +6 -2
  76. package/dist/server/controllers/components.js.map +1 -1
  77. package/dist/server/controllers/content-types.js +8 -4
  78. package/dist/server/controllers/content-types.js.map +1 -1
  79. package/dist/server/controllers/validation/common.js +5 -1
  80. package/dist/server/controllers/validation/common.js.map +1 -1
  81. package/dist/server/controllers/validation/component.js +9 -5
  82. package/dist/server/controllers/validation/component.js.map +1 -1
  83. package/dist/server/controllers/validation/data-transform.js +6 -2
  84. package/dist/server/controllers/validation/data-transform.js.map +1 -1
  85. package/dist/server/controllers/validation/model-schema.js +6 -2
  86. package/dist/server/controllers/validation/model-schema.js.map +1 -1
  87. package/dist/server/controllers/validation/types.js +8 -4
  88. package/dist/server/controllers/validation/types.js.map +1 -1
  89. package/dist/server/routes/content-api.js +3 -2
  90. package/dist/server/routes/content-api.js.map +1 -1
  91. package/dist/server/services/api-handler.js +4 -3
  92. package/dist/server/services/api-handler.js.map +1 -1
  93. package/dist/server/services/api-handler.mjs.map +1 -1
  94. package/dist/server/services/components.js.map +1 -1
  95. package/dist/server/services/components.mjs.map +1 -1
  96. package/dist/server/services/content-types.js +8 -4
  97. package/dist/server/services/content-types.js.map +1 -1
  98. package/dist/server/services/schema-builder/component-builder.js +11 -5
  99. package/dist/server/services/schema-builder/component-builder.js.map +1 -1
  100. package/dist/server/services/schema-builder/content-type-builder.js +13 -8
  101. package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
  102. package/dist/server/services/schema-builder/index.js +5 -1
  103. package/dist/server/services/schema-builder/index.js.map +1 -1
  104. package/dist/server/services/schema-builder/schema-handler.js +35 -29
  105. package/dist/server/services/schema-builder/schema-handler.js.map +1 -1
  106. package/dist/server/services/schema-builder/schema-handler.mjs.map +1 -1
  107. package/dist/server/services/schema.js +5 -1
  108. package/dist/server/services/schema.js.map +1 -1
  109. package/dist/server/src/services/components.d.ts +3 -26
  110. package/dist/server/src/services/components.d.ts.map +1 -1
  111. package/dist/server/src/services/schema-builder/schema-handler.d.ts +1 -0
  112. package/dist/server/src/services/schema-builder/schema-handler.d.ts.map +1 -1
  113. package/dist/server/utils/attributes.js +12 -7
  114. package/dist/server/utils/attributes.js.map +1 -1
  115. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeRow.js","sources":["../../../admin/src/components/AttributeRow.tsx"],"sourcesContent":["import { forwardRef, memo, useState } from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, IconButton, Typography, Link, Badge, Dialog } from '@strapi/design-system';\nimport { ChevronDown, Drag, Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Link as NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { Curve } from '../icons/Curve';\nimport { checkDependentRows } from '../utils/conditions';\nimport { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType';\nimport { getRelationType } from '../utils/getRelationType';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon } from './AttributeIcon';\nimport { ComponentList } from './ComponentList';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { DisplayedType } from './DisplayedType';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\nimport { StatusBadge } from './Status';\n\nimport type { AnyAttribute, Component, ContentType } from '../types';\nimport type { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';\nimport type { UID } from '@strapi/types';\n\nexport const GridWrapper = styled(Flex)<{ $isOverlay?: boolean; $isDragging?: boolean }>`\n justify-content: space-between;\n\n border-top: ${({ theme, $isOverlay }) =>\n $isOverlay ? 'none' : `1px solid ${theme.colors.neutral150}`};\n\n padding-top: ${({ theme }) => theme.spaces[4]};\n padding-bottom: ${({ theme }) => theme.spaces[4]};\n\n opacity: ${({ $isDragging }) => ($isDragging ? 0 : 1)};\n align-items: center;\n`;\n\nexport type AttributeRowProps = {\n item: {\n id: string;\n index: number;\n } & AnyAttribute;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n addComponentToDZ?: () => void;\n secondLoopComponentUid?: UID.Component | null;\n type: ContentType | Component;\n isDragging?: boolean;\n style?: Record<string, unknown>;\n listeners?: DraggableSyntheticListeners;\n attributes?: DraggableAttributes;\n isOverlay?: boolean;\n handleRef?: (element: HTMLElement | null) => void;\n};\n\nconst StyledAttributeRow = styled(Box)`\n list-style: none;\n list-style-type: none;\n`;\n\nexport const AttributeRow = forwardRef<HTMLLIElement, AttributeRowProps>((props, ref) => {\n const { style, ...rest } = props;\n\n return (\n <StyledAttributeRow\n tag=\"li\"\n ref={ref}\n {...props.attributes}\n style={style}\n background=\"neutral0\"\n shadow={props.isOverlay ? 'filterShadow' : 'none'}\n aria-label={props.item.name}\n >\n <MemoizedRow {...rest} />\n </StyledAttributeRow>\n );\n});\n\nconst MemoizedRow = memo((props: Omit<AttributeRowProps, 'style'>) => {\n const {\n item,\n firstLoopComponentUid,\n isFromDynamicZone,\n addComponentToDZ,\n secondLoopComponentUid,\n type,\n isDragging,\n isOverlay,\n handleRef,\n listeners,\n } = props;\n const shouldHideNestedInfos = isOverlay || isDragging;\n\n const [isOpen, setIsOpen] = useState<boolean>(true);\n\n const isTypeDeleted = type.status === 'REMOVED';\n\n const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();\n const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();\n\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const isDeleted = item.status === 'REMOVED';\n\n const isMorph = item.type === 'relation' && item.relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(item.type)\n ? 'number'\n : item.type;\n\n const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;\n const isPluginContentType = get(targetContentType, 'plugin');\n\n const src = 'target' in item && item.target ? 'relation' : ico;\n\n const handleDelete = (e: React.MouseEvent | React.KeyboardEvent) => {\n e.stopPropagation();\n const dependentRows = checkDependentRows(contentTypes, item.name);\n if (dependentRows.length > 0) {\n setShowConfirmDialog(true);\n } else {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }\n };\n\n const handleConfirmDelete = () => {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n setShowConfirmDialog(false);\n };\n\n const handleCancelDelete = () => {\n setShowConfirmDialog(false);\n };\n\n const handleClick = (e?: React.MouseEvent | React.KeyboardEvent) => {\n if (e) {\n e.stopPropagation();\n }\n\n if (isMorph) {\n return;\n }\n\n if (item.configurable !== false) {\n const editTargetUid = (secondLoopComponentUid || firstLoopComponentUid || type.uid)!;\n\n const attributeType = getAttributeDisplayedType(item.type);\n const step = item.type === 'component' ? '2' : null;\n\n if (item.customField) {\n onOpenModalEditCustomField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n customFieldUid: item.customField,\n });\n } else {\n onOpenModalEditField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n step,\n });\n }\n }\n };\n\n let loopNumber;\n\n if (secondLoopComponentUid && firstLoopComponentUid) {\n loopNumber = 2;\n } else if (firstLoopComponentUid) {\n loopNumber = 1;\n } else {\n loopNumber = 0;\n }\n\n const canEdit = !isTypeDeleted && !isDeleted;\n const canDelete = !isTypeDeleted && !isDeleted;\n\n const cursor = isTypeDeleted || isDeleted ? 'not-allowed' : 'move';\n\n const canClick = isInDevelopmentMode && item.configurable !== false && !isMorph && canEdit;\n\n return (\n <>\n <GridWrapper\n $isOverlay={isOverlay}\n $isDragging={isDragging}\n onClick={canClick ? handleClick : undefined}\n paddingLeft={4}\n paddingRight={4}\n >\n <Flex alignItems=\"center\" overflow=\"hidden\" gap={2}>\n {loopNumber !== 0 && !isOverlay && (\n <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />\n )}\n {isInDevelopmentMode && (\n <IconButton\n cursor={cursor}\n role=\"Handle\"\n ref={handleRef}\n {...listeners}\n variant=\"ghost\"\n withTooltip={false}\n label={`${formatMessage({\n id: 'app.utils.drag',\n defaultMessage: 'Drag',\n })} ${item.name}`}\n disabled={isTypeDeleted || isDeleted}\n style={{ outlineOffset: '-2px' }}\n >\n <Drag />\n </IconButton>\n )}\n <Flex gap={4}>\n <Flex gap={4} alignItems=\"center\">\n <AttributeIcon type={src} customField={item.customField} />\n <Typography\n textColor=\"neutral800\"\n fontWeight=\"bold\"\n textDecoration={isDeleted ? 'line-through' : 'none'}\n ellipsis\n overflow=\"hidden\"\n >\n {item.name}\n {'required' in item && item.required && (\n <Typography textColor=\"danger600\">*&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","outlineOffset","Drag","AttributeIcon","Typography","textColor","fontWeight","textDecoration","ellipsis","required","DisplayedType","repeatable","multiple","conditions","Object","keys","Badge","margin","getRelationType","targetAttribute","getTrad","Link","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","Trash","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","onCancel","map","attribute","join","padding","Lock","SubRow","$shouldHideNestedInfos","$isOpen","ComponentList","DynamicZoneList","addComponent","components","category"],"mappings":"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"}
1
+ {"version":3,"file":"AttributeRow.js","sources":["../../../admin/src/components/AttributeRow.tsx"],"sourcesContent":["import { forwardRef, memo, useState } from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, IconButton, Typography, Link, Badge, Dialog } from '@strapi/design-system';\nimport { ChevronDown, Drag, Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Link as NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { Curve } from '../icons/Curve';\nimport { checkDependentRows } from '../utils/conditions';\nimport { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType';\nimport { getRelationType } from '../utils/getRelationType';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon } from './AttributeIcon';\nimport { ComponentList } from './ComponentList';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { DisplayedType } from './DisplayedType';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\nimport { StatusBadge } from './Status';\n\nimport type { AnyAttribute, Component, ContentType } from '../types';\nimport type { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';\nimport type { UID } from '@strapi/types';\n\nexport const GridWrapper = styled(Flex)<{ $isOverlay?: boolean; $isDragging?: boolean }>`\n justify-content: space-between;\n\n border-top: ${({ theme, $isOverlay }) =>\n $isOverlay ? 'none' : `1px solid ${theme.colors.neutral150}`};\n\n padding-top: ${({ theme }) => theme.spaces[4]};\n padding-bottom: ${({ theme }) => theme.spaces[4]};\n\n opacity: ${({ $isDragging }) => ($isDragging ? 0 : 1)};\n align-items: center;\n`;\n\nexport type AttributeRowProps = {\n item: {\n id: string;\n index: number;\n } & AnyAttribute;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n addComponentToDZ?: () => void;\n secondLoopComponentUid?: UID.Component | null;\n type: ContentType | Component;\n isDragging?: boolean;\n style?: Record<string, unknown>;\n listeners?: DraggableSyntheticListeners;\n attributes?: DraggableAttributes;\n isOverlay?: boolean;\n handleRef?: (element: HTMLElement | null) => void;\n};\n\nconst StyledAttributeRow = styled(Box)`\n list-style: none;\n list-style-type: none;\n`;\n\nexport const AttributeRow = forwardRef<HTMLLIElement, AttributeRowProps>((props, ref) => {\n const { style, ...rest } = props;\n\n return (\n <StyledAttributeRow\n tag=\"li\"\n ref={ref}\n {...props.attributes}\n style={style}\n background=\"neutral0\"\n shadow={props.isOverlay ? 'filterShadow' : 'none'}\n aria-label={props.item.name}\n >\n <MemoizedRow {...rest} />\n </StyledAttributeRow>\n );\n});\n\nconst MemoizedRow = memo((props: Omit<AttributeRowProps, 'style'>) => {\n const {\n item,\n firstLoopComponentUid,\n isFromDynamicZone,\n addComponentToDZ,\n secondLoopComponentUid,\n type,\n isDragging,\n isOverlay,\n handleRef,\n listeners,\n } = props;\n const shouldHideNestedInfos = isOverlay || isDragging;\n\n const [isOpen, setIsOpen] = useState<boolean>(true);\n\n const isTypeDeleted = type.status === 'REMOVED';\n\n const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();\n const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();\n\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const isDeleted = item.status === 'REMOVED';\n\n const isMorph = item.type === 'relation' && item.relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(item.type)\n ? 'number'\n : item.type;\n\n const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;\n const isPluginContentType = get(targetContentType, 'plugin');\n\n const src = 'target' in item && item.target ? 'relation' : ico;\n\n const handleDelete = (e: React.MouseEvent | React.KeyboardEvent) => {\n e.stopPropagation();\n const dependentRows = checkDependentRows(contentTypes, item.name);\n if (dependentRows.length > 0) {\n setShowConfirmDialog(true);\n } else {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }\n };\n\n const handleConfirmDelete = () => {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n setShowConfirmDialog(false);\n };\n\n const handleCancelDelete = () => {\n setShowConfirmDialog(false);\n };\n\n const handleClick = (e?: React.MouseEvent | React.KeyboardEvent) => {\n if (e) {\n e.stopPropagation();\n }\n\n if (isMorph) {\n return;\n }\n\n if (item.configurable !== false) {\n const editTargetUid = (secondLoopComponentUid || firstLoopComponentUid || type.uid)!;\n\n const attributeType = getAttributeDisplayedType(item.type);\n const step = item.type === 'component' ? '2' : null;\n\n if (item.customField) {\n onOpenModalEditCustomField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n customFieldUid: item.customField,\n });\n } else {\n onOpenModalEditField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n step,\n });\n }\n }\n };\n\n let loopNumber;\n\n if (secondLoopComponentUid && firstLoopComponentUid) {\n loopNumber = 2;\n } else if (firstLoopComponentUid) {\n loopNumber = 1;\n } else {\n loopNumber = 0;\n }\n\n const canEdit = !isTypeDeleted && !isDeleted;\n const canDelete = !isTypeDeleted && !isDeleted;\n\n const cursor = isTypeDeleted || isDeleted ? 'not-allowed' : 'move';\n\n const canClick = isInDevelopmentMode && item.configurable !== false && !isMorph && canEdit;\n\n return (\n <>\n <GridWrapper\n $isOverlay={isOverlay}\n $isDragging={isDragging}\n onClick={canClick ? handleClick : undefined}\n paddingLeft={4}\n paddingRight={4}\n >\n <Flex alignItems=\"center\" overflow=\"hidden\" gap={2}>\n {loopNumber !== 0 && !isOverlay && (\n <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />\n )}\n {isInDevelopmentMode && (\n <IconButton\n cursor={cursor}\n role=\"Handle\"\n ref={handleRef}\n {...listeners}\n variant=\"ghost\"\n withTooltip={false}\n label={`${formatMessage({\n id: 'app.utils.drag',\n defaultMessage: 'Drag',\n })} ${item.name}`}\n disabled={isTypeDeleted || isDeleted}\n style={{ outlineOffset: '-2px' }}\n >\n <Drag />\n </IconButton>\n )}\n <Flex gap={4}>\n <Flex gap={4} alignItems=\"center\">\n <AttributeIcon type={src} customField={item.customField} />\n <Typography\n textColor=\"neutral800\"\n fontWeight=\"bold\"\n textDecoration={isDeleted ? 'line-through' : 'none'}\n ellipsis\n overflow=\"hidden\"\n >\n {item.name}\n {'required' in item && item.required && (\n <Typography textColor=\"danger600\">*&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","outlineOffset","Drag","AttributeIcon","Typography","textColor","fontWeight","textDecoration","ellipsis","required","DisplayedType","repeatable","multiple","conditions","Object","keys","Badge","margin","getRelationType","targetAttribute","getTrad","Link","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","Trash","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","onCancel","map","attribute","join","padding","Lock","SubRow","$shouldHideNestedInfos","$isOpen","ComponentList","DynamicZoneList","addComponent","components","category"],"mappings":"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"}
@@ -8,7 +8,8 @@ var reactDom = require('react-dom');
8
8
  var reactIntl = require('react-intl');
9
9
  var styledComponents = require('styled-components');
10
10
 
11
- function _interopNamespaceDefault(e) {
11
+ function _interopNamespace(e) {
12
+ if (e && e.__esModule) return e;
12
13
  var n = Object.create(null);
13
14
  if (e) {
14
15
  Object.keys(e).forEach(function (k) {
@@ -25,7 +26,7 @@ function _interopNamespaceDefault(e) {
25
26
  return Object.freeze(n);
26
27
  }
27
28
 
28
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
29
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
29
30
 
30
31
  const AutoReloadOverlayBlockerContext = /*#__PURE__*/ React__namespace.createContext({
31
32
  lockAppWithAutoreload: ()=>{},
@@ -1 +1 @@
1
- {"version":3,"file":"AutoReloadOverlayBlocker.js","sources":["../../../admin/src/components/AutoReloadOverlayBlocker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, Link } from '@strapi/design-system';\nimport { Clock, ArrowClockwise } from '@strapi/icons';\nimport { createPortal } from 'react-dom';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled, keyframes } from 'styled-components';\n\n/**\n * TODO: realistically a lot of this logic is isolated to the `core/admin` package.\n * However, we want to expose the `useAutoReloadOverlayBlocker` hook to the plugins.\n *\n * Therefore, in V5 we should move this logic back to the `core/admin` package & export\n * the hook from that package and re-export here. For now, let's keep it all together\n * because it's easier to diagnose and we're not using a million refs because we don't\n * understand what's going on.\n */\nexport interface AutoReloadOverlayBlockerConfig {\n title?: string;\n description?: string;\n icon?: 'reload' | 'time';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerContextValue {\n lockAppWithAutoreload: (config?: AutoReloadOverlayBlockerConfig) => void;\n unlockAppWithAutoreload: () => void;\n}\n\nconst AutoReloadOverlayBlockerContext = React.createContext<AutoReloadOverlayBlockerContextValue>({\n lockAppWithAutoreload: () => {},\n unlockAppWithAutoreload: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerProviderProps {\n children: React.ReactNode;\n}\n\nconst MAX_ELAPSED_TIME = 300 * 1000;\n\nconst AutoReloadOverlayBlockerProvider = ({ children }: AutoReloadOverlayBlockerProviderProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [config, setConfig] = React.useState<AutoReloadOverlayBlockerConfig>({});\n const [failed, setFailed] = React.useState(false);\n\n const lockAppWithAutoreload = React.useCallback((config: AutoReloadOverlayBlockerConfig = {}) => {\n setIsOpen(true);\n setConfig(config);\n }, []);\n\n const unlockAppWithAutoreload = React.useCallback(() => {\n setIsOpen(false);\n setConfig({});\n }, []);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (isOpen) {\n const timeout = setTimeout(() => {\n setFailed(true);\n }, MAX_ELAPSED_TIME);\n\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [isOpen]);\n\n let displayedIcon = config?.icon || 'reload';\n\n let description = {\n id: config?.description || 'components.OverlayBlocker.description',\n defaultMessage:\n \"You're using a feature that needs the server to restart. The page will reload automatically.\",\n };\n\n let title = {\n id: config?.title || 'components.OverlayBlocker.title',\n defaultMessage: 'Waiting for restart',\n };\n\n if (failed) {\n displayedIcon = 'time';\n\n description = {\n id: 'components.OverlayBlocker.description.serverError',\n defaultMessage: 'The server should have restarted, please check your logs in the terminal.',\n };\n\n title = {\n id: 'components.OverlayBlocker.title.serverError',\n defaultMessage: 'The restart is taking longer than expected',\n };\n }\n\n const autoReloadValue = React.useMemo(\n () => ({\n lockAppWithAutoreload,\n unlockAppWithAutoreload,\n }),\n [lockAppWithAutoreload, unlockAppWithAutoreload]\n );\n\n return (\n <AutoReloadOverlayBlockerContext.Provider value={autoReloadValue}>\n <Blocker\n displayedIcon={displayedIcon}\n isOpen={isOpen}\n description={description}\n title={title}\n />\n {children}\n </AutoReloadOverlayBlockerContext.Provider>\n );\n};\n\ninterface BlockerProps {\n displayedIcon: string;\n description: MessageDescriptor;\n isOpen: boolean;\n title: MessageDescriptor;\n}\n\nconst Blocker = ({ displayedIcon, description, title, isOpen }: BlockerProps) => {\n const { formatMessage } = useIntl();\n\n // eslint-disable-next-line no-undef\n return isOpen && globalThis?.document?.body\n ? createPortal(\n <Overlay id=\"autoReloadOverlayBlocker\" direction=\"column\" alignItems=\"center\" gap={6}>\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage(title)}\n </Typography>\n <Typography tag=\"h2\" textColor=\"neutral600\" fontSize={4} fontWeight=\"regular\">\n {formatMessage(description)}\n </Typography>\n </Flex>\n {displayedIcon === 'reload' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <LoaderReload width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n {displayedIcon === 'time' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <Clock width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n <Box marginTop={2}>\n <Link href=\"https://docs.strapi.io\" isExternal>\n {formatMessage({\n id: 'global.documentation',\n defaultMessage: 'Read the documentation',\n })}\n </Link>\n </Box>\n </Overlay>,\n // eslint-disable-next-line no-undef\n globalThis.document.body\n )\n : null;\n};\n\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n `;\n\nconst LoaderReload = styled(ArrowClockwise)`\n animation: ${rotation} 1s infinite linear;\n`;\n\nconst Overlay = styled(Flex)`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n /* TODO: set this up in the theme for consistence z-index values */\n z-index: 1140;\n padding-top: 16rem;\n\n & > * {\n position: relative;\n z-index: 1;\n }\n\n &:before {\n content: '';\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: ${({ theme }) => theme.colors.neutral0};\n opacity: 0.9;\n }\n`;\n\nconst IconBox = styled(Box)`\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n > path {\n fill: ${({ theme }) => theme.colors.primary600} !important;\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\nconst useAutoReloadOverlayBlocker = () => React.useContext(AutoReloadOverlayBlockerContext);\n\nexport { AutoReloadOverlayBlockerProvider, useAutoReloadOverlayBlocker };\n"],"names":["AutoReloadOverlayBlockerContext","React","createContext","lockAppWithAutoreload","unlockAppWithAutoreload","MAX_ELAPSED_TIME","AutoReloadOverlayBlockerProvider","children","isOpen","setIsOpen","useState","config","setConfig","failed","setFailed","useCallback","useEffect","timeout","setTimeout","clearTimeout","displayedIcon","icon","description","id","defaultMessage","title","autoReloadValue","useMemo","_jsxs","Provider","value","_jsx","Blocker","formatMessage","useIntl","globalThis","document","body","createPortal","Overlay","direction","alignItems","gap","Flex","Typography","tag","variant","textColor","fontSize","fontWeight","IconBox","padding","background","borderColor","LoaderReload","width","height","Clock","Box","marginTop","Link","href","isExternal","rotation","keyframes","styled","ArrowClockwise","theme","colors","neutral0","primary600","useAutoReloadOverlayBlocker","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"AutoReloadOverlayBlocker.js","sources":["../../../admin/src/components/AutoReloadOverlayBlocker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, Link } from '@strapi/design-system';\nimport { Clock, ArrowClockwise } from '@strapi/icons';\nimport { createPortal } from 'react-dom';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled, keyframes } from 'styled-components';\n\n/**\n * TODO: realistically a lot of this logic is isolated to the `core/admin` package.\n * However, we want to expose the `useAutoReloadOverlayBlocker` hook to the plugins.\n *\n * Therefore, in V5 we should move this logic back to the `core/admin` package & export\n * the hook from that package and re-export here. For now, let's keep it all together\n * because it's easier to diagnose and we're not using a million refs because we don't\n * understand what's going on.\n */\nexport interface AutoReloadOverlayBlockerConfig {\n title?: string;\n description?: string;\n icon?: 'reload' | 'time';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerContextValue {\n lockAppWithAutoreload: (config?: AutoReloadOverlayBlockerConfig) => void;\n unlockAppWithAutoreload: () => void;\n}\n\nconst AutoReloadOverlayBlockerContext = React.createContext<AutoReloadOverlayBlockerContextValue>({\n lockAppWithAutoreload: () => {},\n unlockAppWithAutoreload: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerProviderProps {\n children: React.ReactNode;\n}\n\nconst MAX_ELAPSED_TIME = 300 * 1000;\n\nconst AutoReloadOverlayBlockerProvider = ({ children }: AutoReloadOverlayBlockerProviderProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [config, setConfig] = React.useState<AutoReloadOverlayBlockerConfig>({});\n const [failed, setFailed] = React.useState(false);\n\n const lockAppWithAutoreload = React.useCallback((config: AutoReloadOverlayBlockerConfig = {}) => {\n setIsOpen(true);\n setConfig(config);\n }, []);\n\n const unlockAppWithAutoreload = React.useCallback(() => {\n setIsOpen(false);\n setConfig({});\n }, []);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (isOpen) {\n const timeout = setTimeout(() => {\n setFailed(true);\n }, MAX_ELAPSED_TIME);\n\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [isOpen]);\n\n let displayedIcon = config?.icon || 'reload';\n\n let description = {\n id: config?.description || 'components.OverlayBlocker.description',\n defaultMessage:\n \"You're using a feature that needs the server to restart. The page will reload automatically.\",\n };\n\n let title = {\n id: config?.title || 'components.OverlayBlocker.title',\n defaultMessage: 'Waiting for restart',\n };\n\n if (failed) {\n displayedIcon = 'time';\n\n description = {\n id: 'components.OverlayBlocker.description.serverError',\n defaultMessage: 'The server should have restarted, please check your logs in the terminal.',\n };\n\n title = {\n id: 'components.OverlayBlocker.title.serverError',\n defaultMessage: 'The restart is taking longer than expected',\n };\n }\n\n const autoReloadValue = React.useMemo(\n () => ({\n lockAppWithAutoreload,\n unlockAppWithAutoreload,\n }),\n [lockAppWithAutoreload, unlockAppWithAutoreload]\n );\n\n return (\n <AutoReloadOverlayBlockerContext.Provider value={autoReloadValue}>\n <Blocker\n displayedIcon={displayedIcon}\n isOpen={isOpen}\n description={description}\n title={title}\n />\n {children}\n </AutoReloadOverlayBlockerContext.Provider>\n );\n};\n\ninterface BlockerProps {\n displayedIcon: string;\n description: MessageDescriptor;\n isOpen: boolean;\n title: MessageDescriptor;\n}\n\nconst Blocker = ({ displayedIcon, description, title, isOpen }: BlockerProps) => {\n const { formatMessage } = useIntl();\n\n // eslint-disable-next-line no-undef\n return isOpen && globalThis?.document?.body\n ? createPortal(\n <Overlay id=\"autoReloadOverlayBlocker\" direction=\"column\" alignItems=\"center\" gap={6}>\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage(title)}\n </Typography>\n <Typography tag=\"h2\" textColor=\"neutral600\" fontSize={4} fontWeight=\"regular\">\n {formatMessage(description)}\n </Typography>\n </Flex>\n {displayedIcon === 'reload' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <LoaderReload width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n {displayedIcon === 'time' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <Clock width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n <Box marginTop={2}>\n <Link href=\"https://docs.strapi.io\" isExternal>\n {formatMessage({\n id: 'global.documentation',\n defaultMessage: 'Read the documentation',\n })}\n </Link>\n </Box>\n </Overlay>,\n // eslint-disable-next-line no-undef\n globalThis.document.body\n )\n : null;\n};\n\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n `;\n\nconst LoaderReload = styled(ArrowClockwise)`\n animation: ${rotation} 1s infinite linear;\n`;\n\nconst Overlay = styled(Flex)`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n /* TODO: set this up in the theme for consistence z-index values */\n z-index: 1140;\n padding-top: 16rem;\n\n & > * {\n position: relative;\n z-index: 1;\n }\n\n &:before {\n content: '';\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: ${({ theme }) => theme.colors.neutral0};\n opacity: 0.9;\n }\n`;\n\nconst IconBox = styled(Box)`\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n > path {\n fill: ${({ theme }) => theme.colors.primary600} !important;\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\nconst useAutoReloadOverlayBlocker = () => React.useContext(AutoReloadOverlayBlockerContext);\n\nexport { AutoReloadOverlayBlockerProvider, useAutoReloadOverlayBlocker };\n"],"names":["AutoReloadOverlayBlockerContext","React","createContext","lockAppWithAutoreload","unlockAppWithAutoreload","MAX_ELAPSED_TIME","AutoReloadOverlayBlockerProvider","children","isOpen","setIsOpen","useState","config","setConfig","failed","setFailed","useCallback","useEffect","timeout","setTimeout","clearTimeout","displayedIcon","icon","description","id","defaultMessage","title","autoReloadValue","useMemo","_jsxs","Provider","value","_jsx","Blocker","formatMessage","useIntl","globalThis","document","body","createPortal","Overlay","direction","alignItems","gap","Flex","Typography","tag","variant","textColor","fontSize","fontWeight","IconBox","padding","background","borderColor","LoaderReload","width","height","Clock","Box","marginTop","Link","href","isExternal","rotation","keyframes","styled","ArrowClockwise","theme","colors","neutral0","primary600","useAutoReloadOverlayBlocker","useContext"],"mappings":"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"}
@@ -8,6 +8,10 @@ var styledComponents = require('styled-components');
8
8
  var useDataManager = require('../DataManager/useDataManager.js');
9
9
  var ComponentIcon = require('./ComponentIcon/ComponentIcon.js');
10
10
 
11
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
+
13
+ var get__default = /*#__PURE__*/_interopDefault(get);
14
+
11
15
  const CloseButton = styledComponents.styled(designSystem.Box)`
12
16
  position: absolute;
13
17
  display: none;
@@ -58,7 +62,7 @@ const ComponentBox = styledComponents.styled(designSystem.Flex)`
58
62
  `;
59
63
  const ComponentCard = ({ component, dzName, index, isActive = false, isInDevelopmentMode = false, onClick, forTarget, targetUid, disabled })=>{
60
64
  const { components, removeComponentFromDynamicZone } = useDataManager.useDataManager();
61
- const type = get(components, component);
65
+ const type = get__default.default(components, component);
62
66
  const { icon, displayName } = type?.info || {};
63
67
  const onClose = (e)=>{
64
68
  e.stopPropagation();
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentCard.js","sources":["../../../../admin/src/components/ComponentCard/ComponentCard.tsx"],"sourcesContent":["import { Box, Flex, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport get from 'lodash/get';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../DataManager/useDataManager';\n\nimport { ComponentIcon } from './ComponentIcon';\n\nimport type { Internal, Struct } from '@strapi/types';\n\ninterface ComponentCardProps {\n component: string;\n dzName: string;\n index: number;\n isActive?: boolean;\n isInDevelopmentMode?: boolean;\n onClick?: () => void;\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n disabled?: boolean;\n}\n\nconst CloseButton = styled(Box)`\n position: absolute;\n display: none;\n top: 5px;\n right: 0.8rem;\n\n svg {\n width: 1rem;\n height: 1rem;\n\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n`;\n\nconst ComponentBox = styled(Flex)`\n width: 14rem;\n height: 8rem;\n position: relative;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n background: ${({ theme }) => theme.colors.neutral100};\n border-radius: ${({ theme }) => theme.borderRadius};\n max-width: 100%;\n\n &.active,\n &:focus,\n &:hover {\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n color: ${({ theme }) => theme.colors.primary600};\n\n ${CloseButton} {\n display: block;\n }\n\n /* > ComponentIcon */\n > div:first-child {\n background: ${({ theme }) => theme.colors.primary200};\n color: ${({ theme }) => theme.colors.primary600};\n\n svg {\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n }\n }\n`;\n\nexport const ComponentCard = ({\n component,\n dzName,\n index,\n isActive = false,\n isInDevelopmentMode = false,\n onClick,\n forTarget,\n targetUid,\n disabled,\n}: ComponentCardProps) => {\n const { components, removeComponentFromDynamicZone } = useDataManager();\n const type = get(components, component);\n const { icon, displayName } = type?.info || {};\n\n const onClose = (e: any) => {\n e.stopPropagation();\n removeComponentFromDynamicZone({\n forTarget,\n targetUid,\n dzName,\n componentToRemoveIndex: index,\n });\n };\n\n return (\n <ComponentBox\n alignItems=\"center\"\n direction=\"column\"\n className={isActive ? 'active' : ''}\n borderRadius=\"borderRadius\"\n justifyContent=\"center\"\n paddingLeft={4}\n paddingRight={4}\n shrink={0}\n onClick={onClick}\n role=\"tab\"\n tabIndex={isActive ? 0 : -1}\n cursor=\"pointer\"\n aria-selected={isActive}\n aria-controls={`dz-${dzName}-panel-${index}`}\n id={`dz-${dzName}-tab-${index}`}\n >\n <ComponentIcon icon={icon} isActive={isActive} />\n\n <Box marginTop={1} maxWidth=\"100%\">\n <Typography variant=\"pi\" fontWeight=\"bold\" ellipsis>\n {displayName}\n </Typography>\n </Box>\n\n {isInDevelopmentMode && !disabled && (\n <CloseButton cursor=\"pointer\" tag=\"button\" onClick={onClose}>\n <Cross />\n </CloseButton>\n )}\n </ComponentBox>\n );\n};\n"],"names":["CloseButton","styled","Box","theme","colors","primary600","ComponentBox","Flex","neutral200","neutral100","borderRadius","primary200","primary100","ComponentCard","component","dzName","index","isActive","isInDevelopmentMode","onClick","forTarget","targetUid","disabled","components","removeComponentFromDynamicZone","useDataManager","type","get","icon","displayName","info","onClose","e","stopPropagation","componentToRemoveIndex","_jsxs","alignItems","direction","className","justifyContent","paddingLeft","paddingRight","shrink","role","tabIndex","cursor","aria-selected","aria-controls","id","_jsx","ComponentIcon","marginTop","maxWidth","Typography","variant","fontWeight","ellipsis","tag","Cross"],"mappings":"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"}
1
+ {"version":3,"file":"ComponentCard.js","sources":["../../../../admin/src/components/ComponentCard/ComponentCard.tsx"],"sourcesContent":["import { Box, Flex, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport get from 'lodash/get';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../DataManager/useDataManager';\n\nimport { ComponentIcon } from './ComponentIcon';\n\nimport type { Internal, Struct } from '@strapi/types';\n\ninterface ComponentCardProps {\n component: string;\n dzName: string;\n index: number;\n isActive?: boolean;\n isInDevelopmentMode?: boolean;\n onClick?: () => void;\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n disabled?: boolean;\n}\n\nconst CloseButton = styled(Box)`\n position: absolute;\n display: none;\n top: 5px;\n right: 0.8rem;\n\n svg {\n width: 1rem;\n height: 1rem;\n\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n`;\n\nconst ComponentBox = styled(Flex)`\n width: 14rem;\n height: 8rem;\n position: relative;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n background: ${({ theme }) => theme.colors.neutral100};\n border-radius: ${({ theme }) => theme.borderRadius};\n max-width: 100%;\n\n &.active,\n &:focus,\n &:hover {\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n color: ${({ theme }) => theme.colors.primary600};\n\n ${CloseButton} {\n display: block;\n }\n\n /* > ComponentIcon */\n > div:first-child {\n background: ${({ theme }) => theme.colors.primary200};\n color: ${({ theme }) => theme.colors.primary600};\n\n svg {\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n }\n }\n`;\n\nexport const ComponentCard = ({\n component,\n dzName,\n index,\n isActive = false,\n isInDevelopmentMode = false,\n onClick,\n forTarget,\n targetUid,\n disabled,\n}: ComponentCardProps) => {\n const { components, removeComponentFromDynamicZone } = useDataManager();\n const type = get(components, component);\n const { icon, displayName } = type?.info || {};\n\n const onClose = (e: any) => {\n e.stopPropagation();\n removeComponentFromDynamicZone({\n forTarget,\n targetUid,\n dzName,\n componentToRemoveIndex: index,\n });\n };\n\n return (\n <ComponentBox\n alignItems=\"center\"\n direction=\"column\"\n className={isActive ? 'active' : ''}\n borderRadius=\"borderRadius\"\n justifyContent=\"center\"\n paddingLeft={4}\n paddingRight={4}\n shrink={0}\n onClick={onClick}\n role=\"tab\"\n tabIndex={isActive ? 0 : -1}\n cursor=\"pointer\"\n aria-selected={isActive}\n aria-controls={`dz-${dzName}-panel-${index}`}\n id={`dz-${dzName}-tab-${index}`}\n >\n <ComponentIcon icon={icon} isActive={isActive} />\n\n <Box marginTop={1} maxWidth=\"100%\">\n <Typography variant=\"pi\" fontWeight=\"bold\" ellipsis>\n {displayName}\n </Typography>\n </Box>\n\n {isInDevelopmentMode && !disabled && (\n <CloseButton cursor=\"pointer\" tag=\"button\" onClick={onClose}>\n <Cross />\n </CloseButton>\n )}\n </ComponentBox>\n );\n};\n"],"names":["CloseButton","styled","Box","theme","colors","primary600","ComponentBox","Flex","neutral200","neutral100","borderRadius","primary200","primary100","ComponentCard","component","dzName","index","isActive","isInDevelopmentMode","onClick","forTarget","targetUid","disabled","components","removeComponentFromDynamicZone","useDataManager","type","get","icon","displayName","info","onClose","e","stopPropagation","componentToRemoveIndex","_jsxs","alignItems","direction","className","justifyContent","paddingLeft","paddingRight","shrink","role","tabIndex","cursor","aria-selected","aria-controls","id","_jsx","ComponentIcon","marginTop","maxWidth","Typography","variant","fontWeight","ellipsis","tag","Cross"],"mappings":"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"}
@@ -6,9 +6,13 @@ var ComponentRow = require('./ComponentRow.js');
6
6
  var useDataManager = require('./DataManager/useDataManager.js');
7
7
  var List = require('./List.js');
8
8
 
9
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
+
11
+ var get__default = /*#__PURE__*/_interopDefault(get);
12
+
9
13
  const ComponentList = ({ component, isFromDynamicZone = false, firstLoopComponentUid })=>{
10
14
  const { components } = useDataManager.useDataManager();
11
- const type = get(components, component);
15
+ const type = get__default.default(components, component);
12
16
  if (!type) return;
13
17
  return /*#__PURE__*/ jsxRuntime.jsx(ComponentRow.ComponentRow, {
14
18
  $isChildOfDynamicZone: isFromDynamicZone,
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentList.js","sources":["../../../admin/src/components/ComponentList.tsx"],"sourcesContent":["import get from 'lodash/get';\n\nimport { ComponentRow } from './ComponentRow';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { List } from './List';\n\nimport type { UID } from '@strapi/types';\n\ninterface ComponentListProps {\n component: UID.Component;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n}\n\nexport const ComponentList = ({\n component,\n isFromDynamicZone = false,\n firstLoopComponentUid,\n}: ComponentListProps) => {\n const { components } = useDataManager();\n const type = get(components, component);\n\n if (!type) return;\n\n return (\n <ComponentRow $isChildOfDynamicZone={isFromDynamicZone} className=\"component-row\">\n <List\n type={type}\n firstLoopComponentUid={firstLoopComponentUid || component}\n isFromDynamicZone={isFromDynamicZone}\n isSub\n secondLoopComponentUid={firstLoopComponentUid ? component : null}\n />\n </ComponentRow>\n );\n};\n"],"names":["ComponentList","component","isFromDynamicZone","firstLoopComponentUid","components","useDataManager","type","get","_jsx","ComponentRow","$isChildOfDynamicZone","className","List","isSub","secondLoopComponentUid"],"mappings":";;;;;;;;AAcO,MAAMA,aAAAA,GAAgB,CAAC,EAC5BC,SAAS,EACTC,iBAAAA,GAAoB,KAAK,EACzBC,qBAAqB,EACF,GAAA;IACnB,MAAM,EAAEC,UAAU,EAAE,GAAGC,6BAAAA,EAAAA;IACvB,MAAMC,IAAAA,GAAOC,IAAIH,UAAAA,EAAYH,SAAAA,CAAAA;AAE7B,IAAA,IAAI,CAACK,IAAAA,EAAM;AAEX,IAAA,qBACEE,cAAA,CAACC,yBAAAA,EAAAA;QAAaC,qBAAAA,EAAuBR,iBAAAA;QAAmBS,SAAAA,EAAU,eAAA;AAChE,QAAA,QAAA,gBAAAH,cAAA,CAACI,SAAAA,EAAAA;YACCN,IAAAA,EAAMA,IAAAA;AACNH,YAAAA,qBAAAA,EAAuBA,qBAAAA,IAAyBF,SAAAA;YAChDC,iBAAAA,EAAmBA,iBAAAA;YACnBW,KAAK,EAAA,IAAA;AACLC,YAAAA,sBAAAA,EAAwBX,wBAAwBF,SAAAA,GAAY;;;AAIpE;;;;"}
1
+ {"version":3,"file":"ComponentList.js","sources":["../../../admin/src/components/ComponentList.tsx"],"sourcesContent":["import get from 'lodash/get';\n\nimport { ComponentRow } from './ComponentRow';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { List } from './List';\n\nimport type { UID } from '@strapi/types';\n\ninterface ComponentListProps {\n component: UID.Component;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n}\n\nexport const ComponentList = ({\n component,\n isFromDynamicZone = false,\n firstLoopComponentUid,\n}: ComponentListProps) => {\n const { components } = useDataManager();\n const type = get(components, component);\n\n if (!type) return;\n\n return (\n <ComponentRow $isChildOfDynamicZone={isFromDynamicZone} className=\"component-row\">\n <List\n type={type}\n firstLoopComponentUid={firstLoopComponentUid || component}\n isFromDynamicZone={isFromDynamicZone}\n isSub\n secondLoopComponentUid={firstLoopComponentUid ? component : null}\n />\n </ComponentRow>\n );\n};\n"],"names":["ComponentList","component","isFromDynamicZone","firstLoopComponentUid","components","useDataManager","type","get","_jsx","ComponentRow","$isChildOfDynamicZone","className","List","isSub","secondLoopComponentUid"],"mappings":";;;;;;;;;;;;AAcO,MAAMA,aAAAA,GAAgB,CAAC,EAC5BC,SAAS,EACTC,iBAAAA,GAAoB,KAAK,EACzBC,qBAAqB,EACF,GAAA;IACnB,MAAM,EAAEC,UAAU,EAAE,GAAGC,6BAAAA,EAAAA;IACvB,MAAMC,IAAAA,GAAOC,qBAAIH,UAAAA,EAAYH,SAAAA,CAAAA;AAE7B,IAAA,IAAI,CAACK,IAAAA,EAAM;AAEX,IAAA,qBACEE,cAAA,CAACC,yBAAAA,EAAAA;QAAaC,qBAAAA,EAAuBR,iBAAAA;QAAmBS,SAAAA,EAAU,eAAA;AAChE,QAAA,QAAA,gBAAAH,cAAA,CAACI,SAAAA,EAAAA;YACCN,IAAAA,EAAMA,IAAAA;AACNH,YAAAA,qBAAAA,EAAuBA,qBAAAA,IAAyBF,SAAAA;YAChDC,iBAAAA,EAAmBA,iBAAAA;YACnBW,KAAK,EAAA,IAAA;AACLC,YAAAA,sBAAAA,EAAwBX,wBAAwBF,SAAAA,GAAY;;;AAIpE;;;;"}
@@ -12,6 +12,10 @@ var useCTBTracking = require('../CTBSession/useCTBTracking.js');
12
12
  var useDataManager = require('../DataManager/useDataManager.js');
13
13
  var useFormModalNavigation = require('../FormModalNavigation/useFormModalNavigation.js');
14
14
 
15
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
+
17
+ var upperFirst__default = /*#__PURE__*/_interopDefault(upperFirst);
18
+
15
19
  const useContentTypeBuilderMenu = ()=>{
16
20
  const { componentsGroupedByCategory, isInDevelopmentMode, sortedContentTypesList } = useDataManager.useDataManager();
17
21
  const { trackUsage } = useCTBTracking.useCTBTracking();
@@ -56,7 +60,7 @@ const useContentTypeBuilderMenu = ()=>{
56
60
  };
57
61
  const componentsData = Object.entries(componentsGroupedByCategory).map(([category, components])=>({
58
62
  name: category,
59
- title: upperFirst(category),
63
+ title: upperFirst__default.default(category),
60
64
  links: components.map((component)=>({
61
65
  name: component.uid,
62
66
  to: `/plugins/${pluginId.pluginId}/component-categories/${category}/${component.uid}`,
@@ -1 +1 @@
1
- {"version":3,"file":"useContentTypeBuilderMenu.js","sources":["../../../../admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\nimport { useCTBTracking } from '../CTBSession/ctbSession';\nimport { useDataManager } from '../DataManager/useDataManager';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport type { Status } from '../../types';\n\ntype Link = {\n name: string;\n to: string;\n status: Status;\n title: string;\n};\n\ntype SubSection = {\n name: string;\n title: string;\n links: Link[];\n};\n\ntype MenuSection = {\n name: string;\n title: {\n id: string;\n defaultMessage: string;\n };\n customLink?: {\n id: string;\n defaultMessage: string;\n onClick: () => void;\n };\n links: Array<SubSection | Link>;\n linksCount?: number;\n};\n\ntype Menu = MenuSection[];\n\nexport const useContentTypeBuilderMenu = () => {\n const { componentsGroupedByCategory, isInDevelopmentMode, sortedContentTypesList } =\n useDataManager();\n const { trackUsage } = useCTBTracking();\n const [searchValue, setSearchValue] = useState('');\n const { onOpenModalCreateSchema } = useFormModalNavigation();\n const { locale } = useIntl();\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOpenModalCreateCollectionType = () => {\n trackUsage(`willCreateContentType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'collectionType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateSingleType = () => {\n trackUsage(`willCreateSingleType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'singleType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateComponent = () => {\n trackUsage('willCreateComponent');\n\n const nextState = {\n modalType: 'component',\n kind: null,\n actionType: 'create',\n forTarget: 'component',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const componentsData = Object.entries(componentsGroupedByCategory)\n .map(([category, components]) => ({\n name: category,\n title: upperFirst(category),\n links: components\n .map((component) => ({\n name: component.uid,\n to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,\n title: component.info.displayName,\n status: component.status,\n }))\n .sort((a, b) => formatter.compare(a.title, b.title)),\n }))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n const displayedContentTypes = sortedContentTypesList\n .filter((obj) => obj.visible)\n .map((info) => ({\n kind: info.kind,\n name: info.name,\n to: info.to,\n title: info.title,\n status: info.status,\n }));\n\n const data: Menu = [\n {\n name: 'models',\n title: {\n id: `${getTrad('menu.section.models.name')}`,\n defaultMessage: 'Collection Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.model.create')}`,\n defaultMessage: 'Create new collection type',\n onClick: handleClickOpenModalCreateCollectionType,\n }\n : undefined,\n links: displayedContentTypes.filter((contentType) => contentType.kind === 'collectionType'),\n },\n {\n name: 'singleTypes',\n title: {\n id: `${getTrad('menu.section.single-types.name')}`,\n defaultMessage: 'Single Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.single-types.create')}`,\n defaultMessage: 'Create new single type',\n onClick: handleClickOpenModalCreateSingleType,\n }\n : undefined,\n links: displayedContentTypes.filter((singleType) => singleType.kind === 'singleType'),\n },\n {\n name: 'components',\n title: {\n id: `${getTrad('menu.section.components.name')}`,\n defaultMessage: 'Components',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.component.create')}`,\n defaultMessage: 'Create a new component',\n onClick: handleClickOpenModalCreateComponent,\n }\n : undefined,\n links: componentsData,\n },\n ].map((section) => {\n const hasChild = section.links.some((l) => 'links' in l && Array.isArray(l.links));\n\n if (hasChild) {\n let filteredLinksCount = 0;\n\n return {\n ...section,\n links: section.links.reduce((acc, link) => {\n const filteredLinks =\n 'links' in link ? link.links.filter((link) => contains(link.title, searchValue)) : [];\n\n if (filteredLinks.length === 0) {\n return acc;\n }\n\n filteredLinksCount += filteredLinks.length;\n\n acc.push({\n ...link,\n links: filteredLinks.sort((a, b) => formatter.compare(a.title, b.title)),\n });\n\n return acc;\n }, [] as SubSection[]),\n linksCount: filteredLinksCount,\n };\n }\n\n const filteredLinks = section.links\n .filter((link) => contains(link.title, searchValue))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n return {\n ...section,\n links: filteredLinks,\n linksCount: filteredLinks.length,\n };\n });\n\n return {\n menu: data,\n search: {\n value: searchValue,\n onChange: setSearchValue,\n clear: () => setSearchValue(''),\n },\n };\n};\n"],"names":["useContentTypeBuilderMenu","componentsGroupedByCategory","isInDevelopmentMode","sortedContentTypesList","useDataManager","trackUsage","useCTBTracking","searchValue","setSearchValue","useState","onOpenModalCreateSchema","useFormModalNavigation","locale","useIntl","contains","useFilter","sensitivity","formatter","useCollator","handleClickOpenModalCreateCollectionType","nextState","modalType","kind","actionType","forTarget","handleClickOpenModalCreateSingleType","handleClickOpenModalCreateComponent","componentsData","Object","entries","map","category","components","name","title","upperFirst","links","component","uid","to","pluginId","info","displayName","status","sort","a","b","compare","displayedContentTypes","filter","obj","visible","data","id","getTrad","defaultMessage","customLink","onClick","undefined","contentType","singleType","section","hasChild","some","l","Array","isArray","filteredLinksCount","reduce","acc","link","filteredLinks","length","push","linksCount","menu","search","value","onChange","clear"],"mappings":"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"}
1
+ {"version":3,"file":"useContentTypeBuilderMenu.js","sources":["../../../../admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\nimport { useCTBTracking } from '../CTBSession/ctbSession';\nimport { useDataManager } from '../DataManager/useDataManager';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport type { Status } from '../../types';\n\ntype Link = {\n name: string;\n to: string;\n status: Status;\n title: string;\n};\n\ntype SubSection = {\n name: string;\n title: string;\n links: Link[];\n};\n\ntype MenuSection = {\n name: string;\n title: {\n id: string;\n defaultMessage: string;\n };\n customLink?: {\n id: string;\n defaultMessage: string;\n onClick: () => void;\n };\n links: Array<SubSection | Link>;\n linksCount?: number;\n};\n\ntype Menu = MenuSection[];\n\nexport const useContentTypeBuilderMenu = () => {\n const { componentsGroupedByCategory, isInDevelopmentMode, sortedContentTypesList } =\n useDataManager();\n const { trackUsage } = useCTBTracking();\n const [searchValue, setSearchValue] = useState('');\n const { onOpenModalCreateSchema } = useFormModalNavigation();\n const { locale } = useIntl();\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOpenModalCreateCollectionType = () => {\n trackUsage(`willCreateContentType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'collectionType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateSingleType = () => {\n trackUsage(`willCreateSingleType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'singleType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateComponent = () => {\n trackUsage('willCreateComponent');\n\n const nextState = {\n modalType: 'component',\n kind: null,\n actionType: 'create',\n forTarget: 'component',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const componentsData = Object.entries(componentsGroupedByCategory)\n .map(([category, components]) => ({\n name: category,\n title: upperFirst(category),\n links: components\n .map((component) => ({\n name: component.uid,\n to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,\n title: component.info.displayName,\n status: component.status,\n }))\n .sort((a, b) => formatter.compare(a.title, b.title)),\n }))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n const displayedContentTypes = sortedContentTypesList\n .filter((obj) => obj.visible)\n .map((info) => ({\n kind: info.kind,\n name: info.name,\n to: info.to,\n title: info.title,\n status: info.status,\n }));\n\n const data: Menu = [\n {\n name: 'models',\n title: {\n id: `${getTrad('menu.section.models.name')}`,\n defaultMessage: 'Collection Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.model.create')}`,\n defaultMessage: 'Create new collection type',\n onClick: handleClickOpenModalCreateCollectionType,\n }\n : undefined,\n links: displayedContentTypes.filter((contentType) => contentType.kind === 'collectionType'),\n },\n {\n name: 'singleTypes',\n title: {\n id: `${getTrad('menu.section.single-types.name')}`,\n defaultMessage: 'Single Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.single-types.create')}`,\n defaultMessage: 'Create new single type',\n onClick: handleClickOpenModalCreateSingleType,\n }\n : undefined,\n links: displayedContentTypes.filter((singleType) => singleType.kind === 'singleType'),\n },\n {\n name: 'components',\n title: {\n id: `${getTrad('menu.section.components.name')}`,\n defaultMessage: 'Components',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.component.create')}`,\n defaultMessage: 'Create a new component',\n onClick: handleClickOpenModalCreateComponent,\n }\n : undefined,\n links: componentsData,\n },\n ].map((section) => {\n const hasChild = section.links.some((l) => 'links' in l && Array.isArray(l.links));\n\n if (hasChild) {\n let filteredLinksCount = 0;\n\n return {\n ...section,\n links: section.links.reduce((acc, link) => {\n const filteredLinks =\n 'links' in link ? link.links.filter((link) => contains(link.title, searchValue)) : [];\n\n if (filteredLinks.length === 0) {\n return acc;\n }\n\n filteredLinksCount += filteredLinks.length;\n\n acc.push({\n ...link,\n links: filteredLinks.sort((a, b) => formatter.compare(a.title, b.title)),\n });\n\n return acc;\n }, [] as SubSection[]),\n linksCount: filteredLinksCount,\n };\n }\n\n const filteredLinks = section.links\n .filter((link) => contains(link.title, searchValue))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n return {\n ...section,\n links: filteredLinks,\n linksCount: filteredLinks.length,\n };\n });\n\n return {\n menu: data,\n search: {\n value: searchValue,\n onChange: setSearchValue,\n clear: () => setSearchValue(''),\n },\n };\n};\n"],"names":["useContentTypeBuilderMenu","componentsGroupedByCategory","isInDevelopmentMode","sortedContentTypesList","useDataManager","trackUsage","useCTBTracking","searchValue","setSearchValue","useState","onOpenModalCreateSchema","useFormModalNavigation","locale","useIntl","contains","useFilter","sensitivity","formatter","useCollator","handleClickOpenModalCreateCollectionType","nextState","modalType","kind","actionType","forTarget","handleClickOpenModalCreateSingleType","handleClickOpenModalCreateComponent","componentsData","Object","entries","map","category","components","name","title","upperFirst","links","component","uid","to","pluginId","info","displayName","status","sort","a","b","compare","displayedContentTypes","filter","obj","visible","data","id","getTrad","defaultMessage","customLink","onClick","undefined","contentType","singleType","section","hasChild","some","l","Array","isArray","filteredLinksCount","reduce","acc","link","filteredLinks","length","push","linksCount","menu","search","value","onChange","clear"],"mappings":"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"}
@@ -23,7 +23,10 @@ var retrieveComponentsThatHaveComponents = require('./utils/retrieveComponentsTh
23
23
  var retrieveNestedComponents = require('./utils/retrieveNestedComponents.js');
24
24
  var retrieveSpecificInfoFromComponents = require('./utils/retrieveSpecificInfoFromComponents.js');
25
25
 
26
- function _interopNamespaceDefault(e) {
26
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
27
+
28
+ function _interopNamespace(e) {
29
+ if (e && e.__esModule) return e;
27
30
  var n = Object.create(null);
28
31
  if (e) {
29
32
  Object.keys(e).forEach(function (k) {
@@ -40,7 +43,10 @@ function _interopNamespaceDefault(e) {
40
43
  return Object.freeze(n);
41
44
  }
42
45
 
43
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
46
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
47
+ var groupBy__default = /*#__PURE__*/_interopDefault(groupBy);
48
+ var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
49
+ var mapValues__default = /*#__PURE__*/_interopDefault(mapValues);
44
50
 
45
51
  const selectState = (state)=>state['content-type-builder_dataManagerProvider'] || reducer.initialState;
46
52
  /**
@@ -77,7 +83,7 @@ const DataManagerProvider = ({ children })=>{
77
83
  const [isSaving, setIsSaving] = React__namespace.useState(false);
78
84
  const previousLocationRef = React__namespace.useRef(null);
79
85
  const isModified = React__namespace.useMemo(()=>{
80
- return !(isEqual(components, initialComponents) && isEqual(contentTypes, initialContentTypes));
86
+ return !(isEqual__default.default(components, initialComponents) && isEqual__default.default(contentTypes, initialContentTypes));
81
87
  }, [
82
88
  components,
83
89
  contentTypes,
@@ -95,11 +101,11 @@ const DataManagerProvider = ({ children })=>{
95
101
  ]);
96
102
  const { components, contentTypes } = schemaResponse.data.data;
97
103
  dispatch(reducer.actions.init({
98
- components: mapValues(components, (component)=>({
104
+ components: mapValues__default.default(components, (component)=>({
99
105
  ...component,
100
106
  status: 'UNCHANGED'
101
107
  })),
102
- contentTypes: mapValues(contentTypes, (contentType)=>({
108
+ contentTypes: mapValues__default.default(contentTypes, (contentType)=>({
103
109
  ...contentType,
104
110
  status: 'UNCHANGED'
105
111
  })),
@@ -261,7 +267,7 @@ const DataManagerProvider = ({ children })=>{
261
267
  components
262
268
  ]);
263
269
  const componentsGroupedByCategory = React__namespace.useMemo(()=>{
264
- return groupBy(components, 'category');
270
+ return groupBy__default.default(components, 'category');
265
271
  }, [
266
272
  components
267
273
  ]);