File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -27,6 +27,20 @@ const DegreeAuditCard: React.FC<DegreeAuditCardProps> = ({
2727 const [ menuOpen , setMenuOpen ] = React . useState ( false ) ;
2828 const [ isEditing , setIsEditing ] = React . useState ( false ) ;
2929 const [ draftTitle , setDraftTitle ] = React . useState ( title ?? "" ) ;
30+ const cardRef = React . useRef < HTMLDivElement > ( null ) ;
31+
32+ React . useEffect ( ( ) => {
33+ if ( ! menuOpen ) return ;
34+
35+ const handleClickOutside = ( event : MouseEvent ) => {
36+ if ( cardRef . current && ! cardRef . current . contains ( event . target as Node ) ) {
37+ setMenuOpen ( false ) ;
38+ }
39+ } ;
40+
41+ document . addEventListener ( "mousedown" , handleClickOutside ) ;
42+ return ( ) => document . removeEventListener ( "mousedown" , handleClickOutside ) ;
43+ } , [ menuOpen ] ) ;
3044
3145 React . useEffect ( ( ) => {
3246 if ( ! isSelected ) {
@@ -54,6 +68,7 @@ const DegreeAuditCard: React.FC<DegreeAuditCardProps> = ({
5468
5569 return (
5670 < div
71+ ref = { cardRef }
5772 className = { `relative rounded-[8px] px-4 py-[12px] w-full transition-all duration-200 cursor-pointer ${
5873 isSelected
5974 ? "bg-dap-orange border border-dap-orange"
You can’t perform that action at this time.
0 commit comments