From 91e5e7598b120c01de1ef0e5d35775207771c5f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tha=C3=AFs?= Date: Tue, 5 Mar 2024 07:52:19 -0300 Subject: [PATCH] refactor: use react-hook-form in Settings Data Model Object pages (#4271) Related issue: #3836 --- package.json | 2 + .../components/SettingsObjectFormSection.tsx | 103 ---------- .../SettingsObjectFormSection.stories.tsx | 24 --- .../SettingsDataModelObjectAboutForm.tsx | 120 +++++++++++ ...ttingsDataModelObjectAboutForm.stories.tsx | 43 ++++ .../settings/data-model/SettingsNewObject.tsx | 103 +++++----- .../data-model/SettingsObjectEdit.tsx | 186 +++++++++--------- .../decorators/FormProviderDecorator.tsx | 13 ++ yarn.lock | 11 ++ 9 files changed, 338 insertions(+), 267 deletions(-) delete mode 100644 packages/twenty-front/src/modules/settings/data-model/components/SettingsObjectFormSection.tsx delete mode 100644 packages/twenty-front/src/modules/settings/data-model/components/__stories__/SettingsObjectFormSection.stories.tsx create mode 100644 packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx create mode 100644 packages/twenty-front/src/modules/settings/data-model/objects/forms/components/__stories__/SettingsDataModelObjectAboutForm.stories.tsx create mode 100644 packages/twenty-front/src/testing/decorators/FormProviderDecorator.tsx diff --git a/package.json b/package.json index d0c8e0c6ce..704922c45d 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "@types/facepaint": "^1.2.5", "@types/lodash.camelcase": "^4.3.7", "@types/lodash.merge": "^4.6.7", + "@types/lodash.pick": "^4.3.7", "@types/mailparser": "^3.4.4", "@types/nodemailer": "^6.4.14", "add": "^2.0.6", @@ -112,6 +113,7 @@ "lodash.kebabcase": "^4.1.1", "lodash.merge": "^4.6.2", "lodash.omit": "^4.5.0", + "lodash.pick": "^4.4.0", "lodash.snakecase": "^4.1.1", "lodash.upperfirst": "^4.3.1", "luxon": "^3.3.0", diff --git a/packages/twenty-front/src/modules/settings/data-model/components/SettingsObjectFormSection.tsx b/packages/twenty-front/src/modules/settings/data-model/components/SettingsObjectFormSection.tsx deleted file mode 100644 index 3b8f0ecb67..0000000000 --- a/packages/twenty-front/src/modules/settings/data-model/components/SettingsObjectFormSection.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import styled from '@emotion/styled'; - -import { validateMetadataLabel } from '@/object-metadata/utils/validateMetadataLabel'; -import { H2Title } from '@/ui/display/typography/components/H2Title'; -import { IconPicker } from '@/ui/input/components/IconPicker'; -import { TextArea } from '@/ui/input/components/TextArea'; -import { TextInput } from '@/ui/input/components/TextInput'; -import { Section } from '@/ui/layout/section/components/Section'; - -type SettingsObjectFormSectionProps = { - disabled?: boolean; - icon?: string; - singularName?: string; - pluralName?: string; - description?: string; - onChange?: ( - formValues: Partial<{ - icon: string; - labelSingular: string; - labelPlural: string; - description: string; - }>, - ) => void; -}; - -const StyledInputsContainer = styled.div` - display: flex; - gap: ${({ theme }) => theme.spacing(2)}; - margin-bottom: ${({ theme }) => theme.spacing(2)}; - width: 100%; -`; - -const StyledLabel = styled.span` - color: ${({ theme }) => theme.font.color.light}; - font-size: ${({ theme }) => theme.font.size.xs}; - font-weight: ${({ theme }) => theme.font.weight.semiBold}; - margin-bottom: ${({ theme }) => theme.spacing(1)}; - text-transform: uppercase; -`; - -const StyledInputContainer = styled.div` - display: flex; - flex-direction: column; -`; - -export const SettingsObjectFormSection = ({ - disabled, - icon = 'IconListNumbers', - singularName = '', - pluralName = '', - description = '', - onChange, -}: SettingsObjectFormSectionProps) => ( -
- - - - Icon - { - onChange?.({ icon: icon.iconKey }); - }} - /> - - { - if (!value || validateMetadataLabel(value)) { - onChange?.({ labelSingular: value }); - } - }} - disabled={disabled} - fullWidth - /> - { - if (!value || validateMetadataLabel(value)) { - onChange?.({ labelPlural: value }); - } - }} - disabled={disabled} - fullWidth - /> - -