Feat: Add restore button to shortcuts settings

This commit is contained in:
igorrCarvalho 2024-05-02 20:53:39 -03:00
commit 61b894c2e8
3 changed files with 49 additions and 33 deletions

View file

@ -12,7 +12,8 @@ export default function EditShortcutButton({
defaultShortcuts, defaultShortcuts,
defaultCombination, defaultCombination,
open, open,
setOpen setOpen,
disable,
}: { }: {
children: JSX.Element; children: JSX.Element;
shortcut: string[]; shortcut: string[];
@ -20,6 +21,7 @@ export default function EditShortcutButton({
defaultCombination: string; defaultCombination: string;
open: boolean; open: boolean;
setOpen: (bool: boolean) => void; setOpen: (bool: boolean) => void;
disable?: boolean;
}): JSX.Element { }): JSX.Element {
const isMac = navigator.userAgent.toUpperCase().includes("MAC"); const isMac = navigator.userAgent.toUpperCase().includes("MAC");
const [key, setKey] = useState<string>(isMac ? "Meta" : 'Ctrl'); const [key, setKey] = useState<string>(isMac ? "Meta" : 'Ctrl');
@ -88,10 +90,10 @@ export default function EditShortcutButton({
}, [key, setKey]) }, [key, setKey])
return ( return (
<BaseModal open={open} setOpen={setOpen} size="smaller"> <BaseModal open={open} setOpen={setOpen} size="smaller" disable={disable}>
<BaseModal.Header <BaseModal.Header
description={ description={
"Set your new key combination" "Recording your keyboard"
} }
> >
<span className="pr-2"> Key Combination </span> <span className="pr-2"> Key Combination </span>

View file

@ -12,6 +12,7 @@ import {
import { Button } from "../../../../components/ui/button"; import { Button } from "../../../../components/ui/button";
import EditShortcutButton from "./EditShortcutButton"; import EditShortcutButton from "./EditShortcutButton";
import { useShortcutsStore } from "../../../../stores/shortcuts"; import { useShortcutsStore } from "../../../../stores/shortcuts";
import { defaultShortcuts, unavailableShortcutss } from "../../../../constants/constants";
export default function ShortcutsPage() { export default function ShortcutsPage() {
const [selectedRows, setSelectedRows] = useState<string[]>([]); const [selectedRows, setSelectedRows] = useState<string[]>([]);
@ -54,6 +55,12 @@ export default function ShortcutsPage() {
} }
}, []) }, [])
function handleRestore() {
setShortcuts(defaultShortcuts, unavailableShortcutss);
localStorage.removeItem("langflow-shortcuts");
localStorage.removeItem("langflow-UShortcuts");
}
return ( return (
<div className="flex h-full w-full flex-col gap-6 "> <div className="flex h-full w-full flex-col gap-6 ">
<div className="flex w-full items-center justify-between gap-4 space-y-0.5"> <div className="flex w-full items-center justify-between gap-4 space-y-0.5">
@ -70,38 +77,43 @@ export default function ShortcutsPage() {
frequently used actions. frequently used actions.
</p> </p>
</div> </div>
<div>
<div className="w-full flex justify-end align-end mb-4">
<div className="flex items-center justify center">
<EditShortcutButton
disable={selectedRows.length === 0}
defaultCombination={combinationToEdit[0]?.shortcut}
shortcut={selectedRows}
defaultShortcuts={shortcuts}
open={open}
setOpen={setOpen}
>
<Button variant="primary">
<ForwardedIconComponent name="Plus" className="mr-2 w-4" />
Customize
</Button>
</EditShortcutButton>
<Button variant="primary" className="ml-3" onClick={handleRestore}>
<ForwardedIconComponent name="RotateCcw" className="mr-2 w-4" />
Restore
</Button>
</div>
</div>
</div>
</div> </div>
<div className="grid gap-6 pb-8"> <div className="grid gap-6 pb-8">
<Card x-chunk="dashboard-04-chunk-2" className="pt-4"> <div>
<CardContent> <TableComponent
<div className="w-full flex justify-end align-end mb-4"> onSelectionChanged={(event: SelectionChangedEvent) => {
<div className=""> setSelectedRows(event.api.getSelectedRows().map((row) => row.name));
<EditShortcutButton }}
defaultCombination={combinationToEdit[0]?.shortcut} suppressRowClickSelection={true}
shortcut={selectedRows} domLayout="autoHeight"
defaultShortcuts={shortcuts} pagination={false}
open={open} columnDefs={colDefs}
setOpen={setOpen} rowData={nodesRowData}
> />
<Button data-testid="api-key-button-store" variant="primary"> </div>
<ForwardedIconComponent name="Plus" className="mr-2 w-4" />
New key combination
</Button>
</EditShortcutButton>
</div>
</div>
<TableComponent
onSelectionChanged={(event: SelectionChangedEvent) => {
setSelectedRows(event.api.getSelectedRows().map((row) => row.name));
}}
suppressRowClickSelection={true}
domLayout="autoHeight"
pagination={false}
columnDefs={colDefs}
rowData={nodesRowData}
/>
</CardContent>
</Card>
</div> </div>
</div> </div>
); );

View file

@ -140,6 +140,7 @@ import {
X, X,
XCircle, XCircle,
Zap, Zap,
RotateCcw,
} from "lucide-react"; } from "lucide-react";
import { FaApple, FaGithub } from "react-icons/fa"; import { FaApple, FaGithub } from "react-icons/fa";
import { AWSIcon } from "../icons/AWS"; import { AWSIcon } from "../icons/AWS";
@ -514,4 +515,5 @@ export const nodeIconsLucide: iconsType = {
Command, Command,
ArrowBigUp, ArrowBigUp,
Dot, Dot,
RotateCcw
}; };