✍️ refactor(Textarea): Optimize Text Input & Enhance UX (#2058)

* refactor(useDebouncedInput): make object as input arg and accept setter

* refactor(ChatForm/Textarea): consolidate textarea/form logic to one component, use react-hook-form, programmatically click send button instead of passing submitMessage, forwardRef and memoize SendButton

* refactor(Textarea): use Controller field value to avoid manual update of ref

* chore: remove forms provider

* chore: memoize AttachFile

* refactor(ChatForm/SendButton): only re-render SendButton when there is text input

* chore: make iconURL bigger

* chore: optimize Root/Nav

* refactor(SendButton): memoize disabled prop based on text

* chore: memoize Nav and ChatForm

* chore: remove textarea ref text on submission

* feat(EditMessage): Make Esc exit the edit mode and dismiss changes when editing a message

* style(MenuItem): Display the ☑️  icon only on the selected model
This commit is contained in:
Danny Avila 2024-03-11 09:18:10 -04:00 committed by GitHub
parent f489aee518
commit f307488dd4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 244 additions and 225 deletions

View file

@ -19,7 +19,11 @@ const EditPresetDialog = ({
const localize = useLocalize();
const { preset, setPreset } = useChatContext();
const { setOption } = useSetIndexOptions(preset);
const [onTitleChange, title] = useDebouncedInput(setOption, 'title', preset?.title);
const [onTitleChange, title] = useDebouncedInput({
setOption,
optionKey: 'title',
initialValue: preset?.title,
});
const [presetModalVisible, setPresetModalVisible] = useRecoilState(store.presetModalVisible);
const { data: availableEndpoints = [] } = useGetEndpointsQuery({