@strapi/content-type-builder 5.16.1 → 5.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/admin/components/ApplyConditionButton.js +34 -0
  2. package/dist/admin/components/ApplyConditionButton.js.map +1 -0
  3. package/dist/admin/components/ApplyConditionButton.mjs +32 -0
  4. package/dist/admin/components/ApplyConditionButton.mjs.map +1 -0
  5. package/dist/admin/components/AttributeRow.js +58 -8
  6. package/dist/admin/components/AttributeRow.js.map +1 -1
  7. package/dist/admin/components/AttributeRow.mjs +59 -9
  8. package/dist/admin/components/AttributeRow.mjs.map +1 -1
  9. package/dist/admin/components/FormModal/FormModal.js +134 -3
  10. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  11. package/dist/admin/components/FormModal/FormModal.mjs +137 -5
  12. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  13. package/dist/admin/components/FormModal/attributes/ConditionForm.js +448 -0
  14. package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -0
  15. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +428 -0
  16. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -0
  17. package/dist/admin/components/FormModal/attributes/advancedForm.js +55 -16
  18. package/dist/admin/components/FormModal/attributes/advancedForm.js.map +1 -1
  19. package/dist/admin/components/FormModal/attributes/advancedForm.mjs +55 -16
  20. package/dist/admin/components/FormModal/attributes/advancedForm.mjs.map +1 -1
  21. package/dist/admin/components/FormModal/forms/forms.js +3 -1
  22. package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
  23. package/dist/admin/components/FormModal/forms/forms.mjs +3 -1
  24. package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
  25. package/dist/admin/components/GenericInputs.js +5 -2
  26. package/dist/admin/components/GenericInputs.js.map +1 -1
  27. package/dist/admin/components/GenericInputs.mjs +5 -2
  28. package/dist/admin/components/GenericInputs.mjs.map +1 -1
  29. package/dist/admin/components/TabForm.js +88 -0
  30. package/dist/admin/components/TabForm.js.map +1 -1
  31. package/dist/admin/components/TabForm.mjs +89 -1
  32. package/dist/admin/components/TabForm.mjs.map +1 -1
  33. package/dist/admin/src/components/ApplyConditionButton.d.ts +8 -0
  34. package/dist/admin/src/components/FormModal/attributes/ConditionForm.d.ts +23 -0
  35. package/dist/admin/src/components/FormModal/attributes/advancedForm.d.ts +288 -8
  36. package/dist/admin/src/components/FormModal/attributes/form.d.ts +288 -8
  37. package/dist/admin/src/components/GenericInputs.d.ts +30 -3
  38. package/dist/admin/src/utils/conditions.d.ts +17 -0
  39. package/dist/admin/translations/en.json.js +24 -0
  40. package/dist/admin/translations/en.json.js.map +1 -1
  41. package/dist/admin/translations/en.json.mjs +24 -0
  42. package/dist/admin/translations/en.json.mjs.map +1 -1
  43. package/dist/admin/utils/conditions.js +61 -0
  44. package/dist/admin/utils/conditions.js.map +1 -0
  45. package/dist/admin/utils/conditions.mjs +57 -0
  46. package/dist/admin/utils/conditions.mjs.map +1 -0
  47. package/dist/server/controllers/validation/schema.js +11 -2
  48. package/dist/server/controllers/validation/schema.js.map +1 -1
  49. package/dist/server/controllers/validation/schema.mjs +11 -2
  50. package/dist/server/controllers/validation/schema.mjs.map +1 -1
  51. package/dist/server/src/controllers/validation/schema.d.ts +25728 -0
  52. package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
  53. package/dist/server/src/services/schema.d.ts +1302 -0
  54. package/dist/server/src/services/schema.d.ts.map +1 -1
  55. package/dist/server/src/utils/attributes.d.ts +210 -0
  56. package/dist/server/src/utils/attributes.d.ts.map +1 -1
  57. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"forms.mjs","sources":["../../../../../admin/src/components/FormModal/forms/forms.ts"],"sourcesContent":["import { getTrad } from '../../../utils';\nimport { commonBaseForm } from '../attributes/commonBaseForm';\nimport { attributesForm } from '../attributes/form';\nimport { nameField } from '../attributes/nameField';\nimport { attributeTypes } from '../attributes/types';\nimport { componentForm } from '../component/componentForm';\nimport { createComponentSchema } from '../component/createComponentSchema';\nimport { contentTypeForm } from '../contentType/contentTypeForm';\nimport { createContentTypeSchema } from '../contentType/createContentTypeSchema';\nimport { dynamiczoneForm } from '../dynamiczoneForm';\n\nimport { addItemsToFormSection, FormTypeOptions } from './utils/addItemsToFormSection';\nimport { createComponentCollectionName } from './utils/createCollectionName';\nimport { Attribute, getUsedAttributeNames, SchemaData } from './utils/getUsedAttributeNames';\n\nimport type { ContentType } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\nexport type SchemaParams = {\n schemaAttributes: any;\n attributeType: keyof typeof attributeTypes;\n customFieldValidator: any;\n reservedNames: {\n attributes: Array<string>;\n };\n schemaData: any;\n ctbFormsAPI: any;\n};\n\ntype Base<TAttributesFormType extends 'base' | 'advanced'> = {\n data: any;\n type: keyof (typeof attributesForm)[TAttributesFormType];\n step: string;\n attributes: any;\n extensions: any;\n forTarget: string;\n};\n\nexport const forms = {\n customField: {\n schema({\n schemaAttributes,\n attributeType,\n customFieldValidator,\n reservedNames,\n schemaData,\n ctbFormsAPI,\n }: SchemaParams) {\n const usedAttributeNames = getUsedAttributeNames(schemaAttributes, schemaData);\n\n let attributeShape;\n if (attributeType === 'relation') {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n [],\n { initialData: {}, modifiedData: {} }\n );\n } else {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes\n );\n }\n\n return ctbFormsAPI.makeCustomFieldValidator(\n attributeShape,\n customFieldValidator,\n usedAttributeNames,\n reservedNames.attributes,\n schemaData\n );\n },\n form: {\n base({ customField }: any) {\n // Default section with required name field\n const sections: FormTypeOptions = [{ sectionTitle: null, items: [nameField] }];\n\n if (customField.options?.base) {\n addItemsToFormSection(customField.options.base, sections);\n }\n\n return { sections };\n },\n advanced({ customField, data, step, extensions, ...rest }: any) {\n // Default section with no fields\n const sections: FormTypeOptions = [{ sectionTitle: null, items: [] }];\n const injectedInputs = extensions.getAdvancedForm(['attribute', customField.type], {\n data,\n type: customField.type,\n step,\n ...rest,\n });\n\n if (customField.options?.advanced) {\n addItemsToFormSection(customField.options.advanced, sections);\n }\n\n if (injectedInputs) {\n const extendedSettings = {\n sectionTitle: {\n id: getTrad('modalForm.custom-fields.advanced.settings.extended'),\n defaultMessage: 'Extended settings',\n },\n items: injectedInputs,\n };\n\n sections.push(extendedSettings);\n }\n\n return { sections };\n },\n },\n },\n attribute: {\n schema(\n currentSchema: any,\n attributeType: keyof typeof attributeTypes,\n reservedNames: {\n attributes: Array<string>;\n },\n alreadyTakenTargetContentTypeAttributes: Array<Attribute>,\n options: SchemaData,\n extensions: {\n makeValidator: any;\n }\n ) {\n // Get the attributes object on the schema\n const attributes: Array<Attribute> = currentSchema?.attributes ?? [];\n const usedAttributeNames = getUsedAttributeNames(attributes, options);\n\n try {\n const attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n\n return extensions.makeValidator(\n ['attribute', attributeType],\n attributeShape,\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n } catch (err) {\n console.error('Error yup build schema', err);\n\n return attributeTypes.default(usedAttributeNames, reservedNames.attributes);\n }\n },\n form: {\n advanced({ data, type, step, extensions, ...rest }: Base<'advanced'>) {\n try {\n const baseForm = attributesForm.advanced[type](data, step).sections;\n const itemsToAdd = extensions.getAdvancedForm(['attribute', type], {\n data,\n type,\n step,\n ...rest,\n });\n\n const sections = baseForm.reduce((acc: Array<any>, current: any) => {\n if (current.sectionTitle === null) {\n acc.push(current);\n } else {\n acc.push({ ...current, items: [...current.items, ...itemsToAdd] });\n }\n\n return acc;\n }, []);\n // IF we want a dedicated section for the plugins\n // const sections = [\n // ...baseForm,\n // {\n // sectionTitle: { id: 'Zone pour plugins', defaultMessage: 'Zone pour plugins' },\n // items: itemsToAdd,\n // },\n // ];\n\n return { sections };\n } catch (err) {\n console.error(err);\n\n return { sections: [] };\n }\n },\n base({ data, type, step, attributes }: Base<'base'>) {\n try {\n return attributesForm.base[type](data, step, attributes);\n } catch (err) {\n return commonBaseForm;\n }\n },\n },\n },\n contentType: {\n schema(\n alreadyTakenNames: Array<string>,\n isEditing: boolean,\n ctUid: Internal.UID.ContentType,\n reservedNames: {\n models: any;\n },\n extensions: any,\n contentTypes: Record<Internal.UID.ContentType, ContentType>\n ) {\n const singularNames = Object.values(contentTypes).map((contentType) => {\n return contentType.info.singularName;\n });\n\n const pluralNames = Object.values(contentTypes).map((contentType: any) => {\n return contentType?.info?.pluralName ?? '';\n });\n\n const takenNames = isEditing\n ? alreadyTakenNames.filter((uid) => uid !== ctUid)\n : alreadyTakenNames;\n\n const takenSingularNames = isEditing\n ? singularNames.filter((singName) => {\n const { info } = contentTypes[ctUid];\n\n return info.singularName !== singName;\n })\n : singularNames;\n\n const takenPluralNames = isEditing\n ? pluralNames.filter((pluralName) => {\n const { info } = contentTypes[ctUid];\n\n return info.pluralName !== pluralName;\n })\n : pluralNames;\n\n // return the array of collection names not all normalized\n const collectionNames = Object.values(contentTypes).map((contentType) => {\n return contentType?.collectionName ?? '';\n });\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => {\n const { collectionName: currentCollectionName } = contentTypes[ctUid];\n\n return collectionName !== currentCollectionName;\n })\n : collectionNames;\n\n const contentTypeShape = createContentTypeSchema({\n usedContentTypeNames: takenNames,\n reservedModels: reservedNames.models,\n singularNames: takenSingularNames,\n pluralNames: takenPluralNames,\n collectionNames: takenCollectionNames,\n });\n\n // FIXME\n return extensions.makeValidator(\n ['contentType'],\n contentTypeShape,\n takenNames,\n reservedNames.models,\n takenSingularNames,\n takenPluralNames\n );\n },\n form: {\n base({ actionType }: any) {\n if (actionType === 'create') {\n return contentTypeForm.base.create();\n }\n\n return contentTypeForm.base.edit();\n },\n advanced({ extensions }: any) {\n const baseForm = contentTypeForm.advanced\n .default()\n .sections.map((section) => section.items)\n .flat();\n const itemsToAdd = extensions.getAdvancedForm(['contentType']);\n\n return {\n sections: [\n {\n items: [...baseForm, ...itemsToAdd],\n },\n ],\n };\n },\n },\n },\n component: {\n schema(\n alreadyTakenAttributes: Array<Internal.UID.Component>,\n componentCategory: string,\n reservedNames: {\n models: any;\n },\n isEditing = false,\n components: Record<string, any>,\n componentDisplayName: string,\n compoUid: Internal.UID.Component | null = null\n ) {\n const takenNames = isEditing\n ? alreadyTakenAttributes.filter((uid: Internal.UID.Component) => uid !== compoUid)\n : alreadyTakenAttributes;\n const collectionNames = Object.values(components).map((component: any) => {\n return component?.collectionName;\n });\n\n const currentCollectionName = createComponentCollectionName(\n componentDisplayName,\n componentCategory\n );\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => collectionName !== currentCollectionName)\n : collectionNames;\n\n return createComponentSchema(\n takenNames,\n reservedNames.models,\n componentCategory,\n takenCollectionNames,\n currentCollectionName\n );\n },\n form: {\n advanced() {\n return {\n sections: componentForm.advanced(),\n };\n },\n base() {\n return {\n sections: componentForm.base(),\n };\n },\n },\n },\n addComponentToDynamicZone: {\n form: {\n advanced() {\n return dynamiczoneForm.advanced.default();\n },\n base({ data }: any) {\n const isCreatingComponent = data?.createComponent ?? false;\n\n if (isCreatingComponent) {\n return dynamiczoneForm.base.createComponent();\n }\n\n return dynamiczoneForm.base.default();\n },\n },\n },\n};\n"],"names":["forms","customField","schema","schemaAttributes","attributeType","customFieldValidator","reservedNames","schemaData","ctbFormsAPI","usedAttributeNames","getUsedAttributeNames","attributeShape","attributeTypes","attributes","initialData","modifiedData","makeCustomFieldValidator","form","base","sections","sectionTitle","items","nameField","options","addItemsToFormSection","advanced","data","step","extensions","rest","injectedInputs","getAdvancedForm","type","extendedSettings","id","getTrad","defaultMessage","push","attribute","currentSchema","alreadyTakenTargetContentTypeAttributes","makeValidator","err","console","error","default","baseForm","attributesForm","itemsToAdd","reduce","acc","current","commonBaseForm","contentType","alreadyTakenNames","isEditing","ctUid","contentTypes","singularNames","Object","values","map","info","singularName","pluralNames","pluralName","takenNames","filter","uid","takenSingularNames","singName","takenPluralNames","collectionNames","collectionName","takenCollectionNames","currentCollectionName","contentTypeShape","createContentTypeSchema","usedContentTypeNames","reservedModels","models","actionType","contentTypeForm","create","edit","section","flat","component","alreadyTakenAttributes","componentCategory","components","componentDisplayName","compoUid","createComponentCollectionName","createComponentSchema","componentForm","addComponentToDynamicZone","dynamiczoneForm","isCreatingComponent","createComponent"],"mappings":"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"}
1
+ {"version":3,"file":"forms.mjs","sources":["../../../../../admin/src/components/FormModal/forms/forms.ts"],"sourcesContent":["import { getTrad } from '../../../utils';\nimport { commonBaseForm } from '../attributes/commonBaseForm';\nimport { attributesForm } from '../attributes/form';\nimport { nameField } from '../attributes/nameField';\nimport { attributeTypes } from '../attributes/types';\nimport { componentForm } from '../component/componentForm';\nimport { createComponentSchema } from '../component/createComponentSchema';\nimport { contentTypeForm } from '../contentType/contentTypeForm';\nimport { createContentTypeSchema } from '../contentType/createContentTypeSchema';\nimport { dynamiczoneForm } from '../dynamiczoneForm';\n\nimport { addItemsToFormSection, FormTypeOptions } from './utils/addItemsToFormSection';\nimport { createComponentCollectionName } from './utils/createCollectionName';\nimport { Attribute, getUsedAttributeNames, SchemaData } from './utils/getUsedAttributeNames';\n\nimport type { ContentType } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\nexport type SchemaParams = {\n schemaAttributes: any;\n attributeType: keyof typeof attributeTypes;\n customFieldValidator: any;\n reservedNames: {\n attributes: Array<string>;\n };\n schemaData: any;\n ctbFormsAPI: any;\n};\n\ntype Base<TAttributesFormType extends 'base' | 'advanced'> = {\n data: any;\n type: keyof (typeof attributesForm)[TAttributesFormType];\n step: string;\n attributes: any;\n extensions: any;\n forTarget: string;\n};\n\nexport const forms = {\n customField: {\n schema({\n schemaAttributes,\n attributeType,\n customFieldValidator,\n reservedNames,\n schemaData,\n ctbFormsAPI,\n }: SchemaParams) {\n const usedAttributeNames = getUsedAttributeNames(schemaAttributes, schemaData);\n\n let attributeShape;\n if (attributeType === 'relation') {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n [],\n { initialData: {}, modifiedData: {} }\n );\n } else {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes\n );\n }\n\n return ctbFormsAPI.makeCustomFieldValidator(\n attributeShape,\n customFieldValidator,\n usedAttributeNames,\n reservedNames.attributes,\n schemaData\n );\n },\n form: {\n base({ customField }: any) {\n // Default section with required name field\n const sections: FormTypeOptions = [{ sectionTitle: null, items: [nameField] }];\n\n if (customField.options?.base) {\n addItemsToFormSection(customField.options.base, sections);\n }\n\n return { sections };\n },\n advanced({ customField, data, step, extensions, ...rest }: any) {\n // Default section with no fields\n const sections: FormTypeOptions = [{ sectionTitle: null, items: [] }];\n const injectedInputs = extensions.getAdvancedForm(['attribute', customField.type], {\n data,\n type: customField.type,\n step,\n ...rest,\n });\n\n if (customField.options?.advanced) {\n addItemsToFormSection(customField.options.advanced, sections);\n }\n\n if (injectedInputs) {\n const extendedSettings = {\n sectionTitle: {\n id: getTrad('modalForm.custom-fields.advanced.settings.extended'),\n defaultMessage: 'Extended settings',\n },\n items: injectedInputs,\n };\n\n sections.push(extendedSettings);\n }\n\n return { sections };\n },\n },\n },\n attribute: {\n schema(\n currentSchema: any,\n attributeType: keyof typeof attributeTypes,\n reservedNames: {\n attributes: Array<string>;\n },\n alreadyTakenTargetContentTypeAttributes: Array<Attribute>,\n options: SchemaData,\n extensions: {\n makeValidator: any;\n }\n ) {\n // Get the attributes object on the schema\n const attributes: Array<Attribute> = currentSchema?.attributes ?? [];\n const usedAttributeNames = getUsedAttributeNames(attributes, options);\n\n try {\n const attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n\n return extensions.makeValidator(\n ['attribute', attributeType],\n attributeShape,\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n } catch (err) {\n console.error('Error yup build schema', err);\n\n return attributeTypes.default(usedAttributeNames, reservedNames.attributes);\n }\n },\n form: {\n advanced({ data, type, step, extensions, ...rest }: Base<'advanced'>) {\n try {\n const baseForm = attributesForm.advanced[type](data, step).sections;\n const itemsToAdd = extensions.getAdvancedForm(['attribute', type], {\n data,\n type,\n step,\n ...rest,\n });\n\n let injected = false;\n\n const sections = baseForm.reduce((acc: Array<any>, current: any) => {\n if (current.sectionTitle === null || injected) {\n acc.push(current);\n } else {\n acc.push({ ...current, items: [...current.items, ...itemsToAdd] });\n injected = true;\n }\n\n return acc;\n }, []);\n // IF we want a dedicated section for the plugins\n // const sections = [\n // ...baseForm,\n // {\n // sectionTitle: { id: 'Zone pour plugins', defaultMessage: 'Zone pour plugins' },\n // items: itemsToAdd,\n // },\n // ];\n\n return { sections };\n } catch (err) {\n console.error(err);\n\n return { sections: [] };\n }\n },\n base({ data, type, step, attributes }: Base<'base'>) {\n try {\n return attributesForm.base[type](data, step, attributes);\n } catch (err) {\n return commonBaseForm;\n }\n },\n },\n },\n contentType: {\n schema(\n alreadyTakenNames: Array<string>,\n isEditing: boolean,\n ctUid: Internal.UID.ContentType,\n reservedNames: {\n models: any;\n },\n extensions: any,\n contentTypes: Record<Internal.UID.ContentType, ContentType>\n ) {\n const singularNames = Object.values(contentTypes).map((contentType) => {\n return contentType.info.singularName;\n });\n\n const pluralNames = Object.values(contentTypes).map((contentType: any) => {\n return contentType?.info?.pluralName ?? '';\n });\n\n const takenNames = isEditing\n ? alreadyTakenNames.filter((uid) => uid !== ctUid)\n : alreadyTakenNames;\n\n const takenSingularNames = isEditing\n ? singularNames.filter((singName) => {\n const { info } = contentTypes[ctUid];\n\n return info.singularName !== singName;\n })\n : singularNames;\n\n const takenPluralNames = isEditing\n ? pluralNames.filter((pluralName) => {\n const { info } = contentTypes[ctUid];\n\n return info.pluralName !== pluralName;\n })\n : pluralNames;\n\n // return the array of collection names not all normalized\n const collectionNames = Object.values(contentTypes).map((contentType) => {\n return contentType?.collectionName ?? '';\n });\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => {\n const { collectionName: currentCollectionName } = contentTypes[ctUid];\n\n return collectionName !== currentCollectionName;\n })\n : collectionNames;\n\n const contentTypeShape = createContentTypeSchema({\n usedContentTypeNames: takenNames,\n reservedModels: reservedNames.models,\n singularNames: takenSingularNames,\n pluralNames: takenPluralNames,\n collectionNames: takenCollectionNames,\n });\n\n // FIXME\n return extensions.makeValidator(\n ['contentType'],\n contentTypeShape,\n takenNames,\n reservedNames.models,\n takenSingularNames,\n takenPluralNames\n );\n },\n form: {\n base({ actionType }: any) {\n if (actionType === 'create') {\n return contentTypeForm.base.create();\n }\n\n return contentTypeForm.base.edit();\n },\n advanced({ extensions }: any) {\n const baseForm = contentTypeForm.advanced\n .default()\n .sections.map((section) => section.items)\n .flat();\n const itemsToAdd = extensions.getAdvancedForm(['contentType']);\n\n return {\n sections: [\n {\n items: [...baseForm, ...itemsToAdd],\n },\n ],\n };\n },\n },\n },\n component: {\n schema(\n alreadyTakenAttributes: Array<Internal.UID.Component>,\n componentCategory: string,\n reservedNames: {\n models: any;\n },\n isEditing = false,\n components: Record<string, any>,\n componentDisplayName: string,\n compoUid: Internal.UID.Component | null = null\n ) {\n const takenNames = isEditing\n ? alreadyTakenAttributes.filter((uid: Internal.UID.Component) => uid !== compoUid)\n : alreadyTakenAttributes;\n const collectionNames = Object.values(components).map((component: any) => {\n return component?.collectionName;\n });\n\n const currentCollectionName = createComponentCollectionName(\n componentDisplayName,\n componentCategory\n );\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => collectionName !== currentCollectionName)\n : collectionNames;\n\n return createComponentSchema(\n takenNames,\n reservedNames.models,\n componentCategory,\n takenCollectionNames,\n currentCollectionName\n );\n },\n form: {\n advanced() {\n return {\n sections: componentForm.advanced(),\n };\n },\n base() {\n return {\n sections: componentForm.base(),\n };\n },\n },\n },\n addComponentToDynamicZone: {\n form: {\n advanced() {\n return dynamiczoneForm.advanced.default();\n },\n base({ data }: any) {\n const isCreatingComponent = data?.createComponent ?? false;\n\n if (isCreatingComponent) {\n return dynamiczoneForm.base.createComponent();\n }\n\n return dynamiczoneForm.base.default();\n },\n },\n },\n};\n"],"names":["forms","customField","schema","schemaAttributes","attributeType","customFieldValidator","reservedNames","schemaData","ctbFormsAPI","usedAttributeNames","getUsedAttributeNames","attributeShape","attributeTypes","attributes","initialData","modifiedData","makeCustomFieldValidator","form","base","sections","sectionTitle","items","nameField","options","addItemsToFormSection","advanced","data","step","extensions","rest","injectedInputs","getAdvancedForm","type","extendedSettings","id","getTrad","defaultMessage","push","attribute","currentSchema","alreadyTakenTargetContentTypeAttributes","makeValidator","err","console","error","default","baseForm","attributesForm","itemsToAdd","injected","reduce","acc","current","commonBaseForm","contentType","alreadyTakenNames","isEditing","ctUid","contentTypes","singularNames","Object","values","map","info","singularName","pluralNames","pluralName","takenNames","filter","uid","takenSingularNames","singName","takenPluralNames","collectionNames","collectionName","takenCollectionNames","currentCollectionName","contentTypeShape","createContentTypeSchema","usedContentTypeNames","reservedModels","models","actionType","contentTypeForm","create","edit","section","flat","component","alreadyTakenAttributes","componentCategory","components","componentDisplayName","compoUid","createComponentCollectionName","createComponentSchema","componentForm","addComponentToDynamicZone","dynamiczoneForm","isCreatingComponent","createComponent"],"mappings":"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"}
@@ -29,7 +29,7 @@ function _interopNamespaceDefault(e) {
29
29
 
30
30
  var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
31
31
 
32
- const GenericInput = ({ autoComplete, customInputs, description, disabled, intlLabel, labelAction, error, name, onChange, options = [], placeholder, required, step, type, value: defaultValue, isNullable, autoFocus, attribute, ...rest })=>{
32
+ const GenericInput = ({ autoComplete, customInputs, description, disabled, intlLabel, labelAction, error, name, onChange, onDelete, options = [], placeholder, required, step, type, value: defaultValue, isNullable, autoFocus, attribute, attributeName, conditionFields, ...rest })=>{
33
33
  const { formatMessage } = reactIntl.useIntl();
34
34
  // TODO: Workaround to get the field hint values if they exist on the type
35
35
  const getFieldHintValue = (attribute, key)=>{
@@ -100,12 +100,15 @@ const GenericInput = ({ autoComplete, customInputs, description, disabled, intlL
100
100
  error: errorMessage || '',
101
101
  name: name,
102
102
  onChange: onChange,
103
+ onDelete: onDelete,
103
104
  options: options,
104
105
  required: required,
105
106
  placeholder: placeholder,
106
107
  type: type,
107
108
  value: value,
108
- autoFocus: autoFocus
109
+ autoFocus: autoFocus,
110
+ attributeName: attributeName,
111
+ conditionFields: conditionFields
109
112
  });
110
113
  }
111
114
  const label = intlLabel.id ? formatMessage({
@@ -1 +1 @@
1
- {"version":3,"file":"GenericInputs.js","sources":["../../../admin/src/components/GenericInputs.tsx"],"sourcesContent":["/**\n * TODO: we should be using the FormRenderer from the admin to do this,\n * but the CTB has no tests or types, so we can't refactor it safely.\n * So we're just adding this to the tech debt.\n */\n\nimport * as React from 'react';\n\nimport {\n Checkbox,\n DatePicker,\n DateTimePicker,\n Field,\n JSONInput,\n NumberInput,\n SingleSelect,\n SingleSelectOption,\n Textarea,\n TextInput,\n TimePicker,\n Toggle,\n} from '@strapi/design-system';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport formatISO from 'date-fns/formatISO';\nimport isEqual from 'lodash/isEqual';\nimport { type MessageDescriptor, type PrimitiveType, useIntl } from 'react-intl';\n\nimport { parseDateValue } from '../utils/parseDateValue';\nimport { handleTimeChange, handleTimeChangeEvent } from '../utils/timeFormat';\n\nimport type { Schema } from '@strapi/types';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\ninterface InputOption {\n metadatas: {\n intlLabel: TranslationMessage;\n disabled: boolean;\n hidden: boolean;\n };\n key: string;\n value: string;\n}\n\ninterface CustomInputProps<TAttribute extends Schema.Attribute.AnyAttribute>\n extends Omit<GenericInputProps<TAttribute>, 'customInputs'> {\n ref?: React.Ref<HTMLElement>;\n hint?: string | React.JSX.Element | (string | React.JSX.Element)[];\n}\n\ninterface GenericInputProps<\n TAttribute extends Schema.Attribute.AnyAttribute = Schema.Attribute.AnyAttribute,\n> {\n attribute?: TAttribute;\n autoComplete?: string;\n customInputs?: Record<string, React.ComponentType<CustomInputProps<TAttribute>>>;\n description?: TranslationMessage;\n disabled?: boolean;\n error?: string | TranslationMessage;\n intlLabel: TranslationMessage;\n labelAction?: React.ReactNode;\n name: string;\n onChange: (\n payload: {\n target: {\n name: string;\n value: Schema.Attribute.Value<TAttribute>;\n type?: string;\n };\n },\n shouldSetInitialValue?: boolean\n ) => void;\n options?: InputOption[];\n placeholder?: TranslationMessage;\n required?: boolean;\n step?: number;\n type: string;\n // TODO: The value depends on the input type, too complicated to handle all cases here\n value?: Schema.Attribute.Value<TAttribute>;\n isNullable?: boolean;\n autoFocus?: boolean;\n}\n\nconst GenericInput = ({\n autoComplete,\n customInputs,\n description,\n disabled,\n intlLabel,\n labelAction,\n error,\n name,\n onChange,\n options = [],\n placeholder,\n required,\n step,\n type,\n value: defaultValue,\n isNullable,\n autoFocus,\n attribute,\n ...rest\n}: GenericInputProps) => {\n const { formatMessage } = useIntl();\n\n // TODO: Workaround to get the field hint values if they exist on the type\n const getFieldHintValue = (\n attribute?: Schema.Attribute.AnyAttribute,\n key?: keyof FieldSchema\n ) => {\n if (!attribute) return;\n\n if (key === 'minLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'maxLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'max' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'min' && key in attribute) {\n return attribute[key];\n }\n };\n\n const { hint } = useFieldHint({\n description,\n fieldSchema: {\n minLength: getFieldHintValue(attribute, 'minLength'),\n maxLength: getFieldHintValue(attribute, 'maxLength'),\n max: getFieldHintValue(attribute, 'max'),\n min: getFieldHintValue(attribute, 'min'),\n },\n type: attribute?.type || type,\n });\n\n const [showPassword, setShowPassword] = React.useState(false);\n\n const CustomInput = customInputs ? customInputs[type] : null;\n\n // the API always returns null, which throws an error in React,\n // therefore we cast this case to undefined\n const value = defaultValue ?? undefined;\n\n /*\n TODO: ideally we should pass in `defaultValue` and `value` for\n inputs, in order to make them controlled components. This variable\n acts as a fallback for now, to prevent React errors in devopment mode\n\n See: https://github.com/strapi/strapi/pull/12861\n */\n const valueWithEmptyStringFallback = value ?? '';\n\n function getErrorMessage(error: string | TranslationMessage | undefined) {\n if (!error) {\n return null;\n }\n\n if (typeof error === 'string') {\n return formatMessage({ id: error, defaultMessage: error });\n }\n\n const values = {\n ...error.values,\n };\n\n return formatMessage(\n {\n id: error.id,\n defaultMessage: error?.defaultMessage ?? error.id,\n },\n values\n );\n }\n\n const errorMessage = getErrorMessage(error) ?? undefined;\n\n if (CustomInput) {\n return (\n <CustomInput\n {...rest}\n attribute={attribute}\n description={description}\n hint={hint}\n disabled={disabled}\n intlLabel={intlLabel}\n labelAction={labelAction}\n error={errorMessage || ''}\n name={name}\n onChange={onChange}\n options={options}\n required={required}\n placeholder={placeholder}\n type={type}\n value={value}\n autoFocus={autoFocus}\n />\n );\n }\n\n const label = intlLabel.id\n ? formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { ...intlLabel.values }\n )\n : name;\n\n const formattedPlaceholder = placeholder\n ? formatMessage(\n { id: placeholder.id, defaultMessage: placeholder.defaultMessage },\n { ...placeholder.values }\n )\n : '';\n\n const getComponent = () => {\n switch (type) {\n case 'json': {\n return (\n <JSONInput\n value={value}\n disabled={disabled}\n onChange={(json) => {\n // Default to null when the field is not required and there is no input value\n const value =\n attribute && 'required' in attribute && !attribute?.required && !json.length\n ? null\n : json;\n onChange({ target: { name, value } }, false);\n }}\n minHeight=\"25.2rem\"\n maxHeight=\"50.4rem\"\n />\n );\n }\n case 'bool': {\n return (\n <Toggle\n checked={defaultValue === null ? null : defaultValue || false}\n disabled={disabled}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.checked } });\n }}\n />\n );\n }\n case 'checkbox': {\n return (\n <Checkbox\n disabled={disabled}\n onCheckedChange={(value) => {\n onChange({ target: { name, value } });\n }}\n checked={Boolean(value)}\n >\n {label}\n </Checkbox>\n );\n }\n case 'datetime': {\n const dateValue = parseDateValue(value);\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n // check if date is not null or undefined\n const formattedDate = date ? date.toISOString() : null;\n\n onChange({ target: { name, value: formattedDate, type } });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'date': {\n const dateValue = parseDateValue(value);\n return (\n <DatePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n onChange({\n target: {\n name,\n value: date ? formatISO(date, { representation: 'date' }) : null,\n type,\n },\n });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'number': {\n return (\n <NumberInput\n disabled={disabled}\n onValueChange={(value) => {\n onChange({ target: { name, value, type } });\n }}\n placeholder={formattedPlaceholder}\n step={step}\n value={value}\n autoFocus={autoFocus}\n />\n );\n }\n case 'email': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"email\"\n value={valueWithEmptyStringFallback}\n autoFocus={autoFocus}\n />\n );\n }\n case 'timestamp':\n case 'text':\n case 'string': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"text\"\n value={valueWithEmptyStringFallback}\n autoFocus={autoFocus}\n />\n );\n }\n case 'password': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n endAction={\n <button\n aria-label={formatMessage({\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n })}\n onClick={() => {\n setShowPassword((prev) => !prev);\n }}\n style={{\n border: 'none',\n padding: 0,\n background: 'transparent',\n }}\n type=\"button\"\n >\n {showPassword ? <Eye fill=\"neutral500\" /> : <EyeStriked fill=\"neutral500\" />}\n </button>\n }\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type={showPassword ? 'text' : 'password'}\n value={valueWithEmptyStringFallback}\n />\n );\n }\n case 'select': {\n return (\n <SingleSelect\n disabled={disabled}\n onChange={(value) => {\n onChange({ target: { name, value, type: 'select' } });\n }}\n placeholder={formattedPlaceholder}\n value={value}\n >\n {options.map(({ metadatas: { intlLabel, disabled, hidden }, key, value }) => {\n return (\n <SingleSelectOption key={key} value={value} disabled={disabled} hidden={hidden}>\n {formatMessage(intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n }\n case 'textarea': {\n return (\n <Textarea\n disabled={disabled}\n onChange={(event) => onChange({ target: { name, value: event.target.value, type } })}\n placeholder={formattedPlaceholder}\n value={valueWithEmptyStringFallback}\n />\n );\n }\n case 'time': {\n const formattedValue = handleTimeChange({ value, onChange, name, type });\n\n return (\n <TimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(time) => handleTimeChangeEvent(onChange, name, type, time)}\n onClear={() => handleTimeChangeEvent(onChange, name, type, undefined)}\n value={formattedValue}\n />\n );\n }\n default: {\n /**\n * If there's no component for the given type, we return a disabled text input\n * showing a \"Not supported\" title to illustrate the issue.\n */\n return <TextInput disabled placeholder=\"Not supported\" type=\"text\" value=\"\" />;\n }\n }\n };\n\n return (\n <Field.Root error={errorMessage} name={name} hint={hint} required={required}>\n {type !== 'checkbox' ? <Field.Label action={labelAction}>{label}</Field.Label> : null}\n {getComponent()}\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\ntype FieldSchema = {\n minLength?: number | string;\n maxLength?: number | string;\n max?: number | string;\n min?: number | string;\n};\ninterface UseFieldHintProps {\n description?: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n fieldSchema?: FieldSchema;\n type?: string;\n}\n\n/**\n * @description\n * A hook for generating the hint for a field\n */\nconst useFieldHint = ({ description, fieldSchema, type }: UseFieldHintProps) => {\n const { formatMessage } = useIntl();\n\n const buildDescription = () =>\n description?.id\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n\n const buildHint = () => {\n const { maximum, minimum } = getMinMax(fieldSchema);\n const units = getFieldUnits({\n type,\n minimum,\n maximum,\n });\n\n const minIsNumber = typeof minimum === 'number';\n const maxIsNumber = typeof maximum === 'number';\n const hasMinAndMax = maxIsNumber && minIsNumber;\n const hasMinOrMax = maxIsNumber || minIsNumber;\n\n if (!description?.id && !hasMinOrMax) {\n return '';\n }\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: buildDescription(),\n unit: units?.message && hasMinOrMax ? formatMessage(units.message, units.values) : null,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: hasMinOrMax ? <br /> : null,\n }\n );\n };\n\n return { hint: buildHint() };\n};\n\nconst getFieldUnits = ({\n type,\n minimum,\n maximum,\n}: {\n type?: string;\n minimum?: number;\n maximum?: number;\n}) => {\n if (type && ['biginteger', 'integer', 'number'].includes(type)) {\n return {};\n }\n const maxValue = Math.max(minimum || 0, maximum || 0);\n\n return {\n message: {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n values: {\n maxValue,\n },\n };\n};\n\nconst getMinMax = (fieldSchema?: FieldSchema) => {\n if (!fieldSchema) {\n return { maximum: undefined, minimum: undefined };\n }\n\n const { minLength, maxLength, max, min } = fieldSchema;\n\n let minimum;\n let maximum;\n\n const parsedMin = Number(min);\n const parsedMinLength = Number(minLength);\n\n if (!Number.isNaN(parsedMin)) {\n minimum = parsedMin;\n } else if (!Number.isNaN(parsedMinLength)) {\n minimum = parsedMinLength;\n }\n\n const parsedMax = Number(max);\n const parsedMaxLength = Number(maxLength);\n\n if (!Number.isNaN(parsedMax)) {\n maximum = parsedMax;\n } else if (!Number.isNaN(parsedMaxLength)) {\n maximum = parsedMaxLength;\n }\n\n return { maximum, minimum };\n};\n\n/**\n * we've memoized this component because we use a context to store all the data in our form in the content-manager.\n * This then causes _every_ component to re-render because there are no selects incurring performance issues\n * in content-types as the content-type gets more complicated.\n */\nconst MemoizedGenericInput = React.memo(GenericInput, isEqual);\n\nexport type { GenericInputProps, CustomInputProps };\nexport { MemoizedGenericInput as GenericInput };\n"],"names":["GenericInput","autoComplete","customInputs","description","disabled","intlLabel","labelAction","error","name","onChange","options","placeholder","required","step","type","value","defaultValue","isNullable","autoFocus","attribute","rest","formatMessage","useIntl","getFieldHintValue","key","hint","useFieldHint","fieldSchema","minLength","maxLength","max","min","showPassword","setShowPassword","React","useState","CustomInput","undefined","valueWithEmptyStringFallback","getErrorMessage","id","defaultMessage","values","errorMessage","_jsx","label","formattedPlaceholder","getComponent","JSONInput","json","length","target","minHeight","maxHeight","Toggle","checked","offLabel","onLabel","e","Checkbox","onCheckedChange","Boolean","dateValue","parseDateValue","DateTimePicker","clearLabel","date","formattedDate","toISOString","onClear","DatePicker","formatISO","representation","NumberInput","onValueChange","TextInput","endAction","button","aria-label","onClick","prev","style","border","padding","background","Eye","fill","EyeStriked","SingleSelect","map","metadatas","hidden","SingleSelectOption","Textarea","event","formattedValue","handleTimeChange","TimePicker","time","handleTimeChangeEvent","_jsxs","Field","Root","Label","action","Error","Hint","buildDescription","buildHint","maximum","minimum","getMinMax","units","getFieldUnits","minIsNumber","maxIsNumber","hasMinAndMax","hasMinOrMax","unit","message","divider","br","includes","maxValue","Math","parsedMin","Number","parsedMinLength","isNaN","parsedMax","parsedMaxLength","MemoizedGenericInput","memo","isEqual"],"mappings":"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"}
1
+ {"version":3,"file":"GenericInputs.js","sources":["../../../admin/src/components/GenericInputs.tsx"],"sourcesContent":["/**\n * TODO: we should be using the FormRenderer from the admin to do this,\n * but the CTB has no tests or types, so we can't refactor it safely.\n * So we're just adding this to the tech debt.\n */\n\nimport * as React from 'react';\n\nimport {\n Checkbox,\n DatePicker,\n DateTimePicker,\n Field,\n JSONInput,\n NumberInput,\n SingleSelect,\n SingleSelectOption,\n Textarea,\n TextInput,\n TimePicker,\n Toggle,\n} from '@strapi/design-system';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport formatISO from 'date-fns/formatISO';\nimport isEqual from 'lodash/isEqual';\nimport { type MessageDescriptor, type PrimitiveType, useIntl } from 'react-intl';\n\nimport { parseDateValue } from '../utils/parseDateValue';\nimport { handleTimeChange, handleTimeChangeEvent } from '../utils/timeFormat';\n\nimport type { Schema } from '@strapi/types';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\ninterface InputOption {\n metadatas: {\n intlLabel: TranslationMessage;\n disabled: boolean;\n hidden: boolean;\n };\n key: string;\n value: string;\n}\n\ninterface CustomInputProps<\n TAttribute extends Schema.Attribute.AnyAttribute = Schema.Attribute.AnyAttribute,\n> {\n attribute?: TAttribute;\n autoComplete?: string;\n description?: TranslationMessage;\n disabled?: boolean;\n error?: string;\n hint?: string | React.JSX.Element | (string | React.JSX.Element)[];\n intlLabel: TranslationMessage;\n labelAction?: React.ReactNode;\n name: string;\n onChange: (\n payload: {\n target: {\n name: string;\n value: Schema.Attribute.Value<TAttribute>;\n type?: string;\n };\n },\n shouldSetInitialValue?: boolean\n ) => void;\n onDelete?: () => void;\n options?: InputOption[];\n placeholder?: TranslationMessage;\n required?: boolean;\n step?: number;\n type: string;\n value?: Schema.Attribute.Value<TAttribute>;\n autoFocus?: boolean;\n attributeName?: string;\n conditionFields?: Record<string, boolean>;\n}\n\ninterface GenericInputProps<\n TAttribute extends Schema.Attribute.AnyAttribute = Schema.Attribute.AnyAttribute,\n> {\n attribute?: TAttribute;\n autoComplete?: string;\n customInputs?: Record<string, React.ComponentType<CustomInputProps<TAttribute>>>;\n description?: TranslationMessage;\n disabled?: boolean;\n error?: string | TranslationMessage;\n intlLabel: TranslationMessage;\n labelAction?: React.ReactNode;\n name: string;\n onChange: (\n payload: {\n target: {\n name: string;\n value: Schema.Attribute.Value<TAttribute>;\n type?: string;\n };\n },\n shouldSetInitialValue?: boolean\n ) => void;\n onDelete?: () => void;\n options?: InputOption[];\n placeholder?: TranslationMessage;\n required?: boolean;\n step?: number;\n type: string;\n // TODO: The value depends on the input type, too complicated to handle all cases here\n value?: Schema.Attribute.Value<TAttribute>;\n isNullable?: boolean;\n autoFocus?: boolean;\n attributeName?: string;\n conditionFields?: Record<string, boolean>;\n}\n\nconst GenericInput = ({\n autoComplete,\n customInputs,\n description,\n disabled,\n intlLabel,\n labelAction,\n error,\n name,\n onChange,\n onDelete,\n options = [],\n placeholder,\n required,\n step,\n type,\n value: defaultValue,\n isNullable,\n autoFocus,\n attribute,\n attributeName,\n conditionFields,\n ...rest\n}: GenericInputProps) => {\n const { formatMessage } = useIntl();\n\n // TODO: Workaround to get the field hint values if they exist on the type\n const getFieldHintValue = (\n attribute?: Schema.Attribute.AnyAttribute,\n key?: keyof FieldSchema\n ) => {\n if (!attribute) return;\n\n if (key === 'minLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'maxLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'max' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'min' && key in attribute) {\n return attribute[key];\n }\n };\n\n const { hint } = useFieldHint({\n description,\n fieldSchema: {\n minLength: getFieldHintValue(attribute, 'minLength'),\n maxLength: getFieldHintValue(attribute, 'maxLength'),\n max: getFieldHintValue(attribute, 'max'),\n min: getFieldHintValue(attribute, 'min'),\n },\n type: attribute?.type || type,\n });\n\n const [showPassword, setShowPassword] = React.useState(false);\n\n const CustomInput = customInputs ? customInputs[type] : null;\n\n // the API always returns null, which throws an error in React,\n // therefore we cast this case to undefined\n const value = defaultValue ?? undefined;\n\n /*\n TODO: ideally we should pass in `defaultValue` and `value` for\n inputs, in order to make them controlled components. This variable\n acts as a fallback for now, to prevent React errors in devopment mode\n\n See: https://github.com/strapi/strapi/pull/12861\n */\n const valueWithEmptyStringFallback = value ?? '';\n\n function getErrorMessage(error: string | TranslationMessage | undefined) {\n if (!error) {\n return null;\n }\n\n if (typeof error === 'string') {\n return formatMessage({ id: error, defaultMessage: error });\n }\n\n const values = {\n ...error.values,\n };\n\n return formatMessage(\n {\n id: error.id,\n defaultMessage: error?.defaultMessage ?? error.id,\n },\n values\n );\n }\n\n const errorMessage = getErrorMessage(error) ?? undefined;\n\n if (CustomInput) {\n return (\n <CustomInput\n {...rest}\n attribute={attribute}\n description={description}\n hint={hint}\n disabled={disabled}\n intlLabel={intlLabel}\n labelAction={labelAction}\n error={errorMessage || ''}\n name={name}\n onChange={onChange}\n onDelete={onDelete}\n options={options}\n required={required}\n placeholder={placeholder}\n type={type}\n value={value}\n autoFocus={autoFocus}\n attributeName={attributeName}\n conditionFields={conditionFields}\n />\n );\n }\n\n const label = intlLabel.id\n ? formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { ...intlLabel.values }\n )\n : name;\n\n const formattedPlaceholder = placeholder\n ? formatMessage(\n { id: placeholder.id, defaultMessage: placeholder.defaultMessage },\n { ...placeholder.values }\n )\n : '';\n\n const getComponent = () => {\n switch (type) {\n case 'json': {\n return (\n <JSONInput\n value={value}\n disabled={disabled}\n onChange={(json) => {\n // Default to null when the field is not required and there is no input value\n const value =\n attribute && 'required' in attribute && !attribute?.required && !json.length\n ? null\n : json;\n onChange({ target: { name, value } }, false);\n }}\n minHeight=\"25.2rem\"\n maxHeight=\"50.4rem\"\n />\n );\n }\n case 'bool': {\n return (\n <Toggle\n checked={defaultValue === null ? null : defaultValue || false}\n disabled={disabled}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.checked } });\n }}\n />\n );\n }\n case 'checkbox': {\n return (\n <Checkbox\n disabled={disabled}\n onCheckedChange={(value) => {\n onChange({ target: { name, value } });\n }}\n checked={Boolean(value)}\n >\n {label}\n </Checkbox>\n );\n }\n case 'datetime': {\n const dateValue = parseDateValue(value);\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n // check if date is not null or undefined\n const formattedDate = date ? date.toISOString() : null;\n\n onChange({ target: { name, value: formattedDate, type } });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'date': {\n const dateValue = parseDateValue(value);\n return (\n <DatePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n onChange({\n target: {\n name,\n value: date ? formatISO(date, { representation: 'date' }) : null,\n type,\n },\n });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'number': {\n return (\n <NumberInput\n disabled={disabled}\n onValueChange={(value) => {\n onChange({ target: { name, value, type } });\n }}\n placeholder={formattedPlaceholder}\n step={step}\n value={value}\n autoFocus={autoFocus}\n />\n );\n }\n case 'email': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"email\"\n value={valueWithEmptyStringFallback}\n autoFocus={autoFocus}\n />\n );\n }\n case 'timestamp':\n case 'text':\n case 'string': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"text\"\n value={valueWithEmptyStringFallback}\n autoFocus={autoFocus}\n />\n );\n }\n case 'password': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n endAction={\n <button\n aria-label={formatMessage({\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n })}\n onClick={() => {\n setShowPassword((prev) => !prev);\n }}\n style={{\n border: 'none',\n padding: 0,\n background: 'transparent',\n }}\n type=\"button\"\n >\n {showPassword ? <Eye fill=\"neutral500\" /> : <EyeStriked fill=\"neutral500\" />}\n </button>\n }\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type={showPassword ? 'text' : 'password'}\n value={valueWithEmptyStringFallback}\n />\n );\n }\n case 'select': {\n return (\n <SingleSelect\n disabled={disabled}\n onChange={(value) => {\n onChange({ target: { name, value, type: 'select' } });\n }}\n placeholder={formattedPlaceholder}\n value={value}\n >\n {options.map(({ metadatas: { intlLabel, disabled, hidden }, key, value }) => {\n return (\n <SingleSelectOption key={key} value={value} disabled={disabled} hidden={hidden}>\n {formatMessage(intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n }\n case 'textarea': {\n return (\n <Textarea\n disabled={disabled}\n onChange={(event) => onChange({ target: { name, value: event.target.value, type } })}\n placeholder={formattedPlaceholder}\n value={valueWithEmptyStringFallback}\n />\n );\n }\n case 'time': {\n const formattedValue = handleTimeChange({ value, onChange, name, type });\n\n return (\n <TimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(time) => handleTimeChangeEvent(onChange, name, type, time)}\n onClear={() => handleTimeChangeEvent(onChange, name, type, undefined)}\n value={formattedValue}\n />\n );\n }\n default: {\n /**\n * If there's no component for the given type, we return a disabled text input\n * showing a \"Not supported\" title to illustrate the issue.\n */\n return <TextInput disabled placeholder=\"Not supported\" type=\"text\" value=\"\" />;\n }\n }\n };\n\n return (\n <Field.Root error={errorMessage} name={name} hint={hint} required={required}>\n {type !== 'checkbox' ? <Field.Label action={labelAction}>{label}</Field.Label> : null}\n {getComponent()}\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\ntype FieldSchema = {\n minLength?: number | string;\n maxLength?: number | string;\n max?: number | string;\n min?: number | string;\n};\ninterface UseFieldHintProps {\n description?: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n fieldSchema?: FieldSchema;\n type?: string;\n}\n\n/**\n * @description\n * A hook for generating the hint for a field\n */\nconst useFieldHint = ({ description, fieldSchema, type }: UseFieldHintProps) => {\n const { formatMessage } = useIntl();\n\n const buildDescription = () =>\n description?.id\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n\n const buildHint = () => {\n const { maximum, minimum } = getMinMax(fieldSchema);\n const units = getFieldUnits({\n type,\n minimum,\n maximum,\n });\n\n const minIsNumber = typeof minimum === 'number';\n const maxIsNumber = typeof maximum === 'number';\n const hasMinAndMax = maxIsNumber && minIsNumber;\n const hasMinOrMax = maxIsNumber || minIsNumber;\n\n if (!description?.id && !hasMinOrMax) {\n return '';\n }\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: buildDescription(),\n unit: units?.message && hasMinOrMax ? formatMessage(units.message, units.values) : null,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: hasMinOrMax ? <br /> : null,\n }\n );\n };\n\n return { hint: buildHint() };\n};\n\nconst getFieldUnits = ({\n type,\n minimum,\n maximum,\n}: {\n type?: string;\n minimum?: number;\n maximum?: number;\n}) => {\n if (type && ['biginteger', 'integer', 'number'].includes(type)) {\n return {};\n }\n const maxValue = Math.max(minimum || 0, maximum || 0);\n\n return {\n message: {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n values: {\n maxValue,\n },\n };\n};\n\nconst getMinMax = (fieldSchema?: FieldSchema) => {\n if (!fieldSchema) {\n return { maximum: undefined, minimum: undefined };\n }\n\n const { minLength, maxLength, max, min } = fieldSchema;\n\n let minimum;\n let maximum;\n\n const parsedMin = Number(min);\n const parsedMinLength = Number(minLength);\n\n if (!Number.isNaN(parsedMin)) {\n minimum = parsedMin;\n } else if (!Number.isNaN(parsedMinLength)) {\n minimum = parsedMinLength;\n }\n\n const parsedMax = Number(max);\n const parsedMaxLength = Number(maxLength);\n\n if (!Number.isNaN(parsedMax)) {\n maximum = parsedMax;\n } else if (!Number.isNaN(parsedMaxLength)) {\n maximum = parsedMaxLength;\n }\n\n return { maximum, minimum };\n};\n\n/**\n * we've memoized this component because we use a context to store all the data in our form in the content-manager.\n * This then causes _every_ component to re-render because there are no selects incurring performance issues\n * in content-types as the content-type gets more complicated.\n */\nconst MemoizedGenericInput = React.memo(GenericInput, isEqual);\n\nexport type { GenericInputProps, CustomInputProps };\nexport { MemoizedGenericInput as GenericInput };\n"],"names":["GenericInput","autoComplete","customInputs","description","disabled","intlLabel","labelAction","error","name","onChange","onDelete","options","placeholder","required","step","type","value","defaultValue","isNullable","autoFocus","attribute","attributeName","conditionFields","rest","formatMessage","useIntl","getFieldHintValue","key","hint","useFieldHint","fieldSchema","minLength","maxLength","max","min","showPassword","setShowPassword","React","useState","CustomInput","undefined","valueWithEmptyStringFallback","getErrorMessage","id","defaultMessage","values","errorMessage","_jsx","label","formattedPlaceholder","getComponent","JSONInput","json","length","target","minHeight","maxHeight","Toggle","checked","offLabel","onLabel","e","Checkbox","onCheckedChange","Boolean","dateValue","parseDateValue","DateTimePicker","clearLabel","date","formattedDate","toISOString","onClear","DatePicker","formatISO","representation","NumberInput","onValueChange","TextInput","endAction","button","aria-label","onClick","prev","style","border","padding","background","Eye","fill","EyeStriked","SingleSelect","map","metadatas","hidden","SingleSelectOption","Textarea","event","formattedValue","handleTimeChange","TimePicker","time","handleTimeChangeEvent","_jsxs","Field","Root","Label","action","Error","Hint","buildDescription","buildHint","maximum","minimum","getMinMax","units","getFieldUnits","minIsNumber","maxIsNumber","hasMinAndMax","hasMinOrMax","unit","message","divider","br","includes","maxValue","Math","parsedMin","Number","parsedMinLength","isNaN","parsedMax","parsedMaxLength","MemoizedGenericInput","memo","isEqual"],"mappings":"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"}
@@ -8,7 +8,7 @@ import { useIntl } from 'react-intl';
8
8
  import { parseDateValue } from '../utils/parseDateValue.mjs';
9
9
  import { handleTimeChange, handleTimeChangeEvent } from '../utils/timeFormat.mjs';
10
10
 
11
- const GenericInput = ({ autoComplete, customInputs, description, disabled, intlLabel, labelAction, error, name, onChange, options = [], placeholder, required, step, type, value: defaultValue, isNullable, autoFocus, attribute, ...rest })=>{
11
+ const GenericInput = ({ autoComplete, customInputs, description, disabled, intlLabel, labelAction, error, name, onChange, onDelete, options = [], placeholder, required, step, type, value: defaultValue, isNullable, autoFocus, attribute, attributeName, conditionFields, ...rest })=>{
12
12
  const { formatMessage } = useIntl();
13
13
  // TODO: Workaround to get the field hint values if they exist on the type
14
14
  const getFieldHintValue = (attribute, key)=>{
@@ -79,12 +79,15 @@ const GenericInput = ({ autoComplete, customInputs, description, disabled, intlL
79
79
  error: errorMessage || '',
80
80
  name: name,
81
81
  onChange: onChange,
82
+ onDelete: onDelete,
82
83
  options: options,
83
84
  required: required,
84
85
  placeholder: placeholder,
85
86
  type: type,
86
87
  value: value,
87
- autoFocus: autoFocus
88
+ autoFocus: autoFocus,
89
+ attributeName: attributeName,
90
+ conditionFields: conditionFields
88
91
  });
89
92
  }
90
93
  const label = intlLabel.id ? formatMessage({
@@ -1 +1 @@
1
- {"version":3,"file":"GenericInputs.mjs","sources":["../../../admin/src/components/GenericInputs.tsx"],"sourcesContent":["/**\n * TODO: we should be using the FormRenderer from the admin to do this,\n * but the CTB has no tests or types, so we can't refactor it safely.\n * So we're just adding this to the tech debt.\n */\n\nimport * as React from 'react';\n\nimport {\n Checkbox,\n DatePicker,\n DateTimePicker,\n Field,\n JSONInput,\n NumberInput,\n SingleSelect,\n SingleSelectOption,\n Textarea,\n TextInput,\n TimePicker,\n Toggle,\n} from '@strapi/design-system';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport formatISO from 'date-fns/formatISO';\nimport isEqual from 'lodash/isEqual';\nimport { type MessageDescriptor, type PrimitiveType, useIntl } from 'react-intl';\n\nimport { parseDateValue } from '../utils/parseDateValue';\nimport { handleTimeChange, handleTimeChangeEvent } from '../utils/timeFormat';\n\nimport type { Schema } from '@strapi/types';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\ninterface InputOption {\n metadatas: {\n intlLabel: TranslationMessage;\n disabled: boolean;\n hidden: boolean;\n };\n key: string;\n value: string;\n}\n\ninterface CustomInputProps<TAttribute extends Schema.Attribute.AnyAttribute>\n extends Omit<GenericInputProps<TAttribute>, 'customInputs'> {\n ref?: React.Ref<HTMLElement>;\n hint?: string | React.JSX.Element | (string | React.JSX.Element)[];\n}\n\ninterface GenericInputProps<\n TAttribute extends Schema.Attribute.AnyAttribute = Schema.Attribute.AnyAttribute,\n> {\n attribute?: TAttribute;\n autoComplete?: string;\n customInputs?: Record<string, React.ComponentType<CustomInputProps<TAttribute>>>;\n description?: TranslationMessage;\n disabled?: boolean;\n error?: string | TranslationMessage;\n intlLabel: TranslationMessage;\n labelAction?: React.ReactNode;\n name: string;\n onChange: (\n payload: {\n target: {\n name: string;\n value: Schema.Attribute.Value<TAttribute>;\n type?: string;\n };\n },\n shouldSetInitialValue?: boolean\n ) => void;\n options?: InputOption[];\n placeholder?: TranslationMessage;\n required?: boolean;\n step?: number;\n type: string;\n // TODO: The value depends on the input type, too complicated to handle all cases here\n value?: Schema.Attribute.Value<TAttribute>;\n isNullable?: boolean;\n autoFocus?: boolean;\n}\n\nconst GenericInput = ({\n autoComplete,\n customInputs,\n description,\n disabled,\n intlLabel,\n labelAction,\n error,\n name,\n onChange,\n options = [],\n placeholder,\n required,\n step,\n type,\n value: defaultValue,\n isNullable,\n autoFocus,\n attribute,\n ...rest\n}: GenericInputProps) => {\n const { formatMessage } = useIntl();\n\n // TODO: Workaround to get the field hint values if they exist on the type\n const getFieldHintValue = (\n attribute?: Schema.Attribute.AnyAttribute,\n key?: keyof FieldSchema\n ) => {\n if (!attribute) return;\n\n if (key === 'minLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'maxLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'max' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'min' && key in attribute) {\n return attribute[key];\n }\n };\n\n const { hint } = useFieldHint({\n description,\n fieldSchema: {\n minLength: getFieldHintValue(attribute, 'minLength'),\n maxLength: getFieldHintValue(attribute, 'maxLength'),\n max: getFieldHintValue(attribute, 'max'),\n min: getFieldHintValue(attribute, 'min'),\n },\n type: attribute?.type || type,\n });\n\n const [showPassword, setShowPassword] = React.useState(false);\n\n const CustomInput = customInputs ? customInputs[type] : null;\n\n // the API always returns null, which throws an error in React,\n // therefore we cast this case to undefined\n const value = defaultValue ?? undefined;\n\n /*\n TODO: ideally we should pass in `defaultValue` and `value` for\n inputs, in order to make them controlled components. This variable\n acts as a fallback for now, to prevent React errors in devopment mode\n\n See: https://github.com/strapi/strapi/pull/12861\n */\n const valueWithEmptyStringFallback = value ?? '';\n\n function getErrorMessage(error: string | TranslationMessage | undefined) {\n if (!error) {\n return null;\n }\n\n if (typeof error === 'string') {\n return formatMessage({ id: error, defaultMessage: error });\n }\n\n const values = {\n ...error.values,\n };\n\n return formatMessage(\n {\n id: error.id,\n defaultMessage: error?.defaultMessage ?? error.id,\n },\n values\n );\n }\n\n const errorMessage = getErrorMessage(error) ?? undefined;\n\n if (CustomInput) {\n return (\n <CustomInput\n {...rest}\n attribute={attribute}\n description={description}\n hint={hint}\n disabled={disabled}\n intlLabel={intlLabel}\n labelAction={labelAction}\n error={errorMessage || ''}\n name={name}\n onChange={onChange}\n options={options}\n required={required}\n placeholder={placeholder}\n type={type}\n value={value}\n autoFocus={autoFocus}\n />\n );\n }\n\n const label = intlLabel.id\n ? formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { ...intlLabel.values }\n )\n : name;\n\n const formattedPlaceholder = placeholder\n ? formatMessage(\n { id: placeholder.id, defaultMessage: placeholder.defaultMessage },\n { ...placeholder.values }\n )\n : '';\n\n const getComponent = () => {\n switch (type) {\n case 'json': {\n return (\n <JSONInput\n value={value}\n disabled={disabled}\n onChange={(json) => {\n // Default to null when the field is not required and there is no input value\n const value =\n attribute && 'required' in attribute && !attribute?.required && !json.length\n ? null\n : json;\n onChange({ target: { name, value } }, false);\n }}\n minHeight=\"25.2rem\"\n maxHeight=\"50.4rem\"\n />\n );\n }\n case 'bool': {\n return (\n <Toggle\n checked={defaultValue === null ? null : defaultValue || false}\n disabled={disabled}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.checked } });\n }}\n />\n );\n }\n case 'checkbox': {\n return (\n <Checkbox\n disabled={disabled}\n onCheckedChange={(value) => {\n onChange({ target: { name, value } });\n }}\n checked={Boolean(value)}\n >\n {label}\n </Checkbox>\n );\n }\n case 'datetime': {\n const dateValue = parseDateValue(value);\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n // check if date is not null or undefined\n const formattedDate = date ? date.toISOString() : null;\n\n onChange({ target: { name, value: formattedDate, type } });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'date': {\n const dateValue = parseDateValue(value);\n return (\n <DatePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n onChange({\n target: {\n name,\n value: date ? formatISO(date, { representation: 'date' }) : null,\n type,\n },\n });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'number': {\n return (\n <NumberInput\n disabled={disabled}\n onValueChange={(value) => {\n onChange({ target: { name, value, type } });\n }}\n placeholder={formattedPlaceholder}\n step={step}\n value={value}\n autoFocus={autoFocus}\n />\n );\n }\n case 'email': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"email\"\n value={valueWithEmptyStringFallback}\n autoFocus={autoFocus}\n />\n );\n }\n case 'timestamp':\n case 'text':\n case 'string': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"text\"\n value={valueWithEmptyStringFallback}\n autoFocus={autoFocus}\n />\n );\n }\n case 'password': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n endAction={\n <button\n aria-label={formatMessage({\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n })}\n onClick={() => {\n setShowPassword((prev) => !prev);\n }}\n style={{\n border: 'none',\n padding: 0,\n background: 'transparent',\n }}\n type=\"button\"\n >\n {showPassword ? <Eye fill=\"neutral500\" /> : <EyeStriked fill=\"neutral500\" />}\n </button>\n }\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type={showPassword ? 'text' : 'password'}\n value={valueWithEmptyStringFallback}\n />\n );\n }\n case 'select': {\n return (\n <SingleSelect\n disabled={disabled}\n onChange={(value) => {\n onChange({ target: { name, value, type: 'select' } });\n }}\n placeholder={formattedPlaceholder}\n value={value}\n >\n {options.map(({ metadatas: { intlLabel, disabled, hidden }, key, value }) => {\n return (\n <SingleSelectOption key={key} value={value} disabled={disabled} hidden={hidden}>\n {formatMessage(intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n }\n case 'textarea': {\n return (\n <Textarea\n disabled={disabled}\n onChange={(event) => onChange({ target: { name, value: event.target.value, type } })}\n placeholder={formattedPlaceholder}\n value={valueWithEmptyStringFallback}\n />\n );\n }\n case 'time': {\n const formattedValue = handleTimeChange({ value, onChange, name, type });\n\n return (\n <TimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(time) => handleTimeChangeEvent(onChange, name, type, time)}\n onClear={() => handleTimeChangeEvent(onChange, name, type, undefined)}\n value={formattedValue}\n />\n );\n }\n default: {\n /**\n * If there's no component for the given type, we return a disabled text input\n * showing a \"Not supported\" title to illustrate the issue.\n */\n return <TextInput disabled placeholder=\"Not supported\" type=\"text\" value=\"\" />;\n }\n }\n };\n\n return (\n <Field.Root error={errorMessage} name={name} hint={hint} required={required}>\n {type !== 'checkbox' ? <Field.Label action={labelAction}>{label}</Field.Label> : null}\n {getComponent()}\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\ntype FieldSchema = {\n minLength?: number | string;\n maxLength?: number | string;\n max?: number | string;\n min?: number | string;\n};\ninterface UseFieldHintProps {\n description?: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n fieldSchema?: FieldSchema;\n type?: string;\n}\n\n/**\n * @description\n * A hook for generating the hint for a field\n */\nconst useFieldHint = ({ description, fieldSchema, type }: UseFieldHintProps) => {\n const { formatMessage } = useIntl();\n\n const buildDescription = () =>\n description?.id\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n\n const buildHint = () => {\n const { maximum, minimum } = getMinMax(fieldSchema);\n const units = getFieldUnits({\n type,\n minimum,\n maximum,\n });\n\n const minIsNumber = typeof minimum === 'number';\n const maxIsNumber = typeof maximum === 'number';\n const hasMinAndMax = maxIsNumber && minIsNumber;\n const hasMinOrMax = maxIsNumber || minIsNumber;\n\n if (!description?.id && !hasMinOrMax) {\n return '';\n }\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: buildDescription(),\n unit: units?.message && hasMinOrMax ? formatMessage(units.message, units.values) : null,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: hasMinOrMax ? <br /> : null,\n }\n );\n };\n\n return { hint: buildHint() };\n};\n\nconst getFieldUnits = ({\n type,\n minimum,\n maximum,\n}: {\n type?: string;\n minimum?: number;\n maximum?: number;\n}) => {\n if (type && ['biginteger', 'integer', 'number'].includes(type)) {\n return {};\n }\n const maxValue = Math.max(minimum || 0, maximum || 0);\n\n return {\n message: {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n values: {\n maxValue,\n },\n };\n};\n\nconst getMinMax = (fieldSchema?: FieldSchema) => {\n if (!fieldSchema) {\n return { maximum: undefined, minimum: undefined };\n }\n\n const { minLength, maxLength, max, min } = fieldSchema;\n\n let minimum;\n let maximum;\n\n const parsedMin = Number(min);\n const parsedMinLength = Number(minLength);\n\n if (!Number.isNaN(parsedMin)) {\n minimum = parsedMin;\n } else if (!Number.isNaN(parsedMinLength)) {\n minimum = parsedMinLength;\n }\n\n const parsedMax = Number(max);\n const parsedMaxLength = Number(maxLength);\n\n if (!Number.isNaN(parsedMax)) {\n maximum = parsedMax;\n } else if (!Number.isNaN(parsedMaxLength)) {\n maximum = parsedMaxLength;\n }\n\n return { maximum, minimum };\n};\n\n/**\n * we've memoized this component because we use a context to store all the data in our form in the content-manager.\n * This then causes _every_ component to re-render because there are no selects incurring performance issues\n * in content-types as the content-type gets more complicated.\n */\nconst MemoizedGenericInput = React.memo(GenericInput, isEqual);\n\nexport type { GenericInputProps, CustomInputProps };\nexport { MemoizedGenericInput as GenericInput };\n"],"names":["GenericInput","autoComplete","customInputs","description","disabled","intlLabel","labelAction","error","name","onChange","options","placeholder","required","step","type","value","defaultValue","isNullable","autoFocus","attribute","rest","formatMessage","useIntl","getFieldHintValue","key","hint","useFieldHint","fieldSchema","minLength","maxLength","max","min","showPassword","setShowPassword","React","useState","CustomInput","undefined","valueWithEmptyStringFallback","getErrorMessage","id","defaultMessage","values","errorMessage","_jsx","label","formattedPlaceholder","getComponent","JSONInput","json","length","target","minHeight","maxHeight","Toggle","checked","offLabel","onLabel","e","Checkbox","onCheckedChange","Boolean","dateValue","parseDateValue","DateTimePicker","clearLabel","date","formattedDate","toISOString","onClear","DatePicker","formatISO","representation","NumberInput","onValueChange","TextInput","endAction","button","aria-label","onClick","prev","style","border","padding","background","Eye","fill","EyeStriked","SingleSelect","map","metadatas","hidden","SingleSelectOption","Textarea","event","formattedValue","handleTimeChange","TimePicker","time","handleTimeChangeEvent","_jsxs","Field","Root","Label","action","Error","Hint","buildDescription","buildHint","maximum","minimum","getMinMax","units","getFieldUnits","minIsNumber","maxIsNumber","hasMinAndMax","hasMinOrMax","unit","message","divider","br","includes","maxValue","Math","parsedMin","Number","parsedMinLength","isNaN","parsedMax","parsedMaxLength","MemoizedGenericInput","memo","isEqual"],"mappings":"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"}
1
+ {"version":3,"file":"GenericInputs.mjs","sources":["../../../admin/src/components/GenericInputs.tsx"],"sourcesContent":["/**\n * TODO: we should be using the FormRenderer from the admin to do this,\n * but the CTB has no tests or types, so we can't refactor it safely.\n * So we're just adding this to the tech debt.\n */\n\nimport * as React from 'react';\n\nimport {\n Checkbox,\n DatePicker,\n DateTimePicker,\n Field,\n JSONInput,\n NumberInput,\n SingleSelect,\n SingleSelectOption,\n Textarea,\n TextInput,\n TimePicker,\n Toggle,\n} from '@strapi/design-system';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport formatISO from 'date-fns/formatISO';\nimport isEqual from 'lodash/isEqual';\nimport { type MessageDescriptor, type PrimitiveType, useIntl } from 'react-intl';\n\nimport { parseDateValue } from '../utils/parseDateValue';\nimport { handleTimeChange, handleTimeChangeEvent } from '../utils/timeFormat';\n\nimport type { Schema } from '@strapi/types';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\ninterface InputOption {\n metadatas: {\n intlLabel: TranslationMessage;\n disabled: boolean;\n hidden: boolean;\n };\n key: string;\n value: string;\n}\n\ninterface CustomInputProps<\n TAttribute extends Schema.Attribute.AnyAttribute = Schema.Attribute.AnyAttribute,\n> {\n attribute?: TAttribute;\n autoComplete?: string;\n description?: TranslationMessage;\n disabled?: boolean;\n error?: string;\n hint?: string | React.JSX.Element | (string | React.JSX.Element)[];\n intlLabel: TranslationMessage;\n labelAction?: React.ReactNode;\n name: string;\n onChange: (\n payload: {\n target: {\n name: string;\n value: Schema.Attribute.Value<TAttribute>;\n type?: string;\n };\n },\n shouldSetInitialValue?: boolean\n ) => void;\n onDelete?: () => void;\n options?: InputOption[];\n placeholder?: TranslationMessage;\n required?: boolean;\n step?: number;\n type: string;\n value?: Schema.Attribute.Value<TAttribute>;\n autoFocus?: boolean;\n attributeName?: string;\n conditionFields?: Record<string, boolean>;\n}\n\ninterface GenericInputProps<\n TAttribute extends Schema.Attribute.AnyAttribute = Schema.Attribute.AnyAttribute,\n> {\n attribute?: TAttribute;\n autoComplete?: string;\n customInputs?: Record<string, React.ComponentType<CustomInputProps<TAttribute>>>;\n description?: TranslationMessage;\n disabled?: boolean;\n error?: string | TranslationMessage;\n intlLabel: TranslationMessage;\n labelAction?: React.ReactNode;\n name: string;\n onChange: (\n payload: {\n target: {\n name: string;\n value: Schema.Attribute.Value<TAttribute>;\n type?: string;\n };\n },\n shouldSetInitialValue?: boolean\n ) => void;\n onDelete?: () => void;\n options?: InputOption[];\n placeholder?: TranslationMessage;\n required?: boolean;\n step?: number;\n type: string;\n // TODO: The value depends on the input type, too complicated to handle all cases here\n value?: Schema.Attribute.Value<TAttribute>;\n isNullable?: boolean;\n autoFocus?: boolean;\n attributeName?: string;\n conditionFields?: Record<string, boolean>;\n}\n\nconst GenericInput = ({\n autoComplete,\n customInputs,\n description,\n disabled,\n intlLabel,\n labelAction,\n error,\n name,\n onChange,\n onDelete,\n options = [],\n placeholder,\n required,\n step,\n type,\n value: defaultValue,\n isNullable,\n autoFocus,\n attribute,\n attributeName,\n conditionFields,\n ...rest\n}: GenericInputProps) => {\n const { formatMessage } = useIntl();\n\n // TODO: Workaround to get the field hint values if they exist on the type\n const getFieldHintValue = (\n attribute?: Schema.Attribute.AnyAttribute,\n key?: keyof FieldSchema\n ) => {\n if (!attribute) return;\n\n if (key === 'minLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'maxLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'max' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'min' && key in attribute) {\n return attribute[key];\n }\n };\n\n const { hint } = useFieldHint({\n description,\n fieldSchema: {\n minLength: getFieldHintValue(attribute, 'minLength'),\n maxLength: getFieldHintValue(attribute, 'maxLength'),\n max: getFieldHintValue(attribute, 'max'),\n min: getFieldHintValue(attribute, 'min'),\n },\n type: attribute?.type || type,\n });\n\n const [showPassword, setShowPassword] = React.useState(false);\n\n const CustomInput = customInputs ? customInputs[type] : null;\n\n // the API always returns null, which throws an error in React,\n // therefore we cast this case to undefined\n const value = defaultValue ?? undefined;\n\n /*\n TODO: ideally we should pass in `defaultValue` and `value` for\n inputs, in order to make them controlled components. This variable\n acts as a fallback for now, to prevent React errors in devopment mode\n\n See: https://github.com/strapi/strapi/pull/12861\n */\n const valueWithEmptyStringFallback = value ?? '';\n\n function getErrorMessage(error: string | TranslationMessage | undefined) {\n if (!error) {\n return null;\n }\n\n if (typeof error === 'string') {\n return formatMessage({ id: error, defaultMessage: error });\n }\n\n const values = {\n ...error.values,\n };\n\n return formatMessage(\n {\n id: error.id,\n defaultMessage: error?.defaultMessage ?? error.id,\n },\n values\n );\n }\n\n const errorMessage = getErrorMessage(error) ?? undefined;\n\n if (CustomInput) {\n return (\n <CustomInput\n {...rest}\n attribute={attribute}\n description={description}\n hint={hint}\n disabled={disabled}\n intlLabel={intlLabel}\n labelAction={labelAction}\n error={errorMessage || ''}\n name={name}\n onChange={onChange}\n onDelete={onDelete}\n options={options}\n required={required}\n placeholder={placeholder}\n type={type}\n value={value}\n autoFocus={autoFocus}\n attributeName={attributeName}\n conditionFields={conditionFields}\n />\n );\n }\n\n const label = intlLabel.id\n ? formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { ...intlLabel.values }\n )\n : name;\n\n const formattedPlaceholder = placeholder\n ? formatMessage(\n { id: placeholder.id, defaultMessage: placeholder.defaultMessage },\n { ...placeholder.values }\n )\n : '';\n\n const getComponent = () => {\n switch (type) {\n case 'json': {\n return (\n <JSONInput\n value={value}\n disabled={disabled}\n onChange={(json) => {\n // Default to null when the field is not required and there is no input value\n const value =\n attribute && 'required' in attribute && !attribute?.required && !json.length\n ? null\n : json;\n onChange({ target: { name, value } }, false);\n }}\n minHeight=\"25.2rem\"\n maxHeight=\"50.4rem\"\n />\n );\n }\n case 'bool': {\n return (\n <Toggle\n checked={defaultValue === null ? null : defaultValue || false}\n disabled={disabled}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.checked } });\n }}\n />\n );\n }\n case 'checkbox': {\n return (\n <Checkbox\n disabled={disabled}\n onCheckedChange={(value) => {\n onChange({ target: { name, value } });\n }}\n checked={Boolean(value)}\n >\n {label}\n </Checkbox>\n );\n }\n case 'datetime': {\n const dateValue = parseDateValue(value);\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n // check if date is not null or undefined\n const formattedDate = date ? date.toISOString() : null;\n\n onChange({ target: { name, value: formattedDate, type } });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'date': {\n const dateValue = parseDateValue(value);\n return (\n <DatePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n onChange({\n target: {\n name,\n value: date ? formatISO(date, { representation: 'date' }) : null,\n type,\n },\n });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'number': {\n return (\n <NumberInput\n disabled={disabled}\n onValueChange={(value) => {\n onChange({ target: { name, value, type } });\n }}\n placeholder={formattedPlaceholder}\n step={step}\n value={value}\n autoFocus={autoFocus}\n />\n );\n }\n case 'email': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"email\"\n value={valueWithEmptyStringFallback}\n autoFocus={autoFocus}\n />\n );\n }\n case 'timestamp':\n case 'text':\n case 'string': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"text\"\n value={valueWithEmptyStringFallback}\n autoFocus={autoFocus}\n />\n );\n }\n case 'password': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n endAction={\n <button\n aria-label={formatMessage({\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n })}\n onClick={() => {\n setShowPassword((prev) => !prev);\n }}\n style={{\n border: 'none',\n padding: 0,\n background: 'transparent',\n }}\n type=\"button\"\n >\n {showPassword ? <Eye fill=\"neutral500\" /> : <EyeStriked fill=\"neutral500\" />}\n </button>\n }\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type={showPassword ? 'text' : 'password'}\n value={valueWithEmptyStringFallback}\n />\n );\n }\n case 'select': {\n return (\n <SingleSelect\n disabled={disabled}\n onChange={(value) => {\n onChange({ target: { name, value, type: 'select' } });\n }}\n placeholder={formattedPlaceholder}\n value={value}\n >\n {options.map(({ metadatas: { intlLabel, disabled, hidden }, key, value }) => {\n return (\n <SingleSelectOption key={key} value={value} disabled={disabled} hidden={hidden}>\n {formatMessage(intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n }\n case 'textarea': {\n return (\n <Textarea\n disabled={disabled}\n onChange={(event) => onChange({ target: { name, value: event.target.value, type } })}\n placeholder={formattedPlaceholder}\n value={valueWithEmptyStringFallback}\n />\n );\n }\n case 'time': {\n const formattedValue = handleTimeChange({ value, onChange, name, type });\n\n return (\n <TimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(time) => handleTimeChangeEvent(onChange, name, type, time)}\n onClear={() => handleTimeChangeEvent(onChange, name, type, undefined)}\n value={formattedValue}\n />\n );\n }\n default: {\n /**\n * If there's no component for the given type, we return a disabled text input\n * showing a \"Not supported\" title to illustrate the issue.\n */\n return <TextInput disabled placeholder=\"Not supported\" type=\"text\" value=\"\" />;\n }\n }\n };\n\n return (\n <Field.Root error={errorMessage} name={name} hint={hint} required={required}>\n {type !== 'checkbox' ? <Field.Label action={labelAction}>{label}</Field.Label> : null}\n {getComponent()}\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\ntype FieldSchema = {\n minLength?: number | string;\n maxLength?: number | string;\n max?: number | string;\n min?: number | string;\n};\ninterface UseFieldHintProps {\n description?: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n fieldSchema?: FieldSchema;\n type?: string;\n}\n\n/**\n * @description\n * A hook for generating the hint for a field\n */\nconst useFieldHint = ({ description, fieldSchema, type }: UseFieldHintProps) => {\n const { formatMessage } = useIntl();\n\n const buildDescription = () =>\n description?.id\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n\n const buildHint = () => {\n const { maximum, minimum } = getMinMax(fieldSchema);\n const units = getFieldUnits({\n type,\n minimum,\n maximum,\n });\n\n const minIsNumber = typeof minimum === 'number';\n const maxIsNumber = typeof maximum === 'number';\n const hasMinAndMax = maxIsNumber && minIsNumber;\n const hasMinOrMax = maxIsNumber || minIsNumber;\n\n if (!description?.id && !hasMinOrMax) {\n return '';\n }\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: buildDescription(),\n unit: units?.message && hasMinOrMax ? formatMessage(units.message, units.values) : null,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: hasMinOrMax ? <br /> : null,\n }\n );\n };\n\n return { hint: buildHint() };\n};\n\nconst getFieldUnits = ({\n type,\n minimum,\n maximum,\n}: {\n type?: string;\n minimum?: number;\n maximum?: number;\n}) => {\n if (type && ['biginteger', 'integer', 'number'].includes(type)) {\n return {};\n }\n const maxValue = Math.max(minimum || 0, maximum || 0);\n\n return {\n message: {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n values: {\n maxValue,\n },\n };\n};\n\nconst getMinMax = (fieldSchema?: FieldSchema) => {\n if (!fieldSchema) {\n return { maximum: undefined, minimum: undefined };\n }\n\n const { minLength, maxLength, max, min } = fieldSchema;\n\n let minimum;\n let maximum;\n\n const parsedMin = Number(min);\n const parsedMinLength = Number(minLength);\n\n if (!Number.isNaN(parsedMin)) {\n minimum = parsedMin;\n } else if (!Number.isNaN(parsedMinLength)) {\n minimum = parsedMinLength;\n }\n\n const parsedMax = Number(max);\n const parsedMaxLength = Number(maxLength);\n\n if (!Number.isNaN(parsedMax)) {\n maximum = parsedMax;\n } else if (!Number.isNaN(parsedMaxLength)) {\n maximum = parsedMaxLength;\n }\n\n return { maximum, minimum };\n};\n\n/**\n * we've memoized this component because we use a context to store all the data in our form in the content-manager.\n * This then causes _every_ component to re-render because there are no selects incurring performance issues\n * in content-types as the content-type gets more complicated.\n */\nconst MemoizedGenericInput = React.memo(GenericInput, isEqual);\n\nexport type { GenericInputProps, CustomInputProps };\nexport { MemoizedGenericInput as GenericInput };\n"],"names":["GenericInput","autoComplete","customInputs","description","disabled","intlLabel","labelAction","error","name","onChange","onDelete","options","placeholder","required","step","type","value","defaultValue","isNullable","autoFocus","attribute","attributeName","conditionFields","rest","formatMessage","useIntl","getFieldHintValue","key","hint","useFieldHint","fieldSchema","minLength","maxLength","max","min","showPassword","setShowPassword","React","useState","CustomInput","undefined","valueWithEmptyStringFallback","getErrorMessage","id","defaultMessage","values","errorMessage","_jsx","label","formattedPlaceholder","getComponent","JSONInput","json","length","target","minHeight","maxHeight","Toggle","checked","offLabel","onLabel","e","Checkbox","onCheckedChange","Boolean","dateValue","parseDateValue","DateTimePicker","clearLabel","date","formattedDate","toISOString","onClear","DatePicker","formatISO","representation","NumberInput","onValueChange","TextInput","endAction","button","aria-label","onClick","prev","style","border","padding","background","Eye","fill","EyeStriked","SingleSelect","map","metadatas","hidden","SingleSelectOption","Textarea","event","formattedValue","handleTimeChange","TimePicker","time","handleTimeChangeEvent","_jsxs","Field","Root","Label","action","Error","Hint","buildDescription","buildHint","maximum","minimum","getMinMax","units","getFieldUnits","minIsNumber","maxIsNumber","hasMinAndMax","hasMinOrMax","unit","message","divider","br","includes","maxValue","Math","parsedMin","Number","parsedMinLength","isNaN","parsedMax","parsedMaxLength","MemoizedGenericInput","memo","isEqual"],"mappings":"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"}
@@ -4,6 +4,7 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var designSystem = require('@strapi/design-system');
5
5
  var get = require('lodash/get');
6
6
  var reactIntl = require('react-intl');
7
+ var conditions = require('../utils/conditions.js');
7
8
  var GenericInputs = require('./GenericInputs.js');
8
9
 
9
10
  /* eslint-disable react/no-array-index-key */ const TabForm = ({ form, formErrors, genericInputProps, modifiedData, onChange })=>{
@@ -24,6 +25,11 @@ var GenericInputs = require('./GenericInputs.js');
24
25
  children: formatMessage(section.sectionTitle)
25
26
  })
26
27
  }),
28
+ section.intlLabel && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
29
+ variant: "pi",
30
+ textColor: "neutral600",
31
+ children: formatMessage(section.intlLabel)
32
+ }),
27
33
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
28
34
  gap: 4,
29
35
  children: section.items.map((input, i)=>{
@@ -57,6 +63,88 @@ var GenericInputs = require('./GenericInputs.js');
57
63
  children: /*#__PURE__*/ jsxRuntime.jsx("div", {})
58
64
  }, input.name || key);
59
65
  }
66
+ // Special handling for 'condition-form'
67
+ if (input.type === 'condition-form') {
68
+ const currentCondition = get(modifiedData, input.name);
69
+ // Get all attributes from the content type schema
70
+ const contentTypeAttributes = genericInputProps.contentTypeSchema?.attributes || [];
71
+ if (!genericInputProps.contentTypeSchema) {
72
+ console.warn('contentTypeSchema is undefined, skipping condition form');
73
+ return null;
74
+ }
75
+ // Filter for boolean and enumeration fields only, excluding the current field
76
+ const availableFields = conditions.getAvailableConditionFields(contentTypeAttributes, modifiedData.name);
77
+ const noFieldsMessage = formatMessage({
78
+ id: 'form.attribute.condition.no-fields',
79
+ defaultMessage: 'No boolean or enumeration fields available to set conditions on.'
80
+ });
81
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
82
+ col: input.size || 12,
83
+ direction: "column",
84
+ alignItems: "stretch",
85
+ children: !currentCondition || Object.keys(currentCondition).length === 0 ? /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
86
+ children: [
87
+ currentCondition && Object.keys(currentCondition).length > 0 && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
88
+ variant: "sigma",
89
+ textColor: "neutral800",
90
+ marginBottom: 2,
91
+ children: conditions.formatCondition(currentCondition, availableFields, genericInputProps.attributeName || modifiedData.name)
92
+ }),
93
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
94
+ description: noFieldsMessage,
95
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
96
+ marginTop: currentCondition && Object.keys(currentCondition).length > 0 ? 0 : 4,
97
+ fullWidth: true,
98
+ variant: "secondary",
99
+ onClick: ()=>{
100
+ onChange({
101
+ target: {
102
+ name: input.name,
103
+ value: {
104
+ visible: {
105
+ '==': [
106
+ {
107
+ var: ''
108
+ },
109
+ ''
110
+ ]
111
+ }
112
+ }
113
+ }
114
+ });
115
+ },
116
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx("span", {
117
+ "aria-hidden": true,
118
+ children: "+"
119
+ }),
120
+ disabled: availableFields.length === 0,
121
+ children: formatMessage({
122
+ id: 'form.attribute.condition.apply',
123
+ defaultMessage: 'Apply condition'
124
+ })
125
+ })
126
+ })
127
+ ]
128
+ }) : /*#__PURE__*/ jsxRuntime.jsx(GenericInputs.GenericInput, {
129
+ ...input,
130
+ ...genericInputProps,
131
+ error: errorId,
132
+ onChange: onChange,
133
+ value: value,
134
+ autoFocus: i === 0,
135
+ attributeName: modifiedData.name,
136
+ conditionFields: availableFields,
137
+ onDelete: ()=>{
138
+ onChange({
139
+ target: {
140
+ name: input.name
141
+ }
142
+ });
143
+ }
144
+ })
145
+ }, input.name || key);
146
+ }
147
+ // Default rendering for all other input types
60
148
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
61
149
  col: input.size || 6,
62
150
  direction: "column",