Skip to content

Commit

Permalink
Save menu work (#91)
Browse files Browse the repository at this point in the history
* remove mouse down propagation

* make the close part of the button
  • Loading branch information
yhattav authored Jan 18, 2025
1 parent 1569c26 commit e1e6aec
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 31 deletions.
7 changes: 1 addition & 6 deletions src/components/GravitySimulator/GravitySimulator.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,6 @@ export const GravitySimulator: React.FC<GravitySimulatorProps> = ({
isSettingsPanelOpen,
setIsSettingsPanelOpen,
isSaveModalOpen,
setIsSaveModalOpen,
shareableLink,
handleExportScenario,
handleSaveScenario,
Expand Down Expand Up @@ -521,10 +520,6 @@ export const GravitySimulator: React.FC<GravitySimulatorProps> = ({
setIsJsonPanelOpen(false);
}, []);

const handleSaveModalClose = useCallback(() => {
setIsSaveModalOpen(false);
}, []);

const content = (
<>
<div
Expand Down Expand Up @@ -577,6 +572,7 @@ export const GravitySimulator: React.FC<GravitySimulatorProps> = ({
isAudioLoaded={isAudioLoaded}
onAudioToggle={handleAudioToggle}
disableSound={disableSound}
isSaveModalOpen={isSaveModalOpen}
/>
)}

Expand Down Expand Up @@ -633,7 +629,6 @@ export const GravitySimulator: React.FC<GravitySimulatorProps> = ({

<SaveScenarioModal
isOpen={isSaveModalOpen}
onClose={handleSaveModalClose}
onSave={handleSaveScenario}
shareableLink={shareableLink}
/>
Expand Down
19 changes: 1 addition & 18 deletions src/components/SaveScenarioModal/SaveScenarioModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@ import { CopyOutlined, CheckOutlined } from "@ant-design/icons";

interface SaveScenarioModalProps {
isOpen: boolean;
onClose: () => void;
onSave: (name: string) => void;
shareableLink: string;
}

export const SaveScenarioModal: React.FC<SaveScenarioModalProps> = ({
isOpen,
onClose,
onSave,
shareableLink,
}) => {
Expand Down Expand Up @@ -41,6 +39,7 @@ export const SaveScenarioModal: React.FC<SaveScenarioModalProps> = ({
exit={{ opacity: 0, y: -20 }}
transition={{ type: "spring", damping: 20, stiffness: 300 }}
onClick={(e) => e.stopPropagation()}
onMouseDown={(e) => e.stopPropagation()}
className="floating-panel"
style={{
position: "absolute",
Expand Down Expand Up @@ -122,22 +121,6 @@ export const SaveScenarioModal: React.FC<SaveScenarioModalProps> = ({
Save
</button>
</form>

<div
style={{
display: "flex",
justifyContent: "flex-end",
marginTop: "15px",
}}
>
<button
onClick={onClose}
className="action-button"
style={{ background: "rgba(255, 255, 255, 0.1)" }}
>
Close
</button>
</div>
</motion.div>
)}
</AnimatePresence>
Expand Down
12 changes: 10 additions & 2 deletions src/components/SimulatorControls/SimulatorControls.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { motion } from "framer-motion";
import { MdFullscreen, MdFullscreenExit, MdInvertColors } from "react-icons/md";
import { BiReset } from "react-icons/bi";
import { BsPlayFill, BsPauseFill, BsFillCameraFill } from "react-icons/bs";
import { AiOutlineExport } from "react-icons/ai";
import { AiOutlineExport, AiOutlineClose } from "react-icons/ai";
import { VscLibrary } from "react-icons/vsc";
import { SettingOutlined } from "@ant-design/icons";
import { MusicPlayer } from "../MusicPlayer/MusicPlayer";
Expand All @@ -25,6 +25,7 @@ interface SimulatorControlsProps {
isAudioLoaded?: boolean;
onAudioToggle?: (e: React.MouseEvent) => void;
disableSound?: boolean;
isSaveModalOpen?: boolean;
}

interface ControlButton {
Expand Down Expand Up @@ -71,6 +72,7 @@ export const SimulatorControls: React.FC<SimulatorControlsProps> = ({
isAudioLoaded,
onAudioToggle,
disableSound,
isSaveModalOpen,
}) => {
const handleClick = useCallback(
<T extends Element>(handler: (e: React.MouseEvent<T>) => void) =>
Expand Down Expand Up @@ -124,8 +126,14 @@ export const SimulatorControls: React.FC<SimulatorControlsProps> = ({
},
{
icon: <AiOutlineExport size={20} />,
title: "Export Scenario",
title: isSaveModalOpen ? "Close Export" : "Export Scenario",
onClick: handleClick(onExport),
dynamicIcon: true,
alternateIcon: isSaveModalOpen ? (
<AiOutlineClose size={20} />
) : (
<AiOutlineExport size={20} />
),
},
{
icon: <MdInvertColors size={20} />,
Expand Down
14 changes: 9 additions & 5 deletions src/hooks/useScenarioManagement.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,16 @@ export const useScenarioManagement = ({
const handleExportScenario = useCallback(
(e: React.MouseEvent) => {
e.stopPropagation();
const scenario = getCurrentScenario();
setShareableLink(createShareableLink(scenario));
setIsPaused(true);
setIsSaveModalOpen(true);
if (isSaveModalOpen) {
setIsSaveModalOpen(false);
} else {
const scenario = getCurrentScenario();
setShareableLink(createShareableLink(scenario));
setIsPaused(true);
setIsSaveModalOpen(true);
}
},
[getCurrentScenario, setIsPaused]
[getCurrentScenario, setIsPaused, isSaveModalOpen]
);

const handleSaveScenario = useCallback(
Expand Down

0 comments on commit e1e6aec

Please sign in to comment.