diff --git a/frontend/ee b/frontend/ee index 715a830c7a..d93ee7e131 160000 --- a/frontend/ee +++ b/frontend/ee @@ -1 +1 @@ -Subproject commit 715a830c7a8d75efc7f77106292d9e4499005b69 +Subproject commit d93ee7e1318f044ef2327671b8b257648071453d diff --git a/frontend/src/AppBuilder/RightSideBar/Inspector/Components/Select.jsx b/frontend/src/AppBuilder/RightSideBar/Inspector/Components/Select.jsx index ded481fadb..12d4d68102 100644 --- a/frontend/src/AppBuilder/RightSideBar/Inspector/Components/Select.jsx +++ b/frontend/src/AppBuilder/RightSideBar/Inspector/Components/Select.jsx @@ -295,7 +295,7 @@ export function Select({ componentMeta, darkMode, ...restProps }) {
{ export const CustomClearIndicator = (props) => { return ( - + ); }; @@ -88,6 +89,7 @@ export const DropdownV2 = ({ padding, } = styles; const isInitialRender = useRef(true); + const [isMenuOpen, setIsMenuOpen] = useState(false); const [currentValue, setCurrentValue] = useState(() => findDefaultItem(schema)); const isMandatory = validation?.mandatory ?? false; const options = properties?.options; @@ -95,11 +97,14 @@ export const DropdownV2 = ({ const { isValid, validationError } = validationStatus; const ref = React.useRef(null); const dropdownRef = React.useRef(null); + const selectRef = React.useRef(null); const [visibility, setVisibility] = useState(properties.visibility); const [isDropdownLoading, setIsDropdownLoading] = useState(dropdownLoadingState); const [isDropdownDisabled, setIsDropdownDisabled] = useState(disabledState); const [searchInputValue, setSearchInputValue] = useState(''); const [userInteracted, setUserInteracted] = useState(false); + const currentMode = useStore((state) => state.currentMode); + const isEditor = currentMode === 'edit'; const _height = padding === 'default' ? `${height}px` : `${height + 4}px`; const labelRef = useRef(); @@ -166,6 +171,12 @@ export const DropdownV2 = ({ setExposedVariable('isValid', validationStatus?.isValid); }; + const handleClickInEditor = (e) => { + if (e.target.className.includes('clear-indicator') || isMenuOpen) return; + e.stopPropagation(); + selectRef.current?.onControlMouseDown(e); + }; + useEffect(() => { setInputValue(findDefaultItem(advanced ? schema : options)); // eslint-disable-next-line react-hooks/exhaustive-deps @@ -353,15 +364,16 @@ export const DropdownV2 = ({ ...provided, padding: '0px', }), - option: (provided) => ({ + option: (provided, _state) => ({ ...provided, - backgroundColor: 'var(--surfaces-surface-01)', + backgroundColor: _state.isFocused ? 'var(--interactive-overlays-fill-hover)' : 'var(--surfaces-surface-01)', color: selectedTextColor !== '#1B1F24' ? selectedTextColor : isDropdownDisabled || isDropdownLoading ? 'var(--text-disabled)' : 'var(--text-primary)', + borderRadius: _state.isFocused && '8px', padding: '8px 6px 8px 38px', '&:hover': { backgroundColor: 'var(--interactive-overlays-fill-hover)', @@ -429,8 +441,14 @@ export const DropdownV2 = ({ _width={_width} top={'1px'} /> -
+
{ - fireEvent('onFocus'); setIsMultiselectOpen(true); + fireEvent('onFocus'); + }} + onMenuClose={() => { + setIsMultiselectOpen(false); + fireEvent('onBlur'); + }} + onKeyDown={(e) => { + if (e.key === 'Enter' && !isMultiselectOpen) { + setIsMultiselectOpen(true); + e.preventDefault(); + } + if (e.key === 'Escape' && isMultiselectOpen) { + setIsMultiselectOpen(false); + e.preventDefault(); + } }} // select props icon={icon} diff --git a/server/ee b/server/ee index 0eefbb71a1..1da04eef69 160000 --- a/server/ee +++ b/server/ee @@ -1 +1 @@ -Subproject commit 0eefbb71a1d5288f49641af5efaaab25970f27d1 +Subproject commit 1da04eef696345ce9f35d42af92e5d6de992cd85