@strapi/content-type-builder 5.30.1 → 5.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -288,7 +288,7 @@ const attributeTypes = {
288
288
  return yup__namespace.object(shape);
289
289
  },
290
290
  string (usedAttributeNames, reservedNames) {
291
- const shape = common.createTextShape(usedAttributeNames, reservedNames);
291
+ const shape = common.createStringShape(usedAttributeNames, reservedNames);
292
292
  return yup__namespace.object(shape);
293
293
  },
294
294
  text (usedAttributeNames, reservedNames) {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../../admin/src/components/FormModal/attributes/types.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport uniq from 'lodash/uniq';\nimport * as yup from 'yup';\n\nimport { getRelationType } from '../../../utils/getRelationType';\nimport { getTrad } from '../../../utils/getTrad';\nimport { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue';\n\nimport {\n alreadyUsedAttributeNames,\n createTextShape,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n} from './validation/common';\n\nimport type { Schema } from '@strapi/types';\n\nexport const attributeTypes = {\n date(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n datetime(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n time(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n default(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n biginteger(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/),\n unique: validators.unique(),\n required: validators.required(),\n max: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n min: yup\n .string()\n .nullable()\n .test(isMinSuperiorThanMax<string | null>())\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n };\n\n return yup.object(shape);\n },\n boolean(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n default: yup.boolean().nullable(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n component(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n component: yup.string().required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n },\n decimal(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number(),\n required: validators.required(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n dynamiczone(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n email(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.string().email().nullable(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n enumeration(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n /**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\n const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\n const shape = {\n name: yup\n .string()\n .test(alreadyUsedAttributeNames(usedAttributeNames))\n .test(isNameAllowed(reservedNames))\n .matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n enum: yup\n .array()\n .of(yup.string())\n .min(1, errorsTrads.min.id)\n .test({\n name: 'areEnumValuesUnique',\n message: getTrad('error.validation.enum-duplicate'),\n test(values) {\n if (!values) {\n return false;\n }\n const duplicates = uniq(\n values\n .map(toRegressedEnumValue)\n .filter((value, index, values) => values.indexOf(value) !== index)\n );\n\n return !duplicates.length;\n },\n })\n .test({\n name: 'doesNotHaveEmptyValues',\n message: getTrad('error.validation.enum-empty-string'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return !values.map(toRegressedEnumValue).some((val) => val === '');\n },\n })\n .test({\n name: 'doesMatchRegex',\n message: getTrad('error.validation.enum-regex'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return values\n .map(toRegressedEnumValue)\n .every((value) => GRAPHQL_ENUM_REGEX.test(value));\n },\n }),\n enumName: yup.string().nullable(),\n };\n\n return yup.object(shape);\n },\n float(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n default: yup.number(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n integer(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number().integer(),\n unique: validators.unique(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n json(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n media(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n multiple: yup.boolean(),\n required: validators.required(),\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1)\n .nullable(),\n };\n\n return yup.object(shape);\n },\n password(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n relation(\n usedAttributeNames: Array<string>,\n reservedNames: Array<string>,\n alreadyTakenTargetAttributes: Array<{ name: string }>,\n {\n initialData,\n modifiedData,\n }: {\n initialData: { targetAttribute?: string };\n modifiedData: {\n name?: string;\n relation?: Schema.Attribute.RelationKind.WithTarget;\n targetAttribute?: string;\n };\n }\n ) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n target: yup.string().required(errorsTrads.required.id),\n relation: yup.string().required(),\n type: yup.string().required(),\n targetAttribute: yup.lazy(() => {\n const relationType = getRelationType(modifiedData.relation!, modifiedData.targetAttribute);\n\n if (relationType === 'oneWay' || relationType === 'manyWay') {\n return yup.string().nullable();\n }\n\n const schema = yup.string().test(isNameAllowed(reservedNames));\n const initialForbiddenName = [\n ...alreadyTakenTargetAttributes.map(({ name }) => name),\n modifiedData.name,\n ];\n\n const forbiddenTargetAttributeName = initialForbiddenName.filter(\n (val) => val !== initialData.targetAttribute\n );\n\n return schema\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'forbiddenTargetAttributeName',\n message: getTrad('error.validation.relation.targetAttribute-taken'),\n test(value) {\n if (!value) {\n return false;\n }\n\n return !forbiddenTargetAttributeName.includes(value);\n },\n })\n .required(errorsTrads.required.id);\n }),\n };\n\n return yup.object(shape);\n },\n richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n blocks(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n string(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n text(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n uid(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n};\n"],"names":["attributeTypes","date","usedAttributeNames","reservedNames","shape","name","validators","type","yup","object","datetime","time","default","biginteger","string","nullable","matches","unique","required","max","errorsTrads","regex","id","min","test","isMinSuperiorThanMax","boolean","component","decimal","number","dynamiczone","email","maxLength","minLength","enumeration","GRAPHQL_ENUM_REGEX","alreadyUsedAttributeNames","isNameAllowed","enum","array","of","message","getTrad","values","duplicates","uniq","map","toRegressedEnumValue","filter","value","index","indexOf","length","some","val","every","enumName","float","integer","json","media","multiple","allowedTypes","oneOf","password","relation","alreadyTakenTargetAttributes","initialData","modifiedData","target","targetAttribute","lazy","relationType","getRelationType","schema","initialForbiddenName","forbiddenTargetAttributeName","NAME_REGEX","includes","richtext","blocks","createTextShape","text","uid"],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sources":["../../../../../admin/src/components/FormModal/attributes/types.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport uniq from 'lodash/uniq';\nimport * as yup from 'yup';\n\nimport { getRelationType } from '../../../utils/getRelationType';\nimport { getTrad } from '../../../utils/getTrad';\nimport { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue';\n\nimport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n} from './validation/common';\n\nimport type { Schema } from '@strapi/types';\n\nexport const attributeTypes = {\n date(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n datetime(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n time(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n default(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n biginteger(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/),\n unique: validators.unique(),\n required: validators.required(),\n max: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n min: yup\n .string()\n .nullable()\n .test(isMinSuperiorThanMax<string | null>())\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n };\n\n return yup.object(shape);\n },\n boolean(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n default: yup.boolean().nullable(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n component(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n component: yup.string().required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n },\n decimal(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number(),\n required: validators.required(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n dynamiczone(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n email(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.string().email().nullable(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n enumeration(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n /**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\n const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\n const shape = {\n name: yup\n .string()\n .test(alreadyUsedAttributeNames(usedAttributeNames))\n .test(isNameAllowed(reservedNames))\n .matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n enum: yup\n .array()\n .of(yup.string())\n .min(1, errorsTrads.min.id)\n .test({\n name: 'areEnumValuesUnique',\n message: getTrad('error.validation.enum-duplicate'),\n test(values) {\n if (!values) {\n return false;\n }\n const duplicates = uniq(\n values\n .map(toRegressedEnumValue)\n .filter((value, index, values) => values.indexOf(value) !== index)\n );\n\n return !duplicates.length;\n },\n })\n .test({\n name: 'doesNotHaveEmptyValues',\n message: getTrad('error.validation.enum-empty-string'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return !values.map(toRegressedEnumValue).some((val) => val === '');\n },\n })\n .test({\n name: 'doesMatchRegex',\n message: getTrad('error.validation.enum-regex'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return values\n .map(toRegressedEnumValue)\n .every((value) => GRAPHQL_ENUM_REGEX.test(value));\n },\n }),\n enumName: yup.string().nullable(),\n };\n\n return yup.object(shape);\n },\n float(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n default: yup.number(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n integer(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number().integer(),\n unique: validators.unique(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n json(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n media(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n multiple: yup.boolean(),\n required: validators.required(),\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1)\n .nullable(),\n };\n\n return yup.object(shape);\n },\n password(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n relation(\n usedAttributeNames: Array<string>,\n reservedNames: Array<string>,\n alreadyTakenTargetAttributes: Array<{ name: string }>,\n {\n initialData,\n modifiedData,\n }: {\n initialData: { targetAttribute?: string };\n modifiedData: {\n name?: string;\n relation?: Schema.Attribute.RelationKind.WithTarget;\n targetAttribute?: string;\n };\n }\n ) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n target: yup.string().required(errorsTrads.required.id),\n relation: yup.string().required(),\n type: yup.string().required(),\n targetAttribute: yup.lazy(() => {\n const relationType = getRelationType(modifiedData.relation!, modifiedData.targetAttribute);\n\n if (relationType === 'oneWay' || relationType === 'manyWay') {\n return yup.string().nullable();\n }\n\n const schema = yup.string().test(isNameAllowed(reservedNames));\n const initialForbiddenName = [\n ...alreadyTakenTargetAttributes.map(({ name }) => name),\n modifiedData.name,\n ];\n\n const forbiddenTargetAttributeName = initialForbiddenName.filter(\n (val) => val !== initialData.targetAttribute\n );\n\n return schema\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'forbiddenTargetAttributeName',\n message: getTrad('error.validation.relation.targetAttribute-taken'),\n test(value) {\n if (!value) {\n return false;\n }\n\n return !forbiddenTargetAttributeName.includes(value);\n },\n })\n .required(errorsTrads.required.id);\n }),\n };\n\n return yup.object(shape);\n },\n richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n blocks(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n string(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createStringShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n text(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n uid(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n};\n"],"names":["attributeTypes","date","usedAttributeNames","reservedNames","shape","name","validators","type","yup","object","datetime","time","default","biginteger","string","nullable","matches","unique","required","max","errorsTrads","regex","id","min","test","isMinSuperiorThanMax","boolean","component","decimal","number","dynamiczone","email","maxLength","minLength","enumeration","GRAPHQL_ENUM_REGEX","alreadyUsedAttributeNames","isNameAllowed","enum","array","of","message","getTrad","values","duplicates","uniq","map","toRegressedEnumValue","filter","value","index","indexOf","length","some","val","every","enumName","float","integer","json","media","multiple","allowedTypes","oneOf","password","relation","alreadyTakenTargetAttributes","initialData","modifiedData","target","targetAttribute","lazy","relationType","getRelationType","schema","initialForbiddenName","forbiddenTargetAttributeName","NAME_REGEX","includes","richtext","blocks","createStringShape","text","createTextShape","uid"],"mappings":"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"}
@@ -4,7 +4,7 @@ import * as yup from 'yup';
4
4
  import { getRelationType } from '../../../utils/getRelationType.mjs';
5
5
  import { getTrad } from '../../../utils/getTrad.mjs';
6
6
  import { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue.mjs';
7
- import { validators, isMinSuperiorThanMax, alreadyUsedAttributeNames, isNameAllowed, NAME_REGEX, createTextShape } from './validation/common.mjs';
7
+ import { validators, isMinSuperiorThanMax, alreadyUsedAttributeNames, isNameAllowed, NAME_REGEX, createStringShape, createTextShape } from './validation/common.mjs';
8
8
 
9
9
  const attributeTypes = {
10
10
  date (usedAttributeNames, reservedNames) {
@@ -267,7 +267,7 @@ const attributeTypes = {
267
267
  return yup.object(shape);
268
268
  },
269
269
  string (usedAttributeNames, reservedNames) {
270
- const shape = createTextShape(usedAttributeNames, reservedNames);
270
+ const shape = createStringShape(usedAttributeNames, reservedNames);
271
271
  return yup.object(shape);
272
272
  },
273
273
  text (usedAttributeNames, reservedNames) {
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sources":["../../../../../admin/src/components/FormModal/attributes/types.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport uniq from 'lodash/uniq';\nimport * as yup from 'yup';\n\nimport { getRelationType } from '../../../utils/getRelationType';\nimport { getTrad } from '../../../utils/getTrad';\nimport { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue';\n\nimport {\n alreadyUsedAttributeNames,\n createTextShape,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n} from './validation/common';\n\nimport type { Schema } from '@strapi/types';\n\nexport const attributeTypes = {\n date(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n datetime(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n time(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n default(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n biginteger(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/),\n unique: validators.unique(),\n required: validators.required(),\n max: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n min: yup\n .string()\n .nullable()\n .test(isMinSuperiorThanMax<string | null>())\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n };\n\n return yup.object(shape);\n },\n boolean(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n default: yup.boolean().nullable(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n component(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n component: yup.string().required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n },\n decimal(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number(),\n required: validators.required(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n dynamiczone(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n email(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.string().email().nullable(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n enumeration(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n /**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\n const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\n const shape = {\n name: yup\n .string()\n .test(alreadyUsedAttributeNames(usedAttributeNames))\n .test(isNameAllowed(reservedNames))\n .matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n enum: yup\n .array()\n .of(yup.string())\n .min(1, errorsTrads.min.id)\n .test({\n name: 'areEnumValuesUnique',\n message: getTrad('error.validation.enum-duplicate'),\n test(values) {\n if (!values) {\n return false;\n }\n const duplicates = uniq(\n values\n .map(toRegressedEnumValue)\n .filter((value, index, values) => values.indexOf(value) !== index)\n );\n\n return !duplicates.length;\n },\n })\n .test({\n name: 'doesNotHaveEmptyValues',\n message: getTrad('error.validation.enum-empty-string'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return !values.map(toRegressedEnumValue).some((val) => val === '');\n },\n })\n .test({\n name: 'doesMatchRegex',\n message: getTrad('error.validation.enum-regex'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return values\n .map(toRegressedEnumValue)\n .every((value) => GRAPHQL_ENUM_REGEX.test(value));\n },\n }),\n enumName: yup.string().nullable(),\n };\n\n return yup.object(shape);\n },\n float(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n default: yup.number(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n integer(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number().integer(),\n unique: validators.unique(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n json(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n media(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n multiple: yup.boolean(),\n required: validators.required(),\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1)\n .nullable(),\n };\n\n return yup.object(shape);\n },\n password(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n relation(\n usedAttributeNames: Array<string>,\n reservedNames: Array<string>,\n alreadyTakenTargetAttributes: Array<{ name: string }>,\n {\n initialData,\n modifiedData,\n }: {\n initialData: { targetAttribute?: string };\n modifiedData: {\n name?: string;\n relation?: Schema.Attribute.RelationKind.WithTarget;\n targetAttribute?: string;\n };\n }\n ) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n target: yup.string().required(errorsTrads.required.id),\n relation: yup.string().required(),\n type: yup.string().required(),\n targetAttribute: yup.lazy(() => {\n const relationType = getRelationType(modifiedData.relation!, modifiedData.targetAttribute);\n\n if (relationType === 'oneWay' || relationType === 'manyWay') {\n return yup.string().nullable();\n }\n\n const schema = yup.string().test(isNameAllowed(reservedNames));\n const initialForbiddenName = [\n ...alreadyTakenTargetAttributes.map(({ name }) => name),\n modifiedData.name,\n ];\n\n const forbiddenTargetAttributeName = initialForbiddenName.filter(\n (val) => val !== initialData.targetAttribute\n );\n\n return schema\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'forbiddenTargetAttributeName',\n message: getTrad('error.validation.relation.targetAttribute-taken'),\n test(value) {\n if (!value) {\n return false;\n }\n\n return !forbiddenTargetAttributeName.includes(value);\n },\n })\n .required(errorsTrads.required.id);\n }),\n };\n\n return yup.object(shape);\n },\n richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n blocks(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n string(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n text(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n uid(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n};\n"],"names":["attributeTypes","date","usedAttributeNames","reservedNames","shape","name","validators","type","yup","object","datetime","time","default","biginteger","string","nullable","matches","unique","required","max","errorsTrads","regex","id","min","test","isMinSuperiorThanMax","boolean","component","decimal","number","dynamiczone","email","maxLength","minLength","enumeration","GRAPHQL_ENUM_REGEX","alreadyUsedAttributeNames","isNameAllowed","enum","array","of","message","getTrad","values","duplicates","uniq","map","toRegressedEnumValue","filter","value","index","indexOf","length","some","val","every","enumName","float","integer","json","media","multiple","allowedTypes","oneOf","password","relation","alreadyTakenTargetAttributes","initialData","modifiedData","target","targetAttribute","lazy","relationType","getRelationType","schema","initialForbiddenName","forbiddenTargetAttributeName","NAME_REGEX","includes","richtext","blocks","createTextShape","text","uid"],"mappings":"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"}
1
+ {"version":3,"file":"types.mjs","sources":["../../../../../admin/src/components/FormModal/attributes/types.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport uniq from 'lodash/uniq';\nimport * as yup from 'yup';\n\nimport { getRelationType } from '../../../utils/getRelationType';\nimport { getTrad } from '../../../utils/getTrad';\nimport { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue';\n\nimport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n} from './validation/common';\n\nimport type { Schema } from '@strapi/types';\n\nexport const attributeTypes = {\n date(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n datetime(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n time(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n default(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n biginteger(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/),\n unique: validators.unique(),\n required: validators.required(),\n max: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n min: yup\n .string()\n .nullable()\n .test(isMinSuperiorThanMax<string | null>())\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n };\n\n return yup.object(shape);\n },\n boolean(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n default: yup.boolean().nullable(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n component(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n component: yup.string().required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n },\n decimal(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number(),\n required: validators.required(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n dynamiczone(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n email(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.string().email().nullable(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n enumeration(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n /**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\n const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\n const shape = {\n name: yup\n .string()\n .test(alreadyUsedAttributeNames(usedAttributeNames))\n .test(isNameAllowed(reservedNames))\n .matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n enum: yup\n .array()\n .of(yup.string())\n .min(1, errorsTrads.min.id)\n .test({\n name: 'areEnumValuesUnique',\n message: getTrad('error.validation.enum-duplicate'),\n test(values) {\n if (!values) {\n return false;\n }\n const duplicates = uniq(\n values\n .map(toRegressedEnumValue)\n .filter((value, index, values) => values.indexOf(value) !== index)\n );\n\n return !duplicates.length;\n },\n })\n .test({\n name: 'doesNotHaveEmptyValues',\n message: getTrad('error.validation.enum-empty-string'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return !values.map(toRegressedEnumValue).some((val) => val === '');\n },\n })\n .test({\n name: 'doesMatchRegex',\n message: getTrad('error.validation.enum-regex'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return values\n .map(toRegressedEnumValue)\n .every((value) => GRAPHQL_ENUM_REGEX.test(value));\n },\n }),\n enumName: yup.string().nullable(),\n };\n\n return yup.object(shape);\n },\n float(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n default: yup.number(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n integer(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number().integer(),\n unique: validators.unique(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n json(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n media(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n multiple: yup.boolean(),\n required: validators.required(),\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1)\n .nullable(),\n };\n\n return yup.object(shape);\n },\n password(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n relation(\n usedAttributeNames: Array<string>,\n reservedNames: Array<string>,\n alreadyTakenTargetAttributes: Array<{ name: string }>,\n {\n initialData,\n modifiedData,\n }: {\n initialData: { targetAttribute?: string };\n modifiedData: {\n name?: string;\n relation?: Schema.Attribute.RelationKind.WithTarget;\n targetAttribute?: string;\n };\n }\n ) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n target: yup.string().required(errorsTrads.required.id),\n relation: yup.string().required(),\n type: yup.string().required(),\n targetAttribute: yup.lazy(() => {\n const relationType = getRelationType(modifiedData.relation!, modifiedData.targetAttribute);\n\n if (relationType === 'oneWay' || relationType === 'manyWay') {\n return yup.string().nullable();\n }\n\n const schema = yup.string().test(isNameAllowed(reservedNames));\n const initialForbiddenName = [\n ...alreadyTakenTargetAttributes.map(({ name }) => name),\n modifiedData.name,\n ];\n\n const forbiddenTargetAttributeName = initialForbiddenName.filter(\n (val) => val !== initialData.targetAttribute\n );\n\n return schema\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'forbiddenTargetAttributeName',\n message: getTrad('error.validation.relation.targetAttribute-taken'),\n test(value) {\n if (!value) {\n return false;\n }\n\n return !forbiddenTargetAttributeName.includes(value);\n },\n })\n .required(errorsTrads.required.id);\n }),\n };\n\n return yup.object(shape);\n },\n richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n blocks(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n string(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createStringShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n text(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n uid(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n};\n"],"names":["attributeTypes","date","usedAttributeNames","reservedNames","shape","name","validators","type","yup","object","datetime","time","default","biginteger","string","nullable","matches","unique","required","max","errorsTrads","regex","id","min","test","isMinSuperiorThanMax","boolean","component","decimal","number","dynamiczone","email","maxLength","minLength","enumeration","GRAPHQL_ENUM_REGEX","alreadyUsedAttributeNames","isNameAllowed","enum","array","of","message","getTrad","values","duplicates","uniq","map","toRegressedEnumValue","filter","value","index","indexOf","length","some","val","every","enumName","float","integer","json","media","multiple","allowedTypes","oneOf","password","relation","alreadyTakenTargetAttributes","initialData","modifiedData","target","targetAttribute","lazy","relationType","getRelationType","schema","initialForbiddenName","forbiddenTargetAttributeName","NAME_REGEX","includes","richtext","blocks","createStringShape","text","createTextShape","uid"],"mappings":"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"}
@@ -66,6 +66,7 @@ const validators = {
66
66
  return schema;
67
67
  }).nullable(),
68
68
  maxLength: ()=>yup__namespace.number().integer().positive(getTrad.getTrad('error.validation.positive')).nullable(),
69
+ maxLengthString: ()=>yup__namespace.number().integer().positive(getTrad.getTrad('error.validation.positive')).max(255, 'Maximum length for short text fields is 255 characters').nullable(),
69
70
  minLength: ()=>yup__namespace.number().integer().min(1).when('maxLength', (maxLength, schema)=>{
70
71
  if (maxLength) {
71
72
  return schema.max(maxLength, getTrad.getTrad('error.validation.minSupMax'));
@@ -102,6 +103,29 @@ const createTextShape = (usedAttributeNames, reservedNames)=>{
102
103
  };
103
104
  return shape;
104
105
  };
106
+ const createStringShape = (usedAttributeNames, reservedNames)=>{
107
+ const shape = {
108
+ name: validators.name(usedAttributeNames, reservedNames),
109
+ type: validators.type(),
110
+ default: validators.default(),
111
+ unique: validators.unique(),
112
+ required: validators.required(),
113
+ maxLength: validators.maxLengthString(),
114
+ minLength: validators.minLength(),
115
+ regex: yup__namespace.string().test({
116
+ name: 'isValidRegExpPattern',
117
+ message: getTrad.getTrad('error.validation.regex'),
118
+ test (value) {
119
+ try {
120
+ return new RegExp(value || '') !== null;
121
+ } catch (e) {
122
+ return false;
123
+ }
124
+ }
125
+ }).nullable()
126
+ };
127
+ return shape;
128
+ };
105
129
  const isMinSuperiorThanMax = ()=>({
106
130
  name: 'isMinSuperiorThanMax',
107
131
  message: getTrad.getTrad('error.validation.minSupMax'),
@@ -122,6 +146,7 @@ const isMinSuperiorThanMax = ()=>({
122
146
 
123
147
  exports.NAME_REGEX = NAME_REGEX;
124
148
  exports.alreadyUsedAttributeNames = alreadyUsedAttributeNames;
149
+ exports.createStringShape = createStringShape;
125
150
  exports.createTextShape = createTextShape;
126
151
  exports.isMinSuperiorThanMax = isMinSuperiorThanMax;
127
152
  exports.isNameAllowed = isNameAllowed;
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: any,\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = (this as any).parent;\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","e","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: any,\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n maxLengthString: () =>\n yup\n .number()\n .integer()\n .positive(getTrad('error.validation.positive'))\n .max(255, 'Maximum length for short text fields is 255 characters')\n .nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\nconst createStringShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLengthString(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = (this as any).parent;\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","maxLengthString","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","e","createStringShape","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":"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"}
@@ -45,6 +45,7 @@ const validators = {
45
45
  return schema;
46
46
  }).nullable(),
47
47
  maxLength: ()=>yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),
48
+ maxLengthString: ()=>yup.number().integer().positive(getTrad('error.validation.positive')).max(255, 'Maximum length for short text fields is 255 characters').nullable(),
48
49
  minLength: ()=>yup.number().integer().min(1).when('maxLength', (maxLength, schema)=>{
49
50
  if (maxLength) {
50
51
  return schema.max(maxLength, getTrad('error.validation.minSupMax'));
@@ -81,6 +82,29 @@ const createTextShape = (usedAttributeNames, reservedNames)=>{
81
82
  };
82
83
  return shape;
83
84
  };
85
+ const createStringShape = (usedAttributeNames, reservedNames)=>{
86
+ const shape = {
87
+ name: validators.name(usedAttributeNames, reservedNames),
88
+ type: validators.type(),
89
+ default: validators.default(),
90
+ unique: validators.unique(),
91
+ required: validators.required(),
92
+ maxLength: validators.maxLengthString(),
93
+ minLength: validators.minLength(),
94
+ regex: yup.string().test({
95
+ name: 'isValidRegExpPattern',
96
+ message: getTrad('error.validation.regex'),
97
+ test (value) {
98
+ try {
99
+ return new RegExp(value || '') !== null;
100
+ } catch (e) {
101
+ return false;
102
+ }
103
+ }
104
+ }).nullable()
105
+ };
106
+ return shape;
107
+ };
84
108
  const isMinSuperiorThanMax = ()=>({
85
109
  name: 'isMinSuperiorThanMax',
86
110
  message: getTrad('error.validation.minSupMax'),
@@ -99,5 +123,5 @@ const isMinSuperiorThanMax = ()=>({
99
123
  }
100
124
  });
101
125
 
102
- export { NAME_REGEX, alreadyUsedAttributeNames, createTextShape, isMinSuperiorThanMax, isNameAllowed, validators };
126
+ export { NAME_REGEX, alreadyUsedAttributeNames, createStringShape, createTextShape, isMinSuperiorThanMax, isNameAllowed, validators };
103
127
  //# sourceMappingURL=common.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.mjs","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: any,\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = (this as any).parent;\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","e","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":"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"}
1
+ {"version":3,"file":"common.mjs","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: any,\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n maxLengthString: () =>\n yup\n .number()\n .integer()\n .positive(getTrad('error.validation.positive'))\n .max(255, 'Maximum length for short text fields is 255 characters')\n .nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\nconst createStringShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLengthString(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = (this as any).parent;\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","maxLengthString","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","e","createStringShape","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":"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"}
@@ -479,10 +479,13 @@ const GenericInput = ({ autoComplete, customInputs, description, disabled, intlL
479
479
  };
480
480
  };
481
481
  const getFieldUnits = ({ type, minimum, maximum })=>{
482
- if (type && [
483
- 'biginteger',
484
- 'integer',
485
- 'number'
482
+ if (type && ![
483
+ 'string',
484
+ 'uid',
485
+ 'richtext',
486
+ 'email',
487
+ 'password',
488
+ 'text'
486
489
  ].includes(type)) {
487
490
  return {};
488
491
  }
@@ -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<\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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"}
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 && !['string', 'uid', 'richtext', 'email', 'password', 'text'].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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"}
@@ -458,10 +458,13 @@ const GenericInput = ({ autoComplete, customInputs, description, disabled, intlL
458
458
  };
459
459
  };
460
460
  const getFieldUnits = ({ type, minimum, maximum })=>{
461
- if (type && [
462
- 'biginteger',
463
- 'integer',
464
- 'number'
461
+ if (type && ![
462
+ 'string',
463
+ 'uid',
464
+ 'richtext',
465
+ 'email',
466
+ 'password',
467
+ 'text'
465
468
  ].includes(type)) {
466
469
  return {};
467
470
  }
@@ -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<\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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"}
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 && !['string', 'uid', 'richtext', 'email', 'password', 'text'].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,6 +8,7 @@ declare const validators: {
8
8
  max: () => yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
9
9
  min: () => yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
10
10
  maxLength: () => yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
11
+ maxLengthString: () => yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
11
12
  minLength: () => yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
12
13
  name(usedNames: Array<string>, reservedNames: Array<string>): import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
13
14
  required: () => yup.BooleanSchema<boolean | undefined, Record<string, any>, boolean | undefined>;
@@ -24,6 +25,16 @@ declare const createTextShape: (usedAttributeNames: Array<string>, reservedNames
24
25
  minLength: yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
25
26
  regex: yup.default<string | null | undefined, Record<string, any>, string | null | undefined>;
26
27
  };
28
+ declare const createStringShape: (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {
29
+ name: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
30
+ type: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
31
+ default: yup.default<string | null | undefined, Record<string, any>, string | null | undefined>;
32
+ unique: yup.BooleanSchema<boolean | null | undefined, import("yup/lib/types").AnyObject, boolean | null | undefined>;
33
+ required: yup.BooleanSchema<boolean | undefined, Record<string, any>, boolean | undefined>;
34
+ maxLength: yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
35
+ minLength: yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
36
+ regex: yup.default<string | null | undefined, Record<string, any>, string | null | undefined>;
37
+ };
27
38
  type GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<T | undefined, Record<string, unknown>>;
28
39
  declare const isMinSuperiorThanMax: <T extends string | number | null>() => GenericIsMinSuperiorThanMax<T>;
29
- export { alreadyUsedAttributeNames, createTextShape, getUsedContentTypeAttributeNames, isMinSuperiorThanMax, isNameAllowed, NAME_REGEX, validators, };
40
+ export { alreadyUsedAttributeNames, createStringShape, createTextShape, getUsedContentTypeAttributeNames, isMinSuperiorThanMax, isNameAllowed, NAME_REGEX, validators, };
@@ -74,6 +74,16 @@ const getTypeShape = (attribute, { attributes } = {})=>{
74
74
  /**
75
75
  * scalar types
76
76
  */ case 'string':
77
+ {
78
+ return {
79
+ default: utils.yup.string(),
80
+ required: common.validators.required,
81
+ unique: common.validators.unique,
82
+ minLength: common.validators.minLength,
83
+ maxLength: common.validators.maxLength.max(255).test(maxLengthIsGreaterThanOrEqualToMinLength),
84
+ regex: utils.yup.string().test(common.isValidRegExpPattern)
85
+ };
86
+ }
77
87
  case 'text':
78
88
  {
79
89
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../server/src/controllers/validation/types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup } from '@strapi/utils';\n\nimport type { TestContext } from 'yup';\nimport type { Schema, Struct } from '@strapi/types';\n\nimport { modelTypes, VALID_UID_TARGETS } from '../../services/constants';\nimport {\n validators,\n areEnumValuesUnique,\n isValidDefaultJSON,\n isValidName,\n isValidEnum,\n isValidRegExpPattern,\n UID_REGEX,\n} from './common';\n\nexport type GetTypeValidatorOptions = {\n types: ReadonlyArray<string>;\n attributes?: Struct.SchemaAttributes;\n modelType?: (typeof modelTypes)[keyof typeof modelTypes];\n};\n\nconst maxLengthIsGreaterThanOrEqualToMinLength = {\n name: 'isGreaterThanMin',\n message: 'maxLength must be greater or equal to minLength',\n test(this: TestContext, value: unknown) {\n const { minLength } = this.parent;\n return !(!_.isUndefined(minLength) && !_.isUndefined(value) && (value as number) < minLength);\n },\n};\n\nexport const getTypeValidator = (\n attribute: Schema.Attribute.AnyAttribute,\n { types, modelType, attributes }: GetTypeValidatorOptions\n) => {\n return yup.object({\n type: yup\n .string()\n .oneOf([...types])\n .required(),\n configurable: yup.boolean().nullable(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n ...getTypeShape(attribute, { modelType, attributes }),\n } as any);\n};\n\nconst getTypeShape = (attribute: Schema.Attribute.AnyAttribute, { attributes }: any = {}) => {\n switch (attribute.type) {\n /**\n * complex types\n */\n\n case 'media': {\n return {\n multiple: yup.boolean(),\n required: validators.required,\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1),\n };\n }\n\n case 'uid': {\n return {\n required: validators.required,\n targetField: yup\n .string()\n .oneOf(\n Object.keys(attributes!).filter((key) =>\n VALID_UID_TARGETS.includes(_.get(attributes![key] as any, 'type'))\n )\n )\n .nullable(),\n default: yup\n .string()\n .test(\n 'isValidDefaultUID',\n 'cannot define a default UID if the targetField is set',\n function (value) {\n const { targetField } = this.parent;\n return !!(_.isNil(targetField) || _.isNil(value));\n }\n )\n .test(\n 'isValidDefaultRegexUID',\n `\\${path} must match the custom regex or the default one \"${UID_REGEX}\"`,\n function (value) {\n const { regex } = this.parent;\n\n if (regex) {\n return !_.isNil(value) && (value === '' || new RegExp(regex).test(value));\n }\n\n return value === '' || UID_REGEX.test(value as string);\n }\n ),\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(256).test(maxLengthIsGreaterThanOrEqualToMinLength),\n options: yup.object().shape({\n separator: yup.string(),\n lowercase: yup.boolean(),\n decamelize: yup.boolean(),\n customReplacements: yup.array().of(yup.array().of(yup.string()).min(2).max(2)),\n preserveLeadingUnderscore: yup.boolean(),\n }),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n\n /**\n * scalar types\n */\n case 'string':\n case 'text': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'richtext': {\n return {\n default: yup.string(),\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'blocks': {\n return {\n required: validators.required,\n };\n }\n case 'json': {\n return {\n default: yup.mixed().test(isValidDefaultJSON),\n required: validators.required,\n };\n }\n case 'enumeration': {\n return {\n enum: yup\n .array()\n .of(yup.string().test(isValidEnum).required())\n .min(1)\n .test(areEnumValuesUnique)\n .required(),\n default: yup.string().when('enum', (enumVal) => yup.string().oneOf(enumVal)),\n enumName: yup.string().test(isValidName),\n required: validators.required,\n };\n }\n case 'password': {\n return {\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'email': {\n return {\n default: yup.string().email(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'integer': {\n return {\n default: yup.number().integer(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number().integer(),\n max: yup.number().integer(),\n };\n }\n case 'biginteger': {\n return {\n default: yup.string().nullable().matches(/^\\d*$/),\n required: validators.required,\n unique: validators.unique,\n min: yup.string().nullable().matches(/^\\d*$/),\n max: yup.string().nullable().matches(/^\\d*$/),\n };\n }\n case 'float': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'decimal': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'time':\n case 'datetime':\n case 'date': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n };\n }\n case 'boolean': {\n return {\n default: yup.boolean(),\n required: validators.required,\n };\n }\n\n case 'component': {\n return {\n required: validators.required,\n repeatable: yup.boolean(),\n // TODO: Add correct server validation for nested components\n component: yup.string().required(),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n case 'dynamiczone': {\n return {\n required: validators.required,\n components: yup\n .array()\n .of(yup.string().required())\n .test('isArray', '${path} must be an array', (value) => Array.isArray(value))\n .min(1),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n default: {\n return {};\n }\n }\n};\n"],"names":["maxLengthIsGreaterThanOrEqualToMinLength","name","message","test","value","minLength","parent","_","isUndefined","getTypeValidator","attribute","types","modelType","attributes","yup","object","type","string","oneOf","required","configurable","boolean","nullable","private","pluginOptions","getTypeShape","multiple","validators","allowedTypes","array","of","min","targetField","Object","keys","filter","key","VALID_UID_TARGETS","includes","get","default","isNil","UID_REGEX","regex","RegExp","maxLength","max","options","shape","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","isValidRegExpPattern","unique","mixed","isValidDefaultJSON","enum","isValidEnum","areEnumValuesUnique","when","enumVal","enumName","isValidName","email","number","integer","matches","repeatable","component","components","Array","isArray"],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sources":["../../../../server/src/controllers/validation/types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup } from '@strapi/utils';\n\nimport type { TestContext } from 'yup';\nimport type { Schema, Struct } from '@strapi/types';\n\nimport { modelTypes, VALID_UID_TARGETS } from '../../services/constants';\nimport {\n validators,\n areEnumValuesUnique,\n isValidDefaultJSON,\n isValidName,\n isValidEnum,\n isValidRegExpPattern,\n UID_REGEX,\n} from './common';\n\nexport type GetTypeValidatorOptions = {\n types: ReadonlyArray<string>;\n attributes?: Struct.SchemaAttributes;\n modelType?: (typeof modelTypes)[keyof typeof modelTypes];\n};\n\nconst maxLengthIsGreaterThanOrEqualToMinLength = {\n name: 'isGreaterThanMin',\n message: 'maxLength must be greater or equal to minLength',\n test(this: TestContext, value: unknown) {\n const { minLength } = this.parent;\n return !(!_.isUndefined(minLength) && !_.isUndefined(value) && (value as number) < minLength);\n },\n};\n\nexport const getTypeValidator = (\n attribute: Schema.Attribute.AnyAttribute,\n { types, modelType, attributes }: GetTypeValidatorOptions\n) => {\n return yup.object({\n type: yup\n .string()\n .oneOf([...types])\n .required(),\n configurable: yup.boolean().nullable(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n ...getTypeShape(attribute, { modelType, attributes }),\n } as any);\n};\n\nconst getTypeShape = (attribute: Schema.Attribute.AnyAttribute, { attributes }: any = {}) => {\n switch (attribute.type) {\n /**\n * complex types\n */\n\n case 'media': {\n return {\n multiple: yup.boolean(),\n required: validators.required,\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1),\n };\n }\n\n case 'uid': {\n return {\n required: validators.required,\n targetField: yup\n .string()\n .oneOf(\n Object.keys(attributes!).filter((key) =>\n VALID_UID_TARGETS.includes(_.get(attributes![key] as any, 'type'))\n )\n )\n .nullable(),\n default: yup\n .string()\n .test(\n 'isValidDefaultUID',\n 'cannot define a default UID if the targetField is set',\n function (value) {\n const { targetField } = this.parent;\n return !!(_.isNil(targetField) || _.isNil(value));\n }\n )\n .test(\n 'isValidDefaultRegexUID',\n `\\${path} must match the custom regex or the default one \"${UID_REGEX}\"`,\n function (value) {\n const { regex } = this.parent;\n\n if (regex) {\n return !_.isNil(value) && (value === '' || new RegExp(regex).test(value));\n }\n\n return value === '' || UID_REGEX.test(value as string);\n }\n ),\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(256).test(maxLengthIsGreaterThanOrEqualToMinLength),\n options: yup.object().shape({\n separator: yup.string(),\n lowercase: yup.boolean(),\n decamelize: yup.boolean(),\n customReplacements: yup.array().of(yup.array().of(yup.string()).min(2).max(2)),\n preserveLeadingUnderscore: yup.boolean(),\n }),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n\n /**\n * scalar types\n */\n case 'string': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(255).test(maxLengthIsGreaterThanOrEqualToMinLength),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'text': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'richtext': {\n return {\n default: yup.string(),\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'blocks': {\n return {\n required: validators.required,\n };\n }\n case 'json': {\n return {\n default: yup.mixed().test(isValidDefaultJSON),\n required: validators.required,\n };\n }\n case 'enumeration': {\n return {\n enum: yup\n .array()\n .of(yup.string().test(isValidEnum).required())\n .min(1)\n .test(areEnumValuesUnique)\n .required(),\n default: yup.string().when('enum', (enumVal) => yup.string().oneOf(enumVal)),\n enumName: yup.string().test(isValidName),\n required: validators.required,\n };\n }\n case 'password': {\n return {\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'email': {\n return {\n default: yup.string().email(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'integer': {\n return {\n default: yup.number().integer(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number().integer(),\n max: yup.number().integer(),\n };\n }\n case 'biginteger': {\n return {\n default: yup.string().nullable().matches(/^\\d*$/),\n required: validators.required,\n unique: validators.unique,\n min: yup.string().nullable().matches(/^\\d*$/),\n max: yup.string().nullable().matches(/^\\d*$/),\n };\n }\n case 'float': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'decimal': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'time':\n case 'datetime':\n case 'date': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n };\n }\n case 'boolean': {\n return {\n default: yup.boolean(),\n required: validators.required,\n };\n }\n\n case 'component': {\n return {\n required: validators.required,\n repeatable: yup.boolean(),\n // TODO: Add correct server validation for nested components\n component: yup.string().required(),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n case 'dynamiczone': {\n return {\n required: validators.required,\n components: yup\n .array()\n .of(yup.string().required())\n .test('isArray', '${path} must be an array', (value) => Array.isArray(value))\n .min(1),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n default: {\n return {};\n }\n }\n};\n"],"names":["maxLengthIsGreaterThanOrEqualToMinLength","name","message","test","value","minLength","parent","_","isUndefined","getTypeValidator","attribute","types","modelType","attributes","yup","object","type","string","oneOf","required","configurable","boolean","nullable","private","pluginOptions","getTypeShape","multiple","validators","allowedTypes","array","of","min","targetField","Object","keys","filter","key","VALID_UID_TARGETS","includes","get","default","isNil","UID_REGEX","regex","RegExp","maxLength","max","options","shape","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","isValidRegExpPattern","unique","mixed","isValidDefaultJSON","enum","isValidEnum","areEnumValuesUnique","when","enumVal","enumName","isValidName","email","number","integer","matches","repeatable","component","components","Array","isArray"],"mappings":"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"}
@@ -72,6 +72,16 @@ const getTypeShape = (attribute, { attributes } = {})=>{
72
72
  /**
73
73
  * scalar types
74
74
  */ case 'string':
75
+ {
76
+ return {
77
+ default: yup.string(),
78
+ required: validators.required,
79
+ unique: validators.unique,
80
+ minLength: validators.minLength,
81
+ maxLength: validators.maxLength.max(255).test(maxLengthIsGreaterThanOrEqualToMinLength),
82
+ regex: yup.string().test(isValidRegExpPattern)
83
+ };
84
+ }
75
85
  case 'text':
76
86
  {
77
87
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sources":["../../../../server/src/controllers/validation/types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup } from '@strapi/utils';\n\nimport type { TestContext } from 'yup';\nimport type { Schema, Struct } from '@strapi/types';\n\nimport { modelTypes, VALID_UID_TARGETS } from '../../services/constants';\nimport {\n validators,\n areEnumValuesUnique,\n isValidDefaultJSON,\n isValidName,\n isValidEnum,\n isValidRegExpPattern,\n UID_REGEX,\n} from './common';\n\nexport type GetTypeValidatorOptions = {\n types: ReadonlyArray<string>;\n attributes?: Struct.SchemaAttributes;\n modelType?: (typeof modelTypes)[keyof typeof modelTypes];\n};\n\nconst maxLengthIsGreaterThanOrEqualToMinLength = {\n name: 'isGreaterThanMin',\n message: 'maxLength must be greater or equal to minLength',\n test(this: TestContext, value: unknown) {\n const { minLength } = this.parent;\n return !(!_.isUndefined(minLength) && !_.isUndefined(value) && (value as number) < minLength);\n },\n};\n\nexport const getTypeValidator = (\n attribute: Schema.Attribute.AnyAttribute,\n { types, modelType, attributes }: GetTypeValidatorOptions\n) => {\n return yup.object({\n type: yup\n .string()\n .oneOf([...types])\n .required(),\n configurable: yup.boolean().nullable(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n ...getTypeShape(attribute, { modelType, attributes }),\n } as any);\n};\n\nconst getTypeShape = (attribute: Schema.Attribute.AnyAttribute, { attributes }: any = {}) => {\n switch (attribute.type) {\n /**\n * complex types\n */\n\n case 'media': {\n return {\n multiple: yup.boolean(),\n required: validators.required,\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1),\n };\n }\n\n case 'uid': {\n return {\n required: validators.required,\n targetField: yup\n .string()\n .oneOf(\n Object.keys(attributes!).filter((key) =>\n VALID_UID_TARGETS.includes(_.get(attributes![key] as any, 'type'))\n )\n )\n .nullable(),\n default: yup\n .string()\n .test(\n 'isValidDefaultUID',\n 'cannot define a default UID if the targetField is set',\n function (value) {\n const { targetField } = this.parent;\n return !!(_.isNil(targetField) || _.isNil(value));\n }\n )\n .test(\n 'isValidDefaultRegexUID',\n `\\${path} must match the custom regex or the default one \"${UID_REGEX}\"`,\n function (value) {\n const { regex } = this.parent;\n\n if (regex) {\n return !_.isNil(value) && (value === '' || new RegExp(regex).test(value));\n }\n\n return value === '' || UID_REGEX.test(value as string);\n }\n ),\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(256).test(maxLengthIsGreaterThanOrEqualToMinLength),\n options: yup.object().shape({\n separator: yup.string(),\n lowercase: yup.boolean(),\n decamelize: yup.boolean(),\n customReplacements: yup.array().of(yup.array().of(yup.string()).min(2).max(2)),\n preserveLeadingUnderscore: yup.boolean(),\n }),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n\n /**\n * scalar types\n */\n case 'string':\n case 'text': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'richtext': {\n return {\n default: yup.string(),\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'blocks': {\n return {\n required: validators.required,\n };\n }\n case 'json': {\n return {\n default: yup.mixed().test(isValidDefaultJSON),\n required: validators.required,\n };\n }\n case 'enumeration': {\n return {\n enum: yup\n .array()\n .of(yup.string().test(isValidEnum).required())\n .min(1)\n .test(areEnumValuesUnique)\n .required(),\n default: yup.string().when('enum', (enumVal) => yup.string().oneOf(enumVal)),\n enumName: yup.string().test(isValidName),\n required: validators.required,\n };\n }\n case 'password': {\n return {\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'email': {\n return {\n default: yup.string().email(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'integer': {\n return {\n default: yup.number().integer(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number().integer(),\n max: yup.number().integer(),\n };\n }\n case 'biginteger': {\n return {\n default: yup.string().nullable().matches(/^\\d*$/),\n required: validators.required,\n unique: validators.unique,\n min: yup.string().nullable().matches(/^\\d*$/),\n max: yup.string().nullable().matches(/^\\d*$/),\n };\n }\n case 'float': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'decimal': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'time':\n case 'datetime':\n case 'date': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n };\n }\n case 'boolean': {\n return {\n default: yup.boolean(),\n required: validators.required,\n };\n }\n\n case 'component': {\n return {\n required: validators.required,\n repeatable: yup.boolean(),\n // TODO: Add correct server validation for nested components\n component: yup.string().required(),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n case 'dynamiczone': {\n return {\n required: validators.required,\n components: yup\n .array()\n .of(yup.string().required())\n .test('isArray', '${path} must be an array', (value) => Array.isArray(value))\n .min(1),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n default: {\n return {};\n }\n }\n};\n"],"names":["maxLengthIsGreaterThanOrEqualToMinLength","name","message","test","value","minLength","parent","_","isUndefined","getTypeValidator","attribute","types","modelType","attributes","yup","object","type","string","oneOf","required","configurable","boolean","nullable","private","pluginOptions","getTypeShape","multiple","validators","allowedTypes","array","of","min","targetField","Object","keys","filter","key","VALID_UID_TARGETS","includes","get","default","isNil","UID_REGEX","regex","RegExp","maxLength","max","options","shape","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","isValidRegExpPattern","unique","mixed","isValidDefaultJSON","enum","isValidEnum","areEnumValuesUnique","when","enumVal","enumName","isValidName","email","number","integer","matches","repeatable","component","components","Array","isArray"],"mappings":"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"}
1
+ {"version":3,"file":"types.mjs","sources":["../../../../server/src/controllers/validation/types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup } from '@strapi/utils';\n\nimport type { TestContext } from 'yup';\nimport type { Schema, Struct } from '@strapi/types';\n\nimport { modelTypes, VALID_UID_TARGETS } from '../../services/constants';\nimport {\n validators,\n areEnumValuesUnique,\n isValidDefaultJSON,\n isValidName,\n isValidEnum,\n isValidRegExpPattern,\n UID_REGEX,\n} from './common';\n\nexport type GetTypeValidatorOptions = {\n types: ReadonlyArray<string>;\n attributes?: Struct.SchemaAttributes;\n modelType?: (typeof modelTypes)[keyof typeof modelTypes];\n};\n\nconst maxLengthIsGreaterThanOrEqualToMinLength = {\n name: 'isGreaterThanMin',\n message: 'maxLength must be greater or equal to minLength',\n test(this: TestContext, value: unknown) {\n const { minLength } = this.parent;\n return !(!_.isUndefined(minLength) && !_.isUndefined(value) && (value as number) < minLength);\n },\n};\n\nexport const getTypeValidator = (\n attribute: Schema.Attribute.AnyAttribute,\n { types, modelType, attributes }: GetTypeValidatorOptions\n) => {\n return yup.object({\n type: yup\n .string()\n .oneOf([...types])\n .required(),\n configurable: yup.boolean().nullable(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n ...getTypeShape(attribute, { modelType, attributes }),\n } as any);\n};\n\nconst getTypeShape = (attribute: Schema.Attribute.AnyAttribute, { attributes }: any = {}) => {\n switch (attribute.type) {\n /**\n * complex types\n */\n\n case 'media': {\n return {\n multiple: yup.boolean(),\n required: validators.required,\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1),\n };\n }\n\n case 'uid': {\n return {\n required: validators.required,\n targetField: yup\n .string()\n .oneOf(\n Object.keys(attributes!).filter((key) =>\n VALID_UID_TARGETS.includes(_.get(attributes![key] as any, 'type'))\n )\n )\n .nullable(),\n default: yup\n .string()\n .test(\n 'isValidDefaultUID',\n 'cannot define a default UID if the targetField is set',\n function (value) {\n const { targetField } = this.parent;\n return !!(_.isNil(targetField) || _.isNil(value));\n }\n )\n .test(\n 'isValidDefaultRegexUID',\n `\\${path} must match the custom regex or the default one \"${UID_REGEX}\"`,\n function (value) {\n const { regex } = this.parent;\n\n if (regex) {\n return !_.isNil(value) && (value === '' || new RegExp(regex).test(value));\n }\n\n return value === '' || UID_REGEX.test(value as string);\n }\n ),\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(256).test(maxLengthIsGreaterThanOrEqualToMinLength),\n options: yup.object().shape({\n separator: yup.string(),\n lowercase: yup.boolean(),\n decamelize: yup.boolean(),\n customReplacements: yup.array().of(yup.array().of(yup.string()).min(2).max(2)),\n preserveLeadingUnderscore: yup.boolean(),\n }),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n\n /**\n * scalar types\n */\n case 'string': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(255).test(maxLengthIsGreaterThanOrEqualToMinLength),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'text': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'richtext': {\n return {\n default: yup.string(),\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'blocks': {\n return {\n required: validators.required,\n };\n }\n case 'json': {\n return {\n default: yup.mixed().test(isValidDefaultJSON),\n required: validators.required,\n };\n }\n case 'enumeration': {\n return {\n enum: yup\n .array()\n .of(yup.string().test(isValidEnum).required())\n .min(1)\n .test(areEnumValuesUnique)\n .required(),\n default: yup.string().when('enum', (enumVal) => yup.string().oneOf(enumVal)),\n enumName: yup.string().test(isValidName),\n required: validators.required,\n };\n }\n case 'password': {\n return {\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'email': {\n return {\n default: yup.string().email(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'integer': {\n return {\n default: yup.number().integer(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number().integer(),\n max: yup.number().integer(),\n };\n }\n case 'biginteger': {\n return {\n default: yup.string().nullable().matches(/^\\d*$/),\n required: validators.required,\n unique: validators.unique,\n min: yup.string().nullable().matches(/^\\d*$/),\n max: yup.string().nullable().matches(/^\\d*$/),\n };\n }\n case 'float': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'decimal': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'time':\n case 'datetime':\n case 'date': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n };\n }\n case 'boolean': {\n return {\n default: yup.boolean(),\n required: validators.required,\n };\n }\n\n case 'component': {\n return {\n required: validators.required,\n repeatable: yup.boolean(),\n // TODO: Add correct server validation for nested components\n component: yup.string().required(),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n case 'dynamiczone': {\n return {\n required: validators.required,\n components: yup\n .array()\n .of(yup.string().required())\n .test('isArray', '${path} must be an array', (value) => Array.isArray(value))\n .min(1),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n default: {\n return {};\n }\n }\n};\n"],"names":["maxLengthIsGreaterThanOrEqualToMinLength","name","message","test","value","minLength","parent","_","isUndefined","getTypeValidator","attribute","types","modelType","attributes","yup","object","type","string","oneOf","required","configurable","boolean","nullable","private","pluginOptions","getTypeShape","multiple","validators","allowedTypes","array","of","min","targetField","Object","keys","filter","key","VALID_UID_TARGETS","includes","get","default","isNil","UID_REGEX","regex","RegExp","maxLength","max","options","shape","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","isValidRegExpPattern","unique","mixed","isValidDefaultJSON","enum","isValidEnum","areEnumValuesUnique","when","enumVal","enumName","isValidName","email","number","integer","matches","repeatable","component","components","Array","isArray"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/content-type-builder",
3
- "version": "5.30.1",
3
+ "version": "5.31.1",
4
4
  "description": "Create and manage content types",
5
5
  "repository": {
6
6
  "type": "git",
@@ -68,9 +68,9 @@
68
68
  "@reduxjs/toolkit": "1.9.7",
69
69
  "@sindresorhus/slugify": "1.1.0",
70
70
  "@strapi/design-system": "2.0.0-rc.30",
71
- "@strapi/generators": "5.30.1",
71
+ "@strapi/generators": "5.31.1",
72
72
  "@strapi/icons": "2.0.0-rc.30",
73
- "@strapi/utils": "5.30.1",
73
+ "@strapi/utils": "5.31.1",
74
74
  "ai": "5.0.26",
75
75
  "date-fns": "2.30.0",
76
76
  "fs-extra": "11.2.0",
@@ -88,8 +88,8 @@
88
88
  "zod": "3.25.67"
89
89
  },
90
90
  "devDependencies": {
91
- "@strapi/admin": "5.30.1",
92
- "@strapi/types": "5.30.1",
91
+ "@strapi/admin": "5.31.1",
92
+ "@strapi/types": "5.31.1",
93
93
  "@testing-library/dom": "10.1.0",
94
94
  "@testing-library/react": "15.0.7",
95
95
  "@testing-library/user-event": "14.5.2",
@@ -112,7 +112,7 @@
112
112
  "styled-components": "^6.0.0"
113
113
  },
114
114
  "engines": {
115
- "node": ">=18.0.0 <=22.x.x",
115
+ "node": ">=20.0.0 <=24.x.x",
116
116
  "npm": ">=6.0.0"
117
117
  },
118
118
  "strapi": {