diff --git a/client/components/combobox.jsx b/client/components/combobox.jsx index f78cbe9a2..c89ccb908 100644 --- a/client/components/combobox.jsx +++ b/client/components/combobox.jsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useRef } from 'react'; +import React, { useState, useEffect, useRef, useCallback } from 'react'; import _ from 'lodash'; import './combobox.less'; @@ -16,6 +16,7 @@ const Combobox = ({ }, valuePatterns = /.+/, options = [], + keepValueOnClose = false, ...props })=>{ const dropdownRef = useRef(null); @@ -30,15 +31,23 @@ const Combobox = ({ } }, []); - const handleClickOutside = (e)=>{ + const handleClickOutside = useCallback((e)=>{ // Close dropdown when clicked outside - if(!dropdownRef.current?.contains(e.target)) handleDropdown(false); - }; + if(!dropdownRef.current?.contains(e.target)) { + handleDropdown(false); + } + }, []); const handleDropdown = (show)=>{ - setValue(show ? '' : defaultValue); + if(show) { + if(autoSuggest.clearAutoSuggestOnClick) { + setValue(''); + } + } else if(!keepValueOnClose) { + setValue(defaultValue); + } setShowDropdown(show); - setInputFocused(autoSuggest.clearAutoSuggestOnClick ? show : false); + setInputFocused(autoSuggest.clearAutoSuggestOnClick && show); }; const handleInput = (e)=>{ diff --git a/client/homebrew/editor/metadataEditor/metadataEditor.jsx b/client/homebrew/editor/metadataEditor/metadataEditor.jsx index 518cc0ac8..54332b468 100644 --- a/client/homebrew/editor/metadataEditor/metadataEditor.jsx +++ b/client/homebrew/editor/metadataEditor/metadataEditor.jsx @@ -262,6 +262,7 @@ const MetadataEditor = ({ id='combobox-language' className='language-dropdown' defaultValue={metadata.lang || ''} + keepValueOnClose={true} placeholder='en' onSelect={(value)=>handleLanguage(value)} onEntry={(e)=>{