@strapi/content-type-builder 5.22.0 → 5.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +99 -103
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +102 -106
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.js +11 -5
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +12 -6
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
- package/dist/admin/components/FormModal/FormModal.js +7 -0
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs +8 -1
- package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.js +20 -0
- package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs +20 -0
- package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
- package/dist/admin/components/List.js +10 -8
- package/dist/admin/components/List.js.map +1 -1
- package/dist/admin/components/List.mjs +11 -9
- package/dist/admin/components/List.mjs.map +1 -1
- package/dist/admin/components/TabForm.js +1 -1
- package/dist/admin/components/TabForm.js.map +1 -1
- package/dist/admin/components/TabForm.mjs +1 -1
- package/dist/admin/components/TabForm.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListView.js.map +1 -1
- package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
- package/dist/server/routes/content-api.js +52 -54
- package/dist/server/routes/content-api.js.map +1 -1
- package/dist/server/routes/content-api.mjs +52 -54
- package/dist/server/routes/content-api.mjs.map +1 -1
- package/dist/server/routes/index.mjs +2 -2
- package/dist/server/src/index.d.ts +4 -1
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/content-api.d.ts +5 -2
- package/dist/server/src/routes/content-api.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts +4 -1
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forms.mjs","sources":["../../../../../admin/src/components/FormModal/forms/forms.ts"],"sourcesContent":["import { getTrad } from '../../../utils';\nimport { commonBaseForm } from '../attributes/commonBaseForm';\nimport { attributesForm } from '../attributes/form';\nimport { nameField } from '../attributes/nameField';\nimport { attributeTypes } from '../attributes/types';\nimport { componentForm } from '../component/componentForm';\nimport { createComponentSchema } from '../component/createComponentSchema';\nimport { contentTypeForm } from '../contentType/contentTypeForm';\nimport { createContentTypeSchema } from '../contentType/createContentTypeSchema';\nimport { dynamiczoneForm } from '../dynamiczoneForm';\n\nimport { addItemsToFormSection, FormTypeOptions } from './utils/addItemsToFormSection';\nimport { createComponentCollectionName } from './utils/createCollectionName';\nimport { Attribute, getUsedAttributeNames, SchemaData } from './utils/getUsedAttributeNames';\n\nimport type { ContentType } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\nexport type SchemaParams = {\n schemaAttributes: any;\n attributeType: keyof typeof attributeTypes;\n customFieldValidator: any;\n reservedNames: {\n attributes: Array<string>;\n };\n schemaData: any;\n ctbFormsAPI: any;\n};\n\ntype Base<TAttributesFormType extends 'base' | 'advanced'> = {\n data: any;\n type: keyof (typeof attributesForm)[TAttributesFormType];\n step: string;\n attributes: any;\n extensions: any;\n forTarget: string;\n};\n\nexport const forms = {\n customField: {\n schema({\n schemaAttributes,\n attributeType,\n customFieldValidator,\n reservedNames,\n schemaData,\n ctbFormsAPI,\n }: SchemaParams) {\n const usedAttributeNames = getUsedAttributeNames(schemaAttributes, schemaData);\n\n let attributeShape;\n if (attributeType === 'relation') {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n [],\n { initialData: {}, modifiedData: {} }\n );\n } else {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes\n );\n }\n\n return ctbFormsAPI.makeCustomFieldValidator(\n attributeShape,\n customFieldValidator,\n usedAttributeNames,\n reservedNames.attributes,\n schemaData\n );\n },\n form: {\n base({ customField }: any) {\n // Default section with required name field\n const sections: FormTypeOptions = [{ sectionTitle: null, items: [nameField] }];\n\n if (customField.options?.base) {\n addItemsToFormSection(customField.options.base, sections);\n }\n\n return { sections };\n },\n advanced({ customField, data, step, extensions, ...rest }: any) {\n // Default section with no fields\n const sections: FormTypeOptions = [{ sectionTitle: null, items: [] }];\n const injectedInputs = extensions.getAdvancedForm(['attribute', customField.type], {\n data,\n type: customField.type,\n step,\n ...rest,\n });\n\n if (customField.options?.advanced) {\n addItemsToFormSection(customField.options.advanced, sections);\n }\n\n if (injectedInputs) {\n const extendedSettings = {\n sectionTitle: {\n id: getTrad('modalForm.custom-fields.advanced.settings.extended'),\n defaultMessage: 'Extended settings',\n },\n items: injectedInputs,\n };\n\n sections.push(extendedSettings);\n }\n\n return { sections };\n },\n },\n },\n attribute: {\n schema(\n currentSchema: any,\n attributeType: keyof typeof attributeTypes,\n reservedNames: {\n attributes: Array<string>;\n },\n alreadyTakenTargetContentTypeAttributes: Array<Attribute>,\n options: SchemaData,\n extensions: {\n makeValidator: any;\n }\n ) {\n // Get the attributes object on the schema\n const attributes: Array<Attribute> = currentSchema?.attributes ?? [];\n const usedAttributeNames = getUsedAttributeNames(attributes, options);\n\n try {\n const attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n\n return extensions.makeValidator(\n ['attribute', attributeType],\n attributeShape,\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n } catch (err) {\n console.error('Error yup build schema', err);\n\n return attributeTypes.default(usedAttributeNames, reservedNames.attributes);\n }\n },\n form: {\n advanced({ data, type, step, extensions, ...rest }: Base<'advanced'>) {\n try {\n const baseForm = attributesForm.advanced[type](data, step).sections;\n const itemsToAdd = extensions.getAdvancedForm(['attribute', type], {\n data,\n type,\n step,\n ...rest,\n });\n\n let injected = false;\n\n const sections = baseForm.reduce((acc: Array<any>, current: any) => {\n if (current.sectionTitle === null || injected) {\n acc.push(current);\n } else {\n acc.push({ ...current, items: [...current.items, ...itemsToAdd] });\n injected = true;\n }\n\n return acc;\n }, []);\n // IF we want a dedicated section for the plugins\n // const sections = [\n // ...baseForm,\n // {\n // sectionTitle: { id: 'Zone pour plugins', defaultMessage: 'Zone pour plugins' },\n // items: itemsToAdd,\n // },\n // ];\n\n return { sections };\n } catch (err) {\n console.error(err);\n\n return { sections: [] };\n }\n },\n base({ data, type, step, attributes }: Base<'base'>) {\n try {\n return attributesForm.base[type](data, step, attributes);\n } catch (err) {\n return commonBaseForm;\n }\n },\n },\n },\n contentType: {\n schema(\n alreadyTakenNames: Array<string>,\n isEditing: boolean,\n ctUid: Internal.UID.ContentType,\n reservedNames: {\n models: any;\n },\n extensions: any,\n contentTypes: Record<Internal.UID.ContentType, ContentType>\n ) {\n const singularNames = Object.values(contentTypes).map((contentType) => {\n return contentType.info.singularName;\n });\n\n const pluralNames = Object.values(contentTypes).map((contentType: any) => {\n return contentType?.info?.pluralName ?? '';\n });\n\n const takenNames = isEditing\n ? alreadyTakenNames.filter((uid) => uid !== ctUid)\n : alreadyTakenNames;\n\n const takenSingularNames = isEditing\n ? singularNames.filter((singName) => {\n const { info } = contentTypes[ctUid];\n\n return info.singularName !== singName;\n })\n : singularNames;\n\n const takenPluralNames = isEditing\n ? pluralNames.filter((pluralName) => {\n const { info } = contentTypes[ctUid];\n\n return info.pluralName !== pluralName;\n })\n : pluralNames;\n\n // return the array of collection names not all normalized\n const collectionNames = Object.values(contentTypes).map((contentType) => {\n return contentType?.collectionName ?? '';\n });\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => {\n const { collectionName: currentCollectionName } = contentTypes[ctUid];\n\n return collectionName !== currentCollectionName;\n })\n : collectionNames;\n\n const contentTypeShape = createContentTypeSchema({\n usedContentTypeNames: takenNames,\n reservedModels: reservedNames.models,\n singularNames: takenSingularNames,\n pluralNames: takenPluralNames,\n collectionNames: takenCollectionNames,\n });\n\n // FIXME\n return extensions.makeValidator(\n ['contentType'],\n contentTypeShape,\n takenNames,\n reservedNames.models,\n takenSingularNames,\n takenPluralNames\n );\n },\n form: {\n base({ actionType }: any) {\n if (actionType === 'create') {\n return contentTypeForm.base.create();\n }\n\n return contentTypeForm.base.edit();\n },\n advanced({ extensions }: any) {\n const baseForm = contentTypeForm.advanced\n .default()\n .sections.map((section) => section.items)\n .flat();\n const itemsToAdd = extensions.getAdvancedForm(['contentType']);\n\n return {\n sections: [\n {\n items: [...baseForm, ...itemsToAdd],\n },\n ],\n };\n },\n },\n },\n component: {\n schema(\n alreadyTakenAttributes: Array<Internal.UID.Component>,\n componentCategory: string,\n reservedNames: {\n models: any;\n },\n isEditing = false,\n components: Record<string, any>,\n componentDisplayName: string,\n compoUid: Internal.UID.Component | null = null\n ) {\n const takenNames = isEditing\n ? alreadyTakenAttributes.filter((uid: Internal.UID.Component) => uid !== compoUid)\n : alreadyTakenAttributes;\n const collectionNames = Object.values(components).map((component: any) => {\n return component?.collectionName;\n });\n\n const currentCollectionName = createComponentCollectionName(\n componentDisplayName,\n componentCategory\n );\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => collectionName !== currentCollectionName)\n : collectionNames;\n\n return createComponentSchema(\n takenNames,\n reservedNames.models,\n componentCategory,\n takenCollectionNames,\n currentCollectionName\n );\n },\n form: {\n advanced() {\n return {\n sections: componentForm.advanced(),\n };\n },\n base() {\n return {\n sections: componentForm.base(),\n };\n },\n },\n },\n addComponentToDynamicZone: {\n form: {\n advanced() {\n return dynamiczoneForm.advanced.default();\n },\n base({ data }: any) {\n const isCreatingComponent = data?.createComponent ?? false;\n\n if (isCreatingComponent) {\n return dynamiczoneForm.base.createComponent();\n }\n\n return dynamiczoneForm.base.default();\n },\n },\n },\n};\n"],"names":["forms","customField","schema","schemaAttributes","attributeType","customFieldValidator","reservedNames","schemaData","ctbFormsAPI","usedAttributeNames","getUsedAttributeNames","attributeShape","attributeTypes","attributes","initialData","modifiedData","makeCustomFieldValidator","form","base","sections","sectionTitle","items","nameField","options","addItemsToFormSection","advanced","data","step","extensions","rest","injectedInputs","getAdvancedForm","type","extendedSettings","id","getTrad","defaultMessage","push","attribute","currentSchema","alreadyTakenTargetContentTypeAttributes","makeValidator","err","console","error","default","baseForm","attributesForm","itemsToAdd","injected","reduce","acc","current","commonBaseForm","contentType","alreadyTakenNames","isEditing","ctUid","contentTypes","singularNames","Object","values","map","info","singularName","pluralNames","pluralName","takenNames","filter","uid","takenSingularNames","singName","takenPluralNames","collectionNames","collectionName","takenCollectionNames","currentCollectionName","contentTypeShape","createContentTypeSchema","usedContentTypeNames","reservedModels","models","actionType","contentTypeForm","create","edit","section","flat","component","alreadyTakenAttributes","componentCategory","components","componentDisplayName","compoUid","createComponentCollectionName","createComponentSchema","componentForm","addComponentToDynamicZone","dynamiczoneForm","isCreatingComponent","createComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"forms.mjs","sources":["../../../../../admin/src/components/FormModal/forms/forms.ts"],"sourcesContent":["import { getTrad } from '../../../utils';\nimport { commonBaseForm } from '../attributes/commonBaseForm';\nimport { attributesForm } from '../attributes/form';\nimport { nameField } from '../attributes/nameField';\nimport { attributeTypes } from '../attributes/types';\nimport { componentForm } from '../component/componentForm';\nimport { createComponentSchema } from '../component/createComponentSchema';\nimport { contentTypeForm } from '../contentType/contentTypeForm';\nimport { createContentTypeSchema } from '../contentType/createContentTypeSchema';\nimport { dynamiczoneForm } from '../dynamiczoneForm';\n\nimport { addItemsToFormSection, FormTypeOptions } from './utils/addItemsToFormSection';\nimport { createComponentCollectionName } from './utils/createCollectionName';\nimport { Attribute, getUsedAttributeNames, SchemaData } from './utils/getUsedAttributeNames';\n\nimport type { ContentType } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\nexport type SchemaParams = {\n schemaAttributes: any;\n attributeType: keyof typeof attributeTypes;\n customFieldValidator: any;\n reservedNames: {\n attributes: Array<string>;\n };\n schemaData: any;\n ctbFormsAPI: any;\n};\n\ntype Base<TAttributesFormType extends 'base' | 'advanced'> = {\n data: any;\n type: keyof (typeof attributesForm)[TAttributesFormType];\n step: string;\n attributes: any;\n extensions: any;\n forTarget: string;\n};\n\nexport const forms = {\n customField: {\n schema({\n schemaAttributes,\n attributeType,\n customFieldValidator,\n reservedNames,\n schemaData,\n ctbFormsAPI,\n }: SchemaParams) {\n const usedAttributeNames = getUsedAttributeNames(schemaAttributes, schemaData);\n\n let attributeShape;\n if (attributeType === 'relation') {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n [],\n { initialData: {}, modifiedData: {} }\n );\n } else {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes\n );\n }\n\n return ctbFormsAPI.makeCustomFieldValidator(\n attributeShape,\n customFieldValidator,\n usedAttributeNames,\n reservedNames.attributes,\n schemaData\n );\n },\n form: {\n base({ customField }: any) {\n // Default section with required name field\n const sections: FormTypeOptions = [{ sectionTitle: null, items: [nameField] }];\n\n if (customField.options?.base) {\n addItemsToFormSection(customField.options.base, sections);\n }\n\n return { sections };\n },\n advanced({ customField, data, step, extensions, ...rest }: any) {\n // Default section with no fields\n const sections: FormTypeOptions = [\n { sectionTitle: null, items: [] },\n {\n sectionTitle: { id: 'form.attribute.condition.section', defaultMessage: 'Conditions' },\n items: [\n {\n name: 'conditions',\n type: 'condition-form',\n intlLabel: {\n id: 'form.attribute.condition.label',\n defaultMessage: 'Visibility condition',\n },\n description: {\n id: 'form.attribute.condition.desc',\n defaultMessage: 'Show this field only when a boolean/enum condition matches.',\n },\n },\n ],\n },\n ];\n const injectedInputs = extensions.getAdvancedForm(['attribute', customField.type], {\n data,\n type: customField.type,\n step,\n ...rest,\n });\n\n if (customField.options?.advanced) {\n addItemsToFormSection(customField.options.advanced, sections);\n }\n\n if (injectedInputs) {\n const extendedSettings = {\n sectionTitle: {\n id: getTrad('modalForm.custom-fields.advanced.settings.extended'),\n defaultMessage: 'Extended settings',\n },\n items: injectedInputs,\n };\n\n sections.push(extendedSettings);\n }\n\n return { sections };\n },\n },\n },\n attribute: {\n schema(\n currentSchema: any,\n attributeType: keyof typeof attributeTypes,\n reservedNames: {\n attributes: Array<string>;\n },\n alreadyTakenTargetContentTypeAttributes: Array<Attribute>,\n options: SchemaData,\n extensions: {\n makeValidator: any;\n }\n ) {\n // Get the attributes object on the schema\n const attributes: Array<Attribute> = currentSchema?.attributes ?? [];\n const usedAttributeNames = getUsedAttributeNames(attributes, options);\n\n try {\n const attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n\n return extensions.makeValidator(\n ['attribute', attributeType],\n attributeShape,\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n } catch (err) {\n console.error('Error yup build schema', err);\n\n return attributeTypes.default(usedAttributeNames, reservedNames.attributes);\n }\n },\n form: {\n advanced({ data, type, step, extensions, ...rest }: Base<'advanced'>) {\n try {\n const baseForm = attributesForm.advanced[type](data, step).sections;\n const itemsToAdd = extensions.getAdvancedForm(['attribute', type], {\n data,\n type,\n step,\n ...rest,\n });\n\n let injected = false;\n\n const sections = baseForm.reduce((acc: Array<any>, current: any) => {\n if (current.sectionTitle === null || injected) {\n acc.push(current);\n } else {\n acc.push({ ...current, items: [...current.items, ...itemsToAdd] });\n injected = true;\n }\n\n return acc;\n }, []);\n // IF we want a dedicated section for the plugins\n // const sections = [\n // ...baseForm,\n // {\n // sectionTitle: { id: 'Zone pour plugins', defaultMessage: 'Zone pour plugins' },\n // items: itemsToAdd,\n // },\n // ];\n\n return { sections };\n } catch (err) {\n console.error(err);\n\n return { sections: [] };\n }\n },\n base({ data, type, step, attributes }: Base<'base'>) {\n try {\n return attributesForm.base[type](data, step, attributes);\n } catch (err) {\n return commonBaseForm;\n }\n },\n },\n },\n contentType: {\n schema(\n alreadyTakenNames: Array<string>,\n isEditing: boolean,\n ctUid: Internal.UID.ContentType,\n reservedNames: {\n models: any;\n },\n extensions: any,\n contentTypes: Record<Internal.UID.ContentType, ContentType>\n ) {\n const singularNames = Object.values(contentTypes).map((contentType) => {\n return contentType.info.singularName;\n });\n\n const pluralNames = Object.values(contentTypes).map((contentType: any) => {\n return contentType?.info?.pluralName ?? '';\n });\n\n const takenNames = isEditing\n ? alreadyTakenNames.filter((uid) => uid !== ctUid)\n : alreadyTakenNames;\n\n const takenSingularNames = isEditing\n ? singularNames.filter((singName) => {\n const { info } = contentTypes[ctUid];\n\n return info.singularName !== singName;\n })\n : singularNames;\n\n const takenPluralNames = isEditing\n ? pluralNames.filter((pluralName) => {\n const { info } = contentTypes[ctUid];\n\n return info.pluralName !== pluralName;\n })\n : pluralNames;\n\n // return the array of collection names not all normalized\n const collectionNames = Object.values(contentTypes).map((contentType) => {\n return contentType?.collectionName ?? '';\n });\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => {\n const { collectionName: currentCollectionName } = contentTypes[ctUid];\n\n return collectionName !== currentCollectionName;\n })\n : collectionNames;\n\n const contentTypeShape = createContentTypeSchema({\n usedContentTypeNames: takenNames,\n reservedModels: reservedNames.models,\n singularNames: takenSingularNames,\n pluralNames: takenPluralNames,\n collectionNames: takenCollectionNames,\n });\n\n // FIXME\n return extensions.makeValidator(\n ['contentType'],\n contentTypeShape,\n takenNames,\n reservedNames.models,\n takenSingularNames,\n takenPluralNames\n );\n },\n form: {\n base({ actionType }: any) {\n if (actionType === 'create') {\n return contentTypeForm.base.create();\n }\n\n return contentTypeForm.base.edit();\n },\n advanced({ extensions }: any) {\n const baseForm = contentTypeForm.advanced\n .default()\n .sections.map((section) => section.items)\n .flat();\n const itemsToAdd = extensions.getAdvancedForm(['contentType']);\n\n return {\n sections: [\n {\n items: [...baseForm, ...itemsToAdd],\n },\n ],\n };\n },\n },\n },\n component: {\n schema(\n alreadyTakenAttributes: Array<Internal.UID.Component>,\n componentCategory: string,\n reservedNames: {\n models: any;\n },\n isEditing = false,\n components: Record<string, any>,\n componentDisplayName: string,\n compoUid: Internal.UID.Component | null = null\n ) {\n const takenNames = isEditing\n ? alreadyTakenAttributes.filter((uid: Internal.UID.Component) => uid !== compoUid)\n : alreadyTakenAttributes;\n const collectionNames = Object.values(components).map((component: any) => {\n return component?.collectionName;\n });\n\n const currentCollectionName = createComponentCollectionName(\n componentDisplayName,\n componentCategory\n );\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => collectionName !== currentCollectionName)\n : collectionNames;\n\n return createComponentSchema(\n takenNames,\n reservedNames.models,\n componentCategory,\n takenCollectionNames,\n currentCollectionName\n );\n },\n form: {\n advanced() {\n return {\n sections: componentForm.advanced(),\n };\n },\n base() {\n return {\n sections: componentForm.base(),\n };\n },\n },\n },\n addComponentToDynamicZone: {\n form: {\n advanced() {\n return dynamiczoneForm.advanced.default();\n },\n base({ data }: any) {\n const isCreatingComponent = data?.createComponent ?? false;\n\n if (isCreatingComponent) {\n return dynamiczoneForm.base.createComponent();\n }\n\n return dynamiczoneForm.base.default();\n },\n },\n },\n};\n"],"names":["forms","customField","schema","schemaAttributes","attributeType","customFieldValidator","reservedNames","schemaData","ctbFormsAPI","usedAttributeNames","getUsedAttributeNames","attributeShape","attributeTypes","attributes","initialData","modifiedData","makeCustomFieldValidator","form","base","sections","sectionTitle","items","nameField","options","addItemsToFormSection","advanced","data","step","extensions","rest","id","defaultMessage","name","type","intlLabel","description","injectedInputs","getAdvancedForm","extendedSettings","getTrad","push","attribute","currentSchema","alreadyTakenTargetContentTypeAttributes","makeValidator","err","console","error","default","baseForm","attributesForm","itemsToAdd","injected","reduce","acc","current","commonBaseForm","contentType","alreadyTakenNames","isEditing","ctUid","contentTypes","singularNames","Object","values","map","info","singularName","pluralNames","pluralName","takenNames","filter","uid","takenSingularNames","singName","takenPluralNames","collectionNames","collectionName","takenCollectionNames","currentCollectionName","contentTypeShape","createContentTypeSchema","usedContentTypeNames","reservedModels","models","actionType","contentTypeForm","create","edit","section","flat","component","alreadyTakenAttributes","componentCategory","components","componentDisplayName","compoUid","createComponentCollectionName","createComponentSchema","componentForm","addComponentToDynamicZone","dynamiczoneForm","isCreatingComponent","createComponent"],"mappings":"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"}
|
|
@@ -100,14 +100,16 @@ const List = ({ addComponentToDZ, firstLoopComponentUid, isFromDynamicZone = fal
|
|
|
100
100
|
};
|
|
101
101
|
if (type?.attributes.length === 0 && isMain) {
|
|
102
102
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.EmptyStateLayout, {
|
|
103
|
-
action: /*#__PURE__*/ jsxRuntime.jsx(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
103
|
+
action: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.tours.contentTypeBuilder.AddFields, {
|
|
104
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
105
|
+
onClick: onClickAddField,
|
|
106
|
+
size: "L",
|
|
107
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(Icons.Plus, {}),
|
|
108
|
+
variant: "secondary",
|
|
109
|
+
children: formatMessage({
|
|
110
|
+
id: getTrad.getTrad('table.button.no-fields'),
|
|
111
|
+
defaultMessage: 'Add new field'
|
|
112
|
+
})
|
|
111
113
|
})
|
|
112
114
|
}),
|
|
113
115
|
content: formatMessage(type.modelType === 'contentType' ? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.js","sources":["../../../admin/src/components/List.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport {\n DndContext,\n closestCenter,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n} from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, EmptyStateLayout } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { createPortal } from 'react-dom';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeRow, type AttributeRowProps } from './AttributeRow';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { NestedTFooter, TFooter } from './Footers';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\n\nimport type { Component, ContentType } from '../types';\nimport type { UID } from '@strapi/types';\n\nexport const ListGrid = styled(Box)`\n white-space: nowrap;\n list-style: none;\n list-style-type: none;\n`;\n\ntype ListProps = {\n addComponentToDZ?: () => void;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n isMain?: boolean;\n secondLoopComponentUid?: UID.Component | null;\n isSub?: boolean;\n type: ContentType | Component;\n};\n\nconst SortableRow = (props: AttributeRowProps) => {\n const { isInDevelopmentMode } = useDataManager();\n\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n setActivatorNodeRef,\n } = useSortable({\n disabled:\n !isInDevelopmentMode || props.item.status === 'REMOVED' || props.type.status === 'REMOVED',\n id: props.item.id,\n data: { index: props.item.index },\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n };\n\n return (\n <AttributeRow\n ref={setNodeRef}\n handleRef={setActivatorNodeRef}\n isDragging={isDragging}\n attributes={attributes}\n listeners={listeners}\n style={style}\n {...props}\n />\n );\n};\n\nexport const List = ({\n addComponentToDZ,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isSub = false,\n secondLoopComponentUid,\n type,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { isInDevelopmentMode, moveAttribute } = useDataManager();\n const { onOpenModalAddField } = useFormModalNavigation();\n\n const items = type?.attributes.map((item, index) => {\n return {\n id: `${type.uid}_${item.name}`,\n index,\n ...item,\n };\n });\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const isDeleted = type?.status === 'REMOVED';\n\n const sensors = useSensors(useSensor(PointerSensor));\n\n function handlerDragStart({ active }: DragStartEvent) {\n if (!active) {\n return;\n }\n\n setActiveId(active.id);\n }\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (over) {\n if (active.id !== over.id) {\n moveAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n from: active.data.current!.index,\n to: over.data.current!.index,\n });\n }\n }\n }\n\n const activeItem = items.find((item) => item.id === activeId);\n\n const onClickAddField = () => {\n if (isDeleted) {\n return;\n }\n\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: type?.modelType, targetUid: type.uid });\n };\n\n if (type?.attributes.length === 0 && isMain) {\n return (\n <EmptyStateLayout\n action={\n <Button onClick={onClickAddField} size=\"L\" startIcon={<Plus />} variant=\"secondary\">\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n }\n content={formatMessage(\n type.modelType === 'contentType'\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handlerDragStart}\n onDragCancel={() => setActiveId(null)}\n modifiers={[restrictToVerticalAxis]}\n >\n <ListGrid tag=\"ul\">\n {createPortal(\n <DragOverlay zIndex={10}>\n {activeItem && (\n <AttributeRow\n isOverlay\n item={activeItem}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n )}\n </DragOverlay>,\n document.body\n )}\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item) => {\n return (\n <SortableRow\n key={item.id}\n item={item}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n );\n })}\n </SortableContext>\n </ListGrid>\n\n {isMain && isInDevelopmentMode && (\n <TFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isDeleted ? 'neutral' : 'primary'}\n >\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${type.modelType === 'component' ? 'component' : type.kind}`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && (\n <NestedTFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone && !isDeleted ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </DndContext>\n );\n};\n"],"names":["ListGrid","styled","Box","SortableRow","props","isInDevelopmentMode","useDataManager","isDragging","attributes","listeners","setNodeRef","transform","transition","setActivatorNodeRef","useSortable","disabled","item","status","type","id","data","index","style","CSS","Transform","toString","x","y","scaleX","scaleY","_jsx","AttributeRow","ref","handleRef","List","addComponentToDZ","firstLoopComponentUid","isFromDynamicZone","isMain","isSub","secondLoopComponentUid","formatMessage","useIntl","trackUsage","useTracking","moveAttribute","onOpenModalAddField","useFormModalNavigation","items","map","uid","name","activeId","setActiveId","useState","isDeleted","sensors","useSensors","useSensor","PointerSensor","handlerDragStart","active","handleDragEnd","event","over","forTarget","modelType","targetUid","from","current","to","activeItem","find","onClickAddField","length","EmptyStateLayout","action","Button","onClick","size","startIcon","Plus","variant","getTrad","defaultMessage","content","hasRadius","icon","EmptyDocuments","width","_jsxs","DndContext","collisionDetection","closestCenter","onDragEnd","onDragStart","onDragCancel","modifiers","restrictToVerticalAxis","tag","createPortal","DragOverlay","zIndex","isOverlay","document","body","SortableContext","strategy","verticalListSortingStrategy","TFooter","cursor","color","kind","NestedTFooter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"List.js","sources":["../../../admin/src/components/List.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport {\n DndContext,\n closestCenter,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n} from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { tours, useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, EmptyStateLayout } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { createPortal } from 'react-dom';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeRow, type AttributeRowProps } from './AttributeRow';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { NestedTFooter, TFooter } from './Footers';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\n\nimport type { Component, ContentType } from '../types';\nimport type { UID } from '@strapi/types';\n\nexport const ListGrid = styled(Box)`\n white-space: nowrap;\n list-style: none;\n list-style-type: none;\n`;\n\ntype ListProps = {\n addComponentToDZ?: () => void;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n isMain?: boolean;\n secondLoopComponentUid?: UID.Component | null;\n isSub?: boolean;\n type: ContentType | Component;\n};\n\nconst SortableRow = (props: AttributeRowProps) => {\n const { isInDevelopmentMode } = useDataManager();\n\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n setActivatorNodeRef,\n } = useSortable({\n disabled:\n !isInDevelopmentMode || props.item.status === 'REMOVED' || props.type.status === 'REMOVED',\n id: props.item.id,\n data: { index: props.item.index },\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n };\n\n return (\n <AttributeRow\n ref={setNodeRef}\n handleRef={setActivatorNodeRef}\n isDragging={isDragging}\n attributes={attributes}\n listeners={listeners}\n style={style}\n {...props}\n />\n );\n};\n\nexport const List = ({\n addComponentToDZ,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isSub = false,\n secondLoopComponentUid,\n type,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { isInDevelopmentMode, moveAttribute } = useDataManager();\n const { onOpenModalAddField } = useFormModalNavigation();\n\n const items = type?.attributes.map((item, index) => {\n return {\n id: `${type.uid}_${item.name}`,\n index,\n ...item,\n };\n });\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const isDeleted = type?.status === 'REMOVED';\n\n const sensors = useSensors(useSensor(PointerSensor));\n\n function handlerDragStart({ active }: DragStartEvent) {\n if (!active) {\n return;\n }\n\n setActiveId(active.id);\n }\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (over) {\n if (active.id !== over.id) {\n moveAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n from: active.data.current!.index,\n to: over.data.current!.index,\n });\n }\n }\n }\n\n const activeItem = items.find((item) => item.id === activeId);\n\n const onClickAddField = () => {\n if (isDeleted) {\n return;\n }\n\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: type?.modelType, targetUid: type.uid });\n };\n\n if (type?.attributes.length === 0 && isMain) {\n return (\n <EmptyStateLayout\n action={\n <tours.contentTypeBuilder.AddFields>\n <Button onClick={onClickAddField} size=\"L\" startIcon={<Plus />} variant=\"secondary\">\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n </tours.contentTypeBuilder.AddFields>\n }\n content={formatMessage(\n type.modelType === 'contentType'\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handlerDragStart}\n onDragCancel={() => setActiveId(null)}\n modifiers={[restrictToVerticalAxis]}\n >\n <ListGrid tag=\"ul\">\n {createPortal(\n <DragOverlay zIndex={10}>\n {activeItem && (\n <AttributeRow\n isOverlay\n item={activeItem}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n )}\n </DragOverlay>,\n document.body\n )}\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item) => {\n return (\n <SortableRow\n key={item.id}\n item={item}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n );\n })}\n </SortableContext>\n </ListGrid>\n\n {isMain && isInDevelopmentMode && (\n <TFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isDeleted ? 'neutral' : 'primary'}\n >\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${type.modelType === 'component' ? 'component' : type.kind}`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && (\n <NestedTFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone && !isDeleted ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </DndContext>\n );\n};\n"],"names":["ListGrid","styled","Box","SortableRow","props","isInDevelopmentMode","useDataManager","isDragging","attributes","listeners","setNodeRef","transform","transition","setActivatorNodeRef","useSortable","disabled","item","status","type","id","data","index","style","CSS","Transform","toString","x","y","scaleX","scaleY","_jsx","AttributeRow","ref","handleRef","List","addComponentToDZ","firstLoopComponentUid","isFromDynamicZone","isMain","isSub","secondLoopComponentUid","formatMessage","useIntl","trackUsage","useTracking","moveAttribute","onOpenModalAddField","useFormModalNavigation","items","map","uid","name","activeId","setActiveId","useState","isDeleted","sensors","useSensors","useSensor","PointerSensor","handlerDragStart","active","handleDragEnd","event","over","forTarget","modelType","targetUid","from","current","to","activeItem","find","onClickAddField","length","EmptyStateLayout","action","tours","contentTypeBuilder","AddFields","Button","onClick","size","startIcon","Plus","variant","getTrad","defaultMessage","content","hasRadius","icon","EmptyDocuments","width","_jsxs","DndContext","collisionDetection","closestCenter","onDragEnd","onDragStart","onDragCancel","modifiers","restrictToVerticalAxis","tag","createPortal","DragOverlay","zIndex","isOverlay","document","body","SortableContext","strategy","verticalListSortingStrategy","TFooter","cursor","color","kind","NestedTFooter"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAkCaA,MAAAA,QAAAA,GAAWC,uBAAOC,CAAAA,gBAAAA,CAAI;;;;AAInC;AAYA,MAAMC,cAAc,CAACC,KAAAA,GAAAA;IACnB,MAAM,EAAEC,mBAAmB,EAAE,GAAGC,6BAAAA,EAAAA;AAEhC,IAAA,MAAM,EACJC,UAAU,EACVC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,mBAAmB,EACpB,GAAGC,oBAAY,CAAA;AACdC,QAAAA,QAAAA,EACE,CAACV,mBAAAA,IAAuBD,KAAMY,CAAAA,IAAI,CAACC,MAAM,KAAK,SAAA,IAAab,KAAMc,CAAAA,IAAI,CAACD,MAAM,KAAK,SAAA;QACnFE,EAAIf,EAAAA,KAAAA,CAAMY,IAAI,CAACG,EAAE;QACjBC,IAAM,EAAA;YAAEC,KAAOjB,EAAAA,KAAAA,CAAMY,IAAI,CAACK;AAAM;AAClC,KAAA,CAAA;AAEA,IAAA,MAAMC,KAAQ,GAAA;AACZX,QAAAA,SAAAA,EAAWY,aAAIC,CAAAA,SAAS,CAACC,QAAQ,CAAC;AAChCC,YAAAA,CAAAA,EAAGf,WAAWe,CAAK,IAAA,CAAA;AACnBC,YAAAA,CAAAA,EAAGhB,WAAWgB,CAAK,IAAA,CAAA;YACnBC,MAAQ,EAAA,CAAA;YACRC,MAAQ,EAAA;AACV,SAAA,CAAA;AACAjB,QAAAA;AACF,KAAA;AAEA,IAAA,qBACEkB,cAACC,CAAAA,yBAAAA,EAAAA;QACCC,GAAKtB,EAAAA,UAAAA;QACLuB,SAAWpB,EAAAA,mBAAAA;QACXN,UAAYA,EAAAA,UAAAA;QACZC,UAAYA,EAAAA,UAAAA;QACZC,SAAWA,EAAAA,SAAAA;QACXa,KAAOA,EAAAA,KAAAA;AACN,QAAA,GAAGlB;;AAGV,CAAA;AAEO,MAAM8B,OAAO,CAAC,EACnBC,gBAAgB,EAChBC,qBAAqB,EACrBC,iBAAoB,GAAA,KAAK,EACzBC,MAAS,GAAA,KAAK,EACdC,KAAQ,GAAA,KAAK,EACbC,sBAAsB,EACtBtB,IAAI,EACM,GAAA;IACV,MAAM,EAAEuB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;AACvB,IAAA,MAAM,EAAEvC,mBAAmB,EAAEwC,aAAa,EAAE,GAAGvC,6BAAAA,EAAAA;IAC/C,MAAM,EAAEwC,mBAAmB,EAAE,GAAGC,6CAAAA,EAAAA;AAEhC,IAAA,MAAMC,KAAQ9B,GAAAA,IAAAA,EAAMV,UAAWyC,CAAAA,GAAAA,CAAI,CAACjC,IAAMK,EAAAA,KAAAA,GAAAA;QACxC,OAAO;YACLF,EAAI,EAAA,CAAC,EAAED,IAAAA,CAAKgC,GAAG,CAAC,CAAC,EAAElC,IAAAA,CAAKmC,IAAI,CAAC,CAAC;AAC9B9B,YAAAA,KAAAA;AACA,YAAA,GAAGL;AACL,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAM,CAACoC,QAAAA,EAAUC,WAAY,CAAA,GAAGC,cAAkC,CAAA,IAAA,CAAA;IAElE,MAAMC,SAAAA,GAAYrC,MAAMD,MAAW,KAAA,SAAA;IAEnC,MAAMuC,OAAAA,GAAUC,gBAAWC,cAAUC,CAAAA,kBAAAA,CAAAA,CAAAA;IAErC,SAASC,gBAAAA,CAAiB,EAAEC,MAAM,EAAkB,EAAA;AAClD,QAAA,IAAI,CAACA,MAAQ,EAAA;AACX,YAAA;AACF;AAEAR,QAAAA,WAAAA,CAAYQ,OAAO1C,EAAE,CAAA;AACvB;AAEA,IAAA,SAAS2C,cAAcC,KAAmB,EAAA;AACxC,QAAA,MAAM,EAAEF,MAAM,EAAEG,IAAI,EAAE,GAAGD,KAAAA;QAEzBV,WAAY,CAAA,IAAA,CAAA;AAEZ,QAAA,IAAIW,IAAM,EAAA;AACR,YAAA,IAAIH,MAAO1C,CAAAA,EAAE,KAAK6C,IAAAA,CAAK7C,EAAE,EAAE;gBACzB0B,aAAc,CAAA;AACZoB,oBAAAA,SAAAA,EAAW/C,KAAKgD,SAAS;AACzBC,oBAAAA,SAAAA,EAAWjD,KAAKgC,GAAG;AACnBkB,oBAAAA,IAAAA,EAAMP,MAAOzC,CAAAA,IAAI,CAACiD,OAAO,CAAEhD,KAAK;AAChCiD,oBAAAA,EAAAA,EAAIN,IAAK5C,CAAAA,IAAI,CAACiD,OAAO,CAAEhD;AACzB,iBAAA,CAAA;AACF;AACF;AACF;IAEA,MAAMkD,UAAAA,GAAavB,MAAMwB,IAAI,CAAC,CAACxD,IAASA,GAAAA,IAAAA,CAAKG,EAAE,KAAKiC,QAAAA,CAAAA;AAEpD,IAAA,MAAMqB,eAAkB,GAAA,IAAA;AACtB,QAAA,IAAIlB,SAAW,EAAA;AACb,YAAA;AACF;QAEAZ,UAAW,CAAA,6BAAA,CAAA;QAEXG,mBAAoB,CAAA;AAAEmB,YAAAA,SAAAA,EAAW/C,IAAMgD,EAAAA,SAAAA;AAAWC,YAAAA,SAAAA,EAAWjD,KAAKgC;AAAI,SAAA,CAAA;AACxE,KAAA;AAEA,IAAA,IAAIhC,IAAMV,EAAAA,UAAAA,CAAWkE,MAAW,KAAA,CAAA,IAAKpC,MAAQ,EAAA;AAC3C,QAAA,qBACER,cAAC6C,CAAAA,6BAAAA,EAAAA;AACCC,YAAAA,MAAAA,gBACE9C,cAAC+C,CAAAA,iBAAAA,CAAMC,kBAAkB,CAACC,SAAS,EAAA;AACjC,gBAAA,QAAA,gBAAAjD,cAACkD,CAAAA,mBAAAA,EAAAA;oBAAOC,OAASR,EAAAA,eAAAA;oBAAiBS,IAAK,EAAA,GAAA;AAAIC,oBAAAA,SAAAA,gBAAWrD,cAACsD,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;oBAASC,OAAQ,EAAA,WAAA;8BACrE5C,aAAc,CAAA;AACbtB,wBAAAA,EAAAA,EAAImE,eAAQ,CAAA,wBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA;;;AAINC,YAAAA,OAAAA,EAAS/C,aACPvB,CAAAA,IAAAA,CAAKgD,SAAS,KAAK,aACf,GAAA;AACE/C,gBAAAA,EAAAA,EAAImE,eAAQ,CAAA,yCAAA,CAAA;gBACZC,cAAgB,EAAA;aAElB,GAAA;AACEpE,gBAAAA,EAAAA,EAAImE,eAAQ,CAAA,mCAAA,CAAA;gBACZC,cAAgB,EAAA;AAClB,aAAA,CAAA;YAENE,SAAS,EAAA,IAAA;AACTC,YAAAA,IAAAA,gBAAM5D,cAAC6D,CAAAA,sBAAAA,EAAAA;gBAAeC,KAAM,EAAA;;;AAGlC;AAEA,IAAA,qBACEC,eAACC,CAAAA,eAAAA,EAAAA;QACCtC,OAASA,EAAAA,OAAAA;QACTuC,kBAAoBC,EAAAA,kBAAAA;QACpBC,SAAWnC,EAAAA,aAAAA;QACXoC,WAAatC,EAAAA,gBAAAA;AACbuC,QAAAA,YAAAA,EAAc,IAAM9C,WAAY,CAAA,IAAA,CAAA;QAChC+C,SAAW,EAAA;AAACC,YAAAA;AAAuB,SAAA;;0BAEnCR,eAAC7F,CAAAA,QAAAA,EAAAA;gBAASsG,GAAI,EAAA,IAAA;;AACXC,kCAAAA,qBAAAA,eACCzE,cAAC0E,CAAAA,gBAAAA,EAAAA;wBAAYC,MAAQ,EAAA,EAAA;AAClBlC,wBAAAA,QAAAA,EAAAA,UAAAA,kBACCzC,cAACC,CAAAA,yBAAAA,EAAAA;4BACC2E,SAAS,EAAA,IAAA;4BACT1F,IAAMuD,EAAAA,UAAAA;4BACNnC,qBAAuBA,EAAAA,qBAAAA;4BACvBC,iBAAmBA,EAAAA,iBAAAA;4BACnBG,sBAAwBA,EAAAA,sBAAAA;4BACxBtB,IAAMA,EAAAA,IAAAA;4BACNiB,gBAAkBA,EAAAA;;AAIxBwE,qBAAAA,CAAAA,EAAAA,QAAAA,CAASC,IAAI,CAAA;kCAEf9E,cAAC+E,CAAAA,wBAAAA,EAAAA;wBAAgB7D,KAAOA,EAAAA,KAAAA;wBAAO8D,QAAUC,EAAAA,oCAAAA;kCACtC/D,KAAMC,CAAAA,GAAG,CAAC,CAACjC,IAAAA,GAAAA;AACV,4BAAA,qBACEc,cAAC3B,CAAAA,WAAAA,EAAAA;gCAECa,IAAMA,EAAAA,IAAAA;gCACNoB,qBAAuBA,EAAAA,qBAAAA;gCACvBC,iBAAmBA,EAAAA,iBAAAA;gCACnBG,sBAAwBA,EAAAA,sBAAAA;gCACxBtB,IAAMA,EAAAA,IAAAA;gCACNiB,gBAAkBA,EAAAA;AANbnB,6BAAAA,EAAAA,IAAAA,CAAKG,EAAE,CAAA;AASlB,yBAAA;;;;AAIHmB,YAAAA,MAAAA,IAAUjC,qCACTyB,cAACkF,CAAAA,eAAAA,EAAAA;AACCC,gBAAAA,MAAAA,EAAQ1D,YAAY,QAAW,GAAA,SAAA;AAC/BmC,gBAAAA,IAAAA,gBAAM5D,cAACsD,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;gBACPH,OAASR,EAAAA,eAAAA;AACTyC,gBAAAA,KAAAA,EAAO3D,YAAY,SAAY,GAAA,SAAA;0BAE9Bd,aAAc,CAAA;AACbtB,oBAAAA,EAAAA,EAAImE,eACF,CAAA,CAAC,yBAAyB,EAAEpE,IAAKgD,CAAAA,SAAS,KAAK,WAAA,GAAc,WAAchD,GAAAA,IAAAA,CAAKiG,IAAI,CAAC,CAAC,CAAA;oBAExF5B,cAAgB,EAAA;AAClB,iBAAA;;AAGHhD,YAAAA,KAAAA,IAASlC,qCACRyB,cAACsF,CAAAA,qBAAAA,EAAAA;AACCH,gBAAAA,MAAAA,EAAQ1D,YAAY,QAAW,GAAA,SAAA;AAC/BmC,gBAAAA,IAAAA,gBAAM5D,cAACsD,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;gBACPH,OAASR,EAAAA,eAAAA;gBACTyC,KAAO7E,EAAAA,iBAAAA,IAAqB,CAACkB,SAAAA,GAAY,SAAY,GAAA,SAAA;0BAEpDd,aAAc,CAAA;oBACbtB,EAAImE,EAAAA,eAAAA,CAAQ,CAAC,kCAAkC,CAAC,CAAA;oBAChDC,cAAgB,EAAA;AAClB,iBAAA;;;;AAKV;;;;;"}
|
|
@@ -4,7 +4,7 @@ import { useSensors, useSensor, PointerSensor, DndContext, closestCenter, DragOv
|
|
|
4
4
|
import { restrictToVerticalAxis } from '@dnd-kit/modifiers';
|
|
5
5
|
import { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable';
|
|
6
6
|
import { CSS } from '@dnd-kit/utilities';
|
|
7
|
-
import { useTracking } from '@strapi/admin/strapi-admin';
|
|
7
|
+
import { useTracking, tours } from '@strapi/admin/strapi-admin';
|
|
8
8
|
import { Box, EmptyStateLayout, Button } from '@strapi/design-system';
|
|
9
9
|
import { Plus } from '@strapi/icons';
|
|
10
10
|
import { EmptyDocuments } from '@strapi/icons/symbols';
|
|
@@ -98,14 +98,16 @@ const List = ({ addComponentToDZ, firstLoopComponentUid, isFromDynamicZone = fal
|
|
|
98
98
|
};
|
|
99
99
|
if (type?.attributes.length === 0 && isMain) {
|
|
100
100
|
return /*#__PURE__*/ jsx(EmptyStateLayout, {
|
|
101
|
-
action: /*#__PURE__*/ jsx(
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
101
|
+
action: /*#__PURE__*/ jsx(tours.contentTypeBuilder.AddFields, {
|
|
102
|
+
children: /*#__PURE__*/ jsx(Button, {
|
|
103
|
+
onClick: onClickAddField,
|
|
104
|
+
size: "L",
|
|
105
|
+
startIcon: /*#__PURE__*/ jsx(Plus, {}),
|
|
106
|
+
variant: "secondary",
|
|
107
|
+
children: formatMessage({
|
|
108
|
+
id: getTrad('table.button.no-fields'),
|
|
109
|
+
defaultMessage: 'Add new field'
|
|
110
|
+
})
|
|
109
111
|
})
|
|
110
112
|
}),
|
|
111
113
|
content: formatMessage(type.modelType === 'contentType' ? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.mjs","sources":["../../../admin/src/components/List.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport {\n DndContext,\n closestCenter,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n} from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, EmptyStateLayout } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { createPortal } from 'react-dom';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeRow, type AttributeRowProps } from './AttributeRow';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { NestedTFooter, TFooter } from './Footers';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\n\nimport type { Component, ContentType } from '../types';\nimport type { UID } from '@strapi/types';\n\nexport const ListGrid = styled(Box)`\n white-space: nowrap;\n list-style: none;\n list-style-type: none;\n`;\n\ntype ListProps = {\n addComponentToDZ?: () => void;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n isMain?: boolean;\n secondLoopComponentUid?: UID.Component | null;\n isSub?: boolean;\n type: ContentType | Component;\n};\n\nconst SortableRow = (props: AttributeRowProps) => {\n const { isInDevelopmentMode } = useDataManager();\n\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n setActivatorNodeRef,\n } = useSortable({\n disabled:\n !isInDevelopmentMode || props.item.status === 'REMOVED' || props.type.status === 'REMOVED',\n id: props.item.id,\n data: { index: props.item.index },\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n };\n\n return (\n <AttributeRow\n ref={setNodeRef}\n handleRef={setActivatorNodeRef}\n isDragging={isDragging}\n attributes={attributes}\n listeners={listeners}\n style={style}\n {...props}\n />\n );\n};\n\nexport const List = ({\n addComponentToDZ,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isSub = false,\n secondLoopComponentUid,\n type,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { isInDevelopmentMode, moveAttribute } = useDataManager();\n const { onOpenModalAddField } = useFormModalNavigation();\n\n const items = type?.attributes.map((item, index) => {\n return {\n id: `${type.uid}_${item.name}`,\n index,\n ...item,\n };\n });\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const isDeleted = type?.status === 'REMOVED';\n\n const sensors = useSensors(useSensor(PointerSensor));\n\n function handlerDragStart({ active }: DragStartEvent) {\n if (!active) {\n return;\n }\n\n setActiveId(active.id);\n }\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (over) {\n if (active.id !== over.id) {\n moveAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n from: active.data.current!.index,\n to: over.data.current!.index,\n });\n }\n }\n }\n\n const activeItem = items.find((item) => item.id === activeId);\n\n const onClickAddField = () => {\n if (isDeleted) {\n return;\n }\n\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: type?.modelType, targetUid: type.uid });\n };\n\n if (type?.attributes.length === 0 && isMain) {\n return (\n <EmptyStateLayout\n action={\n <Button onClick={onClickAddField} size=\"L\" startIcon={<Plus />} variant=\"secondary\">\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n }\n content={formatMessage(\n type.modelType === 'contentType'\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handlerDragStart}\n onDragCancel={() => setActiveId(null)}\n modifiers={[restrictToVerticalAxis]}\n >\n <ListGrid tag=\"ul\">\n {createPortal(\n <DragOverlay zIndex={10}>\n {activeItem && (\n <AttributeRow\n isOverlay\n item={activeItem}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n )}\n </DragOverlay>,\n document.body\n )}\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item) => {\n return (\n <SortableRow\n key={item.id}\n item={item}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n );\n })}\n </SortableContext>\n </ListGrid>\n\n {isMain && isInDevelopmentMode && (\n <TFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isDeleted ? 'neutral' : 'primary'}\n >\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${type.modelType === 'component' ? 'component' : type.kind}`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && (\n <NestedTFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone && !isDeleted ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </DndContext>\n );\n};\n"],"names":["ListGrid","styled","Box","SortableRow","props","isInDevelopmentMode","useDataManager","isDragging","attributes","listeners","setNodeRef","transform","transition","setActivatorNodeRef","useSortable","disabled","item","status","type","id","data","index","style","CSS","Transform","toString","x","y","scaleX","scaleY","_jsx","AttributeRow","ref","handleRef","List","addComponentToDZ","firstLoopComponentUid","isFromDynamicZone","isMain","isSub","secondLoopComponentUid","formatMessage","useIntl","trackUsage","useTracking","moveAttribute","onOpenModalAddField","useFormModalNavigation","items","map","uid","name","activeId","setActiveId","useState","isDeleted","sensors","useSensors","useSensor","PointerSensor","handlerDragStart","active","handleDragEnd","event","over","forTarget","modelType","targetUid","from","current","to","activeItem","find","onClickAddField","length","EmptyStateLayout","action","Button","onClick","size","startIcon","Plus","variant","getTrad","defaultMessage","content","hasRadius","icon","EmptyDocuments","width","_jsxs","DndContext","collisionDetection","closestCenter","onDragEnd","onDragStart","onDragCancel","modifiers","restrictToVerticalAxis","tag","createPortal","DragOverlay","zIndex","isOverlay","document","body","SortableContext","strategy","verticalListSortingStrategy","TFooter","cursor","color","kind","NestedTFooter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"List.mjs","sources":["../../../admin/src/components/List.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport {\n DndContext,\n closestCenter,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n} from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { tours, useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, EmptyStateLayout } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { createPortal } from 'react-dom';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeRow, type AttributeRowProps } from './AttributeRow';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { NestedTFooter, TFooter } from './Footers';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\n\nimport type { Component, ContentType } from '../types';\nimport type { UID } from '@strapi/types';\n\nexport const ListGrid = styled(Box)`\n white-space: nowrap;\n list-style: none;\n list-style-type: none;\n`;\n\ntype ListProps = {\n addComponentToDZ?: () => void;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n isMain?: boolean;\n secondLoopComponentUid?: UID.Component | null;\n isSub?: boolean;\n type: ContentType | Component;\n};\n\nconst SortableRow = (props: AttributeRowProps) => {\n const { isInDevelopmentMode } = useDataManager();\n\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n setActivatorNodeRef,\n } = useSortable({\n disabled:\n !isInDevelopmentMode || props.item.status === 'REMOVED' || props.type.status === 'REMOVED',\n id: props.item.id,\n data: { index: props.item.index },\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n };\n\n return (\n <AttributeRow\n ref={setNodeRef}\n handleRef={setActivatorNodeRef}\n isDragging={isDragging}\n attributes={attributes}\n listeners={listeners}\n style={style}\n {...props}\n />\n );\n};\n\nexport const List = ({\n addComponentToDZ,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isSub = false,\n secondLoopComponentUid,\n type,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { isInDevelopmentMode, moveAttribute } = useDataManager();\n const { onOpenModalAddField } = useFormModalNavigation();\n\n const items = type?.attributes.map((item, index) => {\n return {\n id: `${type.uid}_${item.name}`,\n index,\n ...item,\n };\n });\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const isDeleted = type?.status === 'REMOVED';\n\n const sensors = useSensors(useSensor(PointerSensor));\n\n function handlerDragStart({ active }: DragStartEvent) {\n if (!active) {\n return;\n }\n\n setActiveId(active.id);\n }\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (over) {\n if (active.id !== over.id) {\n moveAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n from: active.data.current!.index,\n to: over.data.current!.index,\n });\n }\n }\n }\n\n const activeItem = items.find((item) => item.id === activeId);\n\n const onClickAddField = () => {\n if (isDeleted) {\n return;\n }\n\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: type?.modelType, targetUid: type.uid });\n };\n\n if (type?.attributes.length === 0 && isMain) {\n return (\n <EmptyStateLayout\n action={\n <tours.contentTypeBuilder.AddFields>\n <Button onClick={onClickAddField} size=\"L\" startIcon={<Plus />} variant=\"secondary\">\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n </tours.contentTypeBuilder.AddFields>\n }\n content={formatMessage(\n type.modelType === 'contentType'\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handlerDragStart}\n onDragCancel={() => setActiveId(null)}\n modifiers={[restrictToVerticalAxis]}\n >\n <ListGrid tag=\"ul\">\n {createPortal(\n <DragOverlay zIndex={10}>\n {activeItem && (\n <AttributeRow\n isOverlay\n item={activeItem}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n )}\n </DragOverlay>,\n document.body\n )}\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item) => {\n return (\n <SortableRow\n key={item.id}\n item={item}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n );\n })}\n </SortableContext>\n </ListGrid>\n\n {isMain && isInDevelopmentMode && (\n <TFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isDeleted ? 'neutral' : 'primary'}\n >\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${type.modelType === 'component' ? 'component' : type.kind}`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && (\n <NestedTFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone && !isDeleted ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </DndContext>\n );\n};\n"],"names":["ListGrid","styled","Box","SortableRow","props","isInDevelopmentMode","useDataManager","isDragging","attributes","listeners","setNodeRef","transform","transition","setActivatorNodeRef","useSortable","disabled","item","status","type","id","data","index","style","CSS","Transform","toString","x","y","scaleX","scaleY","_jsx","AttributeRow","ref","handleRef","List","addComponentToDZ","firstLoopComponentUid","isFromDynamicZone","isMain","isSub","secondLoopComponentUid","formatMessage","useIntl","trackUsage","useTracking","moveAttribute","onOpenModalAddField","useFormModalNavigation","items","map","uid","name","activeId","setActiveId","useState","isDeleted","sensors","useSensors","useSensor","PointerSensor","handlerDragStart","active","handleDragEnd","event","over","forTarget","modelType","targetUid","from","current","to","activeItem","find","onClickAddField","length","EmptyStateLayout","action","tours","contentTypeBuilder","AddFields","Button","onClick","size","startIcon","Plus","variant","getTrad","defaultMessage","content","hasRadius","icon","EmptyDocuments","width","_jsxs","DndContext","collisionDetection","closestCenter","onDragEnd","onDragStart","onDragCancel","modifiers","restrictToVerticalAxis","tag","createPortal","DragOverlay","zIndex","isOverlay","document","body","SortableContext","strategy","verticalListSortingStrategy","TFooter","cursor","color","kind","NestedTFooter"],"mappings":"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"}
|
|
@@ -91,7 +91,7 @@ var GenericInputs = require('./GenericInputs.js');
|
|
|
91
91
|
children: conditions.formatCondition(currentCondition, availableFields, genericInputProps.attributeName || modifiedData.name)
|
|
92
92
|
}),
|
|
93
93
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
|
|
94
|
-
|
|
94
|
+
label: noFieldsMessage,
|
|
95
95
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
96
96
|
marginTop: currentCondition && Object.keys(currentCondition).length > 0 ? 0 : 4,
|
|
97
97
|
fullWidth: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabForm.js","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { formatCondition, getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\ninterface TabFormProps {\n form: Array<Record<string, any>>;\n formErrors: Record<string, any>;\n genericInputProps: Record<string, any>;\n modifiedData: Record<string, any>;\n onChange: (value: any) => void;\n}\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input: any, i: number) => {\n const key = `${sectionIndex}.${i}`;\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError].id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name);\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n genericInputProps.contentTypeSchema?.attributes || [];\n\n if (!genericInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size || 12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {!currentCondition || Object.keys(currentCondition).length === 0 ? (\n <Box>\n {currentCondition && Object.keys(currentCondition).length > 0 && (\n <Typography variant=\"sigma\" textColor=\"neutral800\" marginBottom={2}>\n {formatCondition(\n currentCondition,\n availableFields,\n genericInputProps.attributeName || modifiedData.name\n )}\n </Typography>\n )}\n <Tooltip description={noFieldsMessage}>\n <Button\n marginTop={\n currentCondition && Object.keys(currentCondition).length > 0 ? 0 : 4\n }\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","value","get","name","undefined","pluginOptionError","Object","keys","find","errorId","id","split","filter","type","Item","col","size","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","defaultMessage","marginBottom","formatCondition","attributeName","Tooltip","description","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","conditionFields","onDelete"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TabForm.js","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { formatCondition, getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\ninterface TabFormProps {\n form: Array<Record<string, any>>;\n formErrors: Record<string, any>;\n genericInputProps: Record<string, any>;\n modifiedData: Record<string, any>;\n onChange: (value: any) => void;\n}\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input: any, i: number) => {\n const key = `${sectionIndex}.${i}`;\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError].id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name);\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n genericInputProps.contentTypeSchema?.attributes || [];\n\n if (!genericInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size || 12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {!currentCondition || Object.keys(currentCondition).length === 0 ? (\n <Box>\n {currentCondition && Object.keys(currentCondition).length > 0 && (\n <Typography variant=\"sigma\" textColor=\"neutral800\" marginBottom={2}>\n {formatCondition(\n currentCondition,\n availableFields,\n genericInputProps.attributeName || modifiedData.name\n )}\n </Typography>\n )}\n <Tooltip label={noFieldsMessage}>\n <Button\n marginTop={\n currentCondition && Object.keys(currentCondition).length > 0 ? 0 : 4\n }\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","value","get","name","undefined","pluginOptionError","Object","keys","find","errorId","id","split","filter","type","Item","col","size","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","defaultMessage","marginBottom","formatCondition","attributeName","Tooltip","label","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","conditionFields","onDelete"],"mappings":";;;;;;;;;AAgBA,8CACaA,MAAAA,OAAAA,GAAU,CAAC,EACtBC,IAAI,EACJC,UAAU,EACVC,iBAAiB,EACjBC,YAAY,EACZC,QAAQ,EACK,GAAA;IACb,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEC,cAAA,CAAAC,mBAAA,EAAA;kBACGR,IAAKS,CAAAA,GAAG,CAAC,CAACC,OAASC,EAAAA,YAAAA,GAAAA;;AAElB,YAAA,IAAID,OAAQE,CAAAA,KAAK,CAACC,MAAM,KAAK,CAAG,EAAA;gBAC9B,OAAO,IAAA;AACT;AACA,YAAA,qBACEC,eAACC,CAAAA,gBAAAA,EAAAA;;oBACEL,OAAQM,CAAAA,YAAY,kBACnBT,cAACQ,CAAAA,gBAAAA,EAAAA;wBAAIE,aAAe,EAAA,CAAA;AAClB,wBAAA,QAAA,gBAAAV,cAACW,CAAAA,uBAAAA,EAAAA;4BAAWC,OAAQ,EAAA,OAAA;4BAAQC,GAAI,EAAA,IAAA;AAC7Bf,4BAAAA,QAAAA,EAAAA,aAAAA,CAAcK,QAAQM,YAAY;;;oBAIxCN,OAAQW,CAAAA,SAAS,kBAChBd,cAACW,CAAAA,uBAAAA,EAAAA;wBAAWC,OAAQ,EAAA,IAAA;wBAAKG,SAAU,EAAA,YAAA;AAChCjB,wBAAAA,QAAAA,EAAAA,aAAAA,CAAcK,QAAQW,SAAS;;AAIpC,kCAAAd,cAAA,CAACgB,kBAAKC,IAAI,EAAA;wBAACC,GAAK,EAAA,CAAA;AACbf,wBAAAA,QAAAA,EAAAA,OAAAA,CAAQE,KAAK,CAACH,GAAG,CAAC,CAACiB,KAAYC,EAAAA,CAAAA,GAAAA;AAC9B,4BAAA,MAAMC,MAAM,CAAC,EAAEjB,aAAa,CAAC,EAAEgB,EAAE,CAAC;AAElC;;AAEC,oBACD,MAAME,KAAQC,GAAAA,GAAAA,CAAI3B,YAAcuB,EAAAA,KAAAA,CAAMK,IAAI,EAAEC,SAAAA,CAAAA;;;;;;;;4BAS5C,MAAMC,iBAAAA,GAAoBC,MAAOC,CAAAA,IAAI,CAAClC,UAAAA,CAAAA,CAAYmC,IAAI,CAAC,CAACR,GAAAA,GAAQA,GAAQF,KAAAA,KAAAA,CAAMK,IAAI,CAAA;;4BAGlF,MAAMM,OAAAA,GAAUJ,oBACZhC,UAAU,CAACgC,kBAAkB,CAACK,EAAE,GAChCR,GAAAA,CACE7B,UACA,EAAA;AACKyB,gCAAAA,GAAAA,KAAAA,CAAMK,IAAI,CACVQ,KAAK,CAAC,IACP;;;;;iCAKCC,MAAM,CAAC,CAACZ,GAAAA,GAAgBA,GAAQ,KAAA,mBAAA,CAAA;AACnC,gCAAA;6BACD,EACD,IAAA,CAAA;4BAGN,IAAIF,KAAAA,CAAMe,IAAI,KAAK,WAAa,EAAA;gCAC9B,qBACElC,cAAA,CAACgB,kBAAKmB,IAAI,EAAA;oCACRC,GAAKjB,EAAAA,KAAAA,CAAMkB,IAAI,IAAI,CAAA;oCAEnBC,SAAU,EAAA,QAAA;oCACVC,UAAW,EAAA,SAAA;AAEX,oCAAA,QAAA,gBAAAvC,cAACwC,CAAAA,KAAAA,EAAAA,EAAAA;AAJIrB,iCAAAA,EAAAA,KAAAA,CAAMK,IAAI,IAAIH,GAAAA,CAAAA;AAOzB;;4BAGA,IAAIF,KAAAA,CAAMe,IAAI,KAAK,gBAAkB,EAAA;AACnC,gCAAA,MAAMO,gBAAmBlB,GAAAA,GAAAA,CAAI3B,YAAcuB,EAAAA,KAAAA,CAAMK,IAAI,CAAA;;AAGrD,gCAAA,MAAMkB,qBACJ/C,GAAAA,iBAAAA,CAAkBgD,iBAAiB,EAAEC,cAAc,EAAE;gCAEvD,IAAI,CAACjD,iBAAkBgD,CAAAA,iBAAiB,EAAE;AACxCE,oCAAAA,OAAAA,CAAQC,IAAI,CAAC,yDAAA,CAAA;oCACb,OAAO,IAAA;AACT;;AAGA,gCAAA,MAAMC,eAAkBC,GAAAA,sCAAAA,CACtBN,qBACA9C,EAAAA,YAAAA,CAAa4B,IAAI,CAAA;AAGnB,gCAAA,MAAMyB,kBAAkBnD,aAAc,CAAA;oCACpCiC,EAAI,EAAA,oCAAA;oCACJmB,cACE,EAAA;AACJ,iCAAA,CAAA;gCAEA,qBACElD,cAAA,CAACgB,kBAAKmB,IAAI,EAAA;oCACRC,GAAKjB,EAAAA,KAAAA,CAAMkB,IAAI,IAAI,EAAA;oCAEnBC,SAAU,EAAA,QAAA;oCACVC,UAAW,EAAA,SAAA;8CAEV,CAACE,gBAAAA,IAAoBd,OAAOC,IAAI,CAACa,kBAAkBnC,MAAM,KAAK,kBAC7DC,eAACC,CAAAA,gBAAAA,EAAAA;;AACEiC,4CAAAA,gBAAAA,IAAoBd,OAAOC,IAAI,CAACa,kBAAkBnC,MAAM,GAAG,mBAC1DN,cAACW,CAAAA,uBAAAA,EAAAA;gDAAWC,OAAQ,EAAA,OAAA;gDAAQG,SAAU,EAAA,YAAA;gDAAaoC,YAAc,EAAA,CAAA;AAC9DC,gDAAAA,QAAAA,EAAAA,0BAAAA,CACCX,kBACAM,eACApD,EAAAA,iBAAAA,CAAkB0D,aAAa,IAAIzD,aAAa4B,IAAI;;0DAI1DxB,cAACsD,CAAAA,oBAAAA,EAAAA;gDAAQC,KAAON,EAAAA,eAAAA;AACd,gDAAA,QAAA,gBAAAjD,cAACwD,CAAAA,mBAAAA,EAAAA;oDACCC,SACEhB,EAAAA,gBAAAA,IAAoBd,OAAOC,IAAI,CAACa,kBAAkBnC,MAAM,GAAG,IAAI,CAAI,GAAA,CAAA;oDAErEoD,SAAW,EAAA,IAAA;oDACX9C,OAAQ,EAAA,WAAA;oDACR+C,OAAS,EAAA,IAAA;wDACP9D,QAAS,CAAA;4DACP+D,MAAQ,EAAA;AACNpC,gEAAAA,IAAAA,EAAML,MAAMK,IAAI;gEAChBF,KAAO,EAAA;oEAAEuC,OAAS,EAAA;wEAAE,IAAM,EAAA;AAAC,4EAAA;gFAAEC,GAAK,EAAA;AAAG,6EAAA;AAAG,4EAAA;AAAG;AAAC;AAAE;AAChD;AACF,yDAAA,CAAA;AACF,qDAAA;AACAC,oDAAAA,SAAAA,gBAAW/D,cAACgE,CAAAA,MAAAA,EAAAA;wDAAKC,aAAW,EAAA,IAAA;AAAC,wDAAA,QAAA,EAAA;;oDAC7BC,QAAUnB,EAAAA,eAAAA,CAAgBzC,MAAM,KAAK,CAAA;8DAEpCR,aAAc,CAAA;wDACbiC,EAAI,EAAA,gCAAA;wDACJmB,cAAgB,EAAA;AAClB,qDAAA;;;;uDAKNlD,cAACmE,CAAAA,0BAAAA,EAAAA;AACE,wCAAA,GAAGhD,KAAK;AACR,wCAAA,GAAGxB,iBAAiB;wCACrByE,KAAOtC,EAAAA,OAAAA;wCACPjC,QAAUA,EAAAA,QAAAA;wCACVyB,KAAOA,EAAAA,KAAAA;AACP+C,wCAAAA,SAAAA,EAAWjD,CAAM,KAAA,CAAA;AACjBiC,wCAAAA,aAAAA,EAAezD,aAAa4B,IAAI;wCAChC8C,eAAiBvB,EAAAA,eAAAA;wCACjBwB,QAAU,EAAA,IAAA;4CACR1E,QAAS,CAAA;gDACP+D,MAAQ,EAAA;AACNpC,oDAAAA,IAAAA,EAAML,MAAMK;AACd;AACF,6CAAA,CAAA;AACF;;AAxDCL,iCAAAA,EAAAA,KAAAA,CAAMK,IAAI,IAAIH,GAAAA,CAAAA;AA6DzB;;4BAGA,qBACErB,cAAA,CAACgB,kBAAKmB,IAAI,EAAA;gCACRC,GAAKjB,EAAAA,KAAAA,CAAMkB,IAAI,IAAI,CAAA;gCAEnBC,SAAU,EAAA,QAAA;gCACVC,UAAW,EAAA,SAAA;AAEX,gCAAA,QAAA,gBAAAvC,cAACmE,CAAAA,0BAAAA,EAAAA;AACE,oCAAA,GAAGhD,KAAK;AACR,oCAAA,GAAGxB,iBAAiB;oCACrByE,KAAOtC,EAAAA,OAAAA;oCACPjC,QAAUA,EAAAA,QAAAA;oCACVyB,KAAOA,EAAAA,KAAAA;AACP+C,oCAAAA,SAAAA,EAAWjD,CAAM,KAAA;;AAVdD,6BAAAA,EAAAA,KAAAA,CAAMK,IAAI,IAAIH,GAAAA,CAAAA;AAczB,yBAAA;;;AA7KMjB,aAAAA,EAAAA,YAAAA,CAAAA;AAiLd,SAAA;;AAGN;;;;"}
|
|
@@ -89,7 +89,7 @@ import { GenericInput as MemoizedGenericInput } from './GenericInputs.mjs';
|
|
|
89
89
|
children: formatCondition(currentCondition, availableFields, genericInputProps.attributeName || modifiedData.name)
|
|
90
90
|
}),
|
|
91
91
|
/*#__PURE__*/ jsx(Tooltip, {
|
|
92
|
-
|
|
92
|
+
label: noFieldsMessage,
|
|
93
93
|
children: /*#__PURE__*/ jsx(Button, {
|
|
94
94
|
marginTop: currentCondition && Object.keys(currentCondition).length > 0 ? 0 : 4,
|
|
95
95
|
fullWidth: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabForm.mjs","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { formatCondition, getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\ninterface TabFormProps {\n form: Array<Record<string, any>>;\n formErrors: Record<string, any>;\n genericInputProps: Record<string, any>;\n modifiedData: Record<string, any>;\n onChange: (value: any) => void;\n}\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input: any, i: number) => {\n const key = `${sectionIndex}.${i}`;\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError].id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name);\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n genericInputProps.contentTypeSchema?.attributes || [];\n\n if (!genericInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size || 12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {!currentCondition || Object.keys(currentCondition).length === 0 ? (\n <Box>\n {currentCondition && Object.keys(currentCondition).length > 0 && (\n <Typography variant=\"sigma\" textColor=\"neutral800\" marginBottom={2}>\n {formatCondition(\n currentCondition,\n availableFields,\n genericInputProps.attributeName || modifiedData.name\n )}\n </Typography>\n )}\n <Tooltip description={noFieldsMessage}>\n <Button\n marginTop={\n currentCondition && Object.keys(currentCondition).length > 0 ? 0 : 4\n }\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","value","get","name","undefined","pluginOptionError","Object","keys","find","errorId","id","split","filter","type","Item","col","size","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","defaultMessage","marginBottom","formatCondition","attributeName","Tooltip","description","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","conditionFields","onDelete"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TabForm.mjs","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { formatCondition, getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\ninterface TabFormProps {\n form: Array<Record<string, any>>;\n formErrors: Record<string, any>;\n genericInputProps: Record<string, any>;\n modifiedData: Record<string, any>;\n onChange: (value: any) => void;\n}\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input: any, i: number) => {\n const key = `${sectionIndex}.${i}`;\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError].id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name);\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n genericInputProps.contentTypeSchema?.attributes || [];\n\n if (!genericInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size || 12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {!currentCondition || Object.keys(currentCondition).length === 0 ? (\n <Box>\n {currentCondition && Object.keys(currentCondition).length > 0 && (\n <Typography variant=\"sigma\" textColor=\"neutral800\" marginBottom={2}>\n {formatCondition(\n currentCondition,\n availableFields,\n genericInputProps.attributeName || modifiedData.name\n )}\n </Typography>\n )}\n <Tooltip label={noFieldsMessage}>\n <Button\n marginTop={\n currentCondition && Object.keys(currentCondition).length > 0 ? 0 : 4\n }\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","value","get","name","undefined","pluginOptionError","Object","keys","find","errorId","id","split","filter","type","Item","col","size","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","defaultMessage","marginBottom","formatCondition","attributeName","Tooltip","label","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","conditionFields","onDelete"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListView.js","sources":["../../../../admin/src/pages/ListView/ListView.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\nimport { useTracking, Layouts, tours } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Typography } from '@strapi/design-system';\nimport { Information, Pencil, Plus } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../../components/DataManager/useDataManager';\nimport { useFormModalNavigation } from '../../components/FormModalNavigation/useFormModalNavigation';\nimport { List } from '../../components/List';\nimport { getTrad } from '../../utils/getTrad';\n\nimport { LinkToCMSettingsView } from './LinkToCMSettingsView';\n\nimport type { Internal } from '@strapi/types';\n\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst ListView = () => {\n const { isInDevelopmentMode, contentTypes, components, isLoading } = useDataManager();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const { contentTypeUid, componentUid } = useParams<{\n contentTypeUid: Internal.UID.ContentType;\n componentUid: Internal.UID.Component;\n }>();\n\n const { onOpenModalAddComponentsToDZ, onOpenModalAddField, onOpenModalEditSchema } =\n useFormModalNavigation();\n\n const type = contentTypeUid\n ? contentTypes[contentTypeUid]\n : componentUid\n ? components[componentUid]\n : null;\n\n if (isLoading) {\n return null;\n }\n\n if (!type) {\n const allowedEndpoints = Object.values(contentTypes)\n .filter((ct) => ct.visible === true && !ct.plugin)\n .map((ct) => ct.uid)\n .sort();\n\n if (allowedEndpoints.length > 0) {\n return <Navigate to={`/plugins/content-type-builder/content-types/${allowedEndpoints[0]}`} />;\n }\n\n return <Navigate to=\"/plugins/content-type-builder/content-types/create-content-type\" />;\n }\n\n const isFromPlugin = 'plugin' in type && type?.plugin !== undefined;\n\n const forTarget = contentTypeUid ? 'contentType' : 'component';\n\n const label = type?.info?.displayName ?? '';\n\n const canEdit = isInDevelopmentMode && !isFromPlugin;\n\n const handleClickAddComponentToDZ = (dynamicZoneTarget?: string) => {\n onOpenModalAddComponentsToDZ({ dynamicZoneTarget, targetUid: type.uid });\n };\n\n const onEdit = () => {\n if ('kind' in type) {\n if (type?.kind === 'collectionType') {\n trackUsage('willEditNameOfContentType');\n }\n\n if (type?.kind === 'singleType') {\n trackUsage('willEditNameOfSingleType');\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n kind: type?.kind,\n });\n\n return;\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n });\n };\n\n const addNewFieldLabel = formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n });\n\n const addAnotherFieldLabel = formatMessage({\n id: getTrad('button.attributes.add.another'),\n defaultMessage: 'Add another field',\n });\n\n const isDeleted = type.status === 'REMOVED';\n\n const primaryAction = isInDevelopmentMode && (\n <Flex gap={2}>\n <LinkToCMSettingsView\n key=\"link-to-cm-settings-view\"\n type={type}\n disabled={type.status === 'NEW' || isDeleted}\n />\n <Button\n startIcon={<Pencil />}\n variant=\"tertiary\"\n onClick={onEdit}\n disabled={!canEdit || isDeleted}\n >\n {formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })}\n </Button>\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n minWidth=\"max-content\"\n onClick={() => {\n onOpenModalAddField({ forTarget, targetUid: type.uid });\n }}\n disabled={isDeleted}\n >\n {type.attributes.length === 0 ? addNewFieldLabel : addAnotherFieldLabel}\n </Button>\n </Flex>\n );\n\n return (\n <>\n <tours.contentTypeBuilder.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentTypeBuilder.Introduction>\n {isDeleted && (\n <Flex background=\"danger100\" justifyContent={'center'} padding={4}>\n <Flex gap={2}>\n <Information fill=\"danger600\" height=\"2rem\" width=\"2rem\" />\n <Typography>\n {formatMessage(\n {\n id: getTrad('table.warning.deleted'),\n defaultMessage: `This {kind} has been deleted`,\n },\n {\n kind: type.modelType === 'contentType' ? 'Content Type' : 'Component',\n }\n )}\n </Typography>\n </Flex>\n </Flex>\n )}\n <LayoutsHeaderCustom id=\"title\" primaryAction={primaryAction} title={upperFirst(label)} />\n <Layouts.Content>\n <Box\n background=\"neutral0\"\n shadow=\"filterShadow\"\n hasRadius\n overflow=\"auto\"\n borderColor=\"neutral150\"\n >\n <List type={type} addComponentToDZ={handleClickAddComponentToDZ} isMain />\n </Box>\n </Layouts.Content>\n </>\n );\n};\n\nexport default ListView;\n"],"names":["LayoutsHeaderCustom","styled","Layouts","Header","ListView","isInDevelopmentMode","contentTypes","components","isLoading","useDataManager","formatMessage","useIntl","trackUsage","useTracking","contentTypeUid","componentUid","useParams","onOpenModalAddComponentsToDZ","onOpenModalAddField","onOpenModalEditSchema","useFormModalNavigation","type","allowedEndpoints","Object","values","filter","ct","visible","plugin","map","uid","sort","length","_jsx","Navigate","to","isFromPlugin","undefined","forTarget","label","info","displayName","canEdit","handleClickAddComponentToDZ","dynamicZoneTarget","targetUid","onEdit","kind","modalType","addNewFieldLabel","id","getTrad","defaultMessage","addAnotherFieldLabel","isDeleted","status","primaryAction","_jsxs","Flex","gap","LinkToCMSettingsView","disabled","Button","startIcon","Pencil","variant","onClick","Plus","minWidth","attributes","_Fragment","tours","contentTypeBuilder","Introduction","Box","background","justifyContent","padding","Information","fill","height","width","Typography","modelType","title","upperFirst","Content","shadow","hasRadius","overflow","borderColor","List","addComponentToDZ","isMain"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListView.js","sources":["../../../../admin/src/pages/ListView/ListView.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\nimport { useTracking, Layouts, tours } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Typography } from '@strapi/design-system';\nimport { Information, Pencil, Plus } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../../components/DataManager/useDataManager';\nimport { useFormModalNavigation } from '../../components/FormModalNavigation/useFormModalNavigation';\nimport { List } from '../../components/List';\nimport { getTrad } from '../../utils/getTrad';\n\nimport { LinkToCMSettingsView } from './LinkToCMSettingsView';\n\nimport type { Internal } from '@strapi/types';\n\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst ListView = () => {\n const { isInDevelopmentMode, contentTypes, components, isLoading } = useDataManager();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const { contentTypeUid, componentUid } = useParams<{\n contentTypeUid: Internal.UID.ContentType;\n componentUid: Internal.UID.Component;\n }>();\n\n const { onOpenModalAddComponentsToDZ, onOpenModalAddField, onOpenModalEditSchema } =\n useFormModalNavigation();\n\n const type = contentTypeUid\n ? contentTypes[contentTypeUid]\n : componentUid\n ? components[componentUid]\n : null;\n\n if (isLoading) {\n return null;\n }\n\n if (!type) {\n const allowedEndpoints = Object.values(contentTypes)\n .filter((ct) => ct.visible === true && !ct.plugin)\n .map((ct) => ct.uid)\n .sort();\n\n if (allowedEndpoints.length > 0) {\n return <Navigate to={`/plugins/content-type-builder/content-types/${allowedEndpoints[0]}`} />;\n }\n\n return <Navigate to=\"/plugins/content-type-builder/content-types/create-content-type\" />;\n }\n\n const isFromPlugin = 'plugin' in type && type?.plugin !== undefined;\n\n const forTarget = contentTypeUid ? 'contentType' : 'component';\n\n const label = type?.info?.displayName ?? '';\n\n const canEdit = isInDevelopmentMode && !isFromPlugin;\n\n const handleClickAddComponentToDZ = (dynamicZoneTarget?: string) => {\n onOpenModalAddComponentsToDZ({ dynamicZoneTarget, targetUid: type.uid });\n };\n\n const onEdit = () => {\n if ('kind' in type) {\n if (type?.kind === 'collectionType') {\n trackUsage('willEditNameOfContentType');\n }\n\n if (type?.kind === 'singleType') {\n trackUsage('willEditNameOfSingleType');\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n kind: type?.kind,\n });\n\n return;\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n });\n };\n\n const addNewFieldLabel = formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n });\n\n const addAnotherFieldLabel = formatMessage({\n id: getTrad('button.attributes.add.another'),\n defaultMessage: 'Add another field',\n });\n\n const isDeleted = type.status === 'REMOVED';\n\n const primaryAction = isInDevelopmentMode && (\n <Flex gap={2}>\n <LinkToCMSettingsView\n key=\"link-to-cm-settings-view\"\n type={type}\n disabled={type.status === 'NEW' || isDeleted}\n />\n <Button\n startIcon={<Pencil />}\n variant=\"tertiary\"\n onClick={onEdit}\n disabled={!canEdit || isDeleted}\n >\n {formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })}\n </Button>\n\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n minWidth=\"max-content\"\n onClick={() => {\n onOpenModalAddField({ forTarget, targetUid: type.uid });\n }}\n disabled={isDeleted}\n >\n {type.attributes.length === 0 ? addNewFieldLabel : addAnotherFieldLabel}\n </Button>\n </Flex>\n );\n\n return (\n <>\n <tours.contentTypeBuilder.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentTypeBuilder.Introduction>\n {isDeleted && (\n <Flex background=\"danger100\" justifyContent={'center'} padding={4}>\n <Flex gap={2}>\n <Information fill=\"danger600\" height=\"2rem\" width=\"2rem\" />\n <Typography>\n {formatMessage(\n {\n id: getTrad('table.warning.deleted'),\n defaultMessage: `This {kind} has been deleted`,\n },\n {\n kind: type.modelType === 'contentType' ? 'Content Type' : 'Component',\n }\n )}\n </Typography>\n </Flex>\n </Flex>\n )}\n <LayoutsHeaderCustom id=\"title\" primaryAction={primaryAction} title={upperFirst(label)} />\n <Layouts.Content>\n <Box\n background=\"neutral0\"\n shadow=\"filterShadow\"\n hasRadius\n overflow=\"auto\"\n borderColor=\"neutral150\"\n >\n <List type={type} addComponentToDZ={handleClickAddComponentToDZ} isMain />\n </Box>\n </Layouts.Content>\n </>\n );\n};\n\nexport default ListView;\n"],"names":["LayoutsHeaderCustom","styled","Layouts","Header","ListView","isInDevelopmentMode","contentTypes","components","isLoading","useDataManager","formatMessage","useIntl","trackUsage","useTracking","contentTypeUid","componentUid","useParams","onOpenModalAddComponentsToDZ","onOpenModalAddField","onOpenModalEditSchema","useFormModalNavigation","type","allowedEndpoints","Object","values","filter","ct","visible","plugin","map","uid","sort","length","_jsx","Navigate","to","isFromPlugin","undefined","forTarget","label","info","displayName","canEdit","handleClickAddComponentToDZ","dynamicZoneTarget","targetUid","onEdit","kind","modalType","addNewFieldLabel","id","getTrad","defaultMessage","addAnotherFieldLabel","isDeleted","status","primaryAction","_jsxs","Flex","gap","LinkToCMSettingsView","disabled","Button","startIcon","Pencil","variant","onClick","Plus","minWidth","attributes","_Fragment","tours","contentTypeBuilder","Introduction","Box","background","justifyContent","padding","Information","fill","height","width","Typography","modelType","title","upperFirst","Content","shadow","hasRadius","overflow","borderColor","List","addComponentToDZ","isMain"],"mappings":"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"}
|