File tree Expand file tree Collapse file tree
packages/ui/src/components/editor Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11.menu {
22 position : absolute ;
3- top : calc (100% + var (--padding-4px ));
3+ top : 100% ;
4+ padding-top : 4px ;
45 right : 0 ;
5- background-color : var (--vscode-quickInput-background );
6- border-radius : var (--border-radius-8px );
7- border : 1px solid var (--vscode-widget-border );
8- box-shadow : 0 0 8px 2px var (--vscode-widget-shadow );
96 z-index : 2 ;
10- padding : var (--padding-4px );
117 width : max-content ;
128 text-align : left ;
139 min-width : 100% ;
10+
11+ & __inner {
12+ background-color : var (--vscode-quickInput-background );
13+ border-radius : var (--border-radius-8px );
14+ border : 1px solid var (--vscode-widget-border );
15+ box-shadow : 0 0 8px 2px var (--vscode-widget-shadow );
16+ padding : var (--padding-4px );
17+ }
1418}
1519
1620.item {
Original file line number Diff line number Diff line change @@ -20,22 +20,24 @@ export const DropdownMenu: React.FC<DropdownMenu.Props> = (props) => {
2020
2121 return (
2222 < div className = { styles . menu } >
23- { props . items . map ( ( item , index ) => (
24- < div
25- key = { index }
26- className = { styles . item }
27- onClick = { item . on_click }
28- data-selected = { item . is_selected && is_preselection_respected }
29- onMouseEnter = { ( ) => {
30- set_is_preselection_respected ( false )
31- } }
32- >
33- < span > { item . label } </ span >
34- { item . shortcut && (
35- < span className = { styles . shortcut } > { item . shortcut } </ span >
36- ) }
37- </ div >
38- ) ) }
23+ < div className = { styles . menu__inner } >
24+ { props . items . map ( ( item , index ) => (
25+ < div
26+ key = { index }
27+ className = { styles . item }
28+ onClick = { item . on_click }
29+ data-selected = { item . is_selected && is_preselection_respected }
30+ onMouseEnter = { ( ) => {
31+ set_is_preselection_respected ( false )
32+ } }
33+ >
34+ < span > { item . label } </ span >
35+ { item . shortcut && (
36+ < span className = { styles . shortcut } > { item . shortcut } </ span >
37+ ) }
38+ </ div >
39+ ) ) }
40+ </ div >
3941 </ div >
4042 )
4143}
Original file line number Diff line number Diff line change @@ -64,6 +64,18 @@ export const Dropdown = <T extends string>(props: Dropdown.Props<T>) => {
6464 props . on_change ( props . options [ next_index ] . value )
6565 }
6666
67+ const handle_mouse_enter = ( ) => {
68+ if ( ! is_open ) {
69+ set_just_opened ( true )
70+ }
71+ set_is_open ( true )
72+ }
73+
74+ const handle_mouse_leave = ( ) => {
75+ set_is_open ( false )
76+ set_just_opened ( false )
77+ }
78+
6779 useEffect ( ( ) => {
6880 const handle_click_outside = ( event : MouseEvent ) => {
6981 if (
@@ -86,6 +98,8 @@ export const Dropdown = <T extends string>(props: Dropdown.Props<T>) => {
8698 className = { cn ( styles . container , { [ styles [ 'button--open' ] ] : is_open } ) }
8799 ref = { container_ref }
88100 onWheel = { handle_wheel }
101+ onMouseEnter = { handle_mouse_enter }
102+ onMouseLeave = { handle_mouse_leave }
89103 >
90104 < button
91105 className = { cn ( styles . button , { [ styles [ 'button--open' ] ] : is_open } ) }
You can’t perform that action at this time.
0 commit comments