Implement custom save shortcut in SaveControl component (#8407)
Co-authored-by: Nicholas Tindle <nicktindle@outlook.com>pull/8424/head
parent
e5ea62dc25
commit
e908068f22
|
@ -1,4 +1,4 @@
|
||||||
import React from "react";
|
import React, { useCallback, useEffect } from "react";
|
||||||
import {
|
import {
|
||||||
Popover,
|
Popover,
|
||||||
PopoverContent,
|
PopoverContent,
|
||||||
|
@ -15,6 +15,7 @@ import {
|
||||||
TooltipContent,
|
TooltipContent,
|
||||||
TooltipTrigger,
|
TooltipTrigger,
|
||||||
} from "@/components/ui/tooltip";
|
} from "@/components/ui/tooltip";
|
||||||
|
import { useToast } from "@/components/ui/use-toast";
|
||||||
|
|
||||||
interface SaveControlProps {
|
interface SaveControlProps {
|
||||||
agentMeta: GraphMeta | null;
|
agentMeta: GraphMeta | null;
|
||||||
|
@ -52,14 +53,35 @@ export const SaveControl = ({
|
||||||
|
|
||||||
// Determines if we're saving a template or an agent
|
// Determines if we're saving a template or an agent
|
||||||
let isTemplate = agentMeta?.is_template ? true : undefined;
|
let isTemplate = agentMeta?.is_template ? true : undefined;
|
||||||
const handleSave = () => {
|
const handleSave = useCallback(() => {
|
||||||
onSave(isTemplate);
|
onSave(isTemplate);
|
||||||
};
|
}, [onSave, isTemplate]);
|
||||||
|
|
||||||
const getType = () => {
|
const getType = () => {
|
||||||
return agentMeta?.is_template ? "template" : "agent";
|
return agentMeta?.is_template ? "template" : "agent";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const { toast } = useToast();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const handleKeyDown = (event: KeyboardEvent) => {
|
||||||
|
if ((event.ctrlKey || event.metaKey) && event.key === "s") {
|
||||||
|
event.preventDefault(); // Stop the browser default action
|
||||||
|
handleSave(); // Call your save function
|
||||||
|
toast({
|
||||||
|
duration: 2000,
|
||||||
|
title: "All changes saved successfully!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
window.addEventListener("keydown", handleKeyDown);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
window.removeEventListener("keydown", handleKeyDown);
|
||||||
|
};
|
||||||
|
}, [handleSave]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Popover open={pinSavePopover ? true : undefined}>
|
<Popover open={pinSavePopover ? true : undefined}>
|
||||||
<Tooltip delayDuration={500}>
|
<Tooltip delayDuration={500}>
|
||||||
|
|
Loading…
Reference in New Issue