@strapi/content-type-builder 5.51.1 → 5.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AIChat/Chat.js +1 -1
- package/dist/admin/components/AIChat/Chat.js.map +1 -1
- package/dist/admin/components/AIChat/Chat.mjs +1 -1
- package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
- package/dist/admin/components/AIChat/FeedbackModal.js +1 -1
- package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -1
- package/dist/admin/components/AIChat/FeedbackModal.mjs +1 -1
- package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.js +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Base64Image.js +1 -1
- package/dist/admin/components/AIChat/components/Base64Image.js.map +1 -1
- package/dist/admin/components/AIChat/components/Base64Image.mjs +1 -1
- package/dist/admin/components/AIChat/components/Base64Image.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.js +2 -2
- package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.mjs +2 -2
- package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAIFetch.js +1 -1
- package/dist/admin/components/AIChat/hooks/useAIFetch.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAIFetch.mjs +1 -1
- package/dist/admin/components/AIChat/hooks/useAIFetch.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +2 -2
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +2 -2
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
- package/dist/admin/components/CTBSession/useCTBTracking.js +1 -1
- package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -1
- package/dist/admin/components/CTBSession/useCTBTracking.mjs +1 -1
- package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -1
- package/dist/admin/components/DataManager/reducer.js +4 -0
- package/dist/admin/components/DataManager/reducer.js.map +1 -1
- package/dist/admin/components/DataManager/reducer.mjs +4 -0
- package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.js +1 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.mjs +1 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.js +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/advancedForm.js +1 -0
- package/dist/admin/components/FormModal/attributes/advancedForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/advancedForm.mjs +1 -0
- package/dist/admin/components/FormModal/attributes/advancedForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.js +6 -1
- package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.mjs +6 -1
- package/dist/admin/components/FormModal/attributes/types.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.js +6 -4
- package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.mjs +6 -4
- package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.js +1 -1
- package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
- package/dist/admin/components/FormModal/reducer.js +7 -0
- package/dist/admin/components/FormModal/reducer.js.map +1 -1
- package/dist/admin/components/FormModal/reducer.mjs +7 -0
- package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
- package/dist/admin/components/PluralName.js +1 -1
- package/dist/admin/components/PluralName.js.map +1 -1
- package/dist/admin/components/PluralName.mjs +1 -1
- package/dist/admin/components/PluralName.mjs.map +1 -1
- package/dist/admin/src/components/CTBSession/useCTBTracking.d.ts +1 -1
- package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +8 -0
- package/dist/admin/src/components/FormModal/attributes/types.d.ts +2 -0
- package/dist/admin/src/types.d.ts +1 -0
- package/dist/admin/translations/en.json.js +1 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +1 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/server/controllers/validation/common.js +1 -1
- package/dist/server/controllers/validation/common.js.map +1 -1
- package/dist/server/controllers/validation/common.mjs +1 -1
- package/dist/server/controllers/validation/common.mjs.map +1 -1
- package/dist/server/controllers/validation/relations.js +1 -0
- package/dist/server/controllers/validation/relations.js.map +1 -1
- package/dist/server/controllers/validation/relations.mjs +1 -0
- package/dist/server/controllers/validation/relations.mjs.map +1 -1
- package/dist/server/controllers/validation/schema.js +2 -1
- package/dist/server/controllers/validation/schema.js.map +1 -1
- package/dist/server/controllers/validation/schema.mjs +2 -1
- package/dist/server/controllers/validation/schema.mjs.map +1 -1
- package/dist/server/services/content-types.js +1 -1
- package/dist/server/services/content-types.js.map +1 -1
- package/dist/server/services/content-types.mjs +1 -1
- package/dist/server/services/content-types.mjs.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.js +3 -2
- package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.mjs +3 -2
- package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
- package/dist/server/services/schema.js +1 -5
- package/dist/server/services/schema.js.map +1 -1
- package/dist/server/services/schema.mjs +2 -2
- package/dist/server/services/schema.mjs.map +1 -1
- package/dist/server/src/controllers/validation/relations.d.ts +2 -0
- package/dist/server/src/controllers/validation/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/schema.d.ts +3234 -0
- package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/types.d.ts +1 -0
- package/dist/server/src/services/schema-builder/types.d.ts.map +1 -1
- package/dist/server/src/utils/attributes.d.ts +10 -10
- package/dist/server/src/utils/attributes.d.ts.map +1 -1
- package/dist/server/utils/attributes.js +2 -2
- package/dist/server/utils/attributes.js.map +1 -1
- package/dist/server/utils/attributes.mjs +3 -2
- package/dist/server/utils/attributes.mjs.map +1 -1
- package/package.json +9 -9
- package/dist/server/src/controllers/ai/auth.d.ts +0 -1
- package/dist/server/src/controllers/ai/auth.d.ts.map +0 -1
- package/dist/server/src/controllers/ai/index.d.ts +0 -1
- package/dist/server/src/controllers/ai/index.d.ts.map +0 -1
|
@@ -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 { Component, ContentType } from '../../../types';\nimport type { FormAPI } from '../../../utils/formAPI';\nimport type { FormModalData } from '../reducer';\nimport type { Internal } from '@strapi/types';\n\ntype AttributeType = keyof typeof attributeTypes;\ntype CustomFieldFormOptions = Parameters<typeof addItemsToFormSection>[0];\ntype CustomFieldValidator = Parameters<FormAPI['makeCustomFieldValidator']>[1];\ntype FormSection = FormTypeOptions[number];\ntype FormItem = FormSection['items'][number];\n\ntype CustomField = {\n type: AttributeType;\n options?: {\n base?: CustomFieldFormOptions;\n advanced?: CustomFieldFormOptions;\n validator?: CustomFieldValidator;\n };\n};\n\nexport type SchemaParams = {\n schemaAttributes: Attribute[];\n attributeType: AttributeType;\n customFieldValidator: CustomFieldValidator;\n reservedNames: {\n attributes: Array<string>;\n };\n schemaData: SchemaData;\n ctbFormsAPI: FormAPI;\n};\n\ntype Base<TAttributesFormType extends 'base' | 'advanced'> = {\n data: FormModalData;\n type: keyof (typeof attributesForm)[TAttributesFormType];\n step: string | null;\n attributes: Attribute[];\n extensions: FormAPI;\n forTarget: string;\n};\n\ntype CustomFieldFormParams = {\n customField: CustomField;\n data?: FormModalData;\n step?: string | null;\n extensions: FormAPI;\n} & Record<string, unknown>;\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 }: Pick<CustomFieldFormParams, 'customField'>) {\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 }: CustomFieldFormParams) {\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 customField,\n ...rest,\n }) as FormItem[] | undefined;\n\n if (customField.options?.advanced) {\n addItemsToFormSection(customField.options.advanced, sections);\n }\n\n if (injectedInputs !== undefined) {\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: { attributes?: Attribute[] } | null | undefined,\n attributeType: AttributeType,\n reservedNames: {\n attributes: Array<string>;\n },\n alreadyTakenTargetContentTypeAttributes: Array<Attribute>,\n options: SchemaData,\n extensions: {\n makeValidator: FormAPI['makeValidator'];\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 as never\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 as never, step ?? '')\n .sections as FormTypeOptions;\n const itemsToAdd = extensions.getAdvancedForm(['attribute', type], {\n data,\n type,\n step,\n customField: null,\n ...rest,\n }) as FormItem[];\n\n let injected = false;\n\n const sections = baseForm.reduce<FormTypeOptions>((acc, current) => {\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 as never, step ?? '', attributes as never);\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: string[];\n },\n extensions: FormAPI,\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) => {\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 }: { actionType?: string }) {\n if (actionType === 'create') {\n return contentTypeForm.base.create();\n }\n\n return contentTypeForm.base.edit();\n },\n advanced({ extensions }: { extensions: FormAPI }) {\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: string[];\n },\n isEditing = false,\n components: Record<Internal.UID.Component, Component>,\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)\n .map((component) => component?.collectionName)\n .filter((collectionName): collectionName is string => collectionName !== undefined);\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 }: { data: FormModalData }) {\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","undefined","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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"}
|
|
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 { Component, ContentType } from '../../../types';\nimport type { FormAPI } from '../../../utils/formAPI';\nimport type { FormModalData } from '../reducer';\nimport type { Internal } from '@strapi/types';\n\ntype AttributeType = keyof typeof attributeTypes;\ntype CustomFieldFormOptions = Parameters<typeof addItemsToFormSection>[0];\ntype CustomFieldValidator = Parameters<FormAPI['makeCustomFieldValidator']>[1];\ntype FormSection = FormTypeOptions[number];\ntype FormItem = FormSection['items'][number];\n\ntype CustomField = {\n type: AttributeType;\n options?: {\n base?: CustomFieldFormOptions;\n advanced?: CustomFieldFormOptions;\n validator?: CustomFieldValidator;\n };\n};\n\nexport type SchemaParams = {\n schemaAttributes: Attribute[];\n attributeType: AttributeType;\n customFieldValidator: CustomFieldValidator;\n reservedNames: {\n attributes: Array<string>;\n };\n schemaData: SchemaData;\n ctbFormsAPI: FormAPI;\n};\n\ntype Base<TAttributesFormType extends 'base' | 'advanced'> = {\n data: FormModalData;\n type: keyof (typeof attributesForm)[TAttributesFormType];\n step: string | null;\n attributes: Attribute[];\n extensions: FormAPI;\n forTarget: string;\n};\n\ntype CustomFieldFormParams = {\n customField: CustomField;\n data?: FormModalData;\n step?: string | null;\n extensions: FormAPI;\n} & Record<string, unknown>;\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 }: Pick<CustomFieldFormParams, 'customField'>) {\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 }: CustomFieldFormParams) {\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 customField,\n ...rest,\n }) as FormItem[] | undefined;\n\n if (customField.options?.advanced) {\n addItemsToFormSection(customField.options.advanced, sections);\n }\n\n if (injectedInputs !== undefined) {\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: { attributes?: Attribute[] } | null | undefined,\n attributeType: AttributeType,\n reservedNames: {\n attributes: Array<string>;\n },\n alreadyTakenTargetContentTypeAttributes: Array<Attribute>,\n options: SchemaData,\n extensions: {\n makeValidator: FormAPI['makeValidator'];\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 as never\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 as never, step ?? '')\n .sections as FormTypeOptions;\n const itemsToAdd = extensions.getAdvancedForm(['attribute', type], {\n data,\n type,\n step,\n customField: null,\n ...rest,\n }) as FormItem[];\n\n let injected = false;\n\n const sections = baseForm.reduce<FormTypeOptions>((acc, current) => {\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 as never, step ?? '', attributes as never);\n } catch {\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: string[];\n },\n extensions: FormAPI,\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) => {\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 }: { actionType?: string }) {\n if (actionType === 'create') {\n return contentTypeForm.base.create();\n }\n\n return contentTypeForm.base.edit();\n },\n advanced({ extensions }: { extensions: FormAPI }) {\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: string[];\n },\n isEditing = false,\n components: Record<Internal.UID.Component, Component>,\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)\n .map((component) => component?.collectionName)\n .filter((collectionName): collectionName is string => collectionName !== undefined);\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 }: { data: FormModalData }) {\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","undefined","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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"}
|
|
@@ -221,9 +221,14 @@ const slice = toolkit.createSlice({
|
|
|
221
221
|
const { data } = action.payload;
|
|
222
222
|
state.modifiedData = data;
|
|
223
223
|
state.initialData = data;
|
|
224
|
+
state.formErrors = {};
|
|
224
225
|
},
|
|
225
226
|
setAttributeDataSchema: (state, action)=>{
|
|
226
227
|
const { isEditing } = action.payload;
|
|
228
|
+
// The errors describe the data being replaced below, so they no longer apply. Leaving
|
|
229
|
+
// them behind surfaces the previous attempt's errors on a freshly picked, blank type.
|
|
230
|
+
// See https://github.com/strapi/strapi/issues/20947
|
|
231
|
+
state.formErrors = {};
|
|
227
232
|
if (isEditing === true) {
|
|
228
233
|
const { modifiedDataToSetForEditing } = action.payload;
|
|
229
234
|
state.modifiedData = modifiedDataToSetForEditing;
|
|
@@ -298,6 +303,7 @@ const slice = toolkit.createSlice({
|
|
|
298
303
|
},
|
|
299
304
|
setCustomFieldDataSchema: (state, action)=>{
|
|
300
305
|
const { payload } = action;
|
|
306
|
+
state.formErrors = {};
|
|
301
307
|
if (payload.isEditing === true) {
|
|
302
308
|
const { modifiedDataToSetForEditing } = action.payload;
|
|
303
309
|
state.modifiedData = modifiedDataToSetForEditing;
|
|
@@ -322,6 +328,7 @@ const slice = toolkit.createSlice({
|
|
|
322
328
|
const { attributeToEdit } = action.payload;
|
|
323
329
|
state.modifiedData = attributeToEdit;
|
|
324
330
|
state.initialData = attributeToEdit;
|
|
331
|
+
state.formErrors = {};
|
|
325
332
|
},
|
|
326
333
|
setErrors: (state, action)=>{
|
|
327
334
|
state.formErrors = action.payload.errors;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sources":["../../../../admin/src/components/FormModal/reducer.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { Schema, Struct, UID } from '@strapi/types';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype FormModalError = MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n};\n\nexport type ComponentToCreateData = Record<string, unknown> & {\n type?: 'component';\n displayName?: string;\n icon?: string;\n category?: string;\n};\n\nexport type FormModalData = Record<string, unknown> & {\n allowedTypes?: string[];\n category?: string;\n component?: UID.Component;\n components?: UID.Component[];\n componentToCreate?: ComponentToCreateData;\n conditions?: unknown;\n createComponent?: boolean;\n default?: unknown;\n displayName?: string;\n draftAndPublish?: boolean;\n enum?: string[];\n icon?: string;\n kind?: Struct.ContentTypeKind;\n multiple?: boolean;\n name?: string;\n options?: object;\n pluralName?: string;\n pluginOptions?: object;\n relation?: Schema.Attribute.RelationKind.Any;\n repeatable?: boolean;\n required?: boolean;\n singularName?: string;\n target?: string | null;\n targetAttribute?: string | null;\n type?: string;\n};\n\ntype CustomFieldOption = {\n items?: CustomFieldOption[];\n name?: string;\n defaultValue?: unknown;\n};\n\ntype CustomField = {\n type: string;\n options?: {\n base?: CustomFieldOption[];\n advanced?: CustomFieldOption[];\n };\n};\n\nexport type State = {\n formErrors: Record<string, FormModalError>;\n modifiedData: FormModalData;\n initialData: FormModalData;\n componentToCreate: ComponentToCreateData;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: unknown;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype SetDataToEditPayload = {\n data: FormModalData;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n customField: CustomField;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: FormModalData;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, FormModalError>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = obj.default !== undefined;\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType !== undefined && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType !== null) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType !== null &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name ?? '';\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n\n if (\n componentToCreate?.displayName === undefined ||\n componentToCreate.category === undefined\n ) {\n return initialState;\n }\n\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent === true,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' as const },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n if (isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { payload } = action;\n\n if (payload.isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n"],"names":["initialState","formErrors","modifiedData","initialData","componentToCreate","isCreatingComponentWhileAddingAField","slice","createSlice","name","reducers","onChange","state","action","keys","value","payload","obj","hasDefaultValue","default","undefined","length","includes","previousType","type","set","onChangeRelationTarget","target","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","getRelationType","relation","targetAttribute","relationToSet","nameToSet","pluralize","snakeCase","nameToSlug","shouldPluralizeName","currentTargetAttribute","targetAttributeToSet","shouldPluralizeTargetAttribute","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","displayName","category","component","createComponentUid","createComponent","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","data","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","targetUid","step","components","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","reduce","customFieldDefaultOptionsReducer","forEach","defaultValue","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","actions","reducer"],"mappings":";;;;;;;;;;;;;;;;;;AA4EA,MAAMA,YAAAA,GAAsB;AAC1BC,IAAAA,UAAAA,EAAY,EAAC;AACbC,IAAAA,YAAAA,EAAc,EAAC;AACfC,IAAAA,WAAAA,EAAa,EAAC;AACdC,IAAAA,iBAAAA,EAAmB,EAAC;IACpBC,oCAAAA,EAAsC;AACxC;AA4EA,MAAMC,QAAQC,mBAAAA,CAAY;IACxBC,IAAAA,EAAM,WAAA;AACNR,IAAAA,YAAAA;IACAS,QAAAA,EAAU;AACRC,QAAAA,QAAAA,EAAU,CAACC,KAAAA,EAAOC,MAAAA,GAAAA;AAChB,YAAA,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAE,GAAGF,OAAOG,OAAO;YACtC,MAAMC,GAAAA,GAAML,MAAMT,YAAY;YAC9B,MAAMe,eAAAA,GAAkBD,GAAAA,CAAIE,OAAO,KAAKC,SAAAA;;YAGxC,IAAIF,eAAAA,IAAmBJ,KAAKO,MAAM,KAAK,KAAKP,IAAAA,CAAKQ,QAAQ,CAAC,MAAA,CAAA,EAAS;gBACjE,MAAMC,YAAAA,GAAeN,IAAIO,IAAI;AAE7B,gBAAA,IAAID,iBAAiBH,SAAAA,IAAa;AAAC,oBAAA,MAAA;AAAQ,oBAAA,UAAA;AAAY,oBAAA;iBAAO,CAACE,QAAQ,CAACC,YAAAA,CAAAA,EAAe;;oBAErF,OAAOX,KAAAA,CAAMT,YAAY,CAACgB,OAAO;AACnC,gBAAA;AACF,YAAA;AAEAM,YAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAmBE,gBAAAA,GAAAA;aAAK,EAAEC,KAAAA,CAAAA;AACxC,QAAA,CAAA;AACAW,QAAAA,sBAAAA,EAAwB,CAACd,KAAAA,EAAOC,MAAAA,GAAAA;AAC9B,YAAA,MAAM,EACJc,MAAAA,EAAQ,EACNC,qCAAqC,EACrCC,+BAA+B,EAC/BC,iCAAiC,EACjCf,KAAK,EACN,EACF,GAAGF,OAAOG,OAAO;;AAElB,YAAA,IAAIe,gDAAAA,GAAmD,KAAA;AACvD,YAAA,IAAIC,mBAAAA,GAAgE,IAAA;AAEpEP,YAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAS,EAAEG,KAAAA,CAAAA;YAEvC,MAAMZ,YAAAA,GAAeS,MAAMT,YAAY;;;YAIvC,IAAI8B,KAAAA,CAAMC,OAAO,CAACJ,iCAAAA,CAAAA,EAAoC;AACpD,gBAAA,MAAMK,sBAAsBC,+BAAAA,CAC1BjC,YAAAA,CAAakC,QAAQ,EACrBlC,aAAamC,eAAe,CAAA;AAG9B,gBAAA,IACEH,mBAAAA,IACA,CAACL,iCAAAA,CAAkCR,QAAQ,CAACa,mBAAAA,CAAAA,EAC5C;oBACA,MAAMI,aAAAA,GAAgBT,iCAAiC,CAAC,CAAA,CAAE;oBAC1DC,gDAAAA,GAAmD,IAAA;oBACnDC,mBAAAA,GAAsBO,aAAAA;AAEtB,oBAAA,IAAIA,kBAAkB,QAAA,EAAU;AAC9Bd,wBAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,4BAAA,cAAA;AAAgB,4BAAA;yBAAW,EAAE,UAAA,CAAA;oBAC3C,CAAA,MAAO,IAAI2B,kBAAkB,SAAA,EAAW;AACtCd,wBAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,4BAAA,cAAA;AAAgB,4BAAA;yBAAW,EAAE,WAAA,CAAA;oBAC3C,CAAA,MAAO;AACLa,wBAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,4BAAA,cAAA;AAAgB,4BAAA;yBAAW,EAAE2B,aAAAA,CAAAA;AAC3C,oBAAA;AACF,gBAAA;AACF,YAAA;YAEA,IAAIC,SAAAA;YAEJ,IAAIT,gDAAAA,IAAoDC,wBAAwB,IAAA,EAAM;AACpFQ,gBAAAA,SAAAA,GAAYC,0BAAAA,CACVC,0BAAAA,CAAUC,qBAAAA,CAAWd,+BAAAA,CAAAA,CAAAA,EACrBe,6BAAAA,CAAoBZ,mBAAAA,CAAAA,CAAAA;YAExB,CAAA,MAAO;AACLQ,gBAAAA,SAAAA,GAAYC,2BACVC,0BAAAA,CAAUC,qBAAAA,CAAWd,+BAAAA,CAAAA,CAAAA,EAErBe,6BAAAA,CAAoBzC,aAAakC,QAAQ,CAAA,CAAA;AAE7C,YAAA;AAEAZ,YAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAO,EAAE4B,SAAAA,CAAAA;AAErC,YAAA,MAAMK,sBAAAA,GAAyBjC,KAAAA,CAAMT,YAAY,CAACmC,eAAe;AAEjE,YAAA,IAAIO,2BAA2B,IAAA,EAAM;AACnC,gBAAA;AACF,YAAA;;;YAIA,IACEd,gDAAAA,IACAC,wBAAwB,IAAA,IACxB;AAAC,gBAAA,QAAA;AAAU,gBAAA;aAAU,CAACV,QAAQ,CAACU,mBAAAA,CAAAA,EAC/B;AACAP,gBAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAkB,EAAE,IAAA,CAAA;AAEhD,gBAAA;AACF,YAAA;AAEA,YAAA,MAAMkC,uBAAuBL,0BAAAA,CAC3BC,0BAAAA,CAAUC,sBAAWf,qCAAAA,CAAAA,CAAAA,EACrBmB,wCAAAA,CAA+B5C,aAAakC,QAAQ,CAAA,CAAA;AAGtDZ,YAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAkB,EAAEkC,oBAAAA,CAAAA;AAClD,QAAA,CAAA;AACAE,QAAAA,oBAAAA,EAAsB,CAACpC,KAAAA,EAAOC,MAAAA,GAAAA;YAC5B,MAAM,EACJc,MAAAA,EAAQ,EAAEC,qCAAqC,EAAEb,KAAK,EAAE,EACzD,GAAGF,MAAAA,CAAOG,OAAO;AAElB,YAAA,MAAMiC,WAAAA,GAAcrC,KAAAA,CAAMT,YAAY,CAACM,IAAI,IAAI,EAAA;;AAG/C,YAAA,IAAI,CAAC;AAAC,gBAAA,QAAA;AAAU,gBAAA;aAAU,CAACa,QAAQ,CAACP,KAAAA,CAAAA,EAAQ;AAC1CU,gBAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAW,EAAEG,KAAAA,CAAAA;AACzC,gBAAA,MAAM8B,sBAAAA,GAAyBjC,KAAAA,CAAMT,YAAY,CAACmC,eAAe;AAEjEb,gBAAAA,oBAAAA,CACEb,KAAAA,EACA;AAAC,oBAAA,cAAA;AAAgB,oBAAA;AAAO,iBAAA,EACxB6B,0BAAAA,CAAUC,0BAAAA,CAAUC,qBAAAA,CAAWM,WAAAA,CAAAA,CAAAA,EAAeL,6BAAAA,CAAoB7B,KAAAA,CAAAA,CAAAA,CAAAA;AAGpEU,gBAAAA,oBAAAA,CACEb,KAAAA,EACA;AAAC,oBAAA,cAAA;AAAgB,oBAAA;AAAkB,iBAAA,EACnC6B,0BAAAA,CACEI,sBAAAA,IAA0BH,0BAAAA,CAAUC,qBAAAA,CAAWf,yCAC/CmB,wCAAAA,CAA+BhC,KAAAA,CAAAA,CAAAA,CAAAA;AAInC,gBAAA;AACF,YAAA;AAEA,YAAA,IAAIA,UAAU,QAAA,EAAU;AACtBU,gBAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAW,EAAE,UAAA,CAAA;AACzCa,gBAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAkB,EAAE,IAAA,CAAA;AAChDa,gBAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAO,EAAE6B,0BAAAA,CAAUC,2BAAUO,WAAAA,CAAAA,EAAc,CAAA,CAAA,CAAA;AAEvE,gBAAA;AACF,YAAA;;AAGAxB,YAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAW,EAAE,WAAA,CAAA;AACzCa,YAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAkB,EAAE,IAAA,CAAA;AAChDa,YAAAA,oBAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAO,EAAE6B,0BAAAA,CAAUC,2BAAUO,WAAAA,CAAAA,EAAc,CAAA,CAAA,CAAA;AACzE,QAAA,CAAA;QACAC,UAAAA,EAAY,IAAA;YACV,OAAOjD,YAAAA;AACT,QAAA,CAAA;AACAkD,QAAAA,4CAAAA,EAA8C,CAC5CvC,KAAAA,EACAC,MAAAA,GAAAA;AAEA,YAAA,MAAM,EAAEuC,OAAAA,GAAU,EAAE,EAAE,GAAGvC,OAAOG,OAAO;YAEvC,OAAO;AACL,gBAAA,GAAGf,YAAY;gBACfE,YAAAA,EAAc;oBACZqB,IAAAA,EAAM,WAAA;oBACN6B,UAAAA,EAAY,IAAA;AACZ,oBAAA,GAAGD;AACL;AACF,aAAA;AACF,QAAA,CAAA;AACAE,QAAAA,4BAAAA,EAA8B,CAC5B1C,KAAAA,EACAC,MAAAA,GAAAA;AAEA,YAAA,MAAM,EAAEuC,OAAAA,GAAU,EAAE,EAAE,GAAGvC,OAAOG,OAAO;;AAEvC,YAAA,MAAMX,iBAAAA,GAAoBO,KAAAA,CAAMT,YAAY,CAACE,iBAAiB;AAE9D,YAAA,IACEA,mBAAmBkD,WAAAA,KAAgBnC,SAAAA,IACnCf,iBAAAA,CAAkBmD,QAAQ,KAAKpC,SAAAA,EAC/B;gBACA,OAAOnB,YAAAA;AACT,YAAA;AAEA,YAAA,MAAME,YAAAA,GAAe;AACnBoD,gBAAAA,WAAAA,EAAalD,kBAAkBkD,WAAW;gBAC1C/B,IAAAA,EAAM,WAAA;gBACN6B,UAAAA,EAAY,KAAA;AACZ,gBAAA,GAAGD,OAAO;AACVK,gBAAAA,SAAAA,EAAWC,4BAAAA,CAAmBrD,iBAAAA,CAAkBkD,WAAW,EAAElD,kBAAkBmD,QAAQ;AACzF,aAAA;YAEA,OAAO;AACL,gBAAA,GAAGvD,YAAY;AACfI,gBAAAA,iBAAAA;AACAF,gBAAAA,YAAAA;AACAG,gBAAAA,oCAAAA,EAAsCM,KAAAA,CAAMT,YAAY,CAACwD,eAAe,KAAK;AAC/E,aAAA;AACF,QAAA,CAAA;AACAC,QAAAA,2CAAAA,EAA6C,CAAChD,KAAAA,GAAAA;YAC5C,MAAMiD,SAAAA,GAAYjD,MAAMT,YAAY;AACpC,YAAA,MAAM2D,SAAAA,GAAY;AAChB,gBAAA,GAAGD,SAAS;gBACZF,eAAAA,EAAiB,IAAA;gBACjBtD,iBAAAA,EAAmB;oBAAEmB,IAAAA,EAAM;AAAqB;AAClD,aAAA;YAEA,OAAO;AAAE,gBAAA,GAAGvB,YAAY;gBAAEE,YAAAA,EAAc2D;AAAU,aAAA;AACpD,QAAA,CAAA;AACAC,QAAAA,aAAAA,EAAe,CAACnD,KAAAA,EAAOC,MAAAA,GAAAA;AACrB,YAAA,MAAM,EAAEmD,IAAI,EAAE,GAAGnD,OAAOG,OAAO;AAC/BJ,YAAAA,KAAAA,CAAMT,YAAY,GAAG6D,IAAAA;AACrBpD,YAAAA,KAAAA,CAAMR,WAAW,GAAG4D,IAAAA;AACtB,QAAA,CAAA;AACAC,QAAAA,sBAAAA,EAAwB,CAACrD,KAAAA,EAAOC,MAAAA,GAAAA;AAC9B,YAAA,MAAM,EAAEqD,SAAS,EAAE,GAAGrD,OAAOG,OAAO;AAEpC,YAAA,IAAIkD,cAAc,IAAA,EAAM;AACtB,gBAAA,MAAM,EAAEC,2BAA2B,EAAE,GAAGtD,OAAOG,OAAO;AACtDJ,gBAAAA,KAAAA,CAAMT,YAAY,GAAGgE,2BAAAA;AACrBvD,gBAAAA,KAAAA,CAAMR,WAAW,GAAG+D,2BAAAA;AAEpB,gBAAA;AACF,YAAA;AAEA,YAAA,MAAM,EAAEC,aAAa,EAAEC,oBAAoB,EAAEC,SAAS,EAAEC,IAAI,EAAEnB,UAAU,EAAE,EAAE,GAAGvC,OAAOG,OAAO;YAE7F,IAAI8C,SAAAA;AAEJ,YAAA,IAAIM,kBAAkB,WAAA,EAAa;AACjC,gBAAA,IAAIG,SAAS,GAAA,EAAK;oBAChBT,SAAAA,GAAY;wBACVtC,IAAAA,EAAM,WAAA;wBACNmC,eAAAA,EAAiB,IAAA;wBACjBtD,iBAAAA,EAAmB;4BAAEmB,IAAAA,EAAM;AAAY;AACzC,qBAAA;gBACF,CAAA,MAAO;oBACLsC,SAAAA,GAAY;AACV,wBAAA,GAAGV,OAAO;wBACV5B,IAAAA,EAAM,WAAA;wBACN6B,UAAAA,EAAY;AACd,qBAAA;AACF,gBAAA;YACF,CAAA,MAAO,IAAIe,kBAAkB,aAAA,EAAe;gBAC1CN,SAAAA,GAAY;AACV,oBAAA,GAAGV,OAAO;oBACV5B,IAAAA,EAAM,aAAA;AACNgD,oBAAAA,UAAAA,EAAY;AACd,iBAAA;YACF,CAAA,MAAO,IAAIJ,kBAAkB,MAAA,EAAQ;gBACnCN,SAAAA,GAAY;AAAE,oBAAA,GAAGV,OAAO;oBAAE5B,IAAAA,EAAM;AAAS,iBAAA;AAC3C,YAAA,CAAA,MAAO,IAAI4C,aAAAA,KAAkB,QAAA,IAAYA,aAAAA,KAAkB,MAAA,EAAQ;gBACjEN,SAAAA,GAAYV,OAAAA;YACd,CAAA,MAAO,IAAIgB,kBAAkB,OAAA,EAAS;gBACpCN,SAAAA,GAAY;oBACVW,YAAAA,EAAc;AAAC,wBAAA,QAAA;AAAU,wBAAA,OAAA;AAAS,wBAAA,QAAA;AAAU,wBAAA;AAAS,qBAAA;oBACrDjD,IAAAA,EAAM,OAAA;oBACNkD,QAAAA,EAAU,IAAA;AACV,oBAAA,GAAGtB;AACL,iBAAA;YACF,CAAA,MAAO,IAAIgB,kBAAkB,aAAA,EAAe;gBAC1CN,SAAAA,GAAY;AAAE,oBAAA,GAAGV,OAAO;oBAAE5B,IAAAA,EAAM,aAAA;AAAemD,oBAAAA,IAAAA,EAAM;AAAG,iBAAA;YAC1D,CAAA,MAAO,IAAIP,kBAAkB,UAAA,EAAY;gBACvCN,SAAAA,GAAY;AACVrD,oBAAAA,IAAAA,EAAMiC,0BAAAA,CAAU2B,oBAAAA,CAAAA;oBAChBhC,QAAAA,EAAU,UAAA;oBACVC,eAAAA,EAAiB,IAAA;oBACjBX,MAAAA,EAAQ2C,SAAAA;oBACR9C,IAAAA,EAAM;AACR,iBAAA;YACF,CAAA,MAAO;gBACLsC,SAAAA,GAAY;AAAE,oBAAA,GAAGV,OAAO;oBAAE5B,IAAAA,EAAM4C,aAAAA;oBAAejD,OAAAA,EAAS;AAAK,iBAAA;AAC/D,YAAA;AAEAP,YAAAA,KAAAA,CAAMT,YAAY,GAAG2D,SAAAA;AACvB,QAAA,CAAA;AACAc,QAAAA,wBAAAA,EAA0B,CAAChE,KAAAA,EAAOC,MAAAA,GAAAA;YAChC,MAAM,EAAEG,OAAO,EAAE,GAAGH,MAAAA;YAEpB,IAAIG,OAAAA,CAAQkD,SAAS,KAAK,IAAA,EAAM;AAC9B,gBAAA,MAAM,EAAEC,2BAA2B,EAAE,GAAGtD,OAAOG,OAAO;AACtDJ,gBAAAA,KAAAA,CAAMT,YAAY,GAAGgE,2BAAAA;AACrBvD,gBAAAA,KAAAA,CAAMR,WAAW,GAAG+D,2BAAAA;AAEpB,gBAAA;AACF,YAAA;AAEA,YAAA,MAAM,EAAEU,WAAW,EAAEzB,UAAU,EAAE,EAAE,GAAGpC,OAAAA;AAEtCJ,YAAAA,KAAAA,CAAMT,YAAY,GAAG;AAAE,gBAAA,GAAGiD,OAAO;AAAE5B,gBAAAA,IAAAA,EAAMqD,YAAYrD;AAAK,aAAA;AAE1D,YAAA,MAAMsD,UAAAA,GAAa;mBACbD,WAAAA,EAAazB,OAAAA,EAAS2B,QAAQ,EAAE;mBAChCF,WAAAA,EAAazB,OAAAA,EAAS4B,YAAY;AACvC,aAAA;AAED,YAAA,MAAMC,cAAAA,GAAiBH,UAAAA,CAAWI,MAAM,CAACC,mEAAkC,EAAE,CAAA;YAE7E,IAAIF,cAAAA,CAAe5D,MAAM,EAAE;AACzB4D,gBAAAA,cAAAA,CAAeG,OAAO,CAAC,CAAC,EAAE3E,IAAI,EAAE4E,YAAY,EAAE,GAC5C5D,oBAAAA,CAAIb,KAAAA,CAAMT,YAAY,EAAEM,IAAAA,EAAM4E,YAAAA,CAAAA,CAAAA;AAElC,YAAA;AACF,QAAA,CAAA;AACAC,QAAAA,wBAAAA,EAA0B,CAAC1E,KAAAA,EAAOC,MAAAA,GAAAA;AAChC,YAAA,MAAM,EAAE0E,eAAe,EAAE,GAAG1E,OAAOG,OAAO;AAC1CJ,YAAAA,KAAAA,CAAMT,YAAY,GAAGoF,eAAAA;AACrB3E,YAAAA,KAAAA,CAAMR,WAAW,GAAGmF,eAAAA;AACtB,QAAA,CAAA;AACAC,QAAAA,SAAAA,EAAW,CAAC5E,KAAAA,EAAOC,MAAAA,GAAAA;AACjBD,YAAAA,KAAAA,CAAMV,UAAU,GAAGW,MAAAA,CAAOG,OAAO,CAACyE,MAAM;AAC1C,QAAA;AACF;AACF,CAAA,CAAA;MAGa,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGpF;;;;;;"}
|
|
1
|
+
{"version":3,"file":"reducer.js","sources":["../../../../admin/src/components/FormModal/reducer.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { Schema, Struct, UID } from '@strapi/types';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype FormModalError = MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n};\n\nexport type ComponentToCreateData = Record<string, unknown> & {\n type?: 'component';\n displayName?: string;\n icon?: string;\n category?: string;\n};\n\nexport type FormModalData = Record<string, unknown> & {\n allowedTypes?: string[];\n category?: string;\n component?: UID.Component;\n components?: UID.Component[];\n componentToCreate?: ComponentToCreateData;\n conditions?: unknown;\n createComponent?: boolean;\n default?: unknown;\n displayName?: string;\n draftAndPublish?: boolean;\n enum?: string[];\n icon?: string;\n kind?: Struct.ContentTypeKind;\n multiple?: boolean;\n name?: string;\n options?: object;\n pluralName?: string;\n pluginOptions?: object;\n relation?: Schema.Attribute.RelationKind.Any;\n repeatable?: boolean;\n required?: boolean;\n singularName?: string;\n target?: string | null;\n targetAttribute?: string | null;\n type?: string;\n};\n\ntype CustomFieldOption = {\n items?: CustomFieldOption[];\n name?: string;\n defaultValue?: unknown;\n};\n\ntype CustomField = {\n type: string;\n options?: {\n base?: CustomFieldOption[];\n advanced?: CustomFieldOption[];\n };\n};\n\nexport type State = {\n formErrors: Record<string, FormModalError>;\n modifiedData: FormModalData;\n initialData: FormModalData;\n componentToCreate: ComponentToCreateData;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: unknown;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype SetDataToEditPayload = {\n data: FormModalData;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n customField: CustomField;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: FormModalData;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, FormModalError>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = obj.default !== undefined;\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType !== undefined && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType !== null) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType !== null &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name ?? '';\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n\n if (\n componentToCreate?.displayName === undefined ||\n componentToCreate.category === undefined\n ) {\n return initialState;\n }\n\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent === true,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' as const },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n state.formErrors = {};\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n // The errors describe the data being replaced below, so they no longer apply. Leaving\n // them behind surfaces the previous attempt's errors on a freshly picked, blank type.\n // See https://github.com/strapi/strapi/issues/20947\n state.formErrors = {};\n\n if (isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { payload } = action;\n\n state.formErrors = {};\n\n if (payload.isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n state.formErrors = {};\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n"],"names":["initialState","formErrors","modifiedData","initialData","componentToCreate","isCreatingComponentWhileAddingAField","slice","createSlice","name","reducers","onChange","state","action","keys","value","payload","obj","hasDefaultValue","default","undefined","length","includes","previousType","type","set","onChangeRelationTarget","target","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","getRelationType","relation","targetAttribute","relationToSet","nameToSet","pluralize","snakeCase","nameToSlug","shouldPluralizeName","currentTargetAttribute","targetAttributeToSet","shouldPluralizeTargetAttribute","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","displayName","category","component","createComponentUid","createComponent","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","data","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","targetUid","step","components","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","reduce","customFieldDefaultOptionsReducer","forEach","defaultValue","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","actions","reducer"],"mappings":"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"}
|
|
@@ -213,9 +213,14 @@ const slice = createSlice({
|
|
|
213
213
|
const { data } = action.payload;
|
|
214
214
|
state.modifiedData = data;
|
|
215
215
|
state.initialData = data;
|
|
216
|
+
state.formErrors = {};
|
|
216
217
|
},
|
|
217
218
|
setAttributeDataSchema: (state, action)=>{
|
|
218
219
|
const { isEditing } = action.payload;
|
|
220
|
+
// The errors describe the data being replaced below, so they no longer apply. Leaving
|
|
221
|
+
// them behind surfaces the previous attempt's errors on a freshly picked, blank type.
|
|
222
|
+
// See https://github.com/strapi/strapi/issues/20947
|
|
223
|
+
state.formErrors = {};
|
|
219
224
|
if (isEditing === true) {
|
|
220
225
|
const { modifiedDataToSetForEditing } = action.payload;
|
|
221
226
|
state.modifiedData = modifiedDataToSetForEditing;
|
|
@@ -290,6 +295,7 @@ const slice = createSlice({
|
|
|
290
295
|
},
|
|
291
296
|
setCustomFieldDataSchema: (state, action)=>{
|
|
292
297
|
const { payload } = action;
|
|
298
|
+
state.formErrors = {};
|
|
293
299
|
if (payload.isEditing === true) {
|
|
294
300
|
const { modifiedDataToSetForEditing } = action.payload;
|
|
295
301
|
state.modifiedData = modifiedDataToSetForEditing;
|
|
@@ -314,6 +320,7 @@ const slice = createSlice({
|
|
|
314
320
|
const { attributeToEdit } = action.payload;
|
|
315
321
|
state.modifiedData = attributeToEdit;
|
|
316
322
|
state.initialData = attributeToEdit;
|
|
323
|
+
state.formErrors = {};
|
|
317
324
|
},
|
|
318
325
|
setErrors: (state, action)=>{
|
|
319
326
|
state.formErrors = action.payload.errors;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.mjs","sources":["../../../../admin/src/components/FormModal/reducer.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { Schema, Struct, UID } from '@strapi/types';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype FormModalError = MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n};\n\nexport type ComponentToCreateData = Record<string, unknown> & {\n type?: 'component';\n displayName?: string;\n icon?: string;\n category?: string;\n};\n\nexport type FormModalData = Record<string, unknown> & {\n allowedTypes?: string[];\n category?: string;\n component?: UID.Component;\n components?: UID.Component[];\n componentToCreate?: ComponentToCreateData;\n conditions?: unknown;\n createComponent?: boolean;\n default?: unknown;\n displayName?: string;\n draftAndPublish?: boolean;\n enum?: string[];\n icon?: string;\n kind?: Struct.ContentTypeKind;\n multiple?: boolean;\n name?: string;\n options?: object;\n pluralName?: string;\n pluginOptions?: object;\n relation?: Schema.Attribute.RelationKind.Any;\n repeatable?: boolean;\n required?: boolean;\n singularName?: string;\n target?: string | null;\n targetAttribute?: string | null;\n type?: string;\n};\n\ntype CustomFieldOption = {\n items?: CustomFieldOption[];\n name?: string;\n defaultValue?: unknown;\n};\n\ntype CustomField = {\n type: string;\n options?: {\n base?: CustomFieldOption[];\n advanced?: CustomFieldOption[];\n };\n};\n\nexport type State = {\n formErrors: Record<string, FormModalError>;\n modifiedData: FormModalData;\n initialData: FormModalData;\n componentToCreate: ComponentToCreateData;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: unknown;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype SetDataToEditPayload = {\n data: FormModalData;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n customField: CustomField;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: FormModalData;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, FormModalError>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = obj.default !== undefined;\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType !== undefined && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType !== null) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType !== null &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name ?? '';\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n\n if (\n componentToCreate?.displayName === undefined ||\n componentToCreate.category === undefined\n ) {\n return initialState;\n }\n\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent === true,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' as const },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n if (isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { payload } = action;\n\n if (payload.isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n"],"names":["initialState","formErrors","modifiedData","initialData","componentToCreate","isCreatingComponentWhileAddingAField","slice","createSlice","name","reducers","onChange","state","action","keys","value","payload","obj","hasDefaultValue","default","undefined","length","includes","previousType","type","set","onChangeRelationTarget","target","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","getRelationType","relation","targetAttribute","relationToSet","nameToSet","pluralize","snakeCase","nameToSlug","shouldPluralizeName","currentTargetAttribute","targetAttributeToSet","shouldPluralizeTargetAttribute","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","displayName","category","component","createComponentUid","createComponent","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","data","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","targetUid","step","components","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","reduce","customFieldDefaultOptionsReducer","forEach","defaultValue","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","actions","reducer"],"mappings":";;;;;;;;;;AA4EA,MAAMA,YAAAA,GAAsB;AAC1BC,IAAAA,UAAAA,EAAY,EAAC;AACbC,IAAAA,YAAAA,EAAc,EAAC;AACfC,IAAAA,WAAAA,EAAa,EAAC;AACdC,IAAAA,iBAAAA,EAAmB,EAAC;IACpBC,oCAAAA,EAAsC;AACxC;AA4EA,MAAMC,QAAQC,WAAAA,CAAY;IACxBC,IAAAA,EAAM,WAAA;AACNR,IAAAA,YAAAA;IACAS,QAAAA,EAAU;AACRC,QAAAA,QAAAA,EAAU,CAACC,KAAAA,EAAOC,MAAAA,GAAAA;AAChB,YAAA,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAE,GAAGF,OAAOG,OAAO;YACtC,MAAMC,GAAAA,GAAML,MAAMT,YAAY;YAC9B,MAAMe,eAAAA,GAAkBD,GAAAA,CAAIE,OAAO,KAAKC,SAAAA;;YAGxC,IAAIF,eAAAA,IAAmBJ,KAAKO,MAAM,KAAK,KAAKP,IAAAA,CAAKQ,QAAQ,CAAC,MAAA,CAAA,EAAS;gBACjE,MAAMC,YAAAA,GAAeN,IAAIO,IAAI;AAE7B,gBAAA,IAAID,iBAAiBH,SAAAA,IAAa;AAAC,oBAAA,MAAA;AAAQ,oBAAA,UAAA;AAAY,oBAAA;iBAAO,CAACE,QAAQ,CAACC,YAAAA,CAAAA,EAAe;;oBAErF,OAAOX,KAAAA,CAAMT,YAAY,CAACgB,OAAO;AACnC,gBAAA;AACF,YAAA;AAEAM,YAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAmBE,gBAAAA,GAAAA;aAAK,EAAEC,KAAAA,CAAAA;AACxC,QAAA,CAAA;AACAW,QAAAA,sBAAAA,EAAwB,CAACd,KAAAA,EAAOC,MAAAA,GAAAA;AAC9B,YAAA,MAAM,EACJc,MAAAA,EAAQ,EACNC,qCAAqC,EACrCC,+BAA+B,EAC/BC,iCAAiC,EACjCf,KAAK,EACN,EACF,GAAGF,OAAOG,OAAO;;AAElB,YAAA,IAAIe,gDAAAA,GAAmD,KAAA;AACvD,YAAA,IAAIC,mBAAAA,GAAgE,IAAA;AAEpEP,YAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAS,EAAEG,KAAAA,CAAAA;YAEvC,MAAMZ,YAAAA,GAAeS,MAAMT,YAAY;;;YAIvC,IAAI8B,KAAAA,CAAMC,OAAO,CAACJ,iCAAAA,CAAAA,EAAoC;AACpD,gBAAA,MAAMK,sBAAsBC,eAAAA,CAC1BjC,YAAAA,CAAakC,QAAQ,EACrBlC,aAAamC,eAAe,CAAA;AAG9B,gBAAA,IACEH,mBAAAA,IACA,CAACL,iCAAAA,CAAkCR,QAAQ,CAACa,mBAAAA,CAAAA,EAC5C;oBACA,MAAMI,aAAAA,GAAgBT,iCAAiC,CAAC,CAAA,CAAE;oBAC1DC,gDAAAA,GAAmD,IAAA;oBACnDC,mBAAAA,GAAsBO,aAAAA;AAEtB,oBAAA,IAAIA,kBAAkB,QAAA,EAAU;AAC9Bd,wBAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,4BAAA,cAAA;AAAgB,4BAAA;yBAAW,EAAE,UAAA,CAAA;oBAC3C,CAAA,MAAO,IAAI2B,kBAAkB,SAAA,EAAW;AACtCd,wBAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,4BAAA,cAAA;AAAgB,4BAAA;yBAAW,EAAE,WAAA,CAAA;oBAC3C,CAAA,MAAO;AACLa,wBAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,4BAAA,cAAA;AAAgB,4BAAA;yBAAW,EAAE2B,aAAAA,CAAAA;AAC3C,oBAAA;AACF,gBAAA;AACF,YAAA;YAEA,IAAIC,SAAAA;YAEJ,IAAIT,gDAAAA,IAAoDC,wBAAwB,IAAA,EAAM;AACpFQ,gBAAAA,SAAAA,GAAYC,SAAAA,CACVC,SAAAA,CAAUC,UAAAA,CAAWd,+BAAAA,CAAAA,CAAAA,EACrBe,mBAAAA,CAAoBZ,mBAAAA,CAAAA,CAAAA;YAExB,CAAA,MAAO;AACLQ,gBAAAA,SAAAA,GAAYC,UACVC,SAAAA,CAAUC,UAAAA,CAAWd,+BAAAA,CAAAA,CAAAA,EAErBe,mBAAAA,CAAoBzC,aAAakC,QAAQ,CAAA,CAAA;AAE7C,YAAA;AAEAZ,YAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAO,EAAE4B,SAAAA,CAAAA;AAErC,YAAA,MAAMK,sBAAAA,GAAyBjC,KAAAA,CAAMT,YAAY,CAACmC,eAAe;AAEjE,YAAA,IAAIO,2BAA2B,IAAA,EAAM;AACnC,gBAAA;AACF,YAAA;;;YAIA,IACEd,gDAAAA,IACAC,wBAAwB,IAAA,IACxB;AAAC,gBAAA,QAAA;AAAU,gBAAA;aAAU,CAACV,QAAQ,CAACU,mBAAAA,CAAAA,EAC/B;AACAP,gBAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAkB,EAAE,IAAA,CAAA;AAEhD,gBAAA;AACF,YAAA;AAEA,YAAA,MAAMkC,uBAAuBL,SAAAA,CAC3BC,SAAAA,CAAUC,WAAWf,qCAAAA,CAAAA,CAAAA,EACrBmB,8BAAAA,CAA+B5C,aAAakC,QAAQ,CAAA,CAAA;AAGtDZ,YAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAkB,EAAEkC,oBAAAA,CAAAA;AAClD,QAAA,CAAA;AACAE,QAAAA,oBAAAA,EAAsB,CAACpC,KAAAA,EAAOC,MAAAA,GAAAA;YAC5B,MAAM,EACJc,MAAAA,EAAQ,EAAEC,qCAAqC,EAAEb,KAAK,EAAE,EACzD,GAAGF,MAAAA,CAAOG,OAAO;AAElB,YAAA,MAAMiC,WAAAA,GAAcrC,KAAAA,CAAMT,YAAY,CAACM,IAAI,IAAI,EAAA;;AAG/C,YAAA,IAAI,CAAC;AAAC,gBAAA,QAAA;AAAU,gBAAA;aAAU,CAACa,QAAQ,CAACP,KAAAA,CAAAA,EAAQ;AAC1CU,gBAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAW,EAAEG,KAAAA,CAAAA;AACzC,gBAAA,MAAM8B,sBAAAA,GAAyBjC,KAAAA,CAAMT,YAAY,CAACmC,eAAe;AAEjEb,gBAAAA,GAAAA,CACEb,KAAAA,EACA;AAAC,oBAAA,cAAA;AAAgB,oBAAA;AAAO,iBAAA,EACxB6B,SAAAA,CAAUC,SAAAA,CAAUC,UAAAA,CAAWM,WAAAA,CAAAA,CAAAA,EAAeL,mBAAAA,CAAoB7B,KAAAA,CAAAA,CAAAA,CAAAA;AAGpEU,gBAAAA,GAAAA,CACEb,KAAAA,EACA;AAAC,oBAAA,cAAA;AAAgB,oBAAA;AAAkB,iBAAA,EACnC6B,SAAAA,CACEI,sBAAAA,IAA0BH,SAAAA,CAAUC,UAAAA,CAAWf,yCAC/CmB,8BAAAA,CAA+BhC,KAAAA,CAAAA,CAAAA,CAAAA;AAInC,gBAAA;AACF,YAAA;AAEA,YAAA,IAAIA,UAAU,QAAA,EAAU;AACtBU,gBAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAW,EAAE,UAAA,CAAA;AACzCa,gBAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAkB,EAAE,IAAA,CAAA;AAChDa,gBAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAO,EAAE6B,SAAAA,CAAUC,UAAUO,WAAAA,CAAAA,EAAc,CAAA,CAAA,CAAA;AAEvE,gBAAA;AACF,YAAA;;AAGAxB,YAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAW,EAAE,WAAA,CAAA;AACzCa,YAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAkB,EAAE,IAAA,CAAA;AAChDa,YAAAA,GAAAA,CAAIb,KAAAA,EAAO;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAO,EAAE6B,SAAAA,CAAUC,UAAUO,WAAAA,CAAAA,EAAc,CAAA,CAAA,CAAA;AACzE,QAAA,CAAA;QACAC,UAAAA,EAAY,IAAA;YACV,OAAOjD,YAAAA;AACT,QAAA,CAAA;AACAkD,QAAAA,4CAAAA,EAA8C,CAC5CvC,KAAAA,EACAC,MAAAA,GAAAA;AAEA,YAAA,MAAM,EAAEuC,OAAAA,GAAU,EAAE,EAAE,GAAGvC,OAAOG,OAAO;YAEvC,OAAO;AACL,gBAAA,GAAGf,YAAY;gBACfE,YAAAA,EAAc;oBACZqB,IAAAA,EAAM,WAAA;oBACN6B,UAAAA,EAAY,IAAA;AACZ,oBAAA,GAAGD;AACL;AACF,aAAA;AACF,QAAA,CAAA;AACAE,QAAAA,4BAAAA,EAA8B,CAC5B1C,KAAAA,EACAC,MAAAA,GAAAA;AAEA,YAAA,MAAM,EAAEuC,OAAAA,GAAU,EAAE,EAAE,GAAGvC,OAAOG,OAAO;;AAEvC,YAAA,MAAMX,iBAAAA,GAAoBO,KAAAA,CAAMT,YAAY,CAACE,iBAAiB;AAE9D,YAAA,IACEA,mBAAmBkD,WAAAA,KAAgBnC,SAAAA,IACnCf,iBAAAA,CAAkBmD,QAAQ,KAAKpC,SAAAA,EAC/B;gBACA,OAAOnB,YAAAA;AACT,YAAA;AAEA,YAAA,MAAME,YAAAA,GAAe;AACnBoD,gBAAAA,WAAAA,EAAalD,kBAAkBkD,WAAW;gBAC1C/B,IAAAA,EAAM,WAAA;gBACN6B,UAAAA,EAAY,KAAA;AACZ,gBAAA,GAAGD,OAAO;AACVK,gBAAAA,SAAAA,EAAWC,kBAAAA,CAAmBrD,iBAAAA,CAAkBkD,WAAW,EAAElD,kBAAkBmD,QAAQ;AACzF,aAAA;YAEA,OAAO;AACL,gBAAA,GAAGvD,YAAY;AACfI,gBAAAA,iBAAAA;AACAF,gBAAAA,YAAAA;AACAG,gBAAAA,oCAAAA,EAAsCM,KAAAA,CAAMT,YAAY,CAACwD,eAAe,KAAK;AAC/E,aAAA;AACF,QAAA,CAAA;AACAC,QAAAA,2CAAAA,EAA6C,CAAChD,KAAAA,GAAAA;YAC5C,MAAMiD,SAAAA,GAAYjD,MAAMT,YAAY;AACpC,YAAA,MAAM2D,SAAAA,GAAY;AAChB,gBAAA,GAAGD,SAAS;gBACZF,eAAAA,EAAiB,IAAA;gBACjBtD,iBAAAA,EAAmB;oBAAEmB,IAAAA,EAAM;AAAqB;AAClD,aAAA;YAEA,OAAO;AAAE,gBAAA,GAAGvB,YAAY;gBAAEE,YAAAA,EAAc2D;AAAU,aAAA;AACpD,QAAA,CAAA;AACAC,QAAAA,aAAAA,EAAe,CAACnD,KAAAA,EAAOC,MAAAA,GAAAA;AACrB,YAAA,MAAM,EAAEmD,IAAI,EAAE,GAAGnD,OAAOG,OAAO;AAC/BJ,YAAAA,KAAAA,CAAMT,YAAY,GAAG6D,IAAAA;AACrBpD,YAAAA,KAAAA,CAAMR,WAAW,GAAG4D,IAAAA;AACtB,QAAA,CAAA;AACAC,QAAAA,sBAAAA,EAAwB,CAACrD,KAAAA,EAAOC,MAAAA,GAAAA;AAC9B,YAAA,MAAM,EAAEqD,SAAS,EAAE,GAAGrD,OAAOG,OAAO;AAEpC,YAAA,IAAIkD,cAAc,IAAA,EAAM;AACtB,gBAAA,MAAM,EAAEC,2BAA2B,EAAE,GAAGtD,OAAOG,OAAO;AACtDJ,gBAAAA,KAAAA,CAAMT,YAAY,GAAGgE,2BAAAA;AACrBvD,gBAAAA,KAAAA,CAAMR,WAAW,GAAG+D,2BAAAA;AAEpB,gBAAA;AACF,YAAA;AAEA,YAAA,MAAM,EAAEC,aAAa,EAAEC,oBAAoB,EAAEC,SAAS,EAAEC,IAAI,EAAEnB,UAAU,EAAE,EAAE,GAAGvC,OAAOG,OAAO;YAE7F,IAAI8C,SAAAA;AAEJ,YAAA,IAAIM,kBAAkB,WAAA,EAAa;AACjC,gBAAA,IAAIG,SAAS,GAAA,EAAK;oBAChBT,SAAAA,GAAY;wBACVtC,IAAAA,EAAM,WAAA;wBACNmC,eAAAA,EAAiB,IAAA;wBACjBtD,iBAAAA,EAAmB;4BAAEmB,IAAAA,EAAM;AAAY;AACzC,qBAAA;gBACF,CAAA,MAAO;oBACLsC,SAAAA,GAAY;AACV,wBAAA,GAAGV,OAAO;wBACV5B,IAAAA,EAAM,WAAA;wBACN6B,UAAAA,EAAY;AACd,qBAAA;AACF,gBAAA;YACF,CAAA,MAAO,IAAIe,kBAAkB,aAAA,EAAe;gBAC1CN,SAAAA,GAAY;AACV,oBAAA,GAAGV,OAAO;oBACV5B,IAAAA,EAAM,aAAA;AACNgD,oBAAAA,UAAAA,EAAY;AACd,iBAAA;YACF,CAAA,MAAO,IAAIJ,kBAAkB,MAAA,EAAQ;gBACnCN,SAAAA,GAAY;AAAE,oBAAA,GAAGV,OAAO;oBAAE5B,IAAAA,EAAM;AAAS,iBAAA;AAC3C,YAAA,CAAA,MAAO,IAAI4C,aAAAA,KAAkB,QAAA,IAAYA,aAAAA,KAAkB,MAAA,EAAQ;gBACjEN,SAAAA,GAAYV,OAAAA;YACd,CAAA,MAAO,IAAIgB,kBAAkB,OAAA,EAAS;gBACpCN,SAAAA,GAAY;oBACVW,YAAAA,EAAc;AAAC,wBAAA,QAAA;AAAU,wBAAA,OAAA;AAAS,wBAAA,QAAA;AAAU,wBAAA;AAAS,qBAAA;oBACrDjD,IAAAA,EAAM,OAAA;oBACNkD,QAAAA,EAAU,IAAA;AACV,oBAAA,GAAGtB;AACL,iBAAA;YACF,CAAA,MAAO,IAAIgB,kBAAkB,aAAA,EAAe;gBAC1CN,SAAAA,GAAY;AAAE,oBAAA,GAAGV,OAAO;oBAAE5B,IAAAA,EAAM,aAAA;AAAemD,oBAAAA,IAAAA,EAAM;AAAG,iBAAA;YAC1D,CAAA,MAAO,IAAIP,kBAAkB,UAAA,EAAY;gBACvCN,SAAAA,GAAY;AACVrD,oBAAAA,IAAAA,EAAMiC,SAAAA,CAAU2B,oBAAAA,CAAAA;oBAChBhC,QAAAA,EAAU,UAAA;oBACVC,eAAAA,EAAiB,IAAA;oBACjBX,MAAAA,EAAQ2C,SAAAA;oBACR9C,IAAAA,EAAM;AACR,iBAAA;YACF,CAAA,MAAO;gBACLsC,SAAAA,GAAY;AAAE,oBAAA,GAAGV,OAAO;oBAAE5B,IAAAA,EAAM4C,aAAAA;oBAAejD,OAAAA,EAAS;AAAK,iBAAA;AAC/D,YAAA;AAEAP,YAAAA,KAAAA,CAAMT,YAAY,GAAG2D,SAAAA;AACvB,QAAA,CAAA;AACAc,QAAAA,wBAAAA,EAA0B,CAAChE,KAAAA,EAAOC,MAAAA,GAAAA;YAChC,MAAM,EAAEG,OAAO,EAAE,GAAGH,MAAAA;YAEpB,IAAIG,OAAAA,CAAQkD,SAAS,KAAK,IAAA,EAAM;AAC9B,gBAAA,MAAM,EAAEC,2BAA2B,EAAE,GAAGtD,OAAOG,OAAO;AACtDJ,gBAAAA,KAAAA,CAAMT,YAAY,GAAGgE,2BAAAA;AACrBvD,gBAAAA,KAAAA,CAAMR,WAAW,GAAG+D,2BAAAA;AAEpB,gBAAA;AACF,YAAA;AAEA,YAAA,MAAM,EAAEU,WAAW,EAAEzB,UAAU,EAAE,EAAE,GAAGpC,OAAAA;AAEtCJ,YAAAA,KAAAA,CAAMT,YAAY,GAAG;AAAE,gBAAA,GAAGiD,OAAO;AAAE5B,gBAAAA,IAAAA,EAAMqD,YAAYrD;AAAK,aAAA;AAE1D,YAAA,MAAMsD,UAAAA,GAAa;mBACbD,WAAAA,EAAazB,OAAAA,EAAS2B,QAAQ,EAAE;mBAChCF,WAAAA,EAAazB,OAAAA,EAAS4B,YAAY;AACvC,aAAA;AAED,YAAA,MAAMC,cAAAA,GAAiBH,UAAAA,CAAWI,MAAM,CAACC,kCAAkC,EAAE,CAAA;YAE7E,IAAIF,cAAAA,CAAe5D,MAAM,EAAE;AACzB4D,gBAAAA,cAAAA,CAAeG,OAAO,CAAC,CAAC,EAAE3E,IAAI,EAAE4E,YAAY,EAAE,GAC5C5D,GAAAA,CAAIb,KAAAA,CAAMT,YAAY,EAAEM,IAAAA,EAAM4E,YAAAA,CAAAA,CAAAA;AAElC,YAAA;AACF,QAAA,CAAA;AACAC,QAAAA,wBAAAA,EAA0B,CAAC1E,KAAAA,EAAOC,MAAAA,GAAAA;AAChC,YAAA,MAAM,EAAE0E,eAAe,EAAE,GAAG1E,OAAOG,OAAO;AAC1CJ,YAAAA,KAAAA,CAAMT,YAAY,GAAGoF,eAAAA;AACrB3E,YAAAA,KAAAA,CAAMR,WAAW,GAAGmF,eAAAA;AACtB,QAAA,CAAA;AACAC,QAAAA,SAAAA,EAAW,CAAC5E,KAAAA,EAAOC,MAAAA,GAAAA;AACjBD,YAAAA,KAAAA,CAAMV,UAAU,GAAGW,MAAAA,CAAOG,OAAO,CAACyE,MAAM;AAC1C,QAAA;AACF;AACF,CAAA,CAAA;MAGa,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGpF;;;;"}
|
|
1
|
+
{"version":3,"file":"reducer.mjs","sources":["../../../../admin/src/components/FormModal/reducer.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { Schema, Struct, UID } from '@strapi/types';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype FormModalError = MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n};\n\nexport type ComponentToCreateData = Record<string, unknown> & {\n type?: 'component';\n displayName?: string;\n icon?: string;\n category?: string;\n};\n\nexport type FormModalData = Record<string, unknown> & {\n allowedTypes?: string[];\n category?: string;\n component?: UID.Component;\n components?: UID.Component[];\n componentToCreate?: ComponentToCreateData;\n conditions?: unknown;\n createComponent?: boolean;\n default?: unknown;\n displayName?: string;\n draftAndPublish?: boolean;\n enum?: string[];\n icon?: string;\n kind?: Struct.ContentTypeKind;\n multiple?: boolean;\n name?: string;\n options?: object;\n pluralName?: string;\n pluginOptions?: object;\n relation?: Schema.Attribute.RelationKind.Any;\n repeatable?: boolean;\n required?: boolean;\n singularName?: string;\n target?: string | null;\n targetAttribute?: string | null;\n type?: string;\n};\n\ntype CustomFieldOption = {\n items?: CustomFieldOption[];\n name?: string;\n defaultValue?: unknown;\n};\n\ntype CustomField = {\n type: string;\n options?: {\n base?: CustomFieldOption[];\n advanced?: CustomFieldOption[];\n };\n};\n\nexport type State = {\n formErrors: Record<string, FormModalError>;\n modifiedData: FormModalData;\n initialData: FormModalData;\n componentToCreate: ComponentToCreateData;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: unknown;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype SetDataToEditPayload = {\n data: FormModalData;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n customField: CustomField;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: FormModalData;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, FormModalError>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = obj.default !== undefined;\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType !== undefined && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType !== null) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType !== null &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name ?? '';\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n\n if (\n componentToCreate?.displayName === undefined ||\n componentToCreate.category === undefined\n ) {\n return initialState;\n }\n\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent === true,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' as const },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n state.formErrors = {};\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n // The errors describe the data being replaced below, so they no longer apply. Leaving\n // them behind surfaces the previous attempt's errors on a freshly picked, blank type.\n // See https://github.com/strapi/strapi/issues/20947\n state.formErrors = {};\n\n if (isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { payload } = action;\n\n state.formErrors = {};\n\n if (payload.isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n state.formErrors = {};\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n"],"names":["initialState","formErrors","modifiedData","initialData","componentToCreate","isCreatingComponentWhileAddingAField","slice","createSlice","name","reducers","onChange","state","action","keys","value","payload","obj","hasDefaultValue","default","undefined","length","includes","previousType","type","set","onChangeRelationTarget","target","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","getRelationType","relation","targetAttribute","relationToSet","nameToSet","pluralize","snakeCase","nameToSlug","shouldPluralizeName","currentTargetAttribute","targetAttributeToSet","shouldPluralizeTargetAttribute","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","displayName","category","component","createComponentUid","createComponent","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","data","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","targetUid","step","components","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","reduce","customFieldDefaultOptionsReducer","forEach","defaultValue","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","actions","reducer"],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ const PluralName = ({ description, error, intlLabel, modifiedData, name, onChang
|
|
|
23
23
|
let newValue = baseValue;
|
|
24
24
|
try {
|
|
25
25
|
newValue = pluralize__default.default(baseValue, 2);
|
|
26
|
-
} catch
|
|
26
|
+
} catch {
|
|
27
27
|
// If pluralize fails, use the base value
|
|
28
28
|
}
|
|
29
29
|
onChangeRef.current({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluralName.js","sources":["../../../admin/src/components/PluralName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { FormChangeHandler, IntlLabel } from '../types';\n\ninterface PluralNameProps {\n description?: IntlLabel;\n error?: string;\n intlLabel: IntlLabel;\n modifiedData: { displayName?: string };\n name: string;\n onChange: FormChangeHandler<string>;\n value?: string;\n}\n\nexport const PluralName = ({\n description,\n error,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value,\n}: PluralNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const displayName = modifiedData?.displayName || '';\n const previousDisplayName = useRef(displayName);\n const previousValue = useRef(value);\n\n useEffect(() => {\n if (displayName && displayName !== previousDisplayName.current) {\n const baseValue = nameToSlug(displayName);\n let newValue = baseValue;\n\n try {\n newValue = pluralize(baseValue, 2);\n } catch
|
|
1
|
+
{"version":3,"file":"PluralName.js","sources":["../../../admin/src/components/PluralName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { FormChangeHandler, IntlLabel } from '../types';\n\ninterface PluralNameProps {\n description?: IntlLabel;\n error?: string;\n intlLabel: IntlLabel;\n modifiedData: { displayName?: string };\n name: string;\n onChange: FormChangeHandler<string>;\n value?: string;\n}\n\nexport const PluralName = ({\n description,\n error,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value,\n}: PluralNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const displayName = modifiedData?.displayName || '';\n const previousDisplayName = useRef(displayName);\n const previousValue = useRef(value);\n\n useEffect(() => {\n if (displayName && displayName !== previousDisplayName.current) {\n const baseValue = nameToSlug(displayName);\n let newValue = baseValue;\n\n try {\n newValue = pluralize(baseValue, 2);\n } catch {\n // If pluralize fails, use the base value\n }\n\n onChangeRef.current({ target: { name, value: newValue } });\n previousValue.current = newValue;\n previousDisplayName.current = displayName;\n } else if (!displayName) {\n onChangeRef.current({ target: { name, value: '' } });\n previousValue.current = '';\n previousDisplayName.current = '';\n }\n }, [displayName, name, value]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} type=\"text\" />\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["PluralName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","displayName","previousDisplayName","previousValue","useEffect","current","baseValue","nameToSlug","newValue","pluralize","target","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","type","Error"],"mappings":";;;;;;;;;;;;;MAoBaA,UAAAA,GAAa,CAAC,EACzBC,WAAW,EACXC,KAAK,EACLC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAK,EACW,GAAA;IAChB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,YAAAA,CAAOL,QAAAA,CAAAA;IAC3B,MAAMM,WAAAA,GAAcR,cAAcQ,WAAAA,IAAe,EAAA;AACjD,IAAA,MAAMC,sBAAsBF,YAAAA,CAAOC,WAAAA,CAAAA;AACnC,IAAA,MAAME,gBAAgBH,YAAAA,CAAOJ,KAAAA,CAAAA;IAE7BQ,eAAAA,CAAU,IAAA;AACR,QAAA,IAAIH,WAAAA,IAAeA,WAAAA,KAAgBC,mBAAAA,CAAoBG,OAAO,EAAE;AAC9D,YAAA,MAAMC,YAAYC,qBAAAA,CAAWN,WAAAA,CAAAA;AAC7B,YAAA,IAAIO,QAAAA,GAAWF,SAAAA;YAEf,IAAI;AACFE,gBAAAA,QAAAA,GAAWC,2BAAUH,SAAAA,EAAW,CAAA,CAAA;AAClC,YAAA,CAAA,CAAE,OAAM;;AAER,YAAA;AAEAP,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEK,MAAAA,EAAQ;AAAEhB,oBAAAA,IAAAA;oBAAME,KAAAA,EAAOY;AAAS;AAAE,aAAA,CAAA;AACxDL,YAAAA,aAAAA,CAAcE,OAAO,GAAGG,QAAAA;AACxBN,YAAAA,mBAAAA,CAAoBG,OAAO,GAAGJ,WAAAA;QAChC,CAAA,MAAO,IAAI,CAACA,WAAAA,EAAa;AACvBF,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEK,MAAAA,EAAQ;AAAEhB,oBAAAA,IAAAA;oBAAME,KAAAA,EAAO;AAAG;AAAE,aAAA,CAAA;AAClDO,YAAAA,aAAAA,CAAcE,OAAO,GAAG,EAAA;AACxBH,YAAAA,mBAAAA,CAAoBG,OAAO,GAAG,EAAA;AAChC,QAAA;IACF,CAAA,EAAG;AAACJ,QAAAA,WAAAA;AAAaP,QAAAA,IAAAA;AAAME,QAAAA;AAAM,KAAA,CAAA;IAE7B,MAAMe,YAAAA,GAAepB,QAAQM,aAAAA,CAAc;QAAEe,EAAAA,EAAIrB,KAAAA;QAAOsB,cAAAA,EAAgBtB;KAAM,CAAA,GAAK,EAAA;IACnF,MAAMuB,IAAAA,GAAOxB,cACTO,aAAAA,CACE;AAAEe,QAAAA,EAAAA,EAAItB,YAAYsB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBvB,YAAYuB;KAAe,EACjE;AAAE,QAAA,GAAGvB,YAAYyB;KAAO,CAAA,GAE1B,EAAA;AACJ,IAAA,MAAMC,QAAQnB,aAAAA,CAAcL,SAAAA,CAAAA;IAE5B,qBACEyB,eAAA,CAACC,mBAAMC,IAAI,EAAA;QAAC5B,KAAAA,EAAOoB,YAAAA;QAAcG,IAAAA,EAAMA,IAAAA;QAAMpB,IAAAA,EAAMA,IAAAA;;AACjD,0BAAA0B,cAAA,CAACF,mBAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,cAAA,CAACE,sBAAAA,EAAAA;gBAAU3B,QAAAA,EAAUA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAAA,IAAS,EAAA;gBAAI2B,IAAAA,EAAK;;AACxD,0BAAAH,cAAA,CAACF,mBAAMM,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
|
|
@@ -17,7 +17,7 @@ const PluralName = ({ description, error, intlLabel, modifiedData, name, onChang
|
|
|
17
17
|
let newValue = baseValue;
|
|
18
18
|
try {
|
|
19
19
|
newValue = pluralize(baseValue, 2);
|
|
20
|
-
} catch
|
|
20
|
+
} catch {
|
|
21
21
|
// If pluralize fails, use the base value
|
|
22
22
|
}
|
|
23
23
|
onChangeRef.current({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluralName.mjs","sources":["../../../admin/src/components/PluralName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { FormChangeHandler, IntlLabel } from '../types';\n\ninterface PluralNameProps {\n description?: IntlLabel;\n error?: string;\n intlLabel: IntlLabel;\n modifiedData: { displayName?: string };\n name: string;\n onChange: FormChangeHandler<string>;\n value?: string;\n}\n\nexport const PluralName = ({\n description,\n error,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value,\n}: PluralNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const displayName = modifiedData?.displayName || '';\n const previousDisplayName = useRef(displayName);\n const previousValue = useRef(value);\n\n useEffect(() => {\n if (displayName && displayName !== previousDisplayName.current) {\n const baseValue = nameToSlug(displayName);\n let newValue = baseValue;\n\n try {\n newValue = pluralize(baseValue, 2);\n } catch
|
|
1
|
+
{"version":3,"file":"PluralName.mjs","sources":["../../../admin/src/components/PluralName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { FormChangeHandler, IntlLabel } from '../types';\n\ninterface PluralNameProps {\n description?: IntlLabel;\n error?: string;\n intlLabel: IntlLabel;\n modifiedData: { displayName?: string };\n name: string;\n onChange: FormChangeHandler<string>;\n value?: string;\n}\n\nexport const PluralName = ({\n description,\n error,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value,\n}: PluralNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const displayName = modifiedData?.displayName || '';\n const previousDisplayName = useRef(displayName);\n const previousValue = useRef(value);\n\n useEffect(() => {\n if (displayName && displayName !== previousDisplayName.current) {\n const baseValue = nameToSlug(displayName);\n let newValue = baseValue;\n\n try {\n newValue = pluralize(baseValue, 2);\n } catch {\n // If pluralize fails, use the base value\n }\n\n onChangeRef.current({ target: { name, value: newValue } });\n previousValue.current = newValue;\n previousDisplayName.current = displayName;\n } else if (!displayName) {\n onChangeRef.current({ target: { name, value: '' } });\n previousValue.current = '';\n previousDisplayName.current = '';\n }\n }, [displayName, name, value]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} type=\"text\" />\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["PluralName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","displayName","previousDisplayName","previousValue","useEffect","current","baseValue","nameToSlug","newValue","pluralize","target","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","type","Error"],"mappings":";;;;;;;MAoBaA,UAAAA,GAAa,CAAC,EACzBC,WAAW,EACXC,KAAK,EACLC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAK,EACW,GAAA;IAChB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,MAAAA,CAAOL,QAAAA,CAAAA;IAC3B,MAAMM,WAAAA,GAAcR,cAAcQ,WAAAA,IAAe,EAAA;AACjD,IAAA,MAAMC,sBAAsBF,MAAAA,CAAOC,WAAAA,CAAAA;AACnC,IAAA,MAAME,gBAAgBH,MAAAA,CAAOJ,KAAAA,CAAAA;IAE7BQ,SAAAA,CAAU,IAAA;AACR,QAAA,IAAIH,WAAAA,IAAeA,WAAAA,KAAgBC,mBAAAA,CAAoBG,OAAO,EAAE;AAC9D,YAAA,MAAMC,YAAYC,UAAAA,CAAWN,WAAAA,CAAAA;AAC7B,YAAA,IAAIO,QAAAA,GAAWF,SAAAA;YAEf,IAAI;AACFE,gBAAAA,QAAAA,GAAWC,UAAUH,SAAAA,EAAW,CAAA,CAAA;AAClC,YAAA,CAAA,CAAE,OAAM;;AAER,YAAA;AAEAP,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEK,MAAAA,EAAQ;AAAEhB,oBAAAA,IAAAA;oBAAME,KAAAA,EAAOY;AAAS;AAAE,aAAA,CAAA;AACxDL,YAAAA,aAAAA,CAAcE,OAAO,GAAGG,QAAAA;AACxBN,YAAAA,mBAAAA,CAAoBG,OAAO,GAAGJ,WAAAA;QAChC,CAAA,MAAO,IAAI,CAACA,WAAAA,EAAa;AACvBF,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEK,MAAAA,EAAQ;AAAEhB,oBAAAA,IAAAA;oBAAME,KAAAA,EAAO;AAAG;AAAE,aAAA,CAAA;AAClDO,YAAAA,aAAAA,CAAcE,OAAO,GAAG,EAAA;AACxBH,YAAAA,mBAAAA,CAAoBG,OAAO,GAAG,EAAA;AAChC,QAAA;IACF,CAAA,EAAG;AAACJ,QAAAA,WAAAA;AAAaP,QAAAA,IAAAA;AAAME,QAAAA;AAAM,KAAA,CAAA;IAE7B,MAAMe,YAAAA,GAAepB,QAAQM,aAAAA,CAAc;QAAEe,EAAAA,EAAIrB,KAAAA;QAAOsB,cAAAA,EAAgBtB;KAAM,CAAA,GAAK,EAAA;IACnF,MAAMuB,IAAAA,GAAOxB,cACTO,aAAAA,CACE;AAAEe,QAAAA,EAAAA,EAAItB,YAAYsB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBvB,YAAYuB;KAAe,EACjE;AAAE,QAAA,GAAGvB,YAAYyB;KAAO,CAAA,GAE1B,EAAA;AACJ,IAAA,MAAMC,QAAQnB,aAAAA,CAAcL,SAAAA,CAAAA;IAE5B,qBACEyB,IAAA,CAACC,MAAMC,IAAI,EAAA;QAAC5B,KAAAA,EAAOoB,YAAAA;QAAcG,IAAAA,EAAMA,IAAAA;QAAMpB,IAAAA,EAAMA,IAAAA;;AACjD,0BAAA0B,GAAA,CAACF,MAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,GAAA,CAACE,SAAAA,EAAAA;gBAAU3B,QAAAA,EAAUA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAAA,IAAS,EAAA;gBAAI2B,IAAAA,EAAK;;AACxD,0BAAAH,GAAA,CAACF,MAAMM,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
* object before forwarding to the original tracking implementation.
|
|
10
10
|
*/
|
|
11
11
|
export declare const useCTBTracking: () => {
|
|
12
|
-
trackUsage: (event: string, properties?: Record<string, unknown>) => Promise<import("axios").AxiosResponse<string, any, {}> | null>;
|
|
12
|
+
trackUsage: (event: string, properties?: Record<string, unknown>) => Promise<import("axios").AxiosResponse<string, any, {}, any> | null>;
|
|
13
13
|
};
|
|
@@ -45,6 +45,7 @@ declare const stateToRequestData: ({ components, contentTypes, }: {
|
|
|
45
45
|
displayName: string;
|
|
46
46
|
description?: string;
|
|
47
47
|
icon?: string;
|
|
48
|
+
preview?: import("@strapi/types/dist/struct/schema.js").PreviewImageValue;
|
|
48
49
|
reviewWorkflows?: boolean;
|
|
49
50
|
populateCreatorFields?: boolean;
|
|
50
51
|
comment?: string;
|
|
@@ -79,6 +80,7 @@ declare const stateToRequestData: ({ components, contentTypes, }: {
|
|
|
79
80
|
displayName: string;
|
|
80
81
|
description?: string;
|
|
81
82
|
icon?: string;
|
|
83
|
+
preview?: import("@strapi/types/dist/struct/schema.js").PreviewImageValue;
|
|
82
84
|
reviewWorkflows?: boolean;
|
|
83
85
|
populateCreatorFields?: boolean;
|
|
84
86
|
comment?: string;
|
|
@@ -111,6 +113,7 @@ declare const stateToRequestData: ({ components, contentTypes, }: {
|
|
|
111
113
|
displayName: string;
|
|
112
114
|
description?: string;
|
|
113
115
|
icon?: string;
|
|
116
|
+
preview?: import("@strapi/types/dist/struct/schema.js").PreviewImageValue;
|
|
114
117
|
reviewWorkflows?: boolean;
|
|
115
118
|
populateCreatorFields?: boolean;
|
|
116
119
|
comment?: string;
|
|
@@ -150,6 +153,7 @@ declare const stateToRequestData: ({ components, contentTypes, }: {
|
|
|
150
153
|
displayName: string;
|
|
151
154
|
description?: string;
|
|
152
155
|
icon?: string;
|
|
156
|
+
preview?: import("@strapi/types/dist/struct/schema.js").PreviewImageValue;
|
|
153
157
|
reviewWorkflows?: boolean;
|
|
154
158
|
populateCreatorFields?: boolean;
|
|
155
159
|
comment?: string;
|
|
@@ -191,6 +195,7 @@ declare const stateToRequestData: ({ components, contentTypes, }: {
|
|
|
191
195
|
displayName: string;
|
|
192
196
|
description?: string;
|
|
193
197
|
icon?: string;
|
|
198
|
+
preview?: import("@strapi/types/dist/struct/schema.js").PreviewImageValue;
|
|
194
199
|
reviewWorkflows?: boolean;
|
|
195
200
|
populateCreatorFields?: boolean;
|
|
196
201
|
comment?: string;
|
|
@@ -225,6 +230,7 @@ declare const stateToRequestData: ({ components, contentTypes, }: {
|
|
|
225
230
|
displayName: string;
|
|
226
231
|
description?: string;
|
|
227
232
|
icon?: string;
|
|
233
|
+
preview?: import("@strapi/types/dist/struct/schema.js").PreviewImageValue;
|
|
228
234
|
reviewWorkflows?: boolean;
|
|
229
235
|
populateCreatorFields?: boolean;
|
|
230
236
|
comment?: string;
|
|
@@ -257,6 +263,7 @@ declare const stateToRequestData: ({ components, contentTypes, }: {
|
|
|
257
263
|
displayName: string;
|
|
258
264
|
description?: string;
|
|
259
265
|
icon?: string;
|
|
266
|
+
preview?: import("@strapi/types/dist/struct/schema.js").PreviewImageValue;
|
|
260
267
|
reviewWorkflows?: boolean;
|
|
261
268
|
populateCreatorFields?: boolean;
|
|
262
269
|
comment?: string;
|
|
@@ -296,6 +303,7 @@ declare const stateToRequestData: ({ components, contentTypes, }: {
|
|
|
296
303
|
displayName: string;
|
|
297
304
|
description?: string;
|
|
298
305
|
icon?: string;
|
|
306
|
+
preview?: import("@strapi/types/dist/struct/schema.js").PreviewImageValue;
|
|
299
307
|
reviewWorkflows?: boolean;
|
|
300
308
|
populateCreatorFields?: boolean;
|
|
301
309
|
comment?: string;
|