@strapi/content-type-builder 5.0.0-beta.8 → 5.0.0-rc.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 (41) hide show
  1. package/LICENSE +18 -3
  2. package/dist/_chunks/{ListView-CyNHQ-YV.mjs → ListView-CY9uKqop.mjs} +2 -2
  3. package/dist/_chunks/{ListView-CyNHQ-YV.mjs.map → ListView-CY9uKqop.mjs.map} +1 -1
  4. package/dist/_chunks/{ListView-j9TFQZBa.js → ListView-g9V7g_tv.js} +2 -2
  5. package/dist/_chunks/{ListView-j9TFQZBa.js.map → ListView-g9V7g_tv.js.map} +1 -1
  6. package/dist/_chunks/{en-BnToboMV.js → en-CXG5y_vo.js} +2 -2
  7. package/dist/_chunks/{en-BnToboMV.js.map → en-CXG5y_vo.js.map} +1 -1
  8. package/dist/_chunks/{en-BbczxQBr.mjs → en-jBwb53yg.mjs} +2 -2
  9. package/dist/_chunks/{en-BbczxQBr.mjs.map → en-jBwb53yg.mjs.map} +1 -1
  10. package/dist/_chunks/{index-1y0vXVON.mjs → index-BLvlfjLT.mjs} +12 -14
  11. package/dist/_chunks/index-BLvlfjLT.mjs.map +1 -0
  12. package/dist/_chunks/{index-DnkyThcz.mjs → index-BpIP_u5V.mjs} +260 -247
  13. package/dist/_chunks/index-BpIP_u5V.mjs.map +1 -0
  14. package/dist/_chunks/{index-BHhTJaW2.js → index-Z-KG7c7n.js} +258 -245
  15. package/dist/_chunks/index-Z-KG7c7n.js.map +1 -0
  16. package/dist/_chunks/{index-BwQpCent.js → index-hlyv9EE3.js} +12 -14
  17. package/dist/_chunks/index-hlyv9EE3.js.map +1 -0
  18. package/dist/admin/index.js +1 -1
  19. package/dist/admin/index.mjs +1 -1
  20. package/dist/admin/src/components/AttributeOptions/OptionBoxWrapper.d.ts +7 -3
  21. package/dist/admin/src/components/BoxWrapper.d.ts +7 -3
  22. package/dist/admin/src/components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents.d.ts +11 -3
  23. package/dist/admin/src/components/DataManagerProvider/utils/retrieveNestedComponents.d.ts +8 -1
  24. package/dist/admin/src/components/FormModal/utils/getAttributesToDisplay.d.ts +2 -1
  25. package/dist/admin/src/components/ListRow.d.ts +7 -3
  26. package/dist/admin/src/components/Relation/RelationNaturePicker/Components.d.ts +12 -4
  27. package/dist/admin/src/components/SelectComponent.d.ts +2 -1
  28. package/dist/admin/src/constants.d.ts +1 -0
  29. package/dist/admin/src/utils/getMaxDepth.d.ts +23 -0
  30. package/dist/server/index.js +3 -22
  31. package/dist/server/index.js.map +1 -1
  32. package/dist/server/index.mjs +3 -22
  33. package/dist/server/index.mjs.map +1 -1
  34. package/dist/server/src/controllers/validation/types.d.ts.map +1 -1
  35. package/dist/server/src/utils/attributes.d.ts +1 -2
  36. package/dist/server/src/utils/attributes.d.ts.map +1 -1
  37. package/package.json +8 -8
  38. package/dist/_chunks/index-1y0vXVON.mjs.map +0 -1
  39. package/dist/_chunks/index-BHhTJaW2.js.map +0 -1
  40. package/dist/_chunks/index-BwQpCent.js.map +0 -1
  41. package/dist/_chunks/index-DnkyThcz.mjs.map +0 -1
package/LICENSE CHANGED
@@ -2,7 +2,21 @@ Copyright (c) 2015-present Strapi Solutions SAS
2
2
 
3
3
  Portions of the Strapi software are licensed as follows:
4
4
 
5
- * All software that resides under an "ee/" directory (the “EE Software”), if that directory exists, is licensed under the license defined in "ee/LICENSE".
5
+ * All software that resides under an "ee/" directory (the “EE Software”), if that directory exists, is licensed under the license defined below.
6
+
7
+ Enterprise License
8
+
9
+ If you or the company you represent has entered into a written agreement referencing the Enterprise Edition of the Strapi source code available at
10
+ https://github.com/strapi/strapi, then such agreement applies to your use of the Enterprise Edition of the Strapi Software. If you or the company you
11
+ represent is using the Enterprise Edition of the Strapi Software in connection with a subscription to our cloud offering, then the agreement you have
12
+ agreed to with respect to our cloud offering and the licenses included in such agreement apply to your use of the Enterprise Edition of the Strapi Software.
13
+ Otherwise, the Strapi Enterprise Software License Agreement (found here https://strapi.io/enterprise-terms) applies to your use of the Enterprise Edition of the Strapi Software.
14
+
15
+ BY ACCESSING OR USING THE ENTERPRISE EDITION OF THE STRAPI SOFTWARE, YOU ARE AGREEING TO BE BOUND BY THE RELEVANT REFERENCED AGREEMENT.
16
+ IF YOU ARE NOT AUTHORIZED TO ACCEPT THESE TERMS ON BEHALF OF THE COMPANY YOU REPRESENT OR IF YOU DO NOT AGREE TO ALL OF THE RELEVANT TERMS AND CONDITIONS REFERENCED AND YOU
17
+ HAVE NOT OTHERWISE EXECUTED A WRITTEN AGREEMENT WITH STRAPI, YOU ARE NOT AUTHORIZED TO ACCESS OR USE OR ALLOW ANY USER TO ACCESS OR USE ANY PART OF
18
+ THE ENTERPRISE EDITION OF THE STRAPI SOFTWARE. YOUR ACCESS RIGHTS ARE CONDITIONAL ON YOUR CONSENT TO THE RELEVANT REFERENCED TERMS TO THE EXCLUSION OF ALL OTHER TERMS;
19
+ IF THE RELEVANT REFERENCED TERMS ARE CONSIDERED AN OFFER BY YOU, ACCEPTANCE IS EXPRESSLY LIMITED TO THE RELEVANT REFERENCED TERMS.
6
20
 
7
21
  * All software outside of the above-mentioned directories or restrictions above is available under the "MIT Expat" license as set forth below.
8
22
 
@@ -18,5 +32,6 @@ furnished to do so, subject to the following conditions:
18
32
  The above copyright notice and this permission notice shall be included in all
19
33
  copies or substantial portions of the Software.
20
34
 
21
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
- SOFTWARE.
35
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
36
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
37
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -10,7 +10,7 @@ import { useIntl } from "react-intl";
10
10
  import { useNavigate, useMatch, unstable_usePrompt } from "react-router-dom";
11
11
  import { useState, createElement, Fragment, memo } from "react";
12
12
  import { EmptyDocuments } from "@strapi/icons/symbols";
13
- import { u as useDataManager, C as COMPONENT_ICONS, g as getTrad, a as useFormModalNavigation, A as AttributeIcon } from "./index-DnkyThcz.mjs";
13
+ import { u as useDataManager, C as COMPONENT_ICONS, g as getTrad, a as useFormModalNavigation, A as AttributeIcon } from "./index-BpIP_u5V.mjs";
14
14
  import { styled } from "styled-components";
15
15
  const BoxWrapper$1 = styled(Box)`
16
16
  table {
@@ -951,4 +951,4 @@ const ListView = () => {
951
951
  export {
952
952
  ListView as default
953
953
  };
954
- //# sourceMappingURL=ListView-CyNHQ-YV.mjs.map
954
+ //# sourceMappingURL=ListView-CY9uKqop.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListView-CyNHQ-YV.mjs","sources":["../../admin/src/components/BoxWrapper.tsx","../../admin/src/components/Tr.tsx","../../admin/src/components/ComponentList.tsx","../../admin/src/components/ComponentCard/ComponentIcon/ComponentIcon.tsx","../../admin/src/components/ComponentCard/ComponentCard.tsx","../../admin/src/components/DynamicZoneList.tsx","../../admin/src/components/NestedFooter.tsx","../../admin/src/components/List.tsx","../../admin/src/icons/Curve.tsx","../../admin/src/components/DisplayedType.tsx","../../admin/src/components/UpperFirst.tsx","../../admin/src/components/ListRow.tsx","../../admin/src/utils/getAttributeDisplayedType.ts","../../admin/src/pages/ListView/LinkToCMSettingsView.tsx","../../admin/src/pages/ListView/ListView.tsx"],"sourcesContent":["import { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nexport const BoxWrapper = styled(Box)`\n table {\n width: 100%;\n white-space: nowrap;\n }\n\n thead {\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};\n\n tr {\n border-top: 0;\n }\n }\n\n tr {\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n\n & td,\n & th {\n padding: ${({ theme }) => theme.spaces[4]};\n }\n\n & td:first-of-type,\n & th:first-of-type {\n padding: 0 ${({ theme }) => theme.spaces[1]};\n }\n }\n\n th,\n td {\n vertical-align: middle;\n text-align: left;\n color: ${({ theme }) => theme.colors.neutral600};\n outline-offset: -4px;\n }\n`;\n","import { styled } from 'styled-components';\n\n// Keep component-row for css specificity\nexport const Tr = styled.tr<{\n $isFromDynamicZone?: boolean;\n $isChildOfDynamicZone?: boolean;\n}>`\n &.component-row,\n &.dynamiczone-row {\n position: relative;\n border-top: none !important;\n\n table tr:first-child {\n border-top: none;\n }\n\n > td:first-of-type {\n padding: 0 0 0 2rem;\n position: relative;\n\n &::before {\n content: '';\n width: 0.4rem;\n height: calc(100% - 40px);\n position: absolute;\n top: -7px;\n left: 2.6rem;\n border-radius: 4px;\n\n ${({ $isFromDynamicZone, $isChildOfDynamicZone, theme }) => {\n if ($isChildOfDynamicZone) {\n return `background-color: ${theme.colors.primary200};`;\n }\n\n if ($isFromDynamicZone) {\n return `background-color: ${theme.colors.primary200};`;\n }\n\n return `background: ${theme.colors.neutral150};`;\n }}\n }\n }\n }\n\n &.dynamiczone-row > td:first-of-type {\n padding: 0;\n }\n`;\n","import get from 'lodash/get';\n\nimport { useDataManager } from '../hooks/useDataManager';\n\nimport { List } from './List';\nimport { Tr } from './Tr';\n\nimport type { Internal } from '@strapi/types';\n\ninterface ComponentListProps {\n component: Internal.UID.Component;\n customRowComponent: any;\n firstLoopComponentUid?: string;\n isFromDynamicZone?: boolean;\n isNestedInDZComponent?: boolean;\n}\n\nexport const ComponentList = ({\n customRowComponent,\n component,\n isFromDynamicZone = false,\n isNestedInDZComponent = false,\n firstLoopComponentUid,\n}: ComponentListProps) => {\n const { modifiedData } = useDataManager();\n const {\n schema: { attributes },\n } = get(modifiedData, ['components', component], {\n schema: { attributes: [] },\n });\n\n return (\n <Tr $isChildOfDynamicZone={isFromDynamicZone} className=\"component-row\">\n <td colSpan={12}>\n <List\n customRowComponent={customRowComponent}\n items={attributes}\n targetUid={component}\n firstLoopComponentUid={firstLoopComponentUid || component}\n editTarget=\"components\"\n isFromDynamicZone={isFromDynamicZone}\n isNestedInDZComponent={isNestedInDZComponent}\n isSub\n secondLoopComponentUid={firstLoopComponentUid ? component : null}\n />\n </td>\n </Tr>\n );\n};\n","import { Flex } from '@strapi/design-system';\n\nimport { COMPONENT_ICONS } from '../../IconPicker/constants';\n\ninterface ComponentIconProps {\n isActive?: boolean;\n icon?: keyof typeof COMPONENT_ICONS;\n}\n\nexport const ComponentIcon = ({ isActive = false, icon = 'dashboard' }: ComponentIconProps) => {\n const Icon = COMPONENT_ICONS[icon] || COMPONENT_ICONS.dashboard;\n\n return (\n <Flex\n alignItems=\"center\"\n background={isActive ? 'primary200' : 'neutral200'}\n justifyContent=\"center\"\n height={8}\n width={8}\n borderRadius=\"50%\"\n >\n <Icon height=\"2rem\" width=\"2rem\" />\n </Flex>\n );\n};\n","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 '../../hooks/useDataManager';\n\nimport { ComponentIcon } from './ComponentIcon';\n\ninterface ComponentCardProps {\n component: string;\n dzName: string;\n index: number;\n isActive?: boolean;\n isInDevelopmentMode?: boolean;\n onClick?: () => void;\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}: ComponentCardProps) => {\n const { modifiedData, removeComponentFromDynamicZone } = useDataManager();\n const {\n schema: { icon, displayName },\n } = get(modifiedData, ['components', component], { schema: {} });\n\n const onClose = (e: any) => {\n e.stopPropagation();\n removeComponentFromDynamicZone(dzName, index);\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 && (\n <CloseButton tag=\"button\" onClick={onClose}>\n <Cross />\n </CloseButton>\n )}\n </ComponentBox>\n );\n};\n","import { useState } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../hooks/useDataManager';\nimport { getTrad } from '../utils/getTrad';\n\nimport { ComponentCard } from './ComponentCard';\nimport { ComponentList } from './ComponentList';\nimport { Tr } from './Tr';\n\nimport type { Internal } from '@strapi/types';\n\ninterface DynamicZoneListProps {\n addComponent: (name?: string) => void;\n components: Array<string>;\n customRowComponent?: () => void;\n name?: string;\n targetUid: Internal.UID.Component;\n}\n\nconst StyledAddIcon = styled(Plus)`\n width: 3.2rem;\n height: 3.2rem;\n padding: 0.9rem;\n border-radius: 6.4rem;\n background: ${({ theme }) => theme.colors.primary100};\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nconst FixedBox = styled(Box)`\n height: 9rem;\n position: absolute;\n width: 100%;\n top: 0;\n left: 0;\n`;\n\nconst ScrollableStack = styled(Flex)`\n width: 100%;\n overflow-x: auto;\n`;\n\nconst ComponentContentBox = styled(Box)`\n padding-top: 9rem;\n`;\n\nconst ComponentStack = styled(Flex)`\n flex-shrink: 0;\n width: 14rem;\n height: 8rem;\n justify-content: center;\n align-items: center;\n`;\n\nexport const DynamicZoneList = ({\n customRowComponent,\n components = [],\n addComponent,\n name,\n targetUid,\n}: DynamicZoneListProps) => {\n const { isInDevelopmentMode } = useDataManager();\n const [activeTab, setActiveTab] = useState(0);\n const { formatMessage } = useIntl();\n\n const toggle = (tab: number) => {\n if (activeTab !== tab) {\n setActiveTab(tab);\n }\n };\n\n const handleClickAdd = () => {\n addComponent(name);\n };\n\n return (\n <Tr className=\"dynamiczone-row\" $isFromDynamicZone>\n <td colSpan={12}>\n <FixedBox paddingLeft={8}>\n <ScrollableStack gap={2}>\n {isInDevelopmentMode && (\n <button type=\"button\" onClick={handleClickAdd}>\n <ComponentStack direction=\"column\" alignItems=\"stretch\" gap={1}>\n <StyledAddIcon />\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"primary600\">\n {formatMessage({\n id: getTrad('button.component.add'),\n defaultMessage: 'Add a component',\n })}\n </Typography>\n </ComponentStack>\n </button>\n )}\n <Flex role=\"tablist\" gap={2}>\n {components.map((component, index) => {\n return (\n <ComponentCard\n key={component}\n dzName={name || ''}\n index={index}\n component={component}\n isActive={activeTab === index}\n isInDevelopmentMode={isInDevelopmentMode}\n onClick={() => toggle(index)}\n />\n );\n })}\n </Flex>\n </ScrollableStack>\n </FixedBox>\n <ComponentContentBox>\n {components.map((component, index) => {\n const props = {\n customRowComponent,\n component,\n };\n\n return (\n <Box\n id={`dz-${name}-panel-${index}`}\n role=\"tabpanel\"\n aria-labelledby={`dz-${name}-tab-${index}`}\n key={component}\n style={{ display: activeTab === index ? 'block' : 'none' }}\n >\n <table>\n <tbody>\n <ComponentList\n {...props}\n isFromDynamicZone\n component={targetUid}\n key={component}\n />\n </tbody>\n </table>\n </Box>\n );\n })}\n </ComponentContentBox>\n </td>\n </Tr>\n );\n};\n","import type { ReactNode } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst IconBox = styled(Box)`\n height: 2.4rem;\n width: 2.4rem;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n height: 1rem;\n width: 1rem;\n }\n\n svg path {\n fill: ${({ theme, color }) => theme.colors[`${color}600`]};\n }\n`;\n\nconst ButtonBox = styled(Box)`\n border-radius: 0 0 ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius};\n display: block;\n width: 100%;\n border: none;\n position: relative;\n left: -0.4rem;\n`;\n\ninterface NestedTFooterProps {\n color: string;\n children: ReactNode;\n icon: ReactNode;\n onClick?: () => void;\n}\n\nexport const NestedTFooter = ({ children, icon, color, ...props }: NestedTFooterProps) => {\n return (\n <ButtonBox paddingBottom={4} paddingTop={4} tag=\"button\" type=\"button\" {...props}>\n <Flex>\n <IconBox color={color} aria-hidden background={`${color}200`}>\n {icon}\n </IconBox>\n <Box paddingLeft={3}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor={`${color}600`}>\n {children}\n </Typography>\n </Box>\n </Flex>\n </ButtonBox>\n );\n};\n","import { ComponentType, Fragment } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n EmptyStateLayout,\n Table,\n Tbody,\n Td,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { useDataManager } from '../hooks/useDataManager';\nimport { useFormModalNavigation } from '../hooks/useFormModalNavigation';\nimport { getTrad } from '../utils/getTrad';\n\nimport { BoxWrapper } from './BoxWrapper';\nimport { ComponentList } from './ComponentList';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { NestedTFooter } from './NestedFooter';\n\nimport type { SchemaType } from '../types';\nimport type { Internal } from '@strapi/types';\n\ninterface ListProps {\n addComponentToDZ?: () => void;\n customRowComponent: ComponentType<any>;\n editTarget: SchemaType;\n firstLoopComponentUid?: string;\n isFromDynamicZone?: boolean;\n isNestedInDZComponent?: boolean;\n isMain?: boolean;\n items: any[];\n secondLoopComponentUid?: string | null;\n targetUid?: Internal.UID.Schema;\n isSub?: boolean;\n}\n\nexport const List = ({\n addComponentToDZ,\n customRowComponent,\n editTarget,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isNestedInDZComponent = false,\n isSub = false,\n items = [],\n secondLoopComponentUid,\n targetUid,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { isInDevelopmentMode, modifiedData, isInContentTypeView } = useDataManager();\n\n const { onOpenModalAddField } = useFormModalNavigation();\n const onClickAddField = () => {\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: editTarget, targetUid });\n };\n\n if (!targetUid) {\n return (\n <Table colCount={2} rowCount={2}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.type', defaultMessage: 'Type' })}\n </Typography>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n <Tr>\n <Td colSpan={2}>\n <EmptyStateLayout\n content={formatMessage({\n id: getTrad('table.content.create-first-content-type'),\n defaultMessage: 'Create your first Collection-Type',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n </Td>\n </Tr>\n </Tbody>\n </Table>\n );\n }\n\n if (items.length === 0 && isMain) {\n return (\n <Table colCount={2} rowCount={2}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.type', defaultMessage: 'Type' })}\n </Typography>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n <Tr>\n <Td colSpan={2}>\n <EmptyStateLayout\n action={\n <Button\n onClick={onClickAddField}\n size=\"L\"\n startIcon={<Plus />}\n variant=\"secondary\"\n >\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n }\n content={formatMessage(\n isInContentTypeView\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n </Td>\n </Tr>\n </Tbody>\n </Table>\n );\n }\n\n return (\n <BoxWrapper>\n <Box\n paddingLeft={6}\n paddingRight={isMain ? 6 : 0}\n {...(isMain && { style: { overflowX: 'auto' } })}\n >\n <table>\n {isMain && (\n <thead>\n <tr>\n <th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}\n </Typography>\n </th>\n <th colSpan={2}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.type', defaultMessage: 'Type' })}\n </Typography>\n </th>\n </tr>\n </thead>\n )}\n <tbody>\n {items.map((item) => {\n const { type } = item;\n const CustomRow = customRowComponent;\n\n return (\n <Fragment key={item.name}>\n <CustomRow\n {...item}\n isNestedInDZComponent={isNestedInDZComponent}\n targetUid={targetUid}\n editTarget={editTarget}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n />\n\n {type === 'component' && (\n <ComponentList\n {...item}\n customRowComponent={customRowComponent}\n targetUid={targetUid}\n isNestedInDZComponent={isFromDynamicZone}\n editTarget={editTarget}\n firstLoopComponentUid={firstLoopComponentUid}\n />\n )}\n\n {type === 'dynamiczone' && (\n <DynamicZoneList\n {...item}\n customRowComponent={customRowComponent}\n addComponent={addComponentToDZ}\n targetUid={targetUid}\n />\n )}\n </Fragment>\n );\n })}\n </tbody>\n </table>\n </Box>\n\n {isMain && isInDevelopmentMode && (\n <TFooter icon={<Plus />} onClick={onClickAddField}>\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${\n modifiedData.contentType\n ? modifiedData.contentType.schema.kind\n : editTarget || 'collectionType'\n }`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && !isFromDynamicZone && (\n <NestedTFooter\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </BoxWrapper>\n );\n};\n","import { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst StyledBox = styled(Box)`\n position: absolute;\n left: -1.8rem;\n top: 0px;\n\n &:before {\n content: '';\n width: 0.4rem;\n height: 1.2rem;\n background: ${({ theme, color }) => theme.colors[color!]};\n display: block;\n }\n`;\n\nconst Svg = styled.svg`\n position: relative;\n flex-shrink: 0;\n transform: translate(-0.5px, -1px);\n\n * {\n fill: ${({ theme, color }) => theme.colors[color!]};\n }\n`;\n\ninterface CurveProps {\n color: string;\n}\n\nexport const Curve = (props: CurveProps) => (\n <StyledBox>\n <Svg\n width=\"20\"\n height=\"23\"\n viewBox=\"0 0 20 23\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.02477 14.7513C8.65865 17.0594 11.6046 18.6059 17.5596 18.8856C18.6836 18.9384 19.5976 19.8435 19.5976 20.9688V20.9688C19.5976 22.0941 18.6841 23.0125 17.5599 22.9643C10.9409 22.6805 6.454 20.9387 3.75496 17.1258C0.937988 13.1464 0.486328 7.39309 0.486328 0.593262H4.50974C4.50974 7.54693 5.06394 11.9813 7.02477 14.7513Z\"\n />\n </Svg>\n </StyledBox>\n);\n","import { Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../utils/getTrad';\n\ntype DisplayedTypeProps = {\n type: string;\n customField?: string | null;\n repeatable?: boolean;\n};\n\nexport const DisplayedType = ({\n type,\n customField = null,\n repeatable = false,\n}: DisplayedTypeProps) => {\n const { formatMessage } = useIntl();\n\n let readableType = type;\n\n if (['integer', 'biginteger', 'float', 'decimal'].includes(type)) {\n readableType = 'number';\n } else if (['string'].includes(type)) {\n readableType = 'text';\n }\n\n if (customField) {\n return (\n <Typography>\n {formatMessage({\n id: getTrad('attribute.customField'),\n defaultMessage: 'Custom field',\n })}\n </Typography>\n );\n }\n\n return (\n <Typography>\n {formatMessage({\n id: getTrad(`attribute.${readableType}`),\n defaultMessage: type,\n })}\n &nbsp;\n {repeatable &&\n formatMessage({\n id: getTrad('component.repeatable'),\n defaultMessage: '(repeatable)',\n })}\n </Typography>\n );\n};\n","import upperFirst from 'lodash/upperFirst';\n\nexport const UpperFirst = ({ content }: { content: string }) => <>{upperFirst(content)}</>;\n","import { memo } from 'react';\n\nimport { Box, Flex, IconButton, Typography } from '@strapi/design-system';\nimport { Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../hooks/useDataManager';\nimport { Curve } from '../icons/Curve';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon, IconByType } from './AttributeIcon';\nimport { DisplayedType } from './DisplayedType';\nimport { UpperFirst } from './UpperFirst';\n\nexport const BoxWrapper = styled(Box)`\n position: relative;\n`;\n\ntype ListRowProps = {\n configurable?: boolean;\n customField?: string | null;\n editTarget: string;\n firstLoopComponentUid?: string | null;\n isFromDynamicZone?: boolean;\n name: string;\n onClick: (\n editTarget: string,\n targetUid: string | null,\n attributeName: string,\n attributeType: string,\n customField: string | null\n ) => void;\n relation?: string;\n repeatable?: boolean;\n secondLoopComponentUid?: string | null;\n target?: string | null;\n targetUid?: string | null;\n type: IconByType;\n};\n\nexport const ListRow = memo(\n ({\n configurable = true,\n customField = null,\n editTarget,\n firstLoopComponentUid = null,\n isFromDynamicZone = false,\n name,\n onClick,\n relation = '',\n repeatable = false,\n secondLoopComponentUid = null,\n target = null,\n targetUid = null,\n type,\n }: ListRowProps) => {\n const { contentTypes, isInDevelopmentMode, removeAttribute } = useDataManager();\n const { formatMessage } = useIntl();\n\n const isMorph = type === 'relation' && relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(type) ? 'number' : type;\n\n const contentType = get(contentTypes, [target as keyof typeof contentTypes], {});\n const contentTypeFriendlyName = get(contentType, ['schema', 'displayName'], '');\n const isPluginContentType = get(contentType, 'plugin');\n\n const src = target ? 'relation' : ico;\n\n const handleClick = () => {\n if (isMorph) {\n return;\n }\n\n if (configurable !== false) {\n const attrType = type;\n\n onClick(\n // Tells where the attribute is located in the main modifiedData object : contentType, component or components\n editTarget,\n // main data type uid\n secondLoopComponentUid || firstLoopComponentUid || targetUid,\n // Name of the attribute\n name,\n // Type of the attribute\n attrType,\n customField\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 return (\n <BoxWrapper\n tag=\"tr\"\n onClick={isInDevelopmentMode && configurable && !isMorph ? handleClick : undefined}\n >\n <td style={{ position: 'relative' }}>\n {loopNumber !== 0 && <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />}\n <Flex paddingLeft={2} gap={4}>\n <AttributeIcon type={src} customField={customField} />\n <Typography fontWeight=\"bold\">{name}</Typography>\n </Flex>\n </td>\n <td>\n {target ? (\n <Typography>\n {formatMessage({\n id: getTrad(\n `modelPage.attribute.${isMorph ? 'relation-polymorphic' : 'relationWith'}`\n ),\n defaultMessage: 'Relation with',\n })}\n &nbsp;\n <span style={{ fontStyle: 'italic' }}>\n <UpperFirst content={contentTypeFriendlyName} />\n &nbsp;\n {isPluginContentType &&\n `(${formatMessage({\n id: getTrad(`from`),\n defaultMessage: 'from',\n })}: ${isPluginContentType})`}\n </span>\n </Typography>\n ) : (\n <DisplayedType type={type} customField={customField} repeatable={repeatable} />\n )}\n </td>\n <td>\n {isInDevelopmentMode ? (\n <Flex justifyContent=\"flex-end\" onClick={(e) => e.stopPropagation()}>\n {configurable ? (\n <Flex gap={1}>\n {!isMorph && (\n <IconButton\n onClick={handleClick}\n label={`${formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })} ${name}`}\n borderWidth={0}\n >\n <Pencil />\n </IconButton>\n )}\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n removeAttribute(\n editTarget,\n name,\n secondLoopComponentUid || firstLoopComponentUid || ''\n );\n }}\n label={`${formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })} ${name}`}\n borderWidth={0}\n >\n <Trash />\n </IconButton>\n </Flex>\n ) : (\n <Lock />\n )}\n </Flex>\n ) : (\n /*\n In production mode the edit icons aren't visible, therefore\n we need to reserve the same space, otherwise the height of the\n row might collapse, leading to bad positioned curve icons\n */\n <Box height=\"3.2rem\" />\n )}\n </td>\n </BoxWrapper>\n );\n }\n);\n","export const getAttributeDisplayedType = (type: string) => {\n let displayedType;\n\n switch (type) {\n case 'date':\n case 'datetime':\n case 'time':\n case 'timestamp':\n displayedType = 'date';\n break;\n case 'integer':\n case 'biginteger':\n case 'decimal':\n case 'float':\n displayedType = 'number';\n break;\n case 'string':\n case 'text':\n displayedType = 'text';\n break;\n case '':\n displayedType = 'relation';\n break;\n default:\n displayedType = type;\n }\n\n return displayedType;\n};\n","import { memo } from 'react';\n\nimport { type Permission, useRBAC } from '@strapi/admin/strapi-admin';\nimport { Button } from '@strapi/design-system';\nimport { ListPlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nconst cmPermissions: Record<string, Permission[]> = {\n collectionTypesConfigurations: [\n {\n action: 'plugin::content-manager.collection-types.configure-view',\n subject: null,\n },\n ],\n componentsConfigurations: [\n {\n action: 'plugin::content-manager.components.configure-layout',\n subject: null,\n },\n ],\n singleTypesConfigurations: [\n {\n action: 'plugin::content-manager.single-types.configure-view',\n subject: null,\n },\n ],\n};\n\ninterface LinkToCMSettingsViewProps {\n disabled: boolean;\n contentTypeKind?: string;\n isInContentTypeView?: boolean;\n isTemporary?: boolean;\n targetUid?: string;\n}\n\nexport const LinkToCMSettingsView = memo(\n ({\n disabled,\n isTemporary = false,\n isInContentTypeView = true,\n contentTypeKind = 'collectionType',\n targetUid = '',\n }: LinkToCMSettingsViewProps) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { collectionTypesConfigurations, componentsConfigurations, singleTypesConfigurations } =\n cmPermissions;\n const label = formatMessage({\n id: 'content-type-builder.form.button.configure-view',\n defaultMessage: 'Configure the view',\n });\n let permissionsToApply = collectionTypesConfigurations;\n\n const handleClick = () => {\n if (isTemporary) {\n return false;\n }\n\n if (isInContentTypeView) {\n navigate(`/content-manager/collection-types/${targetUid}/configurations/edit`);\n } else {\n navigate(`/content-manager/components/${targetUid}/configurations/edit`);\n }\n\n return false;\n };\n\n if (isInContentTypeView && contentTypeKind === 'singleType') {\n permissionsToApply = singleTypesConfigurations;\n }\n\n if (!isInContentTypeView) {\n permissionsToApply = componentsConfigurations;\n }\n const {\n allowedActions: { canViewConfig },\n } = useRBAC({\n viewConfig: permissionsToApply,\n });\n\n if (!canViewConfig) {\n return null;\n }\n\n return (\n <Button\n startIcon={<ListPlus />}\n variant=\"tertiary\"\n onClick={handleClick}\n disabled={isTemporary || disabled}\n >\n {label}\n </Button>\n );\n }\n);\n","import { BackButton, useTracking, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex } from '@strapi/design-system';\nimport { Check, Pencil, Plus } from '@strapi/icons';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEqual from 'lodash/isEqual';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { unstable_usePrompt as usePrompt, useMatch } from 'react-router-dom';\n\nimport { List } from '../../components/List';\nimport { ListRow } from '../../components/ListRow';\nimport { useDataManager } from '../../hooks/useDataManager';\nimport { useFormModalNavigation } from '../../hooks/useFormModalNavigation';\nimport { getAttributeDisplayedType } from '../../utils/getAttributeDisplayedType';\nimport { getTrad } from '../../utils/getTrad';\n\nimport { LinkToCMSettingsView } from './LinkToCMSettingsView';\n\n/* eslint-disable indent */\n\nconst ListView = () => {\n const { initialData, modifiedData, isInDevelopmentMode, isInContentTypeView, submitData } =\n useDataManager();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const match = useMatch('/plugins/content-type-builder/:kind/:currentUID');\n\n const {\n onOpenModalAddComponentsToDZ,\n onOpenModalAddField,\n onOpenModalEditField,\n onOpenModalEditSchema,\n onOpenModalEditCustomField,\n } = useFormModalNavigation();\n\n const firstMainDataPath = isInContentTypeView ? 'contentType' : 'component';\n const mainDataTypeAttributesPath = [firstMainDataPath, 'schema', 'attributes'];\n const targetUid = get(modifiedData, [firstMainDataPath, 'uid']);\n const isTemporary = get(modifiedData, [firstMainDataPath, 'isTemporary'], false);\n const contentTypeKind = get(modifiedData, [firstMainDataPath, 'schema', 'kind'], null);\n\n const attributes = get(modifiedData, mainDataTypeAttributesPath, []);\n const isFromPlugin = has(initialData, [firstMainDataPath, 'plugin']);\n const hasModelBeenModified = !isEqual(modifiedData, initialData);\n\n const forTarget = isInContentTypeView ? 'contentType' : 'component';\n\n const handleClickAddComponentToDZ = (dynamicZoneTarget?: string) => {\n onOpenModalAddComponentsToDZ({ dynamicZoneTarget, targetUid });\n };\n\n const handleClickEditField = async (\n forTarget: string,\n targetUid: string,\n attributeName: string,\n type: string,\n customField: any\n ) => {\n const attributeType = getAttributeDisplayedType(type);\n const step = type === 'component' ? '2' : null;\n\n if (customField) {\n onOpenModalEditCustomField({\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n customFieldUid: customField,\n });\n } else {\n onOpenModalEditField({\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n step,\n });\n }\n };\n\n let label = get(modifiedData, [firstMainDataPath, 'schema', 'displayName'], '');\n const kind = get(modifiedData, [firstMainDataPath, 'schema', 'kind'], '');\n\n const isCreatingFirstContentType = match?.params.currentUID === 'create-content-type';\n\n if (!label && isCreatingFirstContentType) {\n label = formatMessage({\n id: getTrad('button.model.create'),\n defaultMessage: 'Create new collection type',\n });\n }\n\n const onEdit = () => {\n const contentType = kind || firstMainDataPath;\n\n if (contentType === 'collectionType') {\n trackUsage('willEditNameOfContentType');\n }\n if (contentType === 'singleType') {\n trackUsage('willEditNameOfSingleType');\n }\n\n onOpenModalEditSchema({\n modalType: firstMainDataPath,\n forTarget: firstMainDataPath,\n targetUid,\n kind: contentType,\n });\n };\n\n usePrompt({\n when: hasModelBeenModified,\n message: formatMessage({ id: getTrad('prompt.unsaved'), defaultMessage: 'Are you sure?' }),\n });\n\n return (\n <>\n <Layouts.Header\n id=\"title\"\n primaryAction={\n isInDevelopmentMode && (\n <Flex gap={2}>\n {/* DON'T display the add field button when the content type has not been created */}\n {!isCreatingFirstContentType && (\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n onClick={() => {\n onOpenModalAddField({ forTarget, targetUid });\n }}\n >\n {formatMessage({\n id: getTrad('button.attributes.add.another'),\n defaultMessage: 'Add another field',\n })}\n </Button>\n )}\n <Button\n startIcon={<Check />}\n onClick={async () => await submitData()}\n type=\"submit\"\n disabled={isEqual(modifiedData, initialData)}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n )\n }\n secondaryAction={\n isInDevelopmentMode &&\n !isFromPlugin &&\n !isCreatingFirstContentType && (\n <Button startIcon={<Pencil />} variant=\"tertiary\" onClick={onEdit}>\n {formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })}\n </Button>\n )\n }\n title={upperFirst(label)}\n subtitle={formatMessage({\n id: getTrad('listView.headerLayout.description'),\n defaultMessage: 'Build the data architecture of your content',\n })}\n navigationAction={<BackButton />}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"flex-end\">\n <Flex gap={2}>\n <LinkToCMSettingsView\n key=\"link-to-cm-settings-view\"\n targetUid={targetUid}\n isTemporary={isTemporary}\n isInContentTypeView={isInContentTypeView}\n contentTypeKind={contentTypeKind}\n disabled={isCreatingFirstContentType}\n />\n </Flex>\n </Flex>\n <Box background=\"neutral0\" shadow=\"filterShadow\" hasRadius>\n <List\n items={attributes}\n customRowComponent={(props) => <ListRow {...props} onClick={handleClickEditField} />}\n addComponentToDZ={handleClickAddComponentToDZ}\n targetUid={targetUid}\n editTarget={forTarget}\n isMain\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default ListView;\n"],"names":["BoxWrapper","Tr","Fragment","forTarget","targetUid","usePrompt"],"mappings":"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"}
1
+ {"version":3,"file":"ListView-CY9uKqop.mjs","sources":["../../admin/src/components/BoxWrapper.tsx","../../admin/src/components/Tr.tsx","../../admin/src/components/ComponentList.tsx","../../admin/src/components/ComponentCard/ComponentIcon/ComponentIcon.tsx","../../admin/src/components/ComponentCard/ComponentCard.tsx","../../admin/src/components/DynamicZoneList.tsx","../../admin/src/components/NestedFooter.tsx","../../admin/src/components/List.tsx","../../admin/src/icons/Curve.tsx","../../admin/src/components/DisplayedType.tsx","../../admin/src/components/UpperFirst.tsx","../../admin/src/components/ListRow.tsx","../../admin/src/utils/getAttributeDisplayedType.ts","../../admin/src/pages/ListView/LinkToCMSettingsView.tsx","../../admin/src/pages/ListView/ListView.tsx"],"sourcesContent":["import { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nexport const BoxWrapper = styled(Box)`\n table {\n width: 100%;\n white-space: nowrap;\n }\n\n thead {\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};\n\n tr {\n border-top: 0;\n }\n }\n\n tr {\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n\n & td,\n & th {\n padding: ${({ theme }) => theme.spaces[4]};\n }\n\n & td:first-of-type,\n & th:first-of-type {\n padding: 0 ${({ theme }) => theme.spaces[1]};\n }\n }\n\n th,\n td {\n vertical-align: middle;\n text-align: left;\n color: ${({ theme }) => theme.colors.neutral600};\n outline-offset: -4px;\n }\n`;\n","import { styled } from 'styled-components';\n\n// Keep component-row for css specificity\nexport const Tr = styled.tr<{\n $isFromDynamicZone?: boolean;\n $isChildOfDynamicZone?: boolean;\n}>`\n &.component-row,\n &.dynamiczone-row {\n position: relative;\n border-top: none !important;\n\n table tr:first-child {\n border-top: none;\n }\n\n > td:first-of-type {\n padding: 0 0 0 2rem;\n position: relative;\n\n &::before {\n content: '';\n width: 0.4rem;\n height: calc(100% - 40px);\n position: absolute;\n top: -7px;\n left: 2.6rem;\n border-radius: 4px;\n\n ${({ $isFromDynamicZone, $isChildOfDynamicZone, theme }) => {\n if ($isChildOfDynamicZone) {\n return `background-color: ${theme.colors.primary200};`;\n }\n\n if ($isFromDynamicZone) {\n return `background-color: ${theme.colors.primary200};`;\n }\n\n return `background: ${theme.colors.neutral150};`;\n }}\n }\n }\n }\n\n &.dynamiczone-row > td:first-of-type {\n padding: 0;\n }\n`;\n","import get from 'lodash/get';\n\nimport { useDataManager } from '../hooks/useDataManager';\n\nimport { List } from './List';\nimport { Tr } from './Tr';\n\nimport type { Internal } from '@strapi/types';\n\ninterface ComponentListProps {\n component: Internal.UID.Component;\n customRowComponent: any;\n firstLoopComponentUid?: string;\n isFromDynamicZone?: boolean;\n isNestedInDZComponent?: boolean;\n}\n\nexport const ComponentList = ({\n customRowComponent,\n component,\n isFromDynamicZone = false,\n isNestedInDZComponent = false,\n firstLoopComponentUid,\n}: ComponentListProps) => {\n const { modifiedData } = useDataManager();\n const {\n schema: { attributes },\n } = get(modifiedData, ['components', component], {\n schema: { attributes: [] },\n });\n\n return (\n <Tr $isChildOfDynamicZone={isFromDynamicZone} className=\"component-row\">\n <td colSpan={12}>\n <List\n customRowComponent={customRowComponent}\n items={attributes}\n targetUid={component}\n firstLoopComponentUid={firstLoopComponentUid || component}\n editTarget=\"components\"\n isFromDynamicZone={isFromDynamicZone}\n isNestedInDZComponent={isNestedInDZComponent}\n isSub\n secondLoopComponentUid={firstLoopComponentUid ? component : null}\n />\n </td>\n </Tr>\n );\n};\n","import { Flex } from '@strapi/design-system';\n\nimport { COMPONENT_ICONS } from '../../IconPicker/constants';\n\ninterface ComponentIconProps {\n isActive?: boolean;\n icon?: keyof typeof COMPONENT_ICONS;\n}\n\nexport const ComponentIcon = ({ isActive = false, icon = 'dashboard' }: ComponentIconProps) => {\n const Icon = COMPONENT_ICONS[icon] || COMPONENT_ICONS.dashboard;\n\n return (\n <Flex\n alignItems=\"center\"\n background={isActive ? 'primary200' : 'neutral200'}\n justifyContent=\"center\"\n height={8}\n width={8}\n borderRadius=\"50%\"\n >\n <Icon height=\"2rem\" width=\"2rem\" />\n </Flex>\n );\n};\n","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 '../../hooks/useDataManager';\n\nimport { ComponentIcon } from './ComponentIcon';\n\ninterface ComponentCardProps {\n component: string;\n dzName: string;\n index: number;\n isActive?: boolean;\n isInDevelopmentMode?: boolean;\n onClick?: () => void;\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}: ComponentCardProps) => {\n const { modifiedData, removeComponentFromDynamicZone } = useDataManager();\n const {\n schema: { icon, displayName },\n } = get(modifiedData, ['components', component], { schema: {} });\n\n const onClose = (e: any) => {\n e.stopPropagation();\n removeComponentFromDynamicZone(dzName, index);\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 && (\n <CloseButton tag=\"button\" onClick={onClose}>\n <Cross />\n </CloseButton>\n )}\n </ComponentBox>\n );\n};\n","import { useState } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../hooks/useDataManager';\nimport { getTrad } from '../utils/getTrad';\n\nimport { ComponentCard } from './ComponentCard';\nimport { ComponentList } from './ComponentList';\nimport { Tr } from './Tr';\n\nimport type { Internal } from '@strapi/types';\n\ninterface DynamicZoneListProps {\n addComponent: (name?: string) => void;\n components: Array<string>;\n customRowComponent?: () => void;\n name?: string;\n targetUid: Internal.UID.Component;\n}\n\nconst StyledAddIcon = styled(Plus)`\n width: 3.2rem;\n height: 3.2rem;\n padding: 0.9rem;\n border-radius: 6.4rem;\n background: ${({ theme }) => theme.colors.primary100};\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nconst FixedBox = styled(Box)`\n height: 9rem;\n position: absolute;\n width: 100%;\n top: 0;\n left: 0;\n`;\n\nconst ScrollableStack = styled(Flex)`\n width: 100%;\n overflow-x: auto;\n`;\n\nconst ComponentContentBox = styled(Box)`\n padding-top: 9rem;\n`;\n\nconst ComponentStack = styled(Flex)`\n flex-shrink: 0;\n width: 14rem;\n height: 8rem;\n justify-content: center;\n align-items: center;\n`;\n\nexport const DynamicZoneList = ({\n customRowComponent,\n components = [],\n addComponent,\n name,\n targetUid,\n}: DynamicZoneListProps) => {\n const { isInDevelopmentMode } = useDataManager();\n const [activeTab, setActiveTab] = useState(0);\n const { formatMessage } = useIntl();\n\n const toggle = (tab: number) => {\n if (activeTab !== tab) {\n setActiveTab(tab);\n }\n };\n\n const handleClickAdd = () => {\n addComponent(name);\n };\n\n return (\n <Tr className=\"dynamiczone-row\" $isFromDynamicZone>\n <td colSpan={12}>\n <FixedBox paddingLeft={8}>\n <ScrollableStack gap={2}>\n {isInDevelopmentMode && (\n <button type=\"button\" onClick={handleClickAdd}>\n <ComponentStack direction=\"column\" alignItems=\"stretch\" gap={1}>\n <StyledAddIcon />\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"primary600\">\n {formatMessage({\n id: getTrad('button.component.add'),\n defaultMessage: 'Add a component',\n })}\n </Typography>\n </ComponentStack>\n </button>\n )}\n <Flex role=\"tablist\" gap={2}>\n {components.map((component, index) => {\n return (\n <ComponentCard\n key={component}\n dzName={name || ''}\n index={index}\n component={component}\n isActive={activeTab === index}\n isInDevelopmentMode={isInDevelopmentMode}\n onClick={() => toggle(index)}\n />\n );\n })}\n </Flex>\n </ScrollableStack>\n </FixedBox>\n <ComponentContentBox>\n {components.map((component, index) => {\n const props = {\n customRowComponent,\n component,\n };\n\n return (\n <Box\n id={`dz-${name}-panel-${index}`}\n role=\"tabpanel\"\n aria-labelledby={`dz-${name}-tab-${index}`}\n key={component}\n style={{ display: activeTab === index ? 'block' : 'none' }}\n >\n <table>\n <tbody>\n <ComponentList\n {...props}\n isFromDynamicZone\n component={targetUid}\n key={component}\n />\n </tbody>\n </table>\n </Box>\n );\n })}\n </ComponentContentBox>\n </td>\n </Tr>\n );\n};\n","import type { ReactNode } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst IconBox = styled(Box)`\n height: 2.4rem;\n width: 2.4rem;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n height: 1rem;\n width: 1rem;\n }\n\n svg path {\n fill: ${({ theme, color }) => theme.colors[`${color}600`]};\n }\n`;\n\nconst ButtonBox = styled(Box)`\n border-radius: 0 0 ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius};\n display: block;\n width: 100%;\n border: none;\n position: relative;\n left: -0.4rem;\n`;\n\ninterface NestedTFooterProps {\n color: string;\n children: ReactNode;\n icon: ReactNode;\n onClick?: () => void;\n}\n\nexport const NestedTFooter = ({ children, icon, color, ...props }: NestedTFooterProps) => {\n return (\n <ButtonBox paddingBottom={4} paddingTop={4} tag=\"button\" type=\"button\" {...props}>\n <Flex>\n <IconBox color={color} aria-hidden background={`${color}200`}>\n {icon}\n </IconBox>\n <Box paddingLeft={3}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor={`${color}600`}>\n {children}\n </Typography>\n </Box>\n </Flex>\n </ButtonBox>\n );\n};\n","import { ComponentType, Fragment } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n EmptyStateLayout,\n Table,\n Tbody,\n Td,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { useDataManager } from '../hooks/useDataManager';\nimport { useFormModalNavigation } from '../hooks/useFormModalNavigation';\nimport { getTrad } from '../utils/getTrad';\n\nimport { BoxWrapper } from './BoxWrapper';\nimport { ComponentList } from './ComponentList';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { NestedTFooter } from './NestedFooter';\n\nimport type { SchemaType } from '../types';\nimport type { Internal } from '@strapi/types';\n\ninterface ListProps {\n addComponentToDZ?: () => void;\n customRowComponent: ComponentType<any>;\n editTarget: SchemaType;\n firstLoopComponentUid?: string;\n isFromDynamicZone?: boolean;\n isNestedInDZComponent?: boolean;\n isMain?: boolean;\n items: any[];\n secondLoopComponentUid?: string | null;\n targetUid?: Internal.UID.Schema;\n isSub?: boolean;\n}\n\nexport const List = ({\n addComponentToDZ,\n customRowComponent,\n editTarget,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isNestedInDZComponent = false,\n isSub = false,\n items = [],\n secondLoopComponentUid,\n targetUid,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { isInDevelopmentMode, modifiedData, isInContentTypeView } = useDataManager();\n\n const { onOpenModalAddField } = useFormModalNavigation();\n const onClickAddField = () => {\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: editTarget, targetUid });\n };\n\n if (!targetUid) {\n return (\n <Table colCount={2} rowCount={2}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.type', defaultMessage: 'Type' })}\n </Typography>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n <Tr>\n <Td colSpan={2}>\n <EmptyStateLayout\n content={formatMessage({\n id: getTrad('table.content.create-first-content-type'),\n defaultMessage: 'Create your first Collection-Type',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n </Td>\n </Tr>\n </Tbody>\n </Table>\n );\n }\n\n if (items.length === 0 && isMain) {\n return (\n <Table colCount={2} rowCount={2}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.type', defaultMessage: 'Type' })}\n </Typography>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n <Tr>\n <Td colSpan={2}>\n <EmptyStateLayout\n action={\n <Button\n onClick={onClickAddField}\n size=\"L\"\n startIcon={<Plus />}\n variant=\"secondary\"\n >\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n }\n content={formatMessage(\n isInContentTypeView\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n </Td>\n </Tr>\n </Tbody>\n </Table>\n );\n }\n\n return (\n <BoxWrapper>\n <Box\n paddingLeft={6}\n paddingRight={isMain ? 6 : 0}\n {...(isMain && { style: { overflowX: 'auto' } })}\n >\n <table>\n {isMain && (\n <thead>\n <tr>\n <th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}\n </Typography>\n </th>\n <th colSpan={2}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.type', defaultMessage: 'Type' })}\n </Typography>\n </th>\n </tr>\n </thead>\n )}\n <tbody>\n {items.map((item) => {\n const { type } = item;\n const CustomRow = customRowComponent;\n\n return (\n <Fragment key={item.name}>\n <CustomRow\n {...item}\n isNestedInDZComponent={isNestedInDZComponent}\n targetUid={targetUid}\n editTarget={editTarget}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n />\n\n {type === 'component' && (\n <ComponentList\n {...item}\n customRowComponent={customRowComponent}\n targetUid={targetUid}\n isNestedInDZComponent={isFromDynamicZone}\n editTarget={editTarget}\n firstLoopComponentUid={firstLoopComponentUid}\n />\n )}\n\n {type === 'dynamiczone' && (\n <DynamicZoneList\n {...item}\n customRowComponent={customRowComponent}\n addComponent={addComponentToDZ}\n targetUid={targetUid}\n />\n )}\n </Fragment>\n );\n })}\n </tbody>\n </table>\n </Box>\n\n {isMain && isInDevelopmentMode && (\n <TFooter icon={<Plus />} onClick={onClickAddField}>\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${\n modifiedData.contentType\n ? modifiedData.contentType.schema.kind\n : editTarget || 'collectionType'\n }`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && !isFromDynamicZone && (\n <NestedTFooter\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </BoxWrapper>\n );\n};\n","import { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst StyledBox = styled(Box)`\n position: absolute;\n left: -1.8rem;\n top: 0px;\n\n &:before {\n content: '';\n width: 0.4rem;\n height: 1.2rem;\n background: ${({ theme, color }) => theme.colors[color!]};\n display: block;\n }\n`;\n\nconst Svg = styled.svg`\n position: relative;\n flex-shrink: 0;\n transform: translate(-0.5px, -1px);\n\n * {\n fill: ${({ theme, color }) => theme.colors[color!]};\n }\n`;\n\ninterface CurveProps {\n color: string;\n}\n\nexport const Curve = (props: CurveProps) => (\n <StyledBox>\n <Svg\n width=\"20\"\n height=\"23\"\n viewBox=\"0 0 20 23\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.02477 14.7513C8.65865 17.0594 11.6046 18.6059 17.5596 18.8856C18.6836 18.9384 19.5976 19.8435 19.5976 20.9688V20.9688C19.5976 22.0941 18.6841 23.0125 17.5599 22.9643C10.9409 22.6805 6.454 20.9387 3.75496 17.1258C0.937988 13.1464 0.486328 7.39309 0.486328 0.593262H4.50974C4.50974 7.54693 5.06394 11.9813 7.02477 14.7513Z\"\n />\n </Svg>\n </StyledBox>\n);\n","import { Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../utils/getTrad';\n\ntype DisplayedTypeProps = {\n type: string;\n customField?: string | null;\n repeatable?: boolean;\n};\n\nexport const DisplayedType = ({\n type,\n customField = null,\n repeatable = false,\n}: DisplayedTypeProps) => {\n const { formatMessage } = useIntl();\n\n let readableType = type;\n\n if (['integer', 'biginteger', 'float', 'decimal'].includes(type)) {\n readableType = 'number';\n } else if (['string'].includes(type)) {\n readableType = 'text';\n }\n\n if (customField) {\n return (\n <Typography>\n {formatMessage({\n id: getTrad('attribute.customField'),\n defaultMessage: 'Custom field',\n })}\n </Typography>\n );\n }\n\n return (\n <Typography>\n {formatMessage({\n id: getTrad(`attribute.${readableType}`),\n defaultMessage: type,\n })}\n &nbsp;\n {repeatable &&\n formatMessage({\n id: getTrad('component.repeatable'),\n defaultMessage: '(repeatable)',\n })}\n </Typography>\n );\n};\n","import upperFirst from 'lodash/upperFirst';\n\nexport const UpperFirst = ({ content }: { content: string }) => <>{upperFirst(content)}</>;\n","import { memo } from 'react';\n\nimport { Box, Flex, IconButton, Typography } from '@strapi/design-system';\nimport { Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../hooks/useDataManager';\nimport { Curve } from '../icons/Curve';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon, IconByType } from './AttributeIcon';\nimport { DisplayedType } from './DisplayedType';\nimport { UpperFirst } from './UpperFirst';\n\nexport const BoxWrapper = styled(Box)`\n position: relative;\n`;\n\ntype ListRowProps = {\n configurable?: boolean;\n customField?: string | null;\n editTarget: string;\n firstLoopComponentUid?: string | null;\n isFromDynamicZone?: boolean;\n name: string;\n onClick: (\n editTarget: string,\n targetUid: string | null,\n attributeName: string,\n attributeType: string,\n customField: string | null\n ) => void;\n relation?: string;\n repeatable?: boolean;\n secondLoopComponentUid?: string | null;\n target?: string | null;\n targetUid?: string | null;\n type: IconByType;\n};\n\nexport const ListRow = memo(\n ({\n configurable = true,\n customField = null,\n editTarget,\n firstLoopComponentUid = null,\n isFromDynamicZone = false,\n name,\n onClick,\n relation = '',\n repeatable = false,\n secondLoopComponentUid = null,\n target = null,\n targetUid = null,\n type,\n }: ListRowProps) => {\n const { contentTypes, isInDevelopmentMode, removeAttribute } = useDataManager();\n const { formatMessage } = useIntl();\n\n const isMorph = type === 'relation' && relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(type) ? 'number' : type;\n\n const contentType = get(contentTypes, [target as keyof typeof contentTypes], {});\n const contentTypeFriendlyName = get(contentType, ['schema', 'displayName'], '');\n const isPluginContentType = get(contentType, 'plugin');\n\n const src = target ? 'relation' : ico;\n\n const handleClick = () => {\n if (isMorph) {\n return;\n }\n\n if (configurable !== false) {\n const attrType = type;\n\n onClick(\n // Tells where the attribute is located in the main modifiedData object : contentType, component or components\n editTarget,\n // main data type uid\n secondLoopComponentUid || firstLoopComponentUid || targetUid,\n // Name of the attribute\n name,\n // Type of the attribute\n attrType,\n customField\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 return (\n <BoxWrapper\n tag=\"tr\"\n onClick={isInDevelopmentMode && configurable && !isMorph ? handleClick : undefined}\n >\n <td style={{ position: 'relative' }}>\n {loopNumber !== 0 && <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />}\n <Flex paddingLeft={2} gap={4}>\n <AttributeIcon type={src} customField={customField} />\n <Typography fontWeight=\"bold\">{name}</Typography>\n </Flex>\n </td>\n <td>\n {target ? (\n <Typography>\n {formatMessage({\n id: getTrad(\n `modelPage.attribute.${isMorph ? 'relation-polymorphic' : 'relationWith'}`\n ),\n defaultMessage: 'Relation with',\n })}\n &nbsp;\n <span style={{ fontStyle: 'italic' }}>\n <UpperFirst content={contentTypeFriendlyName} />\n &nbsp;\n {isPluginContentType &&\n `(${formatMessage({\n id: getTrad(`from`),\n defaultMessage: 'from',\n })}: ${isPluginContentType})`}\n </span>\n </Typography>\n ) : (\n <DisplayedType type={type} customField={customField} repeatable={repeatable} />\n )}\n </td>\n <td>\n {isInDevelopmentMode ? (\n <Flex justifyContent=\"flex-end\" onClick={(e) => e.stopPropagation()}>\n {configurable ? (\n <Flex gap={1}>\n {!isMorph && (\n <IconButton\n onClick={handleClick}\n label={`${formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })} ${name}`}\n borderWidth={0}\n >\n <Pencil />\n </IconButton>\n )}\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n removeAttribute(\n editTarget,\n name,\n secondLoopComponentUid || firstLoopComponentUid || ''\n );\n }}\n label={`${formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })} ${name}`}\n borderWidth={0}\n >\n <Trash />\n </IconButton>\n </Flex>\n ) : (\n <Lock />\n )}\n </Flex>\n ) : (\n /*\n In production mode the edit icons aren't visible, therefore\n we need to reserve the same space, otherwise the height of the\n row might collapse, leading to bad positioned curve icons\n */\n <Box height=\"3.2rem\" />\n )}\n </td>\n </BoxWrapper>\n );\n }\n);\n","export const getAttributeDisplayedType = (type: string) => {\n let displayedType;\n\n switch (type) {\n case 'date':\n case 'datetime':\n case 'time':\n case 'timestamp':\n displayedType = 'date';\n break;\n case 'integer':\n case 'biginteger':\n case 'decimal':\n case 'float':\n displayedType = 'number';\n break;\n case 'string':\n case 'text':\n displayedType = 'text';\n break;\n case '':\n displayedType = 'relation';\n break;\n default:\n displayedType = type;\n }\n\n return displayedType;\n};\n","import { memo } from 'react';\n\nimport { type Permission, useRBAC } from '@strapi/admin/strapi-admin';\nimport { Button } from '@strapi/design-system';\nimport { ListPlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nconst cmPermissions: Record<string, Permission[]> = {\n collectionTypesConfigurations: [\n {\n action: 'plugin::content-manager.collection-types.configure-view',\n subject: null,\n },\n ],\n componentsConfigurations: [\n {\n action: 'plugin::content-manager.components.configure-layout',\n subject: null,\n },\n ],\n singleTypesConfigurations: [\n {\n action: 'plugin::content-manager.single-types.configure-view',\n subject: null,\n },\n ],\n};\n\ninterface LinkToCMSettingsViewProps {\n disabled: boolean;\n contentTypeKind?: string;\n isInContentTypeView?: boolean;\n isTemporary?: boolean;\n targetUid?: string;\n}\n\nexport const LinkToCMSettingsView = memo(\n ({\n disabled,\n isTemporary = false,\n isInContentTypeView = true,\n contentTypeKind = 'collectionType',\n targetUid = '',\n }: LinkToCMSettingsViewProps) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { collectionTypesConfigurations, componentsConfigurations, singleTypesConfigurations } =\n cmPermissions;\n const label = formatMessage({\n id: 'content-type-builder.form.button.configure-view',\n defaultMessage: 'Configure the view',\n });\n let permissionsToApply = collectionTypesConfigurations;\n\n const handleClick = () => {\n if (isTemporary) {\n return false;\n }\n\n if (isInContentTypeView) {\n navigate(`/content-manager/collection-types/${targetUid}/configurations/edit`);\n } else {\n navigate(`/content-manager/components/${targetUid}/configurations/edit`);\n }\n\n return false;\n };\n\n if (isInContentTypeView && contentTypeKind === 'singleType') {\n permissionsToApply = singleTypesConfigurations;\n }\n\n if (!isInContentTypeView) {\n permissionsToApply = componentsConfigurations;\n }\n const {\n allowedActions: { canViewConfig },\n } = useRBAC({\n viewConfig: permissionsToApply,\n });\n\n if (!canViewConfig) {\n return null;\n }\n\n return (\n <Button\n startIcon={<ListPlus />}\n variant=\"tertiary\"\n onClick={handleClick}\n disabled={isTemporary || disabled}\n >\n {label}\n </Button>\n );\n }\n);\n","import { BackButton, useTracking, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex } from '@strapi/design-system';\nimport { Check, Pencil, Plus } from '@strapi/icons';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEqual from 'lodash/isEqual';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { unstable_usePrompt as usePrompt, useMatch } from 'react-router-dom';\n\nimport { List } from '../../components/List';\nimport { ListRow } from '../../components/ListRow';\nimport { useDataManager } from '../../hooks/useDataManager';\nimport { useFormModalNavigation } from '../../hooks/useFormModalNavigation';\nimport { getAttributeDisplayedType } from '../../utils/getAttributeDisplayedType';\nimport { getTrad } from '../../utils/getTrad';\n\nimport { LinkToCMSettingsView } from './LinkToCMSettingsView';\n\n/* eslint-disable indent */\n\nconst ListView = () => {\n const { initialData, modifiedData, isInDevelopmentMode, isInContentTypeView, submitData } =\n useDataManager();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const match = useMatch('/plugins/content-type-builder/:kind/:currentUID');\n\n const {\n onOpenModalAddComponentsToDZ,\n onOpenModalAddField,\n onOpenModalEditField,\n onOpenModalEditSchema,\n onOpenModalEditCustomField,\n } = useFormModalNavigation();\n\n const firstMainDataPath = isInContentTypeView ? 'contentType' : 'component';\n const mainDataTypeAttributesPath = [firstMainDataPath, 'schema', 'attributes'];\n const targetUid = get(modifiedData, [firstMainDataPath, 'uid']);\n const isTemporary = get(modifiedData, [firstMainDataPath, 'isTemporary'], false);\n const contentTypeKind = get(modifiedData, [firstMainDataPath, 'schema', 'kind'], null);\n\n const attributes = get(modifiedData, mainDataTypeAttributesPath, []);\n const isFromPlugin = has(initialData, [firstMainDataPath, 'plugin']);\n const hasModelBeenModified = !isEqual(modifiedData, initialData);\n\n const forTarget = isInContentTypeView ? 'contentType' : 'component';\n\n const handleClickAddComponentToDZ = (dynamicZoneTarget?: string) => {\n onOpenModalAddComponentsToDZ({ dynamicZoneTarget, targetUid });\n };\n\n const handleClickEditField = async (\n forTarget: string,\n targetUid: string,\n attributeName: string,\n type: string,\n customField: any\n ) => {\n const attributeType = getAttributeDisplayedType(type);\n const step = type === 'component' ? '2' : null;\n\n if (customField) {\n onOpenModalEditCustomField({\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n customFieldUid: customField,\n });\n } else {\n onOpenModalEditField({\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n step,\n });\n }\n };\n\n let label = get(modifiedData, [firstMainDataPath, 'schema', 'displayName'], '');\n const kind = get(modifiedData, [firstMainDataPath, 'schema', 'kind'], '');\n\n const isCreatingFirstContentType = match?.params.currentUID === 'create-content-type';\n\n if (!label && isCreatingFirstContentType) {\n label = formatMessage({\n id: getTrad('button.model.create'),\n defaultMessage: 'Create new collection type',\n });\n }\n\n const onEdit = () => {\n const contentType = kind || firstMainDataPath;\n\n if (contentType === 'collectionType') {\n trackUsage('willEditNameOfContentType');\n }\n if (contentType === 'singleType') {\n trackUsage('willEditNameOfSingleType');\n }\n\n onOpenModalEditSchema({\n modalType: firstMainDataPath,\n forTarget: firstMainDataPath,\n targetUid,\n kind: contentType,\n });\n };\n\n usePrompt({\n when: hasModelBeenModified,\n message: formatMessage({ id: getTrad('prompt.unsaved'), defaultMessage: 'Are you sure?' }),\n });\n\n return (\n <>\n <Layouts.Header\n id=\"title\"\n primaryAction={\n isInDevelopmentMode && (\n <Flex gap={2}>\n {/* DON'T display the add field button when the content type has not been created */}\n {!isCreatingFirstContentType && (\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n onClick={() => {\n onOpenModalAddField({ forTarget, targetUid });\n }}\n >\n {formatMessage({\n id: getTrad('button.attributes.add.another'),\n defaultMessage: 'Add another field',\n })}\n </Button>\n )}\n <Button\n startIcon={<Check />}\n onClick={async () => await submitData()}\n type=\"submit\"\n disabled={isEqual(modifiedData, initialData)}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n )\n }\n secondaryAction={\n isInDevelopmentMode &&\n !isFromPlugin &&\n !isCreatingFirstContentType && (\n <Button startIcon={<Pencil />} variant=\"tertiary\" onClick={onEdit}>\n {formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })}\n </Button>\n )\n }\n title={upperFirst(label)}\n subtitle={formatMessage({\n id: getTrad('listView.headerLayout.description'),\n defaultMessage: 'Build the data architecture of your content',\n })}\n navigationAction={<BackButton />}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"flex-end\">\n <Flex gap={2}>\n <LinkToCMSettingsView\n key=\"link-to-cm-settings-view\"\n targetUid={targetUid}\n isTemporary={isTemporary}\n isInContentTypeView={isInContentTypeView}\n contentTypeKind={contentTypeKind}\n disabled={isCreatingFirstContentType}\n />\n </Flex>\n </Flex>\n <Box background=\"neutral0\" shadow=\"filterShadow\" hasRadius>\n <List\n items={attributes}\n customRowComponent={(props) => <ListRow {...props} onClick={handleClickEditField} />}\n addComponentToDZ={handleClickAddComponentToDZ}\n targetUid={targetUid}\n editTarget={forTarget}\n isMain\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default ListView;\n"],"names":["BoxWrapper","Tr","Fragment","forTarget","targetUid","usePrompt"],"mappings":"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"}
@@ -12,7 +12,7 @@ const reactIntl = require("react-intl");
12
12
  const reactRouterDom = require("react-router-dom");
13
13
  const React = require("react");
14
14
  const Symbols = require("@strapi/icons/symbols");
15
- const index = require("./index-BHhTJaW2.js");
15
+ const index = require("./index-Z-KG7c7n.js");
16
16
  const styledComponents = require("styled-components");
17
17
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
18
18
  const get__default = /* @__PURE__ */ _interopDefault(get);
@@ -956,4 +956,4 @@ const ListView = () => {
956
956
  ] });
957
957
  };
958
958
  exports.default = ListView;
959
- //# sourceMappingURL=ListView-j9TFQZBa.js.map
959
+ //# sourceMappingURL=ListView-g9V7g_tv.js.map