Skip to content

Commit

Permalink
Merge pull request strapi#17438 from strapi/chore/configure-the-view-…
Browse files Browse the repository at this point in the history
…drop-lod

Chore: Drop lodash from configure the view page
  • Loading branch information
gu-stav authored Jul 25, 2023
2 parents f21cab4 + aa83188 commit 2b019af
Showing 5 changed files with 53 additions and 74 deletions.
Original file line number Diff line number Diff line change
@@ -23,11 +23,7 @@ import {
} from '@strapi/helper-plugin';
import { ArrowLeft, Check } from '@strapi/icons';
import cloneDeep from 'lodash/cloneDeep';
import flatMap from 'lodash/flatMap';
import get from 'lodash/get';
import isEqual from 'lodash/isEqual';
import pick from 'lodash/pick';
import set from 'lodash/set';
import upperFirst from 'lodash/upperFirst';
import PropTypes from 'prop-types';
import { useIntl } from 'react-intl';
@@ -57,13 +53,13 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd
const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);
const { componentLayouts, initialData, modifiedData, metaToEdit, metaForm } = reducerState;
const { formatMessage } = useIntl();
const modelName = get(mainLayout, ['info', 'displayName'], '');
const attributes = get(modifiedData, ['attributes'], {});
const modelName = mainLayout.info.displayName;
const attributes = modifiedData?.attributes ?? {};
const fieldSizes = useSelector(selectFieldSizes);
const { put } = useFetchClient();

const entryTitleOptions = Object.keys(attributes).filter((attr) => {
const type = get(attributes, [attr, 'type'], '');
const type = attributes?.[attr]?.type ?? '';

return (
![
@@ -80,10 +76,10 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd
].includes(type) && !!type
);
});
const editLayout = get(modifiedData, ['layouts', 'edit'], []);
const displayedFields = flatMap(editLayout, 'rowContent');
const editLayout = modifiedData.layouts.edit;
const displayedFields = editLayout.flatMap((layout) => layout.rowContent);
const editLayoutFields = Object.keys(modifiedData.attributes)
.filter((attr) => get(modifiedData, ['metadatas', attr, 'edit', 'visible'], false) === true)
.filter((attr) => (modifiedData?.metadatas?.[attr]?.edit?.visible ?? false) === true)
.filter((attr) => displayedFields.findIndex((el) => el.name === attr) === -1)
.sort();

@@ -160,9 +156,15 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd
const { isLoading: isSubmittingForm } = submitMutation;

const handleConfirm = () => {
const body = pick(cloneDeep(modifiedData), ['layouts', 'metadatas', 'settings']);
set(body, 'layouts.edit', unformatLayout(body.layouts.edit));
submitMutation.mutate(body);
const { layouts, metadatas, settings } = cloneDeep(modifiedData);
submitMutation.mutate({
layouts: {
...layouts,
edit: unformatLayout(layouts.edit),
},
metadatas,
settings,
});
};

const handleMoveRelation = (fromIndex, toIndex) => {
@@ -368,8 +370,8 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd
onToggle={handleToggleModal}
onMetaChange={handleMetaChange}
onSizeChange={handleSizeChange}
type={get(attributes, [metaToEdit, 'type'], '')}
customFieldUid={get(attributes, [metaToEdit, 'customField'], '')}
type={attributes?.[metaToEdit]?.type ?? ''}
customFieldUid={attributes?.[metaToEdit]?.customField ?? ''}
/>
)}
</Main>
Original file line number Diff line number Diff line change
@@ -17,10 +17,7 @@ import {
useTracking,
} from '@strapi/helper-plugin';
import { ArrowLeft, Check } from '@strapi/icons';
import get from 'lodash/get';
import isEmpty from 'lodash/isEmpty';
import isEqual from 'lodash/isEqual';
import pick from 'lodash/pick';
import upperFirst from 'lodash/upperFirst';
import PropTypes from 'prop-types';
import { stringify } from 'qs';
@@ -35,7 +32,6 @@ import { EditFieldForm } from './components/EditFieldForm';
import { Settings } from './components/Settings';
import { SortDisplayedFields } from './components/SortDisplayedFields';
import { EXCLUDED_SORT_ATTRIBUTE_TYPES } from './constants';
import init from './init';
import reducer, { initialState } from './reducer';

const ListSettingsView = ({ layout, slug }) => {
@@ -45,14 +41,19 @@ const ListSettingsView = ({ layout, slug }) => {
const pluginsQueryParams = usePluginsQueryParams();
const toggleNotification = useNotification();
const { refetchData } = useContext(ModelsContext);

const [showWarningSubmit, setWarningSubmit] = useState(false);
const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);
const [reducerState, dispatch] = useReducer(reducer, initialState, () =>
init(initialState, layout)
const [{ fieldToEdit, fieldForm, initialData, modifiedData }, dispatch] = useReducer(
reducer,
initialState,
() => ({
...initialState,
initialData: layout,
modifiedData: layout,
})
);
const { fieldToEdit, fieldForm, initialData, modifiedData } = reducerState;
const isModalFormOpen = !isEmpty(fieldForm);

const isModalFormOpen = Object.keys(fieldForm).length !== 0;

const { attributes } = layout;
const displayedFields = modifiedData.layouts.list;
@@ -84,9 +85,30 @@ const ListSettingsView = ({ layout, slug }) => {
});
};

const { isLoading: isSubmittingForm, mutate } = useMutation(
(body) => put(`/content-manager/content-types/${slug}/configuration`, body),
{
onSuccess() {
trackUsage('didEditListSettings');
refetchData();
},
onError() {
toggleNotification({
type: 'warning',
message: { id: 'notification.error' },
});
},
}
);

const handleConfirm = async () => {
const body = pick(modifiedData, ['layouts', 'settings', 'metadatas']);
submitMutation.mutate(body);
const { layouts, settings, metadatas } = modifiedData;

mutate({
layouts,
settings,
metadatas,
});
};

const handleAddField = (item) => {
@@ -139,23 +161,6 @@ const ListSettingsView = ({ layout, slug }) => {
handleCloseModal();
};

const submitMutation = useMutation(
(body) => put(`/content-manager/content-types/${slug}/configuration`, body),
{
onSuccess() {
trackUsage('didEditListSettings');
refetchData();
},
onError() {
toggleNotification({
type: 'warning',
message: { id: 'notification.error' },
});
},
}
);
const { isLoading: isSubmittingForm } = submitMutation;

const handleChangeEditLabel = ({ target: { name, value } }) => {
dispatch({
type: 'ON_CHANGE_FIELD_METAS',
@@ -271,7 +276,7 @@ const ListSettingsView = ({ layout, slug }) => {
onChangeEditLabel={handleChangeEditLabel}
onCloseModal={handleCloseModal}
onSubmit={handleSubmitFieldEdit}
type={get(attributes, [fieldToEdit, 'type'], 'text')}
type={attributes?.[fieldToEdit]?.type ?? 'text'}
/>
)}
</Main>

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import toLower from 'lodash/toLower';

const checkIfAttributeIsDisplayable = (attribute) => {
const type = attribute.type;
const { type } = attribute;

if (type === 'relation') {
return !toLower(attribute.relationType).includes('morph');
return !(attribute?.relationType ?? '').toLowerCase().includes('morph');
}

return !['json', 'dynamiczone', 'richtext', 'password'].includes(type) && !!type;

0 comments on commit 2b019af

Please sign in to comment.