From d7b0c1190ad4e28f9e7af08aec0b4bd06df6e091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tha=C3=AFs?= Date: Fri, 27 Oct 2023 12:13:01 +0200 Subject: [PATCH] feat: add Object Field Edit page sections (#2243) Closes #2160, Closes #2163 --- .../metadata/hooks/useObjectMetadata.ts | 3 +- .../modules/metadata/utils/getFieldSlug.ts | 6 ++ .../SettingsObjectFieldTypeSelectSection.tsx | 7 +- front/src/modules/types/SettingsPath.ts | 2 +- .../ui/display/icon/types/IconComponent.ts | 1 + .../modules/ui/input/components/Select.tsx | 56 ++++++---- .../components/__stories__/Select.stories.tsx | 4 + .../data-model/SettingsObjectDetail.tsx | 53 ++++----- .../data-model/SettingsObjectEdit.tsx | 102 +++++++++--------- .../data-model/SettingsObjectFieldEdit.tsx | 65 +++++++++-- .../SettingsObjectNewFieldStep1.tsx | 25 +++-- .../SettingsObjectNewFieldStep2.tsx | 16 ++- 12 files changed, 206 insertions(+), 134 deletions(-) create mode 100644 front/src/modules/metadata/utils/getFieldSlug.ts diff --git a/front/src/modules/metadata/hooks/useObjectMetadata.ts b/front/src/modules/metadata/hooks/useObjectMetadata.ts index 69e7f31a9..cb250c019 100644 --- a/front/src/modules/metadata/hooks/useObjectMetadata.ts +++ b/front/src/modules/metadata/hooks/useObjectMetadata.ts @@ -8,7 +8,7 @@ import { useFindManyMetadataObjects } from './useFindManyMetadataObjects'; import { useUpdateOneMetadataObject } from './useUpdateOneMetadataObject'; export const useObjectMetadata = () => { - const { metadataObjects } = useFindManyMetadataObjects(); + const { metadataObjects, loading } = useFindManyMetadataObjects(); const activeMetadataObjects = metadataObjects.filter( ({ isActive }) => isActive, @@ -68,5 +68,6 @@ export const useObjectMetadata = () => { editObject, eraseObject, findActiveObjectBySlug, + loading, }; }; diff --git a/front/src/modules/metadata/utils/getFieldSlug.ts b/front/src/modules/metadata/utils/getFieldSlug.ts new file mode 100644 index 000000000..89582a5ac --- /dev/null +++ b/front/src/modules/metadata/utils/getFieldSlug.ts @@ -0,0 +1,6 @@ +import toKebabCase from 'lodash.kebabcase'; + +import { Field } from '~/generated-metadata/graphql'; + +export const getFieldSlug = (metadataField: Pick) => + toKebabCase(metadataField.label); diff --git a/front/src/modules/settings/data-model/components/SettingsObjectFieldTypeSelectSection.tsx b/front/src/modules/settings/data-model/components/SettingsObjectFieldTypeSelectSection.tsx index f13fabd67..34dc07127 100644 --- a/front/src/modules/settings/data-model/components/SettingsObjectFieldTypeSelectSection.tsx +++ b/front/src/modules/settings/data-model/components/SettingsObjectFieldTypeSelectSection.tsx @@ -6,16 +6,18 @@ import { dataTypes } from '../constants/dataTypes'; import { ObjectFieldDataType } from '../types/ObjectFieldDataType'; type SettingsObjectFieldTypeSelectSectionProps = { + disabled?: boolean; + onChange?: (value: ObjectFieldDataType) => void; type: ObjectFieldDataType; - onChange: (value: ObjectFieldDataType) => void; }; // TODO: remove "relation" type for now, add it back when the backend is ready. const { relation: _, ...dataTypesWithoutRelation } = dataTypes; export const SettingsObjectFieldTypeSelectSection = ({ - type, + disabled, onChange, + type, }: SettingsObjectFieldTypeSelectSectionProps) => (