@@ -19,6 +19,7 @@ import { parseLoc, normalize, denormalize } from '@/utils/HelperFuncs';
1919import { BsFillQuestionCircleFill } from "react-icons/bs" ;
2020import { ChevronDown } from 'lucide-react' ;
2121import { Select , SelectTrigger , SelectContent , SelectItem , SelectValue } from '@/components/ui'
22+ import { RiCloseLargeLine } from "react-icons/ri" ;
2223
2324function DeNorm ( val : number , min : number , max : number ) {
2425 const range = max - min ;
@@ -307,7 +308,7 @@ const PointOptions = () =>{
307308 /> </ >
308309 </ Hider >
309310 < div className = 'relative' >
310- { timeScale != 1 && < RxReset className = 'text-lg cursor-pointer absolute top-0 left-0 hover:scale-90 transition-transform duration-100 ease-out' onClick = { e => setTimeScale ( 1 ) } /> }
311+ { timeScale != 1 && < RxReset className = 'text-lg cursor-pointer absolute top-0 left-0 hover:scale-90 transition-transform duration-100 ease-out' onClick = { ( ) => setTimeScale ( 1 ) } /> }
311312 < b > Resize Time Dimension</ b >
312313 </ div >
313314
@@ -499,7 +500,7 @@ const SpatialExtent = () =>{
499500 originalExtent . toArray ( ) . slice ( 0 , 2 ) . every ( ( val , idx ) => val == lonExtent [ idx ] ) &&
500501 originalExtent . toArray ( ) . slice ( 2 ) . every ( ( val , idx ) => val == latExtent [ idx ] )
501502 }
502- onClick = { e => {
503+ onClick = { ( ) => {
503504 setLonExtent ( [ originalExtent . x , originalExtent . y ] )
504505 setLatExtent ( [ originalExtent . z , originalExtent . w ] )
505506 } }
@@ -589,7 +590,7 @@ const GlobalOptions = () =>{
589590 </ SelectTrigger >
590591 < SelectContent >
591592 { masks . map ( ( val , idx ) => (
592- < SelectItem value = { val } >
593+ < SelectItem value = { val } key = { idx } >
593594 { val }
594595 </ SelectItem >
595596 ) ) }
@@ -639,6 +640,7 @@ const GlobalOptions = () =>{
639640
640641const AdjustPlot = ( ) => {
641642 const [ popoverSide , setPopoverSide ] = useState < "left" | "top" > ( "left" ) ;
643+ const [ open , setOpen ] = useState ( false ) ;
642644
643645 const { plotOn} = useGlobalStore (
644646 useShallow ( state => ( {
@@ -662,7 +664,7 @@ const AdjustPlot = () => {
662664 const enableCond = ( plotOn )
663665 return (
664666 < >
665- < Popover >
667+ < Popover open = { open } onOpenChange = { setOpen } >
666668 < PopoverTrigger asChild >
667669 < div style = { enableCond ? { } : { pointerEvents : 'none' } } >
668670 < Tooltip delayDuration = { 500 } >
@@ -691,19 +693,35 @@ const AdjustPlot = () => {
691693 </ PopoverTrigger >
692694 < PopoverContent
693695 side = { popoverSide }
694- className = { `overflow-y-auto w-[240px] mt-2 mr-1 ${
695- popoverSide === 'top'
696- ? 'max-h-[80vh] mb-1'
697- : 'max-h-[70vh]'
696+ onInteractOutside = { ( e ) => e . preventDefault ( ) }
697+ className = { `relative w-[240px] mt-2 mr-1 ${
698+ popoverSide === 'top' ? 'mb-1' : ''
698699 } `}
699700 >
700-
701- { plotType === 'volume' && < VolumeOptions /> }
702- { plotType === 'point-cloud' && < PointOptions /> }
703- { plotType === 'sphere' && < SphereOptions /> }
704- { ( plotType === 'volume' || plotType === 'point-cloud' ) && < DimSlicer /> }
705- { plotType === 'flat' && < FlatOptions /> }
706- < GlobalOptions />
701+ < Tooltip delayDuration = { 500 } >
702+ < TooltipTrigger asChild >
703+ < Button
704+ variant = "ghost"
705+ size = "icon"
706+ className = "absolute top-0 right-0 z-10 cursor-pointer backdrop-blur-[10px] saturate-[180%] bg-[var(--glass-bg)]"
707+ onClick = { ( ) => setOpen ( false ) }
708+ aria-label = "Close settings"
709+ >
710+ < RiCloseLargeLine className = "size-4" />
711+ </ Button >
712+ </ TooltipTrigger >
713+ < TooltipContent >
714+ Close settings
715+ </ TooltipContent >
716+ </ Tooltip >
717+ < div className = { `overflow-y-auto -mx-4 px-4 ${ popoverSide === 'top' ? 'max-h-[80vh]' : 'max-h-[70vh]' } ` } >
718+ { plotType === 'volume' && < VolumeOptions /> }
719+ { plotType === 'point-cloud' && < PointOptions /> }
720+ { plotType === 'sphere' && < SphereOptions /> }
721+ { ( plotType === 'volume' || plotType === 'point-cloud' ) && < DimSlicer /> }
722+ { plotType === 'flat' && < FlatOptions /> }
723+ < GlobalOptions />
724+ </ div >
707725 </ PopoverContent >
708726 </ Popover >
709727 </ >
0 commit comments