Skip to content

Commit dcdf848

Browse files
authored
manually close settings (#611)
* manually close settings * tweaks
1 parent 875514e commit dcdf848

1 file changed

Lines changed: 33 additions & 15 deletions

File tree

src/components/ui/MainPanel/AdjustPlot.tsx

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { parseLoc, normalize, denormalize } from '@/utils/HelperFuncs';
1919
import { BsFillQuestionCircleFill } from "react-icons/bs";
2020
import { ChevronDown } from 'lucide-react';
2121
import {Select, SelectTrigger, SelectContent, SelectItem, SelectValue} from '@/components/ui'
22+
import { RiCloseLargeLine } from "react-icons/ri";
2223

2324
function 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

640641
const 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

Comments
 (0)