From 2c1f69439bbfa23ea3c93efaa71d6d7732d06f86 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Thu, 10 Mar 2022 11:34:55 +0100 Subject: [PATCH] =?UTF-8?q?feat(editor):=20=F0=9F=9A=B8=20Improve=20and=20?= =?UTF-8?q?unify=20inputs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/settings/MetadataForm.tsx | 13 ++-- .../components/shared/DebouncedInput.tsx | 45 ------------- .../components/shared/DebouncedTextarea.tsx | 39 ----------- .../VideoUploadContent.tsx | 6 +- .../bodies/ChoiceInputSettingsBody.tsx | 6 +- .../bodies/CodeSettings.tsx | 7 +- .../ConditionSettingsBody/ComparisonsItem.tsx | 6 +- .../bodies/DateInputSettingsBody.tsx | 14 ++-- .../bodies/EmailInputSettingsBody.tsx | 15 ++--- .../bodies/GoogleAnalyticsSettings.tsx | 23 +++---- .../CellWithValueStack.tsx | 6 +- .../bodies/NumberInputSettingsBody.tsx | 10 +-- .../PhoneNumberSettingsBody.tsx | 15 ++--- .../bodies/RedirectSettings.tsx | 6 +- .../SendEmailSettings/SendEmailSettings.tsx | 25 +++---- .../SendEmailSettings/SmtpConfigForm.tsx | 27 +++++--- .../bodies/SetVariableSettings.tsx | 6 +- .../bodies/TextInputSettingsBody.tsx | 10 +-- .../bodies/UrlInputSettingsBody.tsx | 15 ++--- .../bodies/WebhookSettings/KeyValueInputs.tsx | 10 +-- .../WebhookSettings/VariableForTestInputs.tsx | 6 +- .../WebhookSettings/WebhookSettings.tsx | 6 +- .../ImageUploadContent/ImageUploadContent.tsx | 6 +- .../components/shared/Textbox/Input.tsx | 7 ++ .../TextBox.tsx} | 67 ++++++++++++------- .../components/shared/Textbox/Textarea.tsx | 7 ++ .../components/shared/Textbox/index.tsx | 2 + .../InputWithVariableButton.tsx | 10 --- .../TextareaWithVariableButton.tsx | 10 --- .../TextboxWithVariableButton/index.tsx | 2 - apps/builder/services/utils/index.ts | 1 + apps/builder/services/utils/useRefState.ts | 10 +++ 32 files changed, 187 insertions(+), 251 deletions(-) delete mode 100644 apps/builder/components/shared/DebouncedInput.tsx delete mode 100644 apps/builder/components/shared/DebouncedTextarea.tsx create mode 100644 apps/builder/components/shared/Textbox/Input.tsx rename apps/builder/components/shared/{TextboxWithVariableButton/TextboxWithVariableButton.tsx => Textbox/TextBox.tsx} (73%) create mode 100644 apps/builder/components/shared/Textbox/Textarea.tsx create mode 100644 apps/builder/components/shared/Textbox/index.tsx delete mode 100644 apps/builder/components/shared/TextboxWithVariableButton/InputWithVariableButton.tsx delete mode 100644 apps/builder/components/shared/TextboxWithVariableButton/TextareaWithVariableButton.tsx delete mode 100644 apps/builder/components/shared/TextboxWithVariableButton/index.tsx create mode 100644 apps/builder/services/utils/useRefState.ts diff --git a/apps/builder/components/settings/MetadataForm.tsx b/apps/builder/components/settings/MetadataForm.tsx index 2ce264da6..e64c82000 100644 --- a/apps/builder/components/settings/MetadataForm.tsx +++ b/apps/builder/components/settings/MetadataForm.tsx @@ -9,10 +9,7 @@ import { PopoverContent, } from '@chakra-ui/react' import { ImageUploadContent } from 'components/shared/ImageUploadContent' -import { - InputWithVariableButton, - TextareaWithVariableButton, -} from 'components/shared/TextboxWithVariableButton' +import { Input, Textarea } from 'components/shared/Textbox' type Props = { typebotName: string @@ -89,9 +86,9 @@ export const MetadataForm = ({ Title: - @@ -99,9 +96,9 @@ export const MetadataForm = ({ Description: - diff --git a/apps/builder/components/shared/DebouncedInput.tsx b/apps/builder/components/shared/DebouncedInput.tsx deleted file mode 100644 index 642603f2f..000000000 --- a/apps/builder/components/shared/DebouncedInput.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { Input, InputProps } from '@chakra-ui/react' -import { - ChangeEvent, - ForwardedRef, - forwardRef, - useEffect, - useState, -} from 'react' -import { useDebounce } from 'use-debounce' - -type Props = Omit & { - initialValue: string - onChange: (debouncedValue: string) => void -} - -export const DebouncedInput = forwardRef( - ( - { onChange, initialValue, ...props }: Props, - ref: ForwardedRef - ) => { - const [currentValue, setCurrentValue] = useState(initialValue) - const [debouncedValue] = useDebounce( - currentValue, - process.env.NEXT_PUBLIC_E2E_TEST ? 0 : 1000 - ) - - useEffect(() => { - if (debouncedValue === initialValue) return - onChange(debouncedValue) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [debouncedValue]) - - const handleChange = (e: ChangeEvent) => - setCurrentValue(e.target.value) - - return ( - - ) - } -) diff --git a/apps/builder/components/shared/DebouncedTextarea.tsx b/apps/builder/components/shared/DebouncedTextarea.tsx deleted file mode 100644 index 074140e08..000000000 --- a/apps/builder/components/shared/DebouncedTextarea.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { Textarea, TextareaProps } from '@chakra-ui/react' -import { ChangeEvent, useEffect, useState } from 'react' -import { useDebounce } from 'use-debounce' - -type Props = Omit & { - initialValue: string - onChange: (debouncedValue: string) => void -} - -export const DebouncedTextarea = ({ - onChange, - initialValue, - ...props -}: Props) => { - const [currentValue, setCurrentValue] = useState(initialValue) - const [debouncedValue] = useDebounce( - currentValue, - process.env.NEXT_PUBLIC_E2E_TEST ? 0 : 1000 - ) - - useEffect(() => { - if (debouncedValue === initialValue) return - onChange(debouncedValue) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [debouncedValue]) - - const handleChange = (e: ChangeEvent) => { - setCurrentValue(e.target.value) - } - - return ( -