diff --git a/packages/core/strapi/lib/types/core/attributes/common.d.ts b/packages/core/strapi/lib/types/core/attributes/common.d.ts index 44dd6cf27f..44d8281a39 100644 --- a/packages/core/strapi/lib/types/core/attributes/common.d.ts +++ b/packages/core/strapi/lib/types/core/attributes/common.d.ts @@ -29,6 +29,9 @@ export type NonUniqueAttribute = { unique: false }; export type ConfigurableAttribute = { configurable: true }; export type NonConfigurableAttribute = { configurable: false }; +// custom field +export type CustomField = { customField: T, options?: P }; + // min/max export type SetMinMax, U = number> = T; diff --git a/packages/utils/typescript/lib/__tests__/generators/schemas/attributes.test.js b/packages/utils/typescript/lib/__tests__/generators/schemas/attributes.test.js index 22cf45dcba..16debc9829 100644 --- a/packages/utils/typescript/lib/__tests__/generators/schemas/attributes.test.js +++ b/packages/utils/typescript/lib/__tests__/generators/schemas/attributes.test.js @@ -438,6 +438,8 @@ describe('Attributes', () => { }); }); + // TODO custom field + describe('Plugin Options', () => { test('No plugin options', () => { const attribute = {}; diff --git a/packages/utils/typescript/lib/generators/schemas/attributes.js b/packages/utils/typescript/lib/generators/schemas/attributes.js index 0deea58466..0900fa7db6 100644 --- a/packages/utils/typescript/lib/generators/schemas/attributes.js +++ b/packages/utils/typescript/lib/generators/schemas/attributes.js @@ -70,6 +70,22 @@ const getAttributeModifiers = (attribute) => { ); } + // Custom field + if (attribute.customField) { + addImport('CustomField'); + + const customFieldUid = factory.createStringLiteral(attribute.customField); + const typeParams = [customFieldUid]; + + if (attribute.options) { + typeParams.push(toTypeLiteral(attribute.options)); + } + + modifiers.push( + factory.createTypeReferenceNode(factory.createIdentifier('CustomField'), typeParams) + ); + } + // Plugin Options if (!_.isEmpty(attribute.pluginOptions)) { addImport('SetPluginOptions');