From 004b44ba4dae4e8bf4263cb5b2d11bb8c4ebeaad Mon Sep 17 00:00:00 2001 From: soupette Date: Fri, 15 Oct 2021 12:06:08 +0200 Subject: [PATCH 1/2] Remove headers props from FormModalHeader Signed-off-by: soupette --- .../src/components/FormModal/forms/index.js | 1 + .../admin/src/components/FormModal/index.js | 6 +- .../components/FormModal/utils/staticData.js | 1 + .../src/components/FormModalHeader/index.js | 95 ++++++++++--------- 4 files changed, 57 insertions(+), 46 deletions(-) diff --git a/packages/core/content-type-builder/admin/src/components/FormModal/forms/index.js b/packages/core/content-type-builder/admin/src/components/FormModal/forms/index.js index 1003499109..1b2bff56bf 100644 --- a/packages/core/content-type-builder/admin/src/components/FormModal/forms/index.js +++ b/packages/core/content-type-builder/admin/src/components/FormModal/forms/index.js @@ -189,6 +189,7 @@ const forms = { return createCategorySchema(allowedCategories); }, form: { + advanced: () => ({ sections: [] }), base() { return categoryForm.base; }, diff --git a/packages/core/content-type-builder/admin/src/components/FormModal/index.js b/packages/core/content-type-builder/admin/src/components/FormModal/index.js index 9680da119e..0987a324fc 100644 --- a/packages/core/content-type-builder/admin/src/components/FormModal/index.js +++ b/packages/core/content-type-builder/admin/src/components/FormModal/index.js @@ -122,6 +122,7 @@ const FormModal = () => { // Returns 'null' if there isn't any attributeType search params const attributeName = query.get('attributeName'); const attributeType = query.get('attributeType'); + const categoryName = query.get('categoryName'); const dynamicZoneTarget = query.get('dynamicZoneTarget'); const forTarget = query.get('forTarget'); const modalType = query.get('modalType'); @@ -153,6 +154,7 @@ const FormModal = () => { actionType, attributeName, attributeType, + categoryName, kind, dynamicZoneTarget, forTarget, @@ -1093,8 +1095,10 @@ const FormModal = () => { theme.colors.primary600}; - } -`; - const FormModalHeader = ({ actionType, + attributeName, attributeType, + categoryName, contentTypeKind, + dynamicZoneTarget, forTarget, - headers, modalType, targetUid, }) => { @@ -39,20 +33,9 @@ const FormModalHeader = ({ const { modifiedData } = useDataManager(); let icon; - let isFontAwesomeIcon = false; + let headers = []; - if (modalType === 'chooseAttribute') { - const schema = modifiedData[forTarget][targetUid] || modifiedData[forTarget]; - - if (forTarget === 'components') { - icon = schema.schema.icon; - isFontAwesomeIcon = true; - } else if (forTarget === 'component') { - icon = 'component'; - } else { - icon = schema.schema.kind; - } - } + const schema = modifiedData?.[forTarget]?.[targetUid] || modifiedData?.[forTarget] || null; if (modalType === 'contentType') { icon = contentTypeKind; @@ -62,14 +45,6 @@ const FormModalHeader = ({ icon = 'component'; } - if (modalType === 'addComponentToDynamicZone') { - icon = 'dynamiczone'; - } - - if (modalType === 'attribute') { - icon = attributeType; - } - const isCreatingMainSchema = ['component', 'contentType'].includes(modalType); if (isCreatingMainSchema) { @@ -91,7 +66,7 @@ const FormModalHeader = ({ - {formatMessage({ id: headerId }, { name: headers[0].label })} + {formatMessage({ id: headerId }, { name: schema.schema.name })} @@ -99,25 +74,54 @@ const FormModalHeader = ({ ); } + headers = [ + { + label: schema?.schema.name || null, + info: { category: schema?.category || null, name: schema?.schema.name }, + }, + ]; + + if (modalType === 'chooseAttribute') { + icon = ['component', 'components'].includes(forTarget) ? 'component' : schema.schema.kind; + } + + if (modalType === 'addComponentToDynamicZone') { + icon = 'dynamiczone'; + headers.push({ label: dynamicZoneTarget }); + } + + if (modalType === 'attribute') { + icon = attributeType; + headers.push({ label: attributeName }); + } + + if (modalType === 'editCategory') { + const label = formatMessage({ + id: getTrad('modalForm.header.categories'), + defaultMessage: 'Categories', + }); + + headers = [{ label }, { label: categoryName }]; + } + const breadcrumbsLabel = headers.map(({ label }) => label).join(','); return ( - {!isFontAwesomeIcon && } - {isFontAwesomeIcon && ( - - - - )} + {headers.map((header, index) => { const label = upperFirst(header.label); + if (!label) { + return null; + } + const key = `${header.label}.${index}`; - if (header.info.category) { + if (header.info?.category) { const content = `${label} (${upperFirst(header.info.category)} - ${upperFirst( header.info.name )})`; @@ -135,22 +139,23 @@ const FormModalHeader = ({ FormModalHeader.defaultProps = { actionType: null, + attributeName: null, attributeType: null, + categoryName: null, + dynamicZoneTarget: null, + forTarget: null, contentTypeKind: null, targetUid: null, }; FormModalHeader.propTypes = { actionType: PropTypes.string, + attributeName: PropTypes.string, attributeType: PropTypes.string, + categoryName: PropTypes.string, contentTypeKind: PropTypes.string, - forTarget: PropTypes.oneOf(['contentType', 'component', 'components']).isRequired, - headers: PropTypes.arrayOf( - PropTypes.shape({ - icon: PropTypes.shape({ name: PropTypes.string, isCustom: PropTypes.bool }), - label: PropTypes.string.isRequired, - }) - ).isRequired, + dynamicZoneTarget: PropTypes.string, + forTarget: PropTypes.oneOf(['contentType', 'component', 'components']), modalType: PropTypes.string.isRequired, targetUid: PropTypes.string, }; From 306ff25bb8b1d03f5e4888569b37726a6aecab11 Mon Sep 17 00:00:00 2001 From: soupette Date: Fri, 15 Oct 2021 12:38:37 +0200 Subject: [PATCH 2/2] Remove headers from search Signed-off-by: soupette --- .../AttributeOptions/AttributeOption/index.js | 25 ---- .../src/components/ComponentList/index.js | 16 +-- .../useContentTypeBuilderMenu.js | 13 -- .../src/components/DynamicZoneList/index.js | 12 +- .../admin/src/components/FormModal/index.js | 62 +-------- .../FormModal/utils/createHeadersArray.js | 24 ---- .../utils/createHeadersObjectFromArray.js | 27 ---- .../src/components/FormModal/utils/index.js | 2 - .../components/FormModal/utils/staticData.js | 15 -- .../utils/tests/createHeadersArray.test.js | 112 --------------- .../createHeadersObjectFromArray.test.js | 37 ----- .../src/components/FormModalHeader/index.js | 2 +- .../admin/src/components/List/index.js | 116 ++-------------- .../admin/src/components/ListRow/index.js | 128 ++---------------- .../src/components/SelectComponent/index.js | 2 - .../admin/src/pages/ListView/index.js | 44 +----- 16 files changed, 27 insertions(+), 610 deletions(-) delete mode 100644 packages/core/content-type-builder/admin/src/components/FormModal/utils/createHeadersArray.js delete mode 100644 packages/core/content-type-builder/admin/src/components/FormModal/utils/createHeadersObjectFromArray.js delete mode 100644 packages/core/content-type-builder/admin/src/components/FormModal/utils/tests/createHeadersArray.test.js delete mode 100644 packages/core/content-type-builder/admin/src/components/FormModal/utils/tests/createHeadersObjectFromArray.test.js diff --git a/packages/core/content-type-builder/admin/src/components/AttributeOptions/AttributeOption/index.js b/packages/core/content-type-builder/admin/src/components/AttributeOptions/AttributeOption/index.js index d2939602ea..330d4351e0 100644 --- a/packages/core/content-type-builder/admin/src/components/AttributeOptions/AttributeOption/index.js +++ b/packages/core/content-type-builder/admin/src/components/AttributeOptions/AttributeOption/index.js @@ -27,18 +27,6 @@ const AttributeOption = ({ type }) => { // FIXME refacto const forTarget = query.forTarget || null; const targetUid = query.targetUid || null; - const header_label_1 = query.header_label_1 || null; - const header_info_category_1 = query.header_info_category_1 || null; - const header_info_name_1 = query.header_info_name_1 || null; - const header_label_2 = query.header_label_2 || null; - const header_info_category_2 = query.header_info_category_2 || null; - const header_info_name_2 = query.header_info_name_2 || null; - const header_label_3 = query.header_label_3 || null; - const header_info_category_3 = query.header_info_category_3 || null; - const header_info_name_3 = query.header_info_name_3 || null; - const header_label_4 = query.header_label_4 || null; - const header_info_category_4 = query.header_info_category_4 || null; - const header_info_name_4 = query.header_info_name_4 || null; const search = makeSearch({ modalType: 'attribute', @@ -48,19 +36,6 @@ const AttributeOption = ({ type }) => { targetUid, attributeType: type, step: type === 'component' ? '1' : null, - - header_label_1, - header_info_name_1, - header_info_category_1, - header_label_2, - header_info_name_2, - header_info_category_2, - header_label_3, - header_info_name_3, - header_info_category_3, - header_label_4, - header_info_name_4, - header_info_category_4, }); if (forTarget === 'contentType') { diff --git a/packages/core/content-type-builder/admin/src/components/ComponentList/index.js b/packages/core/content-type-builder/admin/src/components/ComponentList/index.js index 2397a62180..586e397887 100644 --- a/packages/core/content-type-builder/admin/src/components/ComponentList/index.js +++ b/packages/core/content-type-builder/admin/src/components/ComponentList/index.js @@ -5,7 +5,7 @@ */ /* eslint-disable import/no-cycle */ import React from 'react'; -import { get } from 'lodash'; +import get from 'lodash/get'; import PropTypes from 'prop-types'; import List from '../List'; import useDataManager from '../../hooks/useDataManager'; @@ -14,16 +14,13 @@ import Tr from '../Tr'; function ComponentList({ customRowComponent, component, - dzName, - mainTypeName, isFromDynamicZone, isNestedInDZComponent, - firstLoopComponentName, firstLoopComponentUid, }) { const { modifiedData } = useDataManager(); const { - schema: { name: componentName, attributes }, + schema: { attributes }, } = get(modifiedData, ['components', component], { schema: { attributes: [] }, }); @@ -33,17 +30,13 @@ function ComponentList({ @@ -54,8 +47,6 @@ function ComponentList({ ComponentList.defaultProps = { component: null, customRowComponent: null, - dzName: null, - firstLoopComponentName: null, firstLoopComponentUid: null, isFromDynamicZone: false, isNestedInDZComponent: false, @@ -64,12 +55,9 @@ ComponentList.defaultProps = { ComponentList.propTypes = { component: PropTypes.string, customRowComponent: PropTypes.func, - dzName: PropTypes.string, - firstLoopComponentName: PropTypes.string, firstLoopComponentUid: PropTypes.string, isFromDynamicZone: PropTypes.bool, isNestedInDZComponent: PropTypes.bool, - mainTypeName: PropTypes.string.isRequired, }; export default ComponentList; diff --git a/packages/core/content-type-builder/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js b/packages/core/content-type-builder/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js index 87afa9f135..9917af003a 100644 --- a/packages/core/content-type-builder/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +++ b/packages/core/content-type-builder/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js @@ -2,7 +2,6 @@ import { useState } from 'react'; import { useNotification, useTracking } from '@strapi/helper-plugin'; import { camelCase, isEmpty, sortBy, toLower, upperFirst } from 'lodash'; import matchSorter from 'match-sorter'; -import { useIntl } from 'react-intl'; import { useHistory } from 'react-router-dom'; import useDataManager from '../../hooks/useDataManager'; import pluginId from '../../pluginId'; @@ -19,7 +18,6 @@ const useContentTypeBuilderMenu = () => { } = useDataManager(); const toggleNotification = useNotification(); const { trackUsage } = useTracking(); - const { formatMessage } = useIntl(); const { push } = useHistory(); const [search, setSearch] = useState(''); @@ -35,16 +33,6 @@ const useContentTypeBuilderMenu = () => { actionType: 'edit', modalType: 'editCategory', categoryName: data.name, - header_label_1: formatMessage({ - id: getTrad('modalForm.header.categories'), - defaultMessage: 'Categories', - }), - header_info_category_1: null, - header_info_name_1: null, - header_label_2: data.name, - header_info_category_2: null, - header_info_name_2: null, - settingType: 'base', }); @@ -81,7 +69,6 @@ const useContentTypeBuilderMenu = () => { actionType: 'create', settingType: 'base', forTarget: modalType, - header_label_1: 'null', }); push({ search, diff --git a/packages/core/content-type-builder/admin/src/components/DynamicZoneList/index.js b/packages/core/content-type-builder/admin/src/components/DynamicZoneList/index.js index ee5b58f729..9c8de7b0f0 100644 --- a/packages/core/content-type-builder/admin/src/components/DynamicZoneList/index.js +++ b/packages/core/content-type-builder/admin/src/components/DynamicZoneList/index.js @@ -56,14 +56,7 @@ const ComponentStack = styled(Stack)` align-items: center; `; -function DynamicZoneList({ - customRowComponent, - components, - addComponent, - mainTypeName, - name, - targetUid, -}) { +function DynamicZoneList({ customRowComponent, components, addComponent, name, targetUid }) { const { isInDevelopmentMode } = useDataManager(); const [activeTab, setActiveTab] = useState(0); const { formatMessage } = useIntl(); @@ -129,8 +122,6 @@ function DynamicZoneList({ @@ -156,7 +147,6 @@ DynamicZoneList.propTypes = { addComponent: PropTypes.func, components: PropTypes.instanceOf(Array), customRowComponent: PropTypes.func, - mainTypeName: PropTypes.string.isRequired, name: PropTypes.string, targetUid: PropTypes.string.isRequired, }; diff --git a/packages/core/content-type-builder/admin/src/components/FormModal/index.js b/packages/core/content-type-builder/admin/src/components/FormModal/index.js index 0987a324fc..535de55e1b 100644 --- a/packages/core/content-type-builder/admin/src/components/FormModal/index.js +++ b/packages/core/content-type-builder/admin/src/components/FormModal/index.js @@ -44,8 +44,6 @@ import getTrad from '../../utils/getTrad'; import makeSearch from '../../utils/makeSearch'; import { canEditContentType, - createHeadersArray, - createHeadersObjectFromArray, getAttributesToDisplay, getFormInputNames, getModalTitleSubHeader, @@ -129,21 +127,6 @@ const FormModal = () => { const kind = query.get('kind') || get(allDataSchema, ['contentType', 'schema', 'kind'], null); const targetUid = query.get('targetUid'); const settingType = query.get('settingType'); - const header_label_1 = query.get('header_label_1'); - const header_info_category_1 = query.get('header_info_category_1'); - const header_info_name_1 = query.get('header_info_name_1'); - const header_label_2 = query.get('header_label_2'); - const header_info_category_2 = query.get('header_info_category_2'); - const header_info_name_2 = query.get('header_info_name_2'); - const header_label_3 = query.get('header_label_3'); - const header_info_category_3 = query.get('header_info_category_3'); - const header_info_name_3 = query.get('header_info_name_3'); - const header_label_4 = query.get('header_label_4'); - const header_info_category_4 = query.get('header_info_category_4'); - const header_info_name_4 = query.get('header_info_name_4'); - const header_label_5 = query.get('header_label_5'); - const header_info_category_5 = query.get('header_info_category_5'); - const header_info_name_5 = query.get('header_info_name_5'); const step = query.get('step'); const pathToSchema = forTarget === 'contentType' || forTarget === 'component' @@ -163,21 +146,6 @@ const FormModal = () => { settingType, step, targetUid, - header_label_1, - header_info_name_1, - header_info_category_1, - header_label_2, - header_info_name_2, - header_info_category_2, - header_label_3, - header_info_name_3, - header_info_category_3, - header_label_4, - header_info_name_4, - header_info_category_4, - header_label_5, - header_info_name_5, - header_info_category_5, }); const collectionTypesForRelation = sortedContentTypesList.filter( @@ -354,8 +322,6 @@ const FormModal = () => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [search]); - const headers = createHeadersArray(state); - // FIXME rename this constant const isCreatingContentType = state.modalType === 'contentType'; const isCreatingComponent = state.modalType === 'component'; @@ -371,6 +337,8 @@ const FormModal = () => { const isPickingAttribute = state.modalType === 'chooseAttribute'; const uid = createUid(modifiedData.name || ''); const attributes = get(allDataSchema, [...state.pathToSchema, 'schema', 'attributes'], null); + // FIXME when displayName + const mainSchemaName = get(allDataSchema, [...state.pathToSchema, 'schema', 'name'], ''); const checkFormValidity = async () => { let schema; @@ -606,14 +574,6 @@ const FormModal = () => { sendButtonAddMoreFieldEvent(shouldContinue); const targetUid = state.forTarget === 'components' ? state.targetUid : uid; - // Remove the last header when editing - if (state.actionType === 'edit') { - headers.pop(); - } - - const headersObject = createHeadersObjectFromArray(headers); - const nextHeaderIndex = headers.length + 1; - if (isCreatingContentType) { // Create the content type schema if (isCreating) { @@ -639,7 +599,6 @@ const FormModal = () => { modalType: 'chooseAttribute', forTarget: state.forTarget, targetUid, - header_label_1: modifiedData.name, }), }); } else if (isCreatingComponent) { @@ -655,7 +614,6 @@ const FormModal = () => { modalType: 'chooseAttribute', forTarget: state.forTarget, targetUid: componentUid, - header_label_1: modifiedData.name, }), pathname: `/plugins/${pluginId}/component-categories/${category}/${componentUid}`, }); @@ -704,8 +662,6 @@ const FormModal = () => { settingType: 'base', step: '1', actionType: 'create', - ...headersObject, - header_label_2: modifiedData.name, }); const nextSearch = isDynamicZoneAttribute ? dzSearch @@ -714,7 +670,6 @@ const FormModal = () => { modalType: 'chooseAttribute', forTarget: state.forTarget, targetUid, - ...headersObject, }, shouldContinue ); @@ -748,7 +703,6 @@ const FormModal = () => { targetUid: state.targetUid, attributeType: 'component', step: '2', - ...headersObject, }; push({ @@ -787,7 +741,6 @@ const FormModal = () => { modalType: 'chooseAttribute', forTarget: state.forTarget, targetUid: state.targetUid, - ...headersObject, }; push({ search: makeSearch(nextSearch, shouldContinue) }); @@ -813,7 +766,6 @@ const FormModal = () => { targetUid: state.targetUid, attributeType: 'component', step: '2', - ...headersObject, }; trackUsage('willCreateComponentFromAttributesModal'); @@ -865,10 +817,6 @@ const FormModal = () => { modalType: 'chooseAttribute', forTarget: 'components', targetUid: componentUid, - ...headersObject, - [`header_label_${nextHeaderIndex}`]: modifiedData.name, - [`header_info_category_${nextHeaderIndex}`]: category, - [`header_info_name_${nextHeaderIndex}`]: componentToCreate.name, }; push({ @@ -913,10 +861,6 @@ const FormModal = () => { modalType: 'chooseAttribute', forTarget: 'components', targetUid: componentUid, - ...headersObject, - [`header_label_${nextHeaderIndex}`]: modifiedData.name, - [`header_info_category_${nextHeaderIndex}`]: category, - [`header_info_name_${nextHeaderIndex}`]: modifiedData.componentToCreate.name, }; push({ search: makeSearch(searchToOpenAddField, true) }); @@ -1052,7 +996,7 @@ const FormModal = () => { formErrors, isAddingAComponentToAnotherComponent, isCreatingComponentWhileAddingAField, - mainBoxHeader: get(headers, [0, 'label'], ''), + mainBoxHeader: mainSchemaName, modifiedData, naturePickerType: state.forTarget, isCreating, diff --git a/packages/core/content-type-builder/admin/src/components/FormModal/utils/createHeadersArray.js b/packages/core/content-type-builder/admin/src/components/FormModal/utils/createHeadersArray.js deleted file mode 100644 index 14d1092f07..0000000000 --- a/packages/core/content-type-builder/admin/src/components/FormModal/utils/createHeadersArray.js +++ /dev/null @@ -1,24 +0,0 @@ -import { set } from 'lodash'; - -const ALLOWED_KEYS = ['header_label', 'header_info_category', 'header_info_name']; -const createHeadersArray = obj => { - const array = Object.keys(obj).reduce((acc, current) => { - const splitted = current.split('_'); - const currentKeys = splitted.filter((_, i) => i !== splitted.length - 1); - - if (ALLOWED_KEYS.includes(currentKeys.join('_'))) { - const currentKeysIndex = parseInt(splitted[splitted.length - 1] - 1, 10); - const path = [currentKeysIndex, ...currentKeys.filter(key => key !== 'header')]; - - const value = obj[current]; - - set(acc, path, value); - } - - return acc; - }, []); - - return array.filter(obj => obj.label !== null); -}; - -export default createHeadersArray; diff --git a/packages/core/content-type-builder/admin/src/components/FormModal/utils/createHeadersObjectFromArray.js b/packages/core/content-type-builder/admin/src/components/FormModal/utils/createHeadersObjectFromArray.js deleted file mode 100644 index 9712d9e0c8..0000000000 --- a/packages/core/content-type-builder/admin/src/components/FormModal/utils/createHeadersObjectFromArray.js +++ /dev/null @@ -1,27 +0,0 @@ -import { isObject } from 'lodash'; - -const createHeadersObjectFromArray = array => { - return array.reduce((acc, current, index) => { - const createHeaderObject = (obj, i, middle = '') => - Object.keys(obj).reduce((acc1, current1) => { - if (isObject(obj[current1])) { - return { - ...acc1, - ...createHeaderObject(obj[current1], i, `_${current1}`), - }; - } - - const name = `header${middle}_${current1}_${i}`; - - acc1[name] = obj[current1]; - - return acc1; - }, {}); - - const headerObject = createHeaderObject(current, index + 1); - - return { ...acc, ...headerObject }; - }, {}); -}; - -export default createHeadersObjectFromArray; diff --git a/packages/core/content-type-builder/admin/src/components/FormModal/utils/index.js b/packages/core/content-type-builder/admin/src/components/FormModal/utils/index.js index deb9fc6e48..ef375947e1 100644 --- a/packages/core/content-type-builder/admin/src/components/FormModal/utils/index.js +++ b/packages/core/content-type-builder/admin/src/components/FormModal/utils/index.js @@ -1,6 +1,4 @@ export { default as canEditContentType } from './canEditContentType'; -export { default as createHeadersArray } from './createHeadersArray'; -export { default as createHeadersObjectFromArray } from './createHeadersObjectFromArray'; export { default as getAttributesToDisplay } from './getAttributesToDisplay'; export { default as getModalTitleSubHeader } from './getModalTitleSubHeader'; export { default as getNextSearch } from './getNextSearch'; diff --git a/packages/core/content-type-builder/admin/src/components/FormModal/utils/staticData.js b/packages/core/content-type-builder/admin/src/components/FormModal/utils/staticData.js index 44bd3bd71c..47c7b0adad 100644 --- a/packages/core/content-type-builder/admin/src/components/FormModal/utils/staticData.js +++ b/packages/core/content-type-builder/admin/src/components/FormModal/utils/staticData.js @@ -11,21 +11,6 @@ const INITIAL_STATE_DATA = { settingType: null, step: null, targetUid: null, - header_label_1: null, - header_info_category_1: null, - header_info_name_1: null, - header_label_2: null, - header_info_category_2: null, - header_info_name_2: null, - header_label_3: null, - header_info_category_3: null, - header_info_name_3: null, - header_label_4: null, - header_info_category_4: null, - header_info_name_4: null, - header_label_5: null, - header_info_category_5: null, - header_info_name_5: null, }; export { INITIAL_STATE_DATA }; diff --git a/packages/core/content-type-builder/admin/src/components/FormModal/utils/tests/createHeadersArray.test.js b/packages/core/content-type-builder/admin/src/components/FormModal/utils/tests/createHeadersArray.test.js deleted file mode 100644 index f682b97601..0000000000 --- a/packages/core/content-type-builder/admin/src/components/FormModal/utils/tests/createHeadersArray.test.js +++ /dev/null @@ -1,112 +0,0 @@ -import createHeadersArray from '../createHeadersArray'; - -describe('FormModal | utils | createHeadersArray', () => { - it('should return an empty array if no header key is set', () => { - const data = { - actionType: null, - attributeName: null, - attributeType: null, - dynamicZoneTarget: null, - forTarget: null, - modalType: null, - pathToSchema: [], - settingType: null, - step: null, - targetUid: null, - header_label_1: null, - header_info_category_1: null, - header_info_name_1: null, - header_label_2: null, - header_info_category_2: null, - header_info_name_2: null, - header_label_3: null, - header_info_category_3: null, - header_info_name_3: null, - }; - - expect(createHeadersArray(data)).toEqual([]); - }); - - it('should return an array containing a header object', () => { - const data = { - actionType: 'something', - attributeName: null, - attributeType: null, - dynamicZoneTarget: null, - forTarget: null, - modalType: null, - pathToSchema: [], - settingType: null, - step: null, - targetUid: null, - header_label_1: 'restaurant', - header_info_category_1: null, - header_info_name_1: null, - header_label_2: null, - header_info_category_2: null, - header_info_name_2: null, - header_label_3: null, - header_info_category_3: null, - header_info_name_3: null, - }; - const expected = [ - { - label: 'restaurant', - - info: { - name: null, - category: null, - }, - }, - ]; - - expect(createHeadersArray(data)).toEqual(expected); - }); - - it('should handle multiple headers correctly', () => { - const data = { - actionType: 'something', - attributeName: null, - attributeType: null, - dynamicZoneTarget: null, - forTarget: null, - - modalType: null, - pathToSchema: [], - settingType: null, - step: null, - - targetUid: null, - header_label_1: 'restaurant', - header_info_category_1: null, - header_info_name_1: null, - header_label_2: 'closing period', - header_info_category_2: 'default', - header_info_name_2: 'closingperiod', - header_label_3: null, - header_info_category_3: null, - header_info_name_3: null, - }; - - const expected = [ - { - label: 'restaurant', - - info: { - name: null, - category: null, - }, - }, - { - label: 'closing period', - - info: { - name: 'closingperiod', - category: 'default', - }, - }, - ]; - - expect(createHeadersArray(data)).toEqual(expected); - }); -}); diff --git a/packages/core/content-type-builder/admin/src/components/FormModal/utils/tests/createHeadersObjectFromArray.test.js b/packages/core/content-type-builder/admin/src/components/FormModal/utils/tests/createHeadersObjectFromArray.test.js deleted file mode 100644 index 18061d5428..0000000000 --- a/packages/core/content-type-builder/admin/src/components/FormModal/utils/tests/createHeadersObjectFromArray.test.js +++ /dev/null @@ -1,37 +0,0 @@ -import createHeadersObjectFromArray from '../createHeadersObjectFromArray'; - -describe('FormModal | utils | createHeadersArray', () => { - it('should return a header object', () => { - const data = [ - { - label: 'test', - - info: { - name: null, - category: null, - }, - }, - { - label: 'test2', - - info: { - name: 'something', - category: 'default', - }, - }, - ]; - - const expected = { - header_label_1: 'test', - - header_info_name_1: null, - header_info_category_1: null, - header_label_2: 'test2', - - header_info_name_2: 'something', - header_info_category_2: 'default', - }; - - expect(createHeadersObjectFromArray(data)).toEqual(expected); - }); -}); diff --git a/packages/core/content-type-builder/admin/src/components/FormModalHeader/index.js b/packages/core/content-type-builder/admin/src/components/FormModalHeader/index.js index 9b902087de..c7d9a39ced 100644 --- a/packages/core/content-type-builder/admin/src/components/FormModalHeader/index.js +++ b/packages/core/content-type-builder/admin/src/components/FormModalHeader/index.js @@ -66,7 +66,7 @@ const FormModalHeader = ({ - {formatMessage({ id: headerId }, { name: schema.schema.name })} + {formatMessage({ id: headerId }, { name: schema?.schema.name })} diff --git a/packages/core/content-type-builder/admin/src/components/List/index.js b/packages/core/content-type-builder/admin/src/components/List/index.js index fa866873c8..55cabc9414 100644 --- a/packages/core/content-type-builder/admin/src/components/List/index.js +++ b/packages/core/content-type-builder/admin/src/components/List/index.js @@ -7,7 +7,6 @@ /* eslint-disable import/no-cycle */ import React from 'react'; import PropTypes from 'prop-types'; -import get from 'lodash/get'; import { EmptyBodyTable, useTracking } from '@strapi/helper-plugin'; import { Box } from '@strapi/parts/Box'; import { Button } from '@strapi/parts/Button'; @@ -27,21 +26,17 @@ import NestedTFooter from '../NestedTFooter'; /* eslint-disable jsx-a11y/no-static-element-interactions */ function List({ - customRowComponent, - items, addComponentToDZ, - targetUid, - mainTypeName, + customRowComponent, editTarget, - isFromDynamicZone, - isNestedInDZComponent, - isMain, - firstLoopComponentName, firstLoopComponentUid, - secondLoopComponentName, - secondLoopComponentUid, + isFromDynamicZone, + isMain, + isNestedInDZComponent, isSub, - dzName, + items, + secondLoopComponentUid, + targetUid, }) { const { formatMessage } = useIntl(); const { trackUsage } = useTracking(); @@ -51,87 +46,7 @@ function List({ const onClickAddField = () => { trackUsage('hasClickedCTBAddFieldBanner'); - const firstComponentCategory = get( - modifiedData, - ['components', firstLoopComponentUid, 'category'], - null - ); - const firstComponentFriendlyName = get( - modifiedData, - ['components', firstLoopComponentUid, 'schema', 'name'], - null - ); - const secondComponentCategory = get( - modifiedData, - ['components', secondLoopComponentUid, 'category'], - null - ); - const secondComponentFriendlyName = get( - modifiedData, - ['components', secondLoopComponentUid, 'schema', 'name'], - null - ); - - let firstHeaderObject = { - header_label_1: mainTypeName, - header_info_category_1: null, - header_info_name_1: null, - }; - let secondHeaderObject = { - header_label_2: firstLoopComponentName, - header_info_category_2: firstComponentCategory, - header_info_name_2: firstComponentFriendlyName, - }; - let thirdHeaderObject = { - header_info_name_3: secondComponentFriendlyName, - }; - let fourthHeaderObject = { - header_info_category_4: secondComponentCategory, - header_info_name_4: secondComponentFriendlyName, - }; - - if (firstLoopComponentName) { - firstHeaderObject = { - ...firstHeaderObject, - }; - } - - if (secondLoopComponentUid) { - firstHeaderObject = { - ...firstHeaderObject, - }; - thirdHeaderObject = { - ...thirdHeaderObject, - }; - } - - if (isFromDynamicZone || isNestedInDZComponent) { - secondHeaderObject = { - ...secondHeaderObject, - header_label_2: dzName, - header_info_category_2: null, - header_info_name_2: null, - }; - thirdHeaderObject = { - ...thirdHeaderObject, - header_label_3: firstLoopComponentName, - header_info_category_3: firstComponentCategory, - header_info_name_3: firstComponentFriendlyName, - }; - fourthHeaderObject = { - ...fourthHeaderObject, - header_label_4: secondLoopComponentName, - }; - } - - openModalAddField( - editTarget, - targetUid, - firstHeaderObject, - secondHeaderObject, - thirdHeaderObject, - fourthHeaderObject - ); + openModalAddField(editTarget, targetUid); }; if (!targetUid) { @@ -239,15 +154,11 @@ function List({ @@ -256,11 +167,8 @@ function List({ {...item} customRowComponent={customRowComponent} targetUid={targetUid} - dzName={dzName} isNestedInDZComponent={isFromDynamicZone} - mainTypeName={mainTypeName} editTarget={editTarget} - firstLoopComponentName={firstLoopComponentName} firstLoopComponentUid={firstLoopComponentUid} /> )} @@ -271,7 +179,6 @@ function List({ customRowComponent={customRowComponent} addComponent={addComponentToDZ} targetUid={targetUid} - mainTypeName={mainTypeName} /> )} @@ -315,15 +222,12 @@ function List({ List.defaultProps = { addComponentToDZ: () => {}, customRowComponent: null, - dzName: null, - firstLoopComponentName: null, firstLoopComponentUid: null, isFromDynamicZone: false, isNestedInDZComponent: false, isMain: false, isSub: false, items: [], - secondLoopComponentName: null, secondLoopComponentUid: null, targetUid: null, }; @@ -331,16 +235,12 @@ List.defaultProps = { List.propTypes = { addComponentToDZ: PropTypes.func, customRowComponent: PropTypes.func, - dzName: PropTypes.string, editTarget: PropTypes.string.isRequired, - firstLoopComponentName: PropTypes.string, firstLoopComponentUid: PropTypes.string, isFromDynamicZone: PropTypes.bool, isNestedInDZComponent: PropTypes.bool, isMain: PropTypes.bool, items: PropTypes.instanceOf(Array), - mainTypeName: PropTypes.string.isRequired, - secondLoopComponentName: PropTypes.string, secondLoopComponentUid: PropTypes.string, targetUid: PropTypes.string, isSub: PropTypes.bool, diff --git a/packages/core/content-type-builder/admin/src/components/ListRow/index.js b/packages/core/content-type-builder/admin/src/components/ListRow/index.js index 0a81f41e4f..06059c8d4a 100644 --- a/packages/core/content-type-builder/admin/src/components/ListRow/index.js +++ b/packages/core/content-type-builder/admin/src/components/ListRow/index.js @@ -1,6 +1,6 @@ import React, { memo } from 'react'; import PropTypes from 'prop-types'; -import { get } from 'lodash'; +import get from 'lodash/get'; import upperFirst from 'lodash/upperFirst'; import { useIntl } from 'react-intl'; import { IconButton } from '@strapi/parts/IconButton'; @@ -20,25 +20,20 @@ import AttributeIcon from '../AttributeIcon'; function ListRow({ configurable, + editTarget, + firstLoopComponentUid, + isFromDynamicZone, name, - dzName, onClick, plugin, + relation, + repeatable, + secondLoopComponentUid, target, targetUid, type, - mainTypeName, - editTarget, - firstLoopComponentName, - firstLoopComponentUid, - isFromDynamicZone, - repeatable, - secondLoopComponentName, - secondLoopComponentUid, - isNestedInDZComponent, - relation, }) { - const { contentTypes, isInDevelopmentMode, modifiedData, removeAttribute } = useDataManager(); + const { contentTypes, isInDevelopmentMode, removeAttribute } = useDataManager(); const { formatMessage } = useIntl(); const isMorph = type === 'relation' && relation.includes('morph'); @@ -61,99 +56,8 @@ function ListRow({ } if (configurable !== false) { - const firstComponentCategory = get( - modifiedData, - ['components', firstLoopComponentUid, 'category'], - null - ); - const secondComponentCategory = get( - modifiedData, - ['components', secondLoopComponentUid, 'category'], - null - ); - const attrType = type; - let firstHeaderObject = { - header_label_1: mainTypeName, - header_info_category_1: null, - header_info_name_1: null, - }; - let secondHeaderObject = { - header_label_2: name, - header_info_category_2: null, - header_info_name_2: null, - }; - let thirdHeaderObject = { - header_info_category_3: null, - header_info_name_3: null, - }; - let fourthHeaderObject = { - header_info_category_4: null, - header_info_name_4: null, - }; - let fifthHeaderObject = { - header_info_category_5: null, - header_info_name_5: null, - }; - - if (firstLoopComponentName) { - secondHeaderObject = { - header_label_2: firstLoopComponentName, - header_info_category_2: firstComponentCategory, - header_info_name_2: firstLoopComponentName, - }; - - thirdHeaderObject = { - ...thirdHeaderObject, - header_label_3: name, - }; - } - - if (secondLoopComponentUid) { - thirdHeaderObject = { - ...thirdHeaderObject, - header_label_3: secondLoopComponentName, - header_info_category_3: secondComponentCategory, - header_info_name_3: secondLoopComponentName, - }; - fourthHeaderObject = { - ...fourthHeaderObject, - header_label_4: name, - }; - } - - if (isFromDynamicZone || isNestedInDZComponent) { - secondHeaderObject = { - header_label_2: dzName, - header_info_name_2: null, - header_info_category_2: null, - }; - thirdHeaderObject = { - header_label_3: firstLoopComponentName, - header_info_name_3: firstComponentCategory, - header_info_category_3: firstComponentCategory, - }; - - if (!isNestedInDZComponent) { - fourthHeaderObject = { - header_info_category_4: null, - header_label_4: name, - }; - } else { - fourthHeaderObject = { - header_info_category_4: secondComponentCategory, - header_info_name_4: secondLoopComponentName, - header_label_4: secondLoopComponentName, - }; - - fifthHeaderObject = { - ...fifthHeaderObject, - header_label_5: name, - }; - } - } - onClick( // Tells where the attribute is located in the main modifiedData object : contentType, component or components editTarget, @@ -162,12 +66,7 @@ function ListRow({ // Name of the attribute name, // Type of the attribute - attrType, - firstHeaderObject, - secondHeaderObject, - thirdHeaderObject, - fourthHeaderObject, - fifthHeaderObject + attrType ); } }; @@ -277,16 +176,12 @@ function ListRow({ ListRow.defaultProps = { configurable: true, - dzName: null, - firstLoopComponentName: null, firstLoopComponentUid: null, isFromDynamicZone: false, - isNestedInDZComponent: false, onClick: () => {}, plugin: null, relation: '', repeatable: false, - secondLoopComponentName: null, secondLoopComponentUid: null, target: null, targetUid: null, @@ -295,19 +190,14 @@ ListRow.defaultProps = { ListRow.propTypes = { configurable: PropTypes.bool, - dzName: PropTypes.string, editTarget: PropTypes.string.isRequired, - firstLoopComponentName: PropTypes.string, firstLoopComponentUid: PropTypes.string, isFromDynamicZone: PropTypes.bool, - isNestedInDZComponent: PropTypes.bool, - mainTypeName: PropTypes.string.isRequired, name: PropTypes.string.isRequired, onClick: PropTypes.func, plugin: PropTypes.string, relation: PropTypes.string, repeatable: PropTypes.bool, - secondLoopComponentName: PropTypes.string, secondLoopComponentUid: PropTypes.string, target: PropTypes.string, targetUid: PropTypes.string, diff --git a/packages/core/content-type-builder/admin/src/components/SelectComponent/index.js b/packages/core/content-type-builder/admin/src/components/SelectComponent/index.js index ab986b6257..a013dbcab6 100644 --- a/packages/core/content-type-builder/admin/src/components/SelectComponent/index.js +++ b/packages/core/content-type-builder/admin/src/components/SelectComponent/index.js @@ -60,8 +60,6 @@ const SelectComponent = ({ } if (isCreatingComponentWhileAddingAField) { - console.log({ componentToCreate }); - options = [ { uid: value, label: componentToCreate.name, categoryName: componentToCreate.category }, ]; diff --git a/packages/core/content-type-builder/admin/src/pages/ListView/index.js b/packages/core/content-type-builder/admin/src/pages/ListView/index.js index 9ca7a5381f..d85e1eb577 100644 --- a/packages/core/content-type-builder/admin/src/pages/ListView/index.js +++ b/packages/core/content-type-builder/admin/src/pages/ListView/index.js @@ -73,14 +73,7 @@ const ListView = () => { // const hasModelBeenModified = !isEqual(modifiedData, initialData); const forTarget = isInContentTypeView ? 'contentType' : 'component'; - const handleClickAddField = async ( - forTarget, - targetUid, - firstHeaderObj, - secondHeaderObj, - thirdHeaderObj, - fourthHeaderObj - ) => { + const handleClickAddField = async (forTarget, targetUid) => { // disable the prompt // await wait(); @@ -88,22 +81,12 @@ const ListView = () => { modalType: 'chooseAttribute', forTarget, targetUid, - ...firstHeaderObj, - ...secondHeaderObj, - ...thirdHeaderObj, - ...fourthHeaderObj, }; push({ search: makeSearch(searchObj) }); }; const handleClickAddComponentToDZ = async dzName => { - const firstHeaderObject = { - header_label_1: currentDataName, - }; - const secondHeaderObj = { - header_label_2: dzName, - }; const search = { modalType: 'addComponentToDynamicZone', forTarget: 'contentType', @@ -112,8 +95,6 @@ const ListView = () => { settingType: 'base', step: '1', actionType: 'edit', - ...firstHeaderObject, - ...secondHeaderObj, }; // await wait(); @@ -121,17 +102,7 @@ const ListView = () => { push({ search: makeSearch(search, true) }); }; - const handleClickEditField = async ( - forTarget, - targetUid, - attributeName, - type, - firstHeaderObj, - secondHeaderObj, - thirdHeaderObj, - fourthHeaderObj, - fifthHeaderObj - ) => { + const handleClickEditField = async (forTarget, targetUid, attributeName, type) => { const attributeType = getAttributeDisplayedType(type); // await wait(); @@ -145,11 +116,6 @@ const ListView = () => { attributeName, attributeType, step: type === 'component' ? '2' : null, - ...firstHeaderObj, - ...secondHeaderObj, - ...thirdHeaderObj, - ...fourthHeaderObj, - ...fifthHeaderObj, }; // await wait(); @@ -214,7 +180,6 @@ const ListView = () => { settingType: 'base', forTarget: firstMainDataPath, targetUid, - header_label_1: label, }), }); }; @@ -238,10 +203,7 @@ const ListView = () => { startIcon={} variant="secondary" onClick={() => { - const headerDisplayObject = { - header_label_1: currentDataName, - }; - handleClickAddField(forTarget, targetUid, headerDisplayObject); + handleClickAddField(forTarget, targetUid); }} > {formatMessage({ id: getTrad('button.attributes.add.another') })}