diff --git a/packages/strapi-plugin-content-type-builder/services/ContentTypeBuilder.js b/packages/strapi-plugin-content-type-builder/services/ContentTypeBuilder.js index 00e60aff86..dcbfe6c00f 100644 --- a/packages/strapi-plugin-content-type-builder/services/ContentTypeBuilder.js +++ b/packages/strapi-plugin-content-type-builder/services/ContentTypeBuilder.js @@ -6,7 +6,12 @@ const _ = require('lodash'); const generator = require('strapi-generate'); const { fromJS, List, Map } = require('immutable'); const Manager = require('../utils/Manager.js'); -const { createManager, removeColsLine, reorderList } = require('../utils/helpers.js'); +const { + createManager, + removeColsLine, + reorderList, + deepTrimObject, +} = require('../utils/helpers.js'); module.exports = { appearance: async (attributes, model, plugin) => { @@ -369,8 +374,9 @@ module.exports = { }); Object.assign(attributesNotConfigurable, attrs); + const trimmedNotConfigurableAttributes = deepTrimObject(attributesNotConfigurable); - return [attributesNotConfigurable, errors]; + return [trimmedNotConfigurableAttributes, errors]; }, clearRelations: (model, source, force) => { diff --git a/packages/strapi-plugin-content-type-builder/utils/helpers.js b/packages/strapi-plugin-content-type-builder/utils/helpers.js index 7036c1585a..96fa91b29c 100644 --- a/packages/strapi-plugin-content-type-builder/utils/helpers.js +++ b/packages/strapi-plugin-content-type-builder/utils/helpers.js @@ -44,7 +44,7 @@ const removeColsLine = (manager, list) => { const reorderList = (manager, list) => { const array = createArrayOfLastEls(manager, list); const lines = []; - + array.forEach((item, i) => { const { elements } = getElementsOnALine(manager, i, list); lines.push(elements); @@ -57,7 +57,7 @@ const reorderList = (manager, list) => { return acc.concat(line); }, []) .filter(a => a !== undefined); - + return List(flattenDeep(reordered)); }; @@ -65,11 +65,31 @@ const escapeNewlines = (content, placeholder = '\n') => { return content.replace(/[\r\n]+/g, placeholder); } +const deepTrimObject = attribute => { + if (Array.isArray(attribute)) { + return attribute.map(deepTrimObject); + } + + if (typeof attribute === 'object') { + return Object.entries(attribute) + .reduce((acc, [key, value]) => { + const trimmedObject = deepTrimObject(value); + + return { ...acc, [key]: trimmedObject }; + }, {}); + } + + return typeof attribute === 'string' + ? attribute.trim() + : attribute; +} + module.exports = { createArrayOfLastEls, createManager, getElementsOnALine, removeColsLine, reorderList, - escapeNewlines -}; \ No newline at end of file + escapeNewlines, + deepTrimObject +};